@allbridge/bridge-core-sdk 3.29.2-alpha.1 → 3.30.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 (48) 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/core-api-mapper.js +2 -0
  8. package/dist/src/client/core-api/core-api-mapper.js.map +1 -1
  9. package/dist/src/client/core-api/core-api.model.d.ts +13 -2
  10. package/dist/src/client/core-api/core-api.model.js +2 -0
  11. package/dist/src/client/core-api/core-api.model.js.map +1 -1
  12. package/dist/src/index.js +4 -0
  13. package/dist/src/index.js.map +1 -1
  14. package/dist/src/services/bridge/evm/index.d.ts +2 -0
  15. package/dist/src/services/bridge/evm/index.js +32 -0
  16. package/dist/src/services/bridge/evm/index.js.map +1 -1
  17. package/dist/src/services/bridge/index.js +7 -0
  18. package/dist/src/services/bridge/index.js.map +1 -1
  19. package/dist/src/services/bridge/sol/bridge-tx-service.js +2 -0
  20. package/dist/src/services/bridge/sol/bridge-tx-service.js.map +1 -1
  21. package/dist/src/services/bridge/sol/jupiter-service.js +1 -1
  22. package/dist/src/services/bridge/sol/jupiter-service.js.map +1 -1
  23. package/dist/src/services/bridge/sol/payer-with-token-service.js +2 -0
  24. package/dist/src/services/bridge/sol/payer-with-token-service.js.map +1 -1
  25. package/dist/src/services/bridge/stx/index.js +24 -16
  26. package/dist/src/services/bridge/stx/index.js.map +1 -1
  27. package/dist/src/services/bridge/sui/index.js +2 -0
  28. package/dist/src/services/bridge/sui/index.js.map +1 -1
  29. package/dist/src/services/bridge/trx/index.js +2 -0
  30. package/dist/src/services/bridge/trx/index.js.map +1 -1
  31. package/dist/src/services/bridge/utils.d.ts +1 -0
  32. package/dist/src/services/bridge/utils.js +10 -3
  33. package/dist/src/services/bridge/utils.js.map +1 -1
  34. package/dist/src/services/index.d.ts +3 -0
  35. package/dist/src/services/index.js +40 -0
  36. package/dist/src/services/index.js.map +1 -1
  37. package/dist/src/services/models/abi/XReserveBridge.d.ts +246 -0
  38. package/dist/src/services/models/abi/XReserveBridge.js +318 -0
  39. package/dist/src/services/models/abi/XReserveBridge.js.map +1 -0
  40. package/dist/src/services/models/stx/clarigen-types.d.ts +72 -0
  41. package/dist/src/services/models/stx/clarigen-types.js +226 -0
  42. package/dist/src/services/models/stx/clarigen-types.js.map +1 -1
  43. package/dist/src/tokens-info/tokens-info.model.d.ts +11 -0
  44. package/dist/src/tokens-info/tokens-info.model.js.map +1 -1
  45. package/dist/src/version.d.ts +1 -1
  46. package/dist/src/version.js +1 -1
  47. package/dist/src/version.js.map +1 -1
  48. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/services/bridge/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\nimport { ContractIdString, createAddress, parseContractId } from \"@stacks/transactions\";\nimport { Address } from \"@stellar/stellar-sdk\";\nimport algosdk, { Address as AlgoAddress } from \"algosdk\";\nimport { Big, BigSource } from \"big.js\";\nimport randomBytes from \"randombytes\";\nimport { utils as TronWebUtils } from \"tronweb\";\nimport { Web3 } from \"web3\";\nimport { Chains } from \"../../chains\";\nimport { Messenger } from \"../../client/core-api/core-api.model\";\nimport { AllbridgeCoreClient } from \"../../client/core-api/core-client-base\";\nimport {\n AmountNotEnoughError,\n CCTPDoesNotSupportedError,\n ExtraGasMaxLimitExceededError,\n InvalidGasFeePaymentOptionError,\n OFTDoesNotSupportedError,\n SdkError,\n} from \"../../exceptions\";\nimport {\n AmountFormat,\n ChainType,\n ExtraGasMaxLimitResponse,\n ExtraGasMaxLimits,\n FeePaymentMethod,\n GasFeeOptions,\n SwapParams,\n} from \"../../models\";\nimport { ChainDetailsMap, TokenWithChainDetails } from \"../../tokens-info\";\nimport { convertAmountPrecision, convertFloatAmountToInt, convertIntAmountToFloat } from \"../../utils/calculation\";\nimport { assertNever } from \"../../utils/utils\";\nimport {\n SendParams,\n TxSendParams,\n TxSendParamsAlg,\n TxSendParamsEvm,\n TxSendParamsSol,\n TxSendParamsSrb,\n TxSendParamsStx,\n TxSendParamsSui,\n TxSendParamsTrx,\n TxSwapParams,\n TxSwapParamsEvm,\n TxSwapParamsSol,\n TxSwapParamsSrb,\n TxSwapParamsSui,\n TxSwapParamsTrx,\n} from \"./models\";\n\n// 1. OVERLOADS\nexport function formatAddress(address: string, from: ChainType, to: ChainType.EVM | ChainType.SUI): string;\nexport function formatAddress(address: string, from: ChainType, to: ChainType.TRX): Buffer;\nexport function formatAddress(address: string, from: ChainType, to: ChainType.SOLANA | ChainType.SRB): number[];\nexport function formatAddress(address: string, from: ChainType, to: ChainType): string | number[] | Buffer;\n\n// 2. COMMON Realization\nexport function formatAddress(address: string, from: ChainType, to: ChainType): string | number[] | Buffer {\n let buffer: Buffer;\n switch (from) {\n case ChainType.EVM: {\n buffer = evmAddressToBuffer32(address);\n break;\n }\n case ChainType.SOLANA: {\n buffer = new PublicKey(address).toBuffer();\n break;\n }\n case ChainType.TRX: {\n buffer = tronAddressToBuffer32(address);\n break;\n }\n case ChainType.SRB: {\n buffer = new Address(address).toBuffer();\n break;\n }\n case ChainType.SUI: {\n buffer = evmAddressToBuffer32(address);\n break;\n }\n case ChainType.ALG: {\n buffer = algAddressToBuffer32(address);\n break;\n }\n case ChainType.STX: {\n buffer = stxAddressToBuffer32(address);\n break;\n }\n }\n\n switch (to) {\n case ChainType.EVM: {\n return \"0x\" + buffer.toString(\"hex\");\n }\n case ChainType.SOLANA: {\n return Array.from(buffer);\n }\n case ChainType.TRX: {\n return buffer;\n }\n case ChainType.SRB: {\n return buffer.toJSON().data;\n }\n case ChainType.SUI: {\n return \"0x\" + buffer.toString(\"hex\");\n }\n case ChainType.ALG: {\n return buffer;\n }\n case ChainType.STX: {\n return buffer;\n }\n }\n}\n\nexport function normalizeSuiHex(hex: string): string {\n return hex.replace(/^0x/i, \"\");\n}\n\nexport function hexToBuffer(hex: string): Buffer {\n return Buffer.from(hex.replace(/^0x/i, \"\"), \"hex\");\n}\n\nexport function evmAddressToBuffer32(address: string): Buffer {\n const length = 32;\n const buff = hexToBuffer(address);\n return Buffer.concat([Buffer.alloc(length - buff.length, 0), buff], length);\n}\n\nexport function algAddressToBuffer32(address: string): Buffer {\n if (algosdk.isValidAddress(address)) {\n return Buffer.from(AlgoAddress.fromString(address).publicKey);\n }\n\n if (/^\\d+$/.test(address)) {\n let hex = BigInt(address).toString(16);\n hex = hex.padStart(64, \"0\");\n return Buffer.from(hex, \"hex\");\n }\n throw new SdkError(`Unexpected Alg address: ${address}`);\n}\n\nexport function stxAddressToBuffer32(address: string): Buffer {\n if (address.includes(\".\")) {\n const [addr, name] = parseContractId(address as ContractIdString);\n if (!addr || !name) {\n throw new SdkError(`Unexpected Alg address: ${address}`);\n }\n const hashBytes = Buffer.from(createAddress(addr).hash160, \"hex\");\n const hash = Web3.utils.keccak256(Buffer.concat([hashBytes, Buffer.from(name)]));\n return hexToBuffer(hash);\n }\n\n const hashBytes = Buffer.from(createAddress(address).hash160, \"hex\");\n return bufferToSize(hashBytes, 32);\n}\n\nexport function tronAddressToBuffer32(address: string): Buffer {\n const ethAddress = tronAddressToEthAddress(address);\n const buffer = hexToBuffer(ethAddress);\n return bufferToSize(buffer, 32);\n}\n\nexport function tronAddressToEthAddress(address: string): string {\n const bytes = TronWebUtils.crypto.decodeBase58Address(address);\n if (!bytes) return \"\";\n return TronWebUtils.bytes.byteArray2hexStr(bytes).replace(/^41/, \"0x\");\n}\n\nfunction bufferToSize(buffer: Buffer, size: number): Buffer {\n if (buffer.length >= size) {\n return buffer;\n }\n const result = Buffer.alloc(size, 0);\n buffer.copy(result, size - buffer.length);\n return result;\n}\n\nexport function getTokenByTokenAddress(\n chainDetailsMap: ChainDetailsMap,\n chainSymbol: string,\n tokenAddress: string\n): TokenWithChainDetails {\n const chainDetail = chainDetailsMap[chainSymbol];\n if (!chainDetail) {\n throw new SdkError(\"Cannot find chain detail for \" + chainSymbol);\n }\n const token = chainDetail.tokens.find((value) => value.tokenAddress.toUpperCase() === tokenAddress.toUpperCase());\n if (!token) {\n throw new SdkError(\"Cannot find token info about token \" + tokenAddress + \" on chain \" + chainSymbol);\n }\n return token;\n}\n\nexport function getNonce(): Buffer {\n return randomBytes(32);\n}\n\nexport function getNonceBigInt(): bigint {\n const bigint = randomBytes(32).readBigInt64BE();\n if (bigint < 0) {\n return bigint * -1n;\n }\n return bigint;\n}\n\n// 1. OVERLOADS\nexport function prepareTxSwapParams(\n bridgeChainType: ChainType.EVM | ChainType.SUI,\n params: SwapParams\n): TxSwapParamsEvm | TxSwapParamsSui;\nexport function prepareTxSwapParams(bridgeChainType: ChainType.TRX, params: SwapParams): TxSwapParamsTrx;\nexport function prepareTxSwapParams(\n bridgeChainType: ChainType.SOLANA | ChainType.SRB,\n params: SwapParams\n): TxSwapParamsSol | TxSwapParamsSrb;\nexport function prepareTxSwapParams(bridgeChainType: ChainType, params: SwapParams): TxSwapParams;\n\n// 2. COMMON Realization\nexport function prepareTxSwapParams(bridgeChainType: ChainType, params: SwapParams): TxSwapParams {\n const txSwapParams = {} as TxSwapParams;\n const sourceToken = params.sourceToken;\n txSwapParams.amount = convertFloatAmountToInt(params.amount, sourceToken.decimals).toFixed();\n txSwapParams.contractAddress = sourceToken.bridgeAddress;\n txSwapParams.fromAccountAddress = params.fromAccountAddress;\n switch (bridgeChainType) {\n case ChainType.SUI: {\n if (!sourceToken.originTokenAddress) {\n throw new SdkError(\"SUI sourceToken must contain 'originTokenAddress'\");\n }\n txSwapParams.fromTokenAddress = sourceToken.originTokenAddress;\n break;\n }\n case ChainType.ALG: {\n txSwapParams.fromTokenAddress = sourceToken.tokenAddress;\n break;\n }\n default: {\n txSwapParams.fromTokenAddress = formatAddress(sourceToken.tokenAddress, bridgeChainType, bridgeChainType);\n }\n }\n txSwapParams.toAccountAddress = params.toAccountAddress;\n switch (bridgeChainType) {\n case ChainType.SUI: {\n if (!params.destinationToken.originTokenAddress) {\n throw new SdkError(\"SUI destinationToken must contain 'originTokenAddress'\");\n }\n txSwapParams.toTokenAddress = params.destinationToken.originTokenAddress;\n break;\n }\n case ChainType.ALG: {\n txSwapParams.toTokenAddress = params.destinationToken.tokenAddress;\n break;\n }\n default: {\n txSwapParams.toTokenAddress = formatAddress(\n params.destinationToken.tokenAddress,\n bridgeChainType,\n bridgeChainType\n );\n }\n }\n txSwapParams.minimumReceiveAmount = params.minimumReceiveAmount\n ? convertFloatAmountToInt(params.minimumReceiveAmount, params.destinationToken.decimals).toFixed()\n : \"0\";\n return txSwapParams;\n}\n\n// 1. OVERLOADS\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.EVM | ChainType.SUI,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsEvm | TxSendParamsSui>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.TRX,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsTrx>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.ALG,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsAlg>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.STX,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsStx>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.SOLANA | ChainType.SRB,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsSol | TxSendParamsSrb>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParams>;\n\n// 2. COMMON Realization\nexport async function prepareTxSendParams(\n bridgeChainType: ChainType,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParams> {\n const txSendParams = {} as TxSendParams;\n\n txSendParams.fromChainId = params.sourceToken.allbridgeChainId;\n txSendParams.fromChainSymbol = params.sourceToken.chainSymbol;\n const toChainType = Chains.getChainProperty(params.destinationToken.chainSymbol).chainType;\n if (bridgeChainType === ChainType.SUI) {\n if (!params.sourceToken.originTokenAddress) {\n throw new SdkError(\"SUI token must contain 'originTokenAddress'\");\n }\n txSendParams.fromTokenAddress = params.sourceToken.originTokenAddress;\n } else {\n txSendParams.fromTokenAddress = params.sourceToken.tokenAddress;\n }\n\n txSendParams.toChainId = params.destinationToken.allbridgeChainId;\n txSendParams.toTokenAddress = params.destinationToken.tokenAddress;\n\n txSendParams.gasFeePaymentMethod = params.gasFeePaymentMethod ?? FeePaymentMethod.WITH_NATIVE_CURRENCY;\n if (txSendParams.gasFeePaymentMethod === FeePaymentMethod.WITH_ABR) {\n if (!params.sourceToken.abrPayer) {\n throw new SdkError(\"Source token must contain 'abrPayer' for ABR payment method\");\n }\n }\n\n const sourceToken = params.sourceToken;\n\n switch (params.messenger) {\n case Messenger.CCTP:\n if (!sourceToken.cctpAddress || !params.destinationToken.cctpAddress) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP protocol\");\n }\n txSendParams.contractAddress = sourceToken.cctpAddress;\n break;\n case Messenger.CCTP_V2:\n if (!sourceToken.cctpV2Address || !params.destinationToken.cctpV2Address) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP V2 protocol\");\n }\n txSendParams.contractAddress = sourceToken.cctpV2Address;\n\n break;\n case Messenger.OFT:\n if (\n !sourceToken.oftBridgeAddress ||\n !params.destinationToken.oftBridgeAddress ||\n sourceToken.oftId !== params.destinationToken.oftId\n ) {\n throw new OFTDoesNotSupportedError(\"Such route does not support OFT protocol\");\n }\n txSendParams.contractAddress = sourceToken.oftBridgeAddress;\n break;\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE:\n txSendParams.contractAddress = sourceToken.bridgeAddress;\n break;\n }\n\n txSendParams.messenger = params.messenger;\n txSendParams.fromAccountAddress = params.fromAccountAddress;\n txSendParams.amount = convertFloatAmountToInt(params.amount, sourceToken.decimals).toFixed();\n\n //Fee\n let { fee, feeFormat } = params;\n if (!fee) {\n const gasFeeOptions = await getGasFeeOptions(\n params.sourceToken,\n txSendParams.toChainId,\n txSendParams.messenger,\n api\n );\n\n const gasFeeOption = gasFeeOptions[txSendParams.gasFeePaymentMethod];\n if (!gasFeeOption) {\n throw new InvalidGasFeePaymentOptionError();\n }\n fee = gasFeeOption[AmountFormat.INT];\n feeFormat = AmountFormat.INT;\n }\n if (feeFormat == AmountFormat.FLOAT) {\n switch (txSendParams.gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY:\n txSendParams.fee = convertFloatAmountToInt(fee, Chains.getChainDecimalsByType(sourceToken.chainType)).toFixed(\n 0\n );\n break;\n case FeePaymentMethod.WITH_STABLECOIN:\n txSendParams.fee = convertFloatAmountToInt(fee, sourceToken.decimals).toFixed(0);\n break;\n case FeePaymentMethod.WITH_ABR:\n if (!sourceToken.abrPayer) {\n throw new SdkError(\"Source token must contain 'abrPayer' for ABR payment method\");\n }\n txSendParams.fee = convertFloatAmountToInt(fee, sourceToken.abrPayer.abrToken.decimals).toFixed(0);\n break;\n default: {\n return assertNever(txSendParams.gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n } else {\n txSendParams.fee = fee;\n }\n\n //ExtraGas\n const { extraGas, extraGasFormat } = params;\n if (extraGas && +extraGas > 0) {\n const extraGasLimits = await getExtraGasMaxLimits(\n sourceToken,\n params.destinationToken,\n txSendParams.messenger,\n api\n );\n\n let extraGasDecimals: number;\n let extraGasDestRate: Big;\n switch (txSendParams.gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY:\n extraGasDecimals = Chains.getChainDecimalsByType(sourceToken.chainType);\n extraGasDestRate = Big(extraGasLimits.exchangeRate);\n break;\n case FeePaymentMethod.WITH_STABLECOIN:\n extraGasDecimals = sourceToken.decimals;\n extraGasDestRate = Big(extraGasLimits.exchangeRate).div(extraGasLimits.sourceNativeTokenPrice);\n break;\n case FeePaymentMethod.WITH_ABR:\n if (!sourceToken.abrPayer) {\n throw new SdkError(\"Source token must contain 'abrPayer' for ABR payment method\");\n }\n if (!extraGasLimits.abrExchangeRate) {\n throw new SdkError(\"Cannot transfer WITH_ABR option\");\n }\n extraGasDecimals = sourceToken.abrPayer.abrToken.decimals;\n extraGasDestRate = Big(extraGasLimits.exchangeRate).div(extraGasLimits.abrExchangeRate);\n break;\n default: {\n return assertNever(txSendParams.gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n\n switch (extraGasFormat ?? AmountFormat.INT) {\n case AmountFormat.FLOAT: {\n txSendParams.extraGas = convertFloatAmountToInt(extraGas, extraGasDecimals).toFixed(0);\n\n const extraGasDestFloat = extraGasDestRate.mul(extraGas);\n txSendParams.extraGasDest = convertFloatAmountToInt(\n extraGasDestFloat,\n Chains.getChainDecimalsByType(params.destinationToken.chainType)\n ).toFixed(0, Big.roundDown);\n break;\n }\n case AmountFormat.INT: {\n txSendParams.extraGas = extraGas;\n\n const extraGasFloat = convertIntAmountToFloat(\n txSendParams.extraGas,\n Chains.getChainDecimalsByType(sourceToken.chainType)\n );\n const extraGasDestFloat = extraGasDestRate.mul(extraGasFloat);\n txSendParams.extraGasDest = convertFloatAmountToInt(\n extraGasDestFloat,\n Chains.getChainDecimalsByType(params.destinationToken.chainType)\n ).toFixed(0, Big.roundDown);\n break;\n }\n }\n validateExtraGasNotExceeded(txSendParams.extraGas, txSendParams.gasFeePaymentMethod, extraGasLimits);\n }\n\n if (![ChainType.SUI, ChainType.ALG].includes(bridgeChainType)) {\n txSendParams.fromTokenAddress = formatAddress(txSendParams.fromTokenAddress, bridgeChainType, bridgeChainType);\n }\n txSendParams.toAccountAddress = formatAddress(params.toAccountAddress, toChainType, bridgeChainType);\n txSendParams.toTokenAddress = formatAddress(txSendParams.toTokenAddress, toChainType, bridgeChainType);\n\n switch (txSendParams.gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY:\n break;\n case FeePaymentMethod.WITH_STABLECOIN:\n validateAmountEnough(txSendParams.amount, sourceToken.decimals, txSendParams.fee, txSendParams.extraGas);\n break;\n case FeePaymentMethod.WITH_ABR: {\n const { abrExchangeRate } = await api.getReceiveTransactionCost({\n sourceChainId: txSendParams.fromChainId,\n destinationChainId: txSendParams.toChainId,\n messenger: txSendParams.messenger,\n sourceToken: params.sourceToken.tokenAddress,\n });\n txSendParams.abrExchangeRate = abrExchangeRate;\n break;\n }\n default:\n return assertNever(txSendParams.gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n return txSendParams;\n}\n\nfunction validateAmountEnough(\n amountInt: BigSource,\n decimals: number,\n feeInt: BigSource,\n extraGasInt: BigSource | undefined\n) {\n const amountTotal = Big(amountInt)\n .minus(feeInt)\n .minus(extraGasInt ?? 0);\n if (amountTotal.lte(0)) {\n throw new AmountNotEnoughError(\n `Amount not enough to pay fee, ${convertIntAmountToFloat(\n Big(amountTotal).minus(1).neg(),\n decimals\n ).toFixed()} stables is missing`\n );\n }\n}\n\nexport async function getGasFeeOptions(\n sourceChainToken: TokenWithChainDetails,\n destinationAllbridgeChainId: number,\n messenger: Messenger,\n api: AllbridgeCoreClient\n): Promise<GasFeeOptions> {\n const transactionCostResponse = await api.getReceiveTransactionCost({\n sourceChainId: sourceChainToken.allbridgeChainId,\n destinationChainId: destinationAllbridgeChainId,\n messenger,\n sourceToken: sourceChainToken.tokenAddress,\n });\n\n const gasFeeOptions: GasFeeOptions = {\n [FeePaymentMethod.WITH_NATIVE_CURRENCY]: {\n [AmountFormat.INT]: transactionCostResponse.fee,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n transactionCostResponse.fee,\n Chains.getChainDecimalsByType(sourceChainToken.chainType)\n ).toFixed(),\n },\n adminFeeShareWithExtras: transactionCostResponse.adminFeeShareWithExtras,\n };\n\n if (transactionCostResponse.sourceNativeTokenPrice) {\n const gasFeeIntWithStables = convertAmountPrecision(\n new Big(transactionCostResponse.fee).mul(transactionCostResponse.sourceNativeTokenPrice),\n Chains.getChainDecimalsByType(sourceChainToken.chainType),\n sourceChainToken.decimals\n ).toFixed(0, Big.roundUp);\n gasFeeOptions[FeePaymentMethod.WITH_STABLECOIN] = {\n [AmountFormat.INT]: gasFeeIntWithStables,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(gasFeeIntWithStables, sourceChainToken.decimals).toFixed(),\n };\n }\n\n if (\n transactionCostResponse.abrExchangeRate &&\n sourceChainToken.abrPayer &&\n sourceChainToken.abrPayer.payerAvailability[messenger]\n ) {\n const gasFeeIntWithStables = convertAmountPrecision(\n new Big(transactionCostResponse.fee).mul(transactionCostResponse.abrExchangeRate),\n Chains.getChainDecimalsByType(sourceChainToken.chainType),\n sourceChainToken.abrPayer.abrToken.decimals\n ).toFixed(0, Big.roundUp);\n gasFeeOptions[FeePaymentMethod.WITH_ABR] = {\n [AmountFormat.INT]: gasFeeIntWithStables,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n gasFeeIntWithStables,\n sourceChainToken.abrPayer.abrToken.decimals\n ).toFixed(),\n };\n }\n\n return gasFeeOptions;\n}\n\nfunction validateExtraGasNotExceeded(\n extraGasInt: string,\n gasFeePaymentMethod: FeePaymentMethod,\n extraGasLimits: ExtraGasMaxLimitResponse\n) {\n const extraGasMaxLimit = extraGasLimits.extraGasMax[gasFeePaymentMethod];\n if (!extraGasMaxLimit) {\n throw new InvalidGasFeePaymentOptionError(`Impossible to pay extra gas by '${gasFeePaymentMethod}' payment method`);\n }\n const extraGasMaxIntLimit = extraGasMaxLimit[AmountFormat.INT];\n if (Big(extraGasInt).gt(extraGasMaxIntLimit)) {\n throw new ExtraGasMaxLimitExceededError(\n `Extra gas ${extraGasInt} in int format, exceeded limit ${extraGasMaxIntLimit} for '${gasFeePaymentMethod}' payment method`\n );\n }\n}\n\nexport async function getExtraGasMaxLimits(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger,\n api: AllbridgeCoreClient\n): Promise<ExtraGasMaxLimitResponse> {\n const extraGasMaxLimits: ExtraGasMaxLimits = {};\n const transactionCostResponse = await api.getReceiveTransactionCost({\n sourceChainId: sourceChainToken.allbridgeChainId,\n destinationChainId: destinationChainToken.allbridgeChainId,\n messenger,\n sourceToken: sourceChainToken.tokenAddress,\n });\n const maxAmount = destinationChainToken.txCostAmount.maxAmount;\n const maxAmountFloat = convertIntAmountToFloat(\n maxAmount,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed();\n const maxAmountFloatInSourceNative = Big(maxAmountFloat)\n .div(transactionCostResponse.exchangeRate)\n .toFixed(Chains.getChainDecimalsByType(sourceChainToken.chainType), Big.roundDown);\n const maxAmountInSourceNative = convertFloatAmountToInt(\n maxAmountFloatInSourceNative,\n Chains.getChainDecimalsByType(sourceChainToken.chainType)\n ).toFixed(0);\n extraGasMaxLimits[FeePaymentMethod.WITH_NATIVE_CURRENCY] = {\n [AmountFormat.INT]: maxAmountInSourceNative,\n [AmountFormat.FLOAT]: maxAmountFloatInSourceNative,\n };\n\n if (transactionCostResponse.sourceNativeTokenPrice) {\n const maxAmountFloatInStable = Big(maxAmountFloatInSourceNative)\n .mul(transactionCostResponse.sourceNativeTokenPrice)\n .toFixed(sourceChainToken.decimals, Big.roundDown);\n extraGasMaxLimits[FeePaymentMethod.WITH_STABLECOIN] = {\n [AmountFormat.INT]: convertFloatAmountToInt(maxAmountFloatInStable, sourceChainToken.decimals).toFixed(0),\n [AmountFormat.FLOAT]: maxAmountFloatInStable,\n };\n }\n\n let abrAvailable;\n if (\n transactionCostResponse.abrExchangeRate &&\n sourceChainToken.abrPayer &&\n sourceChainToken.abrPayer.payerAvailability[messenger]\n ) {\n abrAvailable = true;\n const maxAmountFloatInStable = Big(maxAmountFloatInSourceNative)\n .mul(transactionCostResponse.abrExchangeRate)\n .toFixed(sourceChainToken.abrPayer.abrToken.decimals, Big.roundDown);\n extraGasMaxLimits[FeePaymentMethod.WITH_ABR] = {\n [AmountFormat.INT]: convertFloatAmountToInt(\n maxAmountFloatInStable,\n sourceChainToken.abrPayer.abrToken.decimals\n ).toFixed(0),\n [AmountFormat.FLOAT]: maxAmountFloatInStable,\n };\n }\n\n return {\n extraGasMax: extraGasMaxLimits,\n destinationChain: {\n gasAmountMax: {\n [AmountFormat.INT]: maxAmount,\n [AmountFormat.FLOAT]: maxAmountFloat,\n },\n swap: {\n [AmountFormat.INT]: destinationChainToken.txCostAmount.swap,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n destinationChainToken.txCostAmount.swap,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed(),\n },\n transfer: {\n [AmountFormat.INT]: destinationChainToken.txCostAmount.transfer,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n destinationChainToken.txCostAmount.transfer,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed(),\n },\n },\n exchangeRate: transactionCostResponse.exchangeRate,\n abrExchangeRate: abrAvailable ? transactionCostResponse.abrExchangeRate : undefined,\n sourceNativeTokenPrice: transactionCostResponse.sourceNativeTokenPrice,\n };\n}\n\nexport function isSendParams(params: SwapParams | SendParams): params is SendParams {\n return params.sourceToken.chainSymbol !== params.destinationToken.chainSymbol;\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/services/bridge/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\nimport { ContractIdString, createAddress, parseContractId } from \"@stacks/transactions\";\nimport { Address } from \"@stellar/stellar-sdk\";\nimport algosdk, { Address as AlgoAddress } from \"algosdk\";\nimport { Big, BigSource } from \"big.js\";\nimport randomBytes from \"randombytes\";\nimport { utils as TronWebUtils } from \"tronweb\";\nimport { Web3 } from \"web3\";\nimport { Chains } from \"../../chains\";\nimport { Messenger } from \"../../client/core-api/core-api.model\";\nimport { AllbridgeCoreClient } from \"../../client/core-api/core-client-base\";\nimport {\n AmountNotEnoughError,\n CCTPDoesNotSupportedError,\n ExtraGasMaxLimitExceededError,\n InvalidGasFeePaymentOptionError,\n OFTDoesNotSupportedError,\n SdkError,\n} from \"../../exceptions\";\nimport {\n AmountFormat,\n ChainType,\n ExtraGasMaxLimitResponse,\n ExtraGasMaxLimits,\n FeePaymentMethod,\n GasFeeOptions,\n SwapParams,\n} from \"../../models\";\nimport { ChainDetailsMap, TokenWithChainDetails } from \"../../tokens-info\";\nimport { convertAmountPrecision, convertFloatAmountToInt, convertIntAmountToFloat } from \"../../utils/calculation\";\nimport { assertNever } from \"../../utils/utils\";\nimport {\n SendParams,\n TxSendParams,\n TxSendParamsAlg,\n TxSendParamsEvm,\n TxSendParamsSol,\n TxSendParamsSrb,\n TxSendParamsStx,\n TxSendParamsSui,\n TxSendParamsTrx,\n TxSwapParams,\n TxSwapParamsEvm,\n TxSwapParamsSol,\n TxSwapParamsSrb,\n TxSwapParamsSui,\n TxSwapParamsTrx,\n} from \"./models\";\n\n// 1. OVERLOADS\nexport function formatAddress(address: string, from: ChainType, to: ChainType.EVM | ChainType.SUI): string;\nexport function formatAddress(address: string, from: ChainType, to: ChainType.TRX): Buffer;\nexport function formatAddress(address: string, from: ChainType, to: ChainType.SOLANA | ChainType.SRB): number[];\nexport function formatAddress(address: string, from: ChainType, to: ChainType): string | number[] | Buffer;\n\n// 2. COMMON Realization\nexport function formatAddress(address: string, from: ChainType, to: ChainType): string | number[] | Buffer {\n let buffer: Buffer;\n switch (from) {\n case ChainType.EVM: {\n buffer = evmAddressToBuffer32(address);\n break;\n }\n case ChainType.SOLANA: {\n buffer = new PublicKey(address).toBuffer();\n break;\n }\n case ChainType.TRX: {\n buffer = tronAddressToBuffer32(address);\n break;\n }\n case ChainType.SRB: {\n buffer = new Address(address).toBuffer();\n break;\n }\n case ChainType.SUI: {\n buffer = evmAddressToBuffer32(address);\n break;\n }\n case ChainType.ALG: {\n buffer = algAddressToBuffer32(address);\n break;\n }\n case ChainType.STX: {\n buffer = stxAddressToBuffer32(address);\n break;\n }\n }\n\n switch (to) {\n case ChainType.EVM: {\n return \"0x\" + buffer.toString(\"hex\");\n }\n case ChainType.SOLANA: {\n return Array.from(buffer);\n }\n case ChainType.TRX: {\n return buffer;\n }\n case ChainType.SRB: {\n return buffer.toJSON().data;\n }\n case ChainType.SUI: {\n return \"0x\" + buffer.toString(\"hex\");\n }\n case ChainType.ALG: {\n return buffer;\n }\n case ChainType.STX: {\n return buffer;\n }\n }\n}\n\nexport function normalizeSuiHex(hex: string): string {\n return hex.replace(/^0x/i, \"\");\n}\n\nexport function hexToBuffer(hex: string): Buffer {\n return Buffer.from(hex.replace(/^0x/i, \"\"), \"hex\");\n}\n\nexport function evmAddressToBuffer32(address: string): Buffer {\n const length = 32;\n const buff = hexToBuffer(address);\n return Buffer.concat([Buffer.alloc(length - buff.length, 0), buff], length);\n}\n\nexport function algAddressToBuffer32(address: string): Buffer {\n if (algosdk.isValidAddress(address)) {\n return Buffer.from(AlgoAddress.fromString(address).publicKey);\n }\n\n if (/^\\d+$/.test(address)) {\n let hex = BigInt(address).toString(16);\n hex = hex.padStart(64, \"0\");\n return Buffer.from(hex, \"hex\");\n }\n throw new SdkError(`Unexpected Alg address: ${address}`);\n}\n\nexport function stxAddressToBuffer32(address: string): Buffer {\n if (address.includes(\".\")) {\n const [addr, name] = parseContractId(address as ContractIdString);\n if (!addr || !name) {\n throw new SdkError(`Unexpected Alg address: ${address}`);\n }\n const hashBytes = Buffer.from(createAddress(addr).hash160, \"hex\");\n const hash = Web3.utils.keccak256(Buffer.concat([hashBytes, Buffer.from(name)]));\n return hexToBuffer(hash);\n }\n\n const hashBytes = Buffer.from(createAddress(address).hash160, \"hex\");\n return bufferToSize(hashBytes, 32);\n}\n\nexport function tronAddressToBuffer32(address: string): Buffer {\n const ethAddress = tronAddressToEthAddress(address);\n const buffer = hexToBuffer(ethAddress);\n return bufferToSize(buffer, 32);\n}\n\nexport function tronAddressToEthAddress(address: string): string {\n const bytes = TronWebUtils.crypto.decodeBase58Address(address);\n if (!bytes) return \"\";\n return TronWebUtils.bytes.byteArray2hexStr(bytes).replace(/^41/, \"0x\");\n}\n\nexport function bufferToSize(buffer: Buffer, size: number): Buffer {\n if (buffer.length >= size) {\n return buffer;\n }\n const result = Buffer.alloc(size, 0);\n buffer.copy(result, size - buffer.length);\n return result;\n}\n\nexport function getTokenByTokenAddress(\n chainDetailsMap: ChainDetailsMap,\n chainSymbol: string,\n tokenAddress: string\n): TokenWithChainDetails {\n const chainDetail = chainDetailsMap[chainSymbol];\n if (!chainDetail) {\n throw new SdkError(\"Cannot find chain detail for \" + chainSymbol);\n }\n const token = chainDetail.tokens.find((value) => value.tokenAddress.toUpperCase() === tokenAddress.toUpperCase());\n if (!token) {\n throw new SdkError(\"Cannot find token info about token \" + tokenAddress + \" on chain \" + chainSymbol);\n }\n return token;\n}\n\nexport function getNonce(): Buffer {\n return randomBytes(32);\n}\n\nexport function getNonceBigInt(): bigint {\n const bigint = randomBytes(32).readBigInt64BE();\n if (bigint < 0) {\n return bigint * -1n;\n }\n return bigint;\n}\n\n// 1. OVERLOADS\nexport function prepareTxSwapParams(\n bridgeChainType: ChainType.EVM | ChainType.SUI,\n params: SwapParams\n): TxSwapParamsEvm | TxSwapParamsSui;\nexport function prepareTxSwapParams(bridgeChainType: ChainType.TRX, params: SwapParams): TxSwapParamsTrx;\nexport function prepareTxSwapParams(\n bridgeChainType: ChainType.SOLANA | ChainType.SRB,\n params: SwapParams\n): TxSwapParamsSol | TxSwapParamsSrb;\nexport function prepareTxSwapParams(bridgeChainType: ChainType, params: SwapParams): TxSwapParams;\n\n// 2. COMMON Realization\nexport function prepareTxSwapParams(bridgeChainType: ChainType, params: SwapParams): TxSwapParams {\n const txSwapParams = {} as TxSwapParams;\n const sourceToken = params.sourceToken;\n txSwapParams.amount = convertFloatAmountToInt(params.amount, sourceToken.decimals).toFixed();\n txSwapParams.contractAddress = sourceToken.bridgeAddress;\n txSwapParams.fromAccountAddress = params.fromAccountAddress;\n switch (bridgeChainType) {\n case ChainType.SUI: {\n if (!sourceToken.originTokenAddress) {\n throw new SdkError(\"SUI sourceToken must contain 'originTokenAddress'\");\n }\n txSwapParams.fromTokenAddress = sourceToken.originTokenAddress;\n break;\n }\n case ChainType.ALG: {\n txSwapParams.fromTokenAddress = sourceToken.tokenAddress;\n break;\n }\n default: {\n txSwapParams.fromTokenAddress = formatAddress(sourceToken.tokenAddress, bridgeChainType, bridgeChainType);\n }\n }\n txSwapParams.toAccountAddress = params.toAccountAddress;\n switch (bridgeChainType) {\n case ChainType.SUI: {\n if (!params.destinationToken.originTokenAddress) {\n throw new SdkError(\"SUI destinationToken must contain 'originTokenAddress'\");\n }\n txSwapParams.toTokenAddress = params.destinationToken.originTokenAddress;\n break;\n }\n case ChainType.ALG: {\n txSwapParams.toTokenAddress = params.destinationToken.tokenAddress;\n break;\n }\n default: {\n txSwapParams.toTokenAddress = formatAddress(\n params.destinationToken.tokenAddress,\n bridgeChainType,\n bridgeChainType\n );\n }\n }\n txSwapParams.minimumReceiveAmount = params.minimumReceiveAmount\n ? convertFloatAmountToInt(params.minimumReceiveAmount, params.destinationToken.decimals).toFixed()\n : \"0\";\n return txSwapParams;\n}\n\n// 1. OVERLOADS\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.EVM | ChainType.SUI,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsEvm | TxSendParamsSui>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.TRX,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsTrx>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.ALG,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsAlg>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.STX,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsStx>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.SOLANA | ChainType.SRB,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsSol | TxSendParamsSrb>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParams>;\n\n// 2. COMMON Realization\nexport async function prepareTxSendParams(\n bridgeChainType: ChainType,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParams> {\n const txSendParams = {} as TxSendParams;\n\n txSendParams.fromChainId = params.sourceToken.allbridgeChainId;\n txSendParams.fromChainSymbol = params.sourceToken.chainSymbol;\n const toChainType = Chains.getChainProperty(params.destinationToken.chainSymbol).chainType;\n if (bridgeChainType === ChainType.SUI) {\n if (!params.sourceToken.originTokenAddress) {\n throw new SdkError(\"SUI token must contain 'originTokenAddress'\");\n }\n txSendParams.fromTokenAddress = params.sourceToken.originTokenAddress;\n } else {\n txSendParams.fromTokenAddress = params.sourceToken.tokenAddress;\n }\n\n txSendParams.toChainId = params.destinationToken.allbridgeChainId;\n txSendParams.toTokenAddress = params.destinationToken.tokenAddress;\n\n txSendParams.gasFeePaymentMethod = params.gasFeePaymentMethod ?? FeePaymentMethod.WITH_NATIVE_CURRENCY;\n if (txSendParams.gasFeePaymentMethod === FeePaymentMethod.WITH_ABR) {\n if (!params.sourceToken.abrPayer) {\n throw new SdkError(\"Source token must contain 'abrPayer' for ABR payment method\");\n }\n }\n\n const sourceToken = params.sourceToken;\n\n switch (params.messenger) {\n case Messenger.CCTP:\n if (!sourceToken.cctpAddress || !params.destinationToken.cctpAddress) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP protocol\");\n }\n txSendParams.contractAddress = sourceToken.cctpAddress;\n break;\n case Messenger.CCTP_V2:\n if (!sourceToken.cctpV2Address || !params.destinationToken.cctpV2Address) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP V2 protocol\");\n }\n txSendParams.contractAddress = sourceToken.cctpV2Address;\n\n break;\n case Messenger.OFT:\n if (\n !sourceToken.oftBridgeAddress ||\n !params.destinationToken.oftBridgeAddress ||\n sourceToken.oftId !== params.destinationToken.oftId\n ) {\n throw new OFTDoesNotSupportedError(\"Such route does not support OFT protocol\");\n }\n txSendParams.contractAddress = sourceToken.oftBridgeAddress;\n break;\n case Messenger.X_RESERVE:\n if (!sourceToken.xReserve?.bridgeAddress || !params.destinationToken.xReserve) {\n throw new SdkError(\"Such route does not support xReserve protocol\");\n }\n txSendParams.contractAddress = sourceToken.xReserve.bridgeAddress;\n break;\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE:\n txSendParams.contractAddress = sourceToken.bridgeAddress;\n break;\n }\n\n txSendParams.messenger = params.messenger;\n txSendParams.fromAccountAddress = params.fromAccountAddress;\n txSendParams.amount = convertFloatAmountToInt(params.amount, sourceToken.decimals).toFixed();\n\n //Fee\n let { fee, feeFormat } = params;\n if (!fee) {\n const gasFeeOptions = await getGasFeeOptions(\n params.sourceToken,\n txSendParams.toChainId,\n txSendParams.messenger,\n api\n );\n\n const gasFeeOption = gasFeeOptions[txSendParams.gasFeePaymentMethod];\n if (!gasFeeOption) {\n throw new InvalidGasFeePaymentOptionError();\n }\n fee = gasFeeOption[AmountFormat.INT];\n feeFormat = AmountFormat.INT;\n }\n if (feeFormat == AmountFormat.FLOAT) {\n switch (txSendParams.gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY:\n txSendParams.fee = convertFloatAmountToInt(fee, Chains.getChainDecimalsByType(sourceToken.chainType)).toFixed(\n 0\n );\n break;\n case FeePaymentMethod.WITH_STABLECOIN:\n txSendParams.fee = convertFloatAmountToInt(fee, sourceToken.decimals).toFixed(0);\n break;\n case FeePaymentMethod.WITH_ABR:\n if (!sourceToken.abrPayer) {\n throw new SdkError(\"Source token must contain 'abrPayer' for ABR payment method\");\n }\n txSendParams.fee = convertFloatAmountToInt(fee, sourceToken.abrPayer.abrToken.decimals).toFixed(0);\n break;\n default: {\n return assertNever(txSendParams.gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n } else {\n txSendParams.fee = fee;\n }\n\n //ExtraGas\n const { extraGas, extraGasFormat } = params;\n if (extraGas && +extraGas > 0) {\n const extraGasLimits = await getExtraGasMaxLimits(\n sourceToken,\n params.destinationToken,\n txSendParams.messenger,\n api\n );\n\n let extraGasDecimals: number;\n let extraGasDestRate: Big;\n switch (txSendParams.gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY:\n extraGasDecimals = Chains.getChainDecimalsByType(sourceToken.chainType);\n extraGasDestRate = Big(extraGasLimits.exchangeRate);\n break;\n case FeePaymentMethod.WITH_STABLECOIN:\n extraGasDecimals = sourceToken.decimals;\n extraGasDestRate = Big(extraGasLimits.exchangeRate).div(extraGasLimits.sourceNativeTokenPrice);\n break;\n case FeePaymentMethod.WITH_ABR:\n if (!sourceToken.abrPayer) {\n throw new SdkError(\"Source token must contain 'abrPayer' for ABR payment method\");\n }\n if (!extraGasLimits.abrExchangeRate) {\n throw new SdkError(\"Cannot transfer WITH_ABR option\");\n }\n extraGasDecimals = sourceToken.abrPayer.abrToken.decimals;\n extraGasDestRate = Big(extraGasLimits.exchangeRate).div(extraGasLimits.abrExchangeRate);\n break;\n default: {\n return assertNever(txSendParams.gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n\n switch (extraGasFormat ?? AmountFormat.INT) {\n case AmountFormat.FLOAT: {\n txSendParams.extraGas = convertFloatAmountToInt(extraGas, extraGasDecimals).toFixed(0);\n\n const extraGasDestFloat = extraGasDestRate.mul(extraGas);\n txSendParams.extraGasDest = convertFloatAmountToInt(\n extraGasDestFloat,\n Chains.getChainDecimalsByType(params.destinationToken.chainType)\n ).toFixed(0, Big.roundDown);\n break;\n }\n case AmountFormat.INT: {\n txSendParams.extraGas = extraGas;\n\n const extraGasFloat = convertIntAmountToFloat(\n txSendParams.extraGas,\n Chains.getChainDecimalsByType(sourceToken.chainType)\n );\n const extraGasDestFloat = extraGasDestRate.mul(extraGasFloat);\n txSendParams.extraGasDest = convertFloatAmountToInt(\n extraGasDestFloat,\n Chains.getChainDecimalsByType(params.destinationToken.chainType)\n ).toFixed(0, Big.roundDown);\n break;\n }\n }\n validateExtraGasNotExceeded(txSendParams.extraGas, txSendParams.gasFeePaymentMethod, extraGasLimits);\n }\n\n if (![ChainType.SUI, ChainType.ALG].includes(bridgeChainType)) {\n txSendParams.fromTokenAddress = formatAddress(txSendParams.fromTokenAddress, bridgeChainType, bridgeChainType);\n }\n txSendParams.toAccountAddress = formatAddress(params.toAccountAddress, toChainType, bridgeChainType);\n txSendParams.toTokenAddress = formatAddress(txSendParams.toTokenAddress, toChainType, bridgeChainType);\n\n switch (txSendParams.gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY:\n break;\n case FeePaymentMethod.WITH_STABLECOIN:\n validateAmountEnough(\n txSendParams.amount,\n sourceToken.decimals,\n sourceToken.symbol,\n txSendParams.fee,\n txSendParams.extraGas\n );\n break;\n case FeePaymentMethod.WITH_ABR: {\n const { abrExchangeRate } = await api.getReceiveTransactionCost({\n sourceChainId: txSendParams.fromChainId,\n destinationChainId: txSendParams.toChainId,\n messenger: txSendParams.messenger,\n sourceToken: params.sourceToken.tokenAddress,\n });\n txSendParams.abrExchangeRate = abrExchangeRate;\n break;\n }\n default:\n return assertNever(txSendParams.gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n return txSendParams;\n}\n\nfunction validateAmountEnough(\n amountInt: BigSource,\n decimals: number,\n symbol: string,\n feeInt: BigSource,\n extraGasInt: BigSource | undefined\n) {\n const amountTotal = Big(amountInt)\n .minus(feeInt)\n .minus(extraGasInt ?? 0);\n if (amountTotal.lte(0)) {\n throw new AmountNotEnoughError(\n `Amount not enough to pay fee, ${convertIntAmountToFloat(\n Big(amountTotal).minus(1).neg(),\n decimals\n ).toFixed()} ${symbol} is missing`\n );\n }\n}\n\nexport async function getGasFeeOptions(\n sourceChainToken: TokenWithChainDetails,\n destinationAllbridgeChainId: number,\n messenger: Messenger,\n api: AllbridgeCoreClient\n): Promise<GasFeeOptions> {\n const transactionCostResponse = await api.getReceiveTransactionCost({\n sourceChainId: sourceChainToken.allbridgeChainId,\n destinationChainId: destinationAllbridgeChainId,\n messenger,\n sourceToken: sourceChainToken.tokenAddress,\n });\n\n const gasFeeOptions: GasFeeOptions = {\n [FeePaymentMethod.WITH_NATIVE_CURRENCY]: {\n [AmountFormat.INT]: transactionCostResponse.fee,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n transactionCostResponse.fee,\n Chains.getChainDecimalsByType(sourceChainToken.chainType)\n ).toFixed(),\n },\n adminFeeShareWithExtras: transactionCostResponse.adminFeeShareWithExtras,\n };\n\n if (transactionCostResponse.sourceNativeTokenPrice) {\n const gasFeeIntWithStables = convertAmountPrecision(\n new Big(transactionCostResponse.fee).mul(transactionCostResponse.sourceNativeTokenPrice),\n Chains.getChainDecimalsByType(sourceChainToken.chainType),\n sourceChainToken.decimals\n ).toFixed(0, Big.roundUp);\n gasFeeOptions[FeePaymentMethod.WITH_STABLECOIN] = {\n [AmountFormat.INT]: gasFeeIntWithStables,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(gasFeeIntWithStables, sourceChainToken.decimals).toFixed(),\n };\n }\n\n if (\n transactionCostResponse.abrExchangeRate &&\n sourceChainToken.abrPayer &&\n sourceChainToken.abrPayer.payerAvailability[messenger]\n ) {\n const gasFeeIntWithStables = convertAmountPrecision(\n new Big(transactionCostResponse.fee).mul(transactionCostResponse.abrExchangeRate),\n Chains.getChainDecimalsByType(sourceChainToken.chainType),\n sourceChainToken.abrPayer.abrToken.decimals\n ).toFixed(0, Big.roundUp);\n gasFeeOptions[FeePaymentMethod.WITH_ABR] = {\n [AmountFormat.INT]: gasFeeIntWithStables,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n gasFeeIntWithStables,\n sourceChainToken.abrPayer.abrToken.decimals\n ).toFixed(),\n };\n }\n\n return gasFeeOptions;\n}\n\nfunction validateExtraGasNotExceeded(\n extraGasInt: string,\n gasFeePaymentMethod: FeePaymentMethod,\n extraGasLimits: ExtraGasMaxLimitResponse\n) {\n const extraGasMaxLimit = extraGasLimits.extraGasMax[gasFeePaymentMethod];\n if (!extraGasMaxLimit) {\n throw new InvalidGasFeePaymentOptionError(`Impossible to pay extra gas by '${gasFeePaymentMethod}' payment method`);\n }\n const extraGasMaxIntLimit = extraGasMaxLimit[AmountFormat.INT];\n if (Big(extraGasInt).gt(extraGasMaxIntLimit)) {\n throw new ExtraGasMaxLimitExceededError(\n `Extra gas ${extraGasInt} in int format, exceeded limit ${extraGasMaxIntLimit} for '${gasFeePaymentMethod}' payment method`\n );\n }\n}\n\nexport async function getExtraGasMaxLimits(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger,\n api: AllbridgeCoreClient\n): Promise<ExtraGasMaxLimitResponse> {\n const extraGasMaxLimits: ExtraGasMaxLimits = {};\n const transactionCostResponse = await api.getReceiveTransactionCost({\n sourceChainId: sourceChainToken.allbridgeChainId,\n destinationChainId: destinationChainToken.allbridgeChainId,\n messenger,\n sourceToken: sourceChainToken.tokenAddress,\n });\n const maxAmount = destinationChainToken.txCostAmount.maxAmount;\n const maxAmountFloat = convertIntAmountToFloat(\n maxAmount,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed();\n const maxAmountFloatInSourceNative = Big(maxAmountFloat)\n .div(transactionCostResponse.exchangeRate)\n .toFixed(Chains.getChainDecimalsByType(sourceChainToken.chainType), Big.roundDown);\n const maxAmountInSourceNative = convertFloatAmountToInt(\n maxAmountFloatInSourceNative,\n Chains.getChainDecimalsByType(sourceChainToken.chainType)\n ).toFixed(0);\n extraGasMaxLimits[FeePaymentMethod.WITH_NATIVE_CURRENCY] = {\n [AmountFormat.INT]: maxAmountInSourceNative,\n [AmountFormat.FLOAT]: maxAmountFloatInSourceNative,\n };\n\n if (transactionCostResponse.sourceNativeTokenPrice) {\n const maxAmountFloatInStable = Big(maxAmountFloatInSourceNative)\n .mul(transactionCostResponse.sourceNativeTokenPrice)\n .toFixed(sourceChainToken.decimals, Big.roundDown);\n extraGasMaxLimits[FeePaymentMethod.WITH_STABLECOIN] = {\n [AmountFormat.INT]: convertFloatAmountToInt(maxAmountFloatInStable, sourceChainToken.decimals).toFixed(0),\n [AmountFormat.FLOAT]: maxAmountFloatInStable,\n };\n }\n\n let abrAvailable;\n if (\n transactionCostResponse.abrExchangeRate &&\n sourceChainToken.abrPayer &&\n sourceChainToken.abrPayer.payerAvailability[messenger]\n ) {\n abrAvailable = true;\n const maxAmountFloatInStable = Big(maxAmountFloatInSourceNative)\n .mul(transactionCostResponse.abrExchangeRate)\n .toFixed(sourceChainToken.abrPayer.abrToken.decimals, Big.roundDown);\n extraGasMaxLimits[FeePaymentMethod.WITH_ABR] = {\n [AmountFormat.INT]: convertFloatAmountToInt(\n maxAmountFloatInStable,\n sourceChainToken.abrPayer.abrToken.decimals\n ).toFixed(0),\n [AmountFormat.FLOAT]: maxAmountFloatInStable,\n };\n }\n\n return {\n extraGasMax: extraGasMaxLimits,\n destinationChain: {\n gasAmountMax: {\n [AmountFormat.INT]: maxAmount,\n [AmountFormat.FLOAT]: maxAmountFloat,\n },\n swap: {\n [AmountFormat.INT]: destinationChainToken.txCostAmount.swap,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n destinationChainToken.txCostAmount.swap,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed(),\n },\n transfer: {\n [AmountFormat.INT]: destinationChainToken.txCostAmount.transfer,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n destinationChainToken.txCostAmount.transfer,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed(),\n },\n },\n exchangeRate: transactionCostResponse.exchangeRate,\n abrExchangeRate: abrAvailable ? transactionCostResponse.abrExchangeRate : undefined,\n sourceNativeTokenPrice: transactionCostResponse.sourceNativeTokenPrice,\n };\n}\n\nexport function isSendParams(params: SwapParams | SendParams): params is SendParams {\n return params.sourceToken.chainSymbol !== params.destinationToken.chainSymbol;\n}\n"]}
