@shogun-sdk/intents-sdk 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (614) hide show
  1. package/README.md +0 -1
  2. package/dist/esm/auth/siwe.js +26 -0
  3. package/dist/esm/auth/siwe.js.map +1 -0
  4. package/dist/esm/chains.js +21 -8
  5. package/dist/esm/chains.js.map +1 -1
  6. package/dist/esm/constants.js +73 -35
  7. package/dist/esm/constants.js.map +1 -1
  8. package/dist/esm/core/evm/abi/single-chain-guard-limit.js +768 -0
  9. package/dist/esm/core/evm/abi/single-chain-guard-limit.js.map +1 -0
  10. package/dist/esm/core/evm/cancel-order.js +130 -0
  11. package/dist/esm/core/evm/cancel-order.js.map +1 -0
  12. package/dist/esm/core/evm/{viem-provider.js → chain-provider.js} +18 -3
  13. package/dist/esm/core/evm/chain-provider.js.map +1 -0
  14. package/dist/esm/core/evm/connectors/hyperevm.js +23 -0
  15. package/dist/esm/core/evm/connectors/hyperevm.js.map +1 -0
  16. package/dist/esm/core/evm/intent-provider.js +58 -8
  17. package/dist/esm/core/evm/intent-provider.js.map +1 -1
  18. package/dist/esm/core/evm/order-signature.js +15 -15
  19. package/dist/esm/core/evm/order-signature.js.map +1 -1
  20. package/dist/esm/core/evm/permit2.js +31 -3
  21. package/dist/esm/core/evm/permit2.js.map +1 -1
  22. package/dist/esm/core/evm/sdk.js +112 -78
  23. package/dist/esm/core/evm/sdk.js.map +1 -1
  24. package/dist/esm/core/evm/validator.js +52 -8
  25. package/dist/esm/core/evm/validator.js.map +1 -1
  26. package/dist/esm/core/orders/api/fetch.js +17 -0
  27. package/dist/esm/core/orders/api/fetch.js.map +1 -0
  28. package/dist/esm/core/orders/common.js +8 -0
  29. package/dist/esm/core/orders/common.js.map +1 -0
  30. package/dist/esm/core/orders/cross-chain.js +316 -0
  31. package/dist/esm/core/orders/cross-chain.js.map +1 -0
  32. package/dist/esm/core/orders/single-chain.js +185 -0
  33. package/dist/esm/core/orders/single-chain.js.map +1 -0
  34. package/dist/esm/core/sdk.js +77 -109
  35. package/dist/esm/core/sdk.js.map +1 -1
  36. package/dist/esm/core/solana/cancel-order.js +176 -0
  37. package/dist/esm/core/solana/cancel-order.js.map +1 -0
  38. package/dist/esm/core/solana/generated/{accounts → cross-chain/accounts}/adminSingleton.js +3 -1
  39. package/dist/esm/core/solana/generated/cross-chain/accounts/adminSingleton.js.map +1 -0
  40. package/dist/esm/core/solana/generated/{accounts → cross-chain/accounts}/guard.js +1 -1
  41. package/dist/esm/core/solana/generated/cross-chain/accounts/guard.js.map +1 -0
  42. package/dist/esm/core/solana/generated/cross-chain/accounts/index.js.map +1 -0
  43. package/dist/esm/core/solana/generated/cross-chain/accounts/order.js.map +1 -0
  44. package/dist/esm/core/solana/generated/cross-chain/errors/index.js.map +1 -0
  45. package/dist/esm/core/solana/generated/cross-chain/errors/sourceChainGuard.js.map +1 -0
  46. package/dist/esm/core/solana/generated/cross-chain/index.js.map +1 -0
  47. package/dist/esm/core/solana/generated/cross-chain/instructions/acceptAdmin.js +91 -0
  48. package/dist/esm/core/solana/generated/cross-chain/instructions/acceptAdmin.js.map +1 -0
  49. package/dist/esm/core/solana/generated/cross-chain/instructions/cancelOrder.js.map +1 -0
  50. package/dist/esm/core/solana/generated/cross-chain/instructions/claimTokens.js.map +1 -0
  51. package/dist/esm/core/solana/generated/cross-chain/instructions/collectProtocolFees.js.map +1 -0
  52. package/dist/esm/core/solana/generated/cross-chain/instructions/createGuard.js.map +1 -0
  53. package/dist/esm/core/solana/generated/cross-chain/instructions/createOrder.js.map +1 -0
  54. package/dist/esm/core/solana/generated/{instructions → cross-chain/instructions}/index.js +1 -0
  55. package/dist/esm/core/solana/generated/cross-chain/instructions/index.js.map +1 -0
  56. package/dist/esm/core/solana/generated/{instructions → cross-chain/instructions}/initialize.js +19 -1
  57. package/dist/esm/core/solana/generated/cross-chain/instructions/initialize.js.map +1 -0
  58. package/dist/esm/core/solana/generated/cross-chain/instructions/preStartOrderExecution.js.map +1 -0
  59. package/dist/esm/core/solana/generated/cross-chain/instructions/setAdmin.js.map +1 -0
  60. package/dist/esm/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.js.map +1 -0
  61. package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecution.js.map +1 -0
  62. package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.js.map +1 -0
  63. package/dist/esm/core/solana/generated/cross-chain/programs/index.js.map +1 -0
  64. package/dist/esm/core/solana/generated/{programs → cross-chain/programs}/sourceChainGuard.js +16 -12
  65. package/dist/esm/core/solana/generated/cross-chain/programs/sourceChainGuard.js.map +1 -0
  66. package/dist/esm/core/solana/generated/cross-chain/shared/index.js.map +1 -0
  67. package/dist/esm/core/solana/generated/cross-chain/types/adminUpdateStarted.js +18 -0
  68. package/dist/esm/core/solana/generated/cross-chain/types/adminUpdateStarted.js.map +1 -0
  69. package/dist/esm/core/solana/generated/cross-chain/types/adminUpdated.js.map +1 -0
  70. package/dist/esm/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.js.map +1 -0
  71. package/dist/esm/core/solana/generated/cross-chain/types/executionStarted.js.map +1 -0
  72. package/dist/esm/core/solana/generated/cross-chain/types/guardCreated.js.map +1 -0
  73. package/dist/esm/core/solana/generated/{types → cross-chain/types}/index.js +1 -0
  74. package/dist/esm/core/solana/generated/cross-chain/types/index.js.map +1 -0
  75. package/dist/esm/core/solana/generated/cross-chain/types/orderCancelled.js.map +1 -0
  76. package/dist/esm/core/solana/generated/cross-chain/types/orderCreated.js.map +1 -0
  77. package/dist/esm/core/solana/generated/cross-chain/types/orderFulfilled.js.map +1 -0
  78. package/dist/esm/core/solana/generated/cross-chain/types/tokenInSwapped.js.map +1 -0
  79. package/dist/esm/core/solana/generated/single-chain/accounts/adminSingleton.js +58 -0
  80. package/dist/esm/core/solana/generated/single-chain/accounts/adminSingleton.js.map +1 -0
  81. package/dist/esm/core/solana/generated/single-chain/accounts/dcaOrder.js +75 -0
  82. package/dist/esm/core/solana/generated/single-chain/accounts/dcaOrder.js.map +1 -0
  83. package/dist/esm/core/solana/generated/single-chain/accounts/guard.js +62 -0
  84. package/dist/esm/core/solana/generated/single-chain/accounts/guard.js.map +1 -0
  85. package/dist/esm/core/solana/generated/single-chain/accounts/index.js +12 -0
  86. package/dist/esm/core/solana/generated/single-chain/accounts/index.js.map +1 -0
  87. package/dist/esm/core/solana/generated/single-chain/accounts/limitOrder.js +65 -0
  88. package/dist/esm/core/solana/generated/single-chain/accounts/limitOrder.js.map +1 -0
  89. package/dist/esm/core/solana/generated/single-chain/errors/index.js +9 -0
  90. package/dist/esm/core/solana/generated/single-chain/errors/index.js.map +1 -0
  91. package/dist/esm/core/solana/generated/single-chain/errors/singleChainGuard.js +101 -0
  92. package/dist/esm/core/solana/generated/single-chain/errors/singleChainGuard.js.map +1 -0
  93. package/dist/esm/core/solana/generated/single-chain/index.js +13 -0
  94. package/dist/esm/core/solana/generated/single-chain/index.js.map +1 -0
  95. package/dist/esm/core/solana/generated/single-chain/instructions/acceptAdmin.js +91 -0
  96. package/dist/esm/core/solana/generated/single-chain/instructions/acceptAdmin.js.map +1 -0
  97. package/dist/esm/core/solana/generated/single-chain/instructions/cancelDcaOrder.js +91 -0
  98. package/dist/esm/core/solana/generated/single-chain/instructions/cancelDcaOrder.js.map +1 -0
  99. package/dist/esm/core/solana/generated/single-chain/instructions/cancelLimitOrder.js +91 -0
  100. package/dist/esm/core/solana/generated/single-chain/instructions/cancelLimitOrder.js.map +1 -0
  101. package/dist/esm/core/solana/generated/single-chain/instructions/collectProtocolFees.js +140 -0
  102. package/dist/esm/core/solana/generated/single-chain/instructions/collectProtocolFees.js.map +1 -0
  103. package/dist/esm/core/solana/generated/single-chain/instructions/createDcaOrder.js +188 -0
  104. package/dist/esm/core/solana/generated/single-chain/instructions/createDcaOrder.js.map +1 -0
  105. package/dist/esm/core/solana/generated/single-chain/instructions/createGuard.js +173 -0
  106. package/dist/esm/core/solana/generated/single-chain/instructions/createGuard.js.map +1 -0
  107. package/dist/esm/core/solana/generated/single-chain/instructions/createLimitOrder.js +184 -0
  108. package/dist/esm/core/solana/generated/single-chain/instructions/createLimitOrder.js.map +1 -0
  109. package/dist/esm/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.js +170 -0
  110. package/dist/esm/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.js.map +1 -0
  111. package/dist/esm/core/solana/generated/single-chain/instructions/fulfillLimitOrder.js +167 -0
  112. package/dist/esm/core/solana/generated/single-chain/instructions/fulfillLimitOrder.js.map +1 -0
  113. package/dist/esm/core/solana/generated/single-chain/instructions/index.js +20 -0
  114. package/dist/esm/core/solana/generated/single-chain/instructions/index.js.map +1 -0
  115. package/dist/esm/core/solana/generated/single-chain/instructions/initialize.js +127 -0
  116. package/dist/esm/core/solana/generated/single-chain/instructions/initialize.js.map +1 -0
  117. package/dist/esm/core/solana/generated/single-chain/instructions/setAdmin.js +98 -0
  118. package/dist/esm/core/solana/generated/single-chain/instructions/setAdmin.js.map +1 -0
  119. package/dist/esm/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.js +104 -0
  120. package/dist/esm/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.js.map +1 -0
  121. package/dist/esm/core/solana/generated/single-chain/programs/index.js +9 -0
  122. package/dist/esm/core/solana/generated/single-chain/programs/index.js.map +1 -0
  123. package/dist/esm/core/solana/generated/single-chain/programs/singleChainGuard.js +90 -0
  124. package/dist/esm/core/solana/generated/single-chain/programs/singleChainGuard.js.map +1 -0
  125. package/dist/esm/core/solana/generated/single-chain/shared/index.js +82 -0
  126. package/dist/esm/core/solana/generated/single-chain/shared/index.js.map +1 -0
  127. package/dist/esm/core/solana/generated/single-chain/types/adminUpdateStarted.js +18 -0
  128. package/dist/esm/core/solana/generated/single-chain/types/adminUpdateStarted.js.map +1 -0
  129. package/dist/esm/core/solana/generated/single-chain/types/adminUpdated.js +18 -0
  130. package/dist/esm/core/solana/generated/single-chain/types/adminUpdated.js.map +1 -0
  131. package/dist/esm/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.js +24 -0
  132. package/dist/esm/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.js.map +1 -0
  133. package/dist/esm/core/solana/generated/single-chain/types/dcaOrderCreated.js +42 -0
  134. package/dist/esm/core/solana/generated/single-chain/types/dcaOrderCreated.js.map +1 -0
  135. package/dist/esm/core/solana/generated/single-chain/types/dcaOrderFulfilled.js +18 -0
  136. package/dist/esm/core/solana/generated/single-chain/types/dcaOrderFulfilled.js.map +1 -0
  137. package/dist/esm/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.js +30 -0
  138. package/dist/esm/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.js.map +1 -0
  139. package/dist/esm/core/solana/generated/single-chain/types/guardCreated.js +26 -0
  140. package/dist/esm/core/solana/generated/single-chain/types/guardCreated.js.map +1 -0
  141. package/dist/esm/core/solana/generated/single-chain/types/index.js +18 -0
  142. package/dist/esm/core/solana/generated/single-chain/types/index.js.map +1 -0
  143. package/dist/esm/core/solana/generated/single-chain/types/limitOrderCreated.js +36 -0
  144. package/dist/esm/core/solana/generated/single-chain/types/limitOrderCreated.js.map +1 -0
  145. package/dist/esm/core/solana/generated/single-chain/types/limitOrderFulfilled.js +24 -0
  146. package/dist/esm/core/solana/generated/single-chain/types/limitOrderFulfilled.js.map +1 -0
  147. package/dist/esm/core/solana/generated/single-chain/types/orderCancelled.js +18 -0
  148. package/dist/esm/core/solana/generated/single-chain/types/orderCancelled.js.map +1 -0
  149. package/dist/esm/core/solana/order-instructions.js +89 -28
  150. package/dist/esm/core/solana/order-instructions.js.map +1 -1
  151. package/dist/esm/core/solana/sdk.js +104 -26
  152. package/dist/esm/core/solana/sdk.js.map +1 -1
  153. package/dist/esm/core/solana/utils.js +19 -0
  154. package/dist/esm/core/solana/utils.js.map +1 -0
  155. package/dist/esm/core/solana/validator.js +4 -1
  156. package/dist/esm/core/solana/validator.js.map +1 -1
  157. package/dist/esm/core/sui/cancel.js +36 -0
  158. package/dist/esm/core/sui/cancel.js.map +1 -0
  159. package/dist/esm/core/sui/order-transaction.js +10 -19
  160. package/dist/esm/core/sui/order-transaction.js.map +1 -1
  161. package/dist/esm/core/sui/sdk.js +67 -24
  162. package/dist/esm/core/sui/sdk.js.map +1 -1
  163. package/dist/esm/core/sui/validator.js +4 -1
  164. package/dist/esm/core/sui/validator.js.map +1 -1
  165. package/dist/esm/errors/index.js +0 -32
  166. package/dist/esm/errors/index.js.map +1 -1
  167. package/dist/esm/index.js +15 -6
  168. package/dist/esm/index.js.map +1 -1
  169. package/dist/esm/types/api.js +6 -1
  170. package/dist/esm/types/api.js.map +1 -1
  171. package/dist/esm/utils/base-validator.js +16 -4
  172. package/dist/esm/utils/base-validator.js.map +1 -1
  173. package/dist/esm/utils/defillama.js +12 -23
  174. package/dist/esm/utils/defillama.js.map +1 -1
  175. package/dist/esm/utils/order-validator.js +17 -11
  176. package/dist/esm/utils/order-validator.js.map +1 -1
  177. package/dist/esm/utils/parsers.js +8 -31
  178. package/dist/esm/utils/parsers.js.map +1 -1
  179. package/dist/esm/utils/quote/aftermath.js +15 -0
  180. package/dist/esm/utils/quote/aftermath.js.map +1 -0
  181. package/dist/esm/utils/quote/aggregator.js +254 -0
  182. package/dist/esm/utils/quote/aggregator.js.map +1 -0
  183. package/dist/esm/utils/quote/jupiter.js +31 -0
  184. package/dist/esm/utils/quote/jupiter.js.map +1 -0
  185. package/dist/esm/utils/quote/liquidswap.js +22 -0
  186. package/dist/esm/utils/quote/liquidswap.js.map +1 -0
  187. package/dist/esm/utils/quote/paraswap.js +67 -0
  188. package/dist/esm/utils/quote/paraswap.js.map +1 -0
  189. package/dist/esm/utils/quote/stablecoins-tokens.js +13 -0
  190. package/dist/esm/utils/quote/stablecoins-tokens.js.map +1 -0
  191. package/dist/types/auth/siwe.d.ts +13 -0
  192. package/dist/types/auth/siwe.d.ts.map +1 -0
  193. package/dist/types/chains.d.ts +11 -9
  194. package/dist/types/chains.d.ts.map +1 -1
  195. package/dist/types/constants.d.ts +29 -11
  196. package/dist/types/constants.d.ts.map +1 -1
  197. package/dist/types/core/evm/abi/single-chain-guard-limit.d.ts +596 -0
  198. package/dist/types/core/evm/abi/single-chain-guard-limit.d.ts.map +1 -0
  199. package/dist/types/core/evm/cancel-order.d.ts +28 -0
  200. package/dist/types/core/evm/cancel-order.d.ts.map +1 -0
  201. package/dist/types/core/evm/chain-provider.d.ts +62338 -0
  202. package/dist/types/core/evm/chain-provider.d.ts.map +1 -0
  203. package/dist/types/core/evm/connectors/hyperevm.d.ts +38 -0
  204. package/dist/types/core/evm/connectors/hyperevm.d.ts.map +1 -0
  205. package/dist/types/core/evm/intent-provider.d.ts +9 -6
  206. package/dist/types/core/evm/intent-provider.d.ts.map +1 -1
  207. package/dist/types/core/evm/order-signature.d.ts +9 -17
  208. package/dist/types/core/evm/order-signature.d.ts.map +1 -1
  209. package/dist/types/core/evm/permit2.d.ts +100 -4
  210. package/dist/types/core/evm/permit2.d.ts.map +1 -1
  211. package/dist/types/core/evm/sdk.d.ts +38 -27
  212. package/dist/types/core/evm/sdk.d.ts.map +1 -1
  213. package/dist/types/core/evm/validator.d.ts +8 -2
  214. package/dist/types/core/evm/validator.d.ts.map +1 -1
  215. package/dist/types/core/orders/api/fetch.d.ts +3 -0
  216. package/dist/types/core/orders/api/fetch.d.ts.map +1 -0
  217. package/dist/types/core/orders/common.d.ts +12 -0
  218. package/dist/types/core/orders/common.d.ts.map +1 -0
  219. package/dist/types/core/{order.d.ts → orders/cross-chain.d.ts} +36 -33
  220. package/dist/types/core/orders/cross-chain.d.ts.map +1 -0
  221. package/dist/types/core/orders/single-chain.d.ts +46 -0
  222. package/dist/types/core/orders/single-chain.d.ts.map +1 -0
  223. package/dist/types/core/sdk.d.ts +15 -78
  224. package/dist/types/core/sdk.d.ts.map +1 -1
  225. package/dist/types/core/solana/cancel-order.d.ts +18 -0
  226. package/dist/types/core/solana/cancel-order.d.ts.map +1 -0
  227. package/dist/types/core/solana/generated/{accounts → cross-chain/accounts}/adminSingleton.d.ts +5 -1
  228. package/dist/types/core/solana/generated/cross-chain/accounts/adminSingleton.d.ts.map +1 -0
  229. package/dist/types/core/solana/generated/{accounts → cross-chain/accounts}/guard.d.ts +1 -1
  230. package/dist/types/core/solana/generated/cross-chain/accounts/guard.d.ts.map +1 -0
  231. package/dist/types/core/solana/generated/cross-chain/accounts/index.d.ts.map +1 -0
  232. package/dist/types/core/solana/generated/{accounts → cross-chain/accounts}/order.d.ts +1 -1
  233. package/dist/types/core/solana/generated/cross-chain/accounts/order.d.ts.map +1 -0
  234. package/dist/types/core/solana/generated/cross-chain/errors/index.d.ts.map +1 -0
  235. package/dist/types/core/solana/generated/cross-chain/errors/sourceChainGuard.d.ts.map +1 -0
  236. package/dist/types/core/solana/generated/cross-chain/index.d.ts.map +1 -0
  237. package/dist/types/core/solana/generated/cross-chain/instructions/acceptAdmin.d.ts +56 -0
  238. package/dist/types/core/solana/generated/cross-chain/instructions/acceptAdmin.d.ts.map +1 -0
  239. package/dist/types/core/solana/generated/cross-chain/instructions/cancelOrder.d.ts.map +1 -0
  240. package/dist/types/core/solana/generated/{instructions → cross-chain/instructions}/claimTokens.d.ts +6 -6
  241. package/dist/types/core/solana/generated/cross-chain/instructions/claimTokens.d.ts.map +1 -0
  242. package/dist/types/core/solana/generated/{instructions → cross-chain/instructions}/collectProtocolFees.d.ts +3 -3
  243. package/dist/types/core/solana/generated/cross-chain/instructions/collectProtocolFees.d.ts.map +1 -0
  244. package/dist/types/core/solana/generated/cross-chain/instructions/createGuard.d.ts.map +1 -0
  245. package/dist/types/core/solana/generated/cross-chain/instructions/createOrder.d.ts.map +1 -0
  246. package/dist/types/core/solana/generated/{instructions → cross-chain/instructions}/index.d.ts +1 -0
  247. package/dist/types/core/solana/generated/cross-chain/instructions/index.d.ts.map +1 -0
  248. package/dist/types/core/solana/generated/{instructions → cross-chain/instructions}/initialize.d.ts +30 -7
  249. package/dist/types/core/solana/generated/cross-chain/instructions/initialize.d.ts.map +1 -0
  250. package/dist/types/core/solana/generated/cross-chain/instructions/preStartOrderExecution.d.ts.map +1 -0
  251. package/dist/types/core/solana/generated/{instructions → cross-chain/instructions}/setAdmin.d.ts +3 -3
  252. package/dist/types/core/solana/generated/cross-chain/instructions/setAdmin.d.ts.map +1 -0
  253. package/dist/types/core/solana/generated/{instructions → cross-chain/instructions}/setAuctioneerPubKey.d.ts +3 -3
  254. package/dist/types/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.d.ts.map +1 -0
  255. package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecution.d.ts.map +1 -0
  256. package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.d.ts.map +1 -0
  257. package/dist/types/core/solana/generated/cross-chain/programs/index.d.ts.map +1 -0
  258. package/dist/types/core/solana/generated/{programs → cross-chain/programs}/sourceChainGuard.d.ts +17 -14
  259. package/dist/types/core/solana/generated/cross-chain/programs/sourceChainGuard.d.ts.map +1 -0
  260. package/dist/types/core/solana/generated/cross-chain/shared/index.d.ts.map +1 -0
  261. package/dist/types/core/solana/generated/cross-chain/types/adminUpdateStarted.d.ts +16 -0
  262. package/dist/types/core/solana/generated/cross-chain/types/adminUpdateStarted.d.ts.map +1 -0
  263. package/dist/types/core/solana/generated/cross-chain/types/adminUpdated.d.ts.map +1 -0
  264. package/dist/types/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.d.ts.map +1 -0
  265. package/dist/types/core/solana/generated/cross-chain/types/executionStarted.d.ts.map +1 -0
  266. package/dist/types/core/solana/generated/cross-chain/types/guardCreated.d.ts.map +1 -0
  267. package/dist/types/core/solana/generated/{types → cross-chain/types}/index.d.ts +1 -0
  268. package/dist/types/core/solana/generated/cross-chain/types/index.d.ts.map +1 -0
  269. package/dist/types/core/solana/generated/cross-chain/types/orderCancelled.d.ts.map +1 -0
  270. package/dist/types/core/solana/generated/cross-chain/types/orderCreated.d.ts.map +1 -0
  271. package/dist/types/core/solana/generated/cross-chain/types/orderFulfilled.d.ts.map +1 -0
  272. package/dist/types/core/solana/generated/cross-chain/types/tokenInSwapped.d.ts.map +1 -0
  273. package/dist/types/core/solana/generated/single-chain/accounts/adminSingleton.d.ts +40 -0
  274. package/dist/types/core/solana/generated/single-chain/accounts/adminSingleton.d.ts.map +1 -0
  275. package/dist/types/core/solana/generated/single-chain/accounts/dcaOrder.d.ts +99 -0
  276. package/dist/types/core/solana/generated/single-chain/accounts/dcaOrder.d.ts.map +1 -0
  277. package/dist/types/core/solana/generated/single-chain/accounts/guard.d.ts +48 -0
  278. package/dist/types/core/solana/generated/single-chain/accounts/guard.d.ts.map +1 -0
  279. package/dist/types/core/solana/generated/single-chain/accounts/index.d.ts +12 -0
  280. package/dist/types/core/solana/generated/single-chain/accounts/index.d.ts.map +1 -0
  281. package/dist/types/core/solana/generated/single-chain/accounts/limitOrder.d.ts +79 -0
  282. package/dist/types/core/solana/generated/single-chain/accounts/limitOrder.d.ts.map +1 -0
  283. package/dist/types/core/solana/generated/single-chain/errors/index.d.ts +9 -0
  284. package/dist/types/core/solana/generated/single-chain/errors/index.d.ts.map +1 -0
  285. package/dist/types/core/solana/generated/single-chain/errors/singleChainGuard.d.ts +71 -0
  286. package/dist/types/core/solana/generated/single-chain/errors/singleChainGuard.d.ts.map +1 -0
  287. package/dist/types/core/solana/generated/single-chain/index.d.ts +13 -0
  288. package/dist/types/core/solana/generated/single-chain/index.d.ts.map +1 -0
  289. package/dist/types/core/solana/generated/single-chain/instructions/acceptAdmin.d.ts +56 -0
  290. package/dist/types/core/solana/generated/single-chain/instructions/acceptAdmin.d.ts.map +1 -0
  291. package/dist/types/core/solana/generated/single-chain/instructions/cancelDcaOrder.d.ts +72 -0
  292. package/dist/types/core/solana/generated/single-chain/instructions/cancelDcaOrder.d.ts.map +1 -0
  293. package/dist/types/core/solana/generated/single-chain/instructions/cancelLimitOrder.d.ts +72 -0
  294. package/dist/types/core/solana/generated/single-chain/instructions/cancelLimitOrder.d.ts.map +1 -0
  295. package/dist/types/core/solana/generated/single-chain/instructions/collectProtocolFees.d.ts +91 -0
  296. package/dist/types/core/solana/generated/single-chain/instructions/collectProtocolFees.d.ts.map +1 -0
  297. package/dist/types/core/solana/generated/single-chain/instructions/createDcaOrder.d.ts +134 -0
  298. package/dist/types/core/solana/generated/single-chain/instructions/createDcaOrder.d.ts.map +1 -0
  299. package/dist/types/core/solana/generated/single-chain/instructions/createGuard.d.ts +107 -0
  300. package/dist/types/core/solana/generated/single-chain/instructions/createGuard.d.ts.map +1 -0
  301. package/dist/types/core/solana/generated/single-chain/instructions/createLimitOrder.d.ts +126 -0
  302. package/dist/types/core/solana/generated/single-chain/instructions/createLimitOrder.d.ts.map +1 -0
  303. package/dist/types/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.d.ts +179 -0
  304. package/dist/types/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.d.ts.map +1 -0
  305. package/dist/types/core/solana/generated/single-chain/instructions/fulfillLimitOrder.d.ts +179 -0
  306. package/dist/types/core/solana/generated/single-chain/instructions/fulfillLimitOrder.d.ts.map +1 -0
  307. package/dist/types/core/solana/generated/single-chain/instructions/index.d.ts +20 -0
  308. package/dist/types/core/solana/generated/single-chain/instructions/index.d.ts.map +1 -0
  309. package/dist/types/core/solana/generated/single-chain/instructions/initialize.d.ts +86 -0
  310. package/dist/types/core/solana/generated/single-chain/instructions/initialize.d.ts.map +1 -0
  311. package/dist/types/core/solana/generated/single-chain/instructions/setAdmin.d.ts +61 -0
  312. package/dist/types/core/solana/generated/single-chain/instructions/setAdmin.d.ts.map +1 -0
  313. package/dist/types/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.d.ts +68 -0
  314. package/dist/types/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.d.ts.map +1 -0
  315. package/dist/types/core/solana/generated/single-chain/programs/index.d.ts +9 -0
  316. package/dist/types/core/solana/generated/single-chain/programs/index.d.ts.map +1 -0
  317. package/dist/types/core/solana/generated/single-chain/programs/singleChainGuard.d.ts +63 -0
  318. package/dist/types/core/solana/generated/single-chain/programs/singleChainGuard.d.ts.map +1 -0
  319. package/dist/types/core/solana/generated/single-chain/shared/index.d.ts +52 -0
  320. package/dist/types/core/solana/generated/single-chain/shared/index.d.ts.map +1 -0
  321. package/dist/types/core/solana/generated/single-chain/types/adminUpdateStarted.d.ts +16 -0
  322. package/dist/types/core/solana/generated/single-chain/types/adminUpdateStarted.d.ts.map +1 -0
  323. package/dist/types/core/solana/generated/single-chain/types/adminUpdated.d.ts +16 -0
  324. package/dist/types/core/solana/generated/single-chain/types/adminUpdated.d.ts.map +1 -0
  325. package/dist/types/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.d.ts +17 -0
  326. package/dist/types/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.d.ts.map +1 -0
  327. package/dist/types/core/solana/generated/single-chain/types/dcaOrderCreated.d.ts +38 -0
  328. package/dist/types/core/solana/generated/single-chain/types/dcaOrderCreated.d.ts.map +1 -0
  329. package/dist/types/core/solana/generated/single-chain/types/dcaOrderFulfilled.d.ts +16 -0
  330. package/dist/types/core/solana/generated/single-chain/types/dcaOrderFulfilled.d.ts.map +1 -0
  331. package/dist/types/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.d.ts +26 -0
  332. package/dist/types/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.d.ts.map +1 -0
  333. package/dist/types/core/solana/generated/single-chain/types/guardCreated.d.ts +18 -0
  334. package/dist/types/core/solana/generated/single-chain/types/guardCreated.d.ts.map +1 -0
  335. package/dist/types/core/solana/generated/single-chain/types/index.d.ts +18 -0
  336. package/dist/types/core/solana/generated/single-chain/types/index.d.ts.map +1 -0
  337. package/dist/types/core/solana/generated/single-chain/types/limitOrderCreated.d.ts +32 -0
  338. package/dist/types/core/solana/generated/single-chain/types/limitOrderCreated.d.ts.map +1 -0
  339. package/dist/types/core/solana/generated/single-chain/types/limitOrderFulfilled.d.ts +20 -0
  340. package/dist/types/core/solana/generated/single-chain/types/limitOrderFulfilled.d.ts.map +1 -0
  341. package/dist/types/core/solana/generated/single-chain/types/orderCancelled.d.ts +16 -0
  342. package/dist/types/core/solana/generated/single-chain/types/orderCancelled.d.ts.map +1 -0
  343. package/dist/types/core/solana/order-instructions.d.ts +14 -15
  344. package/dist/types/core/solana/order-instructions.d.ts.map +1 -1
  345. package/dist/types/core/solana/sdk.d.ts +12 -4
  346. package/dist/types/core/solana/sdk.d.ts.map +1 -1
  347. package/dist/types/core/solana/utils.d.ts +6 -0
  348. package/dist/types/core/solana/utils.d.ts.map +1 -0
  349. package/dist/types/core/solana/validator.d.ts +2 -1
  350. package/dist/types/core/solana/validator.d.ts.map +1 -1
  351. package/dist/types/core/sui/cancel.d.ts +3 -0
  352. package/dist/types/core/sui/cancel.d.ts.map +1 -0
  353. package/dist/types/core/sui/order-transaction.d.ts +2 -7
  354. package/dist/types/core/sui/order-transaction.d.ts.map +1 -1
  355. package/dist/types/core/sui/sdk.d.ts +10 -4
  356. package/dist/types/core/sui/sdk.d.ts.map +1 -1
  357. package/dist/types/core/sui/validator.d.ts +2 -1
  358. package/dist/types/core/sui/validator.d.ts.map +1 -1
  359. package/dist/types/errors/index.d.ts +0 -15
  360. package/dist/types/errors/index.d.ts.map +1 -1
  361. package/dist/types/index.d.ts +19 -8
  362. package/dist/types/index.d.ts.map +1 -1
  363. package/dist/types/types/api.d.ts +59 -2
  364. package/dist/types/types/api.d.ts.map +1 -1
  365. package/dist/types/types/intent.d.ts +33 -57
  366. package/dist/types/types/intent.d.ts.map +1 -1
  367. package/dist/types/utils/base-validator.d.ts +15 -4
  368. package/dist/types/utils/base-validator.d.ts.map +1 -1
  369. package/dist/types/utils/defillama.d.ts +1 -1
  370. package/dist/types/utils/defillama.d.ts.map +1 -1
  371. package/dist/types/utils/order-validator.d.ts +20 -11
  372. package/dist/types/utils/order-validator.d.ts.map +1 -1
  373. package/dist/types/utils/parsers.d.ts +0 -13
  374. package/dist/types/utils/parsers.d.ts.map +1 -1
  375. package/dist/types/utils/quote/aftermath.d.ts +9 -0
  376. package/dist/types/utils/quote/aftermath.d.ts.map +1 -0
  377. package/dist/types/utils/quote/aggregator.d.ts +64 -0
  378. package/dist/types/utils/quote/aggregator.d.ts.map +1 -0
  379. package/dist/types/utils/quote/jupiter.d.ts +16 -0
  380. package/dist/types/utils/quote/jupiter.d.ts.map +1 -0
  381. package/dist/types/utils/quote/liquidswap.d.ts +16 -0
  382. package/dist/types/utils/quote/liquidswap.d.ts.map +1 -0
  383. package/dist/types/utils/quote/paraswap.d.ts +23 -0
  384. package/dist/types/utils/quote/paraswap.d.ts.map +1 -0
  385. package/dist/types/utils/quote/stablecoins-tokens.d.ts +11 -0
  386. package/dist/types/utils/quote/stablecoins-tokens.d.ts.map +1 -0
  387. package/package.json +14 -2
  388. package/src/auth/siwe.ts +41 -0
  389. package/src/chains.ts +21 -10
  390. package/src/constants.ts +86 -38
  391. package/src/core/evm/abi/single-chain-guard-limit.ts +767 -0
  392. package/src/core/evm/cancel-order.ts +163 -0
  393. package/src/core/evm/{viem-provider.ts → chain-provider.ts} +18 -2
  394. package/src/core/evm/connectors/hyperevm.ts +23 -0
  395. package/src/core/evm/intent-provider.ts +71 -12
  396. package/src/core/evm/order-signature.ts +25 -38
  397. package/src/core/evm/permit2.ts +82 -12
  398. package/src/core/evm/sdk.ts +165 -88
  399. package/src/core/evm/validator.ts +73 -11
  400. package/src/core/orders/api/fetch.ts +21 -0
  401. package/src/core/orders/common.ts +19 -0
  402. package/src/core/orders/cross-chain.ts +323 -0
  403. package/src/core/orders/single-chain.ts +174 -0
  404. package/src/core/sdk.ts +104 -137
  405. package/src/core/solana/cancel-order.ts +264 -0
  406. package/src/core/solana/generated/{accounts → cross-chain/accounts}/adminSingleton.ts +15 -9
  407. package/src/core/solana/generated/{accounts → cross-chain/accounts}/guard.ts +10 -10
  408. package/src/core/solana/generated/{accounts → cross-chain/accounts}/order.ts +8 -8
  409. package/src/core/solana/generated/cross-chain/instructions/acceptAdmin.ts +200 -0
  410. package/src/core/solana/generated/{instructions → cross-chain/instructions}/claimTokens.ts +10 -10
  411. package/src/core/solana/generated/{instructions → cross-chain/instructions}/collectProtocolFees.ts +8 -8
  412. package/src/core/solana/generated/{instructions → cross-chain/instructions}/createGuard.ts +5 -5
  413. package/src/core/solana/generated/{instructions → cross-chain/instructions}/createOrder.ts +5 -5
  414. package/src/core/solana/generated/{instructions → cross-chain/instructions}/index.ts +1 -0
  415. package/src/core/solana/generated/{instructions → cross-chain/instructions}/initialize.ts +104 -12
  416. package/src/core/solana/generated/{instructions → cross-chain/instructions}/setAdmin.ts +8 -8
  417. package/src/core/solana/generated/{instructions → cross-chain/instructions}/setAuctioneerPubKey.ts +8 -8
  418. package/src/core/solana/generated/{programs → cross-chain/programs}/sourceChainGuard.ts +16 -2
  419. package/src/core/solana/generated/{shared → cross-chain/shared}/index.ts +2 -2
  420. package/src/core/solana/generated/cross-chain/types/adminUpdateStarted.ts +35 -0
  421. package/src/core/solana/generated/{types → cross-chain/types}/index.ts +1 -0
  422. package/src/core/solana/generated/single-chain/accounts/adminSingleton.ts +142 -0
  423. package/src/core/solana/generated/single-chain/accounts/dcaOrder.ts +222 -0
  424. package/src/core/solana/generated/single-chain/accounts/guard.ts +156 -0
  425. package/src/core/solana/generated/single-chain/accounts/index.ts +12 -0
  426. package/src/core/solana/generated/single-chain/accounts/limitOrder.ts +192 -0
  427. package/src/core/solana/generated/single-chain/errors/index.ts +9 -0
  428. package/src/core/solana/generated/single-chain/errors/singleChainGuard.ts +140 -0
  429. package/src/core/solana/generated/single-chain/index.ts +13 -0
  430. package/src/core/solana/generated/single-chain/instructions/acceptAdmin.ts +200 -0
  431. package/src/core/solana/generated/single-chain/instructions/cancelDcaOrder.ts +251 -0
  432. package/src/core/solana/generated/single-chain/instructions/cancelLimitOrder.ts +254 -0
  433. package/src/core/solana/generated/single-chain/instructions/collectProtocolFees.ts +373 -0
  434. package/src/core/solana/generated/single-chain/instructions/createDcaOrder.ts +500 -0
  435. package/src/core/solana/generated/single-chain/instructions/createGuard.ts +437 -0
  436. package/src/core/solana/generated/single-chain/instructions/createLimitOrder.ts +491 -0
  437. package/src/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.ts +538 -0
  438. package/src/core/solana/generated/single-chain/instructions/fulfillLimitOrder.ts +532 -0
  439. package/src/core/solana/generated/single-chain/instructions/index.ts +20 -0
  440. package/src/core/solana/generated/single-chain/instructions/initialize.ts +323 -0
  441. package/src/core/solana/generated/single-chain/instructions/setAdmin.ts +211 -0
  442. package/src/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.ts +241 -0
  443. package/src/core/solana/generated/single-chain/programs/index.ts +9 -0
  444. package/src/core/solana/generated/single-chain/programs/singleChainGuard.ts +247 -0
  445. package/src/core/solana/generated/single-chain/shared/index.ts +124 -0
  446. package/src/core/solana/generated/single-chain/types/adminUpdateStarted.ts +35 -0
  447. package/src/core/solana/generated/single-chain/types/adminUpdated.ts +35 -0
  448. package/src/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.ts +44 -0
  449. package/src/core/solana/generated/single-chain/types/dcaOrderCreated.ts +89 -0
  450. package/src/core/solana/generated/single-chain/types/dcaOrderFulfilled.ts +35 -0
  451. package/src/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.ts +63 -0
  452. package/src/core/solana/generated/single-chain/types/guardCreated.ts +47 -0
  453. package/src/core/solana/generated/single-chain/types/index.ts +18 -0
  454. package/src/core/solana/generated/single-chain/types/limitOrderCreated.ts +77 -0
  455. package/src/core/solana/generated/single-chain/types/limitOrderFulfilled.ts +46 -0
  456. package/src/core/solana/generated/single-chain/types/orderCancelled.ts +35 -0
  457. package/src/core/solana/order-instructions.ts +166 -52
  458. package/src/core/solana/sdk.ts +153 -31
  459. package/src/core/solana/utils.ts +31 -0
  460. package/src/core/solana/validator.ts +5 -1
  461. package/src/core/sui/cancel.ts +44 -0
  462. package/src/core/sui/order-transaction.ts +14 -31
  463. package/src/core/sui/sdk.ts +93 -30
  464. package/src/core/sui/validator.ts +5 -1
  465. package/src/errors/index.ts +1 -37
  466. package/src/index.ts +35 -14
  467. package/src/types/api.ts +73 -4
  468. package/src/types/intent.ts +42 -63
  469. package/src/utils/base-validator.ts +26 -8
  470. package/src/utils/defillama.ts +15 -30
  471. package/src/utils/order-validator.ts +21 -23
  472. package/src/utils/parsers.ts +10 -35
  473. package/src/utils/quote/aftermath.ts +24 -0
  474. package/src/utils/quote/aggregator.ts +331 -0
  475. package/src/utils/quote/jupiter.ts +39 -0
  476. package/src/utils/quote/liquidswap.ts +42 -0
  477. package/src/utils/quote/paraswap.ts +87 -0
  478. package/src/utils/quote/stablecoins-tokens.ts +22 -0
  479. package/dist/esm/core/evm/viem-provider.js.map +0 -1
  480. package/dist/esm/core/order.js +0 -190
  481. package/dist/esm/core/order.js.map +0 -1
  482. package/dist/esm/core/solana/generated/accounts/adminSingleton.js.map +0 -1
  483. package/dist/esm/core/solana/generated/accounts/guard.js.map +0 -1
  484. package/dist/esm/core/solana/generated/accounts/index.js.map +0 -1
  485. package/dist/esm/core/solana/generated/accounts/order.js.map +0 -1
  486. package/dist/esm/core/solana/generated/errors/index.js.map +0 -1
  487. package/dist/esm/core/solana/generated/errors/sourceChainGuard.js.map +0 -1
  488. package/dist/esm/core/solana/generated/index.js.map +0 -1
  489. package/dist/esm/core/solana/generated/instructions/cancelOrder.js.map +0 -1
  490. package/dist/esm/core/solana/generated/instructions/claimTokens.js.map +0 -1
  491. package/dist/esm/core/solana/generated/instructions/collectProtocolFees.js.map +0 -1
  492. package/dist/esm/core/solana/generated/instructions/createGuard.js.map +0 -1
  493. package/dist/esm/core/solana/generated/instructions/createOrder.js.map +0 -1
  494. package/dist/esm/core/solana/generated/instructions/index.js.map +0 -1
  495. package/dist/esm/core/solana/generated/instructions/initialize.js.map +0 -1
  496. package/dist/esm/core/solana/generated/instructions/preStartOrderExecution.js.map +0 -1
  497. package/dist/esm/core/solana/generated/instructions/setAdmin.js.map +0 -1
  498. package/dist/esm/core/solana/generated/instructions/setAuctioneerPubKey.js.map +0 -1
  499. package/dist/esm/core/solana/generated/instructions/startOrderExecution.js.map +0 -1
  500. package/dist/esm/core/solana/generated/instructions/startOrderExecutionAfterSwap.js.map +0 -1
  501. package/dist/esm/core/solana/generated/programs/index.js.map +0 -1
  502. package/dist/esm/core/solana/generated/programs/sourceChainGuard.js.map +0 -1
  503. package/dist/esm/core/solana/generated/shared/index.js.map +0 -1
  504. package/dist/esm/core/solana/generated/types/adminUpdated.js.map +0 -1
  505. package/dist/esm/core/solana/generated/types/auctioneerPubkeyUpdated.js.map +0 -1
  506. package/dist/esm/core/solana/generated/types/executionStarted.js.map +0 -1
  507. package/dist/esm/core/solana/generated/types/guardCreated.js.map +0 -1
  508. package/dist/esm/core/solana/generated/types/index.js.map +0 -1
  509. package/dist/esm/core/solana/generated/types/orderCancelled.js.map +0 -1
  510. package/dist/esm/core/solana/generated/types/orderCreated.js.map +0 -1
  511. package/dist/esm/core/solana/generated/types/orderFulfilled.js.map +0 -1
  512. package/dist/esm/core/solana/generated/types/tokenInSwapped.js.map +0 -1
  513. package/dist/esm/types/user-order.js +0 -16
  514. package/dist/esm/types/user-order.js.map +0 -1
  515. package/dist/types/core/evm/viem-provider.d.ts +0 -19304
  516. package/dist/types/core/evm/viem-provider.d.ts.map +0 -1
  517. package/dist/types/core/order.d.ts.map +0 -1
  518. package/dist/types/core/solana/generated/accounts/adminSingleton.d.ts.map +0 -1
  519. package/dist/types/core/solana/generated/accounts/guard.d.ts.map +0 -1
  520. package/dist/types/core/solana/generated/accounts/index.d.ts.map +0 -1
  521. package/dist/types/core/solana/generated/accounts/order.d.ts.map +0 -1
  522. package/dist/types/core/solana/generated/errors/index.d.ts.map +0 -1
  523. package/dist/types/core/solana/generated/errors/sourceChainGuard.d.ts.map +0 -1
  524. package/dist/types/core/solana/generated/index.d.ts.map +0 -1
  525. package/dist/types/core/solana/generated/instructions/cancelOrder.d.ts.map +0 -1
  526. package/dist/types/core/solana/generated/instructions/claimTokens.d.ts.map +0 -1
  527. package/dist/types/core/solana/generated/instructions/collectProtocolFees.d.ts.map +0 -1
  528. package/dist/types/core/solana/generated/instructions/createGuard.d.ts.map +0 -1
  529. package/dist/types/core/solana/generated/instructions/createOrder.d.ts.map +0 -1
  530. package/dist/types/core/solana/generated/instructions/index.d.ts.map +0 -1
  531. package/dist/types/core/solana/generated/instructions/initialize.d.ts.map +0 -1
  532. package/dist/types/core/solana/generated/instructions/preStartOrderExecution.d.ts.map +0 -1
  533. package/dist/types/core/solana/generated/instructions/setAdmin.d.ts.map +0 -1
  534. package/dist/types/core/solana/generated/instructions/setAuctioneerPubKey.d.ts.map +0 -1
  535. package/dist/types/core/solana/generated/instructions/startOrderExecution.d.ts.map +0 -1
  536. package/dist/types/core/solana/generated/instructions/startOrderExecutionAfterSwap.d.ts.map +0 -1
  537. package/dist/types/core/solana/generated/programs/index.d.ts.map +0 -1
  538. package/dist/types/core/solana/generated/programs/sourceChainGuard.d.ts.map +0 -1
  539. package/dist/types/core/solana/generated/shared/index.d.ts.map +0 -1
  540. package/dist/types/core/solana/generated/types/adminUpdated.d.ts.map +0 -1
  541. package/dist/types/core/solana/generated/types/auctioneerPubkeyUpdated.d.ts.map +0 -1
  542. package/dist/types/core/solana/generated/types/executionStarted.d.ts.map +0 -1
  543. package/dist/types/core/solana/generated/types/guardCreated.d.ts.map +0 -1
  544. package/dist/types/core/solana/generated/types/index.d.ts.map +0 -1
  545. package/dist/types/core/solana/generated/types/orderCancelled.d.ts.map +0 -1
  546. package/dist/types/core/solana/generated/types/orderCreated.d.ts.map +0 -1
  547. package/dist/types/core/solana/generated/types/orderFulfilled.d.ts.map +0 -1
  548. package/dist/types/core/solana/generated/types/tokenInSwapped.d.ts.map +0 -1
  549. package/dist/types/types/user-order.d.ts +0 -37
  550. package/dist/types/types/user-order.d.ts.map +0 -1
  551. package/src/core/order.ts +0 -186
  552. package/src/types/user-order.ts +0 -74
  553. package/dist/esm/core/solana/generated/{accounts → cross-chain/accounts}/index.js +0 -0
  554. package/dist/esm/core/solana/generated/{accounts → cross-chain/accounts}/order.js +0 -0
  555. package/dist/esm/core/solana/generated/{errors → cross-chain/errors}/index.js +0 -0
  556. package/dist/esm/core/solana/generated/{errors → cross-chain/errors}/sourceChainGuard.js +0 -0
  557. package/dist/esm/core/solana/generated/{index.js → cross-chain/index.js} +0 -0
  558. package/dist/esm/core/solana/generated/{instructions → cross-chain/instructions}/cancelOrder.js +0 -0
  559. package/dist/esm/core/solana/generated/{instructions → cross-chain/instructions}/claimTokens.js +0 -0
  560. package/dist/esm/core/solana/generated/{instructions → cross-chain/instructions}/collectProtocolFees.js +0 -0
  561. package/dist/esm/core/solana/generated/{instructions → cross-chain/instructions}/createGuard.js +0 -0
  562. package/dist/esm/core/solana/generated/{instructions → cross-chain/instructions}/createOrder.js +0 -0
  563. package/dist/esm/core/solana/generated/{instructions → cross-chain/instructions}/preStartOrderExecution.js +0 -0
  564. package/dist/esm/core/solana/generated/{instructions → cross-chain/instructions}/setAdmin.js +0 -0
  565. package/dist/esm/core/solana/generated/{instructions → cross-chain/instructions}/setAuctioneerPubKey.js +0 -0
  566. package/dist/esm/core/solana/generated/{instructions → cross-chain/instructions}/startOrderExecution.js +0 -0
  567. package/dist/esm/core/solana/generated/{instructions → cross-chain/instructions}/startOrderExecutionAfterSwap.js +0 -0
  568. package/dist/esm/core/solana/generated/{programs → cross-chain/programs}/index.js +0 -0
  569. package/dist/esm/core/solana/generated/{shared → cross-chain/shared}/index.js +0 -0
  570. package/dist/esm/core/solana/generated/{types → cross-chain/types}/adminUpdated.js +0 -0
  571. package/dist/esm/core/solana/generated/{types → cross-chain/types}/auctioneerPubkeyUpdated.js +0 -0
  572. package/dist/esm/core/solana/generated/{types → cross-chain/types}/executionStarted.js +0 -0
  573. package/dist/esm/core/solana/generated/{types → cross-chain/types}/guardCreated.js +0 -0
  574. package/dist/esm/core/solana/generated/{types → cross-chain/types}/orderCancelled.js +0 -0
  575. package/dist/esm/core/solana/generated/{types → cross-chain/types}/orderCreated.js +0 -0
  576. package/dist/esm/core/solana/generated/{types → cross-chain/types}/orderFulfilled.js +0 -0
  577. package/dist/esm/core/solana/generated/{types → cross-chain/types}/tokenInSwapped.js +0 -0
  578. package/dist/types/core/solana/generated/{accounts → cross-chain/accounts}/index.d.ts +0 -0
  579. package/dist/types/core/solana/generated/{errors → cross-chain/errors}/index.d.ts +0 -0
  580. package/dist/types/core/solana/generated/{errors → cross-chain/errors}/sourceChainGuard.d.ts +0 -0
  581. package/dist/types/core/solana/generated/{index.d.ts → cross-chain/index.d.ts} +0 -0
  582. package/dist/types/core/solana/generated/{instructions → cross-chain/instructions}/cancelOrder.d.ts +0 -0
  583. package/dist/types/core/solana/generated/{instructions → cross-chain/instructions}/createGuard.d.ts +0 -0
  584. package/dist/types/core/solana/generated/{instructions → cross-chain/instructions}/createOrder.d.ts +0 -0
  585. package/dist/types/core/solana/generated/{instructions → cross-chain/instructions}/preStartOrderExecution.d.ts +0 -0
  586. package/dist/types/core/solana/generated/{instructions → cross-chain/instructions}/startOrderExecution.d.ts +0 -0
  587. package/dist/types/core/solana/generated/{instructions → cross-chain/instructions}/startOrderExecutionAfterSwap.d.ts +0 -0
  588. package/dist/types/core/solana/generated/{programs → cross-chain/programs}/index.d.ts +0 -0
  589. package/dist/types/core/solana/generated/{shared → cross-chain/shared}/index.d.ts +0 -0
  590. package/dist/types/core/solana/generated/{types → cross-chain/types}/adminUpdated.d.ts +0 -0
  591. package/dist/types/core/solana/generated/{types → cross-chain/types}/auctioneerPubkeyUpdated.d.ts +0 -0
  592. package/dist/types/core/solana/generated/{types → cross-chain/types}/executionStarted.d.ts +0 -0
  593. package/dist/types/core/solana/generated/{types → cross-chain/types}/guardCreated.d.ts +0 -0
  594. package/dist/types/core/solana/generated/{types → cross-chain/types}/orderCancelled.d.ts +0 -0
  595. package/dist/types/core/solana/generated/{types → cross-chain/types}/orderCreated.d.ts +0 -0
  596. package/dist/types/core/solana/generated/{types → cross-chain/types}/orderFulfilled.d.ts +0 -0
  597. package/dist/types/core/solana/generated/{types → cross-chain/types}/tokenInSwapped.d.ts +0 -0
  598. package/src/core/solana/generated/{accounts → cross-chain/accounts}/index.ts +0 -0
  599. package/src/core/solana/generated/{errors → cross-chain/errors}/index.ts +0 -0
  600. package/src/core/solana/generated/{errors → cross-chain/errors}/sourceChainGuard.ts +0 -0
  601. package/src/core/solana/generated/{index.ts → cross-chain/index.ts} +0 -0
  602. package/src/core/solana/generated/{instructions → cross-chain/instructions}/cancelOrder.ts +4 -4
  603. package/src/core/solana/generated/{instructions → cross-chain/instructions}/preStartOrderExecution.ts +4 -4
  604. package/src/core/solana/generated/{instructions → cross-chain/instructions}/startOrderExecution.ts +4 -4
  605. package/src/core/solana/generated/{instructions → cross-chain/instructions}/startOrderExecutionAfterSwap.ts +4 -4
  606. package/src/core/solana/generated/{programs → cross-chain/programs}/index.ts +0 -0
  607. package/src/core/solana/generated/{types → cross-chain/types}/adminUpdated.ts +4 -4
  608. package/src/core/solana/generated/{types → cross-chain/types}/auctioneerPubkeyUpdated.ts +4 -4
  609. package/src/core/solana/generated/{types → cross-chain/types}/executionStarted.ts +4 -4
  610. package/src/core/solana/generated/{types → cross-chain/types}/guardCreated.ts +4 -4
  611. package/src/core/solana/generated/{types → cross-chain/types}/orderCancelled.ts +4 -4
  612. package/src/core/solana/generated/{types → cross-chain/types}/orderCreated.ts +4 -4
  613. package/src/core/solana/generated/{types → cross-chain/types}/orderFulfilled.ts +4 -4
  614. package/src/core/solana/generated/{types → cross-chain/types}/tokenInSwapped.ts +4 -4
