@sodax/sdk 0.0.1-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +224 -0
  3. package/dist/abis/asset-manager.abi.d.ts +418 -0
  4. package/dist/abis/asset-manager.abi.d.ts.map +1 -0
  5. package/dist/abis/asset-manager.abi.js +542 -0
  6. package/dist/abis/asset-manager.abi.js.map +1 -0
  7. package/dist/abis/connection.abi.d.ts +72 -0
  8. package/dist/abis/connection.abi.d.ts.map +1 -0
  9. package/dist/abis/connection.abi.js +92 -0
  10. package/dist/abis/connection.abi.js.map +1 -0
  11. package/dist/abis/erc20.abi.d.ts +236 -0
  12. package/dist/abis/erc20.abi.d.ts.map +1 -0
  13. package/dist/abis/erc20.abi.js +311 -0
  14. package/dist/abis/erc20.abi.js.map +1 -0
  15. package/dist/abis/index.d.ts +10 -0
  16. package/dist/abis/index.d.ts.map +1 -0
  17. package/dist/abis/index.js +10 -0
  18. package/dist/abis/index.js.map +1 -0
  19. package/dist/abis/intents.abi.d.ts +901 -0
  20. package/dist/abis/intents.abi.d.ts.map +1 -0
  21. package/dist/abis/intents.abi.js +1158 -0
  22. package/dist/abis/intents.abi.js.map +1 -0
  23. package/dist/abis/pool.abi.d.ts +626 -0
  24. package/dist/abis/pool.abi.d.ts.map +1 -0
  25. package/dist/abis/pool.abi.js +812 -0
  26. package/dist/abis/pool.abi.js.map +1 -0
  27. package/dist/abis/spokeAssetManager.abi.d.ts +169 -0
  28. package/dist/abis/spokeAssetManager.abi.d.ts.map +1 -0
  29. package/dist/abis/spokeAssetManager.abi.js +217 -0
  30. package/dist/abis/spokeAssetManager.abi.js.map +1 -0
  31. package/dist/abis/uiPoolData.abi.d.ts +369 -0
  32. package/dist/abis/uiPoolData.abi.d.ts.map +1 -0
  33. package/dist/abis/uiPoolData.abi.js +476 -0
  34. package/dist/abis/uiPoolData.abi.js.map +1 -0
  35. package/dist/abis/vaultToken.abi.d.ts +816 -0
  36. package/dist/abis/vaultToken.abi.d.ts.map +1 -0
  37. package/dist/abis/vaultToken.abi.js +1062 -0
  38. package/dist/abis/vaultToken.abi.js.map +1 -0
  39. package/dist/abis/walletFactory.abi.d.ts +20 -0
  40. package/dist/abis/walletFactory.abi.d.ts.map +1 -0
  41. package/dist/abis/walletFactory.abi.js +27 -0
  42. package/dist/abis/walletFactory.abi.js.map +1 -0
  43. package/dist/constants.d.ts +565 -0
  44. package/dist/constants.d.ts.map +1 -0
  45. package/dist/constants.js +1196 -0
  46. package/dist/constants.js.map +1 -0
  47. package/dist/constants.test.d.ts +2 -0
  48. package/dist/constants.test.d.ts.map +1 -0
  49. package/dist/constants.test.js +128 -0
  50. package/dist/constants.test.js.map +1 -0
  51. package/dist/entities/Providers.d.ts +61 -0
  52. package/dist/entities/Providers.d.ts.map +1 -0
  53. package/dist/entities/Providers.js +51 -0
  54. package/dist/entities/Providers.js.map +1 -0
  55. package/dist/entities/Sodax.d.ts +23 -0
  56. package/dist/entities/Sodax.d.ts.map +1 -0
  57. package/dist/entities/Sodax.js +29 -0
  58. package/dist/entities/Sodax.js.map +1 -0
  59. package/dist/entities/Sodax.test.d.ts +2 -0
  60. package/dist/entities/Sodax.test.d.ts.map +1 -0
  61. package/dist/entities/Sodax.test.js +376 -0
  62. package/dist/entities/Sodax.test.js.map +1 -0
  63. package/dist/entities/cosmos/CW20Token.d.ts +39 -0
  64. package/dist/entities/cosmos/CW20Token.d.ts.map +1 -0
  65. package/dist/entities/cosmos/CW20Token.js +65 -0
  66. package/dist/entities/cosmos/CW20Token.js.map +1 -0
  67. package/dist/entities/cosmos/CWSpokeProvider.d.ts +91 -0
  68. package/dist/entities/cosmos/CWSpokeProvider.d.ts.map +1 -0
  69. package/dist/entities/cosmos/CWSpokeProvider.js +143 -0
  70. package/dist/entities/cosmos/CWSpokeProvider.js.map +1 -0
  71. package/dist/entities/cosmos/CosmosWalletProvider.d.ts +28 -0
  72. package/dist/entities/cosmos/CosmosWalletProvider.d.ts.map +1 -0
  73. package/dist/entities/cosmos/CosmosWalletProvider.js +102 -0
  74. package/dist/entities/cosmos/CosmosWalletProvider.js.map +1 -0
  75. package/dist/entities/cosmos/InjectiveWalletProvider.d.ts +25 -0
  76. package/dist/entities/cosmos/InjectiveWalletProvider.d.ts.map +1 -0
  77. package/dist/entities/cosmos/InjectiveWalletProvider.js +76 -0
  78. package/dist/entities/cosmos/InjectiveWalletProvider.js.map +1 -0
  79. package/dist/entities/icon/HanaWalletConnector.d.ts +36 -0
  80. package/dist/entities/icon/HanaWalletConnector.d.ts.map +1 -0
  81. package/dist/entities/icon/HanaWalletConnector.js +92 -0
  82. package/dist/entities/icon/HanaWalletConnector.js.map +1 -0
  83. package/dist/entities/icon/IconSpokeProvider.d.ts +8 -0
  84. package/dist/entities/icon/IconSpokeProvider.d.ts.map +1 -0
  85. package/dist/entities/icon/IconSpokeProvider.js +9 -0
  86. package/dist/entities/icon/IconSpokeProvider.js.map +1 -0
  87. package/dist/entities/icon/IconWalletProvider.d.ts +12 -0
  88. package/dist/entities/icon/IconWalletProvider.d.ts.map +1 -0
  89. package/dist/entities/icon/IconWalletProvider.js +34 -0
  90. package/dist/entities/icon/IconWalletProvider.js.map +1 -0
  91. package/dist/entities/icon/index.d.ts +5 -0
  92. package/dist/entities/icon/index.d.ts.map +1 -0
  93. package/dist/entities/icon/index.js +5 -0
  94. package/dist/entities/icon/index.js.map +1 -0
  95. package/dist/entities/icon/utils.d.ts +3 -0
  96. package/dist/entities/icon/utils.d.ts.map +1 -0
  97. package/dist/entities/icon/utils.js +4 -0
  98. package/dist/entities/icon/utils.js.map +1 -0
  99. package/dist/entities/index.d.ts +8 -0
  100. package/dist/entities/index.d.ts.map +1 -0
  101. package/dist/entities/index.js +8 -0
  102. package/dist/entities/index.js.map +1 -0
  103. package/dist/entities/solana/Configs.d.ts +10 -0
  104. package/dist/entities/solana/Configs.d.ts.map +1 -0
  105. package/dist/entities/solana/Configs.js +50 -0
  106. package/dist/entities/solana/Configs.js.map +1 -0
  107. package/dist/entities/solana/SolanaSpokeProvider.d.ts +9 -0
  108. package/dist/entities/solana/SolanaSpokeProvider.d.ts.map +1 -0
  109. package/dist/entities/solana/SolanaSpokeProvider.js +9 -0
  110. package/dist/entities/solana/SolanaSpokeProvider.js.map +1 -0
  111. package/dist/entities/solana/SolanaWalletProvider.d.ts +20 -0
  112. package/dist/entities/solana/SolanaWalletProvider.d.ts.map +1 -0
  113. package/dist/entities/solana/SolanaWalletProvider.js +53 -0
  114. package/dist/entities/solana/SolanaWalletProvider.js.map +1 -0
  115. package/dist/entities/solana/index.d.ts +4 -0
  116. package/dist/entities/solana/index.d.ts.map +1 -0
  117. package/dist/entities/solana/index.js +4 -0
  118. package/dist/entities/solana/index.js.map +1 -0
  119. package/dist/entities/solana/pda/pda.d.ts +45 -0
  120. package/dist/entities/solana/pda/pda.d.ts.map +1 -0
  121. package/dist/entities/solana/pda/pda.js +44 -0
  122. package/dist/entities/solana/pda/pda.js.map +1 -0
  123. package/dist/entities/solana/types/asset_manager.d.ts +919 -0
  124. package/dist/entities/solana/types/asset_manager.d.ts.map +1 -0
  125. package/dist/entities/solana/types/asset_manager.js +2 -0
  126. package/dist/entities/solana/types/asset_manager.js.map +1 -0
  127. package/dist/entities/solana/types/connection.d.ts +446 -0
  128. package/dist/entities/solana/types/connection.d.ts.map +1 -0
  129. package/dist/entities/solana/types/connection.js +2 -0
  130. package/dist/entities/solana/types/connection.js.map +1 -0
  131. package/dist/entities/solana/types/rate_limit_contract.d.ts +348 -0
  132. package/dist/entities/solana/types/rate_limit_contract.d.ts.map +1 -0
  133. package/dist/entities/solana/types/rate_limit_contract.js +2 -0
  134. package/dist/entities/solana/types/rate_limit_contract.js.map +1 -0
  135. package/dist/entities/solana/utils/utils.d.ts +6 -0
  136. package/dist/entities/solana/utils/utils.d.ts.map +1 -0
  137. package/dist/entities/solana/utils/utils.js +17 -0
  138. package/dist/entities/solana/utils/utils.js.map +1 -0
  139. package/dist/entities/stellar/StellarSpokeProvider.d.ts +24 -0
  140. package/dist/entities/stellar/StellarSpokeProvider.d.ts.map +1 -0
  141. package/dist/entities/stellar/StellarSpokeProvider.js +129 -0
  142. package/dist/entities/stellar/StellarSpokeProvider.js.map +1 -0
  143. package/dist/entities/sui/SuiSpokeProvider.d.ts +34 -0
  144. package/dist/entities/sui/SuiSpokeProvider.d.ts.map +1 -0
  145. package/dist/entities/sui/SuiSpokeProvider.js +143 -0
  146. package/dist/entities/sui/SuiSpokeProvider.js.map +1 -0
  147. package/dist/entities/sui/SuiWalletProvider.d.ts +15 -0
  148. package/dist/entities/sui/SuiWalletProvider.d.ts.map +1 -0
  149. package/dist/entities/sui/SuiWalletProvider.js +43 -0
  150. package/dist/entities/sui/SuiWalletProvider.js.map +1 -0
  151. package/dist/errors.d.ts +2 -0
  152. package/dist/errors.d.ts.map +1 -0
  153. package/dist/errors.js +2 -0
  154. package/dist/errors.js.map +1 -0
  155. package/dist/guards.d.ts +25 -0
  156. package/dist/guards.d.ts.map +1 -0
  157. package/dist/guards.js +110 -0
  158. package/dist/guards.js.map +1 -0
  159. package/dist/index.d.ts +10 -0
  160. package/dist/index.d.ts.map +1 -0
  161. package/dist/index.js +10 -0
  162. package/dist/index.js.map +1 -0
  163. package/dist/interfaces.d.ts +8 -0
  164. package/dist/interfaces.d.ts.map +1 -0
  165. package/dist/interfaces.js +2 -0
  166. package/dist/interfaces.js.map +1 -0
  167. package/dist/services/hub/EvmAssetManagerService.d.ts +60 -0
  168. package/dist/services/hub/EvmAssetManagerService.d.ts.map +1 -0
  169. package/dist/services/hub/EvmAssetManagerService.js +103 -0
  170. package/dist/services/hub/EvmAssetManagerService.js.map +1 -0
  171. package/dist/services/hub/EvmVaultTokenService.d.ts +81 -0
  172. package/dist/services/hub/EvmVaultTokenService.d.ts.map +1 -0
  173. package/dist/services/hub/EvmVaultTokenService.js +159 -0
  174. package/dist/services/hub/EvmVaultTokenService.js.map +1 -0
  175. package/dist/services/hub/EvmWalletAbstraction.d.ts +8 -0
  176. package/dist/services/hub/EvmWalletAbstraction.d.ts.map +1 -0
  177. package/dist/services/hub/EvmWalletAbstraction.js +14 -0
  178. package/dist/services/hub/EvmWalletAbstraction.js.map +1 -0
  179. package/dist/services/hub/index.d.ts +4 -0
  180. package/dist/services/hub/index.d.ts.map +1 -0
  181. package/dist/services/hub/index.js +4 -0
  182. package/dist/services/hub/index.js.map +1 -0
  183. package/dist/services/index.d.ts +7 -0
  184. package/dist/services/index.d.ts.map +1 -0
  185. package/dist/services/index.js +7 -0
  186. package/dist/services/index.js.map +1 -0
  187. package/dist/services/intentRelay/IntentRelayApiService.d.ts +111 -0
  188. package/dist/services/intentRelay/IntentRelayApiService.d.ts.map +1 -0
  189. package/dist/services/intentRelay/IntentRelayApiService.js +160 -0
  190. package/dist/services/intentRelay/IntentRelayApiService.js.map +1 -0
  191. package/dist/services/intentRelay/IntentRelayApiService.test.d.ts +2 -0
  192. package/dist/services/intentRelay/IntentRelayApiService.test.d.ts.map +1 -0
  193. package/dist/services/intentRelay/IntentRelayApiService.test.js +134 -0
  194. package/dist/services/intentRelay/IntentRelayApiService.test.js.map +1 -0
  195. package/dist/services/intentRelay/index.d.ts +2 -0
  196. package/dist/services/intentRelay/index.d.ts.map +1 -0
  197. package/dist/services/intentRelay/index.js +2 -0
  198. package/dist/services/intentRelay/index.js.map +1 -0
  199. package/dist/services/moneyMarket/MoneyMarketService.d.ts +321 -0
  200. package/dist/services/moneyMarket/MoneyMarketService.d.ts.map +1 -0
  201. package/dist/services/moneyMarket/MoneyMarketService.js +604 -0
  202. package/dist/services/moneyMarket/MoneyMarketService.js.map +1 -0
  203. package/dist/services/moneyMarket/MoneyMarketService.test.d.ts +2 -0
  204. package/dist/services/moneyMarket/MoneyMarketService.test.d.ts.map +1 -0
  205. package/dist/services/moneyMarket/MoneyMarketService.test.js +245 -0
  206. package/dist/services/moneyMarket/MoneyMarketService.test.js.map +1 -0
  207. package/dist/services/moneyMarket/index.d.ts +2 -0
  208. package/dist/services/moneyMarket/index.d.ts.map +1 -0
  209. package/dist/services/moneyMarket/index.js +2 -0
  210. package/dist/services/moneyMarket/index.js.map +1 -0
  211. package/dist/services/shared/Erc20Service.d.ts +41 -0
  212. package/dist/services/shared/Erc20Service.d.ts.map +1 -0
  213. package/dist/services/shared/Erc20Service.js +107 -0
  214. package/dist/services/shared/Erc20Service.js.map +1 -0
  215. package/dist/services/shared/index.d.ts +2 -0
  216. package/dist/services/shared/index.d.ts.map +1 -0
  217. package/dist/services/shared/index.js +2 -0
  218. package/dist/services/shared/index.js.map +1 -0
  219. package/dist/services/solver/EvmSolverService.d.ts +125 -0
  220. package/dist/services/solver/EvmSolverService.d.ts.map +1 -0
  221. package/dist/services/solver/EvmSolverService.js +166 -0
  222. package/dist/services/solver/EvmSolverService.js.map +1 -0
  223. package/dist/services/solver/SolverApiService.d.ts +40 -0
  224. package/dist/services/solver/SolverApiService.d.ts.map +1 -0
  225. package/dist/services/solver/SolverApiService.js +157 -0
  226. package/dist/services/solver/SolverApiService.js.map +1 -0
  227. package/dist/services/solver/SolverApiService.test.d.ts +2 -0
  228. package/dist/services/solver/SolverApiService.test.d.ts.map +1 -0
  229. package/dist/services/solver/SolverApiService.test.js +180 -0
  230. package/dist/services/solver/SolverApiService.test.js.map +1 -0
  231. package/dist/services/solver/SolverService.d.ts +194 -0
  232. package/dist/services/solver/SolverService.d.ts.map +1 -0
  233. package/dist/services/solver/SolverService.js +324 -0
  234. package/dist/services/solver/SolverService.js.map +1 -0
  235. package/dist/services/solver/SolverService.test.d.ts +2 -0
  236. package/dist/services/solver/SolverService.test.d.ts.map +1 -0
  237. package/dist/services/solver/SolverService.test.js +493 -0
  238. package/dist/services/solver/SolverService.test.js.map +1 -0
  239. package/dist/services/solver/index.d.ts +3 -0
  240. package/dist/services/solver/index.d.ts.map +1 -0
  241. package/dist/services/solver/index.js +3 -0
  242. package/dist/services/solver/index.js.map +1 -0
  243. package/dist/services/spoke/CWSpokeService.d.ts +67 -0
  244. package/dist/services/spoke/CWSpokeService.d.ts.map +1 -0
  245. package/dist/services/spoke/CWSpokeService.js +75 -0
  246. package/dist/services/spoke/CWSpokeService.js.map +1 -0
  247. package/dist/services/spoke/EvmSpokeService.d.ts +61 -0
  248. package/dist/services/spoke/EvmSpokeService.d.ts.map +1 -0
  249. package/dist/services/spoke/EvmSpokeService.js +118 -0
  250. package/dist/services/spoke/EvmSpokeService.js.map +1 -0
  251. package/dist/services/spoke/IconSpokeService.d.ts +55 -0
  252. package/dist/services/spoke/IconSpokeService.d.ts.map +1 -0
  253. package/dist/services/spoke/IconSpokeService.js +111 -0
  254. package/dist/services/spoke/IconSpokeService.js.map +1 -0
  255. package/dist/services/spoke/SolanaSpokeService.d.ts +45 -0
  256. package/dist/services/spoke/SolanaSpokeService.d.ts.map +1 -0
  257. package/dist/services/spoke/SolanaSpokeService.js +170 -0
  258. package/dist/services/spoke/SolanaSpokeService.js.map +1 -0
  259. package/dist/services/spoke/SpokeService.d.ts +33 -0
  260. package/dist/services/spoke/SpokeService.d.ts.map +1 -0
  261. package/dist/services/spoke/SpokeService.js +102 -0
  262. package/dist/services/spoke/SpokeService.js.map +1 -0
  263. package/dist/services/spoke/StellarSpokeService.d.ts +35 -0
  264. package/dist/services/spoke/StellarSpokeService.d.ts.map +1 -0
  265. package/dist/services/spoke/StellarSpokeService.js +39 -0
  266. package/dist/services/spoke/StellarSpokeService.js.map +1 -0
  267. package/dist/services/spoke/SuiSpokeService.d.ts +69 -0
  268. package/dist/services/spoke/SuiSpokeService.d.ts.map +1 -0
  269. package/dist/services/spoke/SuiSpokeService.js +74 -0
  270. package/dist/services/spoke/SuiSpokeService.js.map +1 -0
  271. package/dist/services/spoke/index.d.ts +3 -0
  272. package/dist/services/spoke/index.d.ts.map +1 -0
  273. package/dist/services/spoke/index.js +3 -0
  274. package/dist/services/spoke/index.js.map +1 -0
  275. package/dist/tests/services/hub/EvmAssetManagerService.test.d.ts +2 -0
  276. package/dist/tests/services/hub/EvmAssetManagerService.test.d.ts.map +1 -0
  277. package/dist/tests/services/hub/EvmAssetManagerService.test.js +123 -0
  278. package/dist/tests/services/hub/EvmAssetManagerService.test.js.map +1 -0
  279. package/dist/tests/services/hub/EvmMoneyMarketService.test.d.ts +2 -0
  280. package/dist/tests/services/hub/EvmMoneyMarketService.test.d.ts.map +1 -0
  281. package/dist/tests/services/hub/EvmMoneyMarketService.test.js +121 -0
  282. package/dist/tests/services/hub/EvmMoneyMarketService.test.js.map +1 -0
  283. package/dist/tests/services/hub/EvmVaultTokenService.test.d.ts +2 -0
  284. package/dist/tests/services/hub/EvmVaultTokenService.test.d.ts.map +1 -0
  285. package/dist/tests/services/hub/EvmVaultTokenService.test.js +98 -0
  286. package/dist/tests/services/hub/EvmVaultTokenService.test.js.map +1 -0
  287. package/dist/tests/services/spoke/EvmSpokeService.test.d.ts +2 -0
  288. package/dist/tests/services/spoke/EvmSpokeService.test.d.ts.map +1 -0
  289. package/dist/tests/services/spoke/EvmSpokeService.test.js +197 -0
  290. package/dist/tests/services/spoke/EvmSpokeService.test.js.map +1 -0
  291. package/dist/types.d.ts +395 -0
  292. package/dist/types.d.ts.map +1 -0
  293. package/dist/types.js +30 -0
  294. package/dist/types.js.map +1 -0
  295. package/dist/utils/evm-utils.d.ts +10 -0
  296. package/dist/utils/evm-utils.d.ts.map +1 -0
  297. package/dist/utils/evm-utils.js +15 -0
  298. package/dist/utils/evm-utils.js.map +1 -0
  299. package/dist/utils/index.d.ts +3 -0
  300. package/dist/utils/index.d.ts.map +1 -0
  301. package/dist/utils/index.js +3 -0
  302. package/dist/utils/index.js.map +1 -0
  303. package/dist/utils/shared-utils.d.ts +19 -0
  304. package/dist/utils/shared-utils.d.ts.map +1 -0
  305. package/dist/utils/shared-utils.js +66 -0
  306. package/dist/utils/shared-utils.js.map +1 -0
  307. package/dist/utils/shared-utils.test.d.ts +2 -0
  308. package/dist/utils/shared-utils.test.d.ts.map +1 -0
  309. package/dist/utils/shared-utils.test.js +63 -0
  310. package/dist/utils/shared-utils.test.js.map +1 -0
  311. package/package.json +83 -0
