@shogun-sdk/intents-sdk 1.2.1 → 1.2.3

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 (445) hide show
  1. package/README.md +616 -55
  2. package/dist/esm/constants.js +21 -26
  3. package/dist/esm/constants.js.map +1 -1
  4. package/dist/esm/core/evm/abi/source-chain-guard.js +32 -628
  5. package/dist/esm/core/evm/abi/source-chain-guard.js.map +1 -1
  6. package/dist/esm/core/evm/cross-chain-limit-order.js +43 -0
  7. package/dist/esm/core/evm/cross-chain-limit-order.js.map +1 -0
  8. package/dist/esm/core/evm/intent-helpers.js +130 -0
  9. package/dist/esm/core/evm/intent-helpers.js.map +1 -0
  10. package/dist/esm/core/evm/single-chain-dca-order.js +49 -0
  11. package/dist/esm/core/evm/single-chain-dca-order.js.map +1 -0
  12. package/dist/esm/core/evm/single-chain-limit-order.js +45 -0
  13. package/dist/esm/core/evm/single-chain-limit-order.js.map +1 -0
  14. package/dist/esm/core/evm/types.js +8 -0
  15. package/dist/esm/core/evm/types.js.map +1 -0
  16. package/dist/esm/core/orders/common.js +3 -3
  17. package/dist/esm/core/orders/common.js.map +1 -1
  18. package/dist/esm/core/orders/cross-chain.js +2 -2
  19. package/dist/esm/core/orders/cross-chain.js.map +1 -1
  20. package/dist/esm/core/orders/dca-single-chain.js +4 -1
  21. package/dist/esm/core/orders/dca-single-chain.js.map +1 -1
  22. package/dist/esm/core/orders/single-chain.js +8 -1
  23. package/dist/esm/core/orders/single-chain.js.map +1 -1
  24. package/dist/esm/core/solana/cancel-order.js.map +1 -1
  25. package/dist/esm/core/solana/client.js +1 -1
  26. package/dist/esm/core/solana/client.js.map +1 -1
  27. package/dist/esm/core/solana/cross-chain-limit-order.js +18 -0
  28. package/dist/esm/core/solana/cross-chain-limit-order.js.map +1 -0
  29. package/dist/esm/core/solana/dca/cancel-order.js.map +1 -1
  30. package/dist/esm/core/solana/dca/create-order.js.map +1 -1
  31. package/dist/esm/core/solana/dca/single-chain-dca-order.js +23 -0
  32. package/dist/esm/core/solana/dca/single-chain-dca-order.js.map +1 -0
  33. package/dist/esm/core/solana/dca/single-chain-limit-order.js +29 -0
  34. package/dist/esm/core/solana/dca/single-chain-limit-order.js.map +1 -0
  35. package/dist/esm/core/solana/generated/cross-chain/accounts/adminSingleton.js +6 -4
  36. package/dist/esm/core/solana/generated/cross-chain/accounts/adminSingleton.js.map +1 -1
  37. package/dist/esm/core/solana/generated/cross-chain/accounts/dcaOrder.js +90 -0
  38. package/dist/esm/core/solana/generated/cross-chain/accounts/dcaOrder.js.map +1 -0
  39. package/dist/esm/core/solana/generated/cross-chain/accounts/guard.js +6 -4
  40. package/dist/esm/core/solana/generated/cross-chain/accounts/guard.js.map +1 -1
  41. package/dist/esm/core/solana/generated/cross-chain/accounts/index.js +1 -0
  42. package/dist/esm/core/solana/generated/cross-chain/accounts/index.js.map +1 -1
  43. package/dist/esm/core/solana/generated/cross-chain/accounts/order.js +3 -3
  44. package/dist/esm/core/solana/generated/cross-chain/accounts/order.js.map +1 -1
  45. package/dist/esm/core/solana/generated/cross-chain/errors/sourceChainGuard.js +111 -6
  46. package/dist/esm/core/solana/generated/cross-chain/errors/sourceChainGuard.js.map +1 -1
  47. package/dist/esm/core/solana/generated/cross-chain/instructions/acceptAdmin.js +5 -8
  48. package/dist/esm/core/solana/generated/cross-chain/instructions/acceptAdmin.js.map +1 -1
  49. package/dist/esm/core/solana/generated/cross-chain/instructions/cancelDcaOrder.js +118 -0
  50. package/dist/esm/core/solana/generated/cross-chain/instructions/cancelDcaOrder.js.map +1 -0
  51. package/dist/esm/core/solana/generated/cross-chain/instructions/cancelOrder.js +5 -8
  52. package/dist/esm/core/solana/generated/cross-chain/instructions/cancelOrder.js.map +1 -1
  53. package/dist/esm/core/solana/generated/cross-chain/instructions/claimTokens.js +5 -8
  54. package/dist/esm/core/solana/generated/cross-chain/instructions/claimTokens.js.map +1 -1
  55. package/dist/esm/core/solana/generated/cross-chain/instructions/collectProtocolFees.js +8 -9
  56. package/dist/esm/core/solana/generated/cross-chain/instructions/collectProtocolFees.js.map +1 -1
  57. package/dist/esm/core/solana/generated/cross-chain/instructions/createDcaOrder.js +170 -0
  58. package/dist/esm/core/solana/generated/cross-chain/instructions/createDcaOrder.js.map +1 -0
  59. package/dist/esm/core/solana/generated/cross-chain/instructions/createGuard.js +10 -16
  60. package/dist/esm/core/solana/generated/cross-chain/instructions/createGuard.js.map +1 -1
  61. package/dist/esm/core/solana/generated/cross-chain/instructions/createOrder.js +8 -6
  62. package/dist/esm/core/solana/generated/cross-chain/instructions/createOrder.js.map +1 -1
  63. package/dist/esm/core/solana/generated/cross-chain/instructions/index.js +2 -0
  64. package/dist/esm/core/solana/generated/cross-chain/instructions/index.js.map +1 -1
  65. package/dist/esm/core/solana/generated/cross-chain/instructions/initialize.js +11 -12
  66. package/dist/esm/core/solana/generated/cross-chain/instructions/initialize.js.map +1 -1
  67. package/dist/esm/core/solana/generated/cross-chain/instructions/preStartOrderExecution.js +8 -9
  68. package/dist/esm/core/solana/generated/cross-chain/instructions/preStartOrderExecution.js.map +1 -1
  69. package/dist/esm/core/solana/generated/cross-chain/instructions/setAdmin.js +4 -4
  70. package/dist/esm/core/solana/generated/cross-chain/instructions/setAdmin.js.map +1 -1
  71. package/dist/esm/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.js +17 -7
  72. package/dist/esm/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.js.map +1 -1
  73. package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecution.js +8 -9
  74. package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecution.js.map +1 -1
  75. package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.js +7 -5
  76. package/dist/esm/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.js.map +1 -1
  77. package/dist/esm/core/solana/generated/cross-chain/programs/sourceChainGuard.js +28 -16
  78. package/dist/esm/core/solana/generated/cross-chain/programs/sourceChainGuard.js.map +1 -1
  79. package/dist/esm/core/solana/generated/cross-chain/shared/index.js +5 -5
  80. package/dist/esm/core/solana/generated/cross-chain/shared/index.js.map +1 -1
  81. package/dist/esm/core/solana/generated/cross-chain/types/adminUpdateStarted.js.map +1 -1
  82. package/dist/esm/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.js.map +1 -1
  83. package/dist/esm/core/solana/generated/cross-chain/types/dcaExecutionStarted.js +32 -0
  84. package/dist/esm/core/solana/generated/cross-chain/types/dcaExecutionStarted.js.map +1 -0
  85. package/dist/esm/core/solana/generated/cross-chain/types/dcaOrderCreated.js +42 -0
  86. package/dist/esm/core/solana/generated/cross-chain/types/dcaOrderCreated.js.map +1 -0
  87. package/dist/esm/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.js +26 -0
  88. package/dist/esm/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.js.map +1 -0
  89. package/dist/esm/core/solana/generated/cross-chain/types/dcaTokenInSwapped.js +28 -0
  90. package/dist/esm/core/solana/generated/cross-chain/types/dcaTokenInSwapped.js.map +1 -0
  91. package/dist/esm/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.js +26 -0
  92. package/dist/esm/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.js.map +1 -0
  93. package/dist/esm/core/solana/generated/cross-chain/types/index.js +5 -0
  94. package/dist/esm/core/solana/generated/cross-chain/types/index.js.map +1 -1
  95. package/dist/esm/core/solana/generated/single-chain/accounts/adminSingleton.js +6 -4
  96. package/dist/esm/core/solana/generated/single-chain/accounts/adminSingleton.js.map +1 -1
  97. package/dist/esm/core/solana/generated/single-chain/accounts/dcaOrder.js +3 -3
  98. package/dist/esm/core/solana/generated/single-chain/accounts/dcaOrder.js.map +1 -1
  99. package/dist/esm/core/solana/generated/single-chain/accounts/guard.js +3 -3
  100. package/dist/esm/core/solana/generated/single-chain/accounts/guard.js.map +1 -1
  101. package/dist/esm/core/solana/generated/single-chain/accounts/limitOrder.js +3 -3
  102. package/dist/esm/core/solana/generated/single-chain/accounts/limitOrder.js.map +1 -1
  103. package/dist/esm/core/solana/generated/single-chain/errors/singleChainGuard.js +3 -3
  104. package/dist/esm/core/solana/generated/single-chain/errors/singleChainGuard.js.map +1 -1
  105. package/dist/esm/core/solana/generated/single-chain/instructions/acceptAdmin.js +5 -8
  106. package/dist/esm/core/solana/generated/single-chain/instructions/acceptAdmin.js.map +1 -1
  107. package/dist/esm/core/solana/generated/single-chain/instructions/cancelDcaOrder.js +8 -9
  108. package/dist/esm/core/solana/generated/single-chain/instructions/cancelDcaOrder.js.map +1 -1
  109. package/dist/esm/core/solana/generated/single-chain/instructions/cancelLimitOrder.js +8 -9
  110. package/dist/esm/core/solana/generated/single-chain/instructions/cancelLimitOrder.js.map +1 -1
  111. package/dist/esm/core/solana/generated/single-chain/instructions/collectProtocolFees.js +8 -9
  112. package/dist/esm/core/solana/generated/single-chain/instructions/collectProtocolFees.js.map +1 -1
  113. package/dist/esm/core/solana/generated/single-chain/instructions/createDcaOrder.js +8 -6
  114. package/dist/esm/core/solana/generated/single-chain/instructions/createDcaOrder.js.map +1 -1
  115. package/dist/esm/core/solana/generated/single-chain/instructions/createGuard.js +8 -6
  116. package/dist/esm/core/solana/generated/single-chain/instructions/createGuard.js.map +1 -1
  117. package/dist/esm/core/solana/generated/single-chain/instructions/createLimitOrder.js +8 -6
  118. package/dist/esm/core/solana/generated/single-chain/instructions/createLimitOrder.js.map +1 -1
  119. package/dist/esm/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.js +9 -6
  120. package/dist/esm/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.js.map +1 -1
  121. package/dist/esm/core/solana/generated/single-chain/instructions/fulfillLimitOrder.js +9 -6
  122. package/dist/esm/core/solana/generated/single-chain/instructions/fulfillLimitOrder.js.map +1 -1
  123. package/dist/esm/core/solana/generated/single-chain/instructions/initialize.js +9 -10
  124. package/dist/esm/core/solana/generated/single-chain/instructions/initialize.js.map +1 -1
  125. package/dist/esm/core/solana/generated/single-chain/instructions/setAdmin.js +4 -4
  126. package/dist/esm/core/solana/generated/single-chain/instructions/setAdmin.js.map +1 -1
  127. package/dist/esm/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.js +17 -7
  128. package/dist/esm/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.js.map +1 -1
  129. package/dist/esm/core/solana/generated/single-chain/programs/singleChainGuard.js +2 -2
  130. package/dist/esm/core/solana/generated/single-chain/programs/singleChainGuard.js.map +1 -1
  131. package/dist/esm/core/solana/generated/single-chain/shared/index.js +5 -5
  132. package/dist/esm/core/solana/generated/single-chain/shared/index.js.map +1 -1
  133. package/dist/esm/core/solana/generated/single-chain/types/adminUpdateStarted.js.map +1 -1
  134. package/dist/esm/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.js.map +1 -1
  135. package/dist/esm/core/solana/generated/single-chain/types/dcaOrderFulfilled.js.map +1 -1
  136. package/dist/esm/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.js.map +1 -1
  137. package/dist/esm/core/solana/generated/single-chain/types/limitOrderCreated.js.map +1 -1
  138. package/dist/esm/core/solana/generated/single-chain/types/limitOrderFulfilled.js.map +1 -1
  139. package/dist/esm/core/solana/inspect.js +1 -1
  140. package/dist/esm/core/solana/intent-helpers.js +177 -0
  141. package/dist/esm/core/solana/intent-helpers.js.map +1 -0
  142. package/dist/esm/core/solana/order-instructions.js.map +1 -1
  143. package/dist/esm/core/solana/sdk.js +4 -1
  144. package/dist/esm/core/solana/sdk.js.map +1 -1
  145. package/dist/esm/core/sui/cancel.js +1 -1
  146. package/dist/esm/core/sui/cancel.js.map +1 -1
  147. package/dist/esm/core/sui/cross-chain-limit-order.js +26 -0
  148. package/dist/esm/core/sui/cross-chain-limit-order.js.map +1 -0
  149. package/dist/esm/core/sui/intent-helpers.js +136 -0
  150. package/dist/esm/core/sui/intent-helpers.js.map +1 -0
  151. package/dist/esm/core/sui/order-transaction.js +5 -4
  152. package/dist/esm/core/sui/order-transaction.js.map +1 -1
  153. package/dist/esm/core/sui/sdk.js +1 -1
  154. package/dist/esm/core/sui/sdk.js.map +1 -1
  155. package/dist/esm/core/sui/single-chain-dca-order.js +99 -0
  156. package/dist/esm/core/sui/single-chain-dca-order.js.map +1 -0
  157. package/dist/esm/core/sui/single-chain-limit-order.js +103 -0
  158. package/dist/esm/core/sui/single-chain-limit-order.js.map +1 -0
  159. package/dist/esm/core/sui/validator.js +1 -2
  160. package/dist/esm/core/sui/validator.js.map +1 -1
  161. package/dist/esm/index.js +15 -0
  162. package/dist/esm/index.js.map +1 -1
  163. package/dist/types/constants.d.ts +3 -4
  164. package/dist/types/constants.d.ts.map +1 -1
  165. package/dist/types/core/evm/abi/source-chain-guard.d.ts +18 -484
  166. package/dist/types/core/evm/abi/source-chain-guard.d.ts.map +1 -1
  167. package/dist/types/core/evm/cross-chain-limit-order.d.ts +22 -0
  168. package/dist/types/core/evm/cross-chain-limit-order.d.ts.map +1 -0
  169. package/dist/types/core/evm/intent-helpers.d.ts +105 -0
  170. package/dist/types/core/evm/intent-helpers.d.ts.map +1 -0
  171. package/dist/types/core/evm/single-chain-dca-order.d.ts +26 -0
  172. package/dist/types/core/evm/single-chain-dca-order.d.ts.map +1 -0
  173. package/dist/types/core/evm/single-chain-limit-order.d.ts +23 -0
  174. package/dist/types/core/evm/single-chain-limit-order.d.ts.map +1 -0
  175. package/dist/types/core/evm/types.d.ts +8 -0
  176. package/dist/types/core/evm/types.d.ts.map +1 -0
  177. package/dist/types/core/orders/common.d.ts +2 -2
  178. package/dist/types/core/orders/common.d.ts.map +1 -1
  179. package/dist/types/core/orders/cross-chain.d.ts +1 -1
  180. package/dist/types/core/orders/cross-chain.d.ts.map +1 -1
  181. package/dist/types/core/orders/dca-single-chain.d.ts.map +1 -1
  182. package/dist/types/core/orders/single-chain.d.ts +1 -0
  183. package/dist/types/core/orders/single-chain.d.ts.map +1 -1
  184. package/dist/types/core/solana/cancel-order.d.ts +3 -3
  185. package/dist/types/core/solana/cancel-order.d.ts.map +1 -1
  186. package/dist/types/core/solana/cross-chain-limit-order.d.ts +9 -0
  187. package/dist/types/core/solana/cross-chain-limit-order.d.ts.map +1 -0
  188. package/dist/types/core/solana/dca/cancel-order.d.ts +2 -2
  189. package/dist/types/core/solana/dca/cancel-order.d.ts.map +1 -1
  190. package/dist/types/core/solana/dca/single-chain-dca-order.d.ts +14 -0
  191. package/dist/types/core/solana/dca/single-chain-dca-order.d.ts.map +1 -0
  192. package/dist/types/core/solana/dca/single-chain-limit-order.d.ts +19 -0
  193. package/dist/types/core/solana/dca/single-chain-limit-order.d.ts.map +1 -0
  194. package/dist/types/core/solana/generated/cross-chain/accounts/adminSingleton.d.ts +6 -6
  195. package/dist/types/core/solana/generated/cross-chain/accounts/adminSingleton.d.ts.map +1 -1
  196. package/dist/types/core/solana/generated/cross-chain/accounts/dcaOrder.d.ts +110 -0
  197. package/dist/types/core/solana/generated/cross-chain/accounts/dcaOrder.d.ts.map +1 -0
  198. package/dist/types/core/solana/generated/cross-chain/accounts/guard.d.ts +10 -6
  199. package/dist/types/core/solana/generated/cross-chain/accounts/guard.d.ts.map +1 -1
  200. package/dist/types/core/solana/generated/cross-chain/accounts/index.d.ts +1 -0
  201. package/dist/types/core/solana/generated/cross-chain/accounts/index.d.ts.map +1 -1
  202. package/dist/types/core/solana/generated/cross-chain/accounts/order.d.ts +6 -6
  203. package/dist/types/core/solana/generated/cross-chain/accounts/order.d.ts.map +1 -1
  204. package/dist/types/core/solana/generated/cross-chain/errors/sourceChainGuard.d.ts +76 -6
  205. package/dist/types/core/solana/generated/cross-chain/errors/sourceChainGuard.d.ts.map +1 -1
  206. package/dist/types/core/solana/generated/cross-chain/instructions/acceptAdmin.d.ts +12 -12
  207. package/dist/types/core/solana/generated/cross-chain/instructions/acceptAdmin.d.ts.map +1 -1
  208. package/dist/types/core/solana/generated/cross-chain/instructions/cancelDcaOrder.d.ts +124 -0
  209. package/dist/types/core/solana/generated/cross-chain/instructions/cancelDcaOrder.d.ts.map +1 -0
  210. package/dist/types/core/solana/generated/cross-chain/instructions/cancelOrder.d.ts +12 -12
  211. package/dist/types/core/solana/generated/cross-chain/instructions/cancelOrder.d.ts.map +1 -1
  212. package/dist/types/core/solana/generated/cross-chain/instructions/claimTokens.d.ts +12 -12
  213. package/dist/types/core/solana/generated/cross-chain/instructions/claimTokens.d.ts.map +1 -1
  214. package/dist/types/core/solana/generated/cross-chain/instructions/collectProtocolFees.d.ts +15 -15
  215. package/dist/types/core/solana/generated/cross-chain/instructions/collectProtocolFees.d.ts.map +1 -1
  216. package/dist/types/core/solana/generated/cross-chain/instructions/createDcaOrder.d.ts +130 -0
  217. package/dist/types/core/solana/generated/cross-chain/instructions/createDcaOrder.d.ts.map +1 -0
  218. package/dist/types/core/solana/generated/cross-chain/instructions/createGuard.d.ts +16 -12
  219. package/dist/types/core/solana/generated/cross-chain/instructions/createGuard.d.ts.map +1 -1
  220. package/dist/types/core/solana/generated/cross-chain/instructions/createOrder.d.ts +12 -12
  221. package/dist/types/core/solana/generated/cross-chain/instructions/createOrder.d.ts.map +1 -1
  222. package/dist/types/core/solana/generated/cross-chain/instructions/index.d.ts +2 -0
  223. package/dist/types/core/solana/generated/cross-chain/instructions/index.d.ts.map +1 -1
  224. package/dist/types/core/solana/generated/cross-chain/instructions/initialize.d.ts +12 -12
  225. package/dist/types/core/solana/generated/cross-chain/instructions/initialize.d.ts.map +1 -1
  226. package/dist/types/core/solana/generated/cross-chain/instructions/preStartOrderExecution.d.ts +12 -12
  227. package/dist/types/core/solana/generated/cross-chain/instructions/preStartOrderExecution.d.ts.map +1 -1
  228. package/dist/types/core/solana/generated/cross-chain/instructions/setAdmin.d.ts +11 -11
  229. package/dist/types/core/solana/generated/cross-chain/instructions/setAdmin.d.ts.map +1 -1
  230. package/dist/types/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.d.ts +11 -11
  231. package/dist/types/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.d.ts.map +1 -1
  232. package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecution.d.ts +12 -12
  233. package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecution.d.ts.map +1 -1
  234. package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.d.ts +11 -11
  235. package/dist/types/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.d.ts.map +1 -1
  236. package/dist/types/core/solana/generated/cross-chain/programs/sourceChainGuard.d.ts +25 -18
  237. package/dist/types/core/solana/generated/cross-chain/programs/sourceChainGuard.d.ts.map +1 -1
  238. package/dist/types/core/solana/generated/cross-chain/shared/index.d.ts +5 -5
  239. package/dist/types/core/solana/generated/cross-chain/shared/index.d.ts.map +1 -1
  240. package/dist/types/core/solana/generated/cross-chain/types/adminUpdateStarted.d.ts +4 -4
  241. package/dist/types/core/solana/generated/cross-chain/types/adminUpdateStarted.d.ts.map +1 -1
  242. package/dist/types/core/solana/generated/cross-chain/types/adminUpdated.d.ts +4 -4
  243. package/dist/types/core/solana/generated/cross-chain/types/adminUpdated.d.ts.map +1 -1
  244. package/dist/types/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.d.ts +4 -4
  245. package/dist/types/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.d.ts.map +1 -1
  246. package/dist/types/core/solana/generated/cross-chain/types/dcaExecutionStarted.d.ts +28 -0
  247. package/dist/types/core/solana/generated/cross-chain/types/dcaExecutionStarted.d.ts.map +1 -0
  248. package/dist/types/core/solana/generated/cross-chain/types/dcaOrderCreated.d.ts +38 -0
  249. package/dist/types/core/solana/generated/cross-chain/types/dcaOrderCreated.d.ts.map +1 -0
  250. package/dist/types/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.d.ts +18 -0
  251. package/dist/types/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.d.ts.map +1 -0
  252. package/dist/types/core/solana/generated/cross-chain/types/dcaTokenInSwapped.d.ts +24 -0
  253. package/dist/types/core/solana/generated/cross-chain/types/dcaTokenInSwapped.d.ts.map +1 -0
  254. package/dist/types/core/solana/generated/cross-chain/types/executionStarted.d.ts +4 -4
  255. package/dist/types/core/solana/generated/cross-chain/types/executionStarted.d.ts.map +1 -1
  256. package/dist/types/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.d.ts +18 -0
  257. package/dist/types/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.d.ts.map +1 -0
  258. package/dist/types/core/solana/generated/cross-chain/types/guardCreated.d.ts +4 -4
  259. package/dist/types/core/solana/generated/cross-chain/types/guardCreated.d.ts.map +1 -1
  260. package/dist/types/core/solana/generated/cross-chain/types/index.d.ts +5 -0
  261. package/dist/types/core/solana/generated/cross-chain/types/index.d.ts.map +1 -1
  262. package/dist/types/core/solana/generated/cross-chain/types/orderCancelled.d.ts +4 -4
  263. package/dist/types/core/solana/generated/cross-chain/types/orderCancelled.d.ts.map +1 -1
  264. package/dist/types/core/solana/generated/cross-chain/types/orderCreated.d.ts +4 -4
  265. package/dist/types/core/solana/generated/cross-chain/types/orderCreated.d.ts.map +1 -1
  266. package/dist/types/core/solana/generated/cross-chain/types/orderFulfilled.d.ts +4 -4
  267. package/dist/types/core/solana/generated/cross-chain/types/orderFulfilled.d.ts.map +1 -1
  268. package/dist/types/core/solana/generated/cross-chain/types/tokenInSwapped.d.ts +4 -4
  269. package/dist/types/core/solana/generated/cross-chain/types/tokenInSwapped.d.ts.map +1 -1
  270. package/dist/types/core/solana/generated/single-chain/accounts/adminSingleton.d.ts +6 -6
  271. package/dist/types/core/solana/generated/single-chain/accounts/adminSingleton.d.ts.map +1 -1
  272. package/dist/types/core/solana/generated/single-chain/accounts/dcaOrder.d.ts +3 -3
  273. package/dist/types/core/solana/generated/single-chain/accounts/dcaOrder.d.ts.map +1 -1
  274. package/dist/types/core/solana/generated/single-chain/accounts/guard.d.ts +6 -6
  275. package/dist/types/core/solana/generated/single-chain/accounts/guard.d.ts.map +1 -1
  276. package/dist/types/core/solana/generated/single-chain/accounts/limitOrder.d.ts +3 -3
  277. package/dist/types/core/solana/generated/single-chain/accounts/limitOrder.d.ts.map +1 -1
  278. package/dist/types/core/solana/generated/single-chain/errors/singleChainGuard.d.ts +2 -2
  279. package/dist/types/core/solana/generated/single-chain/errors/singleChainGuard.d.ts.map +1 -1
  280. package/dist/types/core/solana/generated/single-chain/instructions/acceptAdmin.d.ts +12 -12
  281. package/dist/types/core/solana/generated/single-chain/instructions/acceptAdmin.d.ts.map +1 -1
  282. package/dist/types/core/solana/generated/single-chain/instructions/cancelDcaOrder.d.ts +12 -12
  283. package/dist/types/core/solana/generated/single-chain/instructions/cancelDcaOrder.d.ts.map +1 -1
  284. package/dist/types/core/solana/generated/single-chain/instructions/cancelLimitOrder.d.ts +12 -12
  285. package/dist/types/core/solana/generated/single-chain/instructions/cancelLimitOrder.d.ts.map +1 -1
  286. package/dist/types/core/solana/generated/single-chain/instructions/collectProtocolFees.d.ts +12 -12
  287. package/dist/types/core/solana/generated/single-chain/instructions/collectProtocolFees.d.ts.map +1 -1
  288. package/dist/types/core/solana/generated/single-chain/instructions/createDcaOrder.d.ts +9 -9
  289. package/dist/types/core/solana/generated/single-chain/instructions/createDcaOrder.d.ts.map +1 -1
  290. package/dist/types/core/solana/generated/single-chain/instructions/createGuard.d.ts +11 -11
  291. package/dist/types/core/solana/generated/single-chain/instructions/createGuard.d.ts.map +1 -1
  292. package/dist/types/core/solana/generated/single-chain/instructions/createLimitOrder.d.ts +9 -9
  293. package/dist/types/core/solana/generated/single-chain/instructions/createLimitOrder.d.ts.map +1 -1
  294. package/dist/types/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.d.ts +11 -11
  295. package/dist/types/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.d.ts.map +1 -1
  296. package/dist/types/core/solana/generated/single-chain/instructions/fulfillLimitOrder.d.ts +11 -11
  297. package/dist/types/core/solana/generated/single-chain/instructions/fulfillLimitOrder.d.ts.map +1 -1
  298. package/dist/types/core/solana/generated/single-chain/instructions/initialize.d.ts +12 -12
  299. package/dist/types/core/solana/generated/single-chain/instructions/initialize.d.ts.map +1 -1
  300. package/dist/types/core/solana/generated/single-chain/instructions/setAdmin.d.ts +11 -11
  301. package/dist/types/core/solana/generated/single-chain/instructions/setAdmin.d.ts.map +1 -1
  302. package/dist/types/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.d.ts +11 -11
  303. package/dist/types/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.d.ts.map +1 -1
  304. package/dist/types/core/solana/generated/single-chain/programs/singleChainGuard.d.ts +2 -2
  305. package/dist/types/core/solana/generated/single-chain/programs/singleChainGuard.d.ts.map +1 -1
  306. package/dist/types/core/solana/generated/single-chain/shared/index.d.ts +5 -5
  307. package/dist/types/core/solana/generated/single-chain/shared/index.d.ts.map +1 -1
  308. package/dist/types/core/solana/generated/single-chain/types/adminUpdateStarted.d.ts +4 -4
  309. package/dist/types/core/solana/generated/single-chain/types/adminUpdateStarted.d.ts.map +1 -1
  310. package/dist/types/core/solana/generated/single-chain/types/adminUpdated.d.ts +4 -4
  311. package/dist/types/core/solana/generated/single-chain/types/adminUpdated.d.ts.map +1 -1
  312. package/dist/types/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.d.ts +4 -4
  313. package/dist/types/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.d.ts.map +1 -1
  314. package/dist/types/core/solana/generated/single-chain/types/dcaOrderCreated.d.ts +4 -4
  315. package/dist/types/core/solana/generated/single-chain/types/dcaOrderCreated.d.ts.map +1 -1
  316. package/dist/types/core/solana/generated/single-chain/types/dcaOrderFulfilled.d.ts +4 -4
  317. package/dist/types/core/solana/generated/single-chain/types/dcaOrderFulfilled.d.ts.map +1 -1
  318. package/dist/types/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.d.ts +4 -4
  319. package/dist/types/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.d.ts.map +1 -1
  320. package/dist/types/core/solana/generated/single-chain/types/guardCreated.d.ts +4 -4
  321. package/dist/types/core/solana/generated/single-chain/types/guardCreated.d.ts.map +1 -1
  322. package/dist/types/core/solana/generated/single-chain/types/limitOrderCreated.d.ts +4 -4
  323. package/dist/types/core/solana/generated/single-chain/types/limitOrderCreated.d.ts.map +1 -1
  324. package/dist/types/core/solana/generated/single-chain/types/limitOrderFulfilled.d.ts +4 -4
  325. package/dist/types/core/solana/generated/single-chain/types/limitOrderFulfilled.d.ts.map +1 -1
  326. package/dist/types/core/solana/generated/single-chain/types/orderCancelled.d.ts +4 -4
  327. package/dist/types/core/solana/generated/single-chain/types/orderCancelled.d.ts.map +1 -1
  328. package/dist/types/core/solana/intent-helpers.d.ts +120 -0
  329. package/dist/types/core/solana/intent-helpers.d.ts.map +1 -0
  330. package/dist/types/core/solana/sdk.d.ts.map +1 -1
  331. package/dist/types/core/sui/cross-chain-limit-order.d.ts +14 -0
  332. package/dist/types/core/sui/cross-chain-limit-order.d.ts.map +1 -0
  333. package/dist/types/core/sui/intent-helpers.d.ts +89 -0
  334. package/dist/types/core/sui/intent-helpers.d.ts.map +1 -0
  335. package/dist/types/core/sui/order-transaction.d.ts +3 -1
  336. package/dist/types/core/sui/order-transaction.d.ts.map +1 -1
  337. package/dist/types/core/sui/single-chain-dca-order.d.ts +22 -0
  338. package/dist/types/core/sui/single-chain-dca-order.d.ts.map +1 -0
  339. package/dist/types/core/sui/single-chain-limit-order.d.ts +26 -0
  340. package/dist/types/core/sui/single-chain-limit-order.d.ts.map +1 -0
  341. package/dist/types/core/sui/validator.d.ts.map +1 -1
  342. package/dist/types/index.d.ts +13 -0
  343. package/dist/types/index.d.ts.map +1 -1
  344. package/dist/types/types/intent.d.ts +13 -4
  345. package/dist/types/types/intent.d.ts.map +1 -1
  346. package/package.json +19 -9
  347. package/src/constants.ts +17 -23
  348. package/src/core/evm/abi/source-chain-guard.ts +32 -628
  349. package/src/core/evm/cross-chain-limit-order.ts +76 -0
  350. package/src/core/evm/intent-helpers.ts +204 -0
  351. package/src/core/evm/single-chain-dca-order.ts +85 -0
  352. package/src/core/evm/single-chain-limit-order.ts +78 -0
  353. package/src/core/evm/types.ts +15 -0
  354. package/src/core/orders/common.ts +4 -4
  355. package/src/core/orders/cross-chain.ts +2 -2
  356. package/src/core/orders/dca-single-chain.ts +4 -1
  357. package/src/core/orders/single-chain.ts +10 -1
  358. package/src/core/solana/cancel-order.ts +5 -5
  359. package/src/core/solana/client.ts +1 -1
  360. package/src/core/solana/cross-chain-limit-order.ts +24 -0
  361. package/src/core/solana/dca/cancel-order.ts +3 -3
  362. package/src/core/solana/dca/create-order.ts +2 -2
  363. package/src/core/solana/dca/single-chain-dca-order.ts +32 -0
  364. package/src/core/solana/dca/single-chain-limit-order.ts +45 -0
  365. package/src/core/solana/generated/cross-chain/accounts/adminSingleton.ts +20 -18
  366. package/src/core/solana/generated/cross-chain/accounts/dcaOrder.ts +248 -0
  367. package/src/core/solana/generated/cross-chain/accounts/guard.ts +24 -18
  368. package/src/core/solana/generated/cross-chain/accounts/index.ts +1 -0
  369. package/src/core/solana/generated/cross-chain/accounts/order.ts +17 -17
  370. package/src/core/solana/generated/cross-chain/errors/sourceChainGuard.ts +154 -9
  371. package/src/core/solana/generated/cross-chain/instructions/acceptAdmin.ts +44 -34
  372. package/src/core/solana/generated/cross-chain/instructions/cancelDcaOrder.ts +409 -0
  373. package/src/core/solana/generated/cross-chain/instructions/cancelOrder.ts +49 -41
  374. package/src/core/solana/generated/cross-chain/instructions/claimTokens.ts +54 -44
  375. package/src/core/solana/generated/cross-chain/instructions/collectProtocolFees.ts +52 -43
  376. package/src/core/solana/generated/cross-chain/instructions/createDcaOrder.ts +496 -0
  377. package/src/core/solana/generated/cross-chain/instructions/createGuard.ts +72 -54
  378. package/src/core/solana/generated/cross-chain/instructions/createOrder.ts +60 -42
  379. package/src/core/solana/generated/cross-chain/instructions/index.ts +2 -0
  380. package/src/core/solana/generated/cross-chain/instructions/initialize.ts +60 -42
  381. package/src/core/solana/generated/cross-chain/instructions/preStartOrderExecution.ts +55 -45
  382. package/src/core/solana/generated/cross-chain/instructions/setAdmin.ts +48 -30
  383. package/src/core/solana/generated/cross-chain/instructions/setAuctioneerPubKey.ts +88 -40
  384. package/src/core/solana/generated/cross-chain/instructions/startOrderExecution.ts +48 -39
  385. package/src/core/solana/generated/cross-chain/instructions/startOrderExecutionAfterSwap.ts +45 -37
  386. package/src/core/solana/generated/cross-chain/programs/sourceChainGuard.ts +118 -37
  387. package/src/core/solana/generated/cross-chain/shared/index.ts +23 -14
  388. package/src/core/solana/generated/cross-chain/types/adminUpdateStarted.ts +9 -6
  389. package/src/core/solana/generated/cross-chain/types/adminUpdated.ts +6 -6
  390. package/src/core/solana/generated/cross-chain/types/auctioneerPubkeyUpdated.ts +9 -6
  391. package/src/core/solana/generated/cross-chain/types/dcaExecutionStarted.ts +70 -0
  392. package/src/core/solana/generated/cross-chain/types/dcaOrderCreated.ts +92 -0
  393. package/src/core/solana/generated/cross-chain/types/dcaOrderIntervalFulfilled.ts +52 -0
  394. package/src/core/solana/generated/cross-chain/types/dcaTokenInSwapped.ts +62 -0
  395. package/src/core/solana/generated/cross-chain/types/executionStarted.ts +6 -6
  396. package/src/core/solana/generated/cross-chain/types/failedDcaIntervalExecution.ts +55 -0
  397. package/src/core/solana/generated/cross-chain/types/guardCreated.ts +6 -6
  398. package/src/core/solana/generated/cross-chain/types/index.ts +5 -0
  399. package/src/core/solana/generated/cross-chain/types/orderCancelled.ts +6 -6
  400. package/src/core/solana/generated/cross-chain/types/orderCreated.ts +6 -6
  401. package/src/core/solana/generated/cross-chain/types/orderFulfilled.ts +6 -6
  402. package/src/core/solana/generated/cross-chain/types/tokenInSwapped.ts +6 -6
  403. package/src/core/solana/generated/single-chain/accounts/adminSingleton.ts +20 -18
  404. package/src/core/solana/generated/single-chain/accounts/dcaOrder.ts +11 -11
  405. package/src/core/solana/generated/single-chain/accounts/guard.ts +17 -17
  406. package/src/core/solana/generated/single-chain/accounts/limitOrder.ts +11 -11
  407. package/src/core/solana/generated/single-chain/errors/singleChainGuard.ts +10 -5
  408. package/src/core/solana/generated/single-chain/instructions/acceptAdmin.ts +44 -34
  409. package/src/core/solana/generated/single-chain/instructions/cancelDcaOrder.ts +54 -40
  410. package/src/core/solana/generated/single-chain/instructions/cancelLimitOrder.ts +51 -40
  411. package/src/core/solana/generated/single-chain/instructions/collectProtocolFees.ts +55 -42
  412. package/src/core/solana/generated/single-chain/instructions/createDcaOrder.ts +60 -38
  413. package/src/core/solana/generated/single-chain/instructions/createGuard.ts +69 -42
  414. package/src/core/solana/generated/single-chain/instructions/createLimitOrder.ts +57 -38
  415. package/src/core/solana/generated/single-chain/instructions/fulfillDcaOrderInterval.ts +78 -55
  416. package/src/core/solana/generated/single-chain/instructions/fulfillLimitOrder.ts +81 -55
  417. package/src/core/solana/generated/single-chain/instructions/initialize.ts +58 -40
  418. package/src/core/solana/generated/single-chain/instructions/setAdmin.ts +48 -30
  419. package/src/core/solana/generated/single-chain/instructions/setAuctioneerPubKey.ts +88 -40
  420. package/src/core/solana/generated/single-chain/programs/singleChainGuard.ts +76 -37
  421. package/src/core/solana/generated/single-chain/shared/index.ts +23 -14
  422. package/src/core/solana/generated/single-chain/types/adminUpdateStarted.ts +9 -6
  423. package/src/core/solana/generated/single-chain/types/adminUpdated.ts +6 -6
  424. package/src/core/solana/generated/single-chain/types/auctioneerPubkeyUpdated.ts +9 -6
  425. package/src/core/solana/generated/single-chain/types/dcaOrderCreated.ts +6 -6
  426. package/src/core/solana/generated/single-chain/types/dcaOrderFulfilled.ts +9 -6
  427. package/src/core/solana/generated/single-chain/types/dcaOrderIntervalFulfilled.ts +9 -6
  428. package/src/core/solana/generated/single-chain/types/guardCreated.ts +6 -6
  429. package/src/core/solana/generated/single-chain/types/limitOrderCreated.ts +9 -6
  430. package/src/core/solana/generated/single-chain/types/limitOrderFulfilled.ts +9 -6
  431. package/src/core/solana/generated/single-chain/types/orderCancelled.ts +6 -6
  432. package/src/core/solana/inspect.ts +1 -1
  433. package/src/core/solana/intent-helpers.ts +273 -0
  434. package/src/core/solana/order-instructions.ts +3 -3
  435. package/src/core/solana/sdk.ts +13 -4
  436. package/src/core/sui/cancel.ts +1 -1
  437. package/src/core/sui/cross-chain-limit-order.ts +34 -0
  438. package/src/core/sui/intent-helpers.ts +235 -0
  439. package/src/core/sui/order-transaction.ts +8 -4
  440. package/src/core/sui/sdk.ts +1 -1
  441. package/src/core/sui/single-chain-dca-order.ts +139 -0
  442. package/src/core/sui/single-chain-limit-order.ts +143 -0
  443. package/src/core/sui/validator.ts +1 -2
  444. package/src/index.ts +55 -0
  445. package/src/types/intent.ts +15 -4