@@ -1,15 +1,10 @@
1
1
  import { ChainID, type SupportedChain } from '../chains.js';
2
- import {
3
- isNativeTokenEvmAddress,
4
- NATIVE_SOLANA_TOKEN_ADDRESS,
5
- REDUCTION_FACTOR,
6
- STABLECOIN_DECIMALS,
7
- WRAPPED_SOL_MINT_ADDRESS,
8
- } from '../constants.js';
9
- import { CalculateAmountError } from '../errors/index.js';
2
+ import { NATIVE_EVM_ETH_ADDRESSES, NATIVE_SOLANA_TOKEN_ADDRESS, WRAPPED_SOL_MINT_ADDRESS } from '../constants.js';
10
3
  import { Parsers } from './parsers.js';
4
+ import { QuoteProvider } from './quote/aggregator.js';
11
5
 
12
6
  const TOKEN_PRICE_BASE_URL: string = 'https://coins.llama.fi/prices/current/';
7
+ const STABLECOIN_DECIMALS = 6; // USDC/USDT typically use 6 decimals
13
8
 
14
9
  /**
15
10
  * Response structure from DefiLlama API for token prices
@@ -42,6 +37,7 @@ export const chainIdToDefiLlamaChainMap = {
42
37
  [ChainID.Arbitrum]: 'arbitrum',
43
38
  [ChainID.Base]: 'base',
44
39
  [ChainID.Optimism]: 'optimism',
40
+ [ChainID.Hyperliquid]: 'hyperliquid',
45
41
  [ChainID.Solana]: 'solana',
46
42
  [ChainID.Sui]: 'sui',
47
43
  } as const;
@@ -52,9 +48,6 @@ export const chainIdToDefiLlamaChainMap = {
52
48
  */