@@ -0,0 +1,143 @@
1
+ import { bcs } from '@mysten/sui/bcs';
2
+ import { Transaction } from '@mysten/sui/transactions';
3
+ import { toHex } from 'viem';
4
+ export class SuiSpokeProvider {
5
+ walletProvider;
6
+ chainConfig;
7
+ constructor(config, wallet_provider) {
8
+ this.chainConfig = config;
9
+ this.walletProvider = wallet_provider;
10
+ }
11
+ async getBalance(token) {
12
+ const assetmanager = this.splitAddress(this.chainConfig.addresses.assetManager);
13
+ const tx = new Transaction();
14
+ const result = await this.walletProvider.viewContract(tx, assetmanager.packageId, assetmanager.moduleId, 'get_token_balance', [tx.object(assetmanager.stateId)], [token]);
15
+ if (!Array.isArray(result?.returnValues) ||
16
+ !Array.isArray(result.returnValues[0]) ||
17
+ result.returnValues[0][0] === undefined) {
18
+ throw new Error('Failed to get Balance');
19
+ }
20
+ const val = result.returnValues[0][0];
21
+ const str_u64 = bcs.U64.parse(Uint8Array.from(val));
22
+ return BigInt(str_u64);
23
+ }
24
+ async transfer(token, amount, to, data, raw) {
25
+ const isNative = token.toLowerCase() === this.chainConfig.nativeToken.toLowerCase();
26
+ const tx = new Transaction();
27
+ const coin = isNative
28
+ ? await this.getNativeCoin(tx, amount)
29
+ : await this.getCoin(tx, token, amount, this.walletProvider.getWalletAddressBytes());
30
+ console.log(coin);
31
+ const connection = this.splitAddress(this.chainConfig.addresses.connection);
32
+ const assetManager = this.splitAddress(this.chainConfig.addresses.assetManager);
33
+ // Call transfer function
34
+ tx.moveCall({
35
+ target: `${assetManager.packageId}::${assetManager.moduleId}::transfer`,
36
+ typeArguments: [token],
37
+ arguments: [
38
+ tx.object(assetManager.stateId),
39
+ tx.object(connection.stateId), // Connection state object
40
+ coin,
41
+ tx.pure(bcs.vector(bcs.u8()).serialize(to)),
42
+ tx.pure(bcs.vector(bcs.u8()).serialize(data)),
43
+ ],
44
+ });
45
+ if (raw) {
46
+ const transactionRaw = await tx.build();
47
+ const transactionRawBase64String = Buffer.from(transactionRaw).toString('base64');
48
+ return {
49
+ from: this.walletProvider.getWalletAddressBytes(),
50
+ to: `${assetManager.packageId}::${assetManager.moduleId}::transfer`,
51
+ value: amount,
52
+ data: transactionRawBase64String,
53
+ };
54
+ }
55
+ // Execute transaction
56
+ return this.walletProvider.signAndExecuteTxn(tx);
57
+ }
58
+ async getNativeCoin(tx, amount) {
59
+ const coin = tx.splitCoins(tx.gas, [tx.pure.u64(amount)])[0];
60
+ if (coin === undefined) {
61
+ return Promise.reject(Error('[SuiIntentService.getNativeCoin] coin undefined'));
62
+ }
63
+ return coin;
64
+ }
65
+ async getCoin(tx, coin, amount, address) {
66
+ const coins = await this.walletProvider.getCoins(address, coin);
67
+ const objects = [];
68
+ let totalAmount = BigInt(0);
69
+ for (const coin of coins.data) {
70
+ totalAmount += BigInt(coin.balance);
71
+ objects.push(coin.coinObjectId);
72
+ if (totalAmount >= amount) {
73
+ break;
74
+ }
75
+ }
76
+ const firstObject = objects[0];
77
+ if (!firstObject) {
78
+ throw new Error(`[SuiIntentService.getCoin] Coin=${coin} not found for address=${address} and amount=${amount}`);
79
+ }
80
+ if (objects.length > 1) {
81
+ tx.mergeCoins(firstObject, objects.slice(1));
82
+ }
83
+ if (totalAmount === amount) {
84
+ return tx.object(firstObject);
85
+ }
86
+ return tx.splitCoins(firstObject, [amount]);
87
+ }
88
+ splitAddress(address) {
89
+ const parts = address.split('::');
90
+ if (parts.length === 3) {
91
+ if (parts[0] && parts[1] && parts[2]) {
92
+ return { packageId: parts[0], moduleId: parts[1], stateId: parts[2] };
93
+ }
94
+ throw new Error('Invalid package address');
95
+ }
96
+ throw new Error('Invalid package address');
97
+ }
98
+ async sendMessage(dst_chain_id, dst_address, data, raw) {
99
+ const txb = new Transaction();
100
+ const connection = this.splitAddress(this.chainConfig.addresses.connection);
101
+ // Perform send message transaction
102
+ txb.moveCall({
103
+ target: `${connection.packageId}::${connection.moduleId}::send_message_ua`,
104
+ arguments: [
105
+ txb.object(connection.stateId),
106
+ txb.pure.u256(dst_chain_id),
107
+ txb.pure(bcs.vector(bcs.u8()).serialize(dst_address)),
108
+ txb.pure(bcs.vector(bcs.u8()).serialize(data)),
109
+ ],
110
+ });
111
+ if (raw) {
112
+ const transactionRaw = await txb.build();
113
+ const transactionRawBase64String = Buffer.from(transactionRaw).toString('base64');
114
+ return {
115
+ from: this.walletProvider.getWalletAddressBytes(),
116
+ to: `${connection.packageId}::${connection.moduleId}::send_message_ua`,
117
+ value: 0n,
118
+ data: transactionRawBase64String,
119
+ };
120
+ }
121
+ return this.walletProvider.signAndExecuteTxn(txb);
122
+ }
123
+ async configureAssetManagerHub(hubNetworkId, hubAssetManager) {
124
+ const tx = new Transaction();
125
+ const assetmanager = this.splitAddress(this.chainConfig.addresses.assetManager);
126
+ tx.moveCall({
127
+ target: `${assetmanager.packageId}::${assetmanager.moduleId}::set_hub_details`,
128
+ arguments: [tx.object(assetmanager.stateId), tx.pure.u64(hubNetworkId), tx.pure.vector('u8', hubAssetManager)],
129
+ });
130
+ const result = await this.walletProvider.signAndExecuteTxn(tx);
131
+ return result;
132
+ }
133
+ getWalletAddress() {
134
+ return this.walletProvider.getWalletAddress();
135
+ }
136
+ getWalletAddressBytes() {
137
+ return SuiSpokeProvider.getAddressBCSBytes(this.getWalletAddress());
138
+ }
139
+ static getAddressBCSBytes(suiaddress) {
140
+ return toHex(bcs.Address.serialize(suiaddress).toBytes());
141
+ }
142
+ }
143
+ //# sourceMappingURL=SuiSpokeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuiSpokeProvider.js","sourceRoot":"","sources":["../../../src/entities/sui/SuiSpokeProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type PaginatedCoins, type SuiExecutionResult } from '@mysten/sui/client';
2
+ import type { Transaction, TransactionArgument } from '@mysten/sui/transactions';
3
+ import type { Hex } from '../../types.js';
4
+ import type { WalletAddressProvider } from '../index.js';
5
+ export declare class SuiWalletProvider implements WalletAddressProvider {
6
+ private keyPair;
7
+ private client;
8
+ constructor(rpcUrl: string, mnemonics: string);
9
+ signAndExecuteTxn(txn: Transaction): Promise<Hex>;
10
+ viewContract(tx: Transaction, packageId: string, module: string, functionName: string, args: TransactionArgument[], typeArgs?: string[]): Promise<SuiExecutionResult>;
11
+ getCoins(address: string, token: string): Promise<PaginatedCoins>;
12
+ getWalletAddress(): string;
13
+ getWalletAddressBytes(): Hex;
14
+ }
15
+ //# sourceMappingURL=SuiWalletProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuiWalletProvider.d.ts","sourceRoot":"","sources":["../../../src/entities/sui/SuiWalletProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAa,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7F,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEjF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,qBAAa,iBAAkB,YAAW,qBAAqB;IAC7D,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,MAAM,CAAY;gBACd,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAOvC,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAKjD,YAAY,CAChB,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,mBAAmB,EAAE,EAC3B,QAAQ,GAAE,MAAM,EAAO,GACtB,OAAO,CAAC,kBAAkB,CAAC;IAkBxB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAIvE,gBAAgB,IAAI,MAAM;IAI1B,qBAAqB,IAAI,GAAG;CAG7B"}
@@ -0,0 +1,43 @@
1
+ import { bcs } from '@mysten/sui/bcs';
2
+ import { SuiClient } from '@mysten/sui/client';
3
+ import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';
4
+ import { toHex } from 'viem';
5
+ export class SuiWalletProvider {
6
+ keyPair;
7
+ client;
8
+ constructor(rpcUrl, mnemonics) {
9
+ this.client = new SuiClient({
10
+ url: rpcUrl,
11
+ });
12
+ this.keyPair = Ed25519Keypair.deriveKeypair(mnemonics);
13
+ }
14
+ async signAndExecuteTxn(txn) {
15
+ const res = await this.client.signAndExecuteTransaction({ transaction: txn, signer: this.keyPair });
16
+ return `0x${res.digest}`;
17
+ }
18
+ async viewContract(tx, packageId, module, functionName, args, typeArgs = []) {
19
+ tx.moveCall({
20
+ target: `${packageId}::${module}::${functionName}`,
21
+ arguments: args,
22
+ typeArguments: typeArgs,
23
+ });
24
+ const txResults = await this.client.devInspectTransactionBlock({
25
+ transactionBlock: tx,
26
+ sender: this.keyPair.getPublicKey().toSuiAddress(),
27
+ });
28
+ if (txResults.results && txResults.results[0] !== undefined) {
29
+ return txResults.results[0];
30
+ }
31
+ throw Error(`transaction didn't return any values: ${JSON.stringify(txResults, null, 2)}`);
32
+ }
33
+ async getCoins(address, token) {
34
+ return this.client.getCoins({ owner: address, coinType: token, limit: 10 });
35
+ }
36
+ getWalletAddress() {
37
+ return this.keyPair.toSuiAddress();
38
+ }
39
+ getWalletAddressBytes() {
40
+ return toHex(bcs.Address.serialize(this.getWalletAddress()).toBytes());
41
+ }
42
+ }
43
+ //# sourceMappingURL=SuiWalletProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SuiWalletProvider.js","sourceRoot":"","sources":["../../../src/entities/sui/SuiWalletProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAuB,SAAS,EAA2B,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAI7B,MAAM,OAAO,iBAAiB;IACpB,OAAO,CAAiB;IACxB,MAAM,CAAY;IAC1B,YAAY,MAAc,EAAE,SAAiB;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC;YAC1B,GAAG,EAAE,MAAM;SACZ,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,GAAgB;QACtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACpG,OAAO,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,EAAe,EACf,SAAiB,EACjB,MAAc,EACd,YAAoB,EACpB,IAA2B,EAC3B,WAAqB,EAAE;QAEvB,EAAE,CAAC,QAAQ,CAAC;YACV,MAAM,EAAE,GAAG,SAAS,KAAK,MAAM,KAAK,YAAY,EAAE;YAClD,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,QAAQ;SACxB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC;YAC7D,gBAAgB,EAAE,EAAE;YACpB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,YAAY,EAAE;SACnD,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC5D,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,KAAK,CAAC,yCAAyC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,KAAa;QAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IAED,qBAAqB;QACnB,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":""}
package/dist/errors.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import type { JsonRpcPayloadResponse, ResponseAddressType, ResponseSigningType } from './entities/icon/HanaWalletConnector.js';
2
+ import { CWSpokeProvider, IconSpokeProvider, SolanaSpokeProvider, StellarSpokeProvider, SuiSpokeProvider, type EvmUninitializedConfig, type EvmInitializedConfig, type EvmUninitializedPrivateKeyConfig, type EvmUninitializedBrowserConfig, type SpokeProvider, EvmSpokeProvider } from './entities/index.js';
3
+ import { type EvmHubChainConfig, type EvmSpokeChainConfig, type HubChainConfig, type IconAddress, type IntentRelayChainId, type MoneyMarketConfig, type MoneyMarketConfigParams, type Optional, type PartnerFeeAmount, type PartnerFeeConfig, type PartnerFeePercentage, type Prettify, type SolverConfig, type SolverConfigParams, type SpokeChainConfig } from './index.js';
4
+ export declare function isEvmHubChainConfig(value: HubChainConfig): value is EvmHubChainConfig;
5
+ export declare function isEvmSpokeChainConfig(value: SpokeChainConfig): value is EvmSpokeChainConfig;
6
+ export declare function isEvmUninitializedConfig(value: EvmUninitializedConfig | EvmInitializedConfig): value is EvmUninitializedConfig;
7
+ export declare function isEvmInitializedConfig(value: EvmUninitializedConfig | EvmInitializedConfig): value is EvmInitializedConfig;
8
+ export declare function isEvmUninitializedBrowserConfig(value: EvmUninitializedConfig): value is EvmUninitializedBrowserConfig;
9
+ export declare function isEvmUninitializedPrivateKeyConfig(value: EvmUninitializedConfig): value is EvmUninitializedPrivateKeyConfig;
10
+ export declare function isIconAddress(value: unknown): value is IconAddress;
11
+ export declare function isResponseAddressType(value: unknown): value is ResponseAddressType;
12
+ export declare function isResponseSigningType(value: unknown): value is ResponseSigningType;
13
+ export declare function isJsonRpcPayloadResponse(value: unknown): value is JsonRpcPayloadResponse;
14
+ export declare function isIntentRelayChainId(value: bigint): value is IntentRelayChainId;
15
+ export declare function isPartnerFeeAmount(value: unknown): value is PartnerFeeAmount;
16
+ export declare function isPartnerFeePercentage(value: unknown): value is PartnerFeePercentage;
17
+ export declare function isEvmSpokeProvider(value: SpokeProvider): value is EvmSpokeProvider;
18
+ export declare function isSolanaSpokeProvider(value: SpokeProvider): value is SolanaSpokeProvider;
19
+ export declare function isStellarSpokeProvider(value: SpokeProvider): value is StellarSpokeProvider;
20
+ export declare function isCWSpokeProvider(value: SpokeProvider): value is CWSpokeProvider;
21
+ export declare function isIconSpokeProvider(value: SpokeProvider): value is IconSpokeProvider;
22
+ export declare function isSuiSpokeProvider(value: SpokeProvider): value is SuiSpokeProvider;
23
+ export declare function isConfiguredSolverConfig(value: SolverConfigParams): value is Prettify<SolverConfig & Optional<PartnerFeeConfig, 'partnerFee'>>;
24
+ export declare function isConfiguredMoneyMarketConfig(value: MoneyMarketConfigParams): value is Prettify<MoneyMarketConfig & Optional<PartnerFeeConfig, 'partnerFee'>>;
25
+ //# sourceMappingURL=guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,gCAAgC,EACrC,KAAK,6BAA6B,EAClC,KAAK,aAAa,EAClB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,IAAI,iBAAiB,CAErF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,IAAI,mBAAmB,CAE3F;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,sBAAsB,GAAG,oBAAoB,GACnD,KAAK,IAAI,sBAAsB,CAEjC;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,sBAAsB,GAAG,oBAAoB,GACnD,KAAK,IAAI,oBAAoB,CAE/B;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,sBAAsB,GAAG,KAAK,IAAI,6BAA6B,CAErH;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,sBAAsB,GAC5B,KAAK,IAAI,gCAAgC,CAE3C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE;AACD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CASlF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CASlF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAQxF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,kBAAkB,CAM/E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,IAAI,gBAAgB,CAOlF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,IAAI,mBAAmB,CAOxF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,IAAI,oBAAoB,CAO1F;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,IAAI,eAAe,CAOhF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,IAAI,iBAAiB,CAOpF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,IAAI,gBAAgB,CAOlF;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,kBAAkB,GACxB,KAAK,IAAI,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAQ5E;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,uBAAuB,GAC7B,KAAK,IAAI,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAUjF"}
package/dist/guards.js ADDED
@@ -0,0 +1,110 @@
1
+ import { CWSpokeProvider, IconSpokeProvider, SolanaSpokeProvider, StellarSpokeProvider, SuiSpokeProvider, EvmSpokeProvider, } from './entities/index.js';
2
+ import { INTENT_RELAY_CHAIN_IDS, } from './index.js';
3
+ export function isEvmHubChainConfig(value) {
4
+ return typeof value === 'object' && value.chain.type === 'evm';
5
+ }
6
+ export function isEvmSpokeChainConfig(value) {
7
+ return typeof value === 'object' && value.chain.type === 'evm';
8
+ }
9
+ export function isEvmUninitializedConfig(value) {
10
+ return typeof value === 'object' && 'chain' in value;
11
+ }
12
+ export function isEvmInitializedConfig(value) {
13
+ return typeof value === 'object' && 'walletClient' in value && 'publicClient' in value;
14
+ }
15
+ export function isEvmUninitializedBrowserConfig(value) {
16
+ return typeof value === 'object' && 'userAddress' in value && 'chain' in value && 'provider' in value;
17
+ }
18
+ export function isEvmUninitializedPrivateKeyConfig(value) {
19
+ return typeof value === 'object' && 'chain' in value && 'privateKey' in value;
20
+ }
21
+ export function isIconAddress(value) {
22
+ return typeof value === 'string' && /^hx[a-f0-9]{40}$|^cx[a-f0-9]{40}$/.test(value);
23
+ }
24
+ export function isResponseAddressType(value) {
25
+ return (typeof value === 'object' &&
26
+ value !== null &&
27
+ 'type' in value &&
28
+ 'payload' in value &&
29
+ value.type === 'RESPONSE_ADDRESS' &&
30
+ isIconAddress(value.payload));
31
+ }
32
+ export function isResponseSigningType(value) {
33
+ return (typeof value === 'object' &&
34
+ value !== null &&
35
+ 'type' in value &&
36
+ 'payload' in value &&
37
+ value.type === 'RESPONSE_SIGNING' &&
38
+ typeof value.payload === 'string');
39
+ }
40
+ export function isJsonRpcPayloadResponse(value) {
41
+ return (typeof value === 'object' &&
42
+ value !== null &&
43
+ 'id' in value &&
44
+ 'result' in value &&
45
+ typeof value.result === 'string');
46
+ }
47
+ export function isIntentRelayChainId(value) {
48
+ return (typeof value === 'bigint' &&
49
+ value >= 0n &&
50
+ Object.values(INTENT_RELAY_CHAIN_IDS).includes(value));
51
+ }
52
+ export function isPartnerFeeAmount(value) {
53
+ return typeof value === 'object' && value !== null && 'address' in value && 'amount' in value;
54
+ }
55
+ export function isPartnerFeePercentage(value) {
56
+ return typeof value === 'object' && value !== null && 'address' in value && 'percentage' in value;
57
+ }
58
+ export function isEvmSpokeProvider(value) {
59
+ return (typeof value === 'object' &&
60
+ value !== null &&
61
+ value instanceof EvmSpokeProvider &&
62
+ value.chainConfig.chain.type === 'evm');
63
+ }
64
+ export function isSolanaSpokeProvider(value) {
65
+ return (typeof value === 'object' &&
66
+ value !== null &&
67
+ value instanceof SolanaSpokeProvider &&
68
+ value.chainConfig.chain.type === 'solana');
69
+ }
70
+ export function isStellarSpokeProvider(value) {
71
+ return (typeof value === 'object' &&
72
+ value !== null &&
73
+ value instanceof StellarSpokeProvider &&
74
+ value.chainConfig.chain.type === 'stellar');
75
+ }
76
+ export function isCWSpokeProvider(value) {
77
+ return (typeof value === 'object' &&
78
+ value !== null &&
79
+ value instanceof CWSpokeProvider &&
80
+ value.chainConfig.chain.type === 'cosmos');
81
+ }
82
+ export function isIconSpokeProvider(value) {
83
+ return (typeof value === 'object' &&
84
+ value !== null &&
85
+ value instanceof IconSpokeProvider &&
86
+ value.chainConfig.chain.type === 'icon');
87
+ }
88
+ export function isSuiSpokeProvider(value) {
89
+ return (typeof value === 'object' &&
90
+ value !== null &&
91
+ value instanceof SuiSpokeProvider &&
92
+ value.chainConfig.chain.type === 'sui');
93
+ }
94
+ export function isConfiguredSolverConfig(value) {
95
+ return (typeof value === 'object' &&
96
+ value !== null &&
97
+ 'intentsContract' in value &&
98
+ 'solverApiEndpoint' in value &&
99
+ 'relayerApiEndpoint' in value);
100
+ }
101
+ export function isConfiguredMoneyMarketConfig(value) {
102
+ return (typeof value === 'object' &&
103
+ value !== null &&
104
+ 'lendingPool' in value &&
105
+ 'uiPoolDataProvider' in value &&
106
+ 'poolAddressesProvider' in value &&
107
+ 'bnUSD' in value &&
108
+ 'bnUSDVault' in value);
109
+ }
110
+ //# sourceMappingURL=guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.js","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAMhB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,GAgBvB,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,mBAAmB,CAAC,KAAqB;IACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAuB;IAC3D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAoD;IAEpD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAoD;IAEpD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,IAAI,KAAK,IAAI,cAAc,IAAI,KAAK,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAA6B;IAC3E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,aAAa,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,CAAC;AACxG,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,KAA6B;IAE7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mCAAmC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtF,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,SAAS,IAAI,KAAK;QAClB,KAAK,CAAC,IAAI,KAAK,kBAAkB;QACjC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,SAAS,IAAI,KAAK;QAClB,KAAK,CAAC,IAAI,KAAK,kBAAkB;QACjC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,IAAI,IAAI,KAAK;QACb,QAAQ,IAAI,KAAK;QACjB,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,IAAI,EAAE;QACX,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,KAA2B,CAAC,CAC5E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAoB;IACrD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,YAAY,gBAAgB;QACjC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAoB;IACxD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,YAAY,mBAAmB;QACpC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAC1C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAoB;IACzD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,YAAY,oBAAoB;QACrC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAoB;IACpD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,YAAY,eAAe;QAChC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAC1C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAoB;IACtD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,YAAY,iBAAiB;QAClC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CACxC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAoB;IACrD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,YAAY,gBAAgB;QACjC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAyB;IAEzB,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,iBAAiB,IAAI,KAAK;QAC1B,mBAAmB,IAAI,KAAK;QAC5B,oBAAoB,IAAI,KAAK,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAA8B;IAE9B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,aAAa,IAAI,KAAK;QACtB,oBAAoB,IAAI,KAAK;QAC7B,uBAAuB,IAAI,KAAK;QAChC,OAAO,IAAI,KAAK;QAChB,YAAY,IAAI,KAAK,CACtB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from './abis/index.js';
2
+ export * from './entities/index.js';
3
+ export * from './services/index.js';
4
+ export * from './utils/index.js';
5
+ export * from './constants.js';
6
+ export * from './guards.js';
7
+ export * from './errors.js';
8
+ export * from './types.js';
9
+ export * from './interfaces.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export * from './abis/index.js';
2
+ export * from './entities/index.js';
3
+ export * from './services/index.js';
4
+ export * from './utils/index.js';
5
+ export * from './constants.js';
6
+ export * from './guards.js';
7
+ export * from './errors.js';
8
+ export * from './types.js';
9
+ export * from './interfaces.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Address, EvmRawTransaction, EvmRawTransactionReceipt, Hash, Hex } from './index.js';
2
+ export interface IEvmWalletProvider {
3
+ getWalletAddress: () => Address;
4
+ getWalletAddressBytes: () => Hex;
5
+ sendTransaction: (evmRawTx: EvmRawTransaction) => Promise<Hash>;
6
+ waitForTransactionReceipt: (txHash: Hash) => Promise<EvmRawTransactionReceipt>;
7
+ }
8
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAElG,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,qBAAqB,EAAE,MAAM,GAAG,CAAC;IACjC,eAAe,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,yBAAyB,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;CAChF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
1
+ import { type Address, type Hex, type PublicClient } from 'viem';
2
+ import type { EvmHubProvider } from '../../entities/Providers.js';
3
+ import type { AssetInfo, EvmContractCall, SpokeChainId } from '../../types.js';
4
+ export type EvmDepositToDataParams = {
5
+ token: Hex | string;
6
+ to: Address;
7
+ amount: bigint;
8
+ };
9
+ export type EvmWithdrawAssetDataParams = {
10
+ token: Hex | string;
11
+ to: Hex;
12
+ amount: bigint;
13
+ };
14
+ export declare class EvmAssetManagerService {
15
+ private constructor();
16
+ /**
17
+ * Get asset information for a given asset address
18
+ * @param asset - The address of the asset contract
19
+ * @param assetManager - The address of the asset manager contract
20
+ * @param client - The Viem public client
21
+ * @returns Object containing chainID and spoke address for the asset
22
+ */
23
+ static getAssetInfo(asset: Address, assetManager: Address, client: PublicClient): Promise<AssetInfo>;
24
+ /**
25
+ * Encodes a transfer transaction for an asset.
26
+ * @param token - The address of the token.
27
+ * @param to - The address to transfer the token to.
28
+ * @param amount - The amount of the token to transfer.
29
+ * @param assetManager
30
+ * @returns The encoded contract call.
31
+ */
32
+ static encodeTransfer(token: Address, to: Address, amount: bigint, assetManager: Address): EvmContractCall;
33
+ /**
34
+ * Constructs the data for depositing tokens to the spoke chain.
35
+ * @param {EvmDepositToDataParams} params - The address of the token to deposit.
36
+ * @param {EvmSpokeProvider} spokeProvider - The provider for the spoke chain.
37
+ * @returns {Hex} Encoded contract calls for the deposit transaction.
38
+ * @throws Will throw an error if the asset or vault address is not found.
39
+ */
40
+ static depositToData(params: EvmDepositToDataParams, spokeChainId: SpokeChainId): Hex;
41
+ /**
42
+ * Withdraw tokens from the spoke chain.
43
+ * @param {EvmWithdrawAssetDataParams} params - Parameters for the withdrawal.
44
+ * @param {EvmSpokeProvider} spokeProvider - The provider for the spoke chain.
45
+ * @param {EvmHubProvider} hubProvider - The provider for the hub chain.
46
+ * @returns {Hex} Encoded contract calls for the withdrawal transaction.
47
+ * @throws Will throw an error if the asset address is not found.
48
+ */
49
+ static withdrawAssetData(params: EvmWithdrawAssetDataParams, hubProvider: EvmHubProvider, spokeChainId: SpokeChainId): Hex;
50
+ /**
51
+ * Get asset address for a given chain ID and spoke address
52
+ * @param chainId Chain ID where the asset exists
53
+ * @param spokeAddress Address of the asset on the spoke chain
54
+ * @param assetManager Address of the asset manager contract
55
+ * @param client The Viem public client
56
+ * @returns The asset's address on the hub chain
57
+ */
58
+ getAssetAddress(chainId: bigint, spokeAddress: Address, assetManager: Address, client: PublicClient): Promise<Address>;
59
+ }
60
+ //# sourceMappingURL=EvmAssetManagerService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvmAssetManagerService.d.ts","sourceRoot":"","sources":["../../../src/services/hub/EvmAssetManagerService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,YAAY,EAAsB,MAAM,MAAM,CAAC;AAGrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK/E,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC;IACpB,EAAE,EAAE,GAAG,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,sBAAsB;IACjC,OAAO;IAEP;;;;;;OAMG;WACiB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAcjH;;;;;;;OAOG;WACW,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,eAAe;IAYjH;;;;;;OAMG;WACW,aAAa,CAAC,MAAM,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,GAAG,GAAG;IAmB5F;;;;;;;OAOG;WACW,iBAAiB,CAC7B,MAAM,EAAE,0BAA0B,EAClC,WAAW,EAAE,cAAc,EAC3B,YAAY,EAAE,YAAY,GACzB,GAAG;IAsBN;;;;;;;OAOG;IACG,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,OAAO,EACrB,YAAY,EAAE,OAAO,EACrB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,OAAO,CAAC;CAQpB"}
@@ -0,0 +1,103 @@
1
+ import { encodeFunctionData } from 'viem';
2
+ import { assetManagerAbi } from '../../abis/index.js';
3
+ import { getHubAssetInfo } from '../../constants.js';
4
+ import { encodeContractCalls } from '../../utils/evm-utils.js';
5
+ import { Erc20Service } from '../shared/Erc20Service.js';
6
+ import { EvmVaultTokenService } from './EvmVaultTokenService.js';
7
+ export class EvmAssetManagerService {
8
+ constructor() { }
9
+ /**
10
+ * Get asset information for a given asset address
11
+ * @param asset - The address of the asset contract
12
+ * @param assetManager - The address of the asset manager contract
13
+ * @param client - The Viem public client
14
+ * @returns Object containing chainID and spoke address for the asset
15
+ */
16
+ static async getAssetInfo(asset, assetManager, client) {
17
+ const [chainId, spokeAddress] = await client.readContract({
18
+ address: assetManager,
19
+ abi: assetManagerAbi,
20
+ functionName: 'assetInfo',
21
+ args: [asset],
22
+ });
23
+ return {
24
+ chainId,
25
+ spokeAddress,
26
+ };
27
+ }
28
+ /**
29
+ * Encodes a transfer transaction for an asset.
30
+ * @param token - The address of the token.
31
+ * @param to - The address to transfer the token to.
32
+ * @param amount - The amount of the token to transfer.
33
+ * @param assetManager
34
+ * @returns The encoded contract call.
35
+ */
36
+ static encodeTransfer(token, to, amount, assetManager) {
37
+ return {
38
+ address: assetManager,
39
+ value: 0n,
40
+ data: encodeFunctionData({
41
+ abi: assetManagerAbi,
42
+ functionName: 'transfer',
43
+ args: [token, to, amount, '0x'],
44
+ }),
45
+ };
46
+ }
47
+ /**
48
+ * Constructs the data for depositing tokens to the spoke chain.
49
+ * @param {EvmDepositToDataParams} params - The address of the token to deposit.
50
+ * @param {EvmSpokeProvider} spokeProvider - The provider for the spoke chain.
51
+ * @returns {Hex} Encoded contract calls for the deposit transaction.
52
+ * @throws Will throw an error if the asset or vault address is not found.
53
+ */
54
+ static depositToData(params, spokeChainId) {
55
+ const calls = [];
56
+ const assetConfig = getHubAssetInfo(spokeChainId, params.token);
57
+ if (!assetConfig) {
58
+ throw new Error('[depositToData] Hub asset not found');
59
+ }
60
+ const assetAddress = assetConfig.asset;
61
+ const vaultAddress = assetConfig.vault;
62
+ calls.push(Erc20Service.encodeApprove(assetAddress, vaultAddress, params.amount));
63
+ calls.push(EvmVaultTokenService.encodeDeposit(vaultAddress, assetAddress, params.amount));
64
+ const translatedAmount = EvmVaultTokenService.translateIncomingDecimals(assetConfig.decimal, params.amount);
65
+ calls.push(Erc20Service.encodeTansfer(vaultAddress, params.to, translatedAmount));
66
+ return encodeContractCalls(calls);
67
+ }
68
+ /**
69
+ * Withdraw tokens from the spoke chain.
70
+ * @param {EvmWithdrawAssetDataParams} params - Parameters for the withdrawal.
71
+ * @param {EvmSpokeProvider} spokeProvider - The provider for the spoke chain.
72
+ * @param {EvmHubProvider} hubProvider - The provider for the hub chain.
73
+ * @returns {Hex} Encoded contract calls for the withdrawal transaction.
74
+ * @throws Will throw an error if the asset address is not found.
75
+ */
76
+ static withdrawAssetData(params, hubProvider, spokeChainId) {
77
+ const calls = [];
78
+ const assetConfig = getHubAssetInfo(spokeChainId, params.token);
79
+ if (!assetConfig) {
80
+ throw new Error('[withdrawAssetData] Hub asset not found');
81
+ }
82
+ const assetAddress = assetConfig.asset;
83
+ calls.push(EvmAssetManagerService.encodeTransfer(assetAddress, params.to, params.amount, hubProvider.chainConfig.addresses.assetManager));
84
+ return encodeContractCalls(calls);
85
+ }
86
+ /**
87
+ * Get asset address for a given chain ID and spoke address
88
+ * @param chainId Chain ID where the asset exists
89
+ * @param spokeAddress Address of the asset on the spoke chain
90
+ * @param assetManager Address of the asset manager contract
91
+ * @param client The Viem public client
92
+ * @returns The asset's address on the hub chain
93
+ */
94
+ async getAssetAddress(chainId, spokeAddress, assetManager, client) {
95
+ return client.readContract({
96
+ address: assetManager,
97
+ abi: assetManagerAbi,
98
+ functionName: 'assets',
99
+ args: [chainId, spokeAddress],
100
+ });
101
+ }
102
+ }
103
+ //# sourceMappingURL=EvmAssetManagerService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvmAssetManagerService.js","sourceRoot":"","sources":["../../../src/services/hub/EvmAssetManagerService.ts"],"names":[],"mappings":"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"}