@sodax/sdk 0.0.1-rc.1 → 0.0.1-rc.11

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 (315) hide show
  1. package/README.md +84 -9
  2. package/dist/index.cjs +12073 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +7078 -0
  5. package/dist/index.d.ts +7078 -10
  6. package/dist/index.mjs +11915 -0
  7. package/dist/index.mjs.map +1 -0
  8. package/package.json +21 -6
  9. package/dist/abis/asset-manager.abi.d.ts +0 -418
  10. package/dist/abis/asset-manager.abi.d.ts.map +0 -1
  11. package/dist/abis/asset-manager.abi.js +0 -542
  12. package/dist/abis/asset-manager.abi.js.map +0 -1
  13. package/dist/abis/connection.abi.d.ts +0 -72
  14. package/dist/abis/connection.abi.d.ts.map +0 -1
  15. package/dist/abis/connection.abi.js +0 -92
  16. package/dist/abis/connection.abi.js.map +0 -1
  17. package/dist/abis/erc20.abi.d.ts +0 -236
  18. package/dist/abis/erc20.abi.d.ts.map +0 -1
  19. package/dist/abis/erc20.abi.js +0 -311
  20. package/dist/abis/erc20.abi.js.map +0 -1
  21. package/dist/abis/index.d.ts +0 -10
  22. package/dist/abis/index.d.ts.map +0 -1
  23. package/dist/abis/index.js +0 -10
  24. package/dist/abis/index.js.map +0 -1
  25. package/dist/abis/intents.abi.d.ts +0 -901
  26. package/dist/abis/intents.abi.d.ts.map +0 -1
  27. package/dist/abis/intents.abi.js +0 -1158
  28. package/dist/abis/intents.abi.js.map +0 -1
  29. package/dist/abis/pool.abi.d.ts +0 -626
  30. package/dist/abis/pool.abi.d.ts.map +0 -1
  31. package/dist/abis/pool.abi.js +0 -812
  32. package/dist/abis/pool.abi.js.map +0 -1
  33. package/dist/abis/spokeAssetManager.abi.d.ts +0 -169
  34. package/dist/abis/spokeAssetManager.abi.d.ts.map +0 -1
  35. package/dist/abis/spokeAssetManager.abi.js +0 -217
  36. package/dist/abis/spokeAssetManager.abi.js.map +0 -1
  37. package/dist/abis/uiPoolData.abi.d.ts +0 -369
  38. package/dist/abis/uiPoolData.abi.d.ts.map +0 -1
  39. package/dist/abis/uiPoolData.abi.js +0 -476
  40. package/dist/abis/uiPoolData.abi.js.map +0 -1
  41. package/dist/abis/vaultToken.abi.d.ts +0 -816
  42. package/dist/abis/vaultToken.abi.d.ts.map +0 -1
  43. package/dist/abis/vaultToken.abi.js +0 -1062
  44. package/dist/abis/vaultToken.abi.js.map +0 -1
  45. package/dist/abis/walletFactory.abi.d.ts +0 -20
  46. package/dist/abis/walletFactory.abi.d.ts.map +0 -1
  47. package/dist/abis/walletFactory.abi.js +0 -27
  48. package/dist/abis/walletFactory.abi.js.map +0 -1
  49. package/dist/constants.d.ts +0 -565
  50. package/dist/constants.d.ts.map +0 -1
  51. package/dist/constants.js +0 -1196
  52. package/dist/constants.js.map +0 -1
  53. package/dist/constants.test.d.ts +0 -2
  54. package/dist/constants.test.d.ts.map +0 -1
  55. package/dist/constants.test.js +0 -128
  56. package/dist/constants.test.js.map +0 -1
  57. package/dist/entities/Providers.d.ts +0 -61
  58. package/dist/entities/Providers.d.ts.map +0 -1
  59. package/dist/entities/Providers.js +0 -51
  60. package/dist/entities/Providers.js.map +0 -1
  61. package/dist/entities/Sodax.d.ts +0 -23
  62. package/dist/entities/Sodax.d.ts.map +0 -1
  63. package/dist/entities/Sodax.js +0 -29
  64. package/dist/entities/Sodax.js.map +0 -1
  65. package/dist/entities/Sodax.test.d.ts +0 -2
  66. package/dist/entities/Sodax.test.d.ts.map +0 -1
  67. package/dist/entities/Sodax.test.js +0 -376
  68. package/dist/entities/Sodax.test.js.map +0 -1
  69. package/dist/entities/cosmos/CW20Token.d.ts +0 -39
  70. package/dist/entities/cosmos/CW20Token.d.ts.map +0 -1
  71. package/dist/entities/cosmos/CW20Token.js +0 -65
  72. package/dist/entities/cosmos/CW20Token.js.map +0 -1
  73. package/dist/entities/cosmos/CWSpokeProvider.d.ts +0 -91
  74. package/dist/entities/cosmos/CWSpokeProvider.d.ts.map +0 -1
  75. package/dist/entities/cosmos/CWSpokeProvider.js +0 -143
  76. package/dist/entities/cosmos/CWSpokeProvider.js.map +0 -1
  77. package/dist/entities/cosmos/CosmosWalletProvider.d.ts +0 -28
  78. package/dist/entities/cosmos/CosmosWalletProvider.d.ts.map +0 -1
  79. package/dist/entities/cosmos/CosmosWalletProvider.js +0 -102
  80. package/dist/entities/cosmos/CosmosWalletProvider.js.map +0 -1
  81. package/dist/entities/cosmos/InjectiveWalletProvider.d.ts +0 -25
  82. package/dist/entities/cosmos/InjectiveWalletProvider.d.ts.map +0 -1
  83. package/dist/entities/cosmos/InjectiveWalletProvider.js +0 -76
  84. package/dist/entities/cosmos/InjectiveWalletProvider.js.map +0 -1
  85. package/dist/entities/icon/HanaWalletConnector.d.ts +0 -36
  86. package/dist/entities/icon/HanaWalletConnector.d.ts.map +0 -1
  87. package/dist/entities/icon/HanaWalletConnector.js +0 -92
  88. package/dist/entities/icon/HanaWalletConnector.js.map +0 -1
  89. package/dist/entities/icon/IconSpokeProvider.d.ts +0 -8
  90. package/dist/entities/icon/IconSpokeProvider.d.ts.map +0 -1
  91. package/dist/entities/icon/IconSpokeProvider.js +0 -9
  92. package/dist/entities/icon/IconSpokeProvider.js.map +0 -1
  93. package/dist/entities/icon/IconWalletProvider.d.ts +0 -12
  94. package/dist/entities/icon/IconWalletProvider.d.ts.map +0 -1
  95. package/dist/entities/icon/IconWalletProvider.js +0 -34
  96. package/dist/entities/icon/IconWalletProvider.js.map +0 -1
  97. package/dist/entities/icon/index.d.ts +0 -5
  98. package/dist/entities/icon/index.d.ts.map +0 -1
  99. package/dist/entities/icon/index.js +0 -5
  100. package/dist/entities/icon/index.js.map +0 -1
  101. package/dist/entities/icon/utils.d.ts +0 -3
  102. package/dist/entities/icon/utils.d.ts.map +0 -1
  103. package/dist/entities/icon/utils.js +0 -4
  104. package/dist/entities/icon/utils.js.map +0 -1
  105. package/dist/entities/index.d.ts +0 -8
  106. package/dist/entities/index.d.ts.map +0 -1
  107. package/dist/entities/index.js +0 -8
  108. package/dist/entities/index.js.map +0 -1
  109. package/dist/entities/solana/Configs.d.ts +0 -10
  110. package/dist/entities/solana/Configs.d.ts.map +0 -1
  111. package/dist/entities/solana/Configs.js +0 -50
  112. package/dist/entities/solana/Configs.js.map +0 -1
  113. package/dist/entities/solana/SolanaSpokeProvider.d.ts +0 -9
  114. package/dist/entities/solana/SolanaSpokeProvider.d.ts.map +0 -1
  115. package/dist/entities/solana/SolanaSpokeProvider.js +0 -9
  116. package/dist/entities/solana/SolanaSpokeProvider.js.map +0 -1
  117. package/dist/entities/solana/SolanaWalletProvider.d.ts +0 -20
  118. package/dist/entities/solana/SolanaWalletProvider.d.ts.map +0 -1
  119. package/dist/entities/solana/SolanaWalletProvider.js +0 -53
  120. package/dist/entities/solana/SolanaWalletProvider.js.map +0 -1
  121. package/dist/entities/solana/index.d.ts +0 -4
  122. package/dist/entities/solana/index.d.ts.map +0 -1
  123. package/dist/entities/solana/index.js +0 -4
  124. package/dist/entities/solana/index.js.map +0 -1
  125. package/dist/entities/solana/pda/pda.d.ts +0 -45
  126. package/dist/entities/solana/pda/pda.d.ts.map +0 -1
  127. package/dist/entities/solana/pda/pda.js +0 -44
  128. package/dist/entities/solana/pda/pda.js.map +0 -1
  129. package/dist/entities/solana/types/asset_manager.d.ts +0 -919
  130. package/dist/entities/solana/types/asset_manager.d.ts.map +0 -1
  131. package/dist/entities/solana/types/asset_manager.js +0 -2
  132. package/dist/entities/solana/types/asset_manager.js.map +0 -1
  133. package/dist/entities/solana/types/connection.d.ts +0 -446
  134. package/dist/entities/solana/types/connection.d.ts.map +0 -1
  135. package/dist/entities/solana/types/connection.js +0 -2
  136. package/dist/entities/solana/types/connection.js.map +0 -1
  137. package/dist/entities/solana/types/rate_limit_contract.d.ts +0 -348
  138. package/dist/entities/solana/types/rate_limit_contract.d.ts.map +0 -1
  139. package/dist/entities/solana/types/rate_limit_contract.js +0 -2
  140. package/dist/entities/solana/types/rate_limit_contract.js.map +0 -1
  141. package/dist/entities/solana/utils/utils.d.ts +0 -6
  142. package/dist/entities/solana/utils/utils.d.ts.map +0 -1
  143. package/dist/entities/solana/utils/utils.js +0 -17
  144. package/dist/entities/solana/utils/utils.js.map +0 -1
  145. package/dist/entities/stellar/StellarSpokeProvider.d.ts +0 -24
  146. package/dist/entities/stellar/StellarSpokeProvider.d.ts.map +0 -1
  147. package/dist/entities/stellar/StellarSpokeProvider.js +0 -129
  148. package/dist/entities/stellar/StellarSpokeProvider.js.map +0 -1
  149. package/dist/entities/sui/SuiSpokeProvider.d.ts +0 -34
  150. package/dist/entities/sui/SuiSpokeProvider.d.ts.map +0 -1
  151. package/dist/entities/sui/SuiSpokeProvider.js +0 -143
  152. package/dist/entities/sui/SuiSpokeProvider.js.map +0 -1
  153. package/dist/entities/sui/SuiWalletProvider.d.ts +0 -15
  154. package/dist/entities/sui/SuiWalletProvider.d.ts.map +0 -1
  155. package/dist/entities/sui/SuiWalletProvider.js +0 -43
  156. package/dist/entities/sui/SuiWalletProvider.js.map +0 -1
  157. package/dist/errors.d.ts +0 -2
  158. package/dist/errors.d.ts.map +0 -1
  159. package/dist/errors.js +0 -2
  160. package/dist/errors.js.map +0 -1
  161. package/dist/guards.d.ts +0 -25
  162. package/dist/guards.d.ts.map +0 -1
  163. package/dist/guards.js +0 -110
  164. package/dist/guards.js.map +0 -1
  165. package/dist/index.d.ts.map +0 -1
  166. package/dist/index.js +0 -10
  167. package/dist/index.js.map +0 -1
  168. package/dist/interfaces.d.ts +0 -8
  169. package/dist/interfaces.d.ts.map +0 -1
  170. package/dist/interfaces.js +0 -2
  171. package/dist/interfaces.js.map +0 -1
  172. package/dist/services/hub/EvmAssetManagerService.d.ts +0 -60
  173. package/dist/services/hub/EvmAssetManagerService.d.ts.map +0 -1
  174. package/dist/services/hub/EvmAssetManagerService.js +0 -103
  175. package/dist/services/hub/EvmAssetManagerService.js.map +0 -1
  176. package/dist/services/hub/EvmVaultTokenService.d.ts +0 -81
  177. package/dist/services/hub/EvmVaultTokenService.d.ts.map +0 -1
  178. package/dist/services/hub/EvmVaultTokenService.js +0 -159
  179. package/dist/services/hub/EvmVaultTokenService.js.map +0 -1
  180. package/dist/services/hub/EvmWalletAbstraction.d.ts +0 -8
  181. package/dist/services/hub/EvmWalletAbstraction.d.ts.map +0 -1
  182. package/dist/services/hub/EvmWalletAbstraction.js +0 -14
  183. package/dist/services/hub/EvmWalletAbstraction.js.map +0 -1
  184. package/dist/services/hub/index.d.ts +0 -4
  185. package/dist/services/hub/index.d.ts.map +0 -1
  186. package/dist/services/hub/index.js +0 -4
  187. package/dist/services/hub/index.js.map +0 -1
  188. package/dist/services/index.d.ts +0 -7
  189. package/dist/services/index.d.ts.map +0 -1
  190. package/dist/services/index.js +0 -7
  191. package/dist/services/index.js.map +0 -1
  192. package/dist/services/intentRelay/IntentRelayApiService.d.ts +0 -111
  193. package/dist/services/intentRelay/IntentRelayApiService.d.ts.map +0 -1
  194. package/dist/services/intentRelay/IntentRelayApiService.js +0 -160
  195. package/dist/services/intentRelay/IntentRelayApiService.js.map +0 -1
  196. package/dist/services/intentRelay/IntentRelayApiService.test.d.ts +0 -2
  197. package/dist/services/intentRelay/IntentRelayApiService.test.d.ts.map +0 -1
  198. package/dist/services/intentRelay/IntentRelayApiService.test.js +0 -134
  199. package/dist/services/intentRelay/IntentRelayApiService.test.js.map +0 -1
  200. package/dist/services/intentRelay/index.d.ts +0 -2
  201. package/dist/services/intentRelay/index.d.ts.map +0 -1
  202. package/dist/services/intentRelay/index.js +0 -2
  203. package/dist/services/intentRelay/index.js.map +0 -1
  204. package/dist/services/moneyMarket/MoneyMarketService.d.ts +0 -321
  205. package/dist/services/moneyMarket/MoneyMarketService.d.ts.map +0 -1
  206. package/dist/services/moneyMarket/MoneyMarketService.js +0 -604
  207. package/dist/services/moneyMarket/MoneyMarketService.js.map +0 -1
  208. package/dist/services/moneyMarket/MoneyMarketService.test.d.ts +0 -2
  209. package/dist/services/moneyMarket/MoneyMarketService.test.d.ts.map +0 -1
  210. package/dist/services/moneyMarket/MoneyMarketService.test.js +0 -245
  211. package/dist/services/moneyMarket/MoneyMarketService.test.js.map +0 -1
  212. package/dist/services/moneyMarket/index.d.ts +0 -2
  213. package/dist/services/moneyMarket/index.d.ts.map +0 -1
  214. package/dist/services/moneyMarket/index.js +0 -2
  215. package/dist/services/moneyMarket/index.js.map +0 -1
  216. package/dist/services/shared/Erc20Service.d.ts +0 -41
  217. package/dist/services/shared/Erc20Service.d.ts.map +0 -1
  218. package/dist/services/shared/Erc20Service.js +0 -107
  219. package/dist/services/shared/Erc20Service.js.map +0 -1
  220. package/dist/services/shared/index.d.ts +0 -2
  221. package/dist/services/shared/index.d.ts.map +0 -1
  222. package/dist/services/shared/index.js +0 -2
  223. package/dist/services/shared/index.js.map +0 -1
  224. package/dist/services/solver/EvmSolverService.d.ts +0 -125
  225. package/dist/services/solver/EvmSolverService.d.ts.map +0 -1
  226. package/dist/services/solver/EvmSolverService.js +0 -166
  227. package/dist/services/solver/EvmSolverService.js.map +0 -1
  228. package/dist/services/solver/SolverApiService.d.ts +0 -40
  229. package/dist/services/solver/SolverApiService.d.ts.map +0 -1
  230. package/dist/services/solver/SolverApiService.js +0 -157
  231. package/dist/services/solver/SolverApiService.js.map +0 -1
  232. package/dist/services/solver/SolverApiService.test.d.ts +0 -2
  233. package/dist/services/solver/SolverApiService.test.d.ts.map +0 -1
  234. package/dist/services/solver/SolverApiService.test.js +0 -180
  235. package/dist/services/solver/SolverApiService.test.js.map +0 -1
  236. package/dist/services/solver/SolverService.d.ts +0 -194
  237. package/dist/services/solver/SolverService.d.ts.map +0 -1
  238. package/dist/services/solver/SolverService.js +0 -324
  239. package/dist/services/solver/SolverService.js.map +0 -1
  240. package/dist/services/solver/SolverService.test.d.ts +0 -2
  241. package/dist/services/solver/SolverService.test.d.ts.map +0 -1
  242. package/dist/services/solver/SolverService.test.js +0 -493
  243. package/dist/services/solver/SolverService.test.js.map +0 -1
  244. package/dist/services/solver/index.d.ts +0 -3
  245. package/dist/services/solver/index.d.ts.map +0 -1
  246. package/dist/services/solver/index.js +0 -3
  247. package/dist/services/solver/index.js.map +0 -1
  248. package/dist/services/spoke/CWSpokeService.d.ts +0 -67
  249. package/dist/services/spoke/CWSpokeService.d.ts.map +0 -1
  250. package/dist/services/spoke/CWSpokeService.js +0 -75
  251. package/dist/services/spoke/CWSpokeService.js.map +0 -1
  252. package/dist/services/spoke/EvmSpokeService.d.ts +0 -61
  253. package/dist/services/spoke/EvmSpokeService.d.ts.map +0 -1
  254. package/dist/services/spoke/EvmSpokeService.js +0 -118
  255. package/dist/services/spoke/EvmSpokeService.js.map +0 -1
  256. package/dist/services/spoke/IconSpokeService.d.ts +0 -55
  257. package/dist/services/spoke/IconSpokeService.d.ts.map +0 -1
  258. package/dist/services/spoke/IconSpokeService.js +0 -111
  259. package/dist/services/spoke/IconSpokeService.js.map +0 -1
  260. package/dist/services/spoke/SolanaSpokeService.d.ts +0 -45
  261. package/dist/services/spoke/SolanaSpokeService.d.ts.map +0 -1
  262. package/dist/services/spoke/SolanaSpokeService.js +0 -170
  263. package/dist/services/spoke/SolanaSpokeService.js.map +0 -1
  264. package/dist/services/spoke/SpokeService.d.ts +0 -33
  265. package/dist/services/spoke/SpokeService.d.ts.map +0 -1
  266. package/dist/services/spoke/SpokeService.js +0 -102
  267. package/dist/services/spoke/SpokeService.js.map +0 -1
  268. package/dist/services/spoke/StellarSpokeService.d.ts +0 -35
  269. package/dist/services/spoke/StellarSpokeService.d.ts.map +0 -1
  270. package/dist/services/spoke/StellarSpokeService.js +0 -39
  271. package/dist/services/spoke/StellarSpokeService.js.map +0 -1
  272. package/dist/services/spoke/SuiSpokeService.d.ts +0 -69
  273. package/dist/services/spoke/SuiSpokeService.d.ts.map +0 -1
  274. package/dist/services/spoke/SuiSpokeService.js +0 -74
  275. package/dist/services/spoke/SuiSpokeService.js.map +0 -1
  276. package/dist/services/spoke/index.d.ts +0 -3
  277. package/dist/services/spoke/index.d.ts.map +0 -1
  278. package/dist/services/spoke/index.js +0 -3
  279. package/dist/services/spoke/index.js.map +0 -1
  280. package/dist/tests/services/hub/EvmAssetManagerService.test.d.ts +0 -2
  281. package/dist/tests/services/hub/EvmAssetManagerService.test.d.ts.map +0 -1
  282. package/dist/tests/services/hub/EvmAssetManagerService.test.js +0 -123
  283. package/dist/tests/services/hub/EvmAssetManagerService.test.js.map +0 -1
  284. package/dist/tests/services/hub/EvmMoneyMarketService.test.d.ts +0 -2
  285. package/dist/tests/services/hub/EvmMoneyMarketService.test.d.ts.map +0 -1
  286. package/dist/tests/services/hub/EvmMoneyMarketService.test.js +0 -121
  287. package/dist/tests/services/hub/EvmMoneyMarketService.test.js.map +0 -1
  288. package/dist/tests/services/hub/EvmVaultTokenService.test.d.ts +0 -2
  289. package/dist/tests/services/hub/EvmVaultTokenService.test.d.ts.map +0 -1
  290. package/dist/tests/services/hub/EvmVaultTokenService.test.js +0 -98
  291. package/dist/tests/services/hub/EvmVaultTokenService.test.js.map +0 -1
  292. package/dist/tests/services/spoke/EvmSpokeService.test.d.ts +0 -2
  293. package/dist/tests/services/spoke/EvmSpokeService.test.d.ts.map +0 -1
  294. package/dist/tests/services/spoke/EvmSpokeService.test.js +0 -197
  295. package/dist/tests/services/spoke/EvmSpokeService.test.js.map +0 -1
  296. package/dist/types.d.ts +0 -395
  297. package/dist/types.d.ts.map +0 -1
  298. package/dist/types.js +0 -30
  299. package/dist/types.js.map +0 -1
  300. package/dist/utils/evm-utils.d.ts +0 -10
  301. package/dist/utils/evm-utils.d.ts.map +0 -1
  302. package/dist/utils/evm-utils.js +0 -15
  303. package/dist/utils/evm-utils.js.map +0 -1
  304. package/dist/utils/index.d.ts +0 -3
  305. package/dist/utils/index.d.ts.map +0 -1
  306. package/dist/utils/index.js +0 -3
  307. package/dist/utils/index.js.map +0 -1
  308. package/dist/utils/shared-utils.d.ts +0 -19
  309. package/dist/utils/shared-utils.d.ts.map +0 -1
  310. package/dist/utils/shared-utils.js +0 -66
  311. package/dist/utils/shared-utils.js.map +0 -1
  312. package/dist/utils/shared-utils.test.d.ts +0 -2
  313. package/dist/utils/shared-utils.test.d.ts.map +0 -1
  314. package/dist/utils/shared-utils.test.js +0 -63
  315. package/dist/utils/shared-utils.test.js.map +0 -1
