@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,493 @@
1
+ import { afterEach, describe, expect, it, vi } from 'vitest';
2
+ import { ARBITRUM_MAINNET_CHAIN_ID, BSC_MAINNET_CHAIN_ID, EvmHubProvider, EvmSpokeProvider, IntentErrorCode, SONIC_MAINNET_CHAIN_ID, SolverService, getHubAssetInfo, getHubChainConfig, getIntentRelayChainId, spokeChainConfig, } from '../../index.js';
3
+ import * as IntentRelayApiService from '../intentRelay/IntentRelayApiService.js';
4
+ import { EvmWalletAbstraction } from '../hub/EvmWalletAbstraction.js';
5
+ import { EvmSolverService } from './EvmSolverService.js';
6
+ describe('SolverService', () => {
7
+ const mockIntentsContract = '0x0987654321098765432109876543210987654321';
8
+ const bscEthToken = '0x2170Ed0880ac9A755fd29B2688956BD959F933F8';
9
+ const arbWbtcToken = '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f';
10
+ const mockSolverConfig = {
11
+ intentsContract: mockIntentsContract,
12
+ solverApiEndpoint: 'https://staging-new-world.iconblockchain.xyz',
13
+ };
14
+ const mockHubConfig = {
15
+ hubRpcUrl: 'https://rpc.soniclabs.com',
16
+ chainConfig: getHubChainConfig(SONIC_MAINNET_CHAIN_ID),
17
+ };
18
+ const mockHubProvider = new EvmHubProvider(mockHubConfig);
19
+ const mockQuoteRequest = {
20
+ token_src: bscEthToken,
21
+ token_dst: arbWbtcToken,
22
+ token_src_blockchain_id: BSC_MAINNET_CHAIN_ID,
23
+ token_dst_blockchain_id: ARBITRUM_MAINNET_CHAIN_ID,
24
+ amount: 1000n,
25
+ quote_type: 'exact_input',
26
+ };
27
+ const mockExecutionRequest = {
28
+ intent_tx_hash: '0xba3dce19347264db32ced212ff1a2036f20d9d2c7493d06af15027970be061af',
29
+ };
30
+ const mockStatusRequest = {
31
+ intent_tx_hash: '0xba3dce19347264db32ced212ff1a2036f20d9d2c7493d06af15027970be061af',
32
+ };
33
+ const feeAmount = 1000n; // 1000 of input token
34
+ const feePercentage = 100; // 1% fee
35
+ const solverService = new SolverService(mockSolverConfig, mockHubProvider);
36
+ const solverServiceWithPercentageFee = new SolverService({
37
+ ...mockSolverConfig,
38
+ partnerFee: {
39
+ address: '0x0000000000000000000000000000000000000000',
40
+ percentage: feePercentage,
41
+ },
42
+ }, mockHubProvider);
43
+ const solverServiceWithAmountFee = new SolverService({
44
+ ...mockSolverConfig,
45
+ partnerFee: {
46
+ address: '0x0000000000000000000000000000000000000000',
47
+ amount: feeAmount,
48
+ },
49
+ }, mockHubProvider);
50
+ const mockEvmWalletProvider = {
51
+ sendTransaction: vi.fn(),
52
+ getWalletAddress: vi.fn().mockReturnValue('0x9999999999999999999999999999999999999999'),
53
+ getWalletAddressBytes: vi.fn().mockReturnValue('0x9999999999999999999999999999999999999999'),
54
+ waitForTransactionReceipt: vi.fn(),
55
+ };
56
+ const mockFee = {
57
+ address: '0x0000000000000000000000000000000000000000',
58
+ amount: feeAmount,
59
+ };
60
+ const mockBscSpokeProvider = new EvmSpokeProvider(mockEvmWalletProvider, spokeChainConfig[BSC_MAINNET_CHAIN_ID]);
61
+ const mockIntentConfig = {
62
+ intentsContract: mockIntentsContract,
63
+ solverApiEndpoint: 'https://staging-new-world.iconblockchain.xyz',
64
+ };
65
+ const mockCreatorHubWalletAddress = '0x1234567890123456789012345678901234567890';
66
+ afterEach(() => {
67
+ vi.clearAllMocks();
68
+ vi.restoreAllMocks();
69
+ });
70
+ describe('getQuote', () => {
71
+ it('should return a successful quote response', async () => {
72
+ // Mock fetch response
73
+ global.fetch = vi.fn().mockResolvedValueOnce({
74
+ ok: true,
75
+ json: async () => ({
76
+ quoted_amount: '950',
77
+ uuid: 'a0dd7652-b360-4123-ab2d-78cfbcd20c6b',
78
+ }),
79
+ });
80
+ const result = await solverService.getQuote(mockQuoteRequest);
81
+ expect(result.ok).toBe(true);
82
+ if (result.ok) {
83
+ expect(result.value).toBeDefined();
84
+ expect(result.value.quoted_amount).toBe(950n);
85
+ }
86
+ expect(fetch).toHaveBeenCalledWith(`${mockSolverConfig.solverApiEndpoint}/quote`, expect.objectContaining({
87
+ method: 'POST',
88
+ headers: { 'Content-Type': 'application/json' },
89
+ body: expect.any(String),
90
+ }));
91
+ });
92
+ it('should handle API error responses', async () => {
93
+ // Mock fetch error response
94
+ global.fetch = vi.fn().mockResolvedValueOnce({
95
+ ok: false,
96
+ json: async () => ({
97
+ detail: {
98
+ code: IntentErrorCode.NO_PATH_FOUND,
99
+ message: 'Invalid request parameters',
100
+ },
101
+ }),
102
+ });
103
+ const result = await solverService.getQuote(mockQuoteRequest);
104
+ expect(result.ok).toBe(false);
105
+ if (!result.ok) {
106
+ expect(result.error).toBeDefined();
107
+ }
108
+ });
109
+ it('should handle network errors', async () => {
110
+ // Mock fetch throwing an error
111
+ global.fetch = vi.fn().mockRejectedValueOnce(new Error('Network error'));
112
+ const result = await solverService.getQuote(mockQuoteRequest);
113
+ expect(result.ok).toBe(false);
114
+ if (!result.ok) {
115
+ expect(result.error).toBeDefined();
116
+ expect(result.error.detail.code).toBe(IntentErrorCode.UNKNOWN);
117
+ }
118
+ });
119
+ });
120
+ describe('getFee', () => {
121
+ it('should calculate fee correctly for given input amount', async () => {
122
+ const inputAmount = 1000n;
123
+ const expectedFee = 10n; // Assuming 1% fee
124
+ const result = await solverServiceWithPercentageFee.getFee(inputAmount);
125
+ expect(result).toBe(expectedFee);
126
+ });
127
+ it('should handle zero input amount', async () => {
128
+ const inputAmount = 0n;
129
+ await expect(solverServiceWithPercentageFee.getFee(inputAmount)).rejects.toThrow();
130
+ });
131
+ it('should handle very large input amount', async () => {
132
+ const inputAmount = 2n ** 128n - 1n;
133
+ const result = await solverServiceWithPercentageFee.getFee(inputAmount);
134
+ expect(result).toBeDefined();
135
+ expect(typeof result).toBe('bigint');
136
+ expect(result).toBeGreaterThan(0n);
137
+ });
138
+ it('should handle negative input amount', async () => {
139
+ const inputAmount = -1000n;
140
+ await expect(solverServiceWithPercentageFee.getFee(inputAmount)).rejects.toThrow();
141
+ });
142
+ it('should handle undefined input amount', async () => {
143
+ // @ts-expect-error Testing invalid input
144
+ await expect(solverServiceWithPercentageFee.getFee(undefined)).rejects.toThrow();
145
+ });
146
+ it('should handle null input amount', async () => {
147
+ // @ts-expect-error Testing invalid input
148
+ await expect(solverServiceWithPercentageFee.getFee(null)).rejects.toThrow();
149
+ });
150
+ it('should handle fee amount', async () => {
151
+ const inputAmount = 1000n;
152
+ const result = await solverServiceWithAmountFee.getFee(inputAmount);
153
+ expect(result).toBe(feeAmount);
154
+ });
155
+ it('should handle undefined input amount', async () => {
156
+ // @ts-expect-error Testing invalid input
157
+ await expect(solverServiceWithAmountFee.getFee(undefined)).rejects.toThrow();
158
+ });
159
+ it('should handle null input amount', async () => {
160
+ // @ts-expect-error Testing invalid input
161
+ await expect(solverServiceWithAmountFee.getFee(null)).rejects.toThrow();
162
+ });
163
+ });
164
+ describe('postExecution', () => {
165
+ it('should return a successful post execution response', async () => {
166
+ // Mock fetch response
167
+ global.fetch = vi.fn().mockResolvedValueOnce({
168
+ ok: true,
169
+ json: async () => ({
170
+ answer: 'OK',
171
+ intent_hash: '0xba3dce19347264db32ced212ff1a2036f20d9d2c7493d06af15027970be061af',
172
+ }),
173
+ });
174
+ const result = await solverService.postExecution(mockExecutionRequest);
175
+ expect(result.ok).toBe(true);
176
+ if (result.ok) {
177
+ expect(result.value).toBeDefined();
178
+ expect(result.value.intent_hash).toBeDefined();
179
+ expect(result.value.answer).toBe('OK');
180
+ }
181
+ expect(fetch).toHaveBeenCalledWith(`${mockSolverConfig.solverApiEndpoint}/execute`, expect.objectContaining({
182
+ method: 'POST',
183
+ headers: { 'Content-Type': 'application/json' },
184
+ body: expect.any(String),
185
+ }));
186
+ });
187
+ it('should handle API error responses', async () => {
188
+ // Mock fetch error response
189
+ global.fetch = vi.fn().mockResolvedValueOnce({
190
+ ok: false,
191
+ json: async () => ({
192
+ detail: {
193
+ code: IntentErrorCode.QUOTE_NOT_FOUND,
194
+ message: 'Execution failed',
195
+ },
196
+ }),
197
+ });
198
+ const result = await solverService.postExecution(mockExecutionRequest);
199
+ expect(result.ok).toBe(false);
200
+ if (!result.ok) {
201
+ expect(result.error).toBeDefined();
202
+ }
203
+ });
204
+ });
205
+ describe('getStatus', () => {
206
+ it('should return a successful status response', async () => {
207
+ // Mock fetch response
208
+ global.fetch = vi.fn().mockResolvedValueOnce({
209
+ ok: true,
210
+ json: async () => ({
211
+ status: 3,
212
+ intent_hash: '0xba3dce19347264db32ced212ff1a2036f20d9d2c7493d06af15027970be061af',
213
+ }),
214
+ });
215
+ const result = await solverService.getStatus(mockStatusRequest);
216
+ expect(result.ok).toBe(true);
217
+ if (result.ok) {
218
+ expect(result.value).toBeDefined();
219
+ expect(result.value.status).toBe(3);
220
+ }
221
+ expect(fetch).toHaveBeenCalledWith(`${mockSolverConfig.solverApiEndpoint}/status`, expect.objectContaining({
222
+ method: 'POST',
223
+ headers: { 'Content-Type': 'application/json' },
224
+ body: expect.any(String),
225
+ }));
226
+ });
227
+ it('should handle API error responses', async () => {
228
+ // Mock fetch error response
229
+ global.fetch = vi.fn().mockResolvedValueOnce({
230
+ ok: false,
231
+ json: async () => ({
232
+ detail: {
233
+ code: IntentErrorCode.NO_PATH_FOUND,
234
+ message: 'Intent not found',
235
+ },
236
+ }),
237
+ });
238
+ const result = await solverService.getStatus(mockStatusRequest);
239
+ expect(result.ok).toBe(false);
240
+ if (!result.ok) {
241
+ expect(result.error).toBeDefined();
242
+ }
243
+ });
244
+ });
245
+ describe('createAndSubmitIntent', () => {
246
+ const mockCreateIntentParams = {
247
+ inputToken: bscEthToken,
248
+ outputToken: arbWbtcToken,
249
+ inputAmount: BigInt(1000000),
250
+ minOutputAmount: BigInt(900000),
251
+ deadline: BigInt(0),
252
+ allowPartialFill: false,
253
+ srcChain: BSC_MAINNET_CHAIN_ID,
254
+ dstChain: ARBITRUM_MAINNET_CHAIN_ID,
255
+ srcAddress: mockEvmWalletProvider.getWalletAddressBytes(),
256
+ dstAddress: mockEvmWalletProvider.getWalletAddressBytes(),
257
+ solver: '0x0000000000000000000000000000000000000000',
258
+ data: '0x',
259
+ };
260
+ const mockTxHash = '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890';
261
+ const mockIntent = {
262
+ intentId: BigInt(1),
263
+ creator: mockBscSpokeProvider.walletProvider.getWalletAddress(),
264
+ inputToken: getHubAssetInfo(mockCreateIntentParams.srcChain, mockCreateIntentParams.inputToken)?.asset ?? '0x',
265
+ outputToken: getHubAssetInfo(mockCreateIntentParams.dstChain, mockCreateIntentParams.outputToken)?.asset ?? '0x',
266
+ inputAmount: mockCreateIntentParams.inputAmount,
267
+ minOutputAmount: mockCreateIntentParams.minOutputAmount,
268
+ deadline: mockCreateIntentParams.deadline,
269
+ allowPartialFill: mockCreateIntentParams.allowPartialFill,
270
+ srcChain: getIntentRelayChainId(mockCreateIntentParams.srcChain),
271
+ dstChain: getIntentRelayChainId(mockCreateIntentParams.dstChain),
272
+ srcAddress: mockCreateIntentParams.srcAddress,
273
+ dstAddress: mockCreateIntentParams.dstAddress,
274
+ solver: mockCreateIntentParams.solver,
275
+ data: mockCreateIntentParams.data,
276
+ feeAmount: feeAmount,
277
+ };
278
+ const mockPacketData = {
279
+ src_chain_id: Number(getIntentRelayChainId(BSC_MAINNET_CHAIN_ID)), // BSC chain ID
280
+ src_tx_hash: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
281
+ src_address: '0x1234567890123456789012345678901234567890',
282
+ status: 'executed',
283
+ dst_chain_id: Number(getIntentRelayChainId(ARBITRUM_MAINNET_CHAIN_ID)), // Arbitrum chain ID
284
+ conn_sn: 1,
285
+ dst_address: '0x1234567890123456789012345678901234567890',
286
+ dst_tx_hash: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
287
+ signatures: ['0x1234567890123456789012345678901234567890'],
288
+ payload: '0x',
289
+ };
290
+ it('should successfully create and submit an intent', async () => {
291
+ vi.spyOn(solverService, 'createIntent').mockResolvedValueOnce({
292
+ ok: true,
293
+ value: [mockTxHash, { ...mockIntent, feeAmount: feeAmount }],
294
+ });
295
+ vi.spyOn(EvmWalletAbstraction, 'getUserHubWalletAddress').mockResolvedValueOnce(mockEvmWalletProvider.getWalletAddressBytes());
296
+ vi.spyOn(IntentRelayApiService, 'submitTransaction').mockResolvedValueOnce({
297
+ success: true,
298
+ message: 'Transaction submitted successfully',
299
+ });
300
+ vi.spyOn(IntentRelayApiService, 'waitUntilIntentExecuted').mockResolvedValueOnce({
301
+ ok: true,
302
+ value: mockPacketData,
303
+ });
304
+ vi.spyOn(solverService, 'postExecution').mockResolvedValueOnce({
305
+ ok: true,
306
+ value: {
307
+ answer: 'OK',
308
+ intent_hash: mockTxHash,
309
+ },
310
+ });
311
+ const result = await solverService.createAndSubmitIntent(mockCreateIntentParams, mockBscSpokeProvider, mockFee);
312
+ expect(result.ok).toBe(true);
313
+ if (result.ok) {
314
+ expect(result.value).toBeDefined();
315
+ expect(result.value[0]).toBeDefined();
316
+ expect(result.value[1]).toEqual(mockIntent);
317
+ }
318
+ expect(solverService['createIntent']).toHaveBeenCalledWith(mockCreateIntentParams, mockBscSpokeProvider, mockFee, false);
319
+ expect(solverService['postExecution']).toHaveBeenCalledWith({
320
+ intent_tx_hash: mockTxHash,
321
+ });
322
+ expect(IntentRelayApiService.submitTransaction).toHaveBeenCalled();
323
+ });
324
+ it('should handle postExecution error', async () => {
325
+ vi.spyOn(solverService, 'postExecution').mockResolvedValueOnce({
326
+ ok: false,
327
+ error: {
328
+ detail: {
329
+ code: IntentErrorCode.UNKNOWN,
330
+ message: 'Post execution failed',
331
+ },
332
+ },
333
+ });
334
+ const result = await solverService.createAndSubmitIntent(mockCreateIntentParams, mockBscSpokeProvider, mockFee);
335
+ expect(result.ok).toBe(false);
336
+ if (!result.ok) {
337
+ expect(result.error).toBeDefined();
338
+ }
339
+ });
340
+ it('should handle submitTransaction error', async () => {
341
+ vi.spyOn(solverService, 'createIntent').mockResolvedValueOnce({
342
+ ok: true,
343
+ value: [mockTxHash, { ...mockIntent, feeAmount: feeAmount }],
344
+ });
345
+ vi.spyOn(IntentRelayApiService, 'submitTransaction').mockResolvedValueOnce({
346
+ success: false,
347
+ message: 'Transaction submission failed',
348
+ });
349
+ vi.spyOn(solverService, 'postExecution').mockResolvedValueOnce({
350
+ ok: true,
351
+ value: {
352
+ answer: 'OK',
353
+ intent_hash: mockTxHash,
354
+ },
355
+ });
356
+ const result = await solverService.createAndSubmitIntent(mockCreateIntentParams, mockBscSpokeProvider, mockFee);
357
+ expect(result.ok).toBe(false);
358
+ if (!result.ok) {
359
+ expect(result.error).toEqual({
360
+ code: 'SUBMIT_TX_FAILED',
361
+ data: {
362
+ apiUrl: 'https://xcall-relay.nw.iconblockchain.xyz',
363
+ payload: {
364
+ action: 'submit',
365
+ params: {
366
+ chain_id: '4',
367
+ tx_hash: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
368
+ },
369
+ },
370
+ },
371
+ });
372
+ }
373
+ });
374
+ });
375
+ describe('createIntent', () => {
376
+ const mockCreateIntentParams = {
377
+ inputToken: bscEthToken,
378
+ outputToken: arbWbtcToken,
379
+ inputAmount: BigInt(1000000),
380
+ minOutputAmount: BigInt(900000),
381
+ deadline: BigInt(0),
382
+ allowPartialFill: false,
383
+ srcChain: BSC_MAINNET_CHAIN_ID,
384
+ dstChain: ARBITRUM_MAINNET_CHAIN_ID,
385
+ srcAddress: mockEvmWalletProvider.getWalletAddressBytes(),
386
+ dstAddress: mockEvmWalletProvider.getWalletAddressBytes(),
387
+ solver: '0x0000000000000000000000000000000000000000',
388
+ data: '0x',
389
+ };
390
+ const mockTxHash = '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890';
391
+ const [, intent, feeAmount] = EvmSolverService.constructCreateIntentData(mockCreateIntentParams, mockCreatorHubWalletAddress, mockIntentConfig, mockFee);
392
+ it('should successfully create an intent for EVM chain', async () => {
393
+ vi.spyOn(solverService, 'createIntent').mockResolvedValueOnce({
394
+ ok: true,
395
+ value: [mockTxHash, { ...intent, feeAmount: feeAmount }],
396
+ });
397
+ vi.spyOn(EvmWalletAbstraction, 'getUserHubWalletAddress').mockResolvedValueOnce(mockCreatorHubWalletAddress);
398
+ const result = await solverService.createIntent(mockCreateIntentParams, mockBscSpokeProvider, mockFee, false);
399
+ if (!result.ok) {
400
+ throw new Error('Failed to create intent');
401
+ }
402
+ const [txHash, resultingIntent] = result.value;
403
+ expect(txHash).toBeDefined();
404
+ expect(txHash).toBe(mockTxHash);
405
+ resultingIntent.intentId = intent.intentId;
406
+ expect(resultingIntent).toEqual({ ...intent, feeAmount });
407
+ });
408
+ });
409
+ describe('cancelIntent', () => {
410
+ const mockCreateIntentParams = {
411
+ inputToken: bscEthToken,
412
+ outputToken: arbWbtcToken,
413
+ inputAmount: BigInt(1000000),
414
+ minOutputAmount: BigInt(900000),
415
+ deadline: BigInt(0),
416
+ allowPartialFill: false,
417
+ srcChain: BSC_MAINNET_CHAIN_ID,
418
+ dstChain: ARBITRUM_MAINNET_CHAIN_ID,
419
+ srcAddress: mockEvmWalletProvider.getWalletAddressBytes(),
420
+ dstAddress: mockEvmWalletProvider.getWalletAddressBytes(),
421
+ solver: '0x0000000000000000000000000000000000000000',
422
+ data: '0x',
423
+ };
424
+ const mockTxHash = '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890';
425
+ const [, intent] = EvmSolverService.constructCreateIntentData(mockCreateIntentParams, mockCreatorHubWalletAddress, mockIntentConfig, mockFee);
426
+ it('should successfully cancel an intent for EVM chain', async () => {
427
+ vi.spyOn(solverService, 'cancelIntent').mockResolvedValueOnce(mockTxHash);
428
+ const result = await solverService.cancelIntent(intent, mockBscSpokeProvider, false);
429
+ expect(result).toBe(mockTxHash);
430
+ });
431
+ });
432
+ describe('getIntent', () => {
433
+ const mockCreateIntentParams = {
434
+ inputToken: bscEthToken,
435
+ outputToken: arbWbtcToken,
436
+ inputAmount: BigInt(1000000),
437
+ minOutputAmount: BigInt(900000),
438
+ deadline: BigInt(0),
439
+ allowPartialFill: false,
440
+ srcChain: BSC_MAINNET_CHAIN_ID,
441
+ dstChain: ARBITRUM_MAINNET_CHAIN_ID,
442
+ srcAddress: mockEvmWalletProvider.getWalletAddressBytes(),
443
+ dstAddress: mockEvmWalletProvider.getWalletAddressBytes(),
444
+ solver: '0x0000000000000000000000000000000000000000',
445
+ data: '0x',
446
+ };
447
+ const mockTxHash = '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890';
448
+ const mockIntent = {
449
+ intentId: BigInt(1),
450
+ creator: mockBscSpokeProvider.walletProvider.getWalletAddress(),
451
+ inputToken: getHubAssetInfo(mockCreateIntentParams.srcChain, mockCreateIntentParams.inputToken)?.asset ?? '0x',
452
+ outputToken: getHubAssetInfo(mockCreateIntentParams.dstChain, mockCreateIntentParams.outputToken)?.asset ?? '0x',
453
+ inputAmount: mockCreateIntentParams.inputAmount,
454
+ minOutputAmount: mockCreateIntentParams.minOutputAmount,
455
+ deadline: mockCreateIntentParams.deadline,
456
+ allowPartialFill: mockCreateIntentParams.allowPartialFill,
457
+ srcChain: getIntentRelayChainId(mockCreateIntentParams.srcChain),
458
+ dstChain: getIntentRelayChainId(mockCreateIntentParams.dstChain),
459
+ srcAddress: mockCreateIntentParams.srcAddress,
460
+ dstAddress: mockCreateIntentParams.dstAddress,
461
+ solver: mockCreateIntentParams.solver,
462
+ data: mockCreateIntentParams.data,
463
+ };
464
+ it('should successfully get an intent for EVM chain', async () => {
465
+ vi.spyOn(EvmSolverService, 'getIntent').mockResolvedValueOnce(mockIntent);
466
+ const result = await solverService.getIntent(mockTxHash);
467
+ expect(result).toEqual(mockIntent);
468
+ });
469
+ });
470
+ describe('getIntentHash', () => {
471
+ const mockCreateIntentParams = {
472
+ inputToken: bscEthToken,
473
+ outputToken: arbWbtcToken,
474
+ inputAmount: BigInt(1000000),
475
+ minOutputAmount: BigInt(900000),
476
+ deadline: BigInt(0),
477
+ allowPartialFill: false,
478
+ srcChain: BSC_MAINNET_CHAIN_ID,
479
+ dstChain: ARBITRUM_MAINNET_CHAIN_ID,
480
+ srcAddress: mockEvmWalletProvider.getWalletAddressBytes(),
481
+ dstAddress: mockEvmWalletProvider.getWalletAddressBytes(),
482
+ solver: '0x0000000000000000000000000000000000000000',
483
+ data: '0x',
484
+ };
485
+ const [, intent] = EvmSolverService.constructCreateIntentData(mockCreateIntentParams, mockCreatorHubWalletAddress, mockIntentConfig, mockFee);
486
+ it('should successfully get an intent hash', () => {
487
+ vi.spyOn(solverService, 'getIntentHash').mockReturnValueOnce('0x8196c6646c0d811b2ff19ffdf61533ad2d73d724fcd69c77ec243a908364a35e');
488
+ const result = solverService.getIntentHash(intent);
489
+ expect(result).toBe('0x8196c6646c0d811b2ff19ffdf61533ad2d73d724fcd69c77ec243a908364a35e');
490
+ });
491
+ });
492
+ });
493
+ //# sourceMappingURL=SolverService.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolverService.test.js","sourceRoot":"","sources":["../../../src/services/solver/SolverService.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './EvmSolverService.js';
2
+ export * from './SolverService.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/solver/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './EvmSolverService.js';
2
+ export * from './SolverService.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/solver/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { type Address, type Hex } from 'viem';
2
+ import { CWSpokeProvider } from '../../entities/cosmos/CWSpokeProvider.js';
3
+ import type { EvmHubProvider } from '../../entities/index.js';
4
+ import { type HubAddress, type PromiseCWTxReturnType } from '../../index.js';
5
+ export type CWSpokeDepositParams = {
6
+ from: string;
7
+ to?: Hex;
8
+ token: string;
9
+ amount: bigint;
10
+ data: Hex;
11
+ };
12
+ export type TransferToHubParams = {
13
+ token: string;
14
+ recipient: Address;
15
+ amount: string;
16
+ data: Hex;
17
+ };
18
+ export declare class CWSpokeService {
19
+ private constructor();
20
+ /**
21
+ * Deposit tokens to the spoke chain.
22
+ * @param {CWSpokeDepositParams} params - The parameters for the deposit, including the user's address, token address, amount, and additional data.
23
+ * @param {CWSpokeProvider} spokeProvider - The provider for the spoke chain.
24
+ * @param {EvmHubProvider} hubProvider - The provider for the hub chain.
25
+ * @param {boolean} raw - The return type raw or just transaction hash
26
+ * @returns {PromiseCWTxReturnType<R>} A promise that resolves to the transaction hash.
27
+ */
28
+ static deposit<R extends boolean = false>(params: CWSpokeDepositParams, spokeProvider: CWSpokeProvider, hubProvider: EvmHubProvider, raw?: R): PromiseCWTxReturnType<R>;
29
+ /**
30
+ * Get the balance of the token in the spoke chain.
31
+ * @param {Address} token - The address of the token to get the balance of.
32
+ * @param {CWSpokeProvider} spokeProvider - The spoke provider.
33
+ * @returns {Promise<bigint>} The balance of the token.
34
+ */
35
+ static getDeposit(token: String, spokeProvider: CWSpokeProvider): Promise<bigint>;
36
+ /**
37
+ * Calls a contract on the spoke chain using the user's wallet.
38
+ * @param {HubAddress} from - The address of the user on the hub chain.
39
+ * @param {Hex} payload - The payload to send to the contract.
40
+ * @param {CWSpokeProvider} spokeProvider - The provider for the spoke chain.
41
+ * @param {EvmHubProvider} hubProvider - The provider for the hub chain.
42
+ * @returns {PromiseCWTxReturnType<R>} A promise that resolves to the transaction hash.
43
+ */
44
+ static callWallet<R extends boolean = false>(from: HubAddress, payload: Hex, spokeProvider: CWSpokeProvider, hubProvider: EvmHubProvider, raw?: R): PromiseCWTxReturnType<R>;
45
+ /**
46
+ * Transfers tokens to the hub chain.
47
+ * @param {TransferToHubParams} params - The parameters for the transfer, including:
48
+ * - {string} token: The address of the token to transfer (use address(0) for native token).
49
+ * - {Uint8Array} recipient: The recipient address on the hub chain.
50
+ * - {string} amount: The amount to transfer.
51
+ * - {Uint8Array} [data=new Uint8Array([])]: Additional data for the transfer.
52
+ * @param {CWSpokeProvider} spokeProvider - The provider for the spoke chain.
53
+ * @param {boolean} raw - The return type raw or just transaction hash
54
+ * @returns {PromiseCWTxReturnType<R>} A promise that resolves to the transaction hash.
55
+ */
56
+ private static transfer;
57
+ /**
58
+ * Sends a message to the hub chain.
59
+ * @param {bigint} dstChainId - The chain ID of the hub chain.
60
+ * @param {Address} dstAddress - The address on the hub chain.
61
+ * @param {Hex} payload - The payload to send.
62
+ * @param {CWSpokeProvider} spokeProvider - The provider for the spoke chain.
63
+ * @returns {PromiseCWTxReturnType<R>} A promise that resolves to the transaction hash.
64
+ */
65
+ private static call;
66
+ }
67
+ //# sourceMappingURL=CWSpokeService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CWSpokeService.d.ts","sourceRoot":"","sources":["../../../src/services/spoke/CWSpokeService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAAS,MAAM,MAAM,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,qBAAqB,EAAyB,MAAM,gBAAgB,CAAC;AAGpG,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;CACX,CAAC;AAEF,qBAAa,cAAc;IACzB,OAAO;IAEP;;;;;;;OAOG;WACiB,OAAO,CAAC,CAAC,SAAS,OAAO,GAAG,KAAK,EACnD,MAAM,EAAE,oBAAoB,EAC5B,aAAa,EAAE,eAAe,EAC9B,WAAW,EAAE,cAAc,EAC3B,GAAG,CAAC,EAAE,CAAC,GACN,qBAAqB,CAAC,CAAC,CAAC;IAqB3B;;;;;OAKG;WACiB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9F;;;;;;;OAOG;WACiB,UAAU,CAAC,CAAC,SAAS,OAAO,GAAG,KAAK,EACtD,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,GAAG,EACZ,aAAa,EAAE,eAAe,EAC9B,WAAW,EAAE,cAAc,EAC3B,GAAG,CAAC,EAAE,CAAC,GACN,qBAAqB,CAAC,CAAC,CAAC;IAK3B;;;;;;;;;;OAUG;mBACkB,QAAQ;IAS7B;;;;;;;OAOG;mBACkB,IAAI;CAU1B"}