@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.
Files changed (135) hide show
  1. package/dist/browser/index.js +2 -2
  2. package/dist/browser/index.js.map +4 -4
  3. package/dist/cjs/index.js +2 -2
  4. package/dist/cjs/index.js.map +4 -4
  5. package/dist/esm/index.js +2 -2
  6. package/dist/esm/index.js.map +4 -4
  7. package/dist/src/client/core-api/api-client-caching.d.ts +2 -0
  8. package/dist/src/client/core-api/api-client-caching.js +2 -0
  9. package/dist/src/client/core-api/api-client-caching.js.map +1 -1
  10. package/dist/src/client/core-api/api-client.d.ts +5 -0
  11. package/dist/src/client/core-api/api-client.js +2 -0
  12. package/dist/src/client/core-api/api-client.js.map +1 -1
  13. package/dist/src/client/core-api/core-api-mapper.d.ts +15 -0
  14. package/dist/src/client/core-api/core-api-mapper.js +15 -0
  15. package/dist/src/client/core-api/core-api-mapper.js.map +1 -1
  16. package/dist/src/client/core-api/core-api.model.d.ts +30 -0
  17. package/dist/src/client/core-api/core-api.model.js +4 -0
  18. package/dist/src/client/core-api/core-api.model.js.map +1 -1
  19. package/dist/src/client/core-api/core-client-base.d.ts +9 -0
  20. package/dist/src/client/core-api/core-client-base.js +3 -0
  21. package/dist/src/client/core-api/core-client-base.js.map +1 -1
  22. package/dist/src/client/core-api/core-client-filtered.d.ts +16 -0
  23. package/dist/src/client/core-api/core-client-filtered.js +4 -0
  24. package/dist/src/client/core-api/core-client-filtered.js.map +1 -1
  25. package/dist/src/client/core-api/core-client-pool-info-caching.d.ts +13 -0
  26. package/dist/src/client/core-api/core-client-pool-info-caching.js +7 -0
  27. package/dist/src/client/core-api/core-client-pool-info-caching.js.map +1 -1
  28. package/dist/src/exceptions/exceptions.d.ts +4 -0
  29. package/dist/src/exceptions/exceptions.js +4 -0
  30. package/dist/src/exceptions/exceptions.js.map +1 -1
  31. package/dist/src/index.d.ts +46 -28
  32. package/dist/src/index.js +17 -86
  33. package/dist/src/index.js.map +1 -1
  34. package/dist/src/models/index.d.ts +2 -1
  35. package/dist/src/models/index.js.map +1 -1
  36. package/dist/src/services/bridge/alg/index.d.ts +1 -0
  37. package/dist/src/services/bridge/alg/index.js +1 -0
  38. package/dist/src/services/bridge/alg/index.js.map +1 -1
  39. package/dist/src/services/bridge/evm/index.d.ts +2 -0
  40. package/dist/src/services/bridge/evm/index.js +2 -0
  41. package/dist/src/services/bridge/evm/index.js.map +1 -1
  42. package/dist/src/services/bridge/index.d.ts +4 -2
  43. package/dist/src/services/bridge/index.js +7 -45
  44. package/dist/src/services/bridge/index.js.map +1 -1
  45. package/dist/src/services/bridge/models/bridge.d.ts +1 -0
  46. package/dist/src/services/bridge/models/bridge.js.map +1 -1
  47. package/dist/src/services/bridge/models/bridge.model.d.ts +14 -6
  48. package/dist/src/services/bridge/models/bridge.model.js.map +1 -1
  49. package/dist/src/services/bridge/raw-bridge-transaction-builder.d.ts +6 -0
  50. package/dist/src/services/bridge/raw-bridge-transaction-builder.js +3 -2
  51. package/dist/src/services/bridge/raw-bridge-transaction-builder.js.map +1 -1
  52. package/dist/src/services/bridge/sol/bridge-tx-service.d.ts +2 -0
  53. package/dist/src/services/bridge/sol/bridge-tx-service.js +1 -0
  54. package/dist/src/services/bridge/sol/bridge-tx-service.js.map +1 -1
  55. package/dist/src/services/bridge/sol/index.d.ts +2 -0
  56. package/dist/src/services/bridge/sol/index.js +1 -0
  57. package/dist/src/services/bridge/sol/index.js.map +1 -1
  58. package/dist/src/services/bridge/spender.d.ts +4 -0
  59. package/dist/src/services/bridge/spender.js +45 -0
  60. package/dist/src/services/bridge/spender.js.map +1 -0
  61. package/dist/src/services/bridge/srb/index.d.ts +2 -0
  62. package/dist/src/services/bridge/srb/index.js +2 -0
  63. package/dist/src/services/bridge/srb/index.js.map +1 -1
  64. package/dist/src/services/bridge/stx/index.d.ts +1 -0
  65. package/dist/src/services/bridge/stx/index.js +1 -0
  66. package/dist/src/services/bridge/stx/index.js.map +1 -1
  67. package/dist/src/services/bridge/sui/index.d.ts +1 -0
  68. package/dist/src/services/bridge/sui/index.js +1 -0
  69. package/dist/src/services/bridge/sui/index.js.map +1 -1
  70. package/dist/src/services/bridge/trx/index.d.ts +2 -0
  71. package/dist/src/services/bridge/trx/index.js +2 -0
  72. package/dist/src/services/bridge/trx/index.js.map +1 -1
  73. package/dist/src/services/bridge/utils.d.ts +4 -0
  74. package/dist/src/services/bridge/utils.js +1 -0
  75. package/dist/src/services/bridge/utils.js.map +1 -1
  76. package/dist/src/services/index.d.ts +25 -2
  77. package/dist/src/services/index.js +17 -2
  78. package/dist/src/services/index.js.map +1 -1
  79. package/dist/src/services/liquidity-pool/alg/index.d.ts +3 -0
  80. package/dist/src/services/liquidity-pool/alg/index.js +3 -0
  81. package/dist/src/services/liquidity-pool/alg/index.js.map +1 -1
  82. package/dist/src/services/liquidity-pool/evm/index.d.ts +3 -0
  83. package/dist/src/services/liquidity-pool/evm/index.js +3 -0
  84. package/dist/src/services/liquidity-pool/evm/index.js.map +1 -1
  85. package/dist/src/services/liquidity-pool/index.d.ts +19 -0
  86. package/dist/src/services/liquidity-pool/index.js +7 -0
  87. package/dist/src/services/liquidity-pool/index.js.map +1 -1
  88. package/dist/src/services/liquidity-pool/models/pool.d.ts +8 -0
  89. package/dist/src/services/liquidity-pool/models/pool.js +3 -0
  90. package/dist/src/services/liquidity-pool/models/pool.js.map +1 -1
  91. package/dist/src/services/liquidity-pool/models/pool.model.d.ts +27 -0
  92. package/dist/src/services/liquidity-pool/models/pool.model.js +3 -0
  93. package/dist/src/services/liquidity-pool/models/pool.model.js.map +1 -1
  94. package/dist/src/services/liquidity-pool/raw-pool-transaction-builder.d.ts +11 -0
  95. package/dist/src/services/liquidity-pool/raw-pool-transaction-builder.js +3 -0
  96. package/dist/src/services/liquidity-pool/raw-pool-transaction-builder.js.map +1 -1
  97. package/dist/src/services/liquidity-pool/sol/index.d.ts +3 -0
  98. package/dist/src/services/liquidity-pool/sol/index.js +3 -0
  99. package/dist/src/services/liquidity-pool/sol/index.js.map +1 -1
  100. package/dist/src/services/liquidity-pool/srb/index.d.ts +3 -0
  101. package/dist/src/services/liquidity-pool/srb/index.js +3 -0
  102. package/dist/src/services/liquidity-pool/srb/index.js.map +1 -1
  103. package/dist/src/services/liquidity-pool/stx/index.d.ts +3 -0
  104. package/dist/src/services/liquidity-pool/stx/index.js +3 -0
  105. package/dist/src/services/liquidity-pool/stx/index.js.map +1 -1
  106. package/dist/src/services/liquidity-pool/sui/index.d.ts +3 -0
  107. package/dist/src/services/liquidity-pool/sui/index.js +3 -0
  108. package/dist/src/services/liquidity-pool/sui/index.js.map +1 -1
  109. package/dist/src/services/liquidity-pool/trx/index.d.ts +3 -0
  110. package/dist/src/services/liquidity-pool/trx/index.js +3 -0
  111. package/dist/src/services/liquidity-pool/trx/index.js.map +1 -1
  112. package/dist/src/services/utils/calculation/index.d.ts +6 -0
  113. package/dist/src/services/utils/calculation/index.js +6 -0
  114. package/dist/src/services/utils/calculation/index.js.map +1 -1
  115. package/dist/src/services/utils/sol/index.d.ts +6 -0
  116. package/dist/src/services/utils/sol/index.js +6 -0
  117. package/dist/src/services/utils/sol/index.js.map +1 -1
  118. package/dist/src/tokens-info/tokens-info.model.d.ts +24 -0
  119. package/dist/src/tokens-info/tokens-info.model.js.map +1 -1
  120. package/dist/src/utils/calculation/index.d.ts +26 -0
  121. package/dist/src/utils/calculation/index.js +26 -0
  122. package/dist/src/utils/calculation/index.js.map +1 -1
  123. package/dist/src/utils/calculation/swap-and-bridge-details.d.ts +9 -0
  124. package/dist/src/utils/calculation/swap-and-bridge-details.js +3 -0
  125. package/dist/src/utils/calculation/swap-and-bridge-details.js.map +1 -1
  126. package/dist/src/utils/calculation/swap-and-bridge-fee-calc.d.ts +18 -0
  127. package/dist/src/utils/calculation/swap-and-bridge-fee-calc.js +6 -0
  128. package/dist/src/utils/calculation/swap-and-bridge-fee-calc.js.map +1 -1
  129. package/dist/src/utils/utils.d.ts +3 -0
  130. package/dist/src/utils/utils.js +3 -0
  131. package/dist/src/utils/utils.js.map +1 -1
  132. package/dist/src/version.d.ts +1 -1
  133. package/dist/src/version.js +1 -1
  134. package/dist/src/version.js.map +1 -1
  135. 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":"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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\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: {