@sodax/sdk 0.0.1-rc.3 → 0.0.1-rc.30

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 (304) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +164 -11
  3. package/dist/index.cjs +16884 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +9780 -0
  6. package/dist/index.d.ts +9779 -9
  7. package/dist/index.mjs +16633 -0
  8. package/dist/index.mjs.map +1 -0
  9. package/package.json +31 -32
  10. package/dist/abis/asset-manager.abi.d.ts +0 -418
  11. package/dist/abis/asset-manager.abi.d.ts.map +0 -1
  12. package/dist/abis/asset-manager.abi.js +0 -542
  13. package/dist/abis/asset-manager.abi.js.map +0 -1
  14. package/dist/abis/connection.abi.d.ts +0 -72
  15. package/dist/abis/connection.abi.d.ts.map +0 -1
  16. package/dist/abis/connection.abi.js +0 -92
  17. package/dist/abis/connection.abi.js.map +0 -1
  18. package/dist/abis/erc20.abi.d.ts +0 -236
  19. package/dist/abis/erc20.abi.d.ts.map +0 -1
  20. package/dist/abis/erc20.abi.js +0 -311
  21. package/dist/abis/erc20.abi.js.map +0 -1
  22. package/dist/abis/index.d.ts +0 -10
  23. package/dist/abis/index.d.ts.map +0 -1
  24. package/dist/abis/index.js +0 -10
  25. package/dist/abis/index.js.map +0 -1
  26. package/dist/abis/intents.abi.d.ts +0 -901
  27. package/dist/abis/intents.abi.d.ts.map +0 -1
  28. package/dist/abis/intents.abi.js +0 -1158
  29. package/dist/abis/intents.abi.js.map +0 -1
  30. package/dist/abis/pool.abi.d.ts +0 -626
  31. package/dist/abis/pool.abi.d.ts.map +0 -1
  32. package/dist/abis/pool.abi.js +0 -812
  33. package/dist/abis/pool.abi.js.map +0 -1
  34. package/dist/abis/spokeAssetManager.abi.d.ts +0 -169
  35. package/dist/abis/spokeAssetManager.abi.d.ts.map +0 -1
  36. package/dist/abis/spokeAssetManager.abi.js +0 -217
  37. package/dist/abis/spokeAssetManager.abi.js.map +0 -1
  38. package/dist/abis/uiPoolData.abi.d.ts +0 -369
  39. package/dist/abis/uiPoolData.abi.d.ts.map +0 -1
  40. package/dist/abis/uiPoolData.abi.js +0 -476
  41. package/dist/abis/uiPoolData.abi.js.map +0 -1
  42. package/dist/abis/vaultToken.abi.d.ts +0 -816
  43. package/dist/abis/vaultToken.abi.d.ts.map +0 -1
  44. package/dist/abis/vaultToken.abi.js +0 -1062
  45. package/dist/abis/vaultToken.abi.js.map +0 -1
  46. package/dist/abis/walletFactory.abi.d.ts +0 -20
  47. package/dist/abis/walletFactory.abi.d.ts.map +0 -1
  48. package/dist/abis/walletFactory.abi.js +0 -27
  49. package/dist/abis/walletFactory.abi.js.map +0 -1
  50. package/dist/constants.d.ts +0 -550
  51. package/dist/constants.d.ts.map +0 -1
  52. package/dist/constants.js +0 -1154
  53. package/dist/constants.js.map +0 -1
  54. package/dist/constants.test.d.ts +0 -2
  55. package/dist/constants.test.d.ts.map +0 -1
  56. package/dist/constants.test.js +0 -129
  57. package/dist/constants.test.js.map +0 -1
  58. package/dist/entities/Providers.d.ts +0 -54
  59. package/dist/entities/Providers.d.ts.map +0 -1
  60. package/dist/entities/Providers.js +0 -51
  61. package/dist/entities/Providers.js.map +0 -1
  62. package/dist/entities/Sodax.d.ts +0 -23
  63. package/dist/entities/Sodax.d.ts.map +0 -1
  64. package/dist/entities/Sodax.js +0 -29
  65. package/dist/entities/Sodax.js.map +0 -1
  66. package/dist/entities/Sodax.test.d.ts +0 -2
  67. package/dist/entities/Sodax.test.d.ts.map +0 -1
  68. package/dist/entities/Sodax.test.js +0 -392
  69. package/dist/entities/Sodax.test.js.map +0 -1
  70. package/dist/entities/cosmos/CW20Token.d.ts +0 -39
  71. package/dist/entities/cosmos/CW20Token.d.ts.map +0 -1
  72. package/dist/entities/cosmos/CW20Token.js +0 -65
  73. package/dist/entities/cosmos/CW20Token.js.map +0 -1
  74. package/dist/entities/cosmos/CWSpokeProvider.d.ts +0 -92
  75. package/dist/entities/cosmos/CWSpokeProvider.d.ts.map +0 -1
  76. package/dist/entities/cosmos/CWSpokeProvider.js +0 -143
  77. package/dist/entities/cosmos/CWSpokeProvider.js.map +0 -1
  78. package/dist/entities/cosmos/CosmosWalletProvider.d.ts +0 -28
  79. package/dist/entities/cosmos/CosmosWalletProvider.d.ts.map +0 -1
  80. package/dist/entities/cosmos/CosmosWalletProvider.js +0 -102
  81. package/dist/entities/cosmos/CosmosWalletProvider.js.map +0 -1
  82. package/dist/entities/cosmos/InjectiveWalletProvider.d.ts +0 -25
  83. package/dist/entities/cosmos/InjectiveWalletProvider.d.ts.map +0 -1
  84. package/dist/entities/cosmos/InjectiveWalletProvider.js +0 -76
  85. package/dist/entities/cosmos/InjectiveWalletProvider.js.map +0 -1
  86. package/dist/entities/icon/HanaWalletConnector.d.ts +0 -36
  87. package/dist/entities/icon/HanaWalletConnector.d.ts.map +0 -1
  88. package/dist/entities/icon/HanaWalletConnector.js +0 -92
  89. package/dist/entities/icon/HanaWalletConnector.js.map +0 -1
  90. package/dist/entities/icon/IconSpokeProvider.d.ts +0 -10
  91. package/dist/entities/icon/IconSpokeProvider.d.ts.map +0 -1
  92. package/dist/entities/icon/IconSpokeProvider.js +0 -12
  93. package/dist/entities/icon/IconSpokeProvider.js.map +0 -1
  94. package/dist/entities/icon/index.d.ts +0 -4
  95. package/dist/entities/icon/index.d.ts.map +0 -1
  96. package/dist/entities/icon/index.js +0 -4
  97. package/dist/entities/icon/index.js.map +0 -1
  98. package/dist/entities/icon/utils.d.ts +0 -3
  99. package/dist/entities/icon/utils.d.ts.map +0 -1
  100. package/dist/entities/icon/utils.js +0 -4
  101. package/dist/entities/icon/utils.js.map +0 -1
  102. package/dist/entities/index.d.ts +0 -7
  103. package/dist/entities/index.d.ts.map +0 -1
  104. package/dist/entities/index.js +0 -7
  105. package/dist/entities/index.js.map +0 -1
  106. package/dist/entities/solana/Configs.d.ts +0 -10
  107. package/dist/entities/solana/Configs.d.ts.map +0 -1
  108. package/dist/entities/solana/Configs.js +0 -50
  109. package/dist/entities/solana/Configs.js.map +0 -1
  110. package/dist/entities/solana/SolanaSpokeProvider.d.ts +0 -9
  111. package/dist/entities/solana/SolanaSpokeProvider.d.ts.map +0 -1
  112. package/dist/entities/solana/SolanaSpokeProvider.js +0 -9
  113. package/dist/entities/solana/SolanaSpokeProvider.js.map +0 -1
  114. package/dist/entities/solana/SolanaWalletProvider.d.ts +0 -20
  115. package/dist/entities/solana/SolanaWalletProvider.d.ts.map +0 -1
  116. package/dist/entities/solana/SolanaWalletProvider.js +0 -53
  117. package/dist/entities/solana/SolanaWalletProvider.js.map +0 -1
  118. package/dist/entities/solana/index.d.ts +0 -4
  119. package/dist/entities/solana/index.d.ts.map +0 -1
  120. package/dist/entities/solana/index.js +0 -4
  121. package/dist/entities/solana/index.js.map +0 -1
  122. package/dist/entities/solana/pda/pda.d.ts +0 -45
  123. package/dist/entities/solana/pda/pda.d.ts.map +0 -1
  124. package/dist/entities/solana/pda/pda.js +0 -44
  125. package/dist/entities/solana/pda/pda.js.map +0 -1
  126. package/dist/entities/solana/types/asset_manager.d.ts +0 -919
  127. package/dist/entities/solana/types/asset_manager.d.ts.map +0 -1
  128. package/dist/entities/solana/types/asset_manager.js +0 -2
  129. package/dist/entities/solana/types/asset_manager.js.map +0 -1
  130. package/dist/entities/solana/types/connection.d.ts +0 -446
  131. package/dist/entities/solana/types/connection.d.ts.map +0 -1
  132. package/dist/entities/solana/types/connection.js +0 -2
  133. package/dist/entities/solana/types/connection.js.map +0 -1
  134. package/dist/entities/solana/types/rate_limit_contract.d.ts +0 -348
  135. package/dist/entities/solana/types/rate_limit_contract.d.ts.map +0 -1
  136. package/dist/entities/solana/types/rate_limit_contract.js +0 -2
  137. package/dist/entities/solana/types/rate_limit_contract.js.map +0 -1
  138. package/dist/entities/solana/utils/utils.d.ts +0 -6
  139. package/dist/entities/solana/utils/utils.d.ts.map +0 -1
  140. package/dist/entities/solana/utils/utils.js +0 -18
  141. package/dist/entities/solana/utils/utils.js.map +0 -1
  142. package/dist/entities/stellar/StellarSpokeProvider.d.ts +0 -17
  143. package/dist/entities/stellar/StellarSpokeProvider.d.ts.map +0 -1
  144. package/dist/entities/stellar/StellarSpokeProvider.js +0 -125
  145. package/dist/entities/stellar/StellarSpokeProvider.js.map +0 -1
  146. package/dist/entities/sui/SuiSpokeProvider.d.ts +0 -35
  147. package/dist/entities/sui/SuiSpokeProvider.d.ts.map +0 -1
  148. package/dist/entities/sui/SuiSpokeProvider.js +0 -145
  149. package/dist/entities/sui/SuiSpokeProvider.js.map +0 -1
  150. package/dist/errors.d.ts +0 -2
  151. package/dist/errors.d.ts.map +0 -1
  152. package/dist/errors.js +0 -2
  153. package/dist/errors.js.map +0 -1
  154. package/dist/guards.d.ts +0 -25
  155. package/dist/guards.d.ts.map +0 -1
  156. package/dist/guards.js +0 -110
  157. package/dist/guards.js.map +0 -1
  158. package/dist/index.d.ts.map +0 -1
  159. package/dist/index.js +0 -10
  160. package/dist/index.js.map +0 -1
  161. package/dist/services/hub/EvmAssetManagerService.d.ts +0 -61
  162. package/dist/services/hub/EvmAssetManagerService.d.ts.map +0 -1
  163. package/dist/services/hub/EvmAssetManagerService.js +0 -103
  164. package/dist/services/hub/EvmAssetManagerService.js.map +0 -1
  165. package/dist/services/hub/EvmVaultTokenService.d.ts +0 -81
  166. package/dist/services/hub/EvmVaultTokenService.d.ts.map +0 -1
  167. package/dist/services/hub/EvmVaultTokenService.js +0 -161
  168. package/dist/services/hub/EvmVaultTokenService.js.map +0 -1
  169. package/dist/services/hub/EvmWalletAbstraction.d.ts +0 -9
  170. package/dist/services/hub/EvmWalletAbstraction.d.ts.map +0 -1
  171. package/dist/services/hub/EvmWalletAbstraction.js +0 -14
  172. package/dist/services/hub/EvmWalletAbstraction.js.map +0 -1
  173. package/dist/services/hub/index.d.ts +0 -4
  174. package/dist/services/hub/index.d.ts.map +0 -1
  175. package/dist/services/hub/index.js +0 -4
  176. package/dist/services/hub/index.js.map +0 -1
  177. package/dist/services/index.d.ts +0 -7
  178. package/dist/services/index.d.ts.map +0 -1
  179. package/dist/services/index.js +0 -7
  180. package/dist/services/index.js.map +0 -1
  181. package/dist/services/intentRelay/IntentRelayApiService.d.ts +0 -112
  182. package/dist/services/intentRelay/IntentRelayApiService.d.ts.map +0 -1
  183. package/dist/services/intentRelay/IntentRelayApiService.js +0 -160
  184. package/dist/services/intentRelay/IntentRelayApiService.js.map +0 -1
  185. package/dist/services/intentRelay/IntentRelayApiService.test.d.ts +0 -2
  186. package/dist/services/intentRelay/IntentRelayApiService.test.d.ts.map +0 -1
  187. package/dist/services/intentRelay/IntentRelayApiService.test.js +0 -134
  188. package/dist/services/intentRelay/IntentRelayApiService.test.js.map +0 -1
  189. package/dist/services/intentRelay/index.d.ts +0 -2
  190. package/dist/services/intentRelay/index.d.ts.map +0 -1
  191. package/dist/services/intentRelay/index.js +0 -2
  192. package/dist/services/intentRelay/index.js.map +0 -1
  193. package/dist/services/moneyMarket/MoneyMarketService.d.ts +0 -323
  194. package/dist/services/moneyMarket/MoneyMarketService.d.ts.map +0 -1
  195. package/dist/services/moneyMarket/MoneyMarketService.js +0 -612
  196. package/dist/services/moneyMarket/MoneyMarketService.js.map +0 -1
  197. package/dist/services/moneyMarket/MoneyMarketService.test.d.ts +0 -2
  198. package/dist/services/moneyMarket/MoneyMarketService.test.d.ts.map +0 -1
  199. package/dist/services/moneyMarket/MoneyMarketService.test.js +0 -262
  200. package/dist/services/moneyMarket/MoneyMarketService.test.js.map +0 -1
  201. package/dist/services/moneyMarket/index.d.ts +0 -2
  202. package/dist/services/moneyMarket/index.d.ts.map +0 -1
  203. package/dist/services/moneyMarket/index.js +0 -2
  204. package/dist/services/moneyMarket/index.js.map +0 -1
  205. package/dist/services/shared/Erc20Service.d.ts +0 -42
  206. package/dist/services/shared/Erc20Service.d.ts.map +0 -1
  207. package/dist/services/shared/Erc20Service.js +0 -108
  208. package/dist/services/shared/Erc20Service.js.map +0 -1
  209. package/dist/services/shared/index.d.ts +0 -2
  210. package/dist/services/shared/index.d.ts.map +0 -1
  211. package/dist/services/shared/index.js +0 -2
  212. package/dist/services/shared/index.js.map +0 -1
  213. package/dist/services/solver/EvmSolverService.d.ts +0 -125
  214. package/dist/services/solver/EvmSolverService.d.ts.map +0 -1
  215. package/dist/services/solver/EvmSolverService.js +0 -166
  216. package/dist/services/solver/EvmSolverService.js.map +0 -1
  217. package/dist/services/solver/SolverApiService.d.ts +0 -40
  218. package/dist/services/solver/SolverApiService.d.ts.map +0 -1
  219. package/dist/services/solver/SolverApiService.js +0 -157
  220. package/dist/services/solver/SolverApiService.js.map +0 -1
  221. package/dist/services/solver/SolverApiService.test.d.ts +0 -2
  222. package/dist/services/solver/SolverApiService.test.d.ts.map +0 -1
  223. package/dist/services/solver/SolverApiService.test.js +0 -181
  224. package/dist/services/solver/SolverApiService.test.js.map +0 -1
  225. package/dist/services/solver/SolverService.d.ts +0 -196
  226. package/dist/services/solver/SolverService.d.ts.map +0 -1
  227. package/dist/services/solver/SolverService.js +0 -329
  228. package/dist/services/solver/SolverService.js.map +0 -1
  229. package/dist/services/solver/SolverService.test.d.ts +0 -2
  230. package/dist/services/solver/SolverService.test.d.ts.map +0 -1
  231. package/dist/services/solver/SolverService.test.js +0 -439
  232. package/dist/services/solver/SolverService.test.js.map +0 -1
  233. package/dist/services/solver/index.d.ts +0 -3
  234. package/dist/services/solver/index.d.ts.map +0 -1
  235. package/dist/services/solver/index.js +0 -3
  236. package/dist/services/solver/index.js.map +0 -1
  237. package/dist/services/spoke/CWSpokeService.d.ts +0 -67
  238. package/dist/services/spoke/CWSpokeService.d.ts.map +0 -1
  239. package/dist/services/spoke/CWSpokeService.js +0 -75
  240. package/dist/services/spoke/CWSpokeService.js.map +0 -1
  241. package/dist/services/spoke/EvmSpokeService.d.ts +0 -62
  242. package/dist/services/spoke/EvmSpokeService.d.ts.map +0 -1
  243. package/dist/services/spoke/EvmSpokeService.js +0 -120
  244. package/dist/services/spoke/EvmSpokeService.js.map +0 -1
  245. package/dist/services/spoke/IconSpokeService.d.ts +0 -56
  246. package/dist/services/spoke/IconSpokeService.d.ts.map +0 -1
  247. package/dist/services/spoke/IconSpokeService.js +0 -124
  248. package/dist/services/spoke/IconSpokeService.js.map +0 -1
  249. package/dist/services/spoke/SolanaSpokeService.d.ts +0 -46
  250. package/dist/services/spoke/SolanaSpokeService.d.ts.map +0 -1
  251. package/dist/services/spoke/SolanaSpokeService.js +0 -170
  252. package/dist/services/spoke/SolanaSpokeService.js.map +0 -1
  253. package/dist/services/spoke/SpokeService.d.ts +0 -34
  254. package/dist/services/spoke/SpokeService.d.ts.map +0 -1
  255. package/dist/services/spoke/SpokeService.js +0 -102
  256. package/dist/services/spoke/SpokeService.js.map +0 -1
  257. package/dist/services/spoke/StellarSpokeService.d.ts +0 -35
  258. package/dist/services/spoke/StellarSpokeService.d.ts.map +0 -1
  259. package/dist/services/spoke/StellarSpokeService.js +0 -39
  260. package/dist/services/spoke/StellarSpokeService.js.map +0 -1
  261. package/dist/services/spoke/SuiSpokeService.d.ts +0 -69
  262. package/dist/services/spoke/SuiSpokeService.d.ts.map +0 -1
  263. package/dist/services/spoke/SuiSpokeService.js +0 -74
  264. package/dist/services/spoke/SuiSpokeService.js.map +0 -1
  265. package/dist/services/spoke/index.d.ts +0 -3
  266. package/dist/services/spoke/index.d.ts.map +0 -1
  267. package/dist/services/spoke/index.js +0 -3
  268. package/dist/services/spoke/index.js.map +0 -1
  269. package/dist/tests/services/hub/EvmAssetManagerService.test.d.ts +0 -2
  270. package/dist/tests/services/hub/EvmAssetManagerService.test.d.ts.map +0 -1
  271. package/dist/tests/services/hub/EvmAssetManagerService.test.js +0 -138
  272. package/dist/tests/services/hub/EvmAssetManagerService.test.js.map +0 -1
  273. package/dist/tests/services/hub/EvmMoneyMarketService.test.d.ts +0 -2
  274. package/dist/tests/services/hub/EvmMoneyMarketService.test.d.ts.map +0 -1
  275. package/dist/tests/services/hub/EvmMoneyMarketService.test.js +0 -121
  276. package/dist/tests/services/hub/EvmMoneyMarketService.test.js.map +0 -1
  277. package/dist/tests/services/hub/EvmVaultTokenService.test.d.ts +0 -2
  278. package/dist/tests/services/hub/EvmVaultTokenService.test.d.ts.map +0 -1
  279. package/dist/tests/services/hub/EvmVaultTokenService.test.js +0 -98
  280. package/dist/tests/services/hub/EvmVaultTokenService.test.js.map +0 -1
  281. package/dist/tests/services/spoke/EvmSpokeService.test.d.ts +0 -2
  282. package/dist/tests/services/spoke/EvmSpokeService.test.d.ts.map +0 -1
  283. package/dist/tests/services/spoke/EvmSpokeService.test.js +0 -198
  284. package/dist/tests/services/spoke/EvmSpokeService.test.js.map +0 -1
  285. package/dist/types.d.ts +0 -352
  286. package/dist/types.d.ts.map +0 -1
  287. package/dist/types.js +0 -30
  288. package/dist/types.js.map +0 -1
  289. package/dist/utils/evm-utils.d.ts +0 -10
  290. package/dist/utils/evm-utils.d.ts.map +0 -1
  291. package/dist/utils/evm-utils.js +0 -15
  292. package/dist/utils/evm-utils.js.map +0 -1
  293. package/dist/utils/index.d.ts +0 -3
  294. package/dist/utils/index.d.ts.map +0 -1
  295. package/dist/utils/index.js +0 -3
  296. package/dist/utils/index.js.map +0 -1
  297. package/dist/utils/shared-utils.d.ts +0 -20
  298. package/dist/utils/shared-utils.d.ts.map +0 -1
  299. package/dist/utils/shared-utils.js +0 -69
  300. package/dist/utils/shared-utils.js.map +0 -1
  301. package/dist/utils/shared-utils.test.d.ts +0 -2
  302. package/dist/utils/shared-utils.test.d.ts.map +0 -1
  303. package/dist/utils/shared-utils.test.js +0 -63
  304. 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":"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"}
