@allbridge/bridge-core-sdk 3.35.1 → 3.36.0-beta.2

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 (103) hide show
  1. package/dist/browser/index.js +2 -2
  2. package/dist/browser/index.js.map +4 -4
  3. package/dist/cjs/index.js +2 -2
  4. package/dist/cjs/index.js.map +4 -4
  5. package/dist/esm/index.js +2 -2
  6. package/dist/esm/index.js.map +4 -4
  7. package/dist/src/client/core-api/api-client-caching.d.ts +6 -1
  8. package/dist/src/client/core-api/api-client-caching.js +11 -0
  9. package/dist/src/client/core-api/api-client-caching.js.map +1 -1
  10. package/dist/src/client/core-api/api-client.d.ts +38 -4
  11. package/dist/src/client/core-api/api-client.js +83 -16
  12. package/dist/src/client/core-api/api-client.js.map +1 -1
  13. package/dist/src/client/core-api/core-api-mapper.d.ts +4 -1
  14. package/dist/src/client/core-api/core-api-mapper.js +25 -10
  15. package/dist/src/client/core-api/core-api-mapper.js.map +1 -1
  16. package/dist/src/client/core-api/core-api.model.d.ts +124 -21
  17. package/dist/src/client/core-api/core-api.model.js +9 -0
  18. package/dist/src/client/core-api/core-api.model.js.map +1 -1
  19. package/dist/src/client/core-api/core-client-base.d.ts +7 -1
  20. package/dist/src/client/core-api/core-client-base.js +9 -0
  21. package/dist/src/client/core-api/core-client-base.js.map +1 -1
  22. package/dist/src/client/core-api/core-client-filtered.d.ts +4 -1
  23. package/dist/src/client/core-api/core-client-filtered.js +9 -0
  24. package/dist/src/client/core-api/core-client-filtered.js.map +1 -1
  25. package/dist/src/client/core-api/core-client-pool-info-caching.d.ts +4 -1
  26. package/dist/src/client/core-api/core-client-pool-info-caching.js +9 -0
  27. package/dist/src/client/core-api/core-client-pool-info-caching.js.map +1 -1
  28. package/dist/src/exceptions/exceptions.d.ts +41 -0
  29. package/dist/src/exceptions/exceptions.js +52 -0
  30. package/dist/src/exceptions/exceptions.js.map +1 -1
  31. package/dist/src/index.d.ts +19 -6
  32. package/dist/src/index.js +6 -1
  33. package/dist/src/index.js.map +1 -1
  34. package/dist/src/models/index.d.ts +4 -2
  35. package/dist/src/models/index.js.map +1 -1
  36. package/dist/src/services/bridge/alg/index.d.ts +5 -1
  37. package/dist/src/services/bridge/alg/index.js +7 -0
  38. package/dist/src/services/bridge/alg/index.js.map +1 -1
  39. package/dist/src/services/bridge/evm/index.d.ts +12 -2
  40. package/dist/src/services/bridge/evm/index.js +32 -0
  41. package/dist/src/services/bridge/evm/index.js.map +1 -1
  42. package/dist/src/services/bridge/index.d.ts +10 -3
  43. package/dist/src/services/bridge/index.js +27 -3
  44. package/dist/src/services/bridge/index.js.map +1 -1
  45. package/dist/src/services/bridge/models/bridge.d.ts +17 -1
  46. package/dist/src/services/bridge/models/bridge.js +6 -0
  47. package/dist/src/services/bridge/models/bridge.js.map +1 -1
  48. package/dist/src/services/bridge/models/bridge.model.d.ts +25 -0
  49. package/dist/src/services/bridge/models/bridge.model.js.map +1 -1
  50. package/dist/src/services/bridge/raw-bridge-transaction-builder.d.ts +8 -1
  51. package/dist/src/services/bridge/raw-bridge-transaction-builder.js +11 -1
  52. package/dist/src/services/bridge/raw-bridge-transaction-builder.js.map +1 -1
  53. package/dist/src/services/bridge/sol/bridge-tx-service.js +3 -0
  54. package/dist/src/services/bridge/sol/bridge-tx-service.js.map +1 -1
  55. package/dist/src/services/bridge/sol/index.d.ts +14 -1
  56. package/dist/src/services/bridge/sol/index.js +47 -2
  57. package/dist/src/services/bridge/sol/index.js.map +1 -1
  58. package/dist/src/services/bridge/sol/payer-with-token-service.js +3 -0
  59. package/dist/src/services/bridge/sol/payer-with-token-service.js.map +1 -1
  60. package/dist/src/services/bridge/spender.js +4 -0
  61. package/dist/src/services/bridge/spender.js.map +1 -1
  62. package/dist/src/services/bridge/srb/index.d.ts +9 -1
  63. package/dist/src/services/bridge/srb/index.js +45 -3
  64. package/dist/src/services/bridge/srb/index.js.map +1 -1
  65. package/dist/src/services/bridge/stx/index.d.ts +6 -2
  66. package/dist/src/services/bridge/stx/index.js +7 -0
  67. package/dist/src/services/bridge/stx/index.js.map +1 -1
  68. package/dist/src/services/bridge/sui/index.d.ts +8 -1
  69. package/dist/src/services/bridge/sui/index.js +24 -0
  70. package/dist/src/services/bridge/sui/index.js.map +1 -1
  71. package/dist/src/services/bridge/trx/index.d.ts +11 -1
  72. package/dist/src/services/bridge/trx/index.js +25 -0
  73. package/dist/src/services/bridge/trx/index.js.map +1 -1
  74. package/dist/src/services/bridge/utils.js +4 -1
  75. package/dist/src/services/bridge/utils.js.map +1 -1
  76. package/dist/src/services/index.d.ts +10 -0
  77. package/dist/src/services/index.js +36 -1
  78. package/dist/src/services/index.js.map +1 -1
  79. package/dist/src/services/near-intents/index.d.ts +62 -0
  80. package/dist/src/services/near-intents/index.js +115 -0
  81. package/dist/src/services/near-intents/index.js.map +1 -0
  82. package/dist/src/services/near-intents/models.d.ts +169 -0
  83. package/dist/src/services/near-intents/models.js +2 -0
  84. package/dist/src/services/near-intents/models.js.map +1 -0
  85. package/dist/src/services/near-intents/utils.d.ts +34 -0
  86. package/dist/src/services/near-intents/utils.js +53 -0
  87. package/dist/src/services/near-intents/utils.js.map +1 -0
  88. package/dist/src/services/token/evm/index.js +3 -0
  89. package/dist/src/services/token/evm/index.js.map +1 -1
  90. package/dist/src/services/token/sol/index.js +3 -0
  91. package/dist/src/services/token/sol/index.js.map +1 -1
  92. package/dist/src/services/token/srb/index.js +11 -0
  93. package/dist/src/services/token/srb/index.js.map +1 -1
  94. package/dist/src/services/token/sui/index.js +5 -0
  95. package/dist/src/services/token/sui/index.js.map +1 -1
  96. package/dist/src/services/token/trx/index.js +3 -0
  97. package/dist/src/services/token/trx/index.js.map +1 -1
  98. package/dist/src/tokens-info/tokens-info.model.d.ts +23 -1
  99. package/dist/src/tokens-info/tokens-info.model.js.map +1 -1
  100. package/dist/src/version.d.ts +1 -1
  101. package/dist/src/version.js +1 -1
  102. package/dist/src/version.js.map +1 -1
  103. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/bridge/sui/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { CoinStruct, SuiJsonRpcClient } from \"@mysten/sui/jsonRpc\";\nimport { coinWithBalance, Transaction, TransactionResult } from \"@mysten/sui/transactions\";\nimport { SUI_CLOCK_OBJECT_ID } from \"@mysten/sui/utils\";\nimport { Big } from \"big.js\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { AllbridgeCoreSdkOptions } from \"../../../index\";\nimport {\n ChainSymbol,\n ChainType,\n FeePaymentMethod,\n Messenger,\n OFTDoesNotSupportedError,\n RawSuiTransaction,\n SdkError,\n SwapParams,\n TransactionResponse,\n} from \"../../../models\";\nimport { SuiAddresses } from \"../../../tokens-info\";\nimport { assertNever } from \"../../../utils/utils\";\nimport { NodeRpcUrlsConfig } from \"../../index\";\nimport { setAddress } from \"../../models/sui/bridge\";\nimport { swap, swapAndBridge, swapAndBridgeWormhole } from \"../../models/sui/bridge/bridge-interface/functions\";\nimport { setAddress as setCctpAddress } from \"../../models/sui/cctp-bridge\";\nimport { bridge } from \"../../models/sui/cctp-bridge/cctp-bridge-interface/functions\";\nimport { setAddress as setUtilsAddress } from \"../../models/sui/utils\";\nimport { fromHex } from \"../../models/sui/utils/bytes32/functions\";\nimport { fetchAllPagesRecursive } from \"../../utils/sui/paginated\";\nimport { getCctpSolTokenRecipientAddress } from \"../get-cctp-sol-token-recipient-address\";\nimport { ChainBridgeService, SendParams, TxSendParamsSui, TxSwapParamsSui } from \"../models\";\nimport { getNonceBigInt, normalizeSuiHex, prepareTxSendParams, prepareTxSwapParams } from \"../utils\";\n\nexport class SuiBridgeService extends ChainBridgeService {\n chainType: ChainType.SUI = ChainType.SUI;\n chainSymbol: ChainSymbol.SUI = ChainSymbol.SUI;\n\n private readonly client: SuiJsonRpcClient;\n\n constructor(\n private nodeRpcUrlsConfig: NodeRpcUrlsConfig,\n readonly params: AllbridgeCoreSdkOptions,\n public api: AllbridgeCoreClient\n ) {\n super();\n this.client = new SuiJsonRpcClient({\n url: nodeRpcUrlsConfig.getNodeRpcUrl(this.chainSymbol),\n network: params.suiIsTestnet ? \"testnet\" : \"mainnet\",\n });\n }\n\n send(): Promise<TransactionResponse> {\n throw new SdkError(\"Method send not implemented.\");\n }\n\n /** @deprecated Do not use. */\n async buildRawTransactionSwap(params: SwapParams): Promise<RawSuiTransaction> {\n const suiAddresses = params.sourceToken.suiAddresses;\n if (!suiAddresses) {\n throw new SdkError(\"SUI token must contain 'suiAddresses'\");\n }\n setAddress(suiAddresses.bridgeAddress, suiAddresses.bridgeAddressOrigin);\n\n const txSwapParams = prepareTxSwapParams(this.chainType, params);\n return await this.buildRawTransactionSwapFromParams(txSwapParams, suiAddresses);\n }\n\n private async buildRawTransactionSwapFromParams(\n params: TxSwapParamsSui,\n suiAddresses: SuiAddresses\n ): Promise<RawSuiTransaction> {\n const { amount, fromAccountAddress, fromTokenAddress, toTokenAddress, minimumReceiveAmount } = params;\n\n const tx = new Transaction();\n tx.setSender(fromAccountAddress);\n\n const args = {\n bridge: suiAddresses.bridgeObjectAddress,\n coin: coinWithBalance({ balance: BigInt(amount), type: fromTokenAddress }),\n receiveAmountMin: BigInt(minimumReceiveAmount),\n };\n const swapResult = swap(tx, [fromTokenAddress, toTokenAddress], args);\n\n const coins: CoinStruct[] = await fetchAllPagesRecursive((cursor: string | null | undefined) =>\n this.client.getCoins({\n owner: params.toAccountAddress,\n coinType: toTokenAddress,\n cursor,\n })\n );\n if (coins.length === 0 || !coins[0]) {\n tx.transferObjects([swapResult], params.toAccountAddress);\n } else {\n tx.mergeCoins(coins[0].coinObjectId, [swapResult]);\n }\n return await tx.toJSON({ client: this.client });\n }\n\n async buildRawTransactionSendFromCustomTx(\n baseTx: string | Uint8Array | Transaction,\n inputCoin: TransactionResult,\n params: SendParams\n ): Promise<RawSuiTransaction> {\n const transaction = Transaction.from(baseTx);\n return this.buildRawTransactionSendFromTx(params, transaction, inputCoin);\n }\n\n async buildRawTransactionSend(params: SendParams): Promise<RawSuiTransaction> {\n return this.buildRawTransactionSendFromTx(params, new Transaction());\n }\n\n private async buildRawTransactionSendFromTx(\n params: SendParams,\n tx: Transaction,\n inputCoin?: TransactionResult\n ): Promise<RawSuiTransaction> {\n const txSendParams = await prepareTxSendParams(this.chainType, params, this.api);\n const { messenger } = txSendParams;\n\n const suiAddresses = params.sourceToken.suiAddresses;\n if (!suiAddresses) {\n throw new SdkError(\"SUI token must contain 'suiAddresses'\");\n }\n setAddress(suiAddresses.bridgeAddress, suiAddresses.bridgeAddressOrigin);\n setUtilsAddress(suiAddresses.utilsAddress);\n\n switch (messenger) {\n case Messenger.ALLBRIDGE:\n return this.buildRawTransactionAllbridgeSend(txSendParams, suiAddresses, tx, inputCoin);\n case Messenger.WORMHOLE:\n return this.buildRawTransactionWormholeSend(txSendParams, suiAddresses, tx, inputCoin);\n case Messenger.CCTP:\n case Messenger.CCTP_V2:\n return this.buildRawTransactionCctpSend(params, txSendParams, suiAddresses, tx, inputCoin);\n case Messenger.X_RESERVE:\n throw new SdkError(\"Messenger xReserve is not supported for SUI bridge\");\n case Messenger.OFT:\n throw new OFTDoesNotSupportedError(\"Messenger OFT is not supported yet.\");\n }\n }\n\n private async buildRawTransactionAllbridgeSend(\n txSendParams: TxSendParamsSui,\n suiAddresses: SuiAddresses,\n tx: Transaction,\n inputCoin?: TransactionResult\n ): Promise<RawSuiTransaction> {\n const {\n amount,\n fromAccountAddress,\n fromTokenAddress,\n toChainId,\n toAccountAddress,\n toTokenAddress,\n fee,\n gasFeePaymentMethod,\n extraGas,\n } = txSendParams;\n let totalFee = fee;\n if (extraGas) {\n totalFee = Big(totalFee).plus(extraGas).toFixed();\n }\n\n tx.setSender(fromAccountAddress);\n\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n const totalFeeCoin =\n totalFee === \"0\"\n ? coinWithBalance({ balance: BigInt(totalFee), useGasCoin: false })\n : coinWithBalance({ balance: BigInt(totalFee) });\n const args = {\n bridge: suiAddresses.bridgeObjectAddress,\n messenger: suiAddresses.allbridgeMessengerObjectAddress,\n amount: inputCoin ?? coinWithBalance({ balance: BigInt(amount), type: fromTokenAddress }),\n destinationChainId: toChainId,\n nonce: getNonceBigInt(),\n recipient: fromHex(tx, normalizeSuiHex(toAccountAddress)),\n receiveToken: fromHex(tx, normalizeSuiHex(toTokenAddress)),\n gasOracle: suiAddresses.gasOracleObjectAddress,\n feeTokenCoin: coinWithBalance({ balance: BigInt(0), type: fromTokenAddress }),\n feeSuiCoin: totalFeeCoin,\n };\n swapAndBridge(tx, fromTokenAddress, args);\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n const amountWithoutFee = BigInt(amount) - BigInt(totalFee);\n\n let amountCoin, feeTokenCoin;\n if (inputCoin) {\n const [feeTokenCoinS] = tx.splitCoins(inputCoin, [totalFee]);\n amountCoin = inputCoin;\n feeTokenCoin = feeTokenCoinS;\n } else {\n amountCoin = coinWithBalance({ balance: amountWithoutFee, type: fromTokenAddress });\n feeTokenCoin = coinWithBalance({ balance: BigInt(totalFee), type: fromTokenAddress });\n }\n\n const args = {\n bridge: suiAddresses.bridgeObjectAddress,\n messenger: suiAddresses.allbridgeMessengerObjectAddress,\n amount: amountCoin,\n destinationChainId: toChainId,\n nonce: getNonceBigInt(),\n recipient: fromHex(tx, normalizeSuiHex(toAccountAddress)),\n receiveToken: fromHex(tx, normalizeSuiHex(toTokenAddress)),\n gasOracle: suiAddresses.gasOracleObjectAddress,\n feeTokenCoin: feeTokenCoin,\n feeSuiCoin: coinWithBalance({ balance: BigInt(0), useGasCoin: false }),\n };\n swapAndBridge(tx, fromTokenAddress, args);\n break;\n }\n case FeePaymentMethod.WITH_ABR:\n throw new SdkError(\"SUI bridge does not support ABR payment method\");\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n\n return await tx.toJSON({ client: this.client });\n }\n\n private async buildRawTransactionWormholeSend(\n txSendParams: TxSendParamsSui,\n suiAddresses: SuiAddresses,\n tx: Transaction,\n inputCoin?: TransactionResult\n ): Promise<RawSuiTransaction> {\n const {\n amount,\n fromAccountAddress,\n fromTokenAddress,\n toChainId,\n toAccountAddress,\n toTokenAddress,\n fee,\n gasFeePaymentMethod,\n extraGas,\n } = txSendParams;\n let totalFee = fee;\n if (extraGas) {\n totalFee = Big(totalFee).plus(extraGas).toFixed();\n }\n\n tx.setSender(fromAccountAddress);\n\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n const totalFeeCoin =\n totalFee === \"0\"\n ? coinWithBalance({ balance: BigInt(totalFee), useGasCoin: false })\n : coinWithBalance({ balance: BigInt(totalFee) });\n const args = {\n bridge: suiAddresses.bridgeObjectAddress,\n messenger: suiAddresses.wormholeMessengerObjectAddress,\n wormholeState: suiAddresses.wormholeStateObjectAddress,\n theClock: SUI_CLOCK_OBJECT_ID,\n amount: inputCoin ?? coinWithBalance({ balance: BigInt(amount), type: fromTokenAddress }),\n destinationChainId: toChainId,\n nonce: getNonceBigInt(),\n recipient: fromHex(tx, normalizeSuiHex(toAccountAddress)),\n receiveToken: fromHex(tx, normalizeSuiHex(toTokenAddress)),\n gasOracle: suiAddresses.gasOracleObjectAddress,\n feeTokenCoin: coinWithBalance({ balance: BigInt(0), type: fromTokenAddress }),\n feeSuiCoin: totalFeeCoin,\n };\n swapAndBridgeWormhole(tx, fromTokenAddress, args);\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n const amountWithoutFee = BigInt(amount) - BigInt(totalFee);\n\n let amountCoin, feeTokenCoin;\n if (inputCoin) {\n const [feeTokenCoinS] = tx.splitCoins(inputCoin, [totalFee]);\n amountCoin = inputCoin;\n feeTokenCoin = feeTokenCoinS;\n } else {\n amountCoin = coinWithBalance({ balance: amountWithoutFee, type: fromTokenAddress });\n feeTokenCoin = coinWithBalance({ balance: BigInt(totalFee), type: fromTokenAddress });\n }\n\n const args = {\n bridge: suiAddresses.bridgeObjectAddress,\n messenger: suiAddresses.wormholeMessengerObjectAddress,\n wormholeState: suiAddresses.wormholeStateObjectAddress,\n theClock: SUI_CLOCK_OBJECT_ID,\n amount: amountCoin,\n destinationChainId: toChainId,\n nonce: getNonceBigInt(),\n recipient: fromHex(tx, normalizeSuiHex(toAccountAddress)),\n receiveToken: fromHex(tx, normalizeSuiHex(toTokenAddress)),\n gasOracle: suiAddresses.gasOracleObjectAddress,\n feeTokenCoin: feeTokenCoin,\n feeSuiCoin: coinWithBalance({ balance: BigInt(0), useGasCoin: false }),\n };\n swapAndBridgeWormhole(tx, fromTokenAddress, args);\n break;\n }\n case FeePaymentMethod.WITH_ABR:\n throw new SdkError(\"SUI bridge does not support ABR payment method\");\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n return await tx.toJSON({ client: this.client });\n }\n\n private async buildRawTransactionCctpSend(\n params: SendParams,\n txSendParams: TxSendParamsSui,\n suiAddresses: SuiAddresses,\n tx: Transaction,\n inputCoin?: TransactionResult\n ): Promise<RawSuiTransaction> {\n const {\n amount,\n fromAccountAddress,\n fromTokenAddress,\n toChainId,\n toAccountAddress,\n fee,\n gasFeePaymentMethod,\n extraGas,\n } = txSendParams;\n\n setCctpAddress(suiAddresses.cctpAddress, suiAddresses.cctpAddressOrigin);\n\n let totalFee = fee;\n if (extraGas) {\n totalFee = Big(totalFee).plus(extraGas).toFixed();\n }\n\n tx.setSender(fromAccountAddress);\n\n const recipientWalletAddress = fromHex(tx, normalizeSuiHex(toAccountAddress));\n let recipient: TransactionResult;\n if (params.destinationToken.chainType === ChainType.SOLANA) {\n const recipientStr = await getCctpSolTokenRecipientAddress(\n this.chainType,\n params.toAccountAddress,\n params.destinationToken.tokenAddress,\n this.nodeRpcUrlsConfig.getNodeRpcUrl(ChainSymbol.SOL)\n );\n recipient = fromHex(tx, normalizeSuiHex(recipientStr));\n } else {\n recipient = recipientWalletAddress;\n }\n\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n const totalFeeCoin =\n totalFee === \"0\"\n ? coinWithBalance({ balance: BigInt(totalFee), useGasCoin: false })\n : coinWithBalance({ balance: BigInt(totalFee) });\n const args = {\n cctpBridge: suiAddresses.cctpObjectAddress,\n tokenMessengerMinterState: suiAddresses.cctpTokenMessengerMinterStateObjectAddress,\n messageTransmitterState: suiAddresses.cctpMessageTransmitterStateObjectAddress,\n treasury: suiAddresses.cctpTreasuryObjectAddress,\n denyList: suiAddresses.cctpDenyListObjectAddress,\n amount: inputCoin ?? coinWithBalance({ balance: BigInt(amount), type: fromTokenAddress }),\n destinationChainId: toChainId,\n recipient: recipient,\n recipientWalletAddress: recipientWalletAddress,\n gasOracle: suiAddresses.gasOracleObjectAddress,\n feeTokenCoin: coinWithBalance({ balance: BigInt(0), type: fromTokenAddress }),\n feeSuiCoin: totalFeeCoin,\n };\n bridge(tx, fromTokenAddress, args);\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n const amountWithoutFee = BigInt(amount) - BigInt(totalFee);\n\n let amountCoin, feeTokenCoin;\n if (inputCoin) {\n const [feeTokenCoinS] = tx.splitCoins(inputCoin, [totalFee]);\n amountCoin = inputCoin;\n feeTokenCoin = feeTokenCoinS;\n } else {\n amountCoin = coinWithBalance({ balance: amountWithoutFee, type: fromTokenAddress });\n feeTokenCoin = coinWithBalance({ balance: BigInt(totalFee), type: fromTokenAddress });\n }\n\n const args = {\n cctpBridge: suiAddresses.cctpObjectAddress,\n tokenMessengerMinterState: suiAddresses.cctpTokenMessengerMinterStateObjectAddress,\n messageTransmitterState: suiAddresses.cctpMessageTransmitterStateObjectAddress,\n treasury: suiAddresses.cctpTreasuryObjectAddress,\n denyList: suiAddresses.cctpDenyListObjectAddress,\n amount: amountCoin,\n destinationChainId: toChainId,\n recipient: recipient,\n recipientWalletAddress: recipientWalletAddress,\n gasOracle: suiAddresses.gasOracleObjectAddress,\n feeTokenCoin: feeTokenCoin,\n feeSuiCoin: coinWithBalance({ balance: BigInt(0), useGasCoin: false }),\n };\n bridge(tx, fromTokenAddress, args);\n break;\n }\n case FeePaymentMethod.WITH_ABR:\n throw new SdkError(\"SUI bridge does not support ABR payment method\");\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n\n return await tx.toJSON({ client: this.client });\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/bridge/sui/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { CoinStruct, SuiJsonRpcClient } from \"@mysten/sui/jsonRpc\";\nimport { coinWithBalance, Transaction, TransactionResult } from \"@mysten/sui/transactions\";\nimport { SUI_CLOCK_OBJECT_ID } from \"@mysten/sui/utils\";\nimport { Big } from \"big.js\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { AllbridgeCoreSdkOptions } from \"../../../index\";\nimport {\n ChainSymbol,\n ChainType,\n FeePaymentMethod,\n Messenger,\n OFTDoesNotSupportedError,\n RawSuiTransaction,\n SdkError,\n SwapParams,\n TransactionResponse,\n} from \"../../../models\";\nimport { SuiAddresses } from \"../../../tokens-info\";\nimport { assertNever } from \"../../../utils/utils\";\nimport { NodeRpcUrlsConfig } from \"../../index\";\nimport { setAddress } from \"../../models/sui/bridge\";\nimport { swap, swapAndBridge, swapAndBridgeWormhole } from \"../../models/sui/bridge/bridge-interface/functions\";\nimport { setAddress as setCctpAddress } from \"../../models/sui/cctp-bridge\";\nimport { bridge } from \"../../models/sui/cctp-bridge/cctp-bridge-interface/functions\";\nimport { setAddress as setUtilsAddress } from \"../../models/sui/utils\";\nimport { fromHex } from \"../../models/sui/utils/bytes32/functions\";\nimport { nearIntentsNotABridgeContractError } from \"../../near-intents/utils\";\nimport { fetchAllPagesRecursive } from \"../../utils/sui/paginated\";\nimport { getCctpSolTokenRecipientAddress } from \"../get-cctp-sol-token-recipient-address\";\nimport { ChainBridgeService, SendParams, TxSendParamsSui, TxSwapParamsSui, TxTransferParams } from \"../models\";\nimport { getNonceBigInt, normalizeSuiHex, prepareTxSendParams, prepareTxSwapParams } from \"../utils\";\n\nexport class SuiBridgeService extends ChainBridgeService {\n chainType: ChainType.SUI = ChainType.SUI;\n chainSymbol: ChainSymbol.SUI = ChainSymbol.SUI;\n\n private readonly client: SuiJsonRpcClient;\n\n constructor(\n private nodeRpcUrlsConfig: NodeRpcUrlsConfig,\n readonly params: AllbridgeCoreSdkOptions,\n public api: AllbridgeCoreClient\n ) {\n super();\n this.client = new SuiJsonRpcClient({\n url: nodeRpcUrlsConfig.getNodeRpcUrl(this.chainSymbol),\n network: params.suiIsTestnet ? \"testnet\" : \"mainnet\",\n });\n }\n\n send(): Promise<TransactionResponse> {\n throw new SdkError(\"Method send not implemented.\");\n }\n\n /**\n * Builds a coin transfer of `amount` to `params.toAddress`: SUI split from the gas coin when `token.isNative`,\n * otherwise a coin of the `token.originTokenAddress` type taken from the sender's coins.\n * Used for `Messenger.NEAR_INTENTS` deposits.\n * @returns the transaction JSON\n */\n async buildRawTransactionTransfer(params: TxTransferParams): Promise<RawSuiTransaction> {\n const { amount, token, fromAccountAddress, toAddress } = params;\n let coinType: string | undefined;\n if (!token.isNative) {\n coinType = token.originTokenAddress;\n if (!coinType) {\n throw new SdkError(\"SUI token must contain 'originTokenAddress'\");\n }\n }\n const tx = new Transaction();\n tx.setSender(fromAccountAddress);\n const coin = coinWithBalance(coinType ? { balance: BigInt(amount), type: coinType } : { balance: BigInt(amount) });\n tx.transferObjects([coin], toAddress);\n return await tx.toJSON({ client: this.client });\n }\n\n /** @deprecated Do not use. */\n async buildRawTransactionSwap(params: SwapParams): Promise<RawSuiTransaction> {\n const suiAddresses = params.sourceToken.suiAddresses;\n if (!suiAddresses) {\n throw new SdkError(\"SUI token must contain 'suiAddresses'\");\n }\n setAddress(suiAddresses.bridgeAddress, suiAddresses.bridgeAddressOrigin);\n\n const txSwapParams = prepareTxSwapParams(this.chainType, params);\n return await this.buildRawTransactionSwapFromParams(txSwapParams, suiAddresses);\n }\n\n private async buildRawTransactionSwapFromParams(\n params: TxSwapParamsSui,\n suiAddresses: SuiAddresses\n ): Promise<RawSuiTransaction> {\n const { amount, fromAccountAddress, fromTokenAddress, toTokenAddress, minimumReceiveAmount } = params;\n\n const tx = new Transaction();\n tx.setSender(fromAccountAddress);\n\n const args = {\n bridge: suiAddresses.bridgeObjectAddress,\n coin: coinWithBalance({ balance: BigInt(amount), type: fromTokenAddress }),\n receiveAmountMin: BigInt(minimumReceiveAmount),\n };\n const swapResult = swap(tx, [fromTokenAddress, toTokenAddress], args);\n\n const coins: CoinStruct[] = await fetchAllPagesRecursive((cursor: string | null | undefined) =>\n this.client.getCoins({\n owner: params.toAccountAddress,\n coinType: toTokenAddress,\n cursor,\n })\n );\n if (coins.length === 0 || !coins[0]) {\n tx.transferObjects([swapResult], params.toAccountAddress);\n } else {\n tx.mergeCoins(coins[0].coinObjectId, [swapResult]);\n }\n return await tx.toJSON({ client: this.client });\n }\n\n async buildRawTransactionSendFromCustomTx(\n baseTx: string | Uint8Array | Transaction,\n inputCoin: TransactionResult,\n params: SendParams\n ): Promise<RawSuiTransaction> {\n const transaction = Transaction.from(baseTx);\n return this.buildRawTransactionSendFromTx(params, transaction, inputCoin);\n }\n\n async buildRawTransactionSend(params: SendParams): Promise<RawSuiTransaction> {\n return this.buildRawTransactionSendFromTx(params, new Transaction());\n }\n\n private async buildRawTransactionSendFromTx(\n params: SendParams,\n tx: Transaction,\n inputCoin?: TransactionResult\n ): Promise<RawSuiTransaction> {\n const txSendParams = await prepareTxSendParams(this.chainType, params, this.api);\n const { messenger } = txSendParams;\n\n const suiAddresses = params.sourceToken.suiAddresses;\n if (!suiAddresses) {\n throw new SdkError(\"SUI token must contain 'suiAddresses'\");\n }\n setAddress(suiAddresses.bridgeAddress, suiAddresses.bridgeAddressOrigin);\n setUtilsAddress(suiAddresses.utilsAddress);\n\n switch (messenger) {\n case Messenger.ALLBRIDGE:\n return this.buildRawTransactionAllbridgeSend(txSendParams, suiAddresses, tx, inputCoin);\n case Messenger.WORMHOLE:\n return this.buildRawTransactionWormholeSend(txSendParams, suiAddresses, tx, inputCoin);\n case Messenger.CCTP:\n case Messenger.CCTP_V2:\n return this.buildRawTransactionCctpSend(params, txSendParams, suiAddresses, tx, inputCoin);\n case Messenger.X_RESERVE:\n throw new SdkError(\"Messenger xReserve is not supported for SUI bridge\");\n case Messenger.OFT:\n throw new OFTDoesNotSupportedError(\"Messenger OFT is not supported yet.\");\n case Messenger.NEAR_INTENTS:\n throw nearIntentsNotABridgeContractError();\n }\n }\n\n private async buildRawTransactionAllbridgeSend(\n txSendParams: TxSendParamsSui,\n suiAddresses: SuiAddresses,\n tx: Transaction,\n inputCoin?: TransactionResult\n ): Promise<RawSuiTransaction> {\n const {\n amount,\n fromAccountAddress,\n fromTokenAddress,\n toChainId,\n toAccountAddress,\n toTokenAddress,\n fee,\n gasFeePaymentMethod,\n extraGas,\n } = txSendParams;\n let totalFee = fee;\n if (extraGas) {\n totalFee = Big(totalFee).plus(extraGas).toFixed();\n }\n\n tx.setSender(fromAccountAddress);\n\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n const totalFeeCoin =\n totalFee === \"0\"\n ? coinWithBalance({ balance: BigInt(totalFee), useGasCoin: false })\n : coinWithBalance({ balance: BigInt(totalFee) });\n const args = {\n bridge: suiAddresses.bridgeObjectAddress,\n messenger: suiAddresses.allbridgeMessengerObjectAddress,\n amount: inputCoin ?? coinWithBalance({ balance: BigInt(amount), type: fromTokenAddress }),\n destinationChainId: toChainId,\n nonce: getNonceBigInt(),\n recipient: fromHex(tx, normalizeSuiHex(toAccountAddress)),\n receiveToken: fromHex(tx, normalizeSuiHex(toTokenAddress)),\n gasOracle: suiAddresses.gasOracleObjectAddress,\n feeTokenCoin: coinWithBalance({ balance: BigInt(0), type: fromTokenAddress }),\n feeSuiCoin: totalFeeCoin,\n };\n swapAndBridge(tx, fromTokenAddress, args);\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n const amountWithoutFee = BigInt(amount) - BigInt(totalFee);\n\n let amountCoin, feeTokenCoin;\n if (inputCoin) {\n const [feeTokenCoinS] = tx.splitCoins(inputCoin, [totalFee]);\n amountCoin = inputCoin;\n feeTokenCoin = feeTokenCoinS;\n } else {\n amountCoin = coinWithBalance({ balance: amountWithoutFee, type: fromTokenAddress });\n feeTokenCoin = coinWithBalance({ balance: BigInt(totalFee), type: fromTokenAddress });\n }\n\n const args = {\n bridge: suiAddresses.bridgeObjectAddress,\n messenger: suiAddresses.allbridgeMessengerObjectAddress,\n amount: amountCoin,\n destinationChainId: toChainId,\n nonce: getNonceBigInt(),\n recipient: fromHex(tx, normalizeSuiHex(toAccountAddress)),\n receiveToken: fromHex(tx, normalizeSuiHex(toTokenAddress)),\n gasOracle: suiAddresses.gasOracleObjectAddress,\n feeTokenCoin: feeTokenCoin,\n feeSuiCoin: coinWithBalance({ balance: BigInt(0), useGasCoin: false }),\n };\n swapAndBridge(tx, fromTokenAddress, args);\n break;\n }\n case FeePaymentMethod.WITH_ABR:\n throw new SdkError(\"SUI bridge does not support ABR payment method\");\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n\n return await tx.toJSON({ client: this.client });\n }\n\n private async buildRawTransactionWormholeSend(\n txSendParams: TxSendParamsSui,\n suiAddresses: SuiAddresses,\n tx: Transaction,\n inputCoin?: TransactionResult\n ): Promise<RawSuiTransaction> {\n const {\n amount,\n fromAccountAddress,\n fromTokenAddress,\n toChainId,\n toAccountAddress,\n toTokenAddress,\n fee,\n gasFeePaymentMethod,\n extraGas,\n } = txSendParams;\n let totalFee = fee;\n if (extraGas) {\n totalFee = Big(totalFee).plus(extraGas).toFixed();\n }\n\n tx.setSender(fromAccountAddress);\n\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n const totalFeeCoin =\n totalFee === \"0\"\n ? coinWithBalance({ balance: BigInt(totalFee), useGasCoin: false })\n : coinWithBalance({ balance: BigInt(totalFee) });\n const args = {\n bridge: suiAddresses.bridgeObjectAddress,\n messenger: suiAddresses.wormholeMessengerObjectAddress,\n wormholeState: suiAddresses.wormholeStateObjectAddress,\n theClock: SUI_CLOCK_OBJECT_ID,\n amount: inputCoin ?? coinWithBalance({ balance: BigInt(amount), type: fromTokenAddress }),\n destinationChainId: toChainId,\n nonce: getNonceBigInt(),\n recipient: fromHex(tx, normalizeSuiHex(toAccountAddress)),\n receiveToken: fromHex(tx, normalizeSuiHex(toTokenAddress)),\n gasOracle: suiAddresses.gasOracleObjectAddress,\n feeTokenCoin: coinWithBalance({ balance: BigInt(0), type: fromTokenAddress }),\n feeSuiCoin: totalFeeCoin,\n };\n swapAndBridgeWormhole(tx, fromTokenAddress, args);\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n const amountWithoutFee = BigInt(amount) - BigInt(totalFee);\n\n let amountCoin, feeTokenCoin;\n if (inputCoin) {\n const [feeTokenCoinS] = tx.splitCoins(inputCoin, [totalFee]);\n amountCoin = inputCoin;\n feeTokenCoin = feeTokenCoinS;\n } else {\n amountCoin = coinWithBalance({ balance: amountWithoutFee, type: fromTokenAddress });\n feeTokenCoin = coinWithBalance({ balance: BigInt(totalFee), type: fromTokenAddress });\n }\n\n const args = {\n bridge: suiAddresses.bridgeObjectAddress,\n messenger: suiAddresses.wormholeMessengerObjectAddress,\n wormholeState: suiAddresses.wormholeStateObjectAddress,\n theClock: SUI_CLOCK_OBJECT_ID,\n amount: amountCoin,\n destinationChainId: toChainId,\n nonce: getNonceBigInt(),\n recipient: fromHex(tx, normalizeSuiHex(toAccountAddress)),\n receiveToken: fromHex(tx, normalizeSuiHex(toTokenAddress)),\n gasOracle: suiAddresses.gasOracleObjectAddress,\n feeTokenCoin: feeTokenCoin,\n feeSuiCoin: coinWithBalance({ balance: BigInt(0), useGasCoin: false }),\n };\n swapAndBridgeWormhole(tx, fromTokenAddress, args);\n break;\n }\n case FeePaymentMethod.WITH_ABR:\n throw new SdkError(\"SUI bridge does not support ABR payment method\");\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n return await tx.toJSON({ client: this.client });\n }\n\n private async buildRawTransactionCctpSend(\n params: SendParams,\n txSendParams: TxSendParamsSui,\n suiAddresses: SuiAddresses,\n tx: Transaction,\n inputCoin?: TransactionResult\n ): Promise<RawSuiTransaction> {\n const {\n amount,\n fromAccountAddress,\n fromTokenAddress,\n toChainId,\n toAccountAddress,\n fee,\n gasFeePaymentMethod,\n extraGas,\n } = txSendParams;\n\n setCctpAddress(suiAddresses.cctpAddress, suiAddresses.cctpAddressOrigin);\n\n let totalFee = fee;\n if (extraGas) {\n totalFee = Big(totalFee).plus(extraGas).toFixed();\n }\n\n tx.setSender(fromAccountAddress);\n\n const recipientWalletAddress = fromHex(tx, normalizeSuiHex(toAccountAddress));\n let recipient: TransactionResult;\n if (params.destinationToken.chainType === ChainType.SOLANA) {\n const recipientStr = await getCctpSolTokenRecipientAddress(\n this.chainType,\n params.toAccountAddress,\n params.destinationToken.tokenAddress,\n this.nodeRpcUrlsConfig.getNodeRpcUrl(ChainSymbol.SOL)\n );\n recipient = fromHex(tx, normalizeSuiHex(recipientStr));\n } else {\n recipient = recipientWalletAddress;\n }\n\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n const totalFeeCoin =\n totalFee === \"0\"\n ? coinWithBalance({ balance: BigInt(totalFee), useGasCoin: false })\n : coinWithBalance({ balance: BigInt(totalFee) });\n const args = {\n cctpBridge: suiAddresses.cctpObjectAddress,\n tokenMessengerMinterState: suiAddresses.cctpTokenMessengerMinterStateObjectAddress,\n messageTransmitterState: suiAddresses.cctpMessageTransmitterStateObjectAddress,\n treasury: suiAddresses.cctpTreasuryObjectAddress,\n denyList: suiAddresses.cctpDenyListObjectAddress,\n amount: inputCoin ?? coinWithBalance({ balance: BigInt(amount), type: fromTokenAddress }),\n destinationChainId: toChainId,\n recipient: recipient,\n recipientWalletAddress: recipientWalletAddress,\n gasOracle: suiAddresses.gasOracleObjectAddress,\n feeTokenCoin: coinWithBalance({ balance: BigInt(0), type: fromTokenAddress }),\n feeSuiCoin: totalFeeCoin,\n };\n bridge(tx, fromTokenAddress, args);\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n const amountWithoutFee = BigInt(amount) - BigInt(totalFee);\n\n let amountCoin, feeTokenCoin;\n if (inputCoin) {\n const [feeTokenCoinS] = tx.splitCoins(inputCoin, [totalFee]);\n amountCoin = inputCoin;\n feeTokenCoin = feeTokenCoinS;\n } else {\n amountCoin = coinWithBalance({ balance: amountWithoutFee, type: fromTokenAddress });\n feeTokenCoin = coinWithBalance({ balance: BigInt(totalFee), type: fromTokenAddress });\n }\n\n const args = {\n cctpBridge: suiAddresses.cctpObjectAddress,\n tokenMessengerMinterState: suiAddresses.cctpTokenMessengerMinterStateObjectAddress,\n messageTransmitterState: suiAddresses.cctpMessageTransmitterStateObjectAddress,\n treasury: suiAddresses.cctpTreasuryObjectAddress,\n denyList: suiAddresses.cctpDenyListObjectAddress,\n amount: amountCoin,\n destinationChainId: toChainId,\n recipient: recipient,\n recipientWalletAddress: recipientWalletAddress,\n gasOracle: suiAddresses.gasOracleObjectAddress,\n feeTokenCoin: feeTokenCoin,\n feeSuiCoin: coinWithBalance({ balance: BigInt(0), useGasCoin: false }),\n };\n bridge(tx, fromTokenAddress, args);\n break;\n }\n case FeePaymentMethod.WITH_ABR:\n throw new SdkError(\"SUI bridge does not support ABR payment method\");\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n\n return await tx.toJSON({ client: this.client });\n }\n}\n"]}
