@allbridge/bridge-core-sdk 3.32.1 → 3.33.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.js +2 -2
- package/dist/browser/index.js.map +4 -4
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +4 -4
- package/dist/src/client/core-api/api-client-caching.d.ts +2 -0
- package/dist/src/client/core-api/api-client-caching.js +2 -0
- package/dist/src/client/core-api/api-client-caching.js.map +1 -1
- package/dist/src/client/core-api/api-client.d.ts +5 -0
- package/dist/src/client/core-api/api-client.js +2 -0
- package/dist/src/client/core-api/api-client.js.map +1 -1
- package/dist/src/client/core-api/core-api-mapper.d.ts +15 -0
- package/dist/src/client/core-api/core-api-mapper.js +15 -0
- package/dist/src/client/core-api/core-api-mapper.js.map +1 -1
- package/dist/src/client/core-api/core-api.model.d.ts +30 -0
- package/dist/src/client/core-api/core-api.model.js +4 -0
- package/dist/src/client/core-api/core-api.model.js.map +1 -1
- package/dist/src/client/core-api/core-client-base.d.ts +9 -0
- package/dist/src/client/core-api/core-client-base.js +3 -0
- package/dist/src/client/core-api/core-client-base.js.map +1 -1
- package/dist/src/client/core-api/core-client-filtered.d.ts +16 -0
- package/dist/src/client/core-api/core-client-filtered.js +4 -0
- package/dist/src/client/core-api/core-client-filtered.js.map +1 -1
- package/dist/src/client/core-api/core-client-pool-info-caching.d.ts +13 -0
- package/dist/src/client/core-api/core-client-pool-info-caching.js +7 -0
- package/dist/src/client/core-api/core-client-pool-info-caching.js.map +1 -1
- package/dist/src/exceptions/exceptions.d.ts +4 -0
- package/dist/src/exceptions/exceptions.js +4 -0
- package/dist/src/exceptions/exceptions.js.map +1 -1
- package/dist/src/index.d.ts +46 -28
- package/dist/src/index.js +17 -86
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/index.d.ts +2 -1
- package/dist/src/models/index.js.map +1 -1
- package/dist/src/services/bridge/alg/index.d.ts +1 -0
- package/dist/src/services/bridge/alg/index.js +1 -0
- package/dist/src/services/bridge/alg/index.js.map +1 -1
- package/dist/src/services/bridge/evm/index.d.ts +2 -0
- package/dist/src/services/bridge/evm/index.js +2 -0
- package/dist/src/services/bridge/evm/index.js.map +1 -1
- package/dist/src/services/bridge/index.d.ts +4 -2
- package/dist/src/services/bridge/index.js +7 -45
- package/dist/src/services/bridge/index.js.map +1 -1
- package/dist/src/services/bridge/models/bridge.d.ts +1 -0
- package/dist/src/services/bridge/models/bridge.js.map +1 -1
- package/dist/src/services/bridge/models/bridge.model.d.ts +14 -6
- package/dist/src/services/bridge/models/bridge.model.js.map +1 -1
- package/dist/src/services/bridge/raw-bridge-transaction-builder.d.ts +6 -0
- package/dist/src/services/bridge/raw-bridge-transaction-builder.js +3 -2
- package/dist/src/services/bridge/raw-bridge-transaction-builder.js.map +1 -1
- package/dist/src/services/bridge/sol/bridge-tx-service.d.ts +2 -0
- package/dist/src/services/bridge/sol/bridge-tx-service.js +1 -0
- package/dist/src/services/bridge/sol/bridge-tx-service.js.map +1 -1
- package/dist/src/services/bridge/sol/index.d.ts +2 -0
- package/dist/src/services/bridge/sol/index.js +1 -0
- package/dist/src/services/bridge/sol/index.js.map +1 -1
- package/dist/src/services/bridge/spender.d.ts +4 -0
- package/dist/src/services/bridge/spender.js +45 -0
- package/dist/src/services/bridge/spender.js.map +1 -0
- package/dist/src/services/bridge/srb/index.d.ts +2 -0
- package/dist/src/services/bridge/srb/index.js +2 -0
- package/dist/src/services/bridge/srb/index.js.map +1 -1
- package/dist/src/services/bridge/stx/index.d.ts +1 -0
- package/dist/src/services/bridge/stx/index.js +1 -0
- package/dist/src/services/bridge/stx/index.js.map +1 -1
- package/dist/src/services/bridge/sui/index.d.ts +1 -0
- package/dist/src/services/bridge/sui/index.js +1 -0
- package/dist/src/services/bridge/sui/index.js.map +1 -1
- package/dist/src/services/bridge/trx/index.d.ts +2 -0
- package/dist/src/services/bridge/trx/index.js +2 -0
- package/dist/src/services/bridge/trx/index.js.map +1 -1
- package/dist/src/services/bridge/utils.d.ts +4 -0
- package/dist/src/services/bridge/utils.js +1 -0
- package/dist/src/services/bridge/utils.js.map +1 -1
- package/dist/src/services/index.d.ts +25 -2
- package/dist/src/services/index.js +17 -2
- package/dist/src/services/index.js.map +1 -1
- package/dist/src/services/liquidity-pool/alg/index.d.ts +3 -0
- package/dist/src/services/liquidity-pool/alg/index.js +3 -0
- package/dist/src/services/liquidity-pool/alg/index.js.map +1 -1
- package/dist/src/services/liquidity-pool/evm/index.d.ts +3 -0
- package/dist/src/services/liquidity-pool/evm/index.js +3 -0
- package/dist/src/services/liquidity-pool/evm/index.js.map +1 -1
- package/dist/src/services/liquidity-pool/index.d.ts +19 -0
- package/dist/src/services/liquidity-pool/index.js +7 -0
- package/dist/src/services/liquidity-pool/index.js.map +1 -1
- package/dist/src/services/liquidity-pool/models/pool.d.ts +8 -0
- package/dist/src/services/liquidity-pool/models/pool.js +3 -0
- package/dist/src/services/liquidity-pool/models/pool.js.map +1 -1
- package/dist/src/services/liquidity-pool/models/pool.model.d.ts +27 -0
- package/dist/src/services/liquidity-pool/models/pool.model.js +3 -0
- package/dist/src/services/liquidity-pool/models/pool.model.js.map +1 -1
- package/dist/src/services/liquidity-pool/raw-pool-transaction-builder.d.ts +11 -0
- package/dist/src/services/liquidity-pool/raw-pool-transaction-builder.js +3 -0
- package/dist/src/services/liquidity-pool/raw-pool-transaction-builder.js.map +1 -1
- package/dist/src/services/liquidity-pool/sol/index.d.ts +3 -0
- package/dist/src/services/liquidity-pool/sol/index.js +3 -0
- package/dist/src/services/liquidity-pool/sol/index.js.map +1 -1
- package/dist/src/services/liquidity-pool/srb/index.d.ts +3 -0
- package/dist/src/services/liquidity-pool/srb/index.js +3 -0
- package/dist/src/services/liquidity-pool/srb/index.js.map +1 -1
- package/dist/src/services/liquidity-pool/stx/index.d.ts +3 -0
- package/dist/src/services/liquidity-pool/stx/index.js +3 -0
- package/dist/src/services/liquidity-pool/stx/index.js.map +1 -1
- package/dist/src/services/liquidity-pool/sui/index.d.ts +3 -0
- package/dist/src/services/liquidity-pool/sui/index.js +3 -0
- package/dist/src/services/liquidity-pool/sui/index.js.map +1 -1
- package/dist/src/services/liquidity-pool/trx/index.d.ts +3 -0
- package/dist/src/services/liquidity-pool/trx/index.js +3 -0
- package/dist/src/services/liquidity-pool/trx/index.js.map +1 -1
- package/dist/src/services/utils/calculation/index.d.ts +6 -0
- package/dist/src/services/utils/calculation/index.js +6 -0
- package/dist/src/services/utils/calculation/index.js.map +1 -1
- package/dist/src/services/utils/sol/index.d.ts +6 -0
- package/dist/src/services/utils/sol/index.js +6 -0
- package/dist/src/services/utils/sol/index.js.map +1 -1
- package/dist/src/tokens-info/tokens-info.model.d.ts +24 -0
- package/dist/src/tokens-info/tokens-info.model.js.map +1 -1
- package/dist/src/utils/calculation/index.d.ts +26 -0
- package/dist/src/utils/calculation/index.js +26 -0
- package/dist/src/utils/calculation/index.js.map +1 -1
- package/dist/src/utils/calculation/swap-and-bridge-details.d.ts +9 -0
- package/dist/src/utils/calculation/swap-and-bridge-details.js +3 -0
- package/dist/src/utils/calculation/swap-and-bridge-details.js.map +1 -1
- package/dist/src/utils/calculation/swap-and-bridge-fee-calc.d.ts +18 -0
- package/dist/src/utils/calculation/swap-and-bridge-fee-calc.js +6 -0
- package/dist/src/utils/calculation/swap-and-bridge-fee-calc.js.map +1 -1
- package/dist/src/utils/utils.d.ts +3 -0
- package/dist/src/utils/utils.js +3 -0
- package/dist/src/utils/utils.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Big, BigSource } from \"big.js\";\nimport { Chains } from \"../chains\";\nimport { ApiClientImpl } from \"../client/core-api/api-client\";\nimport { ApiClientCaching } from \"../client/core-api/api-client-caching\";\nimport {\n AddressStatus,\n CheckAddressResponse,\n GasBalanceResponse,\n Messenger,\n PendingInfoDTO,\n TransferStatusResponse,\n} from \"../client/core-api/core-api.model\";\nimport { AllbridgeCoreClientImpl } from \"../client/core-api/core-client-base\";\nimport { AllbridgeCoreClientFiltered, AllbridgeCoreClientFilteredImpl } from \"../client/core-api/core-client-filtered\";\nimport { AllbridgeCoreClientPoolInfoCaching } from \"../client/core-api/core-client-pool-info-caching\";\nimport { mainnet } from \"../configs\";\nimport {\n AllbridgeCoreSdkOptions,\n BasicChainProperties,\n NodeRpcUrls,\n OFTDoesNotSupportedError,\n SdkError,\n} from \"../index\";\nimport {\n AmountFormat,\n AmountFormatted,\n AmountsAndGasFeeOptions,\n CCTPDoesNotSupportedError,\n ExtraGasMaxLimitResponse,\n GasFeeOptions,\n GetTokenBalanceParams,\n InsufficientPoolLiquidityError,\n NodeRpcUrlNotInitializedError,\n PendingStatusInfoResponse,\n Provider,\n SendAmountDetails,\n SwapAndBridgeCalculationData,\n} from \"../models\";\nimport { ChainDetailsMap, PoolInfo, PoolKeyObject, TokenWithChainDetails } from \"../tokens-info\";\nimport {\n aprInPercents,\n convertAmountPrecision,\n convertFloatAmountToInt,\n convertIntAmountToFloat,\n fromSystemPrecision,\n getFeePercent,\n getSwapFromVUsdPoolInfo,\n swapFromVUsd,\n swapFromVUsdReverse,\n swapToVUsd,\n swapToVUsdReverse,\n} from \"../utils/calculation\";\nimport { SYSTEM_PRECISION } from \"../utils/calculation/constants\";\nimport { getSendAmountDetails } from \"../utils/calculation/swap-and-bridge-details\";\nimport {\n swapAndBridgeFeeCalculation,\n swapAndBridgeFeeCalculationReverse,\n} from \"../utils/calculation/swap-and-bridge-fee-calc\";\nimport { getPoolInfoByToken, validateAmountDecimals, validateAmountGtZero } from \"../utils/utils\";\nimport { BridgeService, DefaultBridgeService } from \"./bridge\";\nimport { GetNativeTokenBalanceParams } from \"./bridge/models\";\nimport { getExtraGasMaxLimits, getGasFeeOptions } from \"./bridge/utils\";\nimport { DefaultLiquidityPoolService, LiquidityPoolService } from \"./liquidity-pool\";\nimport { DefaultTokenService, TokenService } from \"./token\";\nimport { DefaultYieldService, YieldService } from \"./yield\";\n\nexport class NodeRpcUrlsConfig {\n constructor(private nodeRpcUrls: NodeRpcUrls) {}\n\n getNodeRpcUrl(chainSymbol: string): string {\n const nodeRpcUrl = this.nodeRpcUrls[chainSymbol];\n if (nodeRpcUrl !== undefined) {\n return nodeRpcUrl;\n } else {\n throw new NodeRpcUrlNotInitializedError(chainSymbol);\n }\n }\n}\n\nexport class AllbridgeCoreSdkService {\n readonly api: AllbridgeCoreClientFiltered;\n\n private readonly tokenService: TokenService;\n\n readonly params: AllbridgeCoreSdkOptions;\n\n bridge: BridgeService;\n pool: LiquidityPoolService;\n yield: YieldService;\n\n constructor(\n public readonly nodeRpcUrlsConfig: NodeRpcUrlsConfig,\n params: AllbridgeCoreSdkOptions = mainnet\n ) {\n Chains.addChainsProperties(params.additionalChainsProperties as Record<string, BasicChainProperties>);\n const apiClient = new ApiClientImpl(params);\n const apiClientCaching = new ApiClientCaching(apiClient);\n const coreClient = new AllbridgeCoreClientImpl(apiClientCaching);\n const coreClientPoolInfoCaching = new AllbridgeCoreClientPoolInfoCaching(coreClient);\n this.api = new AllbridgeCoreClientFilteredImpl(coreClientPoolInfoCaching, params);\n this.tokenService = new DefaultTokenService(this.api, nodeRpcUrlsConfig, params);\n this.bridge = new DefaultBridgeService(this.api, nodeRpcUrlsConfig, params, this.tokenService);\n this.pool = new DefaultLiquidityPoolService(this.api, nodeRpcUrlsConfig, params, this.tokenService);\n this.yield = new DefaultYieldService(this.api, nodeRpcUrlsConfig, params, this.tokenService);\n this.params = params;\n }\n\n async chainDetailsMap(type: \"swap\" | \"pool\"): Promise<ChainDetailsMap> {\n return this.api.getChainDetailsMap(type);\n }\n\n async tokens(type: \"swap\" | \"pool\"): Promise<TokenWithChainDetails[]> {\n return this.api.tokens(type);\n }\n\n async tokensByChain(chainSymbol: string, type: \"swap\" | \"pool\"): Promise<TokenWithChainDetails[]> {\n const map = await this.api.getChainDetailsMap(type);\n const chainDetails = map[chainSymbol];\n if (!chainDetails) {\n return [];\n }\n return chainDetails.tokens;\n }\n\n async getTransferStatus(chainSymbol: string, txId: string): Promise<TransferStatusResponse> {\n return this.api.getTransferStatus(chainSymbol, txId);\n }\n\n async getGasBalance(chainSymbol: string, address: string): Promise<GasBalanceResponse> {\n return this.api.getGasBalance(chainSymbol, address);\n }\n\n async checkAddress(): Promise<CheckAddressResponse> {\n return new Promise((resolve) => {\n resolve({\n status: AddressStatus.OK,\n gasBalance: null,\n });\n });\n }\n\n async getPendingStatusInfo(\n amount: string,\n amountFormat: AmountFormat,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<PendingStatusInfoResponse> {\n validateAmountGtZero(amount);\n let amountInTokenPrecision;\n if (amountFormat == AmountFormat.FLOAT) {\n validateAmountDecimals(\"amount\", amount, sourceToken.decimals);\n amountInTokenPrecision = convertFloatAmountToInt(amount, sourceToken.decimals).toFixed();\n } else {\n amountInTokenPrecision = amount;\n }\n\n const vUsdAmountInt = swapToVUsd(\n amountInTokenPrecision,\n sourceToken,\n await getPoolInfoByToken(this.api, sourceToken)\n );\n const destPoolInfo = await getPoolInfoByToken(this.api, destToken);\n const amountResultIntFormatted: AmountFormatted = this.getAmountFromVUsdFormatted(\n vUsdAmountInt,\n destToken,\n destPoolInfo\n );\n\n let pendingInfoDTO: PendingInfoDTO | undefined;\n const pendingInfo = await this.api.getPendingInfo();\n for (const tokenAddress in pendingInfo[destToken.chainSymbol]) {\n const info = pendingInfo[destToken.chainSymbol];\n if (!info) {\n throw new SdkError(\"Cannot find pending info for \" + destToken.chainSymbol);\n }\n pendingInfoDTO = info[tokenAddress];\n }\n if (pendingInfoDTO) {\n const destPoolAfterPending = getSwapFromVUsdPoolInfo(pendingInfoDTO.totalSentAmount, destPoolInfo);\n const amountResultIntAfterPendingFormatted: AmountFormatted = this.getAmountFromVUsdFormatted(\n vUsdAmountInt,\n destToken,\n destPoolAfterPending\n );\n\n let estimatedAmount: { min: AmountFormatted; max: AmountFormatted };\n if (Big(amountResultIntAfterPendingFormatted.int).gt(amountResultIntFormatted.int)) {\n estimatedAmount = { min: amountResultIntFormatted, max: amountResultIntAfterPendingFormatted };\n } else {\n estimatedAmount = { min: amountResultIntAfterPendingFormatted, max: amountResultIntFormatted };\n }\n\n return {\n pendingTxs: pendingInfoDTO.pendingTxs,\n pendingAmount: {\n [AmountFormat.INT]: convertAmountPrecision(\n pendingInfoDTO.totalSentAmount,\n SYSTEM_PRECISION,\n destToken.decimals\n ).toFixed(0),\n [AmountFormat.FLOAT]: convertIntAmountToFloat(pendingInfoDTO.totalSentAmount, SYSTEM_PRECISION).toFixed(),\n },\n estimatedAmount,\n };\n }\n return {\n pendingTxs: 0,\n pendingAmount: {\n [AmountFormat.INT]: \"0\",\n [AmountFormat.FLOAT]: \"0\",\n },\n estimatedAmount: {\n min: amountResultIntFormatted,\n max: amountResultIntFormatted,\n },\n };\n }\n\n async getTokenBalance(params: GetTokenBalanceParams, provider?: Provider): Promise<string> {\n return this.tokenService.getTokenBalance(params, provider);\n }\n\n async getNativeTokenBalance(params: GetNativeTokenBalanceParams, provider?: Provider): Promise<AmountFormatted> {\n return this.tokenService.getNativeTokenBalance(params, provider);\n }\n\n async calculateFeePercentOnSourceChain(\n amountFloat: BigSource,\n sourceChainToken: TokenWithChainDetails\n ): Promise<number> {\n validateAmountGtZero(amountFloat);\n validateAmountDecimals(\"amountFloat\", amountFloat, sourceChainToken.decimals);\n const amountInt = convertFloatAmountToInt(amountFloat, sourceChainToken.decimals);\n if (amountInt.eq(0)) {\n return 0;\n }\n const vUsdInSystemPrecision = swapToVUsd(\n amountInt,\n sourceChainToken,\n await getPoolInfoByToken(this.api, sourceChainToken)\n );\n const vUsdInSourcePrecision = fromSystemPrecision(vUsdInSystemPrecision, sourceChainToken.decimals);\n return getFeePercent(amountInt, vUsdInSourcePrecision);\n }\n\n async calculateFeePercentOnDestinationChain(\n amountFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): Promise<number> {\n validateAmountGtZero(amountFloat);\n validateAmountDecimals(\"amountFloat\", amountFloat, sourceChainToken.decimals);\n const amountInt = convertFloatAmountToInt(amountFloat, sourceChainToken.decimals);\n if (amountInt.eq(0)) {\n return 0;\n }\n const vUsdInSystemPrecision = swapToVUsd(\n amountInt,\n sourceChainToken,\n await getPoolInfoByToken(this.api, sourceChainToken)\n );\n const usd = swapFromVUsd(\n vUsdInSystemPrecision,\n destinationChainToken,\n await getPoolInfoByToken(this.api, destinationChainToken)\n );\n const vUsdInDestinationPrecision = fromSystemPrecision(vUsdInSystemPrecision, destinationChainToken.decimals);\n return getFeePercent(vUsdInDestinationPrecision, usd);\n }\n\n async getAmountToBeReceivedAndGasFeeOptions(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<AmountsAndGasFeeOptions> {\n validateAmountGtZero(amountToSendFloat);\n validateAmountDecimals(\"amountToSendFloat\", amountToSendFloat, sourceChainToken.decimals);\n return {\n amountToSendFloat: Big(amountToSendFloat).toFixed(),\n amountToBeReceivedFloat: await this.getAmountToBeReceived(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n ),\n gasFeeOptions: await this.getGasFeeOptions(sourceChainToken, destinationChainToken, messenger),\n };\n }\n\n async getAmountToSendAndGasFeeOptions(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<AmountsAndGasFeeOptions> {\n validateAmountGtZero(amountToBeReceivedFloat);\n validateAmountDecimals(\"amountToBeReceivedFloat\", amountToBeReceivedFloat, destinationChainToken.decimals);\n return {\n amountToSendFloat: await this.getAmountToSend(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n ),\n amountToBeReceivedFloat: Big(amountToBeReceivedFloat).toFixed(),\n gasFeeOptions: await this.getGasFeeOptions(sourceChainToken, destinationChainToken, messenger),\n };\n }\n\n async getAmountToBeReceived(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<string> {\n return this.getAmountToBeReceivedCompute(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger,\n async () => await getPoolInfoByToken(this.api, sourceChainToken),\n async () => await getPoolInfoByToken(this.api, destinationChainToken)\n );\n }\n\n async getAmountToBeReceivedFromChain(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger,\n sourceProvider?: Provider,\n destinationProvider?: Provider\n ): Promise<string> {\n return this.getAmountToBeReceivedCompute(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger,\n async () => await this.pool.getPoolInfoFromChain(sourceChainToken, sourceProvider),\n async () => await this.pool.getPoolInfoFromChain(destinationChainToken, destinationProvider)\n );\n }\n\n async getAmountToBeReceivedCompute(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger = Messenger.ALLBRIDGE,\n sourcePool: () => Promise<PoolInfo>,\n destPool: () => Promise<PoolInfo>\n ): Promise<string> {\n switch (messenger) {\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE: {\n return this.getAmountToBeReceivedComputeWithPools(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n await sourcePool(),\n await destPool()\n );\n }\n case Messenger.CCTP:\n case Messenger.CCTP_V2:\n return this.getAmountToBeReceivedComputeCctp(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n );\n case Messenger.X_RESERVE:\n return this.getAmountToBeReceivedComputeXReserve(amountToSendFloat, sourceChainToken, destinationChainToken);\n case Messenger.OFT:\n return this.getAmountToBeReceivedComputeOft(amountToSendFloat, sourceChainToken, destinationChainToken);\n }\n }\n\n getAmountToBeReceivedComputeWithPools(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destinationPool: PoolInfo\n ): string {\n validateAmountGtZero(amountToSendFloat);\n validateAmountDecimals(\"amountToSendFloat\", amountToSendFloat, sourceChainToken.decimals);\n const amountToSend = convertFloatAmountToInt(amountToSendFloat, sourceChainToken.decimals);\n\n const vUsd = swapToVUsd(amountToSend, sourceChainToken, sourcePool);\n return this.getAmountFromVUsdFormatted(vUsd, destinationChainToken, destinationPool).float;\n }\n\n getAmountToBeReceivedComputeCctp(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger.CCTP | Messenger.CCTP_V2\n ): string {\n validateAmountGtZero(amountToSendFloat);\n validateAmountDecimals(\"amountToSendFloat\", amountToSendFloat, sourceChainToken.decimals);\n const amountToSend = convertFloatAmountToInt(amountToSendFloat, sourceChainToken.decimals);\n\n switch (messenger) {\n case Messenger.CCTP: {\n if (!sourceChainToken.cctpAddress || !destinationChainToken.cctpAddress || !sourceChainToken.cctpFeeShare) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP protocol\");\n }\n const result = amountToSend.mul(Big(1).minus(sourceChainToken.cctpFeeShare)).round(0, Big.roundUp);\n const resultInDestPrecision = convertAmountPrecision(\n result,\n sourceChainToken.decimals,\n destinationChainToken.decimals\n ).round(0);\n return convertIntAmountToFloat(resultInDestPrecision, destinationChainToken.decimals).toFixed();\n }\n case Messenger.CCTP_V2: {\n if (\n !sourceChainToken.cctpV2Address ||\n !destinationChainToken.cctpV2Address ||\n !sourceChainToken.cctpV2FeeShare\n ) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP V2 protocol\");\n }\n const result = amountToSend.mul(Big(1).minus(sourceChainToken.cctpV2FeeShare)).round(0, Big.roundUp);\n const resultInDestPrecision = convertAmountPrecision(\n result,\n sourceChainToken.decimals,\n destinationChainToken.decimals\n ).round(0);\n\n return convertIntAmountToFloat(resultInDestPrecision, destinationChainToken.decimals).toFixed();\n }\n }\n }\n\n getAmountToBeReceivedComputeXReserve(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): string {\n validateAmountGtZero(amountToSendFloat);\n validateAmountDecimals(\"amountToSendFloat\", amountToSendFloat, sourceChainToken.decimals);\n const xReserve = this.getXReserveConfig(sourceChainToken, destinationChainToken);\n const amountToSend = convertFloatAmountToInt(amountToSendFloat, sourceChainToken.decimals);\n\n const result = amountToSend.mul(Big(1).minus(xReserve.feeShare)).minus(xReserve.feeConst).round(0, Big.roundDown);\n if (result.lte(0)) {\n const minAmount = Big(xReserve.feeConst).div(Big(1).minus(xReserve.feeShare));\n const minAmountFloat = convertIntAmountToFloat(minAmount, sourceChainToken.decimals);\n\n throw new SdkError(\n `Amount is too low for xReserve route: amount must be greater than ${minAmountFloat.toFixed(2, Big.roundUp)} ${sourceChainToken.symbol ?? \"\"}`.trim()\n );\n }\n const resultInDestPrecision = convertAmountPrecision(\n result,\n sourceChainToken.decimals,\n destinationChainToken.decimals\n ).round(0);\n\n return convertIntAmountToFloat(resultInDestPrecision, destinationChainToken.decimals).toFixed();\n }\n\n async getAmountToBeReceivedComputeOft(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): Promise<string> {\n validateAmountGtZero(amountToSendFloat);\n validateAmountDecimals(\"amountToSendFloat\", amountToSendFloat, sourceChainToken.decimals);\n const amountToSend = convertFloatAmountToInt(amountToSendFloat, sourceChainToken.decimals);\n\n if (\n !sourceChainToken.oftBridgeAddress ||\n !destinationChainToken.oftBridgeAddress ||\n sourceChainToken.oftId !== destinationChainToken.oftId\n ) {\n throw new OFTDoesNotSupportedError(\"Such route does not support OFT protocol\");\n }\n const { adminFeeShareWithExtras } = await this.api.getReceiveTransactionCost({\n sourceChainId: sourceChainToken.allbridgeChainId,\n destinationChainId: destinationChainToken.allbridgeChainId,\n messenger: Messenger.OFT,\n sourceToken: sourceChainToken.tokenAddress,\n });\n if (!adminFeeShareWithExtras) {\n throw new OFTDoesNotSupportedError(\"Such route does not support OFT protocol\");\n }\n const result = amountToSend.mul(Big(1).minus(adminFeeShareWithExtras)).round(0, Big.roundUp);\n const resultInDestPrecision = convertAmountPrecision(\n result,\n sourceChainToken.decimals,\n destinationChainToken.decimals\n ).round(0);\n\n return convertIntAmountToFloat(resultInDestPrecision, destinationChainToken.decimals).toFixed();\n }\n\n async getAmountToSend(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<string> {\n return this.getAmountToSendCompute(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger,\n () => getPoolInfoByToken(this.api, sourceChainToken),\n () => getPoolInfoByToken(this.api, destinationChainToken)\n );\n }\n\n async getAmountToSendFromChain(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger,\n sourceProvider?: Provider,\n destinationProvider?: Provider\n ): Promise<string> {\n return this.getAmountToSendCompute(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger,\n () => this.pool.getPoolInfoFromChain(sourceChainToken, sourceProvider),\n () => this.pool.getPoolInfoFromChain(destinationChainToken, destinationProvider)\n );\n }\n\n async getAmountToSendCompute(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger = Messenger.ALLBRIDGE,\n sourcePool: () => Promise<PoolInfo>,\n destPool: () => Promise<PoolInfo>\n ): Promise<string> {\n switch (messenger) {\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE: {\n return this.getAmountToSendComputeWithPools(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n await sourcePool(),\n await destPool()\n );\n }\n case Messenger.CCTP:\n case Messenger.CCTP_V2:\n return this.getAmountToSendComputeCctp(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n );\n case Messenger.X_RESERVE:\n return this.getAmountToSendComputeXReserve(amountToBeReceivedFloat, sourceChainToken, destinationChainToken);\n case Messenger.OFT:\n return this.getAmountToSendComputeOft(amountToBeReceivedFloat, sourceChainToken, destinationChainToken);\n }\n }\n\n getAmountToSendComputeWithPools(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destinationPool: PoolInfo\n ): string {\n validateAmountGtZero(amountToBeReceivedFloat);\n validateAmountDecimals(\"amountToBeReceivedFloat\", amountToBeReceivedFloat, destinationChainToken.decimals);\n const amountToBeReceived = convertFloatAmountToInt(amountToBeReceivedFloat, destinationChainToken.decimals);\n\n const vUsd = swapFromVUsdReverse(amountToBeReceived, destinationChainToken, destinationPool);\n const resultInt = swapToVUsdReverse(vUsd, sourceChainToken, sourcePool);\n if (Big(resultInt).lte(0)) {\n throw new InsufficientPoolLiquidityError();\n }\n return convertIntAmountToFloat(resultInt, sourceChainToken.decimals).toFixed();\n }\n\n getAmountToSendComputeCctp(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger.CCTP | Messenger.CCTP_V2\n ): string {\n validateAmountGtZero(amountToBeReceivedFloat);\n validateAmountDecimals(\"amountToBeReceivedFloat\", amountToBeReceivedFloat, destinationChainToken.decimals);\n const amountToBeReceived = convertFloatAmountToInt(amountToBeReceivedFloat, destinationChainToken.decimals);\n\n switch (messenger) {\n case Messenger.CCTP: {\n if (!sourceChainToken.cctpAddress || !destinationChainToken.cctpAddress || !sourceChainToken.cctpFeeShare) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP protocol\");\n }\n const result = amountToBeReceived.div(Big(1).minus(sourceChainToken.cctpFeeShare)).round(0, Big.roundDown);\n const resultInSourcePrecision = convertAmountPrecision(\n result,\n destinationChainToken.decimals,\n sourceChainToken.decimals\n ).round(0);\n return convertIntAmountToFloat(resultInSourcePrecision, sourceChainToken.decimals).toFixed();\n }\n case Messenger.CCTP_V2: {\n if (\n !sourceChainToken.cctpV2Address ||\n !destinationChainToken.cctpV2Address ||\n !sourceChainToken.cctpV2FeeShare\n ) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP V2 protocol\");\n }\n const result = amountToBeReceived.div(Big(1).minus(sourceChainToken.cctpV2FeeShare)).round(0, Big.roundDown);\n const resultInSourcePrecision = convertAmountPrecision(\n result,\n destinationChainToken.decimals,\n sourceChainToken.decimals\n ).round(0);\n return convertIntAmountToFloat(resultInSourcePrecision, sourceChainToken.decimals).toFixed();\n }\n }\n }\n\n getAmountToSendComputeXReserve(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): string {\n validateAmountGtZero(amountToBeReceivedFloat);\n validateAmountDecimals(\"amountToBeReceivedFloat\", amountToBeReceivedFloat, destinationChainToken.decimals);\n const xReserve = this.getXReserveConfig(sourceChainToken, destinationChainToken);\n const amountToBeReceived = convertFloatAmountToInt(amountToBeReceivedFloat, destinationChainToken.decimals);\n\n const amountInSourcePrecision = convertAmountPrecision(\n amountToBeReceived,\n destinationChainToken.decimals,\n sourceChainToken.decimals\n ).round(0);\n\n const result = amountInSourcePrecision\n .plus(xReserve.feeConst)\n .div(Big(1).minus(xReserve.feeShare))\n .round(0, Big.roundUp);\n if (result.lte(0)) {\n throw new SdkError(\"Amount is too low for xReserve route\");\n }\n\n return convertIntAmountToFloat(result, sourceChainToken.decimals).toFixed();\n }\n\n private getXReserveConfig(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): NonNullable<TokenWithChainDetails[\"xReserve\"]> {\n if (!sourceChainToken.xReserve || !destinationChainToken.xReserve) {\n throw new SdkError(\"Such route does not support xReserve protocol\");\n }\n if (Big(sourceChainToken.xReserve.feeShare).gte(1)) {\n throw new SdkError(\"xReserve feeShare must be less than 1\");\n }\n return sourceChainToken.xReserve;\n }\n\n async getAmountToSendComputeOft(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): Promise<string> {\n validateAmountGtZero(amountToBeReceivedFloat);\n validateAmountDecimals(\"amountToBeReceivedFloat\", amountToBeReceivedFloat, destinationChainToken.decimals);\n const amountToBeReceived = convertFloatAmountToInt(amountToBeReceivedFloat, destinationChainToken.decimals);\n\n if (\n !sourceChainToken.oftId ||\n !destinationChainToken.oftId ||\n !sourceChainToken.oftBridgeAddress ||\n sourceChainToken.oftId !== destinationChainToken.oftId\n ) {\n throw new OFTDoesNotSupportedError(\"Such route does not support OFT protocol\");\n }\n const { adminFeeShareWithExtras } = await this.api.getReceiveTransactionCost({\n sourceChainId: sourceChainToken.allbridgeChainId,\n destinationChainId: destinationChainToken.allbridgeChainId,\n messenger: Messenger.OFT,\n sourceToken: sourceChainToken.tokenAddress,\n });\n if (!adminFeeShareWithExtras) {\n throw new OFTDoesNotSupportedError(\"Such route does not support OFT protocol\");\n }\n const result = amountToBeReceived.div(Big(1).minus(adminFeeShareWithExtras)).round(0, Big.roundDown);\n const resultInSourcePrecision = convertAmountPrecision(\n result,\n destinationChainToken.decimals,\n sourceChainToken.decimals\n ).round(0);\n return convertIntAmountToFloat(resultInSourcePrecision, sourceChainToken.decimals).toFixed();\n }\n\n async getGasFeeOptions(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<GasFeeOptions> {\n return getGasFeeOptions(sourceChainToken, destinationChainToken.allbridgeChainId, messenger, this.api);\n }\n\n getAverageTransferTime(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): number | null {\n return sourceChainToken.transferTime?.[destinationChainToken.chainSymbol]?.[messenger] ?? null;\n }\n\n async getPoolInfoByToken(token: TokenWithChainDetails): Promise<PoolInfo> {\n return await this.api.getPoolInfoByKey({ chainSymbol: token.chainSymbol, poolAddress: token.poolAddress });\n }\n\n async refreshPoolInfo(tokens?: TokenWithChainDetails | TokenWithChainDetails[]): Promise<void> {\n if (tokens) {\n const tokensArray = tokens instanceof Array ? tokens : [tokens];\n const poolKeys: PoolKeyObject[] = tokensArray.map((t) => {\n return { chainSymbol: t.chainSymbol, poolAddress: t.poolAddress };\n });\n return this.api.refreshPoolInfo(poolKeys);\n }\n return this.api.refreshPoolInfo();\n }\n\n aprInPercents(apr: string): string {\n return aprInPercents(apr);\n }\n\n async getExtraGasMaxLimits(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<ExtraGasMaxLimitResponse> {\n return await getExtraGasMaxLimits(sourceChainToken, destinationChainToken, messenger, this.api);\n }\n\n async getVUsdFromAmount(\n amount: string,\n amountFormat: AmountFormat,\n sourceToken: TokenWithChainDetails\n ): Promise<AmountFormatted> {\n validateAmountGtZero(amount);\n let amountInTokenPrecision;\n if (amountFormat == AmountFormat.FLOAT) {\n validateAmountDecimals(\"amount\", amount, sourceToken.decimals);\n amountInTokenPrecision = convertFloatAmountToInt(amount, sourceToken.decimals).toFixed();\n } else {\n amountInTokenPrecision = amount;\n }\n\n const vUsdAmount = swapToVUsd(amountInTokenPrecision, sourceToken, await getPoolInfoByToken(this.api, sourceToken));\n return {\n [AmountFormat.INT]: vUsdAmount,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(vUsdAmount, SYSTEM_PRECISION).toFixed(),\n };\n }\n\n async getAmountFromVUsd(vUsdAmount: string, destToken: TokenWithChainDetails): Promise<AmountFormatted> {\n return this.getAmountFromVUsdFormatted(vUsdAmount, destToken, await getPoolInfoByToken(this.api, destToken));\n }\n\n private getAmountFromVUsdFormatted(\n vUsdAmountInt: string,\n destToken: TokenWithChainDetails,\n destPoolInfo: Pick<PoolInfo, \"vUsdBalance\" | \"aValue\" | \"dValue\" | \"tokenBalance\">\n ): AmountFormatted {\n validateAmountGtZero(vUsdAmountInt);\n const amountResultInt = swapFromVUsd(vUsdAmountInt, destToken, destPoolInfo);\n if (Big(amountResultInt).lt(0)) {\n throw new InsufficientPoolLiquidityError();\n }\n return {\n [AmountFormat.INT]: amountResultInt,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(amountResultInt, destToken.decimals).toFixed(),\n };\n }\n\n async swapAndBridgeFeeCalculation(\n amountInTokenPrecision: string,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<SwapAndBridgeCalculationData> {\n return swapAndBridgeFeeCalculation(\n amountInTokenPrecision,\n {\n decimals: sourceToken.decimals,\n feeShare: sourceToken.feeShare,\n poolInfo: await getPoolInfoByToken(this.api, sourceToken),\n },\n {\n decimals: destToken.decimals,\n feeShare: destToken.feeShare,\n poolInfo: await getPoolInfoByToken(this.api, destToken),\n }\n );\n }\n\n async swapAndBridgeFeeCalculationReverse(\n amountInTokenPrecision: string,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<SwapAndBridgeCalculationData> {\n const result = swapAndBridgeFeeCalculationReverse(\n amountInTokenPrecision,\n {\n decimals: sourceToken.decimals,\n feeShare: sourceToken.feeShare,\n poolInfo: await getPoolInfoByToken(this.api, sourceToken),\n },\n {\n decimals: destToken.decimals,\n feeShare: destToken.feeShare,\n poolInfo: await getPoolInfoByToken(this.api, destToken),\n }\n );\n const newAmount = result.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;\n if (Big(newAmount).lt(0)) {\n throw new InsufficientPoolLiquidityError();\n }\n return result;\n }\n\n async getSendAmountDetails(\n amount: string,\n amountFormat: AmountFormat,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<SendAmountDetails> {\n validateAmountGtZero(amount);\n let amountInTokenPrecision;\n if (amountFormat == AmountFormat.FLOAT) {\n validateAmountDecimals(\"amount\", amount, sourceToken.decimals);\n amountInTokenPrecision = convertFloatAmountToInt(amount, sourceToken.decimals).toFixed();\n } else {\n amountInTokenPrecision = amount;\n }\n\n return getSendAmountDetails(\n amountInTokenPrecision,\n sourceToken,\n await getPoolInfoByToken(this.api, sourceToken),\n destToken,\n await getPoolInfoByToken(this.api, destToken)\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/unified-signatures -- overloads intentionally expose filter-specific deprecation metadata */\nimport { Big, BigSource } from \"big.js\";\nimport { Chains } from \"../chains\";\nimport { ApiClientImpl } from \"../client/core-api/api-client\";\nimport { ApiClientCaching } from \"../client/core-api/api-client-caching\";\nimport {\n AddressStatus,\n CheckAddressResponse,\n GasBalanceResponse,\n Messenger,\n PendingInfoDTO,\n TransferStatusResponse,\n} from \"../client/core-api/core-api.model\";\nimport { AllbridgeCoreClientImpl } from \"../client/core-api/core-client-base\";\nimport { AllbridgeCoreClientFiltered, AllbridgeCoreClientFilteredImpl } from \"../client/core-api/core-client-filtered\";\nimport { AllbridgeCoreClientPoolInfoCaching } from \"../client/core-api/core-client-pool-info-caching\";\nimport { mainnet } from \"../configs\";\nimport {\n AllbridgeCoreSdkOptions,\n BasicChainProperties,\n NodeRpcUrls,\n OFTDoesNotSupportedError,\n SdkError,\n} from \"../index\";\nimport {\n AmountFormat,\n AmountFormatted,\n AmountsAndGasFeeOptions,\n CCTPDoesNotSupportedError,\n ExtraGasMaxLimitResponse,\n GasFeeOptions,\n GetTokenBalanceParams,\n InsufficientPoolLiquidityError,\n NodeRpcUrlNotInitializedError,\n PendingStatusInfoResponse,\n Provider,\n SendAmountDetails,\n SwapAndBridgeCalculationData,\n} from \"../models\";\nimport { ChainDetailsMap, PoolInfo, PoolKeyObject, TokenWithChainDetails } from \"../tokens-info\";\nimport {\n aprInPercents,\n convertAmountPrecision,\n convertFloatAmountToInt,\n convertIntAmountToFloat,\n fromSystemPrecision,\n getFeePercent,\n getSwapFromVUsdPoolInfo,\n swapFromVUsd,\n swapFromVUsdReverse,\n swapToVUsd,\n swapToVUsdReverse,\n} from \"../utils/calculation\";\nimport { SYSTEM_PRECISION } from \"../utils/calculation/constants\";\nimport { getSendAmountDetails } from \"../utils/calculation/swap-and-bridge-details\";\nimport {\n swapAndBridgeFeeCalculation,\n swapAndBridgeFeeCalculationReverse,\n} from \"../utils/calculation/swap-and-bridge-fee-calc\";\nimport { getPoolInfoByToken, validateAmountDecimals, validateAmountGtZero } from \"../utils/utils\";\nimport { BridgeService, DefaultBridgeService } from \"./bridge\";\nimport { GetNativeTokenBalanceParams } from \"./bridge/models\";\nimport { getExtraGasMaxLimits, getGasFeeOptions } from \"./bridge/utils\";\nimport { DefaultLiquidityPoolService, LiquidityPoolService } from \"./liquidity-pool\";\nimport { DefaultTokenService, TokenService } from \"./token\";\nimport { DefaultYieldService, YieldService } from \"./yield\";\n\nexport class NodeRpcUrlsConfig {\n constructor(private nodeRpcUrls: NodeRpcUrls) {}\n\n getNodeRpcUrl(chainSymbol: string): string {\n const nodeRpcUrl = this.nodeRpcUrls[chainSymbol];\n if (nodeRpcUrl !== undefined) {\n return nodeRpcUrl;\n } else {\n throw new NodeRpcUrlNotInitializedError(chainSymbol);\n }\n }\n}\n\nexport class AllbridgeCoreSdkService {\n readonly api: AllbridgeCoreClientFiltered;\n\n private readonly tokenService: TokenService;\n\n readonly params: AllbridgeCoreSdkOptions;\n\n bridge: BridgeService;\n /** @deprecated Do not use. */\n pool: LiquidityPoolService;\n yield: YieldService;\n\n constructor(\n public readonly nodeRpcUrlsConfig: NodeRpcUrlsConfig,\n params: AllbridgeCoreSdkOptions = mainnet\n ) {\n Chains.addChainsProperties(params.additionalChainsProperties as Record<string, BasicChainProperties>);\n const apiClient = new ApiClientImpl(params);\n const apiClientCaching = new ApiClientCaching(apiClient);\n const coreClient = new AllbridgeCoreClientImpl(apiClientCaching);\n const coreClientPoolInfoCaching = new AllbridgeCoreClientPoolInfoCaching(coreClient);\n this.api = new AllbridgeCoreClientFilteredImpl(coreClientPoolInfoCaching, params);\n this.tokenService = new DefaultTokenService(this.api, nodeRpcUrlsConfig, params);\n this.bridge = new DefaultBridgeService(this.api, nodeRpcUrlsConfig, params, this.tokenService);\n this.pool = new DefaultLiquidityPoolService(this.api, nodeRpcUrlsConfig, params, this.tokenService);\n this.yield = new DefaultYieldService(this.api, nodeRpcUrlsConfig, params, this.tokenService);\n this.params = params;\n }\n\n /** @deprecated Do not use. */\n chainDetailsMap(type: \"pool\"): Promise<ChainDetailsMap>;\n chainDetailsMap(type: \"swap\"): Promise<ChainDetailsMap>;\n chainDetailsMap(type: \"swap\" | \"pool\"): Promise<ChainDetailsMap>;\n async chainDetailsMap(type: \"swap\" | \"pool\"): Promise<ChainDetailsMap> {\n return this.api.getChainDetailsMap(type);\n }\n\n /** @deprecated Do not use. */\n tokens(type: \"pool\"): Promise<TokenWithChainDetails[]>;\n tokens(type: \"swap\"): Promise<TokenWithChainDetails[]>;\n tokens(type: \"swap\" | \"pool\"): Promise<TokenWithChainDetails[]>;\n async tokens(type: \"swap\" | \"pool\"): Promise<TokenWithChainDetails[]> {\n return this.api.tokens(type);\n }\n\n /** @deprecated Do not use. */\n tokensByChain(chainSymbol: string, type: \"pool\"): Promise<TokenWithChainDetails[]>;\n tokensByChain(chainSymbol: string, type: \"swap\"): Promise<TokenWithChainDetails[]>;\n tokensByChain(chainSymbol: string, type: \"swap\" | \"pool\"): Promise<TokenWithChainDetails[]>;\n async tokensByChain(chainSymbol: string, type: \"swap\" | \"pool\"): Promise<TokenWithChainDetails[]> {\n const map = await this.api.getChainDetailsMap(type);\n const chainDetails = map[chainSymbol];\n if (!chainDetails) {\n return [];\n }\n return chainDetails.tokens;\n }\n\n async getTransferStatus(chainSymbol: string, txId: string): Promise<TransferStatusResponse> {\n return this.api.getTransferStatus(chainSymbol, txId);\n }\n\n async getGasBalance(chainSymbol: string, address: string): Promise<GasBalanceResponse> {\n return this.api.getGasBalance(chainSymbol, address);\n }\n\n async checkAddress(): Promise<CheckAddressResponse> {\n return new Promise((resolve) => {\n resolve({\n status: AddressStatus.OK,\n gasBalance: null,\n });\n });\n }\n\n /** @deprecated Do not use. */\n async getPendingStatusInfo(\n amount: string,\n amountFormat: AmountFormat,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<PendingStatusInfoResponse> {\n validateAmountGtZero(amount);\n let amountInTokenPrecision;\n if (amountFormat == AmountFormat.FLOAT) {\n validateAmountDecimals(\"amount\", amount, sourceToken.decimals);\n amountInTokenPrecision = convertFloatAmountToInt(amount, sourceToken.decimals).toFixed();\n } else {\n amountInTokenPrecision = amount;\n }\n\n const vUsdAmountInt = swapToVUsd(\n amountInTokenPrecision,\n sourceToken,\n await getPoolInfoByToken(this.api, sourceToken)\n );\n const destPoolInfo = await getPoolInfoByToken(this.api, destToken);\n const amountResultIntFormatted: AmountFormatted = this.getAmountFromVUsdFormatted(\n vUsdAmountInt,\n destToken,\n destPoolInfo\n );\n\n let pendingInfoDTO: PendingInfoDTO | undefined;\n const pendingInfo = await this.api.getPendingInfo();\n for (const tokenAddress in pendingInfo[destToken.chainSymbol]) {\n const info = pendingInfo[destToken.chainSymbol];\n if (!info) {\n throw new SdkError(\"Cannot find pending info for \" + destToken.chainSymbol);\n }\n pendingInfoDTO = info[tokenAddress];\n }\n if (pendingInfoDTO) {\n const destPoolAfterPending = getSwapFromVUsdPoolInfo(pendingInfoDTO.totalSentAmount, destPoolInfo);\n const amountResultIntAfterPendingFormatted: AmountFormatted = this.getAmountFromVUsdFormatted(\n vUsdAmountInt,\n destToken,\n destPoolAfterPending\n );\n\n let estimatedAmount: { min: AmountFormatted; max: AmountFormatted };\n if (Big(amountResultIntAfterPendingFormatted.int).gt(amountResultIntFormatted.int)) {\n estimatedAmount = { min: amountResultIntFormatted, max: amountResultIntAfterPendingFormatted };\n } else {\n estimatedAmount = { min: amountResultIntAfterPendingFormatted, max: amountResultIntFormatted };\n }\n\n return {\n pendingTxs: pendingInfoDTO.pendingTxs,\n pendingAmount: {\n [AmountFormat.INT]: convertAmountPrecision(\n pendingInfoDTO.totalSentAmount,\n SYSTEM_PRECISION,\n destToken.decimals\n ).toFixed(0),\n [AmountFormat.FLOAT]: convertIntAmountToFloat(pendingInfoDTO.totalSentAmount, SYSTEM_PRECISION).toFixed(),\n },\n estimatedAmount,\n };\n }\n return {\n pendingTxs: 0,\n pendingAmount: {\n [AmountFormat.INT]: \"0\",\n [AmountFormat.FLOAT]: \"0\",\n },\n estimatedAmount: {\n min: amountResultIntFormatted,\n max: amountResultIntFormatted,\n },\n };\n }\n\n async getTokenBalance(params: GetTokenBalanceParams, provider?: Provider): Promise<string> {\n return this.tokenService.getTokenBalance(params, provider);\n }\n\n async getNativeTokenBalance(params: GetNativeTokenBalanceParams, provider?: Provider): Promise<AmountFormatted> {\n return this.tokenService.getNativeTokenBalance(params, provider);\n }\n\n /** @deprecated Do not use. */\n async calculateFeePercentOnSourceChain(\n amountFloat: BigSource,\n sourceChainToken: TokenWithChainDetails\n ): Promise<number> {\n validateAmountGtZero(amountFloat);\n validateAmountDecimals(\"amountFloat\", amountFloat, sourceChainToken.decimals);\n const amountInt = convertFloatAmountToInt(amountFloat, sourceChainToken.decimals);\n if (amountInt.eq(0)) {\n return 0;\n }\n const vUsdInSystemPrecision = swapToVUsd(\n amountInt,\n sourceChainToken,\n await getPoolInfoByToken(this.api, sourceChainToken)\n );\n const vUsdInSourcePrecision = fromSystemPrecision(vUsdInSystemPrecision, sourceChainToken.decimals);\n return getFeePercent(amountInt, vUsdInSourcePrecision);\n }\n\n /** @deprecated Do not use. */\n async calculateFeePercentOnDestinationChain(\n amountFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): Promise<number> {\n validateAmountGtZero(amountFloat);\n validateAmountDecimals(\"amountFloat\", amountFloat, sourceChainToken.decimals);\n const amountInt = convertFloatAmountToInt(amountFloat, sourceChainToken.decimals);\n if (amountInt.eq(0)) {\n return 0;\n }\n const vUsdInSystemPrecision = swapToVUsd(\n amountInt,\n sourceChainToken,\n await getPoolInfoByToken(this.api, sourceChainToken)\n );\n const usd = swapFromVUsd(\n vUsdInSystemPrecision,\n destinationChainToken,\n await getPoolInfoByToken(this.api, destinationChainToken)\n );\n const vUsdInDestinationPrecision = fromSystemPrecision(vUsdInSystemPrecision, destinationChainToken.decimals);\n return getFeePercent(vUsdInDestinationPrecision, usd);\n }\n\n async getAmountToBeReceivedAndGasFeeOptions(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<AmountsAndGasFeeOptions> {\n validateAmountGtZero(amountToSendFloat);\n validateAmountDecimals(\"amountToSendFloat\", amountToSendFloat, sourceChainToken.decimals);\n return {\n amountToSendFloat: Big(amountToSendFloat).toFixed(),\n amountToBeReceivedFloat: await this.getAmountToBeReceived(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n ),\n gasFeeOptions: await this.getGasFeeOptions(sourceChainToken, destinationChainToken, messenger),\n };\n }\n\n async getAmountToSendAndGasFeeOptions(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<AmountsAndGasFeeOptions> {\n validateAmountGtZero(amountToBeReceivedFloat);\n validateAmountDecimals(\"amountToBeReceivedFloat\", amountToBeReceivedFloat, destinationChainToken.decimals);\n return {\n amountToSendFloat: await this.getAmountToSend(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n ),\n amountToBeReceivedFloat: Big(amountToBeReceivedFloat).toFixed(),\n gasFeeOptions: await this.getGasFeeOptions(sourceChainToken, destinationChainToken, messenger),\n };\n }\n\n async getAmountToBeReceived(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<string> {\n return this.getAmountToBeReceivedCompute(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger,\n async () => await getPoolInfoByToken(this.api, sourceChainToken),\n async () => await getPoolInfoByToken(this.api, destinationChainToken)\n );\n }\n\n async getAmountToBeReceivedFromChain(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger,\n sourceProvider?: Provider,\n destinationProvider?: Provider\n ): Promise<string> {\n return this.getAmountToBeReceivedCompute(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger,\n async () => await this.pool.getPoolInfoFromChain(sourceChainToken, sourceProvider),\n async () => await this.pool.getPoolInfoFromChain(destinationChainToken, destinationProvider)\n );\n }\n\n async getAmountToBeReceivedCompute(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger,\n sourcePool: () => Promise<PoolInfo>,\n destPool: () => Promise<PoolInfo>\n ): Promise<string> {\n switch (messenger) {\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE: {\n return this.getAmountToBeReceivedComputeWithPools(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n await sourcePool(),\n await destPool()\n );\n }\n case Messenger.CCTP:\n case Messenger.CCTP_V2:\n return this.getAmountToBeReceivedComputeCctp(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n );\n case Messenger.X_RESERVE:\n return this.getAmountToBeReceivedComputeXReserve(amountToSendFloat, sourceChainToken, destinationChainToken);\n case Messenger.OFT:\n return this.getAmountToBeReceivedComputeOft(amountToSendFloat, sourceChainToken, destinationChainToken);\n }\n }\n\n /** @deprecated Do not use. */\n getAmountToBeReceivedComputeWithPools(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destinationPool: PoolInfo\n ): string {\n validateAmountGtZero(amountToSendFloat);\n validateAmountDecimals(\"amountToSendFloat\", amountToSendFloat, sourceChainToken.decimals);\n const amountToSend = convertFloatAmountToInt(amountToSendFloat, sourceChainToken.decimals);\n\n const vUsd = swapToVUsd(amountToSend, sourceChainToken, sourcePool);\n return this.getAmountFromVUsdFormatted(vUsd, destinationChainToken, destinationPool).float;\n }\n\n getAmountToBeReceivedComputeCctp(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger.CCTP | Messenger.CCTP_V2\n ): string {\n validateAmountGtZero(amountToSendFloat);\n validateAmountDecimals(\"amountToSendFloat\", amountToSendFloat, sourceChainToken.decimals);\n const amountToSend = convertFloatAmountToInt(amountToSendFloat, sourceChainToken.decimals);\n\n switch (messenger) {\n case Messenger.CCTP: {\n if (!sourceChainToken.cctpAddress || !destinationChainToken.cctpAddress || !sourceChainToken.cctpFeeShare) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP protocol\");\n }\n const result = amountToSend.mul(Big(1).minus(sourceChainToken.cctpFeeShare)).round(0, Big.roundUp);\n const resultInDestPrecision = convertAmountPrecision(\n result,\n sourceChainToken.decimals,\n destinationChainToken.decimals\n ).round(0);\n return convertIntAmountToFloat(resultInDestPrecision, destinationChainToken.decimals).toFixed();\n }\n case Messenger.CCTP_V2: {\n if (\n !sourceChainToken.cctpV2Address ||\n !destinationChainToken.cctpV2Address ||\n !sourceChainToken.cctpV2FeeShare\n ) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP V2 protocol\");\n }\n const result = amountToSend.mul(Big(1).minus(sourceChainToken.cctpV2FeeShare)).round(0, Big.roundUp);\n const resultInDestPrecision = convertAmountPrecision(\n result,\n sourceChainToken.decimals,\n destinationChainToken.decimals\n ).round(0);\n\n return convertIntAmountToFloat(resultInDestPrecision, destinationChainToken.decimals).toFixed();\n }\n }\n }\n\n getAmountToBeReceivedComputeXReserve(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): string {\n validateAmountGtZero(amountToSendFloat);\n validateAmountDecimals(\"amountToSendFloat\", amountToSendFloat, sourceChainToken.decimals);\n const xReserve = this.getXReserveConfig(sourceChainToken, destinationChainToken);\n const amountToSend = convertFloatAmountToInt(amountToSendFloat, sourceChainToken.decimals);\n\n const result = amountToSend.mul(Big(1).minus(xReserve.feeShare)).minus(xReserve.feeConst).round(0, Big.roundDown);\n if (result.lte(0)) {\n const minAmount = Big(xReserve.feeConst).div(Big(1).minus(xReserve.feeShare));\n const minAmountFloat = convertIntAmountToFloat(minAmount, sourceChainToken.decimals);\n\n throw new SdkError(\n `Amount is too low for xReserve route: amount must be greater than ${minAmountFloat.toFixed(2, Big.roundUp)} ${sourceChainToken.symbol ?? \"\"}`.trim()\n );\n }\n const resultInDestPrecision = convertAmountPrecision(\n result,\n sourceChainToken.decimals,\n destinationChainToken.decimals\n ).round(0);\n\n return convertIntAmountToFloat(resultInDestPrecision, destinationChainToken.decimals).toFixed();\n }\n\n async getAmountToBeReceivedComputeOft(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): Promise<string> {\n validateAmountGtZero(amountToSendFloat);\n validateAmountDecimals(\"amountToSendFloat\", amountToSendFloat, sourceChainToken.decimals);\n const amountToSend = convertFloatAmountToInt(amountToSendFloat, sourceChainToken.decimals);\n\n if (\n !sourceChainToken.oftBridgeAddress ||\n !destinationChainToken.oftBridgeAddress ||\n sourceChainToken.oftId !== destinationChainToken.oftId\n ) {\n throw new OFTDoesNotSupportedError(\"Such route does not support OFT protocol\");\n }\n const { adminFeeShareWithExtras } = await this.api.getReceiveTransactionCost({\n sourceChainId: sourceChainToken.allbridgeChainId,\n destinationChainId: destinationChainToken.allbridgeChainId,\n messenger: Messenger.OFT,\n sourceToken: sourceChainToken.tokenAddress,\n });\n if (!adminFeeShareWithExtras) {\n throw new OFTDoesNotSupportedError(\"Such route does not support OFT protocol\");\n }\n const result = amountToSend.mul(Big(1).minus(adminFeeShareWithExtras)).round(0, Big.roundUp);\n const resultInDestPrecision = convertAmountPrecision(\n result,\n sourceChainToken.decimals,\n destinationChainToken.decimals\n ).round(0);\n\n return convertIntAmountToFloat(resultInDestPrecision, destinationChainToken.decimals).toFixed();\n }\n\n async getAmountToSend(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<string> {\n return this.getAmountToSendCompute(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger,\n () => getPoolInfoByToken(this.api, sourceChainToken),\n () => getPoolInfoByToken(this.api, destinationChainToken)\n );\n }\n\n async getAmountToSendFromChain(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger,\n sourceProvider?: Provider,\n destinationProvider?: Provider\n ): Promise<string> {\n return this.getAmountToSendCompute(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger,\n () => this.pool.getPoolInfoFromChain(sourceChainToken, sourceProvider),\n () => this.pool.getPoolInfoFromChain(destinationChainToken, destinationProvider)\n );\n }\n\n async getAmountToSendCompute(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger,\n sourcePool: () => Promise<PoolInfo>,\n destPool: () => Promise<PoolInfo>\n ): Promise<string> {\n switch (messenger) {\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE: {\n return this.getAmountToSendComputeWithPools(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n await sourcePool(),\n await destPool()\n );\n }\n case Messenger.CCTP:\n case Messenger.CCTP_V2:\n return this.getAmountToSendComputeCctp(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n );\n case Messenger.X_RESERVE:\n return this.getAmountToSendComputeXReserve(amountToBeReceivedFloat, sourceChainToken, destinationChainToken);\n case Messenger.OFT:\n return this.getAmountToSendComputeOft(amountToBeReceivedFloat, sourceChainToken, destinationChainToken);\n }\n }\n\n /** @deprecated Do not use. */\n getAmountToSendComputeWithPools(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destinationPool: PoolInfo\n ): string {\n validateAmountGtZero(amountToBeReceivedFloat);\n validateAmountDecimals(\"amountToBeReceivedFloat\", amountToBeReceivedFloat, destinationChainToken.decimals);\n const amountToBeReceived = convertFloatAmountToInt(amountToBeReceivedFloat, destinationChainToken.decimals);\n\n const vUsd = swapFromVUsdReverse(amountToBeReceived, destinationChainToken, destinationPool);\n const resultInt = swapToVUsdReverse(vUsd, sourceChainToken, sourcePool);\n if (Big(resultInt).lte(0)) {\n throw new InsufficientPoolLiquidityError();\n }\n return convertIntAmountToFloat(resultInt, sourceChainToken.decimals).toFixed();\n }\n\n getAmountToSendComputeCctp(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger.CCTP | Messenger.CCTP_V2\n ): string {\n validateAmountGtZero(amountToBeReceivedFloat);\n validateAmountDecimals(\"amountToBeReceivedFloat\", amountToBeReceivedFloat, destinationChainToken.decimals);\n const amountToBeReceived = convertFloatAmountToInt(amountToBeReceivedFloat, destinationChainToken.decimals);\n\n switch (messenger) {\n case Messenger.CCTP: {\n if (!sourceChainToken.cctpAddress || !destinationChainToken.cctpAddress || !sourceChainToken.cctpFeeShare) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP protocol\");\n }\n const result = amountToBeReceived.div(Big(1).minus(sourceChainToken.cctpFeeShare)).round(0, Big.roundDown);\n const resultInSourcePrecision = convertAmountPrecision(\n result,\n destinationChainToken.decimals,\n sourceChainToken.decimals\n ).round(0);\n return convertIntAmountToFloat(resultInSourcePrecision, sourceChainToken.decimals).toFixed();\n }\n case Messenger.CCTP_V2: {\n if (\n !sourceChainToken.cctpV2Address ||\n !destinationChainToken.cctpV2Address ||\n !sourceChainToken.cctpV2FeeShare\n ) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP V2 protocol\");\n }\n const result = amountToBeReceived.div(Big(1).minus(sourceChainToken.cctpV2FeeShare)).round(0, Big.roundDown);\n const resultInSourcePrecision = convertAmountPrecision(\n result,\n destinationChainToken.decimals,\n sourceChainToken.decimals\n ).round(0);\n return convertIntAmountToFloat(resultInSourcePrecision, sourceChainToken.decimals).toFixed();\n }\n }\n }\n\n getAmountToSendComputeXReserve(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): string {\n validateAmountGtZero(amountToBeReceivedFloat);\n validateAmountDecimals(\"amountToBeReceivedFloat\", amountToBeReceivedFloat, destinationChainToken.decimals);\n const xReserve = this.getXReserveConfig(sourceChainToken, destinationChainToken);\n const amountToBeReceived = convertFloatAmountToInt(amountToBeReceivedFloat, destinationChainToken.decimals);\n\n const amountInSourcePrecision = convertAmountPrecision(\n amountToBeReceived,\n destinationChainToken.decimals,\n sourceChainToken.decimals\n ).round(0);\n\n const result = amountInSourcePrecision\n .plus(xReserve.feeConst)\n .div(Big(1).minus(xReserve.feeShare))\n .round(0, Big.roundUp);\n if (result.lte(0)) {\n throw new SdkError(\"Amount is too low for xReserve route\");\n }\n\n return convertIntAmountToFloat(result, sourceChainToken.decimals).toFixed();\n }\n\n private getXReserveConfig(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): NonNullable<TokenWithChainDetails[\"xReserve\"]> {\n if (!sourceChainToken.xReserve || !destinationChainToken.xReserve) {\n throw new SdkError(\"Such route does not support xReserve protocol\");\n }\n if (Big(sourceChainToken.xReserve.feeShare).gte(1)) {\n throw new SdkError(\"xReserve feeShare must be less than 1\");\n }\n return sourceChainToken.xReserve;\n }\n\n async getAmountToSendComputeOft(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): Promise<string> {\n validateAmountGtZero(amountToBeReceivedFloat);\n validateAmountDecimals(\"amountToBeReceivedFloat\", amountToBeReceivedFloat, destinationChainToken.decimals);\n const amountToBeReceived = convertFloatAmountToInt(amountToBeReceivedFloat, destinationChainToken.decimals);\n\n if (\n !sourceChainToken.oftId ||\n !destinationChainToken.oftId ||\n !sourceChainToken.oftBridgeAddress ||\n sourceChainToken.oftId !== destinationChainToken.oftId\n ) {\n throw new OFTDoesNotSupportedError(\"Such route does not support OFT protocol\");\n }\n const { adminFeeShareWithExtras } = await this.api.getReceiveTransactionCost({\n sourceChainId: sourceChainToken.allbridgeChainId,\n destinationChainId: destinationChainToken.allbridgeChainId,\n messenger: Messenger.OFT,\n sourceToken: sourceChainToken.tokenAddress,\n });\n if (!adminFeeShareWithExtras) {\n throw new OFTDoesNotSupportedError(\"Such route does not support OFT protocol\");\n }\n const result = amountToBeReceived.div(Big(1).minus(adminFeeShareWithExtras)).round(0, Big.roundDown);\n const resultInSourcePrecision = convertAmountPrecision(\n result,\n destinationChainToken.decimals,\n sourceChainToken.decimals\n ).round(0);\n return convertIntAmountToFloat(resultInSourcePrecision, sourceChainToken.decimals).toFixed();\n }\n\n async getGasFeeOptions(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<GasFeeOptions> {\n return getGasFeeOptions(sourceChainToken, destinationChainToken.allbridgeChainId, messenger, this.api);\n }\n\n getAverageTransferTime(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): number | null {\n return sourceChainToken.transferTime?.[destinationChainToken.chainSymbol]?.[messenger] ?? null;\n }\n\n /** @deprecated Do not use. */\n async getPoolInfoByToken(token: TokenWithChainDetails): Promise<PoolInfo> {\n return await this.api.getPoolInfoByKey({ chainSymbol: token.chainSymbol, poolAddress: token.poolAddress });\n }\n\n /** @deprecated Do not use. */\n async refreshPoolInfo(tokens?: TokenWithChainDetails | TokenWithChainDetails[]): Promise<void> {\n if (tokens) {\n const tokensArray = tokens instanceof Array ? tokens : [tokens];\n const poolKeys: PoolKeyObject[] = tokensArray.map((t) => {\n return { chainSymbol: t.chainSymbol, poolAddress: t.poolAddress };\n });\n return this.api.refreshPoolInfo(poolKeys);\n }\n return this.api.refreshPoolInfo();\n }\n\n /** @deprecated Do not use. */\n aprInPercents(apr: string): string {\n return aprInPercents(apr);\n }\n\n async getExtraGasMaxLimits(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<ExtraGasMaxLimitResponse> {\n return await getExtraGasMaxLimits(sourceChainToken, destinationChainToken, messenger, this.api);\n }\n\n /** @deprecated Do not use. */\n async getVUsdFromAmount(\n amount: string,\n amountFormat: AmountFormat,\n sourceToken: TokenWithChainDetails\n ): Promise<AmountFormatted> {\n validateAmountGtZero(amount);\n let amountInTokenPrecision;\n if (amountFormat == AmountFormat.FLOAT) {\n validateAmountDecimals(\"amount\", amount, sourceToken.decimals);\n amountInTokenPrecision = convertFloatAmountToInt(amount, sourceToken.decimals).toFixed();\n } else {\n amountInTokenPrecision = amount;\n }\n\n const vUsdAmount = swapToVUsd(amountInTokenPrecision, sourceToken, await getPoolInfoByToken(this.api, sourceToken));\n return {\n [AmountFormat.INT]: vUsdAmount,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(vUsdAmount, SYSTEM_PRECISION).toFixed(),\n };\n }\n\n /** @deprecated Do not use. */\n async getAmountFromVUsd(vUsdAmount: string, destToken: TokenWithChainDetails): Promise<AmountFormatted> {\n return this.getAmountFromVUsdFormatted(vUsdAmount, destToken, await getPoolInfoByToken(this.api, destToken));\n }\n\n private getAmountFromVUsdFormatted(\n vUsdAmountInt: string,\n destToken: TokenWithChainDetails,\n destPoolInfo: Pick<PoolInfo, \"vUsdBalance\" | \"aValue\" | \"dValue\" | \"tokenBalance\">\n ): AmountFormatted {\n validateAmountGtZero(vUsdAmountInt);\n const amountResultInt = swapFromVUsd(vUsdAmountInt, destToken, destPoolInfo);\n if (Big(amountResultInt).lt(0)) {\n throw new InsufficientPoolLiquidityError();\n }\n return {\n [AmountFormat.INT]: amountResultInt,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(amountResultInt, destToken.decimals).toFixed(),\n };\n }\n\n /** @deprecated Do not use. */\n async swapAndBridgeFeeCalculation(\n amountInTokenPrecision: string,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<SwapAndBridgeCalculationData> {\n return swapAndBridgeFeeCalculation(\n amountInTokenPrecision,\n {\n decimals: sourceToken.decimals,\n feeShare: sourceToken.feeShare,\n poolInfo: await getPoolInfoByToken(this.api, sourceToken),\n },\n {\n decimals: destToken.decimals,\n feeShare: destToken.feeShare,\n poolInfo: await getPoolInfoByToken(this.api, destToken),\n }\n );\n }\n\n /** @deprecated Do not use. */\n async swapAndBridgeFeeCalculationReverse(\n amountInTokenPrecision: string,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<SwapAndBridgeCalculationData> {\n const result = swapAndBridgeFeeCalculationReverse(\n amountInTokenPrecision,\n {\n decimals: sourceToken.decimals,\n feeShare: sourceToken.feeShare,\n poolInfo: await getPoolInfoByToken(this.api, sourceToken),\n },\n {\n decimals: destToken.decimals,\n feeShare: destToken.feeShare,\n poolInfo: await getPoolInfoByToken(this.api, destToken),\n }\n );\n const newAmount = result.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;\n if (Big(newAmount).lt(0)) {\n throw new InsufficientPoolLiquidityError();\n }\n return result;\n }\n\n /** @deprecated Do not use. */\n async getSendAmountDetails(\n amount: string,\n amountFormat: AmountFormat,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<SendAmountDetails> {\n validateAmountGtZero(amount);\n let amountInTokenPrecision;\n if (amountFormat == AmountFormat.FLOAT) {\n validateAmountDecimals(\"amount\", amount, sourceToken.decimals);\n amountInTokenPrecision = convertFloatAmountToInt(amount, sourceToken.decimals).toFixed();\n } else {\n amountInTokenPrecision = amount;\n }\n\n return getSendAmountDetails(\n amountInTokenPrecision,\n sourceToken,\n await getPoolInfoByToken(this.api, sourceToken),\n destToken,\n await getPoolInfoByToken(this.api, destToken)\n );\n }\n}\n"]}
|
|
@@ -4,6 +4,9 @@ import { AllbridgeCoreClient } from "../../../client/core-api/core-client-base";
|
|
|
4
4
|
import { PoolInfo, TokenWithChainDetails } from "../../../tokens-info";
|
|
5
5
|
import { RawTransaction } from "../../models";
|
|
6
6
|
import { ChainPoolService, LiquidityPoolsParams, LiquidityPoolsParamsWithAmount, UserBalanceInfo } from "../models";
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated Do not use.
|
|
9
|
+
*/
|
|
7
10
|
export declare class AlgPoolService extends ChainPoolService {
|
|
8
11
|
algorand: AlgorandClient;
|
|
9
12
|
api: AllbridgeCoreClient;
|
|
@@ -5,6 +5,9 @@ import { calculatePoolInfoImbalance } from "../../../utils/calculation";
|
|
|
5
5
|
import { PoolClient } from "../../models/alg/PoolClient";
|
|
6
6
|
import { checkAppOptIn, encodeTxs, feeForInner } from "../../utils/alg";
|
|
7
7
|
import { ChainPoolService, UserBalance, } from "../models";
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated Do not use.
|
|
10
|
+
*/
|
|
8
11
|
export class AlgPoolService extends ChainPoolService {
|
|
9
12
|
algorand;
|
|
10
13
|
api;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/liquidity-pool/alg/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { AlgorandClient } from \"@algorandfoundation/algokit-utils\";\nimport { assignGroupID, bytesToBigInt, OnApplicationComplete } from \"algosdk\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { SdkError } from \"../../../exceptions\";\nimport { PoolInfo, TokenWithChainDetails } from \"../../../tokens-info\";\nimport { calculatePoolInfoImbalance } from \"../../../utils/calculation\";\nimport { RawTransaction } from \"../../models\";\nimport { PoolClient } from \"../../models/alg/PoolClient\";\nimport { checkAppOptIn, encodeTxs, feeForInner } from \"../../utils/alg\";\nimport {\n ChainPoolService,\n LiquidityPoolsParams,\n LiquidityPoolsParamsWithAmount,\n UserBalance,\n UserBalanceInfo,\n} from \"../models\";\n\nexport class AlgPoolService extends ChainPoolService {\n chainType: ChainType.ALG = ChainType.ALG;\n private P = 48;\n\n constructor(\n public algorand: AlgorandClient,\n public api: AllbridgeCoreClient\n ) {\n super();\n algorand.setDefaultValidityWindow(100);\n }\n\n async buildRawTransactionClaimRewards(params: LiquidityPoolsParams): Promise<RawTransaction> {\n const userAccount = params.accountAddress;\n const assetId = BigInt(params.token.tokenAddress);\n const poolId = BigInt(params.token.poolAddress);\n const pool = this.getPool(poolId);\n\n const composer = this.algorand.newGroup();\n composer.addAppCallMethodCall(\n await pool.params.claimRewards({\n args: [],\n sender: userAccount,\n extraFee: feeForInner(1),\n assetReferences: [assetId],\n })\n );\n let { transactions } = await composer.buildTransactions();\n transactions = assignGroupID(transactions);\n return encodeTxs(...transactions);\n }\n\n async buildRawTransactionDeposit(params: LiquidityPoolsParamsWithAmount): Promise<RawTransaction> {\n const userAccount = params.accountAddress;\n const amount = BigInt(params.amount);\n const assetId = BigInt(params.token.tokenAddress);\n const poolId = BigInt(params.token.poolAddress);\n const pool = this.getPool(poolId);\n\n const isOptedIn = await checkAppOptIn(poolId, userAccount, this.algorand);\n\n const onComplete: OnApplicationComplete.OptInOC | OnApplicationComplete.NoOpOC = isOptedIn\n ? OnApplicationComplete.NoOpOC\n : OnApplicationComplete.OptInOC;\n\n const composer = this.algorand.newGroup();\n\n const assetTransfer = await this.algorand.createTransaction.assetTransfer({\n assetId: assetId,\n amount: amount,\n sender: userAccount,\n receiver: pool.appAddress,\n });\n composer.addAppCallMethodCall(\n await pool.params.deposit({\n args: { assetTransferRef: assetTransfer },\n sender: userAccount,\n onComplete: onComplete,\n extraFee: feeForInner(5),\n })\n );\n\n let { transactions } = await composer.buildTransactions();\n transactions = assignGroupID(transactions);\n return encodeTxs(...transactions);\n }\n\n async buildRawTransactionWithdraw(params: LiquidityPoolsParamsWithAmount): Promise<RawTransaction> {\n const userAccount = params.accountAddress;\n const amount = BigInt(params.amount);\n const assetId = BigInt(params.token.tokenAddress);\n const poolId = BigInt(params.token.poolAddress);\n const pool = this.getPool(poolId);\n\n const composer = this.algorand.newGroup();\n composer.addAppCallMethodCall(\n await pool.params.withdraw({\n args: { amountLp: amount },\n sender: userAccount,\n assetReferences: [assetId],\n extraFee: feeForInner(7),\n })\n );\n\n let { transactions } = await composer.buildTransactions();\n transactions = assignGroupID(transactions);\n return encodeTxs(...transactions);\n }\n\n async getPoolInfoFromChain(token: TokenWithChainDetails): Promise<PoolInfo> {\n const pool = this.getPool(BigInt(token.poolAddress));\n const all = await pool.state.global.getAll();\n const aValue = all.a?.toString();\n const dValue = all.d?.toString();\n const tokenBalance = all.tokenBalance?.toString();\n const vUsdBalance = all.vUsdBalance?.toString();\n const totalLpAmount = all.totalSupply?.toString();\n const accRewardPerShareP = bytesToBigInt(all.accRewardPerShareP?.asByteArray() ?? Uint8Array.from([])).toString();\n if (aValue && dValue && tokenBalance && vUsdBalance && totalLpAmount && accRewardPerShareP) {\n const imbalance = calculatePoolInfoImbalance({ tokenBalance, vUsdBalance });\n return {\n aValue,\n dValue,\n tokenBalance,\n vUsdBalance,\n totalLpAmount,\n accRewardPerShareP,\n p: this.P,\n imbalance,\n };\n }\n throw new SdkError(\"Unable to pool info from chain\");\n }\n\n async getUserBalanceInfo(accountAddress: string, token: TokenWithChainDetails): Promise<UserBalanceInfo> {\n const appId = BigInt(token.poolAddress);\n const pool = this.getPool(appId);\n try {\n const { balance, userRewardDebt } = await pool.state.local(accountAddress).getAll();\n if (balance !== undefined && userRewardDebt !== undefined) {\n return new UserBalance({\n lpAmount: balance.toString(),\n rewardDebt: userRewardDebt.toString(),\n });\n }\n } catch (ignoreError) {\n const info = await this.algorand.account.getInformation(accountAddress);\n const localStates = info.appsLocalState;\n if (localStates) {\n const isOptedIn = localStates.find(({ id: id }) => id === appId);\n if (!isOptedIn) {\n return new UserBalance({ lpAmount: \"0\", rewardDebt: \"0\" });\n }\n }\n }\n throw new SdkError(\"Unable to get user balance\");\n }\n\n private getPool(appId: bigint): PoolClient {\n return this.algorand.client.getTypedAppClientById(PoolClient, { appId });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/liquidity-pool/alg/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EACL,gBAAgB,EAGhB,WAAW,GAEZ,MAAM,WAAW,CAAC;AAEnB;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAKzC;IACA;IALT,SAAS,GAAkB,SAAS,CAAC,GAAG,CAAC;IACjC,CAAC,GAAG,EAAE,CAAC;IAEf,YACS,QAAwB,EACxB,GAAwB;QAE/B,KAAK,EAAE,CAAC;QAHD,aAAQ,GAAR,QAAQ,CAAgB;QACxB,QAAG,GAAH,GAAG,CAAqB;QAG/B,QAAQ,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAC,MAA4B;QAChE,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC1C,QAAQ,CAAC,oBAAoB,CAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC7B,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;YACxB,eAAe,EAAE,CAAC,OAAO,CAAC;SAC3B,CAAC,CACH,CAAC;QACF,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAC1D,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QAC3C,OAAO,SAAS,CAAC,GAAG,YAAY,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,MAAsC;QACrE,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1E,MAAM,UAAU,GAAiE,SAAS;YACxF,CAAC,CAAC,qBAAqB,CAAC,MAAM;YAC9B,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC;QAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAE1C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC;YACxE,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,IAAI,CAAC,UAAU;SAC1B,CAAC,CAAC;QACH,QAAQ,CAAC,oBAAoB,CAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACxB,IAAI,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE;YACzC,MAAM,EAAE,WAAW;YACnB,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;SACzB,CAAC,CACH,CAAC;QAEF,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAC1D,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QAC3C,OAAO,SAAS,CAAC,GAAG,YAAY,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,MAAsC;QACtE,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC1C,QAAQ,CAAC,oBAAoB,CAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACzB,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC1B,MAAM,EAAE,WAAW;YACnB,eAAe,EAAE,CAAC,OAAO,CAAC;YAC1B,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;SACzB,CAAC,CACH,CAAC;QAEF,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAC1D,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QAC3C,OAAO,SAAS,CAAC,GAAG,YAAY,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,KAA4B;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;QAChD,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC;QAClD,MAAM,kBAAkB,GAAG,aAAa,CAAC,GAAG,CAAC,kBAAkB,EAAE,WAAW,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClH,IAAI,MAAM,IAAI,MAAM,IAAI,YAAY,IAAI,WAAW,IAAI,aAAa,IAAI,kBAAkB,EAAE,CAAC;YAC3F,MAAM,SAAS,GAAG,0BAA0B,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YAC5E,OAAO;gBACL,MAAM;gBACN,MAAM;gBACN,YAAY;gBACZ,WAAW;gBACX,aAAa;gBACb,kBAAkB;gBAClB,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,SAAS;aACV,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,gCAAgC,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,cAAsB,EAAE,KAA4B;QAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC;YACpF,IAAI,OAAO,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBAC1D,OAAO,IAAI,WAAW,CAAC;oBACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;oBAC5B,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE;iBACtC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YACxE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;YACxC,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;gBACjE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,4BAA4B,CAAC,CAAC;IACnD,CAAC;IAEO,OAAO,CAAC,KAAa;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;CACF","sourcesContent":["import { AlgorandClient } from \"@algorandfoundation/algokit-utils\";\nimport { assignGroupID, bytesToBigInt, OnApplicationComplete } from \"algosdk\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { SdkError } from \"../../../exceptions\";\nimport { PoolInfo, TokenWithChainDetails } from \"../../../tokens-info\";\nimport { calculatePoolInfoImbalance } from \"../../../utils/calculation\";\nimport { RawTransaction } from \"../../models\";\nimport { PoolClient } from \"../../models/alg/PoolClient\";\nimport { checkAppOptIn, encodeTxs, feeForInner } from \"../../utils/alg\";\nimport {\n ChainPoolService,\n LiquidityPoolsParams,\n LiquidityPoolsParamsWithAmount,\n UserBalance,\n UserBalanceInfo,\n} from \"../models\";\n\n/**\n * @deprecated Do not use.\n */\nexport class AlgPoolService extends ChainPoolService {\n chainType: ChainType.ALG = ChainType.ALG;\n private P = 48;\n\n constructor(\n public algorand: AlgorandClient,\n public api: AllbridgeCoreClient\n ) {\n super();\n algorand.setDefaultValidityWindow(100);\n }\n\n async buildRawTransactionClaimRewards(params: LiquidityPoolsParams): Promise<RawTransaction> {\n const userAccount = params.accountAddress;\n const assetId = BigInt(params.token.tokenAddress);\n const poolId = BigInt(params.token.poolAddress);\n const pool = this.getPool(poolId);\n\n const composer = this.algorand.newGroup();\n composer.addAppCallMethodCall(\n await pool.params.claimRewards({\n args: [],\n sender: userAccount,\n extraFee: feeForInner(1),\n assetReferences: [assetId],\n })\n );\n let { transactions } = await composer.buildTransactions();\n transactions = assignGroupID(transactions);\n return encodeTxs(...transactions);\n }\n\n async buildRawTransactionDeposit(params: LiquidityPoolsParamsWithAmount): Promise<RawTransaction> {\n const userAccount = params.accountAddress;\n const amount = BigInt(params.amount);\n const assetId = BigInt(params.token.tokenAddress);\n const poolId = BigInt(params.token.poolAddress);\n const pool = this.getPool(poolId);\n\n const isOptedIn = await checkAppOptIn(poolId, userAccount, this.algorand);\n\n const onComplete: OnApplicationComplete.OptInOC | OnApplicationComplete.NoOpOC = isOptedIn\n ? OnApplicationComplete.NoOpOC\n : OnApplicationComplete.OptInOC;\n\n const composer = this.algorand.newGroup();\n\n const assetTransfer = await this.algorand.createTransaction.assetTransfer({\n assetId: assetId,\n amount: amount,\n sender: userAccount,\n receiver: pool.appAddress,\n });\n composer.addAppCallMethodCall(\n await pool.params.deposit({\n args: { assetTransferRef: assetTransfer },\n sender: userAccount,\n onComplete: onComplete,\n extraFee: feeForInner(5),\n })\n );\n\n let { transactions } = await composer.buildTransactions();\n transactions = assignGroupID(transactions);\n return encodeTxs(...transactions);\n }\n\n async buildRawTransactionWithdraw(params: LiquidityPoolsParamsWithAmount): Promise<RawTransaction> {\n const userAccount = params.accountAddress;\n const amount = BigInt(params.amount);\n const assetId = BigInt(params.token.tokenAddress);\n const poolId = BigInt(params.token.poolAddress);\n const pool = this.getPool(poolId);\n\n const composer = this.algorand.newGroup();\n composer.addAppCallMethodCall(\n await pool.params.withdraw({\n args: { amountLp: amount },\n sender: userAccount,\n assetReferences: [assetId],\n extraFee: feeForInner(7),\n })\n );\n\n let { transactions } = await composer.buildTransactions();\n transactions = assignGroupID(transactions);\n return encodeTxs(...transactions);\n }\n\n async getPoolInfoFromChain(token: TokenWithChainDetails): Promise<PoolInfo> {\n const pool = this.getPool(BigInt(token.poolAddress));\n const all = await pool.state.global.getAll();\n const aValue = all.a?.toString();\n const dValue = all.d?.toString();\n const tokenBalance = all.tokenBalance?.toString();\n const vUsdBalance = all.vUsdBalance?.toString();\n const totalLpAmount = all.totalSupply?.toString();\n const accRewardPerShareP = bytesToBigInt(all.accRewardPerShareP?.asByteArray() ?? Uint8Array.from([])).toString();\n if (aValue && dValue && tokenBalance && vUsdBalance && totalLpAmount && accRewardPerShareP) {\n const imbalance = calculatePoolInfoImbalance({ tokenBalance, vUsdBalance });\n return {\n aValue,\n dValue,\n tokenBalance,\n vUsdBalance,\n totalLpAmount,\n accRewardPerShareP,\n p: this.P,\n imbalance,\n };\n }\n throw new SdkError(\"Unable to pool info from chain\");\n }\n\n async getUserBalanceInfo(accountAddress: string, token: TokenWithChainDetails): Promise<UserBalanceInfo> {\n const appId = BigInt(token.poolAddress);\n const pool = this.getPool(appId);\n try {\n const { balance, userRewardDebt } = await pool.state.local(accountAddress).getAll();\n if (balance !== undefined && userRewardDebt !== undefined) {\n return new UserBalance({\n lpAmount: balance.toString(),\n rewardDebt: userRewardDebt.toString(),\n });\n }\n } catch (ignoreError) {\n const info = await this.algorand.account.getInformation(accountAddress);\n const localStates = info.appsLocalState;\n if (localStates) {\n const isOptedIn = localStates.find(({ id: id }) => id === appId);\n if (!isOptedIn) {\n return new UserBalance({ lpAmount: \"0\", rewardDebt: \"0\" });\n }\n }\n }\n throw new SdkError(\"Unable to get user balance\");\n }\n\n private getPool(appId: bigint): PoolClient {\n return this.algorand.client.getTypedAppClientById(PoolClient, { appId });\n }\n}\n"]}
|
|
@@ -3,6 +3,9 @@ import { AllbridgeCoreClient } from "../../../client/core-api/core-client-base";
|
|
|
3
3
|
import { PoolInfo, TokenWithChainDetails } from "../../../tokens-info";
|
|
4
4
|
import { EssentialWeb3, RawTransaction } from "../../models";
|
|
5
5
|
import { ChainPoolService, LiquidityPoolsParams, LiquidityPoolsParamsWithAmount, UserBalanceInfo } from "../models";
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated Do not use.
|
|
8
|
+
*/
|
|
6
9
|
export declare class EvmPoolService extends ChainPoolService {
|
|
7
10
|
web3: EssentialWeb3;
|
|
8
11
|
api: AllbridgeCoreClient;
|
|
@@ -4,6 +4,9 @@ import { calculatePoolInfoImbalance } from "../../../utils/calculation";
|
|
|
4
4
|
import { promiseWithTimeout, promiseWithTimeoutAndRetries } from "../../../utils/utils";
|
|
5
5
|
import Pool from "../../models/abi/Pool";
|
|
6
6
|
import { ChainPoolService, UserBalance, } from "../models";
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated Do not use.
|
|
9
|
+
*/
|
|
7
10
|
export class EvmPoolService extends ChainPoolService {
|
|
8
11
|
web3;
|
|
9
12
|
api;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/liquidity-pool/evm/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Contract, Web3 } from \"web3\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { PoolInfo, TokenWithChainDetails } from \"../../../tokens-info\";\nimport { calculatePoolInfoImbalance } from \"../../../utils/calculation\";\nimport { promiseWithTimeout, promiseWithTimeoutAndRetries } from \"../../../utils/utils\";\nimport { EssentialWeb3, RawTransaction } from \"../../models\";\nimport Pool from \"../../models/abi/Pool\";\nimport {\n ChainPoolService,\n LiquidityPoolsParams,\n LiquidityPoolsParamsWithAmount,\n UserBalance,\n UserBalanceInfo,\n} from \"../models\";\n\nexport class EvmPoolService extends ChainPoolService {\n chainType: ChainType.EVM = ChainType.EVM;\n private P = 52;\n\n constructor(\n public web3: EssentialWeb3,\n public api: AllbridgeCoreClient\n ) {\n super();\n }\n\n async getUserBalanceInfo(accountAddress: string, token: TokenWithChainDetails): Promise<UserBalanceInfo> {\n let userBalanceInfo;\n try {\n userBalanceInfo = await promiseWithTimeout(\n this.getUserBalanceInfoByBatch(accountAddress, token),\n `Cannot get UserBalanceInfo for ${token.name} on ${token.chainSymbol}`,\n 5000\n );\n } catch (ignoreError) {\n userBalanceInfo = await promiseWithTimeoutAndRetries(\n () => this.getUserBalanceInfoPerProperty(accountAddress, token),\n `Cannot get UserBalanceInfo for ${token.name} on ${token.chainSymbol}`,\n 5,\n 2000\n );\n }\n return userBalanceInfo;\n }\n\n async getPoolInfoFromChain(token: TokenWithChainDetails): Promise<PoolInfo> {\n let poolInfo;\n try {\n poolInfo = await promiseWithTimeout(\n this.getPoolInfoByBatch(token),\n `Cannot get PoolInfo for ${token.name} on ${token.chainSymbol}`,\n 5000\n );\n } catch (ignoreError) {\n poolInfo = await promiseWithTimeoutAndRetries(\n () => this.getPoolInfoPerProperty(token),\n `Cannot get PoolInfo for ${token.name} on ${token.chainSymbol}`,\n 5,\n 2000\n );\n }\n return poolInfo;\n }\n\n private async getUserBalanceInfoByBatch(\n accountAddress: string,\n token: TokenWithChainDetails\n ): Promise<UserBalanceInfo> {\n const batch = new this.web3.eth.BatchRequest();\n const poolContract = this.getPoolContract(token.poolAddress);\n\n const userRewardDebtAbi = poolContract.methods.userRewardDebt(accountAddress).encodeABI();\n const balanceOfAbi = poolContract.methods.balanceOf(accountAddress).encodeABI();\n\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: userRewardDebtAbi }, \"latest\"],\n });\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: balanceOfAbi }, \"latest\"],\n });\n\n const [rewardDebtResult, lpAmountResult] = await batch.execute();\n\n if (rewardDebtResult && lpAmountResult && !rewardDebtResult.error && !lpAmountResult.error) {\n return new UserBalance({\n lpAmount: Web3.utils.toBigInt(lpAmountResult.result).toString(),\n rewardDebt: Web3.utils.toBigInt(rewardDebtResult.result).toString(),\n });\n }\n throw new Error(\"Batched failed\");\n }\n\n private async getUserBalanceInfoPerProperty(\n accountAddress: string,\n token: TokenWithChainDetails\n ): Promise<UserBalanceInfo> {\n const rewardDebt = (\n await this.getPoolContract(token.poolAddress).methods.userRewardDebt(accountAddress).call()\n ).toString();\n const lpAmount = (\n await this.getPoolContract(token.poolAddress).methods.balanceOf(accountAddress).call()\n ).toString();\n return new UserBalance({ lpAmount, rewardDebt });\n }\n\n private async getPoolInfoByBatch(token: TokenWithChainDetails): Promise<PoolInfo> {\n const batch = new this.web3.eth.BatchRequest();\n const poolContract = this.getPoolContract(token.poolAddress);\n\n const aAbi = poolContract.methods.a().encodeABI();\n const dAbi = poolContract.methods.d().encodeABI();\n const tokenBalanceAbi = poolContract.methods.tokenBalance().encodeABI();\n const vUsdBalanceAbi = poolContract.methods.vUsdBalance().encodeABI();\n const totalSupplyAbi = poolContract.methods.totalSupply().encodeABI();\n const accRewardPerSharePAbi = poolContract.methods.accRewardPerShareP().encodeABI();\n\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: aAbi }, \"latest\"],\n });\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: dAbi }, \"latest\"],\n });\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: tokenBalanceAbi }, \"latest\"],\n });\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: vUsdBalanceAbi }, \"latest\"],\n });\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: totalSupplyAbi }, \"latest\"],\n });\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: accRewardPerSharePAbi }, \"latest\"],\n });\n\n const [aResult, dResult, tokenBalanceResult, vUsdBalanceResult, totalSupplyResult, accRewardPerSharePResult] =\n await batch.execute();\n\n if (\n aResult &&\n dResult &&\n tokenBalanceResult &&\n vUsdBalanceResult &&\n totalSupplyResult &&\n accRewardPerSharePResult &&\n !aResult.error &&\n !dResult.error &&\n !tokenBalanceResult.error &&\n !vUsdBalanceResult.error &&\n !totalSupplyResult.error &&\n !accRewardPerSharePResult.error\n ) {\n const tokenBalanceStr = Web3.utils.toBigInt(tokenBalanceResult.result).toString();\n const vUsdBalanceStr = Web3.utils.toBigInt(vUsdBalanceResult.result).toString();\n const imbalance = calculatePoolInfoImbalance({ tokenBalance: tokenBalanceStr, vUsdBalance: vUsdBalanceStr });\n return {\n aValue: Web3.utils.toBigInt(aResult.result).toString(),\n dValue: Web3.utils.toBigInt(dResult.result).toString(),\n tokenBalance: tokenBalanceStr,\n vUsdBalance: vUsdBalanceStr,\n totalLpAmount: Web3.utils.toBigInt(totalSupplyResult.result).toString(),\n accRewardPerShareP: Web3.utils.toBigInt(accRewardPerSharePResult.result).toString(),\n p: this.P,\n imbalance,\n };\n }\n throw new Error(\"Batched failed\");\n }\n\n private async getPoolInfoPerProperty(token: TokenWithChainDetails): Promise<PoolInfo> {\n const poolContract = this.getPoolContract(token.poolAddress);\n\n const aValue = (await poolContract.methods.a().call()).toString();\n const dValue = (await poolContract.methods.d().call()).toString();\n const tokenBalance = (await poolContract.methods.tokenBalance().call()).toString();\n const vUsdBalance = (await poolContract.methods.vUsdBalance().call()).toString();\n const totalLpAmount = (await poolContract.methods.totalSupply().call()).toString();\n const accRewardPerShareP = (await poolContract.methods.accRewardPerShareP().call()).toString();\n\n const imbalance = calculatePoolInfoImbalance({ tokenBalance, vUsdBalance });\n\n return {\n aValue,\n dValue,\n tokenBalance,\n vUsdBalance,\n totalLpAmount,\n accRewardPerShareP,\n p: this.P,\n imbalance,\n };\n }\n\n async buildRawTransactionDeposit(params: LiquidityPoolsParamsWithAmount): Promise<RawTransaction> {\n return Promise.resolve({\n ...this.buildTxParams(params),\n data: this.getPoolContract(params.token.poolAddress).methods.deposit(params.amount).encodeABI(),\n });\n }\n\n async buildRawTransactionWithdraw(params: LiquidityPoolsParamsWithAmount): Promise<RawTransaction> {\n return Promise.resolve({\n ...this.buildTxParams(params),\n data: this.getPoolContract(params.token.poolAddress).methods.withdraw(params.amount).encodeABI(),\n });\n }\n\n async buildRawTransactionClaimRewards(params: LiquidityPoolsParams): Promise<RawTransaction> {\n return Promise.resolve({\n ...this.buildTxParams(params),\n data: this.getPoolContract(params.token.poolAddress).methods.claimRewards().encodeABI(),\n });\n }\n\n buildTxParams(params: LiquidityPoolsParams) {\n return {\n from: params.accountAddress,\n to: params.token.poolAddress,\n value: \"0\",\n };\n }\n\n private getPoolContract(contractAddress: string) {\n return new this.web3.eth.Contract(Pool.abi, contractAddress) as Contract<typeof Pool.abi>;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/liquidity-pool/evm/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Contract, Web3 } from \"web3\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { PoolInfo, TokenWithChainDetails } from \"../../../tokens-info\";\nimport { calculatePoolInfoImbalance } from \"../../../utils/calculation\";\nimport { promiseWithTimeout, promiseWithTimeoutAndRetries } from \"../../../utils/utils\";\nimport { EssentialWeb3, RawTransaction } from \"../../models\";\nimport Pool from \"../../models/abi/Pool\";\nimport {\n ChainPoolService,\n LiquidityPoolsParams,\n LiquidityPoolsParamsWithAmount,\n UserBalance,\n UserBalanceInfo,\n} from \"../models\";\n\n/**\n * @deprecated Do not use.\n */\nexport class EvmPoolService extends ChainPoolService {\n chainType: ChainType.EVM = ChainType.EVM;\n private P = 52;\n\n constructor(\n public web3: EssentialWeb3,\n public api: AllbridgeCoreClient\n ) {\n super();\n }\n\n async getUserBalanceInfo(accountAddress: string, token: TokenWithChainDetails): Promise<UserBalanceInfo> {\n let userBalanceInfo;\n try {\n userBalanceInfo = await promiseWithTimeout(\n this.getUserBalanceInfoByBatch(accountAddress, token),\n `Cannot get UserBalanceInfo for ${token.name} on ${token.chainSymbol}`,\n 5000\n );\n } catch (ignoreError) {\n userBalanceInfo = await promiseWithTimeoutAndRetries(\n () => this.getUserBalanceInfoPerProperty(accountAddress, token),\n `Cannot get UserBalanceInfo for ${token.name} on ${token.chainSymbol}`,\n 5,\n 2000\n );\n }\n return userBalanceInfo;\n }\n\n async getPoolInfoFromChain(token: TokenWithChainDetails): Promise<PoolInfo> {\n let poolInfo;\n try {\n poolInfo = await promiseWithTimeout(\n this.getPoolInfoByBatch(token),\n `Cannot get PoolInfo for ${token.name} on ${token.chainSymbol}`,\n 5000\n );\n } catch (ignoreError) {\n poolInfo = await promiseWithTimeoutAndRetries(\n () => this.getPoolInfoPerProperty(token),\n `Cannot get PoolInfo for ${token.name} on ${token.chainSymbol}`,\n 5,\n 2000\n );\n }\n return poolInfo;\n }\n\n private async getUserBalanceInfoByBatch(\n accountAddress: string,\n token: TokenWithChainDetails\n ): Promise<UserBalanceInfo> {\n const batch = new this.web3.eth.BatchRequest();\n const poolContract = this.getPoolContract(token.poolAddress);\n\n const userRewardDebtAbi = poolContract.methods.userRewardDebt(accountAddress).encodeABI();\n const balanceOfAbi = poolContract.methods.balanceOf(accountAddress).encodeABI();\n\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: userRewardDebtAbi }, \"latest\"],\n });\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: balanceOfAbi }, \"latest\"],\n });\n\n const [rewardDebtResult, lpAmountResult] = await batch.execute();\n\n if (rewardDebtResult && lpAmountResult && !rewardDebtResult.error && !lpAmountResult.error) {\n return new UserBalance({\n lpAmount: Web3.utils.toBigInt(lpAmountResult.result).toString(),\n rewardDebt: Web3.utils.toBigInt(rewardDebtResult.result).toString(),\n });\n }\n throw new Error(\"Batched failed\");\n }\n\n private async getUserBalanceInfoPerProperty(\n accountAddress: string,\n token: TokenWithChainDetails\n ): Promise<UserBalanceInfo> {\n const rewardDebt = (\n await this.getPoolContract(token.poolAddress).methods.userRewardDebt(accountAddress).call()\n ).toString();\n const lpAmount = (\n await this.getPoolContract(token.poolAddress).methods.balanceOf(accountAddress).call()\n ).toString();\n return new UserBalance({ lpAmount, rewardDebt });\n }\n\n private async getPoolInfoByBatch(token: TokenWithChainDetails): Promise<PoolInfo> {\n const batch = new this.web3.eth.BatchRequest();\n const poolContract = this.getPoolContract(token.poolAddress);\n\n const aAbi = poolContract.methods.a().encodeABI();\n const dAbi = poolContract.methods.d().encodeABI();\n const tokenBalanceAbi = poolContract.methods.tokenBalance().encodeABI();\n const vUsdBalanceAbi = poolContract.methods.vUsdBalance().encodeABI();\n const totalSupplyAbi = poolContract.methods.totalSupply().encodeABI();\n const accRewardPerSharePAbi = poolContract.methods.accRewardPerShareP().encodeABI();\n\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: aAbi }, \"latest\"],\n });\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: dAbi }, \"latest\"],\n });\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: tokenBalanceAbi }, \"latest\"],\n });\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: vUsdBalanceAbi }, \"latest\"],\n });\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: totalSupplyAbi }, \"latest\"],\n });\n batch.add({\n method: \"eth_call\",\n params: [{ to: token.poolAddress, data: accRewardPerSharePAbi }, \"latest\"],\n });\n\n const [aResult, dResult, tokenBalanceResult, vUsdBalanceResult, totalSupplyResult, accRewardPerSharePResult] =\n await batch.execute();\n\n if (\n aResult &&\n dResult &&\n tokenBalanceResult &&\n vUsdBalanceResult &&\n totalSupplyResult &&\n accRewardPerSharePResult &&\n !aResult.error &&\n !dResult.error &&\n !tokenBalanceResult.error &&\n !vUsdBalanceResult.error &&\n !totalSupplyResult.error &&\n !accRewardPerSharePResult.error\n ) {\n const tokenBalanceStr = Web3.utils.toBigInt(tokenBalanceResult.result).toString();\n const vUsdBalanceStr = Web3.utils.toBigInt(vUsdBalanceResult.result).toString();\n const imbalance = calculatePoolInfoImbalance({ tokenBalance: tokenBalanceStr, vUsdBalance: vUsdBalanceStr });\n return {\n aValue: Web3.utils.toBigInt(aResult.result).toString(),\n dValue: Web3.utils.toBigInt(dResult.result).toString(),\n tokenBalance: tokenBalanceStr,\n vUsdBalance: vUsdBalanceStr,\n totalLpAmount: Web3.utils.toBigInt(totalSupplyResult.result).toString(),\n accRewardPerShareP: Web3.utils.toBigInt(accRewardPerSharePResult.result).toString(),\n p: this.P,\n imbalance,\n };\n }\n throw new Error(\"Batched failed\");\n }\n\n private async getPoolInfoPerProperty(token: TokenWithChainDetails): Promise<PoolInfo> {\n const poolContract = this.getPoolContract(token.poolAddress);\n\n const aValue = (await poolContract.methods.a().call()).toString();\n const dValue = (await poolContract.methods.d().call()).toString();\n const tokenBalance = (await poolContract.methods.tokenBalance().call()).toString();\n const vUsdBalance = (await poolContract.methods.vUsdBalance().call()).toString();\n const totalLpAmount = (await poolContract.methods.totalSupply().call()).toString();\n const accRewardPerShareP = (await poolContract.methods.accRewardPerShareP().call()).toString();\n\n const imbalance = calculatePoolInfoImbalance({ tokenBalance, vUsdBalance });\n\n return {\n aValue,\n dValue,\n tokenBalance,\n vUsdBalance,\n totalLpAmount,\n accRewardPerShareP,\n p: this.P,\n imbalance,\n };\n }\n\n async buildRawTransactionDeposit(params: LiquidityPoolsParamsWithAmount): Promise<RawTransaction> {\n return Promise.resolve({\n ...this.buildTxParams(params),\n data: this.getPoolContract(params.token.poolAddress).methods.deposit(params.amount).encodeABI(),\n });\n }\n\n async buildRawTransactionWithdraw(params: LiquidityPoolsParamsWithAmount): Promise<RawTransaction> {\n return Promise.resolve({\n ...this.buildTxParams(params),\n data: this.getPoolContract(params.token.poolAddress).methods.withdraw(params.amount).encodeABI(),\n });\n }\n\n async buildRawTransactionClaimRewards(params: LiquidityPoolsParams): Promise<RawTransaction> {\n return Promise.resolve({\n ...this.buildTxParams(params),\n data: this.getPoolContract(params.token.poolAddress).methods.claimRewards().encodeABI(),\n });\n }\n\n buildTxParams(params: LiquidityPoolsParams) {\n return {\n from: params.accountAddress,\n to: params.token.poolAddress,\n value: \"0\",\n };\n }\n\n private getPoolContract(contractAddress: string) {\n return new this.web3.eth.Contract(Pool.abi, contractAddress) as Contract<typeof Pool.abi>;\n }\n}\n"]}
|
|
@@ -7,19 +7,25 @@ import { Provider, TransactionResponse } from "../models";
|
|
|
7
7
|
import { TokenService } from "../token";
|
|
8
8
|
import { ApproveParams, ChainPoolService, CheckAllowanceParams, GetAllowanceParams, UserBalanceInfo } from "./models";
|
|
9
9
|
import { RawPoolTransactionBuilder } from "./raw-pool-transaction-builder";
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated Do not use.
|
|
12
|
+
*/
|
|
10
13
|
export interface LiquidityPoolService {
|
|
14
|
+
/** @deprecated Do not use. */
|
|
11
15
|
rawTxBuilder: RawPoolTransactionBuilder;
|
|
12
16
|
/**
|
|
13
17
|
* Get amount of tokens approved for poolInfo
|
|
14
18
|
* @param provider - will be used to access the network
|
|
15
19
|
* @param params See {@link GetAllowanceParams}
|
|
16
20
|
* @returns the amount of approved tokens
|
|
21
|
+
* @deprecated Do not use.
|
|
17
22
|
*/
|
|
18
23
|
getAllowance(provider: Provider, params: GetAllowanceParams): Promise<string>;
|
|
19
24
|
/**
|
|
20
25
|
* Get amount of tokens approved for poolInfo
|
|
21
26
|
* @param params See {@link GetAllowanceParams}
|
|
22
27
|
* @returns the amount of approved tokens
|
|
28
|
+
* @deprecated Do not use.
|
|
23
29
|
*/
|
|
24
30
|
getAllowance(params: GetAllowanceParams): Promise<string>;
|
|
25
31
|
/**
|
|
@@ -27,12 +33,14 @@ export interface LiquidityPoolService {
|
|
|
27
33
|
* @param provider - will be used to access the network
|
|
28
34
|
* @param params See {@link CheckAllowanceParams}
|
|
29
35
|
* @returns true if the amount of approved tokens is enough to make a transfer
|
|
36
|
+
* @deprecated Do not use.
|
|
30
37
|
*/
|
|
31
38
|
checkAllowance(provider: Provider, params: CheckAllowanceParams): Promise<boolean>;
|
|
32
39
|
/**
|
|
33
40
|
* Check if the amount of approved tokens is enough
|
|
34
41
|
* @param params See {@link CheckAllowanceParams}
|
|
35
42
|
* @returns true if the amount of approved tokens is enough to make a transfer
|
|
43
|
+
* @deprecated Do not use.
|
|
36
44
|
*/
|
|
37
45
|
checkAllowance(params: CheckAllowanceParams): Promise<boolean>;
|
|
38
46
|
/**
|
|
@@ -51,6 +59,7 @@ export interface LiquidityPoolService {
|
|
|
51
59
|
* @param token
|
|
52
60
|
* @param provider - will be used to access the network
|
|
53
61
|
* @returns amount
|
|
62
|
+
* @deprecated Do not use.
|
|
54
63
|
*/
|
|
55
64
|
getAmountToBeDeposited(amount: string, token: TokenWithChainDetails, provider?: Provider): Promise<string>;
|
|
56
65
|
/**
|
|
@@ -60,6 +69,7 @@ export interface LiquidityPoolService {
|
|
|
60
69
|
* @param token
|
|
61
70
|
* @param provider - will be used to access the network
|
|
62
71
|
* @returns amount
|
|
72
|
+
* @deprecated Do not use.
|
|
63
73
|
*/
|
|
64
74
|
getAmountToBeWithdrawn(amount: string, accountAddress: string, token: TokenWithChainDetails, provider?: Provider): Promise<string>;
|
|
65
75
|
/**
|
|
@@ -68,6 +78,7 @@ export interface LiquidityPoolService {
|
|
|
68
78
|
* @param token
|
|
69
79
|
* @param provider
|
|
70
80
|
* @returns UserBalanceInfo
|
|
81
|
+
* @deprecated Do not use.
|
|
71
82
|
*/
|
|
72
83
|
getUserBalanceInfo(accountAddress: string, token: TokenWithChainDetails, provider?: Provider): Promise<UserBalanceInfo>;
|
|
73
84
|
/**
|
|
@@ -75,14 +86,19 @@ export interface LiquidityPoolService {
|
|
|
75
86
|
* @param token
|
|
76
87
|
* @param provider - will be used to access the network
|
|
77
88
|
* @returns poolInfo
|
|
89
|
+
* @deprecated Do not use.
|
|
78
90
|
*/
|
|
79
91
|
getPoolInfoFromChain(token: TokenWithChainDetails, provider?: Provider): Promise<Required<PoolInfo>>;
|
|
80
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* @deprecated Do not use.
|
|
95
|
+
*/
|
|
81
96
|
export declare class DefaultLiquidityPoolService implements LiquidityPoolService {
|
|
82
97
|
private api;
|
|
83
98
|
private nodeRpcUrlsConfig;
|
|
84
99
|
private params;
|
|
85
100
|
private tokenService;
|
|
101
|
+
/** @deprecated Do not use. */
|
|
86
102
|
rawTxBuilder: RawPoolTransactionBuilder;
|
|
87
103
|
private cache;
|
|
88
104
|
constructor(api: AllbridgeCoreClientFiltered, nodeRpcUrlsConfig: NodeRpcUrlsConfig, params: AllbridgeCoreSdkOptions, tokenService: TokenService);
|
|
@@ -94,4 +110,7 @@ export declare class DefaultLiquidityPoolService implements LiquidityPoolService
|
|
|
94
110
|
getUserBalanceInfo(accountAddress: string, token: TokenWithChainDetails, provider?: Provider): Promise<UserBalanceInfo>;
|
|
95
111
|
getPoolInfoFromChain(token: TokenWithChainDetails, provider?: Provider): Promise<PoolInfo>;
|
|
96
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* @deprecated Do not use.
|
|
115
|
+
*/
|
|
97
116
|
export declare function getChainPoolService(chainSymbol: string, api: AllbridgeCoreClient, nodeRpcUrlsConfig: NodeRpcUrlsConfig, params: AllbridgeCoreSdkOptions, provider?: Provider): ChainPoolService;
|
|
@@ -17,11 +17,15 @@ import { SrbPoolService } from "./srb";
|
|
|
17
17
|
import { StxPoolService } from "./stx";
|
|
18
18
|
import { SuiPoolService } from "./sui";
|
|
19
19
|
import { TronPoolService } from "./trx";
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated Do not use.
|
|
22
|
+
*/
|
|
20
23
|
export class DefaultLiquidityPoolService {
|
|
21
24
|
api;
|
|
22
25
|
nodeRpcUrlsConfig;
|
|
23
26
|
params;
|
|
24
27
|
tokenService;
|
|
28
|
+
/** @deprecated Do not use. */
|
|
25
29
|
rawTxBuilder;
|
|
26
30
|
cache;
|
|
27
31
|
constructor(api, nodeRpcUrlsConfig, params, tokenService) {
|
|
@@ -94,6 +98,9 @@ export class DefaultLiquidityPoolService {
|
|
|
94
98
|
}
|
|
95
99
|
}
|
|
96
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* @deprecated Do not use.
|
|
103
|
+
*/
|
|
97
104
|
export function getChainPoolService(chainSymbol, api, nodeRpcUrlsConfig, params, provider) {
|
|
98
105
|
switch (Chains.getChainProperty(chainSymbol).chainType) {
|
|
99
106
|
case ChainType.EVM: {
|