@@ -0,0 +1,76 @@
1
+ import { ethers, type TypedDataField, type AddressLike, type BigNumberish } from "ethers";
2
+ import { SignatureTransfer } from "@uniswap/permit2-sdk";
3
+
4
+ export const OrderInfoType: Record<string, TypedDataField[]> = {
5
+ OrderInfo: [
6
+ { name: "user", type: "address" },
7
+ { name: "tokenIn", type: "address" },
8
+ { name: "srcChainId", type: "uint32" },
9
+ { name: "deadline", type: "uint32" },
10
+ { name: "amountIn", type: "uint128" },
11
+ { name: "minStablecoinsAmount", type: "uint128" },
12
+ { name: "executionDetailsHash", type: "bytes32" },
13
+ { name: "nonce", type: "uint256" },
14
+ ],
15
+ };
16
+
17
+ export type OrderInfoStruct = {
18
+ user: AddressLike;
19
+ tokenIn: AddressLike;
20
+ srcChainId: BigNumberish;
21
+ deadline: BigNumberish;
22
+ amountIn: BigNumberish;
23
+ minStablecoinsAmount: BigNumberish;
24
+ executionDetailsHash: string;
25
+ nonce: BigNumberish;
26
+ };
27
+
28
+ /**
29
+ * Signs Permit2 struct with OrderInfo
30
+ */
31
+ export async function signCrossChainLimitOrder(
32
+ signer: ethers.Wallet,
33
+ orderInfo: OrderInfoStruct,
34
+ chainId: number,
35
+ guardAddress: string,
36
+ permit2Address: string
37
+ ): Promise<{
38
+ domain: any;
39
+ types: any;
40
+ values: any;
41
+ signature: string;
42
+ }> {
43
+ const permitData = SignatureTransfer.getPermitData(
44
+ {
45
+ permitted: {
46
+ token: orderInfo.tokenIn.toString(),
47
+ amount: orderInfo.amountIn,
48
+ },
49
+ spender: guardAddress,
50
+ nonce: orderInfo.nonce,
51
+ deadline: orderInfo.deadline,
52
+ },
53
+ permit2Address,
54
+ chainId,
55
+ {
56
+ witness: orderInfo,
57
+ witnessTypeName: "OrderInfo",
58
+ witnessType: OrderInfoType,
59
+ }
60
+ );
61
+
62
+ return {
63
+ domain: permitData.domain,
64
+ types: permitData.types,
65
+ values: permitData.values,
66
+ signature: await signer.signTypedData(
67
+ {
68
+ name: permitData.domain.name,
69
+ chainId: Number(permitData.domain.chainId),
70
+ verifyingContract: permitData.domain.verifyingContract,
71
+ },
72
+ permitData.types,
73
+ permitData.values
74
+ ),
75
+ };
76
+ }
@@ -0,0 +1,204 @@
1
+ import type { SupportedEvmChain } from '../../chains.js';
2
+ import type { SingleChainUserIntentRequest, CrossChainUserIntentRequest, DcaSingleChainUserIntentRequest } from '../../types/intent.js';
3
+ import type { SingleChainOrder } from '../orders/single-chain.js';
4
+ import type { CrossChainOrder } from '../orders/cross-chain.js';
5
+ import type { DcaSingleChainOrder } from '../orders/dca-single-chain.js';
6
+ import type { ExtraTransfer } from '../orders/common.js';
7
+ import { getEVMCrossChainOrderTypedData, getEVMSingleChainOrderTypedData, getEVMDcaSingleChainOrderTypedData } from './order-signature.js';
8
+
9
+ export type CreateEvmSingleChainLimitOrderIntentParams = {
10
+ user: `0x${string}`;
11
+ chainId: SupportedEvmChain;
12
+ tokenIn: string;
13
+ tokenOut: string;
14
+ amountIn: bigint;
15
+ amountOutMin: bigint;
16
+ destinationAddress: string;
17
+ extraTransfers?: ExtraTransfer[];
18
+ deadline: number;
19
+ nonce?: string;
20
+ signature?: string;
21
+ stopLossMaxOut?: bigint;
22
+ takeProfitMinOut?: bigint;
23
+ };
24
+
25
+ export type CreateEvmSingleChainDcaOrderIntentParams = {
26
+ user: `0x${string}`;
27
+ chainId: SupportedEvmChain;
28
+ tokenIn: string;
29
+ tokenOut: string;
30
+ amountInPerInterval: bigint;
31
+ totalIntervals: number;
32
+ intervalDuration: number;
33
+ amountOutMin: bigint;
34
+ destinationAddress: string;
35
+ extraTransfers?: ExtraTransfer[];
36
+ deadline: number;
37
+ startTime: number;
38
+ nonce?: string;
39
+ signature?: string;
40
+ };
41
+
42
+ export type CreateEvmCrossChainOrderIntentParams = {
43
+ user: `0x${string}`;
44
+ sourceChainId: SupportedEvmChain;
45
+ sourceTokenAddress: string;
46
+ sourceTokenAmount: bigint;
47
+ destinationChainId: number;
48
+ destinationTokenAddress: string;
49
+ destinationTokenMinAmount?: bigint;
50
+ destinationAddress: string;
51
+ minStablecoinAmount?: bigint;
52
+ deadline: number;
53
+ extraTransfers?: ExtraTransfer[];
54
+ nonce?: string;
55
+ signature?: string;
56
+ stopLossMaxOut?: bigint;
57
+ takeProfitMinOut?: bigint;
58
+ };
59
+
60
+ /**
61
+ * Creates an EVM single-chain limit order intent request
62
+ * @param params Parameters for creating the intent request
63
+ * @returns Formatted intent request ready to send to auctioneer
64
+ */
65
+ export function createEvmSingleChainLimitOrderIntentRequest(
66
+ params: CreateEvmSingleChainLimitOrderIntentParams
67
+ ): SingleChainUserIntentRequest {
68
+ const order: SingleChainOrder = {
69
+ user: params.user,
70
+ chainId: params.chainId,
71
+ amountIn: params.amountIn,
72
+ tokenIn: params.tokenIn,
73
+ tokenOut: params.tokenOut,
74
+ amountOutMin: params.amountOutMin,
75
+ destinationAddress: params.destinationAddress,
76
+ extraTransfers: params.extraTransfers,
77
+ deadline: params.deadline,
78
+ stopLossMaxOut: params.stopLossMaxOut,
79
+ takeProfitMinOut: params.takeProfitMinOut,
80
+ } as SingleChainOrder;
81
+
82
+ return {
83
+ genericData: order,
84
+ chainSpecificData: {
85
+ EVM: {
86
+ nonce: params.nonce || String(Math.floor(Math.random() * 10000000)),
87
+ signature: params.signature || '0x0000000000000000000000000000000000000000000000000000000000000000',
88
+ },
89
+ },
90
+ };
91
+ }
92
+
93
+ /**
94
+ * Creates an EVM single-chain DCA order intent request
95
+ * @param params Parameters for creating the intent request
96
+ * @returns Formatted intent request ready to send to auctioneer
97
+ */
98
+ export function createEvmSingleChainDcaOrderIntentRequest(
99
+ params: CreateEvmSingleChainDcaOrderIntentParams
100
+ ): DcaSingleChainUserIntentRequest {
101
+ const order: DcaSingleChainOrder = {
102
+ user: params.user,
103
+ chainId: params.chainId,
104
+ tokenIn: params.tokenIn,
105
+ tokenOut: params.tokenOut,
106
+ destinationAddress: params.destinationAddress,
107
+ startTime: params.startTime,
108
+ amountInPerInterval: params.amountInPerInterval,
109
+ totalIntervals: params.totalIntervals,
110
+ intervalDuration: params.intervalDuration,
111
+ amountOutMin: params.amountOutMin,
112
+ extraTransfers: params.extraTransfers,
113
+ deadline: params.deadline,
114
+ } as DcaSingleChainOrder;
115
+
116
+ return {
117
+ genericData: order,
118
+ chainSpecificData: {
119
+ EVM: {
120
+ nonce: params.nonce || String(Math.floor(Math.random() * 10000000)),
121
+ signature: params.signature || '0x0000000000000000000000000000000000000000000000000000000000000000',
122
+ },
123
+ },
124
+ };
125
+ }
126
+
127
+ /**
128
+ * Creates an EVM cross-chain order intent request
129
+ * @param params Parameters for creating the intent request
130
+ * @returns Formatted intent request ready to send to auctioneer
131
+ */
132
+ export function createEvmCrossChainOrderIntentRequest(
133
+ params: CreateEvmCrossChainOrderIntentParams
134
+ ): CrossChainUserIntentRequest {
135
+ const executionDetails = JSON.stringify({
136
+ destChainId: params.destinationChainId,
137
+ tokenOut: params.destinationTokenAddress,
138
+ amountOutMin: params.destinationTokenMinAmount || 1n,
139
+ destinationAddress: params.destinationAddress,
140
+ extraTransfers: params.extraTransfers,
141
+ });
142
+
143
+ // Calculate execution details hash
144
+ const executionDetailsHash = `0x${require('crypto').createHash('sha256').update(executionDetails).digest('hex')}` as `0x${string}`;
145
+
146
+ const genericData = {
147
+ user: params.user,
148
+ srcChainId: params.sourceChainId,
149
+ tokenIn: params.sourceTokenAddress,
150
+ amountIn: params.sourceTokenAmount,
151
+ minStablecoinsAmount: params.minStablecoinAmount || 1n,
152
+ deadline: params.deadline,
153
+ executionDetailsHash,
154
+ extraTransfers: params.extraTransfers,
155
+ stopLossMaxOut: params.stopLossMaxOut,
156
+ takeProfitMinOut: params.takeProfitMinOut,
157
+ };
158
+
159
+ return {
160
+ genericData,
161
+ executionDetails,
162
+ chainSpecificData: {
163
+ EVM: {
164
+ nonce: params.nonce || String(Math.floor(Math.random() * 10000000)),
165
+ signature: params.signature || '0x0000000000000000000000000000000000000000000000000000000000000000',
166
+ },
167
+ },
168
+ };
169
+ }
170
+
171
+ /**
172
+ * Generates EVM typed data and nonce for single-chain limit orders
173
+ * @param order The single-chain order
174
+ * @returns Object containing typed data and nonce for signing
175
+ */
176
+ export async function generateEvmSingleChainLimitOrderTypedData(order: SingleChainOrder) {
177
+ return getEVMSingleChainOrderTypedData(order);
178
+ }
179
+
180
+ /**
181
+ * Generates EVM typed data and nonce for single-chain DCA orders
182
+ * @param order The DCA order
183
+ * @returns Object containing typed data and nonce for signing
184
+ */
185
+ export async function generateEvmSingleChainDcaOrderTypedData(order: DcaSingleChainOrder) {
186
+ return getEVMDcaSingleChainOrderTypedData(order);
187
+ }
188
+
189
+ /**
190
+ * Generates EVM typed data and nonce for cross-chain orders
191
+ * @param order The cross-chain order
192
+ * @returns Object containing typed data and nonce for signing
193
+ */
194
+ export async function generateEvmCrossChainOrderTypedData(order: CrossChainOrder) {
195
+ return getEVMCrossChainOrderTypedData(order);
196
+ }
197
+
198
+ /**
199
+ * Generates a random nonce for EVM orders
200
+ * @returns Random nonce as string
201
+ */
202
+ export function generateEvmRandomNonce(): string {
203
+ return String(Math.floor(Math.random() * 10000000));
204
+ }
@@ -0,0 +1,85 @@
1
+ import { ethers, type TypedDataField, type AddressLike, type BigNumberish, type BytesLike } from "ethers";
2
+ import { SignatureTransfer } from "@uniswap/permit2-sdk";
3
+ import { TransferDataType, type TransferDataStruct } from "./types.js";
4
+
5
+ export const SingleChainDcaOrderType: Record<string, TypedDataField[]> = {
6
+ SingleChainDcaOrder: [
7
+ { type: "address", name: "user" },
8
+ { type: "address", name: "tokenIn" },
9
+ { type: "uint32", name: "startTime" },
10
+ { type: "uint256", name: "amountInPerInterval" },
11
+ { type: "uint24", name: "totalIntervals" },
12
+ { type: "uint32", name: "intervalDuration" },
13
+ { type: "TransferData", name: "requestedOutput" },
14
+ { type: "TransferData[]", name: "extraTransfers" },
15
+ { type: "bytes", name: "encodedExternalCallData" },
16
+ { type: "uint32", name: "deadline" },
17
+ { type: "uint256", name: "nonce" },
18
+ ],
19
+ TransferData: TransferDataType.TransferData!,
20
+ };
21
+
22
+ export type SingleChainDcaOrderStruct = {
23
+ user: AddressLike;
24
+ tokenIn: AddressLike;
25
+ startTime: BigNumberish;
26
+ amountInPerInterval: BigNumberish;
27
+ totalIntervals: BigNumberish;
28
+ intervalDuration: BigNumberish;
29
+ requestedOutput: TransferDataStruct;
30
+ extraTransfers: TransferDataStruct[];
31
+ encodedExternalCallData: BytesLike;
32
+ deadline: BigNumberish;
33
+ nonce: BigNumberish;
34
+ };
35
+
36
+ /**
37
+ * Signs Permit2 struct with SingleChainDcaOrder
38
+ */
39
+ export async function signSingleChainDcaOrder(
40
+ signer: ethers.Wallet,
41
+ order: SingleChainDcaOrderStruct,
42
+ chainId: number,
43
+ guardAddress: string,
44
+ permit2Address: string
45
+ ): Promise<{
46
+ domain: any;
47
+ types: any;
48
+ values: any;
49
+ signature: string;
50
+ }> {
51
+ const amountIn = BigInt(order.totalIntervals) * BigInt(order.amountInPerInterval);
52
+ const permitData = SignatureTransfer.getPermitData(
53
+ {
54
+ permitted: {
55
+ token: order.tokenIn.toString(),
56
+ amount: amountIn,
57
+ },
58
+ spender: guardAddress,
59
+ nonce: order.nonce,
60
+ deadline: order.deadline,
61
+ },
62
+ permit2Address,
63
+ chainId,
64
+ {
65
+ witness: order,
66
+ witnessTypeName: "SingleChainDcaOrder",
67
+ witnessType: SingleChainDcaOrderType,
68
+ }
69
+ );
70
+
71
+ return {
72
+ domain: permitData.domain,
73
+ types: permitData.types,
74
+ values: permitData.values,
75
+ signature: await signer.signTypedData(
76
+ {
77
+ name: permitData.domain.name,
78
+ chainId: Number(permitData.domain.chainId),
79
+ verifyingContract: permitData.domain.verifyingContract,
80
+ },
81
+ permitData.types,
82
+ permitData.values
83
+ ),
84
+ };
85
+ }
@@ -0,0 +1,78 @@
1
+ import { ethers, type TypedDataField, type AddressLike, type BigNumberish, type BytesLike } from "ethers";
2
+ import { SignatureTransfer } from "@uniswap/permit2-sdk";
3
+ import { TransferDataType, type TransferDataStruct } from "./types.js";
4
+
5
+ export const SingleChainLimitOrderType: Record<string, TypedDataField[]> = {
6
+ SingleChainLimitOrder: [
7
+ { type: "address", name: "user" },
8
+ { type: "address", name: "tokenIn" },
9
+ { type: "uint256", name: "amountIn" },
10
+ { type: "TransferData", name: "requestedOutput" },
11
+ { type: "TransferData[]", name: "extraTransfers" },
12
+ { type: "bytes", name: "encodedExternalCallData" },
13
+ { type: "uint32", name: "deadline" },
14
+ { type: "uint256", name: "nonce" },
15
+ ],
16
+ TransferData: TransferDataType.TransferData!,
17
+ };
18
+
19
+ export type SingleChainLimitOrderStruct = {
20
+ user: AddressLike;
21
+ tokenIn: AddressLike;
22
+ amountIn: BigNumberish;
23
+ requestedOutput: TransferDataStruct;
24
+ extraTransfers: TransferDataStruct[];
25
+ encodedExternalCallData: BytesLike;
26
+ deadline: BigNumberish;
27
+ nonce: BigNumberish;
28
+ };
29
+
30
+ /**
31
+ * Signs Permit2 struct with SingleChainLimitOrder
32
+ */
33
+ export async function signSingleChainLimitOrder(
34
+ signer: ethers.Wallet,
35
+ order: SingleChainLimitOrderStruct,
36
+ chainId: number,
37
+ guardAddress: string,
38
+ permit2Address: string
39
+ ): Promise<{
40
+ domain: any;
41
+ types: any;
42
+ values: any;
43
+ signature: string;
44
+ }> {
45
+ const permitData = SignatureTransfer.getPermitData(
46
+ {
47
+ permitted: {
48
+ token: order.tokenIn.toString(),
49
+ amount: order.amountIn,
50
+ },
51
+ spender: guardAddress,
52
+ nonce: order.nonce,
53
+ deadline: order.deadline,
54
+ },
55
+ permit2Address,
56
+ chainId,
57
+ {
58
+ witness: order,
59
+ witnessTypeName: "SingleChainLimitOrder",
60
+ witnessType: SingleChainLimitOrderType,
61
+ }
62
+ );
63
+
64
+ return {
65
+ domain: permitData.domain,
66
+ types: permitData.types,
67
+ values: permitData.values,
68
+ signature: await signer.signTypedData(
69
+ {
70
+ name: permitData.domain.name,
71
+ chainId: Number(permitData.domain.chainId),
72
+ verifyingContract: permitData.domain.verifyingContract,
73
+ },
74
+ permitData.types,
75
+ permitData.values
76
+ ),
77
+ };
78
+ }
@@ -0,0 +1,15 @@
1
+ import type { AddressLike, BigNumberish, TypedDataField } from "ethers";
2
+
3
+ export const TransferDataType: Record<string, TypedDataField[]> = {
4
+ TransferData: [
5
+ { type: "address", name: "token" },
6
+ { type: "address", name: "receiver" },
7
+ { type: "uint256", name: "amount" },
8
+ ],
9
+ };
10
+
11
+ export type TransferDataStruct = {
12
+ token: AddressLike;
13
+ receiver: AddressLike;
14
+ amount: BigNumberish;
15
+ };
@@ -1,4 +1,4 @@
1
- import { OrderType } from '../../constants.js';
1
+ import { IntentsOrderType } from '../../constants.js';
2
2
  import type { CrossChainOrderPrepared, SingleChainOrderPrepared } from '../../types/intent.js';