@@ -3,7 +3,7 @@ import { ChainType } from "../../../chains/chain.enums";
3
3
  import { AllbridgeCoreClient } from "../../../client/core-api/core-client-base";
4
4
  import { SwapParams, TransactionResponse } from "../../../models";
5
5
  import { RawTransaction } from "../../models";
6
- import { SendParams, TxSendParamsTrx, TxSwapParamsTrx } from "../models";
6
+ import { SendParams, TxSendParamsTrx, TxSwapParamsTrx, TxTransferParams } from "../models";
7
7
  import { ChainBridgeService } from "../models/bridge";
8
8
  export declare class TronBridgeService extends ChainBridgeService {
9
9
  tronWeb: TronWeb;
@@ -11,6 +11,16 @@ export declare class TronBridgeService extends ChainBridgeService {
11
11
  chainType: ChainType.TRX;
12
12
  constructor(tronWeb: TronWeb, api: AllbridgeCoreClient);
13
13
  send(params: SendParams): Promise<TransactionResponse>;
14
+ /**
15
+ * Signs the raw transaction with the TronWeb instance and sends it.
16
+ * @internal
17
+ */
18
+ sendRawTransaction(rawTransaction: RawTransaction): Promise<TransactionResponse>;
19
+ /**
20
+ * Builds a plain transfer: TRC-20 `transfer(toAddress, amount)` on the token contract,
21
+ * or a TRX transfer of `amount` sun when `token.isNative`. Used for `Messenger.NEAR_INTENTS` deposits.
22
+ */
23
+ buildRawTransactionTransfer(params: TxTransferParams): Promise<RawTransaction>;
14
24
  /** @deprecated Do not use. */
15
25
  buildRawTransactionSwap(params: SwapParams): Promise<RawTransaction>;
16
26
  /** @deprecated Do not use. */
@@ -3,6 +3,7 @@ import { ChainType } from "../../../chains/chain.enums";
3
3
  import { SdkError } from "../../../exceptions";
4
4
  import { FeePaymentMethod, Messenger } from "../../../models";
5
5
  import { assertNever } from "../../../utils/utils";
6
+ import { nearIntentsNotABridgeContractError } from "../../near-intents/utils";
6
7
  import { sendRawTransaction } from "../../utils/trx";
7
8
  import { ChainBridgeService } from "../models/bridge";
8
9
  import { getNonceBigInt, prepareTxSendParams, prepareTxSwapParams } from "../utils";
@@ -20,6 +21,28 @@ export class TronBridgeService extends ChainBridgeService {
20
21
  const rawTransaction = await this.buildRawTransactionSendFromParams(params, txSendParams);
21
22
  return await sendRawTransaction(this.tronWeb, rawTransaction);
22
23
  }
24
+ /**
25
+ * Signs the raw transaction with the TronWeb instance and sends it.
26
+ * @internal
27
+ */
28
+ async sendRawTransaction(rawTransaction) {
29
+ return await sendRawTransaction(this.tronWeb, rawTransaction);
30
+ }
31
+ /**
32
+ * Builds a plain transfer: TRC-20 `transfer(toAddress, amount)` on the token contract,
33
+ * or a TRX transfer of `amount` sun when `token.isNative`. Used for `Messenger.NEAR_INTENTS` deposits.
34
+ */
35
+ async buildRawTransactionTransfer(params) {
36
+ const { amount, token, fromAccountAddress, toAddress } = params;
37
+ if (token.isNative) {
38
+ return await this.tronWeb.transactionBuilder.sendTrx(toAddress, +amount, fromAccountAddress);
39
+ }
40
+ const parameters = [
41
+ { type: "address", value: toAddress },
42
+ { type: "uint256", value: amount },
43
+ ];
44
+ return this.buildRawTransaction(token.tokenAddress, "transfer(address,uint256)", parameters, "0", fromAccountAddress);
45
+ }
23
46
  /** @deprecated Do not use. */
24
47
  async buildRawTransactionSwap(params) {
25
48
  const txSwapParams = prepareTxSwapParams(this.chainType, params);
@@ -122,6 +145,8 @@ export class TronBridgeService extends ChainBridgeService {
122
145
  break;
123
146
  case Messenger.X_RESERVE:
124
147
  throw new SdkError("Messenger xReserve is not supported for TRX bridge");
148
+ case Messenger.NEAR_INTENTS:
149
+ throw nearIntentsNotABridgeContractError();
125
150
  case Messenger.ALLBRIDGE:
126
151
  case Messenger.WORMHOLE:
127
152
  switch (gasFeePaymentMethod) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/bridge/trx/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAmC,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpF,MAAM,OAAO,iBAAkB,SAAQ,kBAAkB;IAI9C;IACA;IAJT,SAAS,GAAkB,SAAS,CAAC,GAAG,CAAC;IAEzC,YACS,OAAgB,EAChB,GAAwB;QAE/B,KAAK,EAAE,CAAC;QAHD,YAAO,GAAP,OAAO,CAAS;QAChB,QAAG,GAAH,GAAG,CAAqB;IAGjC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAkB;QAC3B,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACjF,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC1F,OAAO,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAChE,CAAC;IAED,8BAA8B;IAC9B,KAAK,CAAC,uBAAuB,CAAC,MAAkB;QAC9C,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACjE,OAAO,MAAM,IAAI,CAAC,iCAAiC,CAAC,YAAY,CAAC,CAAC;IACpE,CAAC;IAED,8BAA8B;IAC9B,KAAK,CAAC,iCAAiC,CAAC,MAAuB;QAC7D,MAAM,EACJ,MAAM,EACN,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,GACrB,GAAG,MAAM,CAAC;QAEX,MAAM,UAAU,GAAG;YACjB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;YAClC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;YAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE;YAC1C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;YAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,oBAAoB,EAAE;SACjD,CAAC;QACF,MAAM,eAAe,GAAG,+CAA+C,CAAC;QACxE,OAAO,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACzG,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,MAAkB;QAC9C,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,iCAAiC,CAAC,UAAsB,EAAE,MAAuB;QACrF,MAAM,EACJ,MAAM,EACN,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,GAAG,EACH,mBAAmB,EACnB,QAAQ,EACR,YAAY,GACb,GAAG,MAAM,CAAC;QAEX,IAAI,QAAQ,GAAG,GAAG,CAAC;QACnB,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QACpD,CAAC;QAED,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC1C,IAAI,UAAU,CAAC;QACf,IAAI,KAAa,CAAC;QAClB,IAAI,eAAuB,CAAC;QAC5B,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,SAAS,CAAC,IAAI,CAAC;YACpB,KAAK,SAAS,CAAC,OAAO;gBACpB,QAAQ,mBAAmB,EAAE,CAAC;oBAC5B,KAAK,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC;wBAC3C,UAAU,GAAG;4BACX,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;4BAClC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;4BAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;4BACrC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;yBAC9B,CAAC;wBACF,KAAK,GAAG,QAAQ,CAAC;wBACjB,MAAM;oBACR,CAAC;oBACD,KAAK,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;wBACtC,UAAU,GAAG;4BACX,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;4BAClC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;4BAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;4BACrC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;yBACrC,CAAC;wBACF,KAAK,GAAG,GAAG,CAAC;wBACZ,MAAM;oBACR,CAAC;oBACD,KAAK,gBAAgB,CAAC,QAAQ;wBAC5B,MAAM,IAAI,QAAQ,CAAC,gDAAgD,CAAC,CAAC;oBACvE,OAAO,CAAC,CAAC,CAAC;wBACR,OAAO,WAAW,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC;gBACD,eAAe,GAAG,yCAAyC,CAAC;gBAC5D,MAAM;YACR,KAAK,SAAS,CAAC,GAAG;gBAChB,QAAQ,mBAAmB,EAAE,CAAC;oBAC5B,KAAK,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC;wBAC3C,UAAU,GAAG;4BACX,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,YAAY,EAAE;4BAC/D,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;4BAClC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;4BAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;4BACrC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;4BAC7B,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,IAAI,GAAG,EAAE;4BAC/C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;yBACjC,CAAC;wBACF,KAAK,GAAG,QAAQ,CAAC;wBACjB,MAAM;oBACR,CAAC;oBACD,KAAK,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;wBACtC,UAAU,GAAG;4BACX,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,YAAY,EAAE;4BAC/D,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;4BAClC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;4BAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;4BACrC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;4BACpC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,IAAI,GAAG,EAAE;4BAC/C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;yBACjC,CAAC;wBACF,KAAK,GAAG,GAAG,CAAC;wBACZ,MAAM;oBACR,CAAC;oBACD,KAAK,gBAAgB,CAAC,QAAQ;wBAC5B,MAAM,IAAI,QAAQ,CAAC,gDAAgD,CAAC,CAAC;oBACvE,OAAO,CAAC,CAAC,CAAC;wBACR,OAAO,WAAW,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC;gBACD,eAAe,GAAG,iEAAiE,CAAC;gBACpF,MAAM;YACR,KAAK,SAAS,CAAC,SAAS;gBACtB,MAAM,IAAI,QAAQ,CAAC,oDAAoD,CAAC,CAAC;YAC3E,KAAK,SAAS,CAAC,SAAS,CAAC;YACzB,KAAK,SAAS,CAAC,QAAQ;gBACrB,QAAQ,mBAAmB,EAAE,CAAC;oBAC5B,KAAK,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC;wBAC3C,UAAU,GAAG;4BACX,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;4BAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;4BAClC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;4BAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;4BACrC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE;4BAC1C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE;4BACjC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;4BACnC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;yBAC9B,CAAC;wBACF,KAAK,GAAG,QAAQ,CAAC;wBACjB,MAAM;oBACR,CAAC;oBACD,KAAK,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;wBACtC,UAAU,GAAG;4BACX,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;4BAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;4BAClC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;4BAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;4BACrC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE;4BAC1C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE;4BACjC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;4BACnC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;yBACrC,CAAC;wBACF,KAAK,GAAG,GAAG,CAAC;wBACZ,MAAM;oBACR,CAAC;oBACD,KAAK,gBAAgB,CAAC,QAAQ;wBAC5B,MAAM,IAAI,QAAQ,CAAC,gDAAgD,CAAC,CAAC;oBACvE,OAAO,CAAC,CAAC,CAAC;wBACR,OAAO,WAAW,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC;gBACD,eAAe,GAAG,8EAA8E,CAAC;gBACjG,MAAM;QACV,CAAC;QACD,OAAO,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;IAC3G,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,eAAuB,EACvB,eAAuB,EACvB,UAA0C,EAC1C,KAAa,EACb,WAAmB;QAEnB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,oBAAoB,CAClF,eAAe,EACf,eAAe,EACf;YACE,SAAS,EAAE,CAAC,KAAK;SAClB,EACD,UAAU,EACV,WAAW,CACZ,CAAC;QACF,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,iBAAiB,CAAC,WAAW,CAAC;IACvC,CAAC;CACF","sourcesContent":["import { Big } from \"big.js\";\nimport { TronWeb } from \"tronweb\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { SdkError } from \"../../../exceptions\";\nimport { FeePaymentMethod, Messenger, SwapParams, TransactionResponse } from \"../../../models\";\nimport { assertNever } from \"../../../utils/utils\";\nimport { RawTransaction, SmartContractMethodParameter } from \"../../models\";\nimport { sendRawTransaction } from \"../../utils/trx\";\nimport { SendParams, TxSendParamsTrx, TxSwapParamsTrx } from \"../models\";\nimport { ChainBridgeService } from \"../models/bridge\";\nimport { getNonceBigInt, prepareTxSendParams, prepareTxSwapParams } from \"../utils\";\n\nexport class TronBridgeService extends ChainBridgeService {\n chainType: ChainType.TRX = ChainType.TRX;\n\n constructor(\n public tronWeb: TronWeb,\n public api: AllbridgeCoreClient\n ) {\n super();\n }\n\n async send(params: SendParams): Promise<TransactionResponse> {\n const txSendParams = await prepareTxSendParams(this.chainType, params, this.api);\n const rawTransaction = await this.buildRawTransactionSendFromParams(params, txSendParams);\n return await sendRawTransaction(this.tronWeb, rawTransaction);\n }\n\n /** @deprecated Do not use. */\n async buildRawTransactionSwap(params: SwapParams): Promise<RawTransaction> {\n const txSwapParams = prepareTxSwapParams(this.chainType, params);\n return await this.buildRawTransactionSwapFromParams(txSwapParams);\n }\n\n /** @deprecated Do not use. */\n async buildRawTransactionSwapFromParams(params: TxSwapParamsTrx): Promise<RawTransaction> {\n const {\n amount,\n contractAddress,\n fromAccountAddress,\n fromTokenAddress,\n toAccountAddress,\n toTokenAddress,\n minimumReceiveAmount,\n } = params;\n\n const parameters = [\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: fromTokenAddress },\n { type: \"bytes32\", value: toTokenAddress },\n { type: \"address\", value: toAccountAddress },\n { type: \"uint256\", value: minimumReceiveAmount },\n ];\n const methodSignature = \"swap(uint256,bytes32,bytes32,address,uint256)\";\n return this.buildRawTransaction(contractAddress, methodSignature, parameters, \"0\", fromAccountAddress);\n }\n\n async buildRawTransactionSend(params: SendParams): Promise<RawTransaction> {\n const txSendParams = await prepareTxSendParams(this.chainType, params, this.api);\n return this.buildRawTransactionSendFromParams(params, txSendParams);\n }\n\n async buildRawTransactionSendFromParams(sendParams: SendParams, params: TxSendParamsTrx): Promise<RawTransaction> {\n const {\n amount,\n contractAddress,\n fromAccountAddress,\n fromTokenAddress,\n toChainId,\n toAccountAddress,\n toTokenAddress,\n messenger,\n fee,\n gasFeePaymentMethod,\n extraGas,\n extraGasDest,\n } = params;\n\n let totalFee = fee;\n if (extraGas) {\n totalFee = Big(totalFee).plus(extraGas).toFixed();\n }\n\n const nonce = getNonceBigInt().toString();\n let parameters;\n let value: string;\n let methodSignature: string;\n switch (messenger) {\n case Messenger.CCTP:\n case Messenger.CCTP_V2:\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n parameters = [\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: toAccountAddress },\n { type: \"uint256\", value: toChainId },\n { type: \"uint256\", value: 0 },\n ];\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n parameters = [\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: toAccountAddress },\n { type: \"uint256\", value: toChainId },\n { type: \"uint256\", value: totalFee },\n ];\n value = \"0\";\n break;\n }\n case FeePaymentMethod.WITH_ABR:\n throw new SdkError(\"TRX bridge does not support ABR payment method\");\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n methodSignature = \"bridge(uint256,bytes32,uint256,uint256)\";\n break;\n case Messenger.OFT:\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n parameters = [\n { type: \"address\", value: sendParams.sourceToken.tokenAddress },\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: toAccountAddress },\n { type: \"uint256\", value: toChainId },\n { type: \"uint256\", value: 0 },\n { type: \"uint256\", value: extraGasDest ?? \"0\" },\n { type: \"uint256\", value: \"10\" },\n ];\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n parameters = [\n { type: \"address\", value: sendParams.sourceToken.tokenAddress },\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: toAccountAddress },\n { type: \"uint256\", value: toChainId },\n { type: \"uint256\", value: totalFee },\n { type: \"uint256\", value: extraGasDest ?? \"0\" },\n { type: \"uint256\", value: \"10\" },\n ];\n value = \"0\";\n break;\n }\n case FeePaymentMethod.WITH_ABR:\n throw new SdkError(\"TRX bridge does not support ABR payment method\");\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n methodSignature = \"bridge(address,uint256,bytes32,uint256,uint256,uint256,uint256)\";\n break;\n case Messenger.X_RESERVE:\n throw new SdkError(\"Messenger xReserve is not supported for TRX bridge\");\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE:\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n parameters = [\n { type: \"bytes32\", value: fromTokenAddress },\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: toAccountAddress },\n { type: \"uint256\", value: toChainId },\n { type: \"bytes32\", value: toTokenAddress },\n { type: \"uint256\", value: nonce },\n { type: \"uint8\", value: messenger },\n { type: \"uint256\", value: 0 },\n ];\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n parameters = [\n { type: \"bytes32\", value: fromTokenAddress },\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: toAccountAddress },\n { type: \"uint256\", value: toChainId },\n { type: \"bytes32\", value: toTokenAddress },\n { type: \"uint256\", value: nonce },\n { type: \"uint8\", value: messenger },\n { type: \"uint256\", value: totalFee },\n ];\n value = \"0\";\n break;\n }\n case FeePaymentMethod.WITH_ABR:\n throw new SdkError(\"TRX bridge does not support ABR payment method\");\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n methodSignature = \"swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)\";\n break;\n }\n return this.buildRawTransaction(contractAddress, methodSignature, parameters, value, fromAccountAddress);\n }\n\n private async buildRawTransaction(\n contractAddress: string,\n methodSignature: string,\n parameters: SmartContractMethodParameter[],\n value: string,\n fromAddress: string\n ): Promise<RawTransaction> {\n const transactionObject = await this.tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n methodSignature,\n {\n callValue: +value,\n },\n parameters,\n fromAddress\n );\n if (!transactionObject?.result?.result) {\n throw new SdkError(\"Unknown error: \" + JSON.stringify(transactionObject, null, 2));\n }\n return transactionObject.transaction;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/bridge/trx/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Big } from \"big.js\";\nimport { TronWeb } from \"tronweb\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { SdkError } from \"../../../exceptions\";\nimport { FeePaymentMethod, Messenger, SwapParams, TransactionResponse } from \"../../../models\";\nimport { assertNever } from \"../../../utils/utils\";\nimport { RawTransaction, SmartContractMethodParameter } from \"../../models\";\nimport { nearIntentsNotABridgeContractError } from \"../../near-intents/utils\";\nimport { sendRawTransaction } from \"../../utils/trx\";\nimport { SendParams, TxSendParamsTrx, TxSwapParamsTrx, TxTransferParams } from \"../models\";\nimport { ChainBridgeService } from \"../models/bridge\";\nimport { getNonceBigInt, prepareTxSendParams, prepareTxSwapParams } from \"../utils\";\n\nexport class TronBridgeService extends ChainBridgeService {\n chainType: ChainType.TRX = ChainType.TRX;\n\n constructor(\n public tronWeb: TronWeb,\n public api: AllbridgeCoreClient\n ) {\n super();\n }\n\n async send(params: SendParams): Promise<TransactionResponse> {\n const txSendParams = await prepareTxSendParams(this.chainType, params, this.api);\n const rawTransaction = await this.buildRawTransactionSendFromParams(params, txSendParams);\n return await sendRawTransaction(this.tronWeb, rawTransaction);\n }\n\n /**\n * Signs the raw transaction with the TronWeb instance and sends it.\n * @internal\n */\n async sendRawTransaction(rawTransaction: RawTransaction): Promise<TransactionResponse> {\n return await sendRawTransaction(this.tronWeb, rawTransaction);\n }\n\n /**\n * Builds a plain transfer: TRC-20 `transfer(toAddress, amount)` on the token contract,\n * or a TRX transfer of `amount` sun when `token.isNative`. Used for `Messenger.NEAR_INTENTS` deposits.\n */\n async buildRawTransactionTransfer(params: TxTransferParams): Promise<RawTransaction> {\n const { amount, token, fromAccountAddress, toAddress } = params;\n if (token.isNative) {\n return await this.tronWeb.transactionBuilder.sendTrx(toAddress, +amount, fromAccountAddress);\n }\n const parameters = [\n { type: \"address\", value: toAddress },\n { type: \"uint256\", value: amount },\n ];\n return this.buildRawTransaction(\n token.tokenAddress,\n \"transfer(address,uint256)\",\n parameters,\n \"0\",\n fromAccountAddress\n );\n }\n\n /** @deprecated Do not use. */\n async buildRawTransactionSwap(params: SwapParams): Promise<RawTransaction> {\n const txSwapParams = prepareTxSwapParams(this.chainType, params);\n return await this.buildRawTransactionSwapFromParams(txSwapParams);\n }\n\n /** @deprecated Do not use. */\n async buildRawTransactionSwapFromParams(params: TxSwapParamsTrx): Promise<RawTransaction> {\n const {\n amount,\n contractAddress,\n fromAccountAddress,\n fromTokenAddress,\n toAccountAddress,\n toTokenAddress,\n minimumReceiveAmount,\n } = params;\n\n const parameters = [\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: fromTokenAddress },\n { type: \"bytes32\", value: toTokenAddress },\n { type: \"address\", value: toAccountAddress },\n { type: \"uint256\", value: minimumReceiveAmount },\n ];\n const methodSignature = \"swap(uint256,bytes32,bytes32,address,uint256)\";\n return this.buildRawTransaction(contractAddress, methodSignature, parameters, \"0\", fromAccountAddress);\n }\n\n async buildRawTransactionSend(params: SendParams): Promise<RawTransaction> {\n const txSendParams = await prepareTxSendParams(this.chainType, params, this.api);\n return this.buildRawTransactionSendFromParams(params, txSendParams);\n }\n\n async buildRawTransactionSendFromParams(sendParams: SendParams, params: TxSendParamsTrx): Promise<RawTransaction> {\n const {\n amount,\n contractAddress,\n fromAccountAddress,\n fromTokenAddress,\n toChainId,\n toAccountAddress,\n toTokenAddress,\n messenger,\n fee,\n gasFeePaymentMethod,\n extraGas,\n extraGasDest,\n } = params;\n\n let totalFee = fee;\n if (extraGas) {\n totalFee = Big(totalFee).plus(extraGas).toFixed();\n }\n\n const nonce = getNonceBigInt().toString();\n let parameters;\n let value: string;\n let methodSignature: string;\n switch (messenger) {\n case Messenger.CCTP:\n case Messenger.CCTP_V2:\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n parameters = [\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: toAccountAddress },\n { type: \"uint256\", value: toChainId },\n { type: \"uint256\", value: 0 },\n ];\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n parameters = [\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: toAccountAddress },\n { type: \"uint256\", value: toChainId },\n { type: \"uint256\", value: totalFee },\n ];\n value = \"0\";\n break;\n }\n case FeePaymentMethod.WITH_ABR:\n throw new SdkError(\"TRX bridge does not support ABR payment method\");\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n methodSignature = \"bridge(uint256,bytes32,uint256,uint256)\";\n break;\n case Messenger.OFT:\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n parameters = [\n { type: \"address\", value: sendParams.sourceToken.tokenAddress },\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: toAccountAddress },\n { type: \"uint256\", value: toChainId },\n { type: \"uint256\", value: 0 },\n { type: \"uint256\", value: extraGasDest ?? \"0\" },\n { type: \"uint256\", value: \"10\" },\n ];\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n parameters = [\n { type: \"address\", value: sendParams.sourceToken.tokenAddress },\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: toAccountAddress },\n { type: \"uint256\", value: toChainId },\n { type: \"uint256\", value: totalFee },\n { type: \"uint256\", value: extraGasDest ?? \"0\" },\n { type: \"uint256\", value: \"10\" },\n ];\n value = \"0\";\n break;\n }\n case FeePaymentMethod.WITH_ABR:\n throw new SdkError(\"TRX bridge does not support ABR payment method\");\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n methodSignature = \"bridge(address,uint256,bytes32,uint256,uint256,uint256,uint256)\";\n break;\n case Messenger.X_RESERVE:\n throw new SdkError(\"Messenger xReserve is not supported for TRX bridge\");\n case Messenger.NEAR_INTENTS:\n throw nearIntentsNotABridgeContractError();\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE:\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n parameters = [\n { type: \"bytes32\", value: fromTokenAddress },\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: toAccountAddress },\n { type: \"uint256\", value: toChainId },\n { type: \"bytes32\", value: toTokenAddress },\n { type: \"uint256\", value: nonce },\n { type: \"uint8\", value: messenger },\n { type: \"uint256\", value: 0 },\n ];\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n parameters = [\n { type: \"bytes32\", value: fromTokenAddress },\n { type: \"uint256\", value: amount },\n { type: \"bytes32\", value: toAccountAddress },\n { type: \"uint256\", value: toChainId },\n { type: \"bytes32\", value: toTokenAddress },\n { type: \"uint256\", value: nonce },\n { type: \"uint8\", value: messenger },\n { type: \"uint256\", value: totalFee },\n ];\n value = \"0\";\n break;\n }\n case FeePaymentMethod.WITH_ABR:\n throw new SdkError(\"TRX bridge does not support ABR payment method\");\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n methodSignature = \"swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)\";\n break;\n }\n return this.buildRawTransaction(contractAddress, methodSignature, parameters, value, fromAccountAddress);\n }\n\n private async buildRawTransaction(\n contractAddress: string,\n methodSignature: string,\n parameters: SmartContractMethodParameter[],\n value: string,\n fromAddress: string\n ): Promise<RawTransaction> {\n const transactionObject = await this.tronWeb.transactionBuilder.triggerSmartContract(\n contractAddress,\n methodSignature,\n {\n callValue: +value,\n },\n parameters,\n fromAddress\n );\n if (!transactionObject?.result?.result) {\n throw new SdkError(\"Unknown error: \" + JSON.stringify(transactionObject, null, 2));\n }\n return transactionObject.transaction;\n }\n}\n"]}
@@ -12,6 +12,7 @@ import { AmountNotEnoughError, CCTPDoesNotSupportedError, ExtraGasMaxLimitExceed
12
12
  import { AmountFormat, ChainType, FeePaymentMethod, } from "../../models";
13
13
  import { convertAmountPrecision, convertFloatAmountToInt, convertIntAmountToFloat } from "../../utils/calculation";
14
14
  import { assertNever } from "../../utils/utils";
15
+ import { nearIntentsNotABridgeContractError } from "../near-intents/utils";
15
16
  // 2. COMMON Realization
16
17
  export function formatAddress(address, from, to) {
17
18
  let buffer;
@@ -241,6 +242,8 @@ export async function prepareTxSendParams(bridgeChainType, params, api) {
241
242
  }
242
243
  txSendParams.contractAddress = sourceToken.xReserve.bridgeAddress;
243
244
  break;
245
+ case Messenger.NEAR_INTENTS:
246
+ throw nearIntentsNotABridgeContractError();
244
247
  case Messenger.ALLBRIDGE:
245
248
  case Messenger.WORMHOLE:
246
249
  txSendParams.contractAddress = sourceToken.bridgeAddress;
@@ -420,7 +423,7 @@ export async function getExtraGasMaxLimits(sourceChainToken, destinationChainTok
420
423
  [AmountFormat.INT]: destinationChainToken.txCostAmount.swap,
421
424
  [AmountFormat.FLOAT]: convertIntAmountToFloat(destinationChainToken.txCostAmount.swap, Chains.getChainDecimalsByType(destinationChainToken.chainType)).toFixed(),
422
425
  };
423
- if (messenger === Messenger.X_RESERVE) {
426
+ if (messenger === Messenger.X_RESERVE || messenger === Messenger.NEAR_INTENTS) {
424
427
  const getZeroAmountFormatted = () => ({
425
428
  [AmountFormat.INT]: "0",
426
429
  [AmountFormat.FLOAT]: "0",
@@ -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\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\n/** @deprecated Do not use. */\nexport function prepareTxSwapParams(\n bridgeChainType: ChainType.EVM | ChainType.SUI,\n params: SwapParams\n): TxSwapParamsEvm | TxSwapParamsSui;\n/** @deprecated Do not use. */\nexport function prepareTxSwapParams(bridgeChainType: ChainType.TRX, params: SwapParams): TxSwapParamsTrx;\n/** @deprecated Do not use. */\nexport function prepareTxSwapParams(\n bridgeChainType: ChainType.SOLANA | ChainType.SRB,\n params: SwapParams\n): TxSwapParamsSol | TxSwapParamsSrb;\n/** @deprecated Do not use. */\nexport function prepareTxSwapParams(bridgeChainType: ChainType, params: SwapParams): TxSwapParams;\n\n// 2. COMMON Realization\n/** @deprecated Do not use. */\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\n const transfer = {\n [AmountFormat.INT]: destinationChainToken.txCostAmount.transfer,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n destinationChainToken.txCostAmount.transfer,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed(),\n };\n const swap = {\n [AmountFormat.INT]: destinationChainToken.txCostAmount.swap,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n destinationChainToken.txCostAmount.swap,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed(),\n };\n\n if (messenger === Messenger.X_RESERVE) {\n const getZeroAmountFormatted = () => ({\n [AmountFormat.INT]: \"0\",\n [AmountFormat.FLOAT]: \"0\",\n });\n\n return {\n extraGasMax: {\n [FeePaymentMethod.WITH_NATIVE_CURRENCY]: getZeroAmountFormatted(),\n },\n destinationChain: {\n gasAmountMax: getZeroAmountFormatted(),\n swap: swap,\n transfer: transfer,\n },\n exchangeRate: transactionCostResponse.exchangeRate,\n sourceNativeTokenPrice: transactionCostResponse.sourceNativeTokenPrice,\n };\n }\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: swap,\n transfer: transfer,\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 { nearIntentsNotABridgeContractError } from \"../near-intents/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\n/** @deprecated Do not use. */\nexport function prepareTxSwapParams(\n bridgeChainType: ChainType.EVM | ChainType.SUI,\n params: SwapParams\n): TxSwapParamsEvm | TxSwapParamsSui;\n/** @deprecated Do not use. */\nexport function prepareTxSwapParams(bridgeChainType: ChainType.TRX, params: SwapParams): TxSwapParamsTrx;\n/** @deprecated Do not use. */\nexport function prepareTxSwapParams(\n bridgeChainType: ChainType.SOLANA | ChainType.SRB,\n params: SwapParams\n): TxSwapParamsSol | TxSwapParamsSrb;\n/** @deprecated Do not use. */\nexport function prepareTxSwapParams(bridgeChainType: ChainType, params: SwapParams): TxSwapParams;\n\n// 2. COMMON Realization\n/** @deprecated Do not use. */\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.NEAR_INTENTS:\n throw nearIntentsNotABridgeContractError();\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\n const transfer = {\n [AmountFormat.INT]: destinationChainToken.txCostAmount.transfer,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n destinationChainToken.txCostAmount.transfer,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed(),\n };\n const swap = {\n [AmountFormat.INT]: destinationChainToken.txCostAmount.swap,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n destinationChainToken.txCostAmount.swap,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed(),\n };\n\n if (messenger === Messenger.X_RESERVE || messenger === Messenger.NEAR_INTENTS) {\n const getZeroAmountFormatted = () => ({\n [AmountFormat.INT]: \"0\",\n [AmountFormat.FLOAT]: \"0\",\n });\n\n return {\n extraGasMax: {\n [FeePaymentMethod.WITH_NATIVE_CURRENCY]: getZeroAmountFormatted(),\n },\n destinationChain: {\n gasAmountMax: getZeroAmountFormatted(),\n swap: swap,\n transfer: transfer,\n },\n exchangeRate: transactionCostResponse.exchangeRate,\n sourceNativeTokenPrice: transactionCostResponse.sourceNativeTokenPrice,\n };\n }\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: swap,\n transfer: transfer,\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"]}
@@ -7,6 +7,7 @@ import { ChainDetailsMap, PoolInfo, TokenWithChainDetails } from "../tokens-info
7
7
  import { BridgeService } from "./bridge";
8
8
  import { GetNativeTokenBalanceParams } from "./bridge/models";
9
9
  import { LiquidityPoolService } from "./liquidity-pool";
10
+ import { NearIntentsService } from "./near-intents";
10
11
  import { YieldService } from "./yield";
11
12
  export declare class NodeRpcUrlsConfig {
12
13
  private nodeRpcUrls;
@@ -22,6 +23,7 @@ export declare class AllbridgeCoreSdkService {
22
23
  /** @deprecated Do not use. */
23
24
  pool: LiquidityPoolService;
24
25
  yield: YieldService;
26
+ nearIntents: NearIntentsService;
25
27
  constructor(nodeRpcUrlsConfig: NodeRpcUrlsConfig, params?: AllbridgeCoreSdkOptions);
26
28
  /** @deprecated Do not use. */
27
29
  chainDetailsMap(type: "pool"): Promise<ChainDetailsMap>;
@@ -65,6 +67,14 @@ export declare class AllbridgeCoreSdkService {
65
67
  getAmountToSendComputeXReserve(amountToBeReceivedFloat: BigSource, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails): string;
66
68
  private getXReserveConfig;
67
69
  getAmountToSendComputeOft(amountToBeReceivedFloat: BigSource, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails): Promise<string>;
70
+ /**
71
+ * {@link Messenger.NEAR_INTENTS}: an `EXACT_INPUT` quote, returns its `amountOut` (float, destination token units).
72
+ */
73
+ getAmountToBeReceivedComputeNearIntents(amountToSendFloat: BigSource, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails): Promise<string>;
74
+ /**
75
+ * {@link Messenger.NEAR_INTENTS}: an `EXACT_OUTPUT` quote, returns its `amountIn` (float, source token units).
76
+ */
77
+ getAmountToSendComputeNearIntents(amountToBeReceivedFloat: BigSource, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails): Promise<string>;
68
78
  getGasFeeOptions(sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger): Promise<GasFeeOptions>;
69
79
  getAverageTransferTime(sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger): number | null;
70
80
  /** @deprecated Do not use. */