@@ -40,12 +40,15 @@ export declare class AllbridgeCoreSdkService {
40
40
  getAmountToBeReceivedCompute(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger | undefined, sourcePool: () => Promise<PoolInfo>, destPool: () => Promise<PoolInfo>): Promise<string>;
41
41
  getAmountToBeReceivedComputeWithPools(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, sourcePool: PoolInfo, destinationPool: PoolInfo): string;
42
42
  getAmountToBeReceivedComputeCctp(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger.CCTP | Messenger.CCTP_V2): string;
43
+ getAmountToBeReceivedComputeXReserve(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails): string;
43
44
  getAmountToBeReceivedComputeOft(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails): Promise<string>;
44
45
  getAmountToSend(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger): Promise<string>;
45
46
  getAmountToSendFromChain(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger, sourceProvider?: Provider, destinationProvider?: Provider): Promise<string>;
46
47
  getAmountToSendCompute(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger | undefined, sourcePool: () => Promise<PoolInfo>, destPool: () => Promise<PoolInfo>): Promise<string>;
47
48
  getAmountToSendComputeWithPools(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, sourcePool: PoolInfo, destinationPool: PoolInfo): string;
48
49
  getAmountToSendComputeCctp(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger.CCTP | Messenger.CCTP_V2): string;
50
+ getAmountToSendComputeXReserve(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails): string;
51
+ private getXReserveConfig;
49
52
  getAmountToSendComputeOft(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails): Promise<string>;
50
53
  getGasFeeOptions(sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger): Promise<GasFeeOptions>;
51
54
  getAverageTransferTime(sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger): number | null;
@@ -203,6 +203,8 @@ class AllbridgeCoreSdkService {
203
203
  case core_api_model_1.Messenger.CCTP:
204
204
  case core_api_model_1.Messenger.CCTP_V2:
205
205
  return this.getAmountToBeReceivedComputeCctp(amountToSendFloat, sourceChainToken, destinationChainToken, messenger);
206
+ case core_api_model_1.Messenger.X_RESERVE:
207
+ return this.getAmountToBeReceivedComputeXReserve(amountToSendFloat, sourceChainToken, destinationChainToken);
206
208
  case core_api_model_1.Messenger.OFT:
207
209
  return this.getAmountToBeReceivedComputeOft(amountToSendFloat, sourceChainToken, destinationChainToken);
208
210
  }
@@ -239,6 +241,18 @@ class AllbridgeCoreSdkService {
239
241
  }
240
242
  }
