@allbridge/bridge-core-sdk 3.33.0-alpha.1 → 3.33.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.js +2 -2
- package/dist/browser/index.js.map +4 -4
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +4 -4
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/services/bridge/cctp-utils.d.ts +1 -0
- package/dist/src/services/bridge/cctp-utils.js +13 -0
- package/dist/src/services/bridge/cctp-utils.js.map +1 -0
- package/dist/src/services/bridge/evm/abr-payer.d.ts +3 -0
- package/dist/src/services/bridge/evm/abr-payer.js +11 -0
- package/dist/src/services/bridge/evm/abr-payer.js.map +1 -0
- package/dist/src/services/bridge/evm/index.js +35 -10
- package/dist/src/services/bridge/evm/index.js.map +1 -1
- package/dist/src/services/bridge/sol/bridge-tx-service.d.ts +2 -1
- package/dist/src/services/bridge/sol/bridge-tx-service.js +28 -12
- package/dist/src/services/bridge/sol/bridge-tx-service.js.map +1 -1
- package/dist/src/services/bridge/sol/index.d.ts +1 -1
- package/dist/src/services/bridge/sol/index.js.map +1 -1
- package/dist/src/services/bridge/sol/payer-with-token-service.js +17 -1
- package/dist/src/services/bridge/sol/payer-with-token-service.js.map +1 -1
- package/dist/src/services/bridge/srb/index.d.ts +1 -1
- package/dist/src/services/bridge/srb/index.js +33 -3
- package/dist/src/services/bridge/srb/index.js.map +1 -1
- package/dist/src/services/liquidity-pool/index.js +2 -1
- package/dist/src/services/liquidity-pool/index.js.map +1 -1
- package/dist/src/services/models/abi/CctpBridge.d.ts +40 -0
- package/dist/src/services/models/abi/CctpBridge.js +52 -0
- package/dist/src/services/models/abi/CctpBridge.js.map +1 -1
- package/dist/src/services/models/sol/types/cctp_v2_bridge.d.ts +254 -0
- package/dist/src/services/models/sol/types/cctp_v2_bridge.js.map +1 -1
- package/dist/src/services/models/sol/types/cctp_v2_bridge.json +254 -0
- package/dist/src/services/models/sol/types/payer_with_token.d.ts +6 -0
- package/dist/src/services/models/sol/types/payer_with_token.js.map +1 -1
- package/dist/src/services/models/sol/types/payer_with_token.json +6 -0
- package/dist/src/services/models/srb/cctp-bridge-contract.d.ts +451 -0
- package/dist/src/services/models/srb/cctp-bridge-contract.js +150 -0
- package/dist/src/services/models/srb/cctp-bridge-contract.js.map +1 -0
- package/dist/src/services/utils/srb/index.d.ts +1 -0
- package/dist/src/services/utils/srb/index.js +9 -0
- package/dist/src/services/utils/srb/index.js.map +1 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +3 -2
package/dist/src/index.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export interface AllbridgeCoreSdkOptions {
|
|
|
41
41
|
/**
|
|
42
42
|
* @deprecated Do not use.
|
|
43
43
|
*/
|
|
44
|
-
wormholeMessengerProgramId
|
|
44
|
+
wormholeMessengerProgramId?: string;
|
|
45
45
|
solanaLookUpTable: string;
|
|
46
46
|
sorobanNetworkPassphrase: string;
|
|
47
47
|
/**
|
|
@@ -58,7 +58,7 @@ export interface AllbridgeCoreSdkOptions {
|
|
|
58
58
|
* @type {number}
|
|
59
59
|
* @deprecated Do not use.
|
|
60
60
|
*/
|
|
61
|
-
cachePoolInfoChainSec
|
|
61
|
+
cachePoolInfoChainSec?: number;
|
|
62
62
|
/**
|
|
63
63
|
* @internal
|
|
64
64
|
* Optional additional properties to merge with the default properties.
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/unified-signatures -- overloads intentionally expose route-specific deprecation metadata */\nimport { BigSource } from \"big.js\";\nimport { AdditionalBasicChainProperties } from \"./chains/models\";\nimport { mainnet } from \"./configs\";\nimport {\n ActiveMessenger,\n AmountFormat,\n AmountFormatted,\n AmountsAndGasFeeOptions,\n BridgeService,\n ChainDetailsMap,\n CheckAddressResponse,\n ExtraGasMaxLimitResponse,\n GasBalanceResponse,\n GasFeeOptions,\n GetNativeTokenBalanceParams,\n GetTokenBalanceParams,\n LiquidityPoolService,\n LegacyMessenger,\n Messenger,\n PendingStatusInfoResponse,\n PoolInfo,\n Provider,\n SendAmountDetails,\n SwapAndBridgeCalculationData,\n TokenWithChainDetails,\n TransferStatusResponse,\n} from \"./models\";\nimport { AllbridgeCoreSdkService, NodeRpcUrlsConfig } from \"./services\";\nimport { CctpParams } from \"./services/bridge/sol\";\nimport { YieldService } from \"./services/yield\";\nimport { DefaultUtils, Utils } from \"./utils\";\n\nexport * from \"./configs\";\nexport * from \"./models\";\n\nexport interface AllbridgeCoreSdkOptions {\n coreApiUrl: string;\n /**\n * A set of query parameters to be added to all requests to the Core API.\n */\n coreApiQueryParams?: Record<string, string>;\n /**\n * A set of headers to be added to all requests to the Core API.\n */\n coreApiHeaders?: Record<string, string>;\n /**\n * A function that returns headers to be added to a single Core API request.\n * It is evaluated right before each request\n */\n coreApiHeadersProvider?: () => Promise<Record<string, string> | undefined>;\n /**\n * Jupiter Swap Api</br>\n * Default: https://lite-api.jup.ag/swap/v1</br>\n * {@link https://dev.jup.ag/docs/swap-api/}\n */\n jupiterUrl: string;\n /**\n * Jupiter Api Key Header</br>\n * {@link https://dev.jup.ag/docs/api-setup}\n */\n jupiterApiKeyHeader?: string;\n /**\n * Jupiter v6 'maxAccounts' parameter</br>\n * Rough estimate of the max accounts to be used for the quote, so that you can compose with your own accounts</br>\n * {@link https://station.jup.ag/docs/apis/swap-api#using-maxaccounts}\n */\n jupiterMaxAccounts?: number;\n /**\n * @deprecated Do not use.\n */\n wormholeMessengerProgramId: string;\n solanaLookUpTable: string;\n sorobanNetworkPassphrase: string;\n /**\n * Optional. Will be used in methods</br>\n * {@link LiquidityPoolService.getPoolInfoFromChain} and {@link LiquidityPoolService.getAmountToBeWithdrawn}</br>\n * to fetch information from the blockchain with fewer HTTP requests using JSON-RPC API\n * @deprecated Do not use.\n */\n tronJsonRpc?: string;\n cctpParams: CctpParams;\n /**\n * The number of seconds that pool information taken from the chain will be cached.\n *\n * @type {number}\n * @deprecated Do not use.\n */\n cachePoolInfoChainSec: number;\n\n /**\n * @internal\n * Optional additional properties to merge with the default properties.\n */\n additionalChainsProperties?: Record<string, AdditionalBasicChainProperties>;\n\n suiIsTestnet?: boolean;\n\n stxIsTestnet?: boolean;\n stxHeroApiKey?: string;\n}\n\n/**\n * Type representing RPC node URLs for different blockchain chains.</br>\n * Provide node RPC URL for chain connection you intend to communicate with</br>\n * - required for SOL, TRX chains</br>\n * - optional for EVM chains -- you can interact by passing a {@link Provider} that will be used to communicate with the chain</br>\n * @typedef {Record<string, string>} NodeRpcUrls\n * @property {string} chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @property {string} rpcUrl - The RPC node URL for the specified chain.\n */\nexport type NodeRpcUrls = Record<string, string>;\n\n/**\n * @deprecated Use {@link NodeRpcUrls}\n */\nexport interface NodeUrlsConfig {\n solanaRpcUrl: string;\n tronRpcUrl: string;\n}\n\n/**\n * @deprecated Use {@link NodeRpcUrls}\n */\nfunction isNodeUrlsConfig(nodeUrls: NodeUrlsConfig | NodeRpcUrls): nodeUrls is NodeUrlsConfig {\n return \"solanaRpcUrl\" in nodeUrls;\n}\n\nexport class AllbridgeCoreSdk {\n readonly params: AllbridgeCoreSdkOptions;\n\n bridge: BridgeService;\n /**\n * @deprecated Do not use.\n */\n pool: LiquidityPoolService;\n yield: YieldService;\n utils: Utils;\n\n private service: AllbridgeCoreSdkService;\n\n /**\n * Initializes the SDK object.\n * @param nodeUrls node rpc urls for full functionality\n * @param params\n * Optional.\n * If not defined, the default {@link mainnet} parameters are used.\n */\n constructor(nodeUrls: NodeUrlsConfig | NodeRpcUrls, params: AllbridgeCoreSdkOptions = mainnet) {\n let nodeRpcUrlsConfig: NodeRpcUrlsConfig;\n if (isNodeUrlsConfig(nodeUrls)) {\n nodeRpcUrlsConfig = new NodeRpcUrlsConfig({ SOL: nodeUrls.solanaRpcUrl, TRX: nodeUrls.tronRpcUrl });\n } else {\n nodeRpcUrlsConfig = new NodeRpcUrlsConfig(nodeUrls);\n }\n this.service = new AllbridgeCoreSdkService(nodeRpcUrlsConfig, params);\n this.bridge = this.service.bridge;\n this.pool = this.service.pool;\n this.yield = this.service.yield;\n this.utils = new DefaultUtils(this.service);\n this.params = params;\n }\n\n /**\n * Returns {@link ChainDetailsMap} containing a list of supported tokens groped by chain.\n *\n * @param type - A string value which specifies ChainDetailsMap to retrieve.\n * Can be either 'swap' for send or 'pool' for liquidity pools setup.\n * Defaults to 'swap'.\n */\n /** @deprecated Do not use. */\n chainDetailsMap(type: \"pool\"): Promise<ChainDetailsMap>;\n chainDetailsMap(type?: \"swap\"): Promise<ChainDetailsMap>;\n chainDetailsMap(type: \"swap\" | \"pool\"): Promise<ChainDetailsMap>;\n async chainDetailsMap(type: \"swap\" | \"pool\" = \"swap\"): Promise<ChainDetailsMap> {\n return this.service.chainDetailsMap(type);\n }\n\n /**\n * Returns a list of supported {@link TokenWithChainDetails | tokens}.\n *\n * @param type - A string value which specifies a set of tokens to retrieve.\n * Can be either 'swap' for tokens to send or 'pool' for liquidity pools operations.\n * Defaults to 'swap'.\n * @returns A promise that resolves to an array of {@link TokenWithChainDetails}.\n */\n /** @deprecated Do not use. */\n tokens(type: \"pool\"): Promise<TokenWithChainDetails[]>;\n tokens(type?: \"swap\"): Promise<TokenWithChainDetails[]>;\n tokens(type: \"swap\" | \"pool\"): Promise<TokenWithChainDetails[]>;\n async tokens(type: \"swap\" | \"pool\" = \"swap\"): Promise<TokenWithChainDetails[]> {\n return this.service.tokens(type);\n }\n\n /**\n * Returns a list of supported {@link TokenWithChainDetails | tokens} on the selected chain.\n * @param chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @param type - A string value which specifies a set of tokens to retrieve.\n * Can be either 'swap' for tokens to send or 'pool' for liquidity pools operations.\n * Defaults to 'swap'.\n */\n /** @deprecated Do not use. */\n tokensByChain(chainSymbol: string, type: \"pool\"): Promise<TokenWithChainDetails[]>;\n tokensByChain(chainSymbol: string, type?: \"swap\"): Promise<TokenWithChainDetails[]>;\n tokensByChain(chainSymbol: string, type: \"swap\" | \"pool\"): Promise<TokenWithChainDetails[]>;\n async tokensByChain(chainSymbol: string, type: \"swap\" | \"pool\" = \"swap\"): Promise<TokenWithChainDetails[]> {\n return this.service.tokensByChain(chainSymbol, type);\n }\n\n /**\n * Fetches information about tokens transfer by chosen chainSymbol and transaction Id from the Allbridge Core API.\n * @param chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @param txId\n */\n async getTransferStatus(chainSymbol: string, txId: string): Promise<TransferStatusResponse> {\n return this.service.getTransferStatus(chainSymbol, txId);\n }\n\n /**\n * Get gas balance\n * @param chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @param address\n */\n async getGasBalance(chainSymbol: string, address: string): Promise<GasBalanceResponse> {\n return this.service.getGasBalance(chainSymbol, address);\n }\n\n /**\n * Check address and show gas balance\n * @deprecated\n * @param _chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @param _recipientAddress\n * @param _tokenAddress\n */\n async checkAddress(\n _chainSymbol: string,\n _recipientAddress: string,\n _tokenAddress?: string\n ): Promise<CheckAddressResponse> {\n return await this.service.checkAddress();\n }\n\n /**\n * Returns information about pending transactions for the same destination chain and the amount of tokens can be received as a result of transfer considering pending transactions.\n * @deprecated Do not use.\n * @param amount the amount of tokens that will be sent\n * @param amountFormat amount format\n * @param sourceToken selected token transfer from\n * @param destToken selected token transfer to\n * @returns range of possible amount based on already pending transactions\n */\n async getPendingStatusInfo(\n amount: string,\n amountFormat: AmountFormat,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<PendingStatusInfoResponse> {\n return this.service.getPendingStatusInfo(amount, amountFormat, sourceToken, destToken);\n }\n\n /**\n * Get token balance\n * @param params\n * @param provider\n * @returns Token balance\n */\n async getTokenBalance(params: GetTokenBalanceParams, provider?: Provider): Promise<string> {\n return this.service.getTokenBalance(params, provider);\n }\n\n /**\n * Get native (gas) token balance\n * @param params\n * @param provider\n * @returns Token balance\n */\n async getNativeTokenBalance(params: GetNativeTokenBalanceParams, provider?: Provider): Promise<AmountFormatted> {\n return this.service.getNativeTokenBalance(params, provider);\n }\n\n /**\n * @deprecated\n * Calculates the percentage of fee from the initial amount that is charged when swapping from the selected source chain.\n * (Does not include fee related to the destination chain. Does not include gas fee)\n * @param amountFloat initial amount of tokens to swap\n * @param sourceChainToken selected token on the source chain\n * @returns fee percent\n */\n async calculateFeePercentOnSourceChain(\n amountFloat: BigSource,\n sourceChainToken: TokenWithChainDetails\n ): Promise<number> {\n return this.service.calculateFeePercentOnSourceChain(amountFloat, sourceChainToken);\n }\n\n /**\n * @deprecated\n * Calculates the percentage of fee that is charged when swapping to the selected destination chain. The destination chain fee percent applies to the amount after the source chain fee.\n * (Does not include fee related to the source chain. Does not include gas fee)\n * @see {@link calculateFeePercentOnSourceChain}\n * @param amountFloat initial amount of tokens to swap\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @returns fee percent\n */\n async calculateFeePercentOnDestinationChain(\n amountFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): Promise<number> {\n return this.service.calculateFeePercentOnDestinationChain(amountFloat, sourceChainToken, destinationChainToken);\n }\n\n /**\n * Calculates the amount of tokens to be received as a result of transfer\n * and fetches {@link GasFeeOptions} which contains available ways to pay the gas fee.\n * @param amountToSendFloat the amount of tokens that will be sent\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger\n *\n * @Deprecated Use {@link getGasFeeOptions} and separately call one of:\n * {@link getAmountToBeReceived}, {@link getAmountToBeReceivedFromChain}, or {@link getAmountToBeReceivedFromPools}.\n */\n async getAmountToBeReceivedAndGasFeeOptions(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<AmountsAndGasFeeOptions> {\n return this.service.getAmountToBeReceivedAndGasFeeOptions(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n );\n }\n\n /**\n * Calculates the amount of tokens to send based on requested tokens amount be received as a result of transfer.\n * and fetches {@link GasFeeOptions} which contains available ways to pay the gas fee.\n * @param amountToBeReceivedFloat the amount of tokens that should be received\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger\n *\n * @Deprecated Use {@link getGasFeeOptions} and separately call one of:\n * {@link getAmountToSend}, {@link getAmountToSendFromChain}, or {@link getAmountToSendFromPools}.\n */\n async getAmountToSendAndGasFeeOptions(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<AmountsAndGasFeeOptions> {\n return this.service.getAmountToSendAndGasFeeOptions(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n );\n }\n\n /**\n * Calculates the amount of tokens to be received as a result of transfer.\n * @param amountToSendFloat the amount of tokens that will be sent\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger selected messenger\n */\n /** @deprecated Do not use. */\n getAmountToBeReceived(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: LegacyMessenger\n ): Promise<string>;\n getAmountToBeReceived(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: ActiveMessenger\n ): Promise<string>;\n async getAmountToBeReceived(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n /**\n * The Messengers for different routes.\n */\n messenger: Messenger\n ): Promise<string> {\n return this.service.getAmountToBeReceived(amountToSendFloat, sourceChainToken, destinationChainToken, messenger);\n }\n\n /**\n * Calculates the amount of tokens to be received as a result of transfer based on actual blockchain pool state.\n * @param amountToSendFloat the amount of tokens that will be sent\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger selected messenger\n * @param sourceProvider Optional. source chain Provider\n * @param destinationProvider Optional. destination chain Provider\n */\n /** @deprecated Do not use. */\n getAmountToBeReceivedFromChain(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger,\n sourceProvider?: Provider,\n destinationProvider?: Provider\n ): Promise<string>;\n async getAmountToBeReceivedFromChain(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n /**\n * The Messengers for different routes.\n */\n messenger: Messenger,\n sourceProvider?: Provider,\n destinationProvider?: Provider\n ): Promise<string> {\n return this.service.getAmountToBeReceivedFromChain(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger,\n sourceProvider,\n destinationProvider\n );\n }\n\n /**\n * Calculates the amount of tokens to be received as a result of transfer based on passed pool state.\n * @param amountToSendFloat the amount of tokens that will be sent\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param sourcePool source token pool state\n * @param destinationPool destination token pool state\n * @param messenger selected messenger\n */\n /** @deprecated Do not use. */\n getAmountToBeReceivedFromPools(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destinationPool: PoolInfo,\n messenger: Exclude<Messenger, Messenger.OFT>\n ): string;\n getAmountToBeReceivedFromPools(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destinationPool: PoolInfo,\n messenger: Exclude<Messenger, Messenger.OFT>\n ): string {\n switch (messenger) {\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE:\n return this.service.getAmountToBeReceivedComputeWithPools(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n sourcePool,\n destinationPool\n );\n case Messenger.CCTP:\n case Messenger.CCTP_V2:\n return this.service.getAmountToBeReceivedComputeCctp(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n );\n case Messenger.X_RESERVE:\n return this.service.getAmountToBeReceivedComputeXReserve(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken\n );\n }\n }\n\n /**\n * Calculates the amount of tokens to send based on requested tokens amount be received as a result of transfer.\n * @param amountToBeReceivedFloat the amount of tokens that should be received\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger selected messenger\n */\n /** @deprecated Do not use. */\n getAmountToSend(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: LegacyMessenger\n ): Promise<string>;\n getAmountToSend(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: ActiveMessenger\n ): Promise<string>;\n async getAmountToSend(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n /**\n * The Messengers for different routes.\n */\n messenger: Messenger\n ): Promise<string> {\n return this.service.getAmountToSend(amountToBeReceivedFloat, sourceChainToken, destinationChainToken, messenger);\n }\n\n /**\n * Calculates the amount of tokens to send based on requested tokens amount be received as a result of transfer based on actual blockchain pool state.\n * @param amountToBeReceivedFloat the amount of tokens that should be received\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger selected messenger\n * @param sourceProvider Optional. source chain Provider\n * @param destinationProvider Optional. destination chain Provider\n */\n /** @deprecated Do not use. */\n getAmountToSendFromChain(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger,\n sourceProvider?: Provider,\n destinationProvider?: Provider\n ): Promise<string>;\n async getAmountToSendFromChain(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n /**\n * The Messengers for different routes.\n */\n messenger: Messenger,\n sourceProvider?: Provider,\n destinationProvider?: Provider\n ): Promise<string> {\n return this.service.getAmountToSendFromChain(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger,\n sourceProvider,\n destinationProvider\n );\n }\n\n /**\n * Calculates the amount of tokens to send based on requested tokens amount be received as a result of transfer based on passed pool state.\n * @param amountToBeReceivedFloat the amount of tokens that should be received\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param sourcePool source token pool state\n * @param destinationPool destination token pool state\n * @param messenger selected messenger\n */\n /** @deprecated Do not use. */\n getAmountToSendFromPools(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destinationPool: PoolInfo,\n messenger: Exclude<Messenger, Messenger.OFT>\n ): string;\n getAmountToSendFromPools(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destinationPool: PoolInfo,\n messenger: Exclude<Messenger, Messenger.OFT>\n ): string {\n switch (messenger) {\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE:\n return this.service.getAmountToSendComputeWithPools(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n sourcePool,\n destinationPool\n );\n case Messenger.CCTP:\n case Messenger.CCTP_V2:\n return this.service.getAmountToSendComputeCctp(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n );\n case Messenger.X_RESERVE:\n return this.service.getAmountToSendComputeXReserve(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken\n );\n }\n }\n\n /**\n * Fetches possible ways to pay the transfer gas fee.\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger\n * @returns {@link GasFeeOptions}\n */\n async getGasFeeOptions(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<GasFeeOptions> {\n return this.service.getGasFeeOptions(sourceChainToken, destinationChainToken, messenger);\n }\n\n /**\n * Gets the average time in ms to complete a transfer for given tokens and messenger.\n * @param sourceChainToken selected token on the source chain.\n * @param destinationChainToken selected token on the destination chain.\n * @param messenger\n * @returns Average transfer time in milliseconds or null if a given combination of tokens and messenger is not supported.\n */\n getAverageTransferTime(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): number | null {\n return this.service.getAverageTransferTime(sourceChainToken, destinationChainToken, messenger);\n }\n\n /**\n * Gets information about the poolInfo by token\n * @deprecated Do not use.\n * @param token\n * @returns poolInfo\n */\n async getPoolInfoByToken(token: TokenWithChainDetails): Promise<PoolInfo> {\n return this.service.getPoolInfoByToken(token);\n }\n\n /**\n * Forces refresh of cached information about the state of liquidity pools.\n * Outdated cache leads to calculated amounts being less accurate.\n * The cache is invalidated at regular intervals, but it can be forced to be refreshed by calling this method.+\n *\n * @deprecated Do not use.\n * @param tokens if present, the corresponding liquidity pools will be updated\n */\n async refreshPoolInfo(tokens?: TokenWithChainDetails | TokenWithChainDetails[]): Promise<void> {\n return this.service.refreshPoolInfo(tokens);\n }\n\n /**\n * Convert APR to percentage view\n * @deprecated Do not use.\n * @param apr\n * @returns aprPercentageView\n */\n aprInPercents(apr: string): string {\n return this.service.aprInPercents(apr);\n }\n\n /**\n * Get possible limit of extra gas amount.\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger selected Messenger\n * @returns {@link ExtraGasMaxLimitResponse}\n */\n /** @deprecated Do not use. */\n getExtraGasMaxLimits(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: LegacyMessenger\n ): Promise<ExtraGasMaxLimitResponse>;\n getExtraGasMaxLimits(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: ActiveMessenger\n ): Promise<ExtraGasMaxLimitResponse>;\n async getExtraGasMaxLimits(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<ExtraGasMaxLimitResponse> {\n return this.service.getExtraGasMaxLimits(sourceChainToken, destinationChainToken, messenger);\n }\n\n /**\n * @deprecated Do not use.\n * @param amount - amount\n * @param amountFormat - AmountFormat\n * @param sourceToken - selected token on the source chain\n * @return virtual amount\n */\n async getVUsdFromAmount(\n amount: string,\n amountFormat: AmountFormat,\n sourceToken: TokenWithChainDetails\n ): Promise<AmountFormatted> {\n return this.service.getVUsdFromAmount(amount, amountFormat, sourceToken);\n }\n\n /**\n * @deprecated Do not use.\n * @param vUsdAmount - amount of vUsd, int format\n * @param destToken selected token on the destination chain\n * @return amount of destToken\n */\n async getAmountFromVUsd(vUsdAmount: string, destToken: TokenWithChainDetails): Promise<AmountFormatted> {\n return this.service.getAmountFromVUsd(vUsdAmount, destToken);\n }\n\n /**\n * @deprecated Use {@link getSendAmountDetails}\n * @param amountInTokenPrecision\n * @param sourceToken\n * @param destToken\n */\n async swapAndBridgeFeeCalculation(\n amountInTokenPrecision: string,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<SwapAndBridgeCalculationData> {\n return this.service.swapAndBridgeFeeCalculation(amountInTokenPrecision, sourceToken, destToken);\n }\n\n /**\n * @deprecated Use {@link getAmountToBeReceived} and then {@link getSendAmountDetails}\n * @param amountInTokenPrecision\n * @param sourceToken\n * @param destToken\n */\n async swapAndBridgeFeeCalculationReverse(\n amountInTokenPrecision: string,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<SwapAndBridgeCalculationData> {\n return this.service.swapAndBridgeFeeCalculationReverse(amountInTokenPrecision, sourceToken, destToken);\n }\n\n /**\n * Show amount changes (fee and amount adjustment) during send through pools on source and destination chains\n * @deprecated Do not use.\n */\n async getSendAmountDetails(\n amount: string,\n amountFormat: AmountFormat,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<SendAmountDetails> {\n return this.service.getSendAmountDetails(amount, amountFormat, sourceToken, destToken);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/unified-signatures -- overloads intentionally expose route-specific deprecation metadata */\nimport { BigSource } from \"big.js\";\nimport { AdditionalBasicChainProperties } from \"./chains/models\";\nimport { mainnet } from \"./configs\";\nimport {\n ActiveMessenger,\n AmountFormat,\n AmountFormatted,\n AmountsAndGasFeeOptions,\n BridgeService,\n ChainDetailsMap,\n CheckAddressResponse,\n ExtraGasMaxLimitResponse,\n GasBalanceResponse,\n GasFeeOptions,\n GetNativeTokenBalanceParams,\n GetTokenBalanceParams,\n LiquidityPoolService,\n LegacyMessenger,\n Messenger,\n PendingStatusInfoResponse,\n PoolInfo,\n Provider,\n SendAmountDetails,\n SwapAndBridgeCalculationData,\n TokenWithChainDetails,\n TransferStatusResponse,\n} from \"./models\";\nimport { AllbridgeCoreSdkService, NodeRpcUrlsConfig } from \"./services\";\nimport { CctpParams } from \"./services/bridge/sol\";\nimport { YieldService } from \"./services/yield\";\nimport { DefaultUtils, Utils } from \"./utils\";\n\nexport * from \"./configs\";\nexport * from \"./models\";\n\nexport interface AllbridgeCoreSdkOptions {\n coreApiUrl: string;\n /**\n * A set of query parameters to be added to all requests to the Core API.\n */\n coreApiQueryParams?: Record<string, string>;\n /**\n * A set of headers to be added to all requests to the Core API.\n */\n coreApiHeaders?: Record<string, string>;\n /**\n * A function that returns headers to be added to a single Core API request.\n * It is evaluated right before each request\n */\n coreApiHeadersProvider?: () => Promise<Record<string, string> | undefined>;\n /**\n * Jupiter Swap Api</br>\n * Default: https://lite-api.jup.ag/swap/v1</br>\n * {@link https://dev.jup.ag/docs/swap-api/}\n */\n jupiterUrl: string;\n /**\n * Jupiter Api Key Header</br>\n * {@link https://dev.jup.ag/docs/api-setup}\n */\n jupiterApiKeyHeader?: string;\n /**\n * Jupiter v6 'maxAccounts' parameter</br>\n * Rough estimate of the max accounts to be used for the quote, so that you can compose with your own accounts</br>\n * {@link https://station.jup.ag/docs/apis/swap-api#using-maxaccounts}\n */\n jupiterMaxAccounts?: number;\n /**\n * @deprecated Do not use.\n */\n wormholeMessengerProgramId?: string;\n solanaLookUpTable: string;\n sorobanNetworkPassphrase: string;\n /**\n * Optional. Will be used in methods</br>\n * {@link LiquidityPoolService.getPoolInfoFromChain} and {@link LiquidityPoolService.getAmountToBeWithdrawn}</br>\n * to fetch information from the blockchain with fewer HTTP requests using JSON-RPC API\n * @deprecated Do not use.\n */\n tronJsonRpc?: string;\n cctpParams: CctpParams;\n /**\n * The number of seconds that pool information taken from the chain will be cached.\n *\n * @type {number}\n * @deprecated Do not use.\n */\n cachePoolInfoChainSec?: number;\n\n /**\n * @internal\n * Optional additional properties to merge with the default properties.\n */\n additionalChainsProperties?: Record<string, AdditionalBasicChainProperties>;\n\n suiIsTestnet?: boolean;\n\n stxIsTestnet?: boolean;\n stxHeroApiKey?: string;\n}\n\n/**\n * Type representing RPC node URLs for different blockchain chains.</br>\n * Provide node RPC URL for chain connection you intend to communicate with</br>\n * - required for SOL, TRX chains</br>\n * - optional for EVM chains -- you can interact by passing a {@link Provider} that will be used to communicate with the chain</br>\n * @typedef {Record<string, string>} NodeRpcUrls\n * @property {string} chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @property {string} rpcUrl - The RPC node URL for the specified chain.\n */\nexport type NodeRpcUrls = Record<string, string>;\n\n/**\n * @deprecated Use {@link NodeRpcUrls}\n */\nexport interface NodeUrlsConfig {\n solanaRpcUrl: string;\n tronRpcUrl: string;\n}\n\n/**\n * @deprecated Use {@link NodeRpcUrls}\n */\nfunction isNodeUrlsConfig(nodeUrls: NodeUrlsConfig | NodeRpcUrls): nodeUrls is NodeUrlsConfig {\n return \"solanaRpcUrl\" in nodeUrls;\n}\n\nexport class AllbridgeCoreSdk {\n readonly params: AllbridgeCoreSdkOptions;\n\n bridge: BridgeService;\n /**\n * @deprecated Do not use.\n */\n pool: LiquidityPoolService;\n yield: YieldService;\n utils: Utils;\n\n private service: AllbridgeCoreSdkService;\n\n /**\n * Initializes the SDK object.\n * @param nodeUrls node rpc urls for full functionality\n * @param params\n * Optional.\n * If not defined, the default {@link mainnet} parameters are used.\n */\n constructor(nodeUrls: NodeUrlsConfig | NodeRpcUrls, params: AllbridgeCoreSdkOptions = mainnet) {\n let nodeRpcUrlsConfig: NodeRpcUrlsConfig;\n if (isNodeUrlsConfig(nodeUrls)) {\n nodeRpcUrlsConfig = new NodeRpcUrlsConfig({ SOL: nodeUrls.solanaRpcUrl, TRX: nodeUrls.tronRpcUrl });\n } else {\n nodeRpcUrlsConfig = new NodeRpcUrlsConfig(nodeUrls);\n }\n this.service = new AllbridgeCoreSdkService(nodeRpcUrlsConfig, params);\n this.bridge = this.service.bridge;\n this.pool = this.service.pool;\n this.yield = this.service.yield;\n this.utils = new DefaultUtils(this.service);\n this.params = params;\n }\n\n /**\n * Returns {@link ChainDetailsMap} containing a list of supported tokens groped by chain.\n *\n * @param type - A string value which specifies ChainDetailsMap to retrieve.\n * Can be either 'swap' for send or 'pool' for liquidity pools setup.\n * Defaults to 'swap'.\n */\n /** @deprecated Do not use. */\n chainDetailsMap(type: \"pool\"): Promise<ChainDetailsMap>;\n chainDetailsMap(type?: \"swap\"): Promise<ChainDetailsMap>;\n chainDetailsMap(type: \"swap\" | \"pool\"): Promise<ChainDetailsMap>;\n async chainDetailsMap(type: \"swap\" | \"pool\" = \"swap\"): Promise<ChainDetailsMap> {\n return this.service.chainDetailsMap(type);\n }\n\n /**\n * Returns a list of supported {@link TokenWithChainDetails | tokens}.\n *\n * @param type - A string value which specifies a set of tokens to retrieve.\n * Can be either 'swap' for tokens to send or 'pool' for liquidity pools operations.\n * Defaults to 'swap'.\n * @returns A promise that resolves to an array of {@link TokenWithChainDetails}.\n */\n /** @deprecated Do not use. */\n tokens(type: \"pool\"): Promise<TokenWithChainDetails[]>;\n tokens(type?: \"swap\"): Promise<TokenWithChainDetails[]>;\n tokens(type: \"swap\" | \"pool\"): Promise<TokenWithChainDetails[]>;\n async tokens(type: \"swap\" | \"pool\" = \"swap\"): Promise<TokenWithChainDetails[]> {\n return this.service.tokens(type);\n }\n\n /**\n * Returns a list of supported {@link TokenWithChainDetails | tokens} on the selected chain.\n * @param chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @param type - A string value which specifies a set of tokens to retrieve.\n * Can be either 'swap' for tokens to send or 'pool' for liquidity pools operations.\n * Defaults to 'swap'.\n */\n /** @deprecated Do not use. */\n tokensByChain(chainSymbol: string, type: \"pool\"): Promise<TokenWithChainDetails[]>;\n tokensByChain(chainSymbol: string, type?: \"swap\"): Promise<TokenWithChainDetails[]>;\n tokensByChain(chainSymbol: string, type: \"swap\" | \"pool\"): Promise<TokenWithChainDetails[]>;\n async tokensByChain(chainSymbol: string, type: \"swap\" | \"pool\" = \"swap\"): Promise<TokenWithChainDetails[]> {\n return this.service.tokensByChain(chainSymbol, type);\n }\n\n /**\n * Fetches information about tokens transfer by chosen chainSymbol and transaction Id from the Allbridge Core API.\n * @param chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @param txId\n */\n async getTransferStatus(chainSymbol: string, txId: string): Promise<TransferStatusResponse> {\n return this.service.getTransferStatus(chainSymbol, txId);\n }\n\n /**\n * Get gas balance\n * @param chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @param address\n */\n async getGasBalance(chainSymbol: string, address: string): Promise<GasBalanceResponse> {\n return this.service.getGasBalance(chainSymbol, address);\n }\n\n /**\n * Check address and show gas balance\n * @deprecated\n * @param _chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @param _recipientAddress\n * @param _tokenAddress\n */\n async checkAddress(\n _chainSymbol: string,\n _recipientAddress: string,\n _tokenAddress?: string\n ): Promise<CheckAddressResponse> {\n return await this.service.checkAddress();\n }\n\n /**\n * Returns information about pending transactions for the same destination chain and the amount of tokens can be received as a result of transfer considering pending transactions.\n * @deprecated Do not use.\n * @param amount the amount of tokens that will be sent\n * @param amountFormat amount format\n * @param sourceToken selected token transfer from\n * @param destToken selected token transfer to\n * @returns range of possible amount based on already pending transactions\n */\n async getPendingStatusInfo(\n amount: string,\n amountFormat: AmountFormat,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<PendingStatusInfoResponse> {\n return this.service.getPendingStatusInfo(amount, amountFormat, sourceToken, destToken);\n }\n\n /**\n * Get token balance\n * @param params\n * @param provider\n * @returns Token balance\n */\n async getTokenBalance(params: GetTokenBalanceParams, provider?: Provider): Promise<string> {\n return this.service.getTokenBalance(params, provider);\n }\n\n /**\n * Get native (gas) token balance\n * @param params\n * @param provider\n * @returns Token balance\n */\n async getNativeTokenBalance(params: GetNativeTokenBalanceParams, provider?: Provider): Promise<AmountFormatted> {\n return this.service.getNativeTokenBalance(params, provider);\n }\n\n /**\n * @deprecated\n * Calculates the percentage of fee from the initial amount that is charged when swapping from the selected source chain.\n * (Does not include fee related to the destination chain. Does not include gas fee)\n * @param amountFloat initial amount of tokens to swap\n * @param sourceChainToken selected token on the source chain\n * @returns fee percent\n */\n async calculateFeePercentOnSourceChain(\n amountFloat: BigSource,\n sourceChainToken: TokenWithChainDetails\n ): Promise<number> {\n return this.service.calculateFeePercentOnSourceChain(amountFloat, sourceChainToken);\n }\n\n /**\n * @deprecated\n * Calculates the percentage of fee that is charged when swapping to the selected destination chain. The destination chain fee percent applies to the amount after the source chain fee.\n * (Does not include fee related to the source chain. Does not include gas fee)\n * @see {@link calculateFeePercentOnSourceChain}\n * @param amountFloat initial amount of tokens to swap\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @returns fee percent\n */\n async calculateFeePercentOnDestinationChain(\n amountFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails\n ): Promise<number> {\n return this.service.calculateFeePercentOnDestinationChain(amountFloat, sourceChainToken, destinationChainToken);\n }\n\n /**\n * Calculates the amount of tokens to be received as a result of transfer\n * and fetches {@link GasFeeOptions} which contains available ways to pay the gas fee.\n * @param amountToSendFloat the amount of tokens that will be sent\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger\n *\n * @Deprecated Use {@link getGasFeeOptions} and separately call one of:\n * {@link getAmountToBeReceived}, {@link getAmountToBeReceivedFromChain}, or {@link getAmountToBeReceivedFromPools}.\n */\n async getAmountToBeReceivedAndGasFeeOptions(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<AmountsAndGasFeeOptions> {\n return this.service.getAmountToBeReceivedAndGasFeeOptions(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n );\n }\n\n /**\n * Calculates the amount of tokens to send based on requested tokens amount be received as a result of transfer.\n * and fetches {@link GasFeeOptions} which contains available ways to pay the gas fee.\n * @param amountToBeReceivedFloat the amount of tokens that should be received\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger\n *\n * @Deprecated Use {@link getGasFeeOptions} and separately call one of:\n * {@link getAmountToSend}, {@link getAmountToSendFromChain}, or {@link getAmountToSendFromPools}.\n */\n async getAmountToSendAndGasFeeOptions(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<AmountsAndGasFeeOptions> {\n return this.service.getAmountToSendAndGasFeeOptions(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n );\n }\n\n /**\n * Calculates the amount of tokens to be received as a result of transfer.\n * @param amountToSendFloat the amount of tokens that will be sent\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger selected messenger\n */\n /** @deprecated Do not use. */\n getAmountToBeReceived(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: LegacyMessenger\n ): Promise<string>;\n getAmountToBeReceived(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: ActiveMessenger\n ): Promise<string>;\n async getAmountToBeReceived(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n /**\n * The Messengers for different routes.\n */\n messenger: Messenger\n ): Promise<string> {\n return this.service.getAmountToBeReceived(amountToSendFloat, sourceChainToken, destinationChainToken, messenger);\n }\n\n /**\n * Calculates the amount of tokens to be received as a result of transfer based on actual blockchain pool state.\n * @param amountToSendFloat the amount of tokens that will be sent\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger selected messenger\n * @param sourceProvider Optional. source chain Provider\n * @param destinationProvider Optional. destination chain Provider\n */\n /** @deprecated Do not use. */\n getAmountToBeReceivedFromChain(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger,\n sourceProvider?: Provider,\n destinationProvider?: Provider\n ): Promise<string>;\n async getAmountToBeReceivedFromChain(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n /**\n * The Messengers for different routes.\n */\n messenger: Messenger,\n sourceProvider?: Provider,\n destinationProvider?: Provider\n ): Promise<string> {\n return this.service.getAmountToBeReceivedFromChain(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger,\n sourceProvider,\n destinationProvider\n );\n }\n\n /**\n * Calculates the amount of tokens to be received as a result of transfer based on passed pool state.\n * @param amountToSendFloat the amount of tokens that will be sent\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param sourcePool source token pool state\n * @param destinationPool destination token pool state\n * @param messenger selected messenger\n */\n /** @deprecated Do not use. */\n getAmountToBeReceivedFromPools(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destinationPool: PoolInfo,\n messenger: Exclude<Messenger, Messenger.OFT>\n ): string;\n getAmountToBeReceivedFromPools(\n amountToSendFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destinationPool: PoolInfo,\n messenger: Exclude<Messenger, Messenger.OFT>\n ): string {\n switch (messenger) {\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE:\n return this.service.getAmountToBeReceivedComputeWithPools(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n sourcePool,\n destinationPool\n );\n case Messenger.CCTP:\n case Messenger.CCTP_V2:\n return this.service.getAmountToBeReceivedComputeCctp(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n );\n case Messenger.X_RESERVE:\n return this.service.getAmountToBeReceivedComputeXReserve(\n amountToSendFloat,\n sourceChainToken,\n destinationChainToken\n );\n }\n }\n\n /**\n * Calculates the amount of tokens to send based on requested tokens amount be received as a result of transfer.\n * @param amountToBeReceivedFloat the amount of tokens that should be received\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger selected messenger\n */\n /** @deprecated Do not use. */\n getAmountToSend(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: LegacyMessenger\n ): Promise<string>;\n getAmountToSend(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: ActiveMessenger\n ): Promise<string>;\n async getAmountToSend(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n /**\n * The Messengers for different routes.\n */\n messenger: Messenger\n ): Promise<string> {\n return this.service.getAmountToSend(amountToBeReceivedFloat, sourceChainToken, destinationChainToken, messenger);\n }\n\n /**\n * Calculates the amount of tokens to send based on requested tokens amount be received as a result of transfer based on actual blockchain pool state.\n * @param amountToBeReceivedFloat the amount of tokens that should be received\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger selected messenger\n * @param sourceProvider Optional. source chain Provider\n * @param destinationProvider Optional. destination chain Provider\n */\n /** @deprecated Do not use. */\n getAmountToSendFromChain(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger,\n sourceProvider?: Provider,\n destinationProvider?: Provider\n ): Promise<string>;\n async getAmountToSendFromChain(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n /**\n * The Messengers for different routes.\n */\n messenger: Messenger,\n sourceProvider?: Provider,\n destinationProvider?: Provider\n ): Promise<string> {\n return this.service.getAmountToSendFromChain(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger,\n sourceProvider,\n destinationProvider\n );\n }\n\n /**\n * Calculates the amount of tokens to send based on requested tokens amount be received as a result of transfer based on passed pool state.\n * @param amountToBeReceivedFloat the amount of tokens that should be received\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param sourcePool source token pool state\n * @param destinationPool destination token pool state\n * @param messenger selected messenger\n */\n /** @deprecated Do not use. */\n getAmountToSendFromPools(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destinationPool: PoolInfo,\n messenger: Exclude<Messenger, Messenger.OFT>\n ): string;\n getAmountToSendFromPools(\n amountToBeReceivedFloat: BigSource,\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n sourcePool: PoolInfo,\n destinationPool: PoolInfo,\n messenger: Exclude<Messenger, Messenger.OFT>\n ): string {\n switch (messenger) {\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE:\n return this.service.getAmountToSendComputeWithPools(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n sourcePool,\n destinationPool\n );\n case Messenger.CCTP:\n case Messenger.CCTP_V2:\n return this.service.getAmountToSendComputeCctp(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken,\n messenger\n );\n case Messenger.X_RESERVE:\n return this.service.getAmountToSendComputeXReserve(\n amountToBeReceivedFloat,\n sourceChainToken,\n destinationChainToken\n );\n }\n }\n\n /**\n * Fetches possible ways to pay the transfer gas fee.\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger\n * @returns {@link GasFeeOptions}\n */\n async getGasFeeOptions(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<GasFeeOptions> {\n return this.service.getGasFeeOptions(sourceChainToken, destinationChainToken, messenger);\n }\n\n /**\n * Gets the average time in ms to complete a transfer for given tokens and messenger.\n * @param sourceChainToken selected token on the source chain.\n * @param destinationChainToken selected token on the destination chain.\n * @param messenger\n * @returns Average transfer time in milliseconds or null if a given combination of tokens and messenger is not supported.\n */\n getAverageTransferTime(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): number | null {\n return this.service.getAverageTransferTime(sourceChainToken, destinationChainToken, messenger);\n }\n\n /**\n * Gets information about the poolInfo by token\n * @deprecated Do not use.\n * @param token\n * @returns poolInfo\n */\n async getPoolInfoByToken(token: TokenWithChainDetails): Promise<PoolInfo> {\n return this.service.getPoolInfoByToken(token);\n }\n\n /**\n * Forces refresh of cached information about the state of liquidity pools.\n * Outdated cache leads to calculated amounts being less accurate.\n * The cache is invalidated at regular intervals, but it can be forced to be refreshed by calling this method.+\n *\n * @deprecated Do not use.\n * @param tokens if present, the corresponding liquidity pools will be updated\n */\n async refreshPoolInfo(tokens?: TokenWithChainDetails | TokenWithChainDetails[]): Promise<void> {\n return this.service.refreshPoolInfo(tokens);\n }\n\n /**\n * Convert APR to percentage view\n * @deprecated Do not use.\n * @param apr\n * @returns aprPercentageView\n */\n aprInPercents(apr: string): string {\n return this.service.aprInPercents(apr);\n }\n\n /**\n * Get possible limit of extra gas amount.\n * @param sourceChainToken selected token on the source chain\n * @param destinationChainToken selected token on the destination chain\n * @param messenger selected Messenger\n * @returns {@link ExtraGasMaxLimitResponse}\n */\n /** @deprecated Do not use. */\n getExtraGasMaxLimits(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: LegacyMessenger\n ): Promise<ExtraGasMaxLimitResponse>;\n getExtraGasMaxLimits(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: ActiveMessenger\n ): Promise<ExtraGasMaxLimitResponse>;\n async getExtraGasMaxLimits(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger\n ): Promise<ExtraGasMaxLimitResponse> {\n return this.service.getExtraGasMaxLimits(sourceChainToken, destinationChainToken, messenger);\n }\n\n /**\n * @deprecated Do not use.\n * @param amount - amount\n * @param amountFormat - AmountFormat\n * @param sourceToken - selected token on the source chain\n * @return virtual amount\n */\n async getVUsdFromAmount(\n amount: string,\n amountFormat: AmountFormat,\n sourceToken: TokenWithChainDetails\n ): Promise<AmountFormatted> {\n return this.service.getVUsdFromAmount(amount, amountFormat, sourceToken);\n }\n\n /**\n * @deprecated Do not use.\n * @param vUsdAmount - amount of vUsd, int format\n * @param destToken selected token on the destination chain\n * @return amount of destToken\n */\n async getAmountFromVUsd(vUsdAmount: string, destToken: TokenWithChainDetails): Promise<AmountFormatted> {\n return this.service.getAmountFromVUsd(vUsdAmount, destToken);\n }\n\n /**\n * @deprecated Use {@link getSendAmountDetails}\n * @param amountInTokenPrecision\n * @param sourceToken\n * @param destToken\n */\n async swapAndBridgeFeeCalculation(\n amountInTokenPrecision: string,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<SwapAndBridgeCalculationData> {\n return this.service.swapAndBridgeFeeCalculation(amountInTokenPrecision, sourceToken, destToken);\n }\n\n /**\n * @deprecated Use {@link getAmountToBeReceived} and then {@link getSendAmountDetails}\n * @param amountInTokenPrecision\n * @param sourceToken\n * @param destToken\n */\n async swapAndBridgeFeeCalculationReverse(\n amountInTokenPrecision: string,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<SwapAndBridgeCalculationData> {\n return this.service.swapAndBridgeFeeCalculationReverse(amountInTokenPrecision, sourceToken, destToken);\n }\n\n /**\n * Show amount changes (fee and amount adjustment) during send through pools on source and destination chains\n * @deprecated Do not use.\n */\n async getSendAmountDetails(\n amount: string,\n amountFormat: AmountFormat,\n sourceToken: TokenWithChainDetails,\n destToken: TokenWithChainDetails\n ): Promise<SendAmountDetails> {\n return this.service.getSendAmountDetails(amount, amountFormat, sourceToken, destToken);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function encodeCctpHookForStellar(recipient: string): Buffer;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StrKey } from "@stellar/stellar-sdk";
|
|
2
|
+
import { SdkError } from "../../exceptions";
|
|
3
|
+
export function encodeCctpHookForStellar(recipient) {
|
|
4
|
+
if (!StrKey.isValidEd25519PublicKey(recipient) && !StrKey.isValidMed25519PublicKey(recipient)) {
|
|
5
|
+
throw new SdkError("Invalid Stellar recipient");
|
|
6
|
+
}
|
|
7
|
+
const recipientBytes = Buffer.from(recipient, "ascii");
|
|
8
|
+
const hookData = Buffer.alloc(4 + recipientBytes.length);
|
|
9
|
+
hookData.writeUInt32BE(recipientBytes.length);
|
|
10
|
+
recipientBytes.copy(hookData, 4);
|
|
11
|
+
return hookData;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=cctp-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cctp-utils.js","sourceRoot":"","sources":["../../../../src/services/bridge/cctp-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9F,MAAM,IAAI,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACzD,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACjC,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import { StrKey } from \"@stellar/stellar-sdk\";\nimport { SdkError } from \"../../exceptions\";\n\nexport function encodeCctpHookForStellar(recipient: string): Buffer {\n if (!StrKey.isValidEd25519PublicKey(recipient) && !StrKey.isValidMed25519PublicKey(recipient)) {\n throw new SdkError(\"Invalid Stellar recipient\");\n }\n const recipientBytes = Buffer.from(recipient, \"ascii\");\n const hookData = Buffer.alloc(4 + recipientBytes.length);\n hookData.writeUInt32BE(recipientBytes.length);\n recipientBytes.copy(hookData, 4);\n return hookData;\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ChainType } from "../../../chains/chain.enums";
|
|
2
|
+
import { Messenger } from "../../../client/core-api/core-api.model";
|
|
3
|
+
const ABR_PAYER_TARGET_BY_ROUTE = {
|
|
4
|
+
[`${Messenger.CCTP}:${ChainType.SOLANA}`]: 6,
|
|
5
|
+
[`${Messenger.CCTP_V2}:${ChainType.SOLANA}`]: 7,
|
|
6
|
+
[`${Messenger.CCTP_V2}:${ChainType.SRB}`]: 1008,
|
|
7
|
+
};
|
|
8
|
+
export function getAbrPayerTarget(destinationChainType, messenger) {
|
|
9
|
+
return ABR_PAYER_TARGET_BY_ROUTE[`${messenger}:${destinationChainType}`] ?? messenger;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=abr-payer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abr-payer.js","sourceRoot":"","sources":["../../../../../src/services/bridge/evm/abr-payer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,MAAM,yBAAyB,GAA2B;IACxD,CAAC,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IAC5C,CAAC,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IAC/C,CAAC,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI;CAChD,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,oBAA+B,EAAE,SAAoB;IACrF,OAAO,yBAAyB,CAAC,GAAG,SAAS,IAAI,oBAAoB,EAAE,CAAC,IAAI,SAAS,CAAC;AACxF,CAAC","sourcesContent":["import { ChainType } from \"../../../chains/chain.enums\";\nimport { Messenger } from \"../../../client/core-api/core-api.model\";\n\nconst ABR_PAYER_TARGET_BY_ROUTE: Record<string, number> = {\n [`${Messenger.CCTP}:${ChainType.SOLANA}`]: 6,\n [`${Messenger.CCTP_V2}:${ChainType.SOLANA}`]: 7,\n [`${Messenger.CCTP_V2}:${ChainType.SRB}`]: 1008,\n};\n\nexport function getAbrPayerTarget(destinationChainType: ChainType, messenger: Messenger): number {\n return ABR_PAYER_TARGET_BY_ROUTE[`${messenger}:${destinationChainType}`] ?? messenger;\n}\n"]}
|
|
@@ -9,9 +9,11 @@ import CctpBridge from "../../models/abi/CctpBridge";
|
|
|
9
9
|
import OftBridge from "../../models/abi/OftBridge";
|
|
10
10
|
import PayerWithAbr from "../../models/abi/PayerWithAbr";
|
|
11
11
|
import XReserveBridge from "../../models/abi/XReserveBridge";
|
|
12
|
+
import { encodeCctpHookForStellar } from "../cctp-utils";
|
|
12
13
|
import { getCctpSolTokenRecipientAddress } from "../get-cctp-sol-token-recipient-address";
|
|
13
14
|
import { ChainBridgeService } from "../models";
|
|
14
|
-
import { bufferToSize, getNonce, prepareTxSendParams, prepareTxSwapParams } from "../utils";
|
|
15
|
+
import { bufferToSize, formatAddress, getNonce, prepareTxSendParams, prepareTxSwapParams } from "../utils";
|
|
16
|
+
import { getAbrPayerTarget } from "./abr-payer";
|
|
15
17
|
export class EvmBridgeService extends ChainBridgeService {
|
|
16
18
|
web3;
|
|
17
19
|
api;
|
|
@@ -119,15 +121,7 @@ export class EvmBridgeService extends ChainBridgeService {
|
|
|
119
121
|
const abrPayerContract = this.getAbrPayerContract(abrPayerAddress);
|
|
120
122
|
const abi = sendMethod.encodeABI();
|
|
121
123
|
const withoutSelector = "0x" + abi.slice(10);
|
|
122
|
-
|
|
123
|
-
if (params.destinationToken.chainType === ChainType.SOLANA) {
|
|
124
|
-
if (messenger === Messenger.CCTP) {
|
|
125
|
-
target = 6;
|
|
126
|
-
}
|
|
127
|
-
if (messenger === Messenger.CCTP_V2) {
|
|
128
|
-
target = 7;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
124
|
+
const target = getAbrPayerTarget(params.destinationToken.chainType, messenger);
|
|
131
125
|
sendMethod = abrPayerContract.methods.transferTokensAndCallTarget(params.sourceToken.tokenAddress, amount, totalFeeInAbr, target, withoutSelector);
|
|
132
126
|
return Promise.resolve({
|
|
133
127
|
from: fromAccountAddress,
|
|
@@ -167,6 +161,37 @@ export class EvmBridgeService extends ChainBridgeService {
|
|
|
167
161
|
}
|
|
168
162
|
}
|
|
169
163
|
}
|
|
164
|
+
else if (params.destinationToken.chainType === ChainType.SRB && params.messenger === Messenger.CCTP_V2) {
|
|
165
|
+
const destinationCctpV2Address = params.destinationToken.cctpV2Address;
|
|
166
|
+
if (!destinationCctpV2Address) {
|
|
167
|
+
throw new SdkError("Destination token must contain 'cctpV2Address' for CCTP V2");
|
|
168
|
+
}
|
|
169
|
+
const recipient = formatAddress(destinationCctpV2Address, ChainType.SRB, ChainType.EVM);
|
|
170
|
+
const destinationCallerValue = await cctpBridgeContract.methods.otherBridges(toChainId).call();
|
|
171
|
+
const destinationCaller = typeof destinationCallerValue === "string"
|
|
172
|
+
? destinationCallerValue
|
|
173
|
+
: "0x" + Buffer.from(destinationCallerValue).toString("hex");
|
|
174
|
+
if (destinationCaller.toLowerCase() !== recipient.toLowerCase()) {
|
|
175
|
+
throw new SdkError(`CCTPv2 destination caller mismatch: expected ${recipient}, received ${destinationCaller}`);
|
|
176
|
+
}
|
|
177
|
+
const hookData = "0x" + encodeCctpHookForStellar(params.toAccountAddress).toString("hex");
|
|
178
|
+
switch (gasFeePaymentMethod) {
|
|
179
|
+
case FeePaymentMethod.WITH_ABR:
|
|
180
|
+
case FeePaymentMethod.WITH_NATIVE_CURRENCY: {
|
|
181
|
+
sendMethod = cctpBridgeContract.methods.bridgeWithHook(amount, recipient, toChainId, 0, hookData);
|
|
182
|
+
value = totalFee;
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
case FeePaymentMethod.WITH_STABLECOIN: {
|
|
186
|
+
sendMethod = cctpBridgeContract.methods.bridgeWithHook(amount, recipient, toChainId, totalFee, hookData);
|
|
187
|
+
value = "0";
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
default: {
|
|
191
|
+
return assertNever(gasFeePaymentMethod, "Unhandled FeePaymentMethod");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
170
195
|
else {
|
|
171
196
|
switch (gasFeePaymentMethod) {
|
|
172
197
|
case FeePaymentMethod.WITH_ABR:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/bridge/evm/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { createAddress } from \"@stacks/transactions\";\nimport { Big } from \"big.js\";\nimport BN from \"bn.js\";\nimport { Contract } from \"web3\";\nimport { PayableMethodObject } from \"web3-eth-contract\";\nimport { Chains } from \"../../../chains\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport {\n ChainSymbol,\n ChainType,\n EssentialWeb3,\n FeePaymentMethod,\n Messenger,\n SdkError,\n SwapParams,\n TransactionResponse,\n} from \"../../../models\";\nimport { convertAmountPrecision } from \"../../../utils/calculation\";\nimport { assertNever } from \"../../../utils/utils\";\nimport { NodeRpcUrlsConfig } from \"../../index\";\nimport { RawTransaction } from \"../../models\";\nimport Bridge from \"../../models/abi/Bridge\";\nimport CctpBridge from \"../../models/abi/CctpBridge\";\nimport OftBridge from \"../../models/abi/OftBridge\";\nimport PayerWithAbr from \"../../models/abi/PayerWithAbr\";\nimport XReserveBridge from \"../../models/abi/XReserveBridge\";\nimport { getCctpSolTokenRecipientAddress } from \"../get-cctp-sol-token-recipient-address\";\nimport { ChainBridgeService, SendParams, TxSendParamsEvm, TxSwapParamsEvm } from \"../models\";\nimport { bufferToSize, getNonce, prepareTxSendParams, prepareTxSwapParams } from \"../utils\";\n\nexport class EvmBridgeService extends ChainBridgeService {\n chainType: ChainType.EVM = ChainType.EVM;\n\n constructor(\n public web3: EssentialWeb3,\n public api: AllbridgeCoreClient,\n private nodeRpcUrlsConfig: NodeRpcUrlsConfig\n ) {\n super();\n }\n\n async send(params: SendParams): Promise<TransactionResponse> {\n const rawTransaction = await this.buildRawTransactionSend(params);\n return this.sendRawTransaction(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: TxSwapParamsEvm): Promise<RawTransaction> {\n const {\n amount,\n contractAddress,\n fromAccountAddress,\n fromTokenAddress,\n toAccountAddress,\n toTokenAddress,\n minimumReceiveAmount,\n } = params;\n\n const bridgeContract = this.getBridgeContract(contractAddress);\n\n const swapMethod = bridgeContract.methods.swap(\n amount,\n fromTokenAddress,\n toTokenAddress,\n toAccountAddress,\n minimumReceiveAmount\n );\n\n return Promise.resolve({\n from: fromAccountAddress,\n to: contractAddress,\n data: swapMethod.encodeABI(),\n });\n }\n\n async buildRawTransactionSend(params: SendParams): Promise<RawTransaction> {\n const txSendParams = await prepareTxSendParams(this.chainType, params, this.api);\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 abrExchangeRate,\n } = txSendParams;\n\n const nonce = \"0x\" + getNonce().toString(\"hex\");\n let sendMethod: PayableMethodObject;\n let value: string;\n\n let totalFee = fee;\n if (extraGas) {\n totalFee = Big(totalFee).plus(extraGas).toFixed();\n }\n\n let totalFeeInAbr: string | undefined;\n if (gasFeePaymentMethod === FeePaymentMethod.WITH_ABR) {\n if (!abrExchangeRate) {\n throw new SdkError(\"Cannot find 'abrExchangeRate' for ABR payment method\");\n }\n if (!params.sourceToken.abrPayer) {\n throw new SdkError(\"Source token must contain 'abrPayer' for ABR payment method\");\n }\n totalFeeInAbr = totalFee;\n const totalFeeInNativeRaw = Big(totalFee).div(abrExchangeRate);\n totalFee = convertAmountPrecision(\n totalFeeInNativeRaw,\n params.sourceToken.abrPayer.abrToken.decimals,\n Chains.getChainDecimalsByType(params.sourceToken.chainType)\n ).toFixed();\n }\n\n switch (messenger) {\n case Messenger.CCTP:\n case Messenger.CCTP_V2: {\n const cctp = await this.buildRawTransactionCctpSend(params, txSendParams, totalFee);\n sendMethod = cctp.sendMethod;\n value = cctp.value;\n break;\n }\n case Messenger.OFT: {\n const oft = this.buildRawTransactionOftSend(params, txSendParams, totalFee, extraGasDest);\n sendMethod = oft.sendMethod;\n value = oft.value;\n break;\n }\n case Messenger.X_RESERVE: {\n const xReserve = this.buildRawTransactionXReserveSend(params, txSendParams, totalFee, extraGasDest);\n sendMethod = xReserve.sendMethod;\n value = xReserve.value;\n break;\n }\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE:\n {\n const bridgeContract = this.getBridgeContract(contractAddress);\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_ABR:\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n sendMethod = bridgeContract.methods.swapAndBridge(\n fromTokenAddress,\n amount,\n toAccountAddress,\n toChainId,\n toTokenAddress,\n nonce,\n messenger,\n 0\n );\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n sendMethod = bridgeContract.methods.swapAndBridge(\n fromTokenAddress,\n amount,\n toAccountAddress,\n toChainId,\n toTokenAddress,\n nonce,\n messenger,\n totalFee\n );\n value = \"0\";\n break;\n }\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n }\n break;\n }\n\n if (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 const abrPayerAddress = params.sourceToken.abrPayer.payerAddress;\n\n if (!totalFeeInAbr) {\n throw new SdkError(\"Failed to calculate totalFeeInAbr\");\n }\n const abrPayerContract = this.getAbrPayerContract(abrPayerAddress);\n\n const abi = sendMethod.encodeABI();\n const withoutSelector = \"0x\" + abi.slice(10);\n\n let target: number = messenger;\n if (params.destinationToken.chainType === ChainType.SOLANA) {\n if (messenger === Messenger.CCTP) {\n target = 6;\n }\n if (messenger === Messenger.CCTP_V2) {\n target = 7;\n }\n }\n sendMethod = abrPayerContract.methods.transferTokensAndCallTarget(\n params.sourceToken.tokenAddress,\n amount,\n totalFeeInAbr,\n target,\n withoutSelector\n );\n\n return Promise.resolve({\n from: fromAccountAddress,\n to: abrPayerAddress,\n value: \"0\",\n data: sendMethod.encodeABI(),\n });\n }\n\n return Promise.resolve({\n from: fromAccountAddress,\n to: contractAddress,\n value: value,\n data: sendMethod.encodeABI(),\n });\n }\n\n private async buildRawTransactionCctpSend(\n params: SendParams,\n txSendParams: TxSendParamsEvm,\n totalFee: string\n ): Promise<{\n sendMethod: PayableMethodObject;\n value: string;\n }> {\n const { amount, contractAddress, toChainId, toAccountAddress, gasFeePaymentMethod } = txSendParams;\n\n const cctpBridgeContract = this.getCctpBridgeContract(contractAddress);\n let sendMethod: PayableMethodObject;\n let value: string;\n\n if (params.destinationToken.chainType === ChainType.SOLANA) {\n const recipient = await getCctpSolTokenRecipientAddress(\n this.chainType,\n params.toAccountAddress,\n params.destinationToken.tokenAddress,\n this.nodeRpcUrlsConfig.getNodeRpcUrl(ChainSymbol.SOL)\n );\n\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_ABR:\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n sendMethod = cctpBridgeContract.methods.bridgeWithWalletAddress(\n amount,\n recipient,\n toAccountAddress,\n toChainId,\n 0\n );\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n sendMethod = cctpBridgeContract.methods.bridgeWithWalletAddress(\n amount,\n recipient,\n toAccountAddress,\n toChainId,\n totalFee\n );\n value = \"0\";\n break;\n }\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n } else {\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_ABR:\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n sendMethod = cctpBridgeContract.methods.bridge(amount, toAccountAddress, toChainId, 0);\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n sendMethod = cctpBridgeContract.methods.bridge(amount, toAccountAddress, toChainId, totalFee);\n value = \"0\";\n break;\n }\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n }\n return { sendMethod, value };\n }\n\n private buildRawTransactionOftSend(\n params: SendParams,\n txSendParams: TxSendParamsEvm,\n totalFee: string,\n extraGasDest?: string\n ): {\n sendMethod: PayableMethodObject;\n value: string;\n } {\n const { amount, contractAddress, toChainId, toAccountAddress, gasFeePaymentMethod } = txSendParams;\n\n const oftBridgeContract = this.getOftBridgeContract(contractAddress);\n let sendMethod: PayableMethodObject;\n let value: string;\n\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_ABR:\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n sendMethod = oftBridgeContract.methods.bridge(\n params.sourceToken.tokenAddress,\n amount,\n toAccountAddress,\n toChainId,\n 0,\n extraGasDest ?? \"0\",\n \"10\"\n );\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n sendMethod = oftBridgeContract.methods.bridge(\n params.sourceToken.tokenAddress,\n amount,\n toAccountAddress,\n toChainId,\n totalFee,\n extraGasDest ?? \"0\",\n \"10\"\n );\n value = \"0\";\n break;\n }\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n\n return { sendMethod, value };\n }\n\n private buildRawTransactionXReserveSend(\n params: SendParams,\n txSendParams: TxSendParamsEvm,\n totalFee: string,\n extraGasDest?: string\n ): {\n sendMethod: PayableMethodObject;\n value: string;\n } {\n const { amount, contractAddress, toChainId, toAccountAddress, gasFeePaymentMethod } = txSendParams;\n\n if (gasFeePaymentMethod !== FeePaymentMethod.WITH_NATIVE_CURRENCY) {\n throw new SdkError(\"xReserve bridge supports only WITH_NATIVE_CURRENCY payment method\");\n }\n if (Big(totalFee).gt(0) || (extraGasDest && Big(extraGasDest).gt(0))) {\n throw new SdkError(\"xReserve bridge does not support additional bridge fee or extra gas\");\n }\n\n let recipient = toAccountAddress;\n if (params.destinationToken.chainType == ChainType.STX) {\n const { version, hash160 } = createAddress(params.toAccountAddress);\n const versionHex = Number(version).toString(16);\n const hashBytes = Buffer.from(`${versionHex}${hash160}`, \"hex\");\n recipient = \"0x\" + bufferToSize(hashBytes, 32).toString(\"hex\");\n }\n\n const xReserveBridgeContract = this.getXReserveBridgeContract(contractAddress);\n return {\n sendMethod: xReserveBridgeContract.methods.bridge(amount, recipient, toChainId),\n value: \"0\",\n };\n }\n\n private async sendRawTransaction(rawTransaction: RawTransaction) {\n const estimateGas = await this.web3.eth.estimateGas(rawTransaction);\n\n // @ts-expect-error DISABLE SITE SUGGESTED GAS FEE IN METAMASK\n // prettier-ignore\n const feeOptions: { maxPriorityFeePerGas?: number | string | BN; maxFeePerGas?: number | string | BN } = { maxPriorityFeePerGas: null, maxFeePerGas: null };\n const { transactionHash } = await this.web3.eth.sendTransaction({\n ...(rawTransaction as object),\n gas: estimateGas,\n ...feeOptions,\n });\n return { txId: transactionHash.toString() };\n }\n\n private getBridgeContract(contractAddress: string) {\n return new this.web3.eth.Contract(Bridge.abi, contractAddress) as Contract<typeof Bridge.abi>;\n }\n\n private getCctpBridgeContract(contractAddress: string) {\n return new this.web3.eth.Contract(CctpBridge.abi, contractAddress) as Contract<typeof CctpBridge.abi>;\n }\n\n private getOftBridgeContract(contractAddress: string) {\n return new this.web3.eth.Contract(OftBridge.abi, contractAddress) as Contract<typeof OftBridge.abi>;\n }\n\n private getAbrPayerContract(contractAddress: string) {\n return new this.web3.eth.Contract(PayerWithAbr.abi, contractAddress) as Contract<typeof PayerWithAbr.abi>;\n }\n\n private getXReserveBridgeContract(contractAddress: string) {\n return new this.web3.eth.Contract(XReserveBridge.abi, contractAddress) as Contract<typeof XReserveBridge.abi>;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/bridge/evm/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { createAddress } from \"@stacks/transactions\";\nimport { Big } from \"big.js\";\nimport BN from \"bn.js\";\nimport { Contract } from \"web3\";\nimport { PayableMethodObject } from \"web3-eth-contract\";\nimport { Chains } from \"../../../chains\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport {\n ChainSymbol,\n ChainType,\n EssentialWeb3,\n FeePaymentMethod,\n Messenger,\n SdkError,\n SwapParams,\n TransactionResponse,\n} from \"../../../models\";\nimport { convertAmountPrecision } from \"../../../utils/calculation\";\nimport { assertNever } from \"../../../utils/utils\";\nimport { NodeRpcUrlsConfig } from \"../../index\";\nimport { RawTransaction } from \"../../models\";\nimport Bridge from \"../../models/abi/Bridge\";\nimport CctpBridge from \"../../models/abi/CctpBridge\";\nimport OftBridge from \"../../models/abi/OftBridge\";\nimport PayerWithAbr from \"../../models/abi/PayerWithAbr\";\nimport XReserveBridge from \"../../models/abi/XReserveBridge\";\nimport { encodeCctpHookForStellar } from \"../cctp-utils\";\nimport { getCctpSolTokenRecipientAddress } from \"../get-cctp-sol-token-recipient-address\";\nimport { ChainBridgeService, SendParams, TxSendParamsEvm, TxSwapParamsEvm } from \"../models\";\nimport { bufferToSize, formatAddress, getNonce, prepareTxSendParams, prepareTxSwapParams } from \"../utils\";\nimport { getAbrPayerTarget } from \"./abr-payer\";\n\nexport class EvmBridgeService extends ChainBridgeService {\n chainType: ChainType.EVM = ChainType.EVM;\n\n constructor(\n public web3: EssentialWeb3,\n public api: AllbridgeCoreClient,\n private nodeRpcUrlsConfig: NodeRpcUrlsConfig\n ) {\n super();\n }\n\n async send(params: SendParams): Promise<TransactionResponse> {\n const rawTransaction = await this.buildRawTransactionSend(params);\n return this.sendRawTransaction(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: TxSwapParamsEvm): Promise<RawTransaction> {\n const {\n amount,\n contractAddress,\n fromAccountAddress,\n fromTokenAddress,\n toAccountAddress,\n toTokenAddress,\n minimumReceiveAmount,\n } = params;\n\n const bridgeContract = this.getBridgeContract(contractAddress);\n\n const swapMethod = bridgeContract.methods.swap(\n amount,\n fromTokenAddress,\n toTokenAddress,\n toAccountAddress,\n minimumReceiveAmount\n );\n\n return Promise.resolve({\n from: fromAccountAddress,\n to: contractAddress,\n data: swapMethod.encodeABI(),\n });\n }\n\n async buildRawTransactionSend(params: SendParams): Promise<RawTransaction> {\n const txSendParams = await prepareTxSendParams(this.chainType, params, this.api);\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 abrExchangeRate,\n } = txSendParams;\n\n const nonce = \"0x\" + getNonce().toString(\"hex\");\n let sendMethod: PayableMethodObject;\n let value: string;\n\n let totalFee = fee;\n if (extraGas) {\n totalFee = Big(totalFee).plus(extraGas).toFixed();\n }\n\n let totalFeeInAbr: string | undefined;\n if (gasFeePaymentMethod === FeePaymentMethod.WITH_ABR) {\n if (!abrExchangeRate) {\n throw new SdkError(\"Cannot find 'abrExchangeRate' for ABR payment method\");\n }\n if (!params.sourceToken.abrPayer) {\n throw new SdkError(\"Source token must contain 'abrPayer' for ABR payment method\");\n }\n totalFeeInAbr = totalFee;\n const totalFeeInNativeRaw = Big(totalFee).div(abrExchangeRate);\n totalFee = convertAmountPrecision(\n totalFeeInNativeRaw,\n params.sourceToken.abrPayer.abrToken.decimals,\n Chains.getChainDecimalsByType(params.sourceToken.chainType)\n ).toFixed();\n }\n\n switch (messenger) {\n case Messenger.CCTP:\n case Messenger.CCTP_V2: {\n const cctp = await this.buildRawTransactionCctpSend(params, txSendParams, totalFee);\n sendMethod = cctp.sendMethod;\n value = cctp.value;\n break;\n }\n case Messenger.OFT: {\n const oft = this.buildRawTransactionOftSend(params, txSendParams, totalFee, extraGasDest);\n sendMethod = oft.sendMethod;\n value = oft.value;\n break;\n }\n case Messenger.X_RESERVE: {\n const xReserve = this.buildRawTransactionXReserveSend(params, txSendParams, totalFee, extraGasDest);\n sendMethod = xReserve.sendMethod;\n value = xReserve.value;\n break;\n }\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE:\n {\n const bridgeContract = this.getBridgeContract(contractAddress);\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_ABR:\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n sendMethod = bridgeContract.methods.swapAndBridge(\n fromTokenAddress,\n amount,\n toAccountAddress,\n toChainId,\n toTokenAddress,\n nonce,\n messenger,\n 0\n );\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n sendMethod = bridgeContract.methods.swapAndBridge(\n fromTokenAddress,\n amount,\n toAccountAddress,\n toChainId,\n toTokenAddress,\n nonce,\n messenger,\n totalFee\n );\n value = \"0\";\n break;\n }\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n }\n break;\n }\n\n if (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 const abrPayerAddress = params.sourceToken.abrPayer.payerAddress;\n\n if (!totalFeeInAbr) {\n throw new SdkError(\"Failed to calculate totalFeeInAbr\");\n }\n const abrPayerContract = this.getAbrPayerContract(abrPayerAddress);\n\n const abi = sendMethod.encodeABI();\n const withoutSelector = \"0x\" + abi.slice(10);\n\n const target = getAbrPayerTarget(params.destinationToken.chainType, messenger);\n sendMethod = abrPayerContract.methods.transferTokensAndCallTarget(\n params.sourceToken.tokenAddress,\n amount,\n totalFeeInAbr,\n target,\n withoutSelector\n );\n\n return Promise.resolve({\n from: fromAccountAddress,\n to: abrPayerAddress,\n value: \"0\",\n data: sendMethod.encodeABI(),\n });\n }\n\n return Promise.resolve({\n from: fromAccountAddress,\n to: contractAddress,\n value: value,\n data: sendMethod.encodeABI(),\n });\n }\n\n private async buildRawTransactionCctpSend(\n params: SendParams,\n txSendParams: TxSendParamsEvm,\n totalFee: string\n ): Promise<{\n sendMethod: PayableMethodObject;\n value: string;\n }> {\n const { amount, contractAddress, toChainId, toAccountAddress, gasFeePaymentMethod } = txSendParams;\n\n const cctpBridgeContract = this.getCctpBridgeContract(contractAddress);\n let sendMethod: PayableMethodObject;\n let value: string;\n\n if (params.destinationToken.chainType === ChainType.SOLANA) {\n const recipient = await getCctpSolTokenRecipientAddress(\n this.chainType,\n params.toAccountAddress,\n params.destinationToken.tokenAddress,\n this.nodeRpcUrlsConfig.getNodeRpcUrl(ChainSymbol.SOL)\n );\n\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_ABR:\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n sendMethod = cctpBridgeContract.methods.bridgeWithWalletAddress(\n amount,\n recipient,\n toAccountAddress,\n toChainId,\n 0\n );\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n sendMethod = cctpBridgeContract.methods.bridgeWithWalletAddress(\n amount,\n recipient,\n toAccountAddress,\n toChainId,\n totalFee\n );\n value = \"0\";\n break;\n }\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n } else if (params.destinationToken.chainType === ChainType.SRB && params.messenger === Messenger.CCTP_V2) {\n const destinationCctpV2Address = params.destinationToken.cctpV2Address;\n if (!destinationCctpV2Address) {\n throw new SdkError(\"Destination token must contain 'cctpV2Address' for CCTP V2\");\n }\n const recipient = formatAddress(destinationCctpV2Address, ChainType.SRB, ChainType.EVM);\n const destinationCallerValue = await cctpBridgeContract.methods.otherBridges(toChainId).call();\n const destinationCaller =\n typeof destinationCallerValue === \"string\"\n ? destinationCallerValue\n : \"0x\" + Buffer.from(destinationCallerValue).toString(\"hex\");\n if (destinationCaller.toLowerCase() !== recipient.toLowerCase()) {\n throw new SdkError(`CCTPv2 destination caller mismatch: expected ${recipient}, received ${destinationCaller}`);\n }\n const hookData = \"0x\" + encodeCctpHookForStellar(params.toAccountAddress).toString(\"hex\");\n\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_ABR:\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n sendMethod = cctpBridgeContract.methods.bridgeWithHook(amount, recipient, toChainId, 0, hookData);\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n sendMethod = cctpBridgeContract.methods.bridgeWithHook(amount, recipient, toChainId, totalFee, hookData);\n value = \"0\";\n break;\n }\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n } else {\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_ABR:\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n sendMethod = cctpBridgeContract.methods.bridge(amount, toAccountAddress, toChainId, 0);\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n sendMethod = cctpBridgeContract.methods.bridge(amount, toAccountAddress, toChainId, totalFee);\n value = \"0\";\n break;\n }\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n }\n return { sendMethod, value };\n }\n\n private buildRawTransactionOftSend(\n params: SendParams,\n txSendParams: TxSendParamsEvm,\n totalFee: string,\n extraGasDest?: string\n ): {\n sendMethod: PayableMethodObject;\n value: string;\n } {\n const { amount, contractAddress, toChainId, toAccountAddress, gasFeePaymentMethod } = txSendParams;\n\n const oftBridgeContract = this.getOftBridgeContract(contractAddress);\n let sendMethod: PayableMethodObject;\n let value: string;\n\n switch (gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_ABR:\n case FeePaymentMethod.WITH_NATIVE_CURRENCY: {\n sendMethod = oftBridgeContract.methods.bridge(\n params.sourceToken.tokenAddress,\n amount,\n toAccountAddress,\n toChainId,\n 0,\n extraGasDest ?? \"0\",\n \"10\"\n );\n value = totalFee;\n break;\n }\n case FeePaymentMethod.WITH_STABLECOIN: {\n sendMethod = oftBridgeContract.methods.bridge(\n params.sourceToken.tokenAddress,\n amount,\n toAccountAddress,\n toChainId,\n totalFee,\n extraGasDest ?? \"0\",\n \"10\"\n );\n value = \"0\";\n break;\n }\n default: {\n return assertNever(gasFeePaymentMethod, \"Unhandled FeePaymentMethod\");\n }\n }\n\n return { sendMethod, value };\n }\n\n private buildRawTransactionXReserveSend(\n params: SendParams,\n txSendParams: TxSendParamsEvm,\n totalFee: string,\n extraGasDest?: string\n ): {\n sendMethod: PayableMethodObject;\n value: string;\n } {\n const { amount, contractAddress, toChainId, toAccountAddress, gasFeePaymentMethod } = txSendParams;\n\n if (gasFeePaymentMethod !== FeePaymentMethod.WITH_NATIVE_CURRENCY) {\n throw new SdkError(\"xReserve bridge supports only WITH_NATIVE_CURRENCY payment method\");\n }\n if (Big(totalFee).gt(0) || (extraGasDest && Big(extraGasDest).gt(0))) {\n throw new SdkError(\"xReserve bridge does not support additional bridge fee or extra gas\");\n }\n\n let recipient = toAccountAddress;\n if (params.destinationToken.chainType == ChainType.STX) {\n const { version, hash160 } = createAddress(params.toAccountAddress);\n const versionHex = Number(version).toString(16);\n const hashBytes = Buffer.from(`${versionHex}${hash160}`, \"hex\");\n recipient = \"0x\" + bufferToSize(hashBytes, 32).toString(\"hex\");\n }\n\n const xReserveBridgeContract = this.getXReserveBridgeContract(contractAddress);\n return {\n sendMethod: xReserveBridgeContract.methods.bridge(amount, recipient, toChainId),\n value: \"0\",\n };\n }\n\n private async sendRawTransaction(rawTransaction: RawTransaction) {\n const estimateGas = await this.web3.eth.estimateGas(rawTransaction);\n\n // @ts-expect-error DISABLE SITE SUGGESTED GAS FEE IN METAMASK\n // prettier-ignore\n const feeOptions: { maxPriorityFeePerGas?: number | string | BN; maxFeePerGas?: number | string | BN } = { maxPriorityFeePerGas: null, maxFeePerGas: null };\n const { transactionHash } = await this.web3.eth.sendTransaction({\n ...(rawTransaction as object),\n gas: estimateGas,\n ...feeOptions,\n });\n return { txId: transactionHash.toString() };\n }\n\n private getBridgeContract(contractAddress: string) {\n return new this.web3.eth.Contract(Bridge.abi, contractAddress) as Contract<typeof Bridge.abi>;\n }\n\n private getCctpBridgeContract(contractAddress: string) {\n return new this.web3.eth.Contract(CctpBridge.abi, contractAddress) as Contract<typeof CctpBridge.abi>;\n }\n\n private getOftBridgeContract(contractAddress: string) {\n return new this.web3.eth.Contract(OftBridge.abi, contractAddress) as Contract<typeof OftBridge.abi>;\n }\n\n private getAbrPayerContract(contractAddress: string) {\n return new this.web3.eth.Contract(PayerWithAbr.abi, contractAddress) as Contract<typeof PayerWithAbr.abi>;\n }\n\n private getXReserveBridgeContract(contractAddress: string) {\n return new this.web3.eth.Contract(XReserveBridge.abi, contractAddress) as Contract<typeof XReserveBridge.abi>;\n }\n}\n"]}
|
|
@@ -14,6 +14,7 @@ interface SwapAndBridgeSolDataCctpData<IDL extends Idl> {
|
|
|
14
14
|
amount: BN;
|
|
15
15
|
recipient: number[];
|
|
16
16
|
receiveToken: number[];
|
|
17
|
+
hookData?: Buffer;
|
|
17
18
|
userToken: PublicKey;
|
|
18
19
|
bridgeAuthority: PublicKey;
|
|
19
20
|
bridgeTokenAccount: PublicKey;
|
|
@@ -28,7 +29,7 @@ interface SwapAndBridgeSolDataCctpData<IDL extends Idl> {
|
|
|
28
29
|
}
|
|
29
30
|
export interface SolanaBridgeParams {
|
|
30
31
|
/** @deprecated Do not use. */
|
|
31
|
-
wormholeMessengerProgramId
|
|
32
|
+
wormholeMessengerProgramId?: string;
|
|
32
33
|
solanaLookUpTable: string;
|
|
33
34
|
cctpParams: CctpParams;
|
|
34
35
|
}
|
|
@@ -12,6 +12,7 @@ import { getMessage, getTokenAccountData, getVUsdAmount } from "../../utils/sol"
|
|
|
12
12
|
import { getAssociatedAccount, getAuthorityAccount, getBridgeTokenAccount, getCctpAccounts, getCctpAuthorityAccount, getCctpBridgeAccount, getCctpBridgeTokenAccount, getCctpLockAccount, getCctpV2BridgeConfigAccount, getChainBridgeAccount, getConfigAccount, getGasUsageAccount, getLockAccount, getOtherChainTokenAccount, getPriceAccount, getSendMessageAccount, } from "../../utils/sol/accounts";
|
|
13
13
|
import { buildAnchorProvider } from "../../utils/sol/anchor-provider";
|
|
14
14
|
import { addUnitLimitAndUnitPriceToTx } from "../../utils/sol/compute-budget";
|
|
15
|
+
import { encodeCctpHookForStellar } from "../cctp-utils";
|
|
15
16
|
import { getNonce, prepareTxSwapParams } from "../utils";
|
|
16
17
|
import { convertToVersionedTransaction } from "./utils";
|
|
17
18
|
const COMPUTE_UNIT_LIMIT = 1_000_000;
|
|
@@ -113,7 +114,7 @@ export class BridgeTxService {
|
|
|
113
114
|
break;
|
|
114
115
|
}
|
|
115
116
|
case Messenger.CCTP_V2: {
|
|
116
|
-
const swapAndBridgeSolData = await this.prepareSwapAndBridgeCctpV2Data(solTxSendParams);
|
|
117
|
+
const swapAndBridgeSolData = await this.prepareSwapAndBridgeCctpV2Data(params, solTxSendParams);
|
|
117
118
|
const { transaction, messageSentEventDataKeypair } = await this.buildSwapAndBridgeCctpV2Transaction(params.destinationToken.chainSymbol, swapAndBridgeSolData);
|
|
118
119
|
swapAndBridgeTx = transaction;
|
|
119
120
|
requiredMessageSigner = messageSentEventDataKeypair;
|
|
@@ -248,6 +249,9 @@ export class BridgeTxService {
|
|
|
248
249
|
async buildSwapAndBridgeWormholeTransaction(swapAndBridgeData) {
|
|
249
250
|
const { bridge, vusdAmount, nonce, recipient, receiveToken, poolAccount, lockAccount, bridgeAuthority, userToken, bridgeTokenAccount, chainBridgeAccount, otherBridgeTokenAccount, userAccount, destinationChainId, mint, config, configAccountInfo, gasPrice, thisGasPrice, extraGasInstruction, } = swapAndBridgeData;
|
|
250
251
|
const wormholeProgramId = this.params.wormholeMessengerProgramId;
|
|
252
|
+
if (!wormholeProgramId) {
|
|
253
|
+
throw new SdkError("Do not use.");
|
|
254
|
+
}
|
|
251
255
|
const [whBridgeAccount] = PublicKey.findProgramAddressSync([Buffer.from("Bridge")], new PublicKey(wormholeProgramId));
|
|
252
256
|
const [whFeeCollectorAccount] = PublicKey.findProgramAddressSync([Buffer.from("fee_collector")], new PublicKey(wormholeProgramId));
|
|
253
257
|
const [whSequenceAccount] = PublicKey.findProgramAddressSync([Buffer.from("Sequence"), bridgeAuthority.toBuffer()], new PublicKey(wormholeProgramId));
|
|
@@ -418,7 +422,7 @@ export class BridgeTxService {
|
|
|
418
422
|
messageSentEventDataKeypair,
|
|
419
423
|
};
|
|
420
424
|
}
|
|
421
|
-
async prepareSwapAndBridgeCctpV2Data(txSendParams) {
|
|
425
|
+
async prepareSwapAndBridgeCctpV2Data(params, txSendParams) {
|
|
422
426
|
const { contractAddress, amount, fromAccountAddress, fromTokenAddress, toChainId, toAccountAddress, toTokenAddress, extraGas, } = txSendParams;
|
|
423
427
|
const cctpV2BridgeAddress = contractAddress;
|
|
424
428
|
if (!cctpV2BridgeAddress) {
|
|
@@ -427,18 +431,32 @@ export class BridgeTxService {
|
|
|
427
431
|
const CHAIN_ID = 4;
|
|
428
432
|
const account = fromAccountAddress;
|
|
429
433
|
const receiveTokenAddress = toTokenAddress;
|
|
430
|
-
const receiverInBuffer32 = toAccountAddress;
|
|
431
434
|
const provider = buildAnchorProvider(this.solanaRpcUrl, account);
|
|
432
435
|
const cctpBridge = new Program({ ...cctpV2BridgeIdl, address: cctpV2BridgeAddress }, provider);
|
|
433
436
|
const mint = new PublicKey(fromTokenAddress);
|
|
434
437
|
const cctpBridgeConfigAccount = getCctpV2BridgeConfigAccount(mint, cctpBridge.programId);
|
|
435
438
|
const userAccount = new PublicKey(account);
|
|
436
439
|
const configAccountInfo = await cctpBridge.account.config.fetch(cctpBridgeConfigAccount);
|
|
440
|
+
let recipient;
|
|
441
|
+
let hookData;
|
|
442
|
+
if (params.destinationToken.chainType === ChainType.SRB) {
|
|
443
|
+
const destinationCctpV2Address = params.destinationToken.cctpV2Address;
|
|
444
|
+
if (!destinationCctpV2Address) {
|
|
445
|
+
throw new CCTPDoesNotSupportedError("The route does not support CCTPv2 protocol");
|
|
446
|
+
}
|
|
447
|
+
recipient = Array.from(new PublicKey(destinationCctpV2Address).toBytes());
|
|
448
|
+
hookData = encodeCctpHookForStellar(params.toAccountAddress);
|
|
449
|
+
}
|
|
450
|
+
else {
|
|
451
|
+
recipient = Array.from(toAccountAddress);
|
|
452
|
+
hookData = undefined;
|
|
453
|
+
}
|
|
437
454
|
const swapAndBridgeData = {};
|
|
438
455
|
swapAndBridgeData.cctpBridge = cctpBridge;
|
|
439
456
|
swapAndBridgeData.amount = new BN(amount);
|
|
440
|
-
swapAndBridgeData.recipient =
|
|
457
|
+
swapAndBridgeData.recipient = recipient;
|
|
441
458
|
swapAndBridgeData.receiveToken = Array.from(receiveTokenAddress);
|
|
459
|
+
swapAndBridgeData.hookData = hookData;
|
|
442
460
|
swapAndBridgeData.userToken = getAssociatedAccount(userAccount, mint);
|
|
443
461
|
swapAndBridgeData.chainBridgeAccount = await getChainBridgeAccount(toChainId, cctpBridge.programId);
|
|
444
462
|
swapAndBridgeData.userAccount = userAccount;
|
|
@@ -453,7 +471,7 @@ export class BridgeTxService {
|
|
|
453
471
|
return swapAndBridgeData;
|
|
454
472
|
}
|
|
455
473
|
async buildSwapAndBridgeCctpV2Transaction(destinationChainSymbol, swapAndBridgeData) {
|
|
456
|
-
const { amount, cctpBridge: program, chainBridgeAccount, destinationChainId, extraGasInstruction, gasPrice, mint, provider, receiveToken, recipient, thisGasPrice, userAccount, userToken, } = swapAndBridgeData;
|
|
474
|
+
const { amount, cctpBridge: program, chainBridgeAccount, destinationChainId, extraGasInstruction, gasPrice, hookData, mint, provider, receiveToken, recipient, thisGasPrice, userAccount, userToken, } = swapAndBridgeData;
|
|
457
475
|
const domain = this.params.cctpParams.cctpDomains[destinationChainSymbol];
|
|
458
476
|
const cctpTransmitterProgramIdAddress = this.params.cctpParams.cctpV2TransmitterProgramId;
|
|
459
477
|
const cctpTokenMessengerMinterAddress = this.params.cctpParams.cctpV2TokenMessengerMinter;
|
|
@@ -468,13 +486,11 @@ export class BridgeTxService {
|
|
|
468
486
|
instructions.push(extraGasInstruction);
|
|
469
487
|
}
|
|
470
488
|
const messageSentEventDataKeypair = Keypair.generate();
|
|
471
|
-
const
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
receiveToken,
|
|
477
|
-
})
|
|
489
|
+
const bridgeArgs = { amount, destinationChainId, recipient, receiveToken };
|
|
490
|
+
const method = hookData
|
|
491
|
+
? program.methods.bridgeWithHook({ ...bridgeArgs, hookData })
|
|
492
|
+
: program.methods.bridge(bridgeArgs);
|
|
493
|
+
const tx = await method
|
|
478
494
|
.accounts({
|
|
479
495
|
mint: mint,
|
|
480
496
|
user: userAccount,
|