@@ -1,166 +0,0 @@
1
- import invariant from 'tiny-invariant';
2
- import { encodeAbiParameters, encodeFunctionData, encodePacked, getAbiItem, keccak256, parseEventLogs, } from 'viem';
3
- import { FEE_PERCENTAGE_SCALE, IntentsAbi, calculatePercentageFeeAmount, encodeContractCalls, getHubAssetInfo, getIntentRelayChainId, isIntentRelayChainId, isPartnerFeeAmount, isPartnerFeePercentage, randomUint256, } from '../../index.js';
4
- import { Erc20Service, IntentDataType, } from '../index.js';
5
- export const IntentCreatedEventAbi = getAbiItem({ abi: IntentsAbi, name: 'IntentCreated' });
6
- export class EvmSolverService {
7
- constructor() { }
8
- /**
9
- * Constructs the create intent data for EVM Hub chain
10
- * @param {CreateIntentParams} createIntentParams - The create intent parameters
11
- * @param {Address} creatorHubWalletAddress - The creator hub wallet address
12
- * @param {SolverConfig} solverConfig - The intent configuration
13
- * @param {PartnerFee} fee - The partner fee configuration
14
- * @returns {Promise<[Hex, Intent, bigint]>} The encoded contract call, intent and fee amount
15
- */
16
- static constructCreateIntentData(createIntentParams, creatorHubWalletAddress, solverConfig, fee) {
17
- const inputToken = getHubAssetInfo(createIntentParams.srcChain, createIntentParams.inputToken)?.asset;
18
- const outputToken = getHubAssetInfo(createIntentParams.dstChain, createIntentParams.outputToken)?.asset;
19
- invariant(inputToken, `hub asset not found for spoke chain token (intent.inputToken): ${createIntentParams.inputToken}`);
20
- invariant(outputToken, `hub asset not found for spoke chain token (intent.outputToken): ${createIntentParams.outputToken}`);
21
- const [feeData, feeAmount] = EvmSolverService.createIntentFeeData(fee, createIntentParams.inputAmount);
22
- const calls = [];
23
- const intentsContract = solverConfig.intentsContract;
24
- const intent = {
25
- ...createIntentParams,
26
- inputToken,
27
- outputToken,
28
- srcChain: getIntentRelayChainId(createIntentParams.srcChain),
29
- dstChain: getIntentRelayChainId(createIntentParams.dstChain),
30
- intentId: randomUint256(),
31
- creator: creatorHubWalletAddress,
32
- data: feeData,
33
- };
34
- // user has to send input amount + fee amount to the Hub intent contract
35
- const totalInputAmount = intent.inputAmount + feeAmount;
36
- calls.push(Erc20Service.encodeApprove(intent.inputToken, intentsContract, totalInputAmount));
37
- calls.push(EvmSolverService.encodeCreateIntent(intent, intentsContract));
38
- return [encodeContractCalls(calls), intent, feeAmount];
39
- }
40
- /**
41
- * Creates encoded fee data for an intent
42
- * @param fee The partner fee configuration
43
- * @param inputAmount The input amount to calculate percentage-based fee from
44
- * @returns A tuple containing [encoded fee data, fee amount]. Fee amount will be 0n if no fee.
45
- */
46
- static createIntentFeeData(fee, inputAmount) {
47
- invariant(inputAmount > 0n, 'Input amount must be greater than 0');
48
- if (!fee) {
49
- return ['0x', 0n];
50
- }
51
- let feeAmount;
52
- if (isPartnerFeeAmount(fee)) {
53
- feeAmount = fee.amount;
54
- }
55
- else if (isPartnerFeePercentage(fee)) {
56
- invariant(fee.percentage >= 0 && fee.percentage <= FEE_PERCENTAGE_SCALE, `Fee percentage must be between 0 and ${FEE_PERCENTAGE_SCALE}}`);
57
- feeAmount = calculatePercentageFeeAmount(inputAmount, fee.percentage);
58
- }
59
- else {
60
- return ['0x', 0n];
61
- }
62
- // Create the fee data struct
63
- const feeData = {
64
- fee: feeAmount,
65
- receiver: fee.address,
66
- };
67
- // Encode the fee data
68
- const encodedFeeData = encodeAbiParameters([
69
- { name: 'fee', type: 'uint256' },
70
- { name: 'receiver', type: 'address' },
71
- ], [feeData.fee, feeData.receiver]);
72
- // Create the intent data struct
73
- const intentData = {
74
- type: IntentDataType.FEE,
75
- data: encodedFeeData,
76
- };
77
- // Encode the intent data
78
- return [encodePacked(['uint8', 'bytes'], [intentData.type, intentData.data]), feeAmount];
79
- }
80
- /**
81
- * Gets an intent from a transaction hash
82
- * @param {Hash} txHash - The transaction hash
83
- * @param {SolverConfig} solverConfig - The solver configuration
84
- * @param {EvmHubProvider} hubProvider - The EVM hub provider
85
- * @returns {Promise<Intent>} The intent
86
- */
87
- static async getIntent(txHash, solverConfig, hubProvider) {
88
- const receipt = await hubProvider.publicClient.waitForTransactionReceipt({ hash: txHash });
89
- const logs = parseEventLogs({
90
- abi: IntentsAbi,
91
- eventName: 'IntentCreated',
92
- logs: receipt.logs,
93
- strict: true,
94
- });
95
- for (const log of logs) {
96
- if (log.address.toLowerCase() === solverConfig.intentsContract.toLowerCase()) {
97
- if (!log.args.intent) {
98
- continue;
99
- }
100
- if (!isIntentRelayChainId(log.args.intent.srcChain) || !isIntentRelayChainId(log.args.intent.dstChain)) {
101
- throw new Error(`Invalid intent relay chain id: ${log.args.intent.srcChain} or ${log.args.intent.dstChain}`);
102
- }
103
- return {
104
- intentId: log.args.intent.intentId,
105
- creator: log.args.intent.creator,
106
- inputToken: log.args.intent.inputToken,
107
- outputToken: log.args.intent.outputToken,
108
- inputAmount: log.args.intent.inputAmount,
109
- minOutputAmount: log.args.intent.minOutputAmount,
110
- deadline: log.args.intent.deadline,
111
- data: log.args.intent.data,
112
- allowPartialFill: log.args.intent.allowPartialFill,
113
- srcChain: log.args.intent.srcChain,
114
- dstChain: log.args.intent.dstChain,
115
- srcAddress: log.args.intent.srcAddress,
116
- dstAddress: log.args.intent.dstAddress,
117
- solver: log.args.intent.solver,
118
- };
119
- }
120
- }
121
- throw new Error(`No intent found for ${txHash}`);
122
- }
123
- /**
124
- * Gets the keccak256 hash of an intent. Hash serves as the intent id on Hub chain.
125
- * @param {Intent} intent - The intent
126
- * @returns {Hex} The keccak256 hash of the intent
127
- */
128
- static getIntentHash(intent) {
129
- return keccak256(encodeAbiParameters(getAbiItem({ abi: IntentsAbi, name: 'createIntent' }).inputs, [intent]));
130
- }
131
- /**
132
- * Encodes a createIntent transaction
133
- * @param {Intent} intent - The intent to create
134
- * @param {Address} intentsContract - The address of the intents contract
135
- * @returns {EvmContractCall} The encoded contract call
136
- */
137
- static encodeCreateIntent(intent, intentsContract) {
138
- return {
139
- address: intentsContract,
140
- value: 0n,
141
- data: encodeFunctionData({
142
- abi: IntentsAbi,
143
- functionName: 'createIntent',
144
- args: [intent],
145
- }),
146
- };
147
- }
148
- /**
149
- * Encodes a cancelIntent transaction
150
- * @param {Intent} intent - The intent to cancel
151
- * @param {Address} intentsContract - The address of the intents contract
152
- * @returns {EvmContractCall} The encoded contract call
153
- */
154
- static encodeCancelIntent(intent, intentsContract) {
155
- return {
156
- address: intentsContract,
157
- value: 0n,
158
- data: encodeFunctionData({
159
- abi: IntentsAbi,
160
- functionName: 'cancelIntent',
161
- args: [intent],
162
- }),
163
- };
164
- }
165
- }
166
- //# sourceMappingURL=EvmSolverService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EvmSolverService.js","sourceRoot":"","sources":["../../../src/services/solver/EvmSolverService.ts"],"names":[],"mappings":"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"}
@@ -1,40 +0,0 @@
1
- import { type IntentErrorResponse, type IntentExecutionRequest, type IntentExecutionResponse, type IntentQuoteRequest, type IntentQuoteResponse, type IntentStatusRequest, type IntentStatusResponse, type Result, type SolverConfig } from '../../index.js';
2
- export declare class SolverApiService {
3
- private constructor();
4
- /**
5
- * Request a quote from the solver API
6
- * @example
7
- * {
8
- * "token_src":"0x13b70564b1ec12876b20fab5d1bb630311312f4f", // Asset BSC
9
- * "token_dst":"0xdcd9578b51ef55239b6e68629d822a8d97c95b86", // Asset ETH Arbitrum
10
- * "token_src_blockchain_id":"56",
11
- * "token_dst_blockchain_id":"42161",
12
- * "amount":1000000000000000n,
13
- * "quote_type": "exact_input"
14
- * }
15
- */
16
- static getQuote(payload: IntentQuoteRequest, config: SolverConfig): Promise<Result<IntentQuoteResponse, IntentErrorResponse>>;
17
- /**
18
- * Post execution of intent order to Solver API
19
- * @example
20
- * // request
21
- * {
22
- * "intent_tx_hash": "0xba3dce19347264db32ced212ff1a2036f20d9d2c7493d06af15027970be061af",
23
- * "quote_uuid": "a0dd7652-b360-4123-ab2d-78cfbcd20c6b"
24
- * }
25
- *
26
- * // response
27
- * {
28
- * "ok": true,
29
- * "value": {
30
- * "output": {
31
- * "answer":"OK",
32
- * "task_id":"a0dd7652-b360-4123-ab2d-78cfbcd20c6b"
33
- * }
34
- * }
35
- * }
36
- */
37
- static postExecution(intentExecutionRequest: IntentExecutionRequest, config: SolverConfig): Promise<Result<IntentExecutionResponse, IntentErrorResponse>>;
38
- static getStatus(intentStatusRequest: IntentStatusRequest, config: SolverConfig): Promise<Result<IntentStatusResponse, IntentErrorResponse>>;
39
- }
40
- //# sourceMappingURL=SolverApiService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SolverApiService.d.ts","sourceRoot":"","sources":["../../../src/services/solver/SolverApiService.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAExB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,MAAM,EACX,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAExB,qBAAa,gBAAgB;IAC3B,OAAO;IAEP;;;;;;;;;;;OAWG;WACiB,QAAQ,CAC1B,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAgE5D;;;;;;;;;;;;;;;;;;;OAmBG;WACiB,aAAa,CAC/B,sBAAsB,EAAE,sBAAsB,EAC9C,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAC;WAqC5C,SAAS,CAC3B,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAC;CAmC9D"}
@@ -1,157 +0,0 @@
1
- import invariant from 'tiny-invariant';
2
- import { getHubAssetInfo, IntentErrorCode, isValidOriginalAssetAddress, retry, } from '../../index.js';
3
- export class SolverApiService {
4
- constructor() { }
5
- /**
6
- * Request a quote from the solver API
7
- * @example
8
- * {
9
- * "token_src":"0x13b70564b1ec12876b20fab5d1bb630311312f4f", // Asset BSC
10
- * "token_dst":"0xdcd9578b51ef55239b6e68629d822a8d97c95b86", // Asset ETH Arbitrum
11
- * "token_src_blockchain_id":"56",
12
- * "token_dst_blockchain_id":"42161",
13
- * "amount":1000000000000000n,
14
- * "quote_type": "exact_input"
15
- * }
16
- */
17
- static async getQuote(payload, config) {
18
- invariant(payload.token_src.length > 0, 'Empty token_src');
19
- invariant(payload.token_src_blockchain_id.length > 0, 'Empty token_src_blockchain_id');
20
- invariant(payload.token_dst.length > 0, 'Empty token_dst');
21
- invariant(payload.token_dst_blockchain_id.length > 0, 'Empty token_dst_blockchain_id');
22
- invariant(payload.amount > 0n, 'amount must be greater than 0');
23
- invariant(isValidOriginalAssetAddress(payload.token_src_blockchain_id, payload.token_src), 'unsupported token_src for src chain');
24
- invariant(isValidOriginalAssetAddress(payload.token_dst_blockchain_id, payload.token_dst), 'unsupported token_dst for dst chain');
25
- const tokenSrc = getHubAssetInfo(payload.token_src_blockchain_id, payload.token_src)?.asset;
26
- const tokenDst = getHubAssetInfo(payload.token_dst_blockchain_id, payload.token_dst)?.asset;
27
- invariant(tokenSrc, 'hub asset not found for token_src');
28
- invariant(tokenDst, 'hub asset not found for token_dst');
29
- try {
30
- const response = await fetch(`${config.solverApiEndpoint}/quote`, {
31
- method: 'POST',
32
- headers: {
33
- 'Content-Type': 'application/json',
34
- },
35
- body: JSON.stringify({
36
- token_src: tokenSrc,
37
- token_dst: tokenDst,
38
- amount: payload.amount.toString(),
39
- quote_type: payload.quote_type,
40
- }),
41
- });
42
- if (!response.ok) {
43
- return {
44
- ok: false,
45
- error: await response.json(),
46
- };
47
- }
48
- const quoteResponse = await response.json();
49
- return {
50
- ok: true,
51
- value: {
52
- quoted_amount: BigInt(quoteResponse.quoted_amount),
53
- },
54
- };
55
- }
56
- catch (e) {
57
- console.error(`[SolverApiService.getQuote] failed. Details: ${JSON.stringify(e)}`);
58
- return {
59
- ok: false,
60
- error: {
61
- detail: {
62
- code: IntentErrorCode.UNKNOWN,
63
- message: e ? JSON.stringify(e) : 'Unknown error',
64
- },
65
- },
66
- };
67
- }
68
- }
69
- /**
70
- * Post execution of intent order to Solver API
71
- * @example
72
- * // request
73
- * {
74
- * "intent_tx_hash": "0xba3dce19347264db32ced212ff1a2036f20d9d2c7493d06af15027970be061af",
75
- * "quote_uuid": "a0dd7652-b360-4123-ab2d-78cfbcd20c6b"
76
- * }
77
- *
78
- * // response
79
- * {
80
- * "ok": true,
81
- * "value": {
82
- * "output": {
83
- * "answer":"OK",
84
- * "task_id":"a0dd7652-b360-4123-ab2d-78cfbcd20c6b"
85
- * }
86
- * }
87
- * }
88
- */
89
- static async postExecution(intentExecutionRequest, config) {
90
- try {
91
- const response = await retry(() => fetch(`${config.solverApiEndpoint}/execute`, {
92
- method: 'POST',
93
- headers: {
94
- 'Content-Type': 'application/json',
95
- },
96
- body: JSON.stringify(intentExecutionRequest),
97
- }));
98
- if (!response.ok) {
99
- return {
100
- ok: false,
101
- error: await response.json(),
102
- };
103
- }
104
- return {
105
- ok: true,
106
- value: await response.json(),
107
- };
108
- }
109
- catch (e) {
110
- console.error(`[SolverApiService.postExecution] failed. Details: ${JSON.stringify(e)}`);
111
- return {
112
- ok: false,
113
- error: {
114
- detail: {
115
- code: IntentErrorCode.UNKNOWN,
116
- message: e ? JSON.stringify(e) : 'Unknown error',
117
- },
118
- },
119
- };
120
- }
121
- }
122
- static async getStatus(intentStatusRequest, config) {
123
- invariant(intentStatusRequest.intent_tx_hash.length > 0, 'Empty intent_tx_hash');
124
- try {
125
- const response = await fetch(`${config.solverApiEndpoint}/status`, {
126
- method: 'POST',
127
- headers: {
128
- 'Content-Type': 'application/json',
129
- },
130
- body: JSON.stringify(intentStatusRequest),
131
- });
132
- if (!response.ok) {
133
- return {
134
- ok: false,
135
- error: await response.json(),
136
- };
137
- }
138
- return {
139
- ok: true,
140
- value: await response.json(),
141
- };
142
- }
143
- catch (e) {
144
- console.error(`[SolverApiService.getStatus] failed. Details: ${JSON.stringify(e)}`);
145
- return {
146
- ok: false,
147
- error: {
148
- detail: {
149
- code: IntentErrorCode.UNKNOWN,
150
- message: e ? JSON.stringify(e) : 'Unknown error',
151
- },
152
- },
153
- };
154
- }
155
- }
156
- }
157
- //# sourceMappingURL=SolverApiService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SolverApiService.js","sourceRoot":"","sources":["../../../src/services/solver/SolverApiService.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,EACL,eAAe,EACf,eAAe,EACf,2BAA2B,EAC3B,KAAK,GAWN,MAAM,gBAAgB,CAAC;AAExB,MAAM,OAAO,gBAAgB;IAC3B,gBAAuB,CAAC;IAExB;;;;;;;;;;;OAWG;IACI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAC1B,OAA2B,EAC3B,MAAoB;QAEpB,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC3D,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAC;QACvF,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC3D,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAC;QACvF,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,+BAA+B,CAAC,CAAC;QAChE,SAAS,CACP,2BAA2B,CAAC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC,SAAS,CAAC,EAC/E,qCAAqC,CACtC,CAAC;QACF,SAAS,CACP,2BAA2B,CAAC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC,SAAS,CAAC,EAC/E,qCAAqC,CACtC,CAAC;QAEF,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;QAC5F,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;QAE5F,SAAS,CAAC,QAAQ,EAAE,mCAAmC,CAAC,CAAC;QACzD,SAAS,CAAC,QAAQ,EAAE,mCAAmC,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,iBAAiB,QAAQ,EAAE;gBAChE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,SAAS,EAAE,QAAQ;oBACnB,SAAS,EAAE,QAAQ;oBACnB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;oBACjC,UAAU,EAAE,OAAO,CAAC,UAAU;iBAC/B,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;iBAC7B,CAAC;YACJ,CAAC;YAED,MAAM,aAAa,GAA2B,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEpE,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE;oBACL,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC;iBACrB;aAChC,CAAC;QACJ,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,gDAAgD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnF,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE;oBACL,MAAM,EAAE;wBACN,IAAI,EAAE,eAAe,CAAC,OAAO;wBAC7B,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;qBACjD;iBACF;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACI,MAAM,CAAC,KAAK,CAAC,aAAa,CAC/B,sBAA8C,EAC9C,MAAoB;QAEpB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAChC,KAAK,CAAC,GAAG,MAAM,CAAC,iBAAiB,UAAU,EAAE;gBAC3C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC;aAC7C,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;iBAC7B,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;aAC7B,CAAC;QACJ,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,qDAAqD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxF,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE;oBACL,MAAM,EAAE;wBACN,IAAI,EAAE,eAAe,CAAC,OAAO;wBAC7B,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;qBACjD;iBACF;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,SAAS,CAC3B,mBAAwC,EACxC,MAAoB;QAEpB,SAAS,CAAC,mBAAmB,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACjF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,iBAAiB,SAAS,EAAE;gBACjE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;aAC1C,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;iBAC7B,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,KAAK,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;aAC7B,CAAC;QACJ,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,iDAAiD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpF,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE;oBACL,MAAM,EAAE;wBACN,IAAI,EAAE,eAAe,CAAC,OAAO;wBAC7B,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;qBACjD;iBACF;aACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=SolverApiService.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SolverApiService.test.d.ts","sourceRoot":"","sources":["../../../src/services/solver/SolverApiService.test.ts"],"names":[],"mappings":""}
@@ -1,180 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from 'vitest';
2
- import { ARBITRUM_MAINNET_CHAIN_ID, BSC_MAINNET_CHAIN_ID, getHubAssetInfo, IntentErrorCode, } from '../../index.js';
3
- import { SolverApiService } from './SolverApiService.js';
4
- // Mock fetch
5
- const mockFetch = vi.fn();
6
- global.fetch = mockFetch;
7
- describe('SolverApiService', () => {
8
- const mockConfig = {
9
- solverApiEndpoint: 'https://api.example.com',
10
- intentsContract: '0x1234567890123456789012345678901234567890',
11
- };
12
- const bscEthToken = '0x2170Ed0880ac9A755fd29B2688956BD959F933F8';
13
- const bscEthHubTokenAsset = getHubAssetInfo(BSC_MAINNET_CHAIN_ID, bscEthToken);
14
- if (!bscEthHubTokenAsset) {
15
- throw new Error('BSC ETH token asset not found');
16
- }
17
- const arbWbtcToken = '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f';
18
- const arbWbtcHubTokenAsset = getHubAssetInfo(ARBITRUM_MAINNET_CHAIN_ID, arbWbtcToken);
19
- if (!arbWbtcHubTokenAsset) {
20
- throw new Error('BSC WBTC token asset not found');
21
- }
22
- beforeEach(() => {
23
- vi.clearAllMocks();
24
- });
25
- describe('getQuote', () => {
26
- const payload = {
27
- token_src: bscEthToken,
28
- token_src_blockchain_id: BSC_MAINNET_CHAIN_ID,
29
- token_dst: arbWbtcToken,
30
- token_dst_blockchain_id: ARBITRUM_MAINNET_CHAIN_ID,
31
- amount: 1000000000000000000n,
32
- quote_type: 'exact_input',
33
- };
34
- it('should return a successful quote response', async () => {
35
- const mockResponse = {
36
- quoted_amount: 2000000000000000000n,
37
- };
38
- mockFetch.mockResolvedValueOnce({
39
- ok: true,
40
- json: () => Promise.resolve(mockResponse),
41
- });
42
- const result = await SolverApiService.getQuote(payload, mockConfig);
43
- expect(result.ok).toBe(true);
44
- if (result.ok) {
45
- expect(result.value.quoted_amount).toBe(2000000000000000000n);
46
- }
47
- expect(mockFetch).toHaveBeenCalledWith('https://api.example.com/quote', expect.objectContaining({
48
- method: 'POST',
49
- headers: {
50
- 'Content-Type': 'application/json',
51
- },
52
- body: JSON.stringify({
53
- token_src: getHubAssetInfo(payload.token_src_blockchain_id, payload.token_src)?.asset ?? '',
54
- token_dst: getHubAssetInfo(payload.token_dst_blockchain_id, payload.token_dst)?.asset ?? '',
55
- amount: payload.amount.toString(),
56
- quote_type: payload.quote_type,
57
- }),
58
- }));
59
- });
60
- it('should handle API error response', async () => {
61
- const mockError = {
62
- detail: {
63
- code: IntentErrorCode.NO_PATH_FOUND,
64
- message: 'No path found',
65
- },
66
- };
67
- mockFetch.mockResolvedValueOnce({
68
- ok: false,
69
- json: () => Promise.resolve(mockError),
70
- });
71
- const result = await SolverApiService.getQuote(payload, mockConfig);
72
- expect(result.ok).toBe(false);
73
- if (!result.ok) {
74
- expect(result.error).toEqual(mockError);
75
- }
76
- });
77
- it('should handle network errors', async () => {
78
- mockFetch.mockRejectedValueOnce(new Error('Network error'));
79
- const result = await SolverApiService.getQuote(payload, mockConfig);
80
- expect(result.ok).toBe(false);
81
- if (!result.ok) {
82
- expect(result.error.detail.code).toBe(IntentErrorCode.UNKNOWN);
83
- }
84
- });
85
- });
86
- describe('postExecution', () => {
87
- const validRequest = {
88
- intent_tx_hash: '0x1234567890123456789012345678901234567890123456789012345678901234',
89
- quote_uuid: 'a0dd7652-b360-4123-ab2d-78cfbcd20c6b',
90
- };
91
- it('should successfully execute intent', async () => {
92
- const mockResponse = {
93
- output: {
94
- answer: 'OK',
95
- task_id: 'a0dd7652-b360-4123-ab2d-78cfbcd20c6b',
96
- },
97
- };
98
- mockFetch.mockResolvedValueOnce({
99
- ok: true,
100
- json: () => Promise.resolve(mockResponse),
101
- });
102
- const result = await SolverApiService.postExecution(validRequest, mockConfig);
103
- expect(result.ok).toBe(true);
104
- if (result.ok) {
105
- expect(result.value).toEqual(mockResponse);
106
- }
107
- expect(mockFetch).toHaveBeenCalledWith('https://api.example.com/execute', expect.objectContaining({
108
- method: 'POST',
109
- headers: {
110
- 'Content-Type': 'application/json',
111
- },
112
- body: JSON.stringify(validRequest),
113
- }));
114
- });
115
- it('should handle API error response', async () => {
116
- const mockError = {
117
- detail: {
118
- code: IntentErrorCode.QUOTE_NOT_FOUND,
119
- message: 'Quote not found',
120
- },
121
- };
122
- mockFetch.mockResolvedValueOnce({
123
- ok: false,
124
- json: () => Promise.resolve(mockError),
125
- });
126
- const result = await SolverApiService.postExecution(validRequest, mockConfig);
127
- expect(result.ok).toBe(false);
128
- if (!result.ok) {
129
- expect(result.error).toEqual(mockError);
130
- }
131
- });
132
- });
133
- describe('getStatus', () => {
134
- const validRequest = {
135
- intent_tx_hash: '0x1234567890123456789012345678901234567890123456789012345678901234',
136
- };
137
- it('should successfully get status', async () => {
138
- const mockResponse = {
139
- status: 'completed',
140
- result: {
141
- transaction_hash: '0x123',
142
- },
143
- };
144
- mockFetch.mockResolvedValueOnce({
145
- ok: true,
146
- json: () => Promise.resolve(mockResponse),
147
- });
148
- const result = await SolverApiService.getStatus(validRequest, mockConfig);
149
- expect(result.ok).toBe(true);
150
- if (result.ok) {
151
- expect(result.value).toEqual(mockResponse);
152
- }
153
- expect(mockFetch).toHaveBeenCalledWith('https://api.example.com/status', expect.objectContaining({
154
- method: 'POST',
155
- headers: {
156
- 'Content-Type': 'application/json',
157
- },
158
- body: JSON.stringify(validRequest),
159
- }));
160
- });
161
- it('should handle API error response', async () => {
162
- const mockError = {
163
- detail: {
164
- code: IntentErrorCode.QUOTE_NOT_FOUND,
165
- message: 'Quote not found',
166
- },
167
- };
168
- mockFetch.mockResolvedValueOnce({
169
- ok: false,
170
- json: () => Promise.resolve(mockError),
171
- });
172
- const result = await SolverApiService.getStatus(validRequest, mockConfig);
173
- expect(result.ok).toBe(false);
174
- if (!result.ok) {
175
- expect(result.error).toEqual(mockError);
176
- }
177
- });
178
- });
179
- });
180
- //# sourceMappingURL=SolverApiService.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SolverApiService.test.js","sourceRoot":"","sources":["../../../src/services/solver/SolverApiService.test.ts"],"names":[],"mappings":"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"}