@1delta/bridge-configs 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/LICENSE +674 -0
  2. package/dist/configs/across/config.d.ts +4 -0
  3. package/dist/configs/across/config.d.ts.map +1 -0
  4. package/dist/configs/across/config.js +317 -0
  5. package/dist/configs/axelar/abis/AxelarGasService.d.ts +103 -0
  6. package/dist/configs/axelar/abis/AxelarGasService.d.ts.map +1 -0
  7. package/dist/configs/axelar/abis/AxelarGasService.js +1073 -0
  8. package/dist/configs/axelar/abis/AxelarGateway.d.ts +51 -0
  9. package/dist/configs/axelar/abis/AxelarGateway.d.ts.map +1 -0
  10. package/dist/configs/axelar/abis/AxelarGateway.js +753 -0
  11. package/dist/configs/axelar/abis/SquidMulticall.d.ts +47 -0
  12. package/dist/configs/axelar/abis/SquidMulticall.d.ts.map +1 -0
  13. package/dist/configs/axelar/abis/SquidMulticall.js +104 -0
  14. package/dist/configs/axelar/abis/SquidRouter.d.ts +82 -0
  15. package/dist/configs/axelar/abis/SquidRouter.d.ts.map +1 -0
  16. package/dist/configs/axelar/abis/SquidRouter.js +837 -0
  17. package/dist/configs/axelar/calldata/buildTx.d.ts +3 -0
  18. package/dist/configs/axelar/calldata/buildTx.d.ts.map +1 -0
  19. package/dist/configs/axelar/calldata/buildTx.js +29 -0
  20. package/dist/configs/axelar/calldata/index.d.ts +3 -0
  21. package/dist/configs/axelar/calldata/index.d.ts.map +1 -0
  22. package/dist/configs/axelar/calldata/index.js +2 -0
  23. package/dist/configs/axelar/calldata/squid/createSquidMulticallPayload.d.ts +16 -0
  24. package/dist/configs/axelar/calldata/squid/createSquidMulticallPayload.d.ts.map +1 -0
  25. package/dist/configs/axelar/calldata/squid/createSquidMulticallPayload.js +76 -0
  26. package/dist/configs/axelar/calldata/squid/types.d.ts +15 -0
  27. package/dist/configs/axelar/calldata/squid/types.d.ts.map +1 -0
  28. package/dist/configs/axelar/calldata/squid/types.js +7 -0
  29. package/dist/configs/axelar/calldata/types.d.ts +18 -0
  30. package/dist/configs/axelar/calldata/types.d.ts.map +1 -0
  31. package/dist/configs/axelar/calldata/types.js +1 -0
  32. package/dist/configs/axelar/config.d.ts +4 -0
  33. package/dist/configs/axelar/config.d.ts.map +1 -0
  34. package/dist/configs/axelar/config.js +99 -0
  35. package/dist/configs/axelar/data/axelarConfig/index.d.ts +3 -0
  36. package/dist/configs/axelar/data/axelarConfig/index.d.ts.map +1 -0
  37. package/dist/configs/axelar/data/axelarConfig/index.js +33 -0
  38. package/dist/configs/axelar/data/axelarConfig/types.d.ts +181 -0
  39. package/dist/configs/axelar/data/axelarConfig/types.d.ts.map +1 -0
  40. package/dist/configs/axelar/data/axelarConfig/types.js +1 -0
  41. package/dist/configs/axelar/data/squidChains/index.d.ts +6 -0
  42. package/dist/configs/axelar/data/squidChains/index.d.ts.map +1 -0
  43. package/dist/configs/axelar/data/squidChains/index.js +61 -0
  44. package/dist/configs/axelar/data/squidChains/types.d.ts +23 -0
  45. package/dist/configs/axelar/data/squidChains/types.d.ts.map +1 -0
  46. package/dist/configs/axelar/data/squidChains/types.js +1 -0
  47. package/dist/configs/axelar/errors.d.ts +15 -0
  48. package/dist/configs/axelar/errors.d.ts.map +1 -0
  49. package/dist/configs/axelar/errors.js +8 -0
  50. package/dist/configs/axelar/gasEstimation/index.d.ts +7 -0
  51. package/dist/configs/axelar/gasEstimation/index.d.ts.map +1 -0
  52. package/dist/configs/axelar/gasEstimation/index.js +38 -0
  53. package/dist/configs/axelar/gasEstimation/types.d.ts +23 -0
  54. package/dist/configs/axelar/gasEstimation/types.d.ts.map +1 -0
  55. package/dist/configs/axelar/gasEstimation/types.js +1 -0
  56. package/dist/configs/axelar/route/fetchAxelarRoute.d.ts +3 -0
  57. package/dist/configs/axelar/route/fetchAxelarRoute.d.ts.map +1 -0
  58. package/dist/configs/axelar/route/fetchAxelarRoute.js +50 -0
  59. package/dist/configs/axelar/route/index.d.ts +3 -0
  60. package/dist/configs/axelar/route/index.d.ts.map +1 -0
  61. package/dist/configs/axelar/route/index.js +2 -0
  62. package/dist/configs/axelar/route/tokenIdentifier.d.ts +5 -0
  63. package/dist/configs/axelar/route/tokenIdentifier.d.ts.map +1 -0
  64. package/dist/configs/axelar/route/tokenIdentifier.js +32 -0
  65. package/dist/configs/axelar/route/types.d.ts +5 -0
  66. package/dist/configs/axelar/route/types.d.ts.map +1 -0
  67. package/dist/configs/axelar/route/types.js +1 -0
  68. package/dist/configs/butter/config.d.ts +9 -0
  69. package/dist/configs/butter/config.d.ts.map +1 -0
  70. package/dist/configs/butter/config.js +207 -0
  71. package/dist/configs/cowswap/config.d.ts +4 -0
  72. package/dist/configs/cowswap/config.d.ts.map +1 -0
  73. package/dist/configs/cowswap/config.js +106 -0
  74. package/dist/configs/cowswap/errors.d.ts +19 -0
  75. package/dist/configs/cowswap/errors.d.ts.map +1 -0
  76. package/dist/configs/cowswap/errors.js +12 -0
  77. package/dist/configs/cowswap/swap/quote.d.ts +5 -0
  78. package/dist/configs/cowswap/swap/quote.d.ts.map +1 -0
  79. package/dist/configs/cowswap/swap/quote.js +28 -0
  80. package/dist/configs/cowswap/swap/route.d.ts +5 -0
  81. package/dist/configs/cowswap/swap/route.d.ts.map +1 -0
  82. package/dist/configs/cowswap/swap/route.js +61 -0
  83. package/dist/configs/cowswap/track/index.d.ts +6 -0
  84. package/dist/configs/cowswap/track/index.d.ts.map +1 -0
  85. package/dist/configs/cowswap/track/index.js +27 -0
  86. package/dist/configs/cowswap/utils/getCowSwapSlippage.d.ts +4 -0
  87. package/dist/configs/cowswap/utils/getCowSwapSlippage.d.ts.map +1 -0
  88. package/dist/configs/cowswap/utils/getCowSwapSlippage.js +16 -0
  89. package/dist/configs/cowswap/utils/toSupportedChainId.d.ts +3 -0
  90. package/dist/configs/cowswap/utils/toSupportedChainId.d.ts.map +1 -0
  91. package/dist/configs/cowswap/utils/toSupportedChainId.js +11 -0
  92. package/dist/configs/crosscurve/config.d.ts +4 -0
  93. package/dist/configs/crosscurve/config.d.ts.map +1 -0
  94. package/dist/configs/crosscurve/config.js +185 -0
  95. package/dist/configs/gas-zip/chains/fetch.d.ts +10 -0
  96. package/dist/configs/gas-zip/chains/fetch.d.ts.map +1 -0
  97. package/dist/configs/gas-zip/chains/fetch.js +29 -0
  98. package/dist/configs/gas-zip/chains/types.d.ts +25 -0
  99. package/dist/configs/gas-zip/chains/types.d.ts.map +1 -0
  100. package/dist/configs/gas-zip/chains/types.js +1 -0
  101. package/dist/configs/gas-zip/config.d.ts +4 -0
  102. package/dist/configs/gas-zip/config.d.ts.map +1 -0
  103. package/dist/configs/gas-zip/config.js +121 -0
  104. package/dist/configs/index.d.ts +2 -0
  105. package/dist/configs/index.d.ts.map +1 -0
  106. package/dist/configs/index.js +41 -0
  107. package/dist/configs/layerswap/LayerswapNetworks.json +3656 -0
  108. package/dist/configs/layerswap/config.d.ts +4 -0
  109. package/dist/configs/layerswap/config.d.ts.map +1 -0
  110. package/dist/configs/layerswap/config.js +285 -0
  111. package/dist/configs/lifi/config.d.ts +4 -0
  112. package/dist/configs/lifi/config.d.ts.map +1 -0
  113. package/dist/configs/lifi/config.js +104 -0
  114. package/dist/configs/mayan/calldata/index.d.ts +14 -0
  115. package/dist/configs/mayan/calldata/index.d.ts.map +1 -0
  116. package/dist/configs/mayan/calldata/index.js +41 -0
  117. package/dist/configs/mayan/config.d.ts +4 -0
  118. package/dist/configs/mayan/config.d.ts.map +1 -0
  119. package/dist/configs/mayan/config.js +222 -0
  120. package/dist/configs/odos/config.d.ts +8 -0
  121. package/dist/configs/odos/config.d.ts.map +1 -0
  122. package/dist/configs/odos/config.js +127 -0
  123. package/dist/configs/orbiter/abis/ERC20.d.ts +172 -0
  124. package/dist/configs/orbiter/abis/ERC20.d.ts.map +1 -0
  125. package/dist/configs/orbiter/abis/ERC20.js +224 -0
  126. package/dist/configs/orbiter/abis/OrbiterRouterEVMV3.d.ts +85 -0
  127. package/dist/configs/orbiter/abis/OrbiterRouterEVMV3.d.ts.map +1 -0
  128. package/dist/configs/orbiter/abis/OrbiterRouterEVMV3.js +83 -0
  129. package/dist/configs/orbiter/calldata/index.d.ts +32 -0
  130. package/dist/configs/orbiter/calldata/index.d.ts.map +1 -0
  131. package/dist/configs/orbiter/calldata/index.js +59 -0
  132. package/dist/configs/orbiter/config.d.ts +4 -0
  133. package/dist/configs/orbiter/config.d.ts.map +1 -0
  134. package/dist/configs/orbiter/config.js +178 -0
  135. package/dist/configs/router/config.d.ts +4 -0
  136. package/dist/configs/router/config.d.ts.map +1 -0
  137. package/dist/configs/router/config.js +125 -0
  138. package/dist/configs/squid-v1/config.d.ts +4 -0
  139. package/dist/configs/squid-v1/config.d.ts.map +1 -0
  140. package/dist/configs/squid-v1/config.js +133 -0
  141. package/dist/configs/squid-v2/config.d.ts +4 -0
  142. package/dist/configs/squid-v2/config.d.ts.map +1 -0
  143. package/dist/configs/squid-v2/config.js +146 -0
  144. package/dist/configs/squid-v2/constants.d.ts +2 -0
  145. package/dist/configs/squid-v2/constants.d.ts.map +1 -0
  146. package/dist/configs/squid-v2/constants.js +1 -0
  147. package/dist/configs/stargate/abis/StargatePool.d.ts +41 -0
  148. package/dist/configs/stargate/abis/StargatePool.d.ts.map +1 -0
  149. package/dist/configs/stargate/abis/StargatePool.js +318 -0
  150. package/dist/configs/stargate/abis/TokenMessaging.d.ts +16 -0
  151. package/dist/configs/stargate/abis/TokenMessaging.d.ts.map +1 -0
  152. package/dist/configs/stargate/abis/TokenMessaging.js +21 -0
  153. package/dist/configs/stargate/calldata/constants.d.ts +249 -0
  154. package/dist/configs/stargate/calldata/constants.d.ts.map +1 -0
  155. package/dist/configs/stargate/calldata/constants.js +273 -0
  156. package/dist/configs/stargate/calldata/index.d.ts +6 -0
  157. package/dist/configs/stargate/calldata/index.d.ts.map +1 -0
  158. package/dist/configs/stargate/calldata/index.js +127 -0
  159. package/dist/configs/stargate/calldata/types.d.ts +51 -0
  160. package/dist/configs/stargate/calldata/types.d.ts.map +1 -0
  161. package/dist/configs/stargate/calldata/types.js +10 -0
  162. package/dist/configs/stargate/common/config.d.ts +88 -0
  163. package/dist/configs/stargate/common/config.d.ts.map +1 -0
  164. package/dist/configs/stargate/common/config.js +93 -0
  165. package/dist/configs/stargate/common/constants.d.ts +5 -0
  166. package/dist/configs/stargate/common/constants.d.ts.map +1 -0
  167. package/dist/configs/stargate/common/constants.js +7 -0
  168. package/dist/configs/stargate/common/index.d.ts +3 -0
  169. package/dist/configs/stargate/common/index.d.ts.map +1 -0
  170. package/dist/configs/stargate/common/index.js +2 -0
  171. package/dist/configs/stargate/configs/bus/config.d.ts +4 -0
  172. package/dist/configs/stargate/configs/bus/config.d.ts.map +1 -0
  173. package/dist/configs/stargate/configs/bus/config.js +41 -0
  174. package/dist/configs/stargate/configs/taxi/config.d.ts +4 -0
  175. package/dist/configs/stargate/configs/taxi/config.d.ts.map +1 -0
  176. package/dist/configs/stargate/configs/taxi/config.js +58 -0
  177. package/dist/configs/stargate/types/index.d.ts +12 -0
  178. package/dist/configs/stargate/types/index.d.ts.map +1 -0
  179. package/dist/configs/stargate/types/index.js +15 -0
  180. package/dist/configs/symbiosis/config.d.ts +4 -0
  181. package/dist/configs/symbiosis/config.d.ts.map +1 -0
  182. package/dist/configs/symbiosis/config.js +119 -0
  183. package/dist/configs/utils/index.d.ts +2 -0
  184. package/dist/configs/utils/index.d.ts.map +1 -0
  185. package/dist/configs/utils/index.js +3 -0
  186. package/dist/configs/xy/config.d.ts +4 -0
  187. package/dist/configs/xy/config.d.ts.map +1 -0
  188. package/dist/configs/xy/config.js +176 -0
  189. package/dist/configs/zenlink/calldata/aggregationRouterV2ABI.d.ts +49 -0
  190. package/dist/configs/zenlink/calldata/aggregationRouterV2ABI.d.ts.map +1 -0
  191. package/dist/configs/zenlink/calldata/aggregationRouterV2ABI.js +63 -0
  192. package/dist/configs/zenlink/calldata/index.d.ts +18 -0
  193. package/dist/configs/zenlink/calldata/index.d.ts.map +1 -0
  194. package/dist/configs/zenlink/calldata/index.js +35 -0
  195. package/dist/configs/zenlink/config.d.ts +4 -0
  196. package/dist/configs/zenlink/config.d.ts.map +1 -0
  197. package/dist/configs/zenlink/config.js +109 -0
  198. package/dist/configs/zenlink/errors.d.ts +15 -0
  199. package/dist/configs/zenlink/errors.d.ts.map +1 -0
  200. package/dist/configs/zenlink/errors.js +8 -0
  201. package/dist/index.d.ts +8 -0
  202. package/dist/index.d.ts.map +1 -0
  203. package/dist/index.js +7 -0
  204. package/dist/types/index.d.ts +31 -0
  205. package/dist/types/index.d.ts.map +1 -0
  206. package/dist/types/index.js +52 -0
  207. package/dist/walletClient.d.ts +4433 -0
  208. package/dist/walletClient.d.ts.map +1 -0
  209. package/dist/walletClient.js +7 -0
  210. package/package.json +27 -0