53
49
  export const createDefiLlamaCoinKey = (chainId: ChainID, tokenAddress: string): string => {
54
50
  const chainName = chainIdToDefiLlamaChainMap[chainId];
55
- if (!chainName) {
56
- throw new CalculateAmountError(`Unsupported chain ID for DefiLlama: ${chainId}`);
57
- }
58
51
 
59
52
  return `${chainName}:${toDefiLlamaToken(tokenAddress)}`;
60
53
  };
@@ -71,7 +64,7 @@ export const getCoinFromResponse = (
71
64
  const coin = response.coins[key];
72
65
 
73
66
  if (!coin) {
74
- throw new CalculateAmountError(`DefiLlama coin not found for ${key}`);
67
+ throw new Error(`DefiLlama coin not found for ${key}`);
75
68
  }
76
69
 
77
70
  return coin;
@@ -96,6 +89,12 @@ function toDefiLlamaToken(tokenAddress: string): string {
96
89
  return tokenAddress;
97
90
  }
98
91
 
92
+ function isNativeTokenEvmAddress(tokenAddress: string): boolean {
93
+ const normalizedAddress = tokenAddress.toLowerCase();
94
+
95
+ return NATIVE_EVM_ETH_ADDRESSES.some((addr) => addr.toLowerCase() === normalizedAddress);
96
+ }
97
+
99
98
  /**
100
99
  * Builds a comma-separated query string for DefiLlama API token requests
101
100
  *
@@ -104,8 +103,6 @@ function toDefiLlamaToken(tokenAddress: string): string {
104
103
  *
105
104
  * @param tokens - Array of [ChainID, token address] tuples to query
106
105
  * @returns Comma-separated string of DefiLlama coin keys
107
- *
108
- * @throws {CalculateAmountError} When any chain ID is not supported by DefiLlama
109
106
  */
110
107
  function buildTokensQueryString(tokens: Array<[ChainID, string]>): string {
111
108
  return tokens.map(([chainId, tokenAddress]) => createDefiLlamaCoinKey(chainId, tokenAddress)).join(',');
@@ -116,7 +113,6 @@ function buildTokensQueryString(tokens: Array<[ChainID, string]>): string {
116
113
  *
117
114
  * @param tokens Array of [ChainID, Token Address] tuples
118
115
  * @returns Promise resolving to DefiLlama tokens response
119
- * @throws {CalculateAmountError} If the request fails or response is invalid
120
116
  */
121
117
  export async function getTokensData(tokens: Array<[ChainID, string]>): Promise<DefiLlamaTokensResponse> {
122
118
  const tokensStr = buildTokensQueryString(tokens);
@@ -129,13 +125,9 @@ export async function getTokensData(tokens: Array<[ChainID, string]>): Promise<D
129
125
  },
130
126
  });
131
127
 
132
- if (!response.ok) {
133
- throw new CalculateAmountError(`Failed to fetch token prices: ${response.status} ${response.statusText}`);
134
- }
135
-
136
- const data: DefiLlamaTokensResponse = await response.json();
137
- return data;
128
+ return response.json();
138
129
  }