241
243
  }
244
+ getAmountToBeReceivedComputeXReserve(amountToSendFloat, sourceChainToken, destinationChainToken) {
245
+ (0, utils_1.validateAmountGtZero)(amountToSendFloat);
246
+ (0, utils_1.validateAmountDecimals)("amountToSendFloat", amountToSendFloat, sourceChainToken.decimals);
247
+ const xReserve = this.getXReserveConfig(sourceChainToken, destinationChainToken);
248
+ const amountToSend = (0, calculation_1.convertFloatAmountToInt)(amountToSendFloat, sourceChainToken.decimals);
249
+ const result = amountToSend.mul((0, big_js_1.Big)(1).minus(xReserve.feeShare)).minus(xReserve.feeConst).round(0, big_js_1.Big.roundDown);
250
+ if (result.lte(0)) {
251
+ throw new index_1.SdkError("Amount is too low for xReserve route");
252
+ }
253
+ const resultInDestPrecision = (0, calculation_1.convertAmountPrecision)(result, sourceChainToken.decimals, destinationChainToken.decimals).round(0);
254
+ return (0, calculation_1.convertIntAmountToFloat)(resultInDestPrecision, destinationChainToken.decimals).toFixed();
255
+ }
242
256
  async getAmountToBeReceivedComputeOft(amountToSendFloat, sourceChainToken, destinationChainToken) {
243
257
  (0, utils_1.validateAmountGtZero)(amountToSendFloat);
244
258
  (0, utils_1.validateAmountDecimals)("amountToSendFloat", amountToSendFloat, sourceChainToken.decimals);
@@ -276,6 +290,8 @@ class AllbridgeCoreSdkService {
276
290
  case core_api_model_1.Messenger.CCTP:
277
291
  case core_api_model_1.Messenger.CCTP_V2:
278
292
  return this.getAmountToSendComputeCctp(amountToBeReceivedFloat, sourceChainToken, destinationChainToken, messenger);
293
+ case core_api_model_1.Messenger.X_RESERVE:
294
+ return this.getAmountToSendComputeXReserve(amountToBeReceivedFloat, sourceChainToken, destinationChainToken);
279
295
  case core_api_model_1.Messenger.OFT:
280
296
  return this.getAmountToSendComputeOft(amountToBeReceivedFloat, sourceChainToken, destinationChainToken);
281
297
  }
@@ -316,6 +332,30 @@ class AllbridgeCoreSdkService {
316
332
  }
317
333
  }