@@ -0,0 +1,3 @@
1
+ import { AxelarTxData } from './types';
2
+ export declare function buildAxelarTx(contractAddress: string, receiver: string, bridgedTokenSymbol: string, amount: bigint, destinationChainName: string, destinationContractAddress: string, enableExpress: boolean, gasFeeInNative: bigint, message?: string): Promise<AxelarTxData>;
3
+ //# sourceMappingURL=buildTx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildTx.d.ts","sourceRoot":"","sources":["../../../../src/configs/axelar/calldata/buildTx.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,wBAAsB,aAAa,CACjC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,MAAM,EACd,oBAAoB,EAAE,MAAM,EAC5B,0BAA0B,EAAE,MAAM,EAClC,aAAa,EAAE,OAAO,EACtB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC,CA6BvB"}
@@ -0,0 +1,29 @@
1
+ import { encodeFunctionData, parseAbi } from 'viem';
2
+ import { createSquidPayload } from './squid/createSquidMulticallPayload';
3
+ export async function buildAxelarTx(contractAddress, receiver, bridgedTokenSymbol, amount, destinationChainName, destinationContractAddress, enableExpress, gasFeeInNative, message) {
4
+ const payload = message ?? createSquidPayload(receiver);
5
+ const squidRouterAbi = parseAbi([
6
+ 'function bridgeCall(string calldata bridgedTokenSymbol, uint256 amount, string calldata destinationChain, string calldata destinationAddress, bytes calldata payload, address gasRefundRecipient, bool enableExpress)',
7
+ ]);
8
+ const functionCall = encodeFunctionData({
9
+ abi: squidRouterAbi,
10
+ functionName: 'bridgeCall',
11
+ args: [
12
+ bridgedTokenSymbol,
13
+ amount,
14
+ destinationChainName,
15
+ destinationContractAddress,
16
+ payload,
17
+ receiver,
18
+ enableExpress,
19
+ ],
20
+ });
21
+ return {
22
+ payload,
23
+ tx: {
24
+ to: contractAddress,
25
+ data: functionCall,
26
+ value: gasFeeInNative,
27
+ },
28
+ };
29
+ }
@@ -0,0 +1,3 @@
1
+ export * from './buildTx';
2
+ export * from './squid/createSquidMulticallPayload';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/configs/axelar/calldata/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,qCAAqC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './buildTx';
2
+ export * from './squid/createSquidMulticallPayload';
@@ -0,0 +1,16 @@
1
+ import { Address, Hex } from 'viem';
2
+ import { SquidCall } from './types';
3
+ /**
4
+ * [Parent Function] Creates the final ABI-encoded `payload` for the SquidRouter.
5
+ *
6
+ * This function automatically generates a salt and determines whether to create
7
+ * a payload for a simple transfer or a multicall based on the presence of `calls`.
8
+ *
9
+ * @param recipientAddress - The final destination address for a simple transfer,
10
+ * or the refund recipient address for a multicall.
11
+ * @param calls - (Optional) An array of `SquidCall` objects. If provided, a
12
+ * multicall payload is created.
13
+ * @returns The ABI-encoded `payload` as a hex string (`Hex`).
14
+ */
15
+ export declare function createSquidPayload(recipientAddress: Address, calls?: SquidCall[]): Hex;
16
+ //# sourceMappingURL=createSquidMulticallPayload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSquidMulticallPayload.d.ts","sourceRoot":"","sources":["../../../../../src/configs/axelar/calldata/squid/createSquidMulticallPayload.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAGP,GAAG,EAEJ,MAAM,MAAM,CAAA;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAiEnC;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,gBAAgB,EAAE,OAAO,EACzB,KAAK,CAAC,EAAE,SAAS,EAAE,GAClB,GAAG,CAmBL"}
@@ -0,0 +1,76 @@
1
+ import { bytesToHex, encodeAbiParameters, parseAbiParameters, } from 'viem';
2
+ /**
3
+ * [Helper] Creates the ABI-encoded payload for a simple token transfer.
4
+ * This format is used when no multicalls are executed on the destination.
5
+ *
6
+ * @param destinationAddress - The final recipient of the bridged tokens.
7
+ * @param salt - A 32-byte hex string to ensure payload uniqueness.
8
+ * @returns The ABI-encoded `payload` as a hex string (`Hex`).
9
+ */
10
+ function createSquidSimpleTransferPayload(destinationAddress, salt) {
11
+ const payloadAbi = parseAbiParameters('address destinationAddress, bytes32 salt');
12
+ return encodeAbiParameters(payloadAbi, [destinationAddress, salt]);
13
+ }
14
+ /**
15
+ * [Helper] Creates the ABI-encoded payload for a multicall execution.
16
+ * This format is used when one or more calls are to be executed on the destination.
17
+ *
18
+ * @param calls - An array of `SquidCall` objects.
19
+ * @param refundRecipient - The address that receives funds if the multicall fails.
20
+ * @param salt - A 32-byte hex string to ensure payload uniqueness.
21
+ * @returns The ABI-encoded `payload` as a hex string (`Hex`).
22
+ */
23
+ function createSquidMulticallPayload(calls, refundRecipient, salt) {
24
+ const payloadAbi = [
25
+ {
26
+ type: 'tuple[]',
27
+ name: 'calls',
28
+ components: [
29
+ { name: 'callType', type: 'uint8' },
30
+ { name: 'target', type: 'address' },
31
+ { name: 'value', type: 'uint256' },
32
+ { name: 'callData', type: 'bytes' },
33
+ { name: 'payload', type: 'bytes' },
34
+ ],
35
+ },
36
+ { name: 'refundRecipient', type: 'address' },
37
+ { name: 'salt', type: 'bytes32' },
38
+ ];
39
+ const callsAsObjects = calls.map((call) => ({
40
+ callType: call.callType,
41
+ target: call.target,
42
+ value: call.value,
43
+ callData: call.callData,
44
+ payload: call.payload,
45
+ }));
46
+ return encodeAbiParameters(payloadAbi, [
47
+ callsAsObjects,
48
+ refundRecipient,
49
+ salt,
50
+ ]);
51
+ }
52
+ /**
53
+ * [Parent Function] Creates the final ABI-encoded `payload` for the SquidRouter.
54
+ *
55
+ * This function automatically generates a salt and determines whether to create
56
+ * a payload for a simple transfer or a multicall based on the presence of `calls`.
57
+ *
58
+ * @param recipientAddress - The final destination address for a simple transfer,
59
+ * or the refund recipient address for a multicall.
60
+ * @param calls - (Optional) An array of `SquidCall` objects. If provided, a
61
+ * multicall payload is created.
62
+ * @returns The ABI-encoded `payload` as a hex string (`Hex`).
63
+ */
64
+ export function createSquidPayload(recipientAddress, calls) {
65
+ if (!recipientAddress ||
66
+ recipientAddress === '0x0000000000000000000000000000000000000000') {
67
+ throw new Error('A zero address cannot be used for the recipient.');
68
+ }
69
+ const saltBytes = new Uint8Array(32);
70
+ crypto.getRandomValues(saltBytes);
71
+ const salt = bytesToHex(saltBytes);
72
+ if (calls && calls.length > 0) {
73
+ return createSquidMulticallPayload(calls, recipientAddress, salt);
74
+ }
75
+ return createSquidSimpleTransferPayload(recipientAddress, salt);
76
+ }
@@ -0,0 +1,15 @@
1
+ import { Address, Hex } from 'viem';
2
+ export declare enum SquidCallType {
3
+ DEFAULT = 0,
4
+ FULL_TOKEN_BALANCE = 1,
5
+ FULL_NATIVE_BALANCE = 2,
6
+ COLLECT_TOKEN_BALANCE = 3
7
+ }
8
+ export interface SquidCall {
9
+ callType: SquidCallType;
10
+ target: Address;
11
+ value: bigint;
12
+ callData: Hex;
13
+ payload: Hex;
14
+ }
15
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/configs/axelar/calldata/squid/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAEnC,oBAAY,aAAa;IACvB,OAAO,IAAI;IACX,kBAAkB,IAAI;IACtB,mBAAmB,IAAI;IACvB,qBAAqB,IAAI;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,aAAa,CAAA;IACvB,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,GAAG,CAAA;IACb,OAAO,EAAE,GAAG,CAAA;CACb"}
@@ -0,0 +1,7 @@
1
+ export var SquidCallType;
2
+ (function (SquidCallType) {
3
+ SquidCallType[SquidCallType["DEFAULT"] = 0] = "DEFAULT";
4
+ SquidCallType[SquidCallType["FULL_TOKEN_BALANCE"] = 1] = "FULL_TOKEN_BALANCE";
5
+ SquidCallType[SquidCallType["FULL_NATIVE_BALANCE"] = 2] = "FULL_NATIVE_BALANCE";
6
+ SquidCallType[SquidCallType["COLLECT_TOKEN_BALANCE"] = 3] = "COLLECT_TOKEN_BALANCE";
7
+ })(SquidCallType || (SquidCallType = {}));
@@ -0,0 +1,18 @@
1
+ export interface AxelarRouteData {
2
+ contractAddress: string;
3
+ isExpressSupported: boolean;
4
+ amount: bigint;
5
+ totalFeeInNative: bigint;
6
+ bridgeTokenSymbol: string;
7
+ destinationChain: string;
8
+ destinationAddress: string;
9
+ }
10
+ export interface AxelarTxData {
11
+ payload: string;
12
+ tx: {
13
+ to: string;
14
+ data: string;
15
+ value: bigint;
16
+ };
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/configs/axelar/calldata/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,EAAE,EAAE;QACF,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import { CrossChainConfig } from '@1delta/bridge-core';
2
+ export declare const axelarConfig: CrossChainConfig;
3
+ export default axelarConfig;
4
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/configs/axelar/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAGjB,MAAM,qBAAqB,CAAA;AAY5B,eAAO,MAAM,YAAY,EAAE,gBA+H1B,CAAA;AAED,eAAe,YAAY,CAAA"}
@@ -0,0 +1,99 @@
1
+ import { CrossChainBusinessException, } from '@1delta/bridge-core';
2
+ import { Bridge } from '../../types';
3
+ import { bridgeIcon } from '../utils';
4
+ import { buildAxelarTx } from './calldata/buildTx';
5
+ import { ERROR_CODES } from './errors';
6
+ import { fetchAxelarRoute } from './route';
7
+ const NAME = Bridge.AXELAR;
8
+ const API_HOST = 'https://api.axelarscan.io';
9
+ export const axelarConfig = {
10
+ name: NAME,
11
+ icon: {
12
+ light: bridgeIcon(NAME),
13
+ dark: bridgeIcon(NAME),
14
+ },
15
+ apiInterface: {
16
+ route: {
17
+ execute: async (crossChainParamsData) => {
18
+ const { fromTokenAddress, fromChainId, toTokenAddress, toChainId, fromAmount, message, destinationGasLimit, } = crossChainParamsData;
19
+ const routeData = await fetchAxelarRoute(fromChainId, fromTokenAddress, toChainId, toTokenAddress, BigInt(fromAmount), destinationGasLimit);
20
+ if (!routeData.isExpressSupported)
21
+ throw new CrossChainBusinessException(ERROR_CODES.NOT_SUPPORT);
22
+ return { ...routeData, message };
23
+ },
24
+ responseMapping: {
25
+ name: 'aggregator',
26
+ depositContract: 'contractAddress',
27
+ toAmount: 'amount',
28
+ fee: {
29
+ destinationGasFee: 'totalFeeInNative',
30
+ },
31
+ estimatedDuration: {
32
+ format: (data) => 30,
33
+ },
34
+ interfaceParamData: {
35
+ contractAddress: 'contractAddress',
36
+ isExpressSupported: 'isExpressSupported',
37
+ amount: 'amount',
38
+ totalFeeInNative: 'totalFeeInNative',
39
+ bridgeTokenSymbol: 'bridgeTokenSymbol',
40
+ destinationChain: 'destinationChain',
41
+ destinationAddress: 'destinationAddress',
42
+ message: 'message',
43
+ },
44
+ },
45
+ },
46
+ buildTransactionData: {
47
+ execute: async (crossChainParamsData, interfaceParamData) => {
48
+ const { toAddress } = crossChainParamsData;
49
+ const { contractAddress, isExpressSupported, amount, totalFeeInNative, bridgeTokenSymbol, destinationChain, destinationAddress, } = interfaceParamData;
50
+ const { tx } = await buildAxelarTx(contractAddress, toAddress, bridgeTokenSymbol, amount, destinationChain, destinationAddress, isExpressSupported, totalFeeInNative);
51
+ return tx;
52
+ },
53
+ responseMapping: {
54
+ data: 'data',
55
+ value: 'value',
56
+ to: 'to',
57
+ },
58
+ },
59
+ status: {
60
+ url: `${API_HOST}/gmp/searchGMP`,
61
+ method: 'get',
62
+ requestMapping: {
63
+ txHash: 'fromHash',
64
+ },
65
+ requestAfter: (res) => {
66
+ return res;
67
+ },
68
+ responseMapping: {
69
+ toHash: {
70
+ format: (resResult) => {
71
+ const executed = resResult.data[0]?.executed;
72
+ return executed?.transactionHash ?? '';
73
+ },
74
+ },
75
+ statusInfo: {
76
+ format: (resResult) => {
77
+ const status = resResult.data[0]?.status;
78
+ const data = {
79
+ status: 'PENDING',
80
+ message: 'Pending',
81
+ bridgeResponseResult: resResult,
82
+ };
83
+ if (status === 'executed' || status === 'express_executed') {
84
+ data.status = 'DONE';
85
+ data.message = 'Executed successfully';
86
+ }
87
+ else if (status?.includes('error')) {
88
+ data.status = 'FAILED';
89
+ data.message = 'Transaction failed';
90
+ }
91
+ return data;
92
+ },
93
+ },
94
+ },
95
+ },
96
+ },
97
+ errorCodes: ERROR_CODES,
98
+ };
99
+ export default axelarConfig;
@@ -0,0 +1,3 @@
1
+ import { AxelarConfig } from './types';
2
+ export declare function getCachedAxelarConfig(): Promise<AxelarConfig>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/configs/axelar/data/axelarConfig/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAqCtC,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,YAAY,CAAC,CAMnE"}
@@ -0,0 +1,33 @@
1
+ const AXELAR_STATIC_CONFIG_URL = 'https://axelar-mainnet.s3.us-east-2.amazonaws.com/configs/mainnet-config-1.x.json';
2
+ // In-memory cache for the Axelar config
3
+ let axelarConfigCache = null;
4
+ /**
5
+ * Fetches and parses the mainnet static config from Axelar's S3 bucket.
6
+ * @returns {Promise<object|null>} A promise that resolves to the configuration object, or null on error.
7
+ */
8
+ async function fetchAxelarConfig() {
9
+ try {
10
+ const response = await fetch(AXELAR_STATIC_CONFIG_URL);
11
+ if (!response.ok) {
12
+ throw new Error(`fetchAxelarStaticConfig: Network response was not ok. Status: ${response.status}`);
13
+ }
14
+ const data = (await response.json());
15
+ return {
16
+ chains: data.chains,
17
+ assets: data.assets,
18
+ };
19
+ }
20
+ catch (error) {
21
+ console.error('Failed to fetch Axelar static config:', error);
22
+ return {
23
+ chains: {},
24
+ assets: {},
25
+ };
26
+ }
27
+ }
28
+ export async function getCachedAxelarConfig() {
29
+ if (axelarConfigCache)
30
+ return axelarConfigCache;
31
+ axelarConfigCache = await fetchAxelarConfig();
32
+ return axelarConfigCache;
33
+ }
@@ -0,0 +1,181 @@
1
+ type ChainType = 'axelarnet' | 'evm' | 'stellar' | 'sui' | 'xrpl';
2
+ type TokenManagerType = 'lockUnlock' | 'mintBurn' | 'mintBurnFrom';
3
+ type AssetType = 'customInterchain' | 'canonical' | 'gateway' | 'interchain';
4
+ interface NativeCurrency {
5
+ name: string;
6
+ symbol: string;
7
+ decimals: number;
8
+ iconUrl: string;
9
+ denom?: string;
10
+ address?: string;
11
+ }
12
+ interface BlockExplorer {
13
+ name: string;
14
+ url: string;
15
+ }
16
+ interface IBCChannel {
17
+ portId: string;
18
+ channelId: string;
19
+ }
20
+ interface IBCConfig {
21
+ fromAxelar: IBCChannel;
22
+ toAxelar: IBCChannel;
23
+ }
24
+ interface AxelarnetChainConfig {
25
+ addressPrefix: string;
26
+ ibc: IBCConfig | null;
27
+ rpc: string[];
28
+ lcd: string[];
29
+ grpc: string[];
30
+ }
31
+ interface EVMContract {
32
+ address: string;
33
+ implementation?: string;
34
+ deployer?: string;
35
+ salt?: string;
36
+ [key: string]: any;
37
+ }
38
+ interface EVMChainConfig {
39
+ rpc: string[];
40
+ finality: string | number;
41
+ approxFinalityWaitTime: number;
42
+ approxFinalityHeight: number | string;
43
+ contracts: Record<string, EVMContract>;
44
+ }
45
+ interface StellarContract {
46
+ address: string;
47
+ deployer: string;
48
+ wasmHash: string;
49
+ initializeArgs: Record<string, any>;
50
+ connectionType?: string;
51
+ version: string;
52
+ }
53
+ interface StellarChainConfig {
54
+ rpc: string[];
55
+ finality: string | number;
56
+ approxFinalityWaitTime: number;
57
+ approxFinalityHeight: string | number;
58
+ contracts: Record<string, StellarContract>;
59
+ horizonRpc: string[];
60
+ }
61
+ interface SuiContract {
62
+ address: string;
63
+ deployer: string;
64
+ versions: Record<string, string>;
65
+ structs: Record<string, string>;
66
+ objects: Record<string, string>;
67
+ domainSeparator?: string;
68
+ operator?: string;
69
+ minimumRotationDelay?: number;
70
+ connectionType?: string;
71
+ }
72
+ interface SuiChainConfig {
73
+ rpc: string[];
74
+ finality: string | number;
75
+ approxFinalityWaitTime: number;
76
+ approxFinalityHeight: string | number;
77
+ contracts: Record<string, SuiContract>;
78
+ }
79
+ interface XrplContract {
80
+ address: string;
81
+ connectionType?: string;
82
+ initialSigner?: string;
83
+ transferRate?: number;
84
+ tickSize?: number;
85
+ domain?: string;
86
+ flags?: number[];
87
+ }
88
+ interface XrplChainConfig {
89
+ rpc: string[];
90
+ finality: string | number;
91
+ approxFinalityWaitTime: number;
92
+ approxFinalityHeight: string | number;
93
+ contracts: Record<string, XrplContract>;
94
+ }
95
+ interface Chain {
96
+ id: string;
97
+ displayName: string;
98
+ chainType: ChainType;
99
+ externalChainId: string;
100
+ iconUrl: string;
101
+ nativeCurrency: NativeCurrency | null;
102
+ blockExplorers: BlockExplorer[] | null;
103
+ config: AxelarnetChainConfig | EVMChainConfig | StellarChainConfig | SuiChainConfig | XrplChainConfig;
104
+ assets: Record<string, string>;
105
+ }
106
+ interface ChainAssetDetails {
107
+ fullDenomPath: string;
108
+ }
109
+ interface ChainAsset {
110
+ tokenAddress: string;
111
+ symbol: string;
112
+ name: string;
113
+ tokenManager?: string;
114
+ tokenManagerType?: TokenManagerType;
115
+ decimals?: number;
116
+ details?: ChainAssetDetails;
117
+ isWrappedNativeToken?: boolean;
118
+ }
119
+ interface AssetDetails {
120
+ deployer: string;
121
+ deploySalt: string;
122
+ deploymentMessageId: string;
123
+ originalMinter: string;
124
+ }
125
+ interface Asset {
126
+ id: string;
127
+ prettySymbol: string;
128
+ name: string;
129
+ decimals: number;
130
+ originAxelarChainId: string;
131
+ coingeckoId: string;
132
+ iconUrl: string;
133
+ type: AssetType;
134
+ details?: AssetDetails;
135
+ chains: Record<string, ChainAsset>;
136
+ }
137
+ interface AmplifierContractConfig {
138
+ governanceAddress?: string;
139
+ adminAddress?: string;
140
+ rewardsDenom?: string;
141
+ params?: Record<string, any>;
142
+ storeCodeProposalId: string;
143
+ storeCodeProposalCodeHash: string;
144
+ codeId: number;
145
+ lastUploadedCodeId: number;
146
+ address: string;
147
+ nexus?: string;
148
+ executeProposalId?: string;
149
+ instantiateProposalId?: string;
150
+ [key: string]: any;
151
+ }
152
+ interface AmplifierConfig {
153
+ axelarId: string;
154
+ chainId: string;
155
+ rpc: string;
156
+ lcd: string;
157
+ grpc: string;
158
+ tokenSymbol: string;
159
+ axelarscanApi: string;
160
+ gasPrice: string;
161
+ gasLimit: string;
162
+ govProposalDepositAmount: string;
163
+ govProposalInstantiateAddresses: string[];
164
+ contracts: Record<string, AmplifierContractConfig>;
165
+ }
166
+ export interface AxelarConfigExtended extends AxelarConfig {
167
+ version: string;
168
+ environment: string;
169
+ resources: {
170
+ staticAssetHost: string;
171
+ };
172
+ tokenAddressToAsset: Record<string, Record<string, string>>;
173
+ tokenAddressToITSTokenID: Record<string, Record<string, string>>;
174
+ amplifier_configs: AmplifierConfig;
175
+ }
176
+ export interface AxelarConfig {
177
+ chains: Record<string, Chain>;
178
+ assets: Record<string, Asset>;
179
+ }
180
+ export {};
181
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/configs/axelar/data/axelarConfig/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ export declare function fetchAndCacheSquidChains(): Promise<void>;
2
+ export declare function getSquidRouter(chainId: string): Promise<string | null>;
3
+ export declare function getRequiredSquidRouter(chainId: string): Promise<string>;
4
+ export declare function getSquidMulticaller(chainId: string): Promise<string | null>;
5
+ export declare function getRequiredSquidMulticaller(chainId: string): Promise<string>;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/configs/axelar/data/squidChains/index.ts"],"names":[],"mappings":"AAmCA,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAS9D;AAQD,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAI5E;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI7E;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIxB;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAIjB"}
@@ -0,0 +1,61 @@
1
+ import { SQUID_INTEGRATOR_ID } from '../../../squid-v2/constants';
2
+ const SQUID_CHAINS_URL = 'https://v2.api.squidrouter.com/v2/chains';
3
+ // In-memory cache
4
+ let squidChainIdMapCached = null;
5
+ /**
6
+ * Fetches and parses the squid chain data.
7
+ * @returns {Promise<object|null>} A promise that resolves to the configuration object, or null on error.
8
+ */
9
+ async function fetchSquidChains() {
10
+ try {
11
+ const response = await fetch(SQUID_CHAINS_URL, {
12
+ headers: {
13
+ 'x-integrator-id': SQUID_INTEGRATOR_ID,
14
+ },
15
+ });
16
+ if (!response.ok) {
17
+ throw new Error(`fetchSquidChains: Network response was not ok. Status: ${response.status}`);
18
+ }
19
+ const data = (await response.json());
20
+ return data;
21
+ }
22
+ catch (error) {
23
+ console.error('Failed to fetch Squid chains:', error);
24
+ return { chains: [] };
25
+ }
26
+ }
27
+ export async function fetchAndCacheSquidChains() {
28
+ if (squidChainIdMapCached)
29
+ return;
30
+ const { chains } = await fetchSquidChains();
31
+ squidChainIdMapCached = chains.reduce((accumulator, currentChain) => {
32
+ accumulator[currentChain.chainId] = currentChain;
33
+ return accumulator;
34
+ }, {});
35
+ }
36
+ async function getCachedSquidChains() {
37
+ await fetchAndCacheSquidChains();
38
+ return squidChainIdMapCached;
39
+ }
40
+ export async function getSquidRouter(chainId) {
41
+ const squidChains = await getCachedSquidChains();
42
+ const address = squidChains?.[chainId].squidContracts.squidRouter;
43
+ return address;
44
+ }
45
+ export async function getRequiredSquidRouter(chainId) {
46
+ const address = await getSquidRouter(chainId);
47
+ if (!address)
48
+ throw new Error('Squid router contract not found');
49
+ return address;
50
+ }
51
+ export async function getSquidMulticaller(chainId) {
52
+ const squidChains = await getCachedSquidChains();
53
+ const address = squidChains?.[chainId].squidContracts.squidMulticall;
54
+ return address;
55
+ }
56
+ export async function getRequiredSquidMulticaller(chainId) {
57
+ const address = await getSquidMulticaller(chainId);
58
+ if (!address)
59
+ throw new Error('Squid multicall contract not found');
60
+ return address;
61
+ }
@@ -0,0 +1,23 @@
1
+ export interface SquidChainsResponse {
2
+ chains: SquidChain[];
3
+ }
4
+ interface SquidContracts {
5
+ squidRouter: string | null;
6
+ defaultCrosschainToken: string | null;
7
+ squidMulticall: string | null;
8
+ squidFeeCollector: string | null;
9
+ squidCoralMulticall: string | null;
10
+ }
11
+ export interface SquidChain {
12
+ id: string;
13
+ chainId: string;
14
+ networkIdentifier: string;
15
+ chainName: string;
16
+ axelarChainName: string | null;
17
+ type: 'evm' | 'cosmos' | 'sui' | 'xrpl';
18
+ networkName: string;
19
+ squidContracts: SquidContracts;
20
+ }
21
+ export type SquidChainIdMap = Record<string, SquidChain>;
22
+ export {};
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/configs/axelar/data/squidChains/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,UAAU,EAAE,CAAA;CACrB;AAED,UAAU,cAAc;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAA;IACvC,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,cAAc,CAAA;CAC/B;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};