@@ -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,181 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from 'vitest';
2
- import { getHubAssetInfo, IntentErrorCode, } from '../../index.js';
3
- import { SolverApiService } from './SolverApiService.js';
4
- import { ARBITRUM_MAINNET_CHAIN_ID, BSC_MAINNET_CHAIN_ID } from '@sodax/types';
5
- // Mock fetch
6
- const mockFetch = vi.fn();
7
- global.fetch = mockFetch;
8
- describe('SolverApiService', () => {
9
- const mockConfig = {
10
- solverApiEndpoint: 'https://api.example.com',
11
- intentsContract: '0x1234567890123456789012345678901234567890',
12
- };
13
- const bscEthToken = '0x2170Ed0880ac9A755fd29B2688956BD959F933F8';
14
- const bscEthHubTokenAsset = getHubAssetInfo(BSC_MAINNET_CHAIN_ID, bscEthToken);
15
- if (!bscEthHubTokenAsset) {
16
- throw new Error('BSC ETH token asset not found');
17
- }
18
- const arbWbtcToken = '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f';
19
- const arbWbtcHubTokenAsset = getHubAssetInfo(ARBITRUM_MAINNET_CHAIN_ID, arbWbtcToken);
20
- if (!arbWbtcHubTokenAsset) {
21
- throw new Error('BSC WBTC token asset not found');
22
- }
23
- beforeEach(() => {
24
- vi.clearAllMocks();
25
- });
26
- describe('getQuote', () => {
27
- const payload = {
28
- token_src: bscEthToken,
29
- token_src_blockchain_id: BSC_MAINNET_CHAIN_ID,
30
- token_dst: arbWbtcToken,
31
- token_dst_blockchain_id: ARBITRUM_MAINNET_CHAIN_ID,
32
- amount: 1000000000000000000n,
33
- quote_type: 'exact_input',
34
- };
35
- it('should return a successful quote response', async () => {
36
- const mockResponse = {
37
- quoted_amount: 2000000000000000000n,
38
- };
39
- mockFetch.mockResolvedValueOnce({
40
- ok: true,
41
- json: () => Promise.resolve(mockResponse),
42
- });
43
- const result = await SolverApiService.getQuote(payload, mockConfig);
44
- expect(result.ok).toBe(true);
45
- if (result.ok) {
46
- expect(result.value.quoted_amount).toBe(2000000000000000000n);
47
- }
48
- expect(mockFetch).toHaveBeenCalledWith('https://api.example.com/quote', expect.objectContaining({
49
- method: 'POST',
50
- headers: {
51
- 'Content-Type': 'application/json',
52
- },
53
- body: JSON.stringify({
54
- token_src: getHubAssetInfo(payload.token_src_blockchain_id, payload.token_src)?.asset ?? '',
55
- token_dst: getHubAssetInfo(payload.token_dst_blockchain_id, payload.token_dst)?.asset ?? '',
56
- amount: payload.amount.toString(),
57
- quote_type: payload.quote_type,
58
- }),
59
- }));
60
- });
61
- it('should handle API error response', async () => {
62
- const mockError = {
63
- detail: {
64
- code: IntentErrorCode.NO_PATH_FOUND,
65
- message: 'No path found',
66
- },
67
- };
68
- mockFetch.mockResolvedValueOnce({
69
- ok: false,
70
- json: () => Promise.resolve(mockError),
71
- });
72
- const result = await SolverApiService.getQuote(payload, mockConfig);
73
- expect(result.ok).toBe(false);
74
- if (!result.ok) {
75
- expect(result.error).toEqual(mockError);
76
- }
77
- });
78
- it('should handle network errors', async () => {
79
- mockFetch.mockRejectedValueOnce(new Error('Network error'));
80
- const result = await SolverApiService.getQuote(payload, mockConfig);
81
- expect(result.ok).toBe(false);
82
- if (!result.ok) {
83
- expect(result.error.detail.code).toBe(IntentErrorCode.UNKNOWN);
84
- }
85
- });
86
- });
87
- describe('postExecution', () => {
88
- const validRequest = {
89
- intent_tx_hash: '0x1234567890123456789012345678901234567890123456789012345678901234',
90
- quote_uuid: 'a0dd7652-b360-4123-ab2d-78cfbcd20c6b',
91
- };
92
- it('should successfully execute intent', async () => {
93
- const mockResponse = {
94
- output: {
95
- answer: 'OK',
96
- task_id: 'a0dd7652-b360-4123-ab2d-78cfbcd20c6b',
97
- },
98
- };
99
- mockFetch.mockResolvedValueOnce({
100
- ok: true,
101
- json: () => Promise.resolve(mockResponse),
102
- });
103
- const result = await SolverApiService.postExecution(validRequest, mockConfig);
104
- expect(result.ok).toBe(true);
105
- if (result.ok) {
106
- expect(result.value).toEqual(mockResponse);
107
- }
108
- expect(mockFetch).toHaveBeenCalledWith('https://api.example.com/execute', expect.objectContaining({
109
- method: 'POST',
110
- headers: {
111
- 'Content-Type': 'application/json',
112
- },
113
- body: JSON.stringify(validRequest),
114
- }));
115
- });
116
- it('should handle API error response', async () => {
117
- const mockError = {
118
- detail: {
119
- code: IntentErrorCode.QUOTE_NOT_FOUND,
120
- message: 'Quote not found',
121
- },
122
- };
123
- mockFetch.mockResolvedValueOnce({
124
- ok: false,
125
- json: () => Promise.resolve(mockError),
126
- });
127
- const result = await SolverApiService.postExecution(validRequest, mockConfig);
128
- expect(result.ok).toBe(false);
129
- if (!result.ok) {
130
- expect(result.error).toEqual(mockError);
131
- }
132
- });
133
- });
134
- describe('getStatus', () => {
135
- const validRequest = {
136
- intent_tx_hash: '0x1234567890123456789012345678901234567890123456789012345678901234',
137
- };
138
- it('should successfully get status', async () => {
139
- const mockResponse = {
140
- status: 'completed',
141
- result: {
142
- transaction_hash: '0x123',
143
- },
144
- };
145
- mockFetch.mockResolvedValueOnce({
146
- ok: true,
147
- json: () => Promise.resolve(mockResponse),
148
- });
149
- const result = await SolverApiService.getStatus(validRequest, mockConfig);
150
- expect(result.ok).toBe(true);
151
- if (result.ok) {
152
- expect(result.value).toEqual(mockResponse);
153
- }
154
- expect(mockFetch).toHaveBeenCalledWith('https://api.example.com/status', expect.objectContaining({
155
- method: 'POST',
156
- headers: {
157
- 'Content-Type': 'application/json',
158
- },
159
- body: JSON.stringify(validRequest),
160
- }));
161
- });
162
- it('should handle API error response', async () => {
163
- const mockError = {
164
- detail: {
165
- code: IntentErrorCode.QUOTE_NOT_FOUND,
166
- message: 'Quote not found',
167
- },
168
- };
169
- mockFetch.mockResolvedValueOnce({
170
- ok: false,
171
- json: () => Promise.resolve(mockError),
172
- });
173
- const result = await SolverApiService.getStatus(validRequest, mockConfig);
174
- expect(result.ok).toBe(false);
175
- if (!result.ok) {
176
- expect(result.error).toEqual(mockError);
177
- }
178
- });
179
- });
180
- });
181
- //# 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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"}