3
3
 
4
4
  export type ExtraTransfer = {
@@ -10,10 +10,10 @@ export type ExtraTransfer = {
10
10
  amount: bigint;
11
11
  };
12
12
 
13
- export function getOrderType(order: SingleChainOrderPrepared | CrossChainOrderPrepared): OrderType {
13
+ export function getOrderType(order: SingleChainOrderPrepared | CrossChainOrderPrepared): IntentsOrderType {
14
14
  if ('tokenIn' in order.order) {
15
- return OrderType.SINGLE_CHAIN_LIMIT;
15
+ return IntentsOrderType.SINGLE_CHAIN_LIMIT;
16
16
  }
17
17
 
18
- return OrderType.CROSS_CHAIN_LIMIT;
18
+ return IntentsOrderType.CROSS_CHAIN_LIMIT;
19
19
  }
@@ -317,11 +317,11 @@ export class CrossChainOrder {
317
317
  return getSolanaCrossChainOrderInstructions(this);
318
318
  }
319
319
 
320
- public async toSuiTransaction() {
320
+ public async toSuiTransaction(client?: any) {
321
321
  if (this.sourceChainId !== ChainID.Sui) {
322
322
  throw new ValidationError('Source chain is not Sui');
323
323
  }
324
324
 
325
- return getSuiOrderTransaction(this);
325
+ return getSuiOrderTransaction(this, client);
326
326
  }
327
327
  }
@@ -94,7 +94,10 @@ export class DcaSingleChainOrder {
94
94
  };
95
95
  }
96
96
  case 'Sui': {
97
- throw new ValidationError('DCA orders are not supported on Sui');
97
+ return {
98
+ secretNumber: randomNumber,
99
+ transactionHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
100
+ };
98
101
  }
99
102
 
100
103
  default: {
@@ -94,7 +94,7 @@ export class SingleChainOrder {
94
94
  }
95
95
  case 'Sui': {
96
96
  const digest = 'FQWndwYJhNQUoHyvR8UuhGURC2EKx9eWErFm9Tc2DggF';
97
- return { transactionHash: digest };
97
+ return { transactionHash: digest, secretNumber: randomNumber };
98
98
  }
99
99
 
100
100
  default: {
@@ -178,4 +178,13 @@ export class SingleChainOrder {
178
178
 
179
179
  return getSolanaSingleChainOrderInstructions(this);
180
180
  }
181
+
182
+ public async toSuiTransaction(secretHash: Uint8Array, guardAddress: string, client?: any) {
183
+ if (this.chainId !== ChainID.Sui) {
184
+ throw new ValidationError('Chain id is not Sui');
185
+ }
186
+
187
+ const { getSuiSingleChainLimitOrderTransaction } = await import('../sui/single-chain-limit-order.js');
188
+ return getSuiSingleChainLimitOrderTransaction(this, secretHash, guardAddress, client);
189
+ }
181
190
  }
@@ -13,7 +13,7 @@ import {
13
13
  setTransactionMessageFeePayerSigner,
14
14
  setTransactionMessageLifetimeUsingBlockhash,
15
15
  type Address,
16
- type IInstruction,
16
+ type Instruction,
17
17
  type ReadonlyUint8Array,
18
18
  type TransactionMessageBytes,
19
19
  } from '@solana/kit';
@@ -31,7 +31,7 @@ import { fetchMaybeOrder, getCancelOrderInstruction } from './generated/cross-ch
31
31
  export async function cancelSingleChainOrderInstructions(
32
32
  orderAddress: string,
33
33
  options?: { rpcUrl?: string },
34
- ): Promise<IInstruction[]> {
34
+ ): Promise<Instruction[]> {
35
35
  const rpc = options?.rpcUrl ? createSolanaRpc(options.rpcUrl) : getDefaultSolanaRPC();
36
36
 
37
37
  const orderId = address(orderAddress);
@@ -41,7 +41,7 @@ export async function cancelSingleChainOrderInstructions(
41
41
  throw new Error(`Order with address ${orderAddress} not found`);
42
42
  }
43
43
 
44
- const instructions: IInstruction[] = [];
44
+ const instructions: Instruction[] = [];
45
45
  const orderUserAddress = chainOrder.data.user;
46
46
 
47
47
  const tokenInMint = chainOrder.data.tokenInMint;
@@ -149,7 +149,7 @@ export async function cancelSingleChainOrderInstructionsAsBytes(
149
149
  export async function cancelCrossChainOrderInstructions(
150
150
  orderAddress: string,
151
151
  options?: { rpcUrl?: string },
152
- ): Promise<IInstruction[]> {
152
+ ): Promise<Instruction[]> {
153
153
  const rpc = options?.rpcUrl ? createSolanaRpc(options.rpcUrl) : getDefaultSolanaRPC();
154
154
  const orderId = address(orderAddress);
155
155
 
@@ -158,7 +158,7 @@ export async function cancelCrossChainOrderInstructions(
158
158
  throw new Error(`Order with address ${orderAddress} not found`);
159
159
  }
160
160
 
161
- const instructions: IInstruction[] = [];
161
+ const instructions: Instruction[] = [];
162
162
  const orderUserAddress = chainOrder.data.user;
163
163
  const guardAddress = CROSS_CHAIN_GUARD_ADDRESSES[ChainID.Solana] as Address;
164
164
  const addressEncoder = getAddressEncoder();
@@ -5,7 +5,7 @@ import {
5
5
  type RpcSubscriptions,
6
6
  type SolanaRpcApiMainnet,
7
7
  type SolanaRpcSubscriptionsApi,
8
- sendAndConfirmTransactionFactory,
8
+ sendAndConfirmTransactionFactory
9
9
  } from '@solana/kit';
10
10
  import type { SolanaConfig } from '../../config.js';
11
11
 
@@ -0,0 +1,24 @@
1
+ import { createHash } from "crypto";
2
+
3
+ /**
4
+ * Generate execution details hash for cross-chain orders
5
+ * @param destChainId Destination chain ID
6
+ * @param destinationAddress Destination address on target chain
7
+ * @param tokenOut Token address on destination chain
8
+ * @param amountOutMin Minimum amount out
9
+ */
10
+ export function generateExecutionDetailsHash(
11
+ destChainId: number,
12
+ destinationAddress: string,
13
+ tokenOut: string,
14
+ amountOutMin: string,
15
+ ): Uint8Array {
16
+ const executionDetails = JSON.stringify({
17
+ destChainId,
18
+ destinationAddress,
19
+ tokenOut,
20
+ amountOutMin,
21
+ });
22
+
23
+ return new Uint8Array(createHash('sha256').update(executionDetails).digest());
24
+ }
@@ -6,7 +6,7 @@ import {
6
6
  getAddressEncoder,
7
7
  getProgramDerivedAddress,
8
8
  type Address,
9
- type IInstruction,
9
+ type Instruction,
10
10
  } from '@solana/kit';
11
11
  import { getDefaultSolanaRPC } from '../client.js';
12
12
  import { fetchMaybeDcaOrder, getCancelDcaOrderInstruction } from '../generated/single-chain/index.js';
@@ -21,7 +21,7 @@ import { ChainID } from '../../../chains.js';
21
21
  export async function cancelDcaSingleChainOrderInstructions(
22
22
  orderAddress: string,
23
23
  options?: { rpcUrl?: string },
24
- ): Promise<IInstruction[]> {
24
+ ): Promise<Instruction[]> {
25
25
  const rpc = options?.rpcUrl ? createSolanaRpc(options.rpcUrl) : getDefaultSolanaRPC();
26
26
 
27
27
  const orderId = address(orderAddress);
@@ -31,7 +31,7 @@ export async function cancelDcaSingleChainOrderInstructions(
31
31
  throw new Error(`Order with address ${orderAddress} not found`);
32
32
  }
33
33
 
34
- const instructions: IInstruction[] = [];
34
+ const instructions: Instruction[] = [];
35
35
  const orderUserAddress = chainOrder.data.user;
36
36
 
37
37
  const tokenInMint = chainOrder.data.tokenInMint;
@@ -15,7 +15,7 @@ import {
15
15
  setTransactionMessageFeePayerSigner,
16
16
  setTransactionMessageLifetimeUsingBlockhash,
17
17
  type Address,
18
- type IInstruction,
18
+ type Instruction,
19
19
  } from '@solana/kit';
20
20
  import type { DcaSingleChainOrder } from '../../orders/dca-single-chain.js';
21
21
  import type { SolanaOrderInstructionResult } from '../order-instructions.js';
@@ -59,7 +59,7 @@ export async function getSolanaDcaSingleChainOrderInstructions(
59
59
 
60
60
  const guardAddress = address(SINGLE_CHAIN_GUARD_ADDRESSES[ChainID.Solana]); // Assuming DCA uses same guard
61
61
  const addressEncoder = getAddressEncoder();
62
- const instructions: Array<IInstruction> = [];
62
+ const instructions: Array<Instruction> = [];
63
63
 
64
64
  const [tokenInProgramAccount] = await getProgramDerivedAddress({
65
65
  programAddress: ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
@@ -0,0 +1,32 @@
1
+ import { BN } from "@coral-xyz/anchor";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { keccak256 } from "js-sha3";
4
+ import type { ExtraTransfer } from "./single-chain-limit-order.js";
5
+
6
+ /**
7
+ * Generate secret number and prepare secret hash for single chain DCA orders
8
+ * @param tokenOut Token OUT Pubkey
9
+ * @param receiver Token OUT receiver Pubkey
10
+ * @param extraTransfers Requested extra transfers
11
+ */
12
+ export function prepareDcaSecretData(
13
+ tokenOut: PublicKey,
14
+ receiver: PublicKey,
15
+ extraTransfers: ExtraTransfer[],
16
+ ) {
17
+ const secretNumber = new BN(crypto.getRandomValues(new Uint8Array(8)));
18
+ const secretHash = [...Uint8Array.from(Buffer.from(
19
+ keccak256([
20
+ ...tokenOut.toBuffer(),
21
+ ...receiver.toBuffer(),
22
+ ...Buffer.concat(extraTransfers.map(t => Buffer.concat([
23
+ t.token.toBuffer(),
24
+ t.receiver.toBuffer(),
25
+ ]))),
26
+ ...secretNumber.toBuffer('le', 8),
27
+ ]),
28
+ 'hex'
29
+ ))];
30
+
31
+ return { secretHash, secretNumber };
32
+ }