130
+
139
131
  export async function calculateAmounts({
140
132
  srcChainId,
141
133
  tokenIn,
@@ -155,21 +147,14 @@ export async function calculateAmounts({
155
147
  [destChainId, tokenOut],
156
148
  ]);
157
149
 
158
- // Get token data for input token
159
150
  const tokenInData = getCoinFromResponse(tokensResponse, srcChainId, tokenIn);
160
- if (!tokenInData) {
161
- throw new CalculateAmountError(`Token ${tokenIn} for chain ${srcChainId} not found in DefiLlama response`);
162
- }
163
151
 
164
- // Get token data for output token
165
152
  const tokenOutData = getCoinFromResponse(tokensResponse, destChainId, tokenOut);
166
- if (!tokenOutData) {
167
- throw new CalculateAmountError(`Token ${tokenOut} for chain ${destChainId} not found in DefiLlama response`);
168
- }
169
153
 
170
154
  // Calculate 80% of the amount_in value as amount_out_min and min_stablecoins_amount
171
155
  const tokenInUsdAmount = Parsers.bigintToFloat(amountIn, tokenInData.decimals) * tokenInData.price;
172
- const amountInUsdReduced = tokenInUsdAmount * REDUCTION_FACTOR;
156
+ const reductionFactor = QuoteProvider.calculateWeightedReductionFactorForUsd(tokenInUsdAmount);
157
+ const amountInUsdReduced = tokenInUsdAmount * reductionFactor;
173
158
  const amountOutReduced = amountInUsdReduced / tokenOutData.price;
174
159
 
175
160
  const amountOut = Parsers.floatToBigint(amountOutReduced, tokenOutData.decimals);
@@ -1,6 +1,7 @@
1
1
  import { ChainType, chainIdToChainTypeMap, type SupportedChain } from '../chains.js';
2
2
  import { EvmValidator } from '../core/evm/validator.js';
3
- import type { OrderInput } from '../core/order.js';
3
+ import type { CreateCrossChainOrderParams } from '../core/orders/cross-chain.js';
4
+ import type { CreateSingleChainOrderParams } from '../core/orders/single-chain.js';
4
5
  import { SolanaValidator } from '../core/solana/validator.js';
5
6
  import { SuiValidator } from '../core/sui/validator.js';
6
7
  import { ValidationError } from '../errors/index.js';
@@ -21,19 +22,16 @@ export interface IDeadlineValidator {
21
22
  isValidDeadline(deadline: number): boolean;
22
23
  }
23
24
 
24
- export interface ICrossChainValidator {
25
- isValidCrossChain(sourceChainId: SupportedChain, destinationChainId: SupportedChain): boolean;
26
- }
27
-
28
25
  export interface IChainValidator extends IAddressValidator, ITokenValidator, IAmountValidator {
29
- validateSourceChain(order: OrderInput): Promise<void>;
30
- validateDestinationChain(order: OrderInput): void;
26
+ validateSourceChain(order: CreateCrossChainOrderParams & { user: string }): Promise<void>;
27
+ validateDestinationChain(order: CreateCrossChainOrderParams): void;
28
+ validateSingleChainOrder(order: CreateSingleChainOrderParams & { user: string }): Promise<void>;
31
29
  }
32
30
 
33
31
  /**
34
32
  * CommonValidator - Handles validations shared across chains
35
33
  */
36
- export class CommonValidator implements IDeadlineValidator, ICrossChainValidator {
34
+ export class CommonValidator implements IDeadlineValidator {
37
35
  isValidDeadline(deadline: number): boolean {
38
36
  return deadline > Math.floor(Date.now() / 1000);
39
37
  }
@@ -43,16 +41,6 @@ export class CommonValidator implements IDeadlineValidator, ICrossChainValidator
43
41
  throw new ValidationError('Deadline must be in the future');
44
42
  }
45
43
  }
46
-
47
- isValidCrossChain(sourceChainId: SupportedChain, destinationChainId: SupportedChain): boolean {
48
- return sourceChainId !== destinationChainId;
49
- }
50
-
51
- validateCrossChain(sourceChainId: SupportedChain, destinationChainId: SupportedChain): void {
52
- if (!this.isValidCrossChain(sourceChainId, destinationChainId)) {
53
- throw new ValidationError('Source and destination chains cannot be the same');
54
- }
55
- }
56
44
  }
57
45
 
58
46
  export class ValidatorFactory {
@@ -84,15 +72,13 @@ export class ValidatorFactory {
84
72
  }
85
73
  }
86
74
 
87
- export class OrderValidator {
75
+ export class CrossChainOrderValidator {
88
76
  private readonly commonValidator = new CommonValidator();
89
77
 
90
- async validateOrder(order: OrderInput): Promise<void> {
78
+ async validateOrder(order: CreateCrossChainOrderParams & { user: string }): Promise<void> {
91
79
  const sourceValidator = ValidatorFactory.getValidatorForChain(order.sourceChainId);
92
80
 
93
- await sourceValidator.validateSourceChain(order);
94
-
95
- // this.commonValidator.validateCrossChain(order.sourceChainId, order.destinationChainId);
81
+ await sourceValidator.validateSourceChain({ ...order, user: order.user });
96
82
 
97
83
  const destinationValidator = ValidatorFactory.getValidatorForChain(order.destinationChainId);
98
84
 
@@ -101,3 +87,15 @@ export class OrderValidator {
101
87
  this.commonValidator.validateDeadline(order.deadline);
102
88
  }
103
89
  }
90
+
91
+ export class SingleChainOrderValidator {
92
+ private readonly commonValidator = new CommonValidator();
93
+
94
+ async validateOrder(order: CreateSingleChainOrderParams & { user: string }): Promise<void> {
95
+ this.commonValidator.validateDeadline(order.deadline);
96
+
97
+ const chainValidator = ValidatorFactory.getValidatorForChain(order.chainId);
98
+
99
+ chainValidator.validateSingleChainOrder(order);
100
+ }
101
+ }
@@ -1,55 +1,30 @@
1
1
  /* eslint-disable @typescript-eslint/no-namespace */
2
2
  import { formatUnits, parseUnits } from 'viem';
3
- import { CalculateAmountError } from '../errors/index.js';
4
3
 
5
4
  export namespace Parsers {
6
5
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
6
  export function bigIntReplacer(_key: string, value: any): any {
8
- return typeof value === 'bigint' ? value.toString() : value;
7
+ if (typeof value === 'bigint') {
8
+ return value.toString();
9
+ }
10
+
11
+ if (typeof value === 'string' && /^\d+n$/.test(value)) {
12
+ return value.slice(0, -1);
13
+ }
14
+
15
+ return value;
9
16
  }
10
17
 
11
- /**
12
- * Converts a bigint amount to a floating point USD value
13
- * @param amount Amount in token's smallest unit
14
- * @param decimals Number of decimal places for the token
15
- * @returns USD value as number
16
- */
17
18
  export function bigintToFloat(amount: bigint, decimals: number): number {
18
19
  const formatted = formatUnits(amount, decimals);
19
20
  const result = parseFloat(formatted);
20
21
 
21
- if (!Number.isFinite(result)) {
22
- throw new CalculateAmountError(`Conversion resulted in invalid number: ${formatted}`);
23
- }
24
-
25
22
  return result;
26
23
  }
27
24
 
28
- /**
29
- * Converts a floating point USD value to bigint amount
30
- * Uses viem's parseUnits for consistency and reliability
31
- * @param usdValue USD value as number
32
- * @param decimals Number of decimal places for the token
33
- * @returns Amount in token's smallest unit
34
- */
35
25
  export function floatToBigint(usdValue: number, decimals: number): bigint {
36
- if (!Number.isFinite(usdValue) || usdValue < 0) {
37
- throw new CalculateAmountError(`Invalid USD value: ${usdValue}`);
38
- }
39
-
40
- if (decimals < 0 || decimals > 77) {
41
- throw new CalculateAmountError(`Invalid decimals: ${decimals}`);
42
- }
43
-
44
- // Convert to fixed-precision string to avoid floating point issues
45
26
  const valueString = usdValue.toFixed(decimals);
46
27
 
47
- try {
48
- return parseUnits(valueString, decimals);
49
- } catch (error) {
50
- throw new CalculateAmountError(
51
- `Failed to convert ${usdValue} to bigint with ${decimals} decimals: ${error instanceof Error ? error.message : 'Unknown error'}`,
52
- );
53
- }
28
+ return parseUnits(valueString, decimals);
54
29
  }
55
30
  }
@@ -0,0 +1,24 @@
1
+ import { Aftermath } from 'aftermath-ts-sdk';
2
+
3
+ export type AfterMathQuoteParams = {
4
+ amountIn: bigint;
5
+ tokenIn: string;
6
+ tokenOut: string;
7
+ };
8
+ export class AftermathQuoteProvider {
9
+ public async getQuote(params: AfterMathQuoteParams) {
10
+ const afSdk = new Aftermath('MAINNET');
11
+
12
+ await afSdk.init();
13
+
14
+ const router = afSdk.Router();
15
+
16
+ const quote = await router.getCompleteTradeRouteGivenAmountIn({
17
+ coinInAmount: params.amountIn,
18
+ coinInType: params.tokenIn,
19
+ coinOutType: params.tokenOut,
20
+ });
21
+
22
+ return quote;
23
+ }
24
+ }
@@ -0,0 +1,331 @@
1
+ import { ChainID, isEvmChain, type SupportedEvmChain } from '../../chains.js';
2
+ import { JupiterQuoteProvider } from './jupiter.js';
3
+ import { type QuoteResponse as JupiterQuoteResponse } from '@jup-ag/api';
4
+ import { ParaswapQuoteProvider, type SwapEstimateResult } from './paraswap.js';
5
+ import { CROSS_CHAIN_TOKENS } from './stablecoins-tokens.js';
6
+ import { AftermathQuoteProvider } from './aftermath.js';
7
+ import type { RouterCompleteTradeRoute } from 'aftermath-ts-sdk';
8
+ import { calculateAmounts } from '../defillama.js';
9
+ import { LiquidSwapQuoteProvider, type LiquidSwapQuoteResponse } from './liquidswap.js';
10
+
11
+ type SingleChainQuoteParams = {
12
+ chainId: ChainID;
13
+ amount: bigint;
14
+ tokenIn: string;
15
+ tokenOut: string;
16
+ slippageBps?: number;
17
+ };
18
+
19
+ export type RouteProvider = 'paraswap' | 'jupiter' | 'aftermath' | 'liquidswap';
20
+
21
+ export type Quote = {
22
+ amountIn: bigint;
23
+ amountOut: bigint;
24
+ amountOutUsd: number;
25
+ amountInUsd: number;
26
+ slippage: number;
27
+ priceImpact: number;
28
+ provider: RouteProvider;
29
+ rawQuote: any;
30
+ };
31
+
32
+ export type QuoteParams = {
33
+ sourceChainId: ChainID;
34
+ destChainId: ChainID;
35
+ amount: bigint;
36
+ tokenIn: string;
37
+ tokenOut: string;
38
+ };
39
+
40
+ export type QuoteResponse = {
41
+ amountInUsd: number;
42
+ estimatedAmountInAsMinStablecoinAmount: bigint;
43
+
44
+ estimatedAmountOut: bigint;
45
+ estimatedAmountOutUsd: number;
46
+
47
+ estimatedAmountOutReduced: bigint;
48
+ estimatedAmountOutUsdReduced: number;
49
+ };
50
+
51
+ export class QuoteProvider {
52
+ private static readonly DEFAULT_BRIDGE_TOKEN = 'USDC';
53
+ private static readonly DEFAULT_BRIDGE_TOKEN_DECIMALS = 6;
54
+
55
+ public static async getQuoteFromDefillama(params: QuoteParams): Promise<QuoteResponse> {
56
+ const defillamaQuote = await calculateAmounts({
57
+ amountIn: params.amount,
58
+ tokenIn: params.tokenIn,
59
+ tokenOut: params.tokenOut,
60
+ destChainId: params.destChainId,
61
+ srcChainId: params.sourceChainId,
62
+ });
63
+
64
+ return {
65
+ amountInUsd: 0,
66
+ estimatedAmountOutUsd: 0,
67
+ estimatedAmountOutUsdReduced: 0,
68
+
69
+ estimatedAmountInAsMinStablecoinAmount: defillamaQuote.minStablecoinsAmount,
70
+ estimatedAmountOut: defillamaQuote.amountOut,
71
+ estimatedAmountOutReduced: defillamaQuote.amountOut,
72
+ };
73
+ }
74
+
75
+ public static async getQuoteWithDefillamaFallback(params: QuoteParams): Promise<QuoteResponse> {
76
+ try {
77
+ const quote = await this.getQuoteFromRouters(params);
78
+ return quote;
79
+ } catch (e) {
80
+ const quote = await this.getQuoteFromDefillama(params);
81
+ return quote;
82
+ }
83
+ }
84
+
85
+ public static async getQuote(params: QuoteParams): Promise<QuoteResponse> {
86
+ return this.getQuoteWithDefillamaFallback(params);
87
+ }
88
+
89
+ private static async getQuoteFromRouters(params: QuoteParams): Promise<QuoteResponse> {
90
+ const bridgeTokenSymbol = QuoteProvider.DEFAULT_BRIDGE_TOKEN;
91
+
92
+ const sourceBridgeToken = CROSS_CHAIN_TOKENS[bridgeTokenSymbol]?.[params.sourceChainId]!;
93
+ const destBridgeToken = CROSS_CHAIN_TOKENS[bridgeTokenSymbol]?.[params.destChainId]!;
94
+
95
+ const sourceSingleChainQuoteParams: SingleChainQuoteParams = {
96
+ chainId: params.sourceChainId,
97
+ amount: params.amount,
98
+ tokenIn: params.tokenIn,
99
+ tokenOut: sourceBridgeToken,
100
+ };
101
+
102
+ const sourceQuote = await this.getSingleChainQuote(sourceSingleChainQuoteParams);
103
+
104
+ const destSingleChainQuoteParams: SingleChainQuoteParams = {
105
+ chainId: params.destChainId,
106
+ amount: sourceQuote.amountOut,
107
+ tokenIn: destBridgeToken,
108
+ tokenOut: params.tokenOut,
109
+ };
110
+
111
+ const destQuote = await this.getSingleChainQuote(destSingleChainQuoteParams);
112
+
113
+ // Use weighted reduction instead of fixed percentage
114
+ const weightedReductionFactor = this.calculateWeightedReductionFactorForUsd(destQuote.amountOutUsd);
115
+
116
+ const estimatedAmountOutReduced = BigInt(Math.floor(Number(destQuote.amountOut) * weightedReductionFactor));
117
+ const estimatedAmountOutUsdReduced = destQuote.amountOutUsd * weightedReductionFactor;
118
+
119
+ const reducedAmountInUsd = this.calculateWeightedReductionFactorForUsd(sourceQuote.amountInUsd);
120
+ const estimatedAmountInAsMinStablecoinAmount = BigInt(
121
+ Math.floor(reducedAmountInUsd * 10 ** this.DEFAULT_BRIDGE_TOKEN_DECIMALS),
122
+ );
123
+
124
+ return {
125
+ estimatedAmountOut: destQuote.amountOut,
126
+ estimatedAmountOutUsd: destQuote.amountOutUsd,
127
+ amountInUsd: sourceQuote.amountInUsd,
128
+ estimatedAmountInAsMinStablecoinAmount,
129
+ estimatedAmountOutReduced,
130
+ estimatedAmountOutUsdReduced,
131
+ };
132
+ }
133
+
134
+ public static async getSingleChainQuote(params: SingleChainQuoteParams): Promise<Quote> {
135
+ if (params.tokenIn.toLowerCase() === params.tokenOut.toLowerCase()) {
136
+ let amountUsd = 0;
137
+
138
+ if (params.tokenIn.toLowerCase() === CROSS_CHAIN_TOKENS.USDC![params.chainId].toLowerCase()) {
139
+ amountUsd = Number(params.amount) / 10 ** this.DEFAULT_BRIDGE_TOKEN_DECIMALS;
140
+ }
141
+
142
+ return {
143
+ amountIn: params.amount,
144
+ amountOut: params.amount,
145
+ amountOutUsd: amountUsd,
146
+ amountInUsd: amountUsd,
147
+ slippage: 0,
148
+ priceImpact: 0,
149
+ provider: getProviderNameByChainId(params.chainId),
150
+ rawQuote: null,
151
+ };
152
+ }
153
+
154
+ if (params.chainId === ChainID.Hyperliquid) {
155
+ const liquidSwapQuote = await QuoteProvider.getLiquidSwapQuote(params);
156
+ return QuoteProvider.transformLiquidSwapQuote(liquidSwapQuote);
157
+ }
158
+
159
+ if (params.chainId === ChainID.Solana) {
160
+ const jupiterQuote = await QuoteProvider.getJupiterQuote(params);
161
+ return QuoteProvider.transformJupiterQuote(jupiterQuote);
162
+ }
163
+
164
+ if (params.chainId === ChainID.Sui) {
165
+ const quote = await QuoteProvider.getAftermathQuote(params);
166
+ return QuoteProvider.transformAftermathQuote({ quote, request: params });
167
+ }
168
+
169
+ if (isEvmChain(params.chainId)) {
170
+ const paraswapQuote = await QuoteProvider.getParaswapQuote(params);
171
+ return QuoteProvider.transformParaswapQuote(paraswapQuote);
172
+ }
173
+
174
+ throw new Error(`Unsupported chain for quote: ${params.chainId}`);
175
+ }
176
+
177
+ static transformLiquidSwapQuote(liquidSwapQuote: LiquidSwapQuoteResponse): Quote {
178
+ return {
179
+ amountIn: BigInt(liquidSwapQuote.amountIn),
180
+ amountOut: BigInt(liquidSwapQuote.amountOut),
181
+ amountOutUsd: 0,
182
+ amountInUsd: 0,
183
+ slippage: 0,
184
+ priceImpact: Number(liquidSwapQuote.averagePriceImpact),
185
+ provider: 'liquidswap',
186
+ rawQuote: liquidSwapQuote,
187
+ };
188
+ }
189
+
190
+ /**
191
+ * Calculates the weighted reduction factor for an amount in USD.
192
+ * For amounts <= $5, the reduction factor is 0.65.
193
+ */
194
+ public static calculateWeightedReductionFactorForUsd(amountUsd: number): number {
195
+ if (amountUsd <= 5) {
196
+ return 0.5;
197
+ } else if (amountUsd <= 10) {
198
+ return 0.65;
199
+ } else if (amountUsd <= 20) {
200
+ return 0.77;
201
+ } else if (amountUsd <= 30) {
202
+ return 0.9;
203
+ } else {
204
+ return 0.95;
205
+ }
206
+ }
207
+
208
+ protected static async getLiquidSwapQuote(params: SingleChainQuoteParams) {
209
+ const liquidSwapQuoter = new LiquidSwapQuoteProvider();
210
+
211
+ return liquidSwapQuoter.getQuote({
212
+ tokenIn: params.tokenIn,
213
+ tokenOut: params.tokenOut,
214
+ amountIn: params.amount.toString(),
215
+ });
216
+ }
217
+
218
+ protected static async getJupiterQuote(params: SingleChainQuoteParams) {
219
+ const jupiterQuoter = new JupiterQuoteProvider();
220
+
221
+ return jupiterQuoter.getQuote({
222
+ amount: params.amount,
223
+ tokenIn: params.tokenIn,
224
+ tokenOut: params.tokenOut,
225
+ swapMode: 'ExactIn',
226
+ slippageBps: params.slippageBps,
227
+ });
228
+ }
229
+
230
+ protected static async getParaswapQuote(params: SingleChainQuoteParams) {
231
+ const paraswapQuoter = new ParaswapQuoteProvider(params.chainId as SupportedEvmChain);
232
+
233
+ return paraswapQuoter.getSwapEstimation({
234
+ amount: BigInt(params.amount),
235
+ srcToken: params.tokenIn,
236
+ destToken: params.tokenOut,
237
+ side: 'SELL',
238
+ });
239
+ }
240
+
241
+ protected static async getAftermathQuote(params: SingleChainQuoteParams) {
242
+ const aftermathQuoter = new AftermathQuoteProvider();
243
+
244
+ return aftermathQuoter.getQuote({
245
+ amountIn: params.amount,
246
+ tokenIn: params.tokenIn,
247
+ tokenOut: params.tokenOut,
248
+ });
249
+ }
250
+
251
+ private static transformAftermathQuote({
252
+ quote,
253
+ request,
254
+ }: {
255
+ quote: RouterCompleteTradeRoute;
256
+ request: SingleChainQuoteParams;
257
+ }): Quote {
258
+ let amountUsd = 0;
259
+
260
+ if (request.tokenIn === CROSS_CHAIN_TOKENS.USDC![request.chainId]) {
261
+ amountUsd = Number(quote.coinIn.amount) / 10 ** this.DEFAULT_BRIDGE_TOKEN_DECIMALS;
262
+ }
263
+
264
+ if (request.tokenOut === CROSS_CHAIN_TOKENS.USDC![request.chainId]) {
265
+ amountUsd = Number(quote.coinOut.amount) / 10 ** this.DEFAULT_BRIDGE_TOKEN_DECIMALS;
266
+ }
267
+
268
+ return {
269
+ amountIn: quote.coinIn.amount,
270
+ amountOut: quote.coinOut.amount,
271
+ amountOutUsd: amountUsd,
272
+ amountInUsd: amountUsd,
273
+ slippage: quote.slippage ?? 0,
274
+ priceImpact: 0,
275
+ provider: 'aftermath',
276
+ rawQuote: quote,
277
+ };
278
+ }
279
+
280
+ private static transformParaswapQuote(paraswapQuote: SwapEstimateResult): Quote {
281
+ return {
282
+ amountIn: BigInt(paraswapQuote.amountIn),
283
+ amountOut: BigInt(paraswapQuote.amountOut),
284
+ amountOutUsd: paraswapQuote.amountOutUsd,
285
+ amountInUsd: paraswapQuote.amountInUsd,
286
+ slippage: 0, // Calculate from paraswap data if available
287
+ priceImpact: paraswapQuote.quote.maxImpact ? Number(paraswapQuote.quote.maxImpact) * 100 : 0,
288
+ provider: 'paraswap',
289
+ rawQuote: paraswapQuote,
290
+ };
291
+ }
292
+
293
+ private static transformJupiterQuote({ quote }: { quote: JupiterQuoteResponse }): Quote {
294
+ const amountIn = Number(quote.inAmount);
295
+ const amountOut = Number(quote.outAmount);
296
+ let amountUsd = 0;
297
+ const priceImpact = quote.priceImpactPct ? Number(quote.priceImpactPct) * 100 : 0;
298
+
299
+ if (quote.outputMint === CROSS_CHAIN_TOKENS.USDC![ChainID.Solana]) {
300
+ amountUsd = amountOut / 10 ** this.DEFAULT_BRIDGE_TOKEN_DECIMALS;
301
+ }
302
+
303
+ if (quote.inputMint === CROSS_CHAIN_TOKENS.USDC![ChainID.Solana]) {
304
+ amountUsd = amountIn / 10 ** this.DEFAULT_BRIDGE_TOKEN_DECIMALS;
305
+ }
306
+
307
+ return {
308
+ amountIn: BigInt(amountIn),
309
+ amountOut: BigInt(amountOut),
310
+ amountOutUsd: amountUsd,
311
+ amountInUsd: amountUsd,
312
+ slippage: quote.slippageBps ? quote.slippageBps / 100 : 0,
313
+ priceImpact,
314
+ provider: 'jupiter',
315
+ rawQuote: quote,
316
+ };
317
+ }
318
+ }
319
+
320
+ function getProviderNameByChainId(chainId: ChainID): RouteProvider {
321
+ switch (chainId) {
322
+ case ChainID.Sui:
323
+ return 'aftermath';
324
+ case ChainID.Solana:
325
+ return 'jupiter';
326
+ case ChainID.Hyperliquid:
327
+ return 'liquidswap';
328
+ default:
329
+ return 'paraswap';
330
+ }
331
+ }
@@ -0,0 +1,39 @@
1
+ import { createJupiterApiClient, SwapApi, type QuoteResponse } from '@jup-ag/api';
2
+
3
+ export type JupiterQuoteParams = {
4
+ amount: bigint;
5
+ tokenIn: string;
6
+ tokenOut: string;
7
+ swapMode: 'ExactIn' | 'ExactOut';
8
+ slippageBps?: number;
9
+ };
10
+
11
+ const NATIVE_SOL = 'So11111111111111111111111111111111111111111';
12
+ const WRAPPED_SOL = 'So11111111111111111111111111111111111111112';
13
+ export class JupiterQuoteProvider {
14
+ public swapApi: SwapApi;
15
+
16
+ constructor() {
17
+ this.swapApi = createJupiterApiClient({ fetchApi: fetch });
18
+ }
19
+
20
+ public async getQuote(params: JupiterQuoteParams): Promise<{ quote: QuoteResponse }> {
21
+ if (params.tokenIn === NATIVE_SOL) {
22
+ params.tokenIn = WRAPPED_SOL;
23
+ }
24
+
25
+ if (params.tokenOut === NATIVE_SOL) {
26
+ params.tokenOut = WRAPPED_SOL;
27
+ }
28
+
29
+ const quote = await this.swapApi.quoteGet({
30
+ amount: Number(params.amount),
31
+ inputMint: params.tokenIn,
32
+ outputMint: params.tokenOut,
33
+ swapMode: params.swapMode,
34
+ slippageBps: params.slippageBps,
35
+ });
36
+
37
+ return { quote };
38
+ }
39
+ }
@@ -0,0 +1,42 @@
1
+ import { ChainID } from '../../chains.js';
2
+ import { isNativeEvmToken, WRAPPED_ETH_ADDRESSES } from '../../constants.js';
3
+
4
+ type LiquidSwapQuoteParams = {
5
+ tokenIn: string;
6
+ tokenOut: string;
7
+ amountIn: string;
8
+ };
9
+
10
+ export type LiquidSwapQuoteResponse = {
11
+ success: boolean;
12
+ amountIn: string;
13
+ amountOut: string;
14
+ averagePriceImpact: string;
15
+ };
16
+
17
+ const LIQUID_SWAP_API_URL = 'https://api.liqd.ag';
18
+
19
+ export class LiquidSwapQuoteProvider {
20
+ public async getQuote(liquidSwapParams: LiquidSwapQuoteParams): Promise<LiquidSwapQuoteResponse> {
21
+ const params = {...liquidSwapParams};
22
+
23
+ if (isNativeEvmToken(params.tokenOut)) {
24
+ params.tokenOut = WRAPPED_ETH_ADDRESSES[ChainID.Hyperliquid];
25
+ }
26
+
27
+ if (isNativeEvmToken(params.tokenIn)) {
28
+ params.tokenIn = WRAPPED_ETH_ADDRESSES[ChainID.Hyperliquid];
29
+ }
30
+
31
+ const url = `${LIQUID_SWAP_API_URL}/v2/route?tokenIn=${params.tokenIn}&tokenOut=${params.tokenOut}&amountIn=${params.amountIn}`;
32
+ const response = await fetch(url);
33
+
34
+ if (!response.ok) {
35
+ throw new Error('Failed to fetch quote from LiquidSwap API');
36
+ }
37
+
38
+ const data: LiquidSwapQuoteResponse = await response.json();
39
+
40
+ return data;
41
+ }
42
+ }