diff --git a/src/chains/solana/solana.ts b/src/chains/solana/solana.ts index 36e12de858..2d3f7efdb1 100644 --- a/src/chains/solana/solana.ts +++ b/src/chains/solana/solana.ts @@ -29,12 +29,15 @@ export class Solana { // public gasCost: number; public connection: Connection; public controller: typeof SolanaController; + private _chainId: number = 900; + private _rpcUrl: string; constructor(network: string, rpc: string, assetListSource: string) { this._network = network; this.connection = new Connection(rpc); this.controller = SolanaController; this._assetListSource = assetListSource; + this._rpcUrl = rpc; } public get network(): string { return this._network; @@ -43,6 +46,13 @@ export class Solana { return this._ready; } + public get chainId(): number { + return this._chainId; + } + + public get rpcUrl(): string { + return this._rpcUrl; + } private async loadAssets(): Promise { const assetData = await this.getAssetData(); for (const result of assetData) { @@ -112,13 +122,17 @@ export class Solana { } public async getAssetBalance(account: Keypair, tokenAddress: string) { - const associatedAccount = await this.getAssociatedTokenAccount( - tokenAddress, - account.publicKey.toString(), - ); - const assetBalance = - await this.connection.getTokenAccountBalance(associatedAccount); - return assetBalance?.value?.uiAmountString ?? '0'; + try { + const associatedAccount = await this.getAssociatedTokenAccount( + tokenAddress, + account.publicKey.toString(), + ); + const assetBalance = + await this.connection.getTokenAccountBalance(associatedAccount); + return assetBalance?.value?.uiAmountString ?? '0'; + } catch (e) { + return '0'; + } } public async getKeypairFromPrivateKey(mnemonic: string): Promise { @@ -204,4 +218,8 @@ export class Solana { return this.getKeypairFromPrivateKey(mnemonic); } + + async getCurrentBlockNumber() { + return await this.connection.getSlot(); + } } diff --git a/src/connectors/jupiterswap/jupiter.controller.ts b/src/connectors/jupiterswap/jupiter.controller.ts index 3bcbecced7..97824de066 100644 --- a/src/connectors/jupiterswap/jupiter.controller.ts +++ b/src/connectors/jupiterswap/jupiter.controller.ts @@ -1,6 +1,10 @@ import { Solana } from '../../chains/solana/solana'; import { Jupiter } from './jupiter'; -import { PriceRequest, TradeRequest } from '../../amm/amm.requests'; +import { + PriceRequest, + TradeRequest, + TradeResponse, +} from '../../amm/amm.requests'; import axios from 'axios'; import { JupiterPriceResponse } from './jupiter.request'; import { logger } from '../../services/logger'; @@ -13,7 +17,6 @@ import { SWAP_PRICE_LOWER_THAN_LIMIT_PRICE_ERROR_MESSAGE, } from '../../services/error-handler'; import { latency } from '../../services/base'; - export async function getPairData(base: string, quote: string) { const baseURL = `https://api.jup.ag/price/v2?ids=${base},${quote}&showExtraInfo=true`; const response = await axios.get(baseURL); @@ -38,7 +41,7 @@ export async function jupiterTrade( solana: Solana, jupiter: Jupiter, req: TradeRequest, -): Promise { +): Promise { const startTimestamp: number = Date.now(); const { address } = req; const keypair = await solana.getAccountFromAddress(address); @@ -86,10 +89,10 @@ export async function jupiterTrade( rawAmount: req.amount, expectedIn: String(trade.expectedAmount), price: String(estimatedPrice), - // gasPrice: solana.gasPrice, + gasPrice: 10, gasPriceToken: solana.nativeTokenSymbol, gasLimit: tx.computeUnitLimit, - // gasCost: String(solana.gasCost), + gasCost: String(10), txHash: tx.txid, }; } diff --git a/src/connectors/jupiterswap/jupiter.ts b/src/connectors/jupiterswap/jupiter.ts index 46c3c5570b..a149771be2 100644 --- a/src/connectors/jupiterswap/jupiter.ts +++ b/src/connectors/jupiterswap/jupiter.ts @@ -70,9 +70,11 @@ export class Jupiter { // } // async estimateTrade(req: PriceRequest) {} async price(req: PriceRequest) { + const baseSymbol = req.base.replace('_', ''); + const quoteSymbol = req.quote.replace('_', ''); const startTimestamp: number = Date.now(); - const baseToken = this.chain.getAssetForSymbol(req.base); - const quoteToken = this.chain.getAssetForSymbol(req.quote); + const baseToken = this.chain.getAssetForSymbol(baseSymbol); + const quoteToken = this.chain.getAssetForSymbol(quoteSymbol); if (!baseToken || !quoteToken) { throw new Error('INVALID TOKEN'); } diff --git a/tsconfig.json b/tsconfig.json index cd1ce35597..770f915674 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,7 @@ "target": "es6", "module": "commonjs", "allowJs": true, - "lib": ["es6", "es2020", "esnext.asynciterable", "dom"], + "lib": ["es6", "es2020", "esnext.asynciterable", "dom", "ES2021.String"], "sourceMap": true, "outDir": "./dist", "moduleResolution": "node",