318
334
  }
335
+ getAmountToSendComputeXReserve(amountToBeReceivedFloat, sourceChainToken, destinationChainToken) {
336
+ (0, utils_1.validateAmountGtZero)(amountToBeReceivedFloat);
337
+ (0, utils_1.validateAmountDecimals)("amountToBeReceivedFloat", amountToBeReceivedFloat, destinationChainToken.decimals);
338
+ const xReserve = this.getXReserveConfig(sourceChainToken, destinationChainToken);
339
+ const amountToBeReceived = (0, calculation_1.convertFloatAmountToInt)(amountToBeReceivedFloat, destinationChainToken.decimals);
340
+ const amountInSourcePrecision = (0, calculation_1.convertAmountPrecision)(amountToBeReceived, destinationChainToken.decimals, sourceChainToken.decimals).round(0);
341
+ const result = amountInSourcePrecision
342
+ .plus(xReserve.feeConst)
343
+ .div((0, big_js_1.Big)(1).minus(xReserve.feeShare))
344
+ .round(0, big_js_1.Big.roundUp);
345
+ if (result.lte(0)) {
346
+ throw new index_1.SdkError("Amount is too low for xReserve route");
347
+ }
348
+ return (0, calculation_1.convertIntAmountToFloat)(result, sourceChainToken.decimals).toFixed();
349
+ }
350
+ getXReserveConfig(sourceChainToken, destinationChainToken) {
351
+ if (!sourceChainToken.xReserve || !destinationChainToken.xReserve) {
352
+ throw new index_1.SdkError("Such route does not support xReserve protocol");
353
+ }
354
+ if ((0, big_js_1.Big)(sourceChainToken.xReserve.feeShare).gte(1)) {
355
+ throw new index_1.SdkError("xReserve feeShare must be less than 1");
356
+ }
357
+ return sourceChainToken.xReserve;
358
+ }
319
359
  async getAmountToSendComputeOft(amountToBeReceivedFloat, sourceChainToken, destinationChainToken) {
320
360
  (0, utils_1.validateAmountGtZero)(amountToBeReceivedFloat);
321
361
  (0, utils_1.validateAmountDecimals)("amountToBeReceivedFloat", amountToBeReceivedFloat, destinationChainToken.decimals);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Big } 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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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.OFT:\n return this.getAmountToBeReceivedComputeOft(amountToSendFloat, sourceChainToken, destinationChainToken);\n }\n }\n\n getAmountToBeReceivedComputeWithPools(\n amountToSendFloat: number | string | Big,\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: number | string | Big,\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 async getAmountToBeReceivedComputeOft(\n amountToSendFloat: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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.OFT:\n return this.getAmountToSendComputeOft(amountToBeReceivedFloat, sourceChainToken, destinationChainToken);\n }\n }\n\n getAmountToSendComputeWithPools(\n amountToBeReceivedFloat: number | string | Big,\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: number | string | Big,\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 async getAmountToSendComputeOft(\n amountToBeReceivedFloat: number | string | Big,\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":["import { Big } 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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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 throw new SdkError(\"Amount is too low for xReserve route\");\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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: number | string | Big,\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"]}