@shogun-sdk/intents-sdk 1.2.1 → 1.2.2

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
@@ -16,12 +16,16 @@ import type { CrossChainOrder } from '../orders/cross-chain.js';
16
16
  /**
17
17
  * Generates Sui order transaction for creating an order
18
18
  * @param order The order to generate transaction for
19
+ * @param client The Sui client instance (optional, creates new if not provided)
19
20
  * @returns Object containing the transaction
20
21
  */
21
- export async function getSuiOrderTransaction(order: CrossChainOrder): Promise<Transaction> {
22
+ export async function getSuiOrderTransaction(
23
+ order: CrossChainOrder,
24
+ client?: ReturnType<typeof createSuiClient>
25
+ ): Promise<Transaction> {
22
26
  const userAddress = order.user;
23
- const client = createSuiClient();
24
- const coins = await client.getCoins({
27
+ const suiClient = client || createSuiClient();
28
+ const coins = await suiClient.getCoins({
25
29
  owner: userAddress,
26
30
  coinType: order.sourceTokenAddress,
27
31
  });
@@ -62,7 +66,7 @@ export async function getSuiOrderTransaction(order: CrossChainOrder): Promise<Tr
62
66
 
63
67
  tx.moveCall({
64
68
  package: SUI_PACKAGE_ID,
65
- module: 'source_chain_guard',
69
+ module: 'cross_chain_limit_orders',
66
70
  function: 'create_order',
67
71
  arguments: [
68
72
  tx.object(guardAddress), // arg0: &Guard<T0, T2>
@@ -102,7 +102,7 @@ export class SuiSDK extends BaseSDK {
102
102
  protected override async prepareCrossChainOrder(order: CrossChainOrder): Promise<CrossChainOrderPrepared> {
103
103
  const signer = this.getKeyPair();
104
104
 
105
- const transaction = await getSuiOrderTransaction(order);
105
+ const transaction = await getSuiOrderTransaction(order, this.client);
106
106
 
107
107
  const tx = await this.client.signAndExecuteTransaction({
108
108
  signer,
@@ -0,0 +1,139 @@
1
+ import { bcs, fromHex } from '@mysten/bcs';
2
+ import { keccak256 } from "js-sha3";
3
+ import { normalizeStructTag, normalizeSuiAddress, normalizeSuiObjectId } from "@mysten/sui/utils";
4
+ import { Transaction } from '@mysten/sui/transactions';
5
+ import { ValidationError } from '../../errors/index.js';
6
+ import { createSuiClient } from './client.js';
7
+ import { SUI_PACKAGE_ID, SUI_GUARD_COLLATERAL_TYPE, SUI_GUARD_STABLECOIN_TYPE, NATIVE_SUI_TOKEN_ADDRESS } from '../../constants.js';
8
+ import type { DcaSingleChainOrder } from '../orders/dca-single-chain.js';
9
+
10
+ /**
11
+ * Generates secret hash based on types, addresses and secret number for single chain DCA orders
12
+ * @param coinOutType Type tag of Coin OUT
13
+ * @param receiver Main Coins OUT receiver
14
+ * @param secretNumber Secret number, for hash randomness
15
+ * @param extraTransferCoinOut Type tag of extra transfer coin OUT
16
+ * @param extraTransferReceiver Receiver of extra transfer
17
+ */
18
+ export function getDcaSecretHash(
19
+ coinOutType: string,
20
+ receiver: string,
21
+ secretNumber: string,
22
+ extraTransferCoinOut?: string,
23
+ extraTransferReceiver?: string,
24
+ ) {
25
+ const coinOutTypeBytes = Buffer.from(
26
+ normalizeStructTag(coinOutType).replace("0x", ""),
27
+ "utf8"
28
+ );
29
+ const receiverBytes = fromHex(normalizeSuiAddress(receiver));
30
+
31
+ let resBytes = [
32
+ ...coinOutTypeBytes,
33
+ ...receiverBytes,
34
+ ];
35
+ if (extraTransferCoinOut && extraTransferReceiver) {
36
+ const extraTransferCoinOutBytes = Buffer.from(
37
+ normalizeStructTag(extraTransferCoinOut).replace("0x", ""),
38
+ "utf8"
39
+ );
40
+ const extraTransferReceiverBytes = fromHex(normalizeSuiAddress(extraTransferReceiver));
41
+
42
+ resBytes = [
43
+ ...resBytes,
44
+ ...extraTransferCoinOutBytes,
45
+ ...extraTransferReceiverBytes,
46
+ ];
47
+ }
48
+
49
+ resBytes = [
50
+ ...resBytes,
51
+ ...bcs.u64().serialize(secretNumber).toBytes(),
52
+ ];
53
+
54
+ return keccak256.array(resBytes);
55
+ }
56
+
57
+ /**
58
+ * Generates Sui single-chain DCA order transaction
59
+ * @param order The DCA order to generate transaction for
60
+ * @param secretHash The secret hash for the order
61
+ * @param guardAddress The guard contract address
62
+ * @param client The Sui client instance
63
+ * @returns Transaction object for creating the DCA order
64
+ */
65
+ export async function getSuiSingleChainDcaOrderTransaction(
66
+ order: DcaSingleChainOrder,
67
+ secretHash: Uint8Array,
68
+ guardAddress: string,
69
+ client?: ReturnType<typeof createSuiClient>
70
+ ): Promise<Transaction> {
71
+ const userAddress = order.user;
72
+ const suiClient = client || createSuiClient();
73
+ const totalAmountIn = order.getTotalAmountIn();
74
+
75
+ const coins = await suiClient.getCoins({
76
+ owner: userAddress,
77
+ coinType: order.tokenIn,
78
+ });
79
+
80
+ const sourceTokenInCoins = coins.data.sort((a, b) => Number(b.balance) - Number(a.balance));
81
+
82
+ if (sourceTokenInCoins.length === 0) {
83
+ throw new ValidationError(`No token (${order.tokenIn}) to create order`);
84
+ }
85
+
86
+ const coinsInSum = sourceTokenInCoins.reduce((acc, coin) => acc + BigInt(coin.balance), 0n);
87
+
88
+ if (coinsInSum < totalAmountIn) {
89
+ throw new ValidationError(
90
+ `Insufficient balance to create order. Total coins is ${coinsInSum}, but order requires ${totalAmountIn}`,
91
+ );
92
+ }
93
+
94
+ const spendingGasCoin =
95
+ normalizeSuiObjectId(order.tokenIn) === normalizeSuiObjectId(NATIVE_SUI_TOKEN_ADDRESS);
96
+
97
+ const tx = new Transaction();
98
+ const coinInArg = spendingGasCoin ? tx.gas : sourceTokenInCoins[0]!.coinObjectId;
99
+
100
+ if (sourceTokenInCoins.length > 1) {
101
+ // Merging coins IN into a single object just in case
102
+ tx.mergeCoins(
103
+ // merge into 1st coin object
104
+ coinInArg,
105
+ // merge the rest of coins
106
+ sourceTokenInCoins.slice(1).map((coin) => coin.coinObjectId),
107
+ );
108
+ }
109
+
110
+ const [coinIn] = tx.splitCoins(coinInArg, [totalAmountIn]);
111
+
112
+ // Get extra transfer amount - only first extra transfer is supported on Sui
113
+ const extraTransferAmount = order.extraTransfers && order.extraTransfers.length > 0
114
+ ? BigInt(order.extraTransfers[0]!.amount)
115
+ : 0n;
116
+
117
+ tx.moveCall({
118
+ package: SUI_PACKAGE_ID,
119
+ module: 'single_chain_dca_orders',
120
+ function: 'create_dca_order',
121
+ arguments: [
122
+ tx.object(guardAddress), // arg0: &Guard<T0, T2>
123
+ coinIn, // arg1: Coin<T1>
124
+ tx.pure.u64(order.amountInPerInterval), // arg2: amount_in_per_interval
125
+ tx.pure.u64(order.amountOutMin), // arg3: amount_out_min
126
+ tx.pure.u64(extraTransferAmount), // arg4: extra_transfer_amount_out_min
127
+ tx.pure.u64(order.deadline * 1000), // arg5: deadline (converted to milliseconds)
128
+ tx.pure.u32(order.totalIntervals), // arg6: total_intervals
129
+ tx.pure.u64(order.intervalDuration * 1000), // arg7: interval_duration (converted to milliseconds)
130
+ tx.pure.vector('u8', [...secretHash]), // arg8: secret_hash
131
+ tx.object.clock(), // arg9: &Clock
132
+ ],
133
+ typeArguments: [SUI_GUARD_COLLATERAL_TYPE, order.tokenIn, SUI_GUARD_STABLECOIN_TYPE],
134
+ });
135
+
136
+ tx.setSender(userAddress);
137
+
138
+ return tx;
139
+ }
@@ -0,0 +1,143 @@
1
+ import { bcs, fromHex } from '@mysten/bcs';
2
+ import { keccak256 } from "js-sha3";
3
+ import { normalizeStructTag, normalizeSuiAddress, normalizeSuiObjectId } from "@mysten/sui/utils";
4
+ import { Transaction } from '@mysten/sui/transactions';
5
+ import { ValidationError } from '../../errors/index.js';
6
+ import { createSuiClient } from './client.js';
7
+ import { SUI_PACKAGE_ID, SUI_GUARD_COLLATERAL_TYPE, SUI_GUARD_STABLECOIN_TYPE, NATIVE_SUI_TOKEN_ADDRESS } from '../../constants.js';
8
+ import type { SingleChainOrder } from '../orders/single-chain.js';
9
+
10
+ /**
11
+ * Generates random U64 number
12
+ */
13
+ export function getRandomU64Number() {
14
+ return BigInt("0x" + [...crypto.getRandomValues(new Uint8Array(8))]
15
+ .map(n => n.toString(16))
16
+ .join("")).toString();
17
+ }
18
+
19
+ /**
20
+ * Generates secret hash based on types, addresses and secret number for single chain limit orders
21
+ * @param coinOutType Type tag of Coin OUT
22
+ * @param receiver Main Coins OUT receiver
23
+ * @param secretNumber Secret number, for hash randomness
24
+ * @param extraTransferCoinOut Type tag of extra transfer coin OUT
25
+ * @param extraTransferReceiver Receiver of extra transfer
26
+ */
27
+ export function getSecretHash(
28
+ coinOutType: string,
29
+ receiver: string,
30
+ secretNumber: string,
31
+ extraTransferCoinOut?: string,
32
+ extraTransferReceiver?: string,
33
+ ) {
34
+ const coinOutTypeBytes = Buffer.from(
35
+ normalizeStructTag(coinOutType).replace("0x", ""),
36
+ "utf8"
37
+ );
38
+ const receiverBytes = fromHex(normalizeSuiAddress(receiver));
39
+
40
+ let resBytes = [
41
+ ...coinOutTypeBytes,
42
+ ...receiverBytes,
43
+ ];
44
+ if (extraTransferCoinOut && extraTransferReceiver) {
45
+ const extraTransferCoinOutBytes = Buffer.from(
46
+ normalizeStructTag(extraTransferCoinOut).replace("0x", ""),
47
+ "utf8"
48
+ );
49
+ const extraTransferReceiverBytes = fromHex(normalizeSuiAddress(extraTransferReceiver));
50
+
51
+ resBytes = [
52
+ ...resBytes,
53
+ ...extraTransferCoinOutBytes,
54
+ ...extraTransferReceiverBytes,
55
+ ];
56
+ }
57
+
58
+ resBytes = [
59
+ ...resBytes,
60
+ ...bcs.u64().serialize(secretNumber).toBytes(),
61
+ ];
62
+
63
+ return keccak256.array(resBytes);
64
+ }
65
+
66
+ /**
67
+ * Generates Sui single-chain limit order transaction
68
+ * @param order The single-chain order to generate transaction for
69
+ * @param secretHash The secret hash for the order
70
+ * @param guardAddress The guard contract address
71
+ * @param client The Sui client instance
72
+ * @returns Transaction object for creating the limit order
73
+ */
74
+ export async function getSuiSingleChainLimitOrderTransaction(
75
+ order: SingleChainOrder,
76
+ secretHash: Uint8Array,
77
+ guardAddress: string,
78
+ client?: ReturnType<typeof createSuiClient>
79
+ ): Promise<Transaction> {
80
+ const userAddress = order.user;
81
+ const suiClient = client || createSuiClient();
82
+ const coins = await suiClient.getCoins({
83
+ owner: userAddress,
84
+ coinType: order.tokenIn,
85
+ });
86
+
87
+ const sourceTokenInCoins = coins.data.sort((a, b) => Number(b.balance) - Number(a.balance));
88
+
89
+ if (sourceTokenInCoins.length === 0) {
90
+ throw new ValidationError(`No token (${order.tokenIn}) to create order`);
91
+ }
92
+
93
+ const coinsInSum = sourceTokenInCoins.reduce((acc, coin) => acc + BigInt(coin.balance), 0n);
94
+
95
+ if (coinsInSum < order.amountIn) {
96
+ throw new ValidationError(
97
+ `Insufficient balance to create order. Total coins is ${coinsInSum}, but order requires ${order.amountIn}`,
98
+ );
99
+ }
100
+
101
+ const spendingGasCoin =
102
+ normalizeSuiObjectId(order.tokenIn) === normalizeSuiObjectId(NATIVE_SUI_TOKEN_ADDRESS);
103
+
104
+ const tx = new Transaction();
105
+ const coinInArg = spendingGasCoin ? tx.gas : sourceTokenInCoins[0]!.coinObjectId;
106
+
107
+ if (sourceTokenInCoins.length > 1) {
108
+ // Merging coins IN into a single object just in case
109
+ tx.mergeCoins(
110
+ // merge into 1st coin object
111
+ coinInArg,
112
+ // merge the rest of coins
113
+ sourceTokenInCoins.slice(1).map((coin) => coin.coinObjectId),
114
+ );
115
+ }
116
+
117
+ const [coinIn] = tx.splitCoins(coinInArg, [order.amountIn]);
118
+
119
+ // Get extra transfer amount - only first extra transfer is supported on Sui
120
+ const extraTransferAmount = order.extraTransfers && order.extraTransfers.length > 0
121
+ ? BigInt(order.extraTransfers[0]!.amount)
122
+ : 0n;
123
+
124
+ tx.moveCall({
125
+ package: SUI_PACKAGE_ID,
126
+ module: 'single_chain_limit_orders',
127
+ function: 'create_limit_order',
128
+ arguments: [
129
+ tx.object(guardAddress), // arg0: &Guard<T0, T2>
130
+ coinIn, // arg1: Coin<T1>
131
+ tx.pure.u64(order.amountOutMin), // arg2: amount_out_min
132
+ tx.pure.u64(extraTransferAmount), // arg3: extra_transfer_amount_out_min
133
+ tx.pure.u64(order.deadline * 1000), // arg4: deadline (converted to milliseconds)
134
+ tx.pure.vector('u8', [...secretHash]), // arg5: secret_hash
135
+ tx.object.clock(), // arg6: &Clock
136
+ ],
137
+ typeArguments: [SUI_GUARD_COLLATERAL_TYPE, order.tokenIn, SUI_GUARD_STABLECOIN_TYPE],
138
+ });
139
+
140
+ tx.setSender(userAddress);
141
+
142
+ return tx;
143
+ }
@@ -1,7 +1,6 @@
1
1
  import { isValidSuiAddress, normalizeSuiAddress } from '@mysten/sui/utils';
2
2
  import { MAX_UINT_64 } from '../../constants.js';
3
3
  import { BaseValidator } from '../../utils/base-validator.js';
4
- import { ValidationError } from '../../errors/index.js';
5
4
 
6
5
  const SUI_TOKEN_ADDRESS_REGEX = /^0x[a-fA-F0-9]{64}::\w+::\w+$/;
7
6
 
@@ -36,6 +35,6 @@ export class SuiValidator extends BaseValidator {
36
35
  }
37
36
 
38
37
  override validateDcaSingleChainOrderFeasability(): Promise<void> {
39
- throw new ValidationError('DCA orders are not supported on Sui');
38
+ return Promise.resolve();
40
39
  }
41
40
  }
package/src/index.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export { DcaSingleChainOrder, type CreateDcaSingleChainOrderParams } from './core/orders/dca-single-chain.js';
2
+
1
3
  export { ChainID, ChainType, SupportedChains, isSupportedChain, chainIdToChainTypeMap, isEvmChain } from './chains.js';
2
4
  export type { SupportedEvmChain, SupportedChain } from './chains.js';
3
5
 
@@ -47,8 +49,61 @@ export {
47
49
  } from './core/solana/cancel-order.js';
48
50
  export { getSuiOrderTransaction } from './core/sui/order-transaction.js';
49
51
  export { getSuiCancelCrossChainOrder } from './core/sui/cancel.js';
52
+ export { getDcaSecretHash, getSuiSingleChainDcaOrderTransaction } from './core/sui/single-chain-dca-order.js';
53
+ export { getSecretHash, getRandomU64Number as getSuiRandomU64Number, getSuiSingleChainLimitOrderTransaction } from './core/sui/single-chain-limit-order.js';
54
+ export { generateExecutionDetailsHash } from './core/sui/cross-chain-limit-order.js';
55
+ export {
56
+ createSuiSingleChainLimitOrderIntentRequest,
57
+ createSuiSingleChainDcaOrderIntentRequest,
58
+ createSuiCrossChainOrderIntentRequest,
59
+ generateSuiLimitOrderSecretData,
60
+ generateSuiDcaOrderSecretData,
61
+ type CreateSuiSingleChainLimitOrderIntentParams,
62
+ type CreateSuiSingleChainDcaOrderIntentParams,
63
+ type CreateSuiCrossChainOrderIntentParams,
64
+ } from './core/sui/intent-helpers.js';
65
+
66
+ export * from './constants.js'
67
+
68
+ export { getSolanaDcaSingleChainOrderInstructions } from './core/solana/dca/create-order.js';
69
+
70
+ export { signSingleChainDcaOrder } from './core/evm/single-chain-dca-order.js';
71
+ export { signSingleChainLimitOrder } from './core/evm/single-chain-limit-order.js';
50
72
 
51
73
  export { QuoteProvider } from './utils/quote/aggregator.js';
52
74
  export type { QuoteResponse } from './utils/quote/aggregator.js';
53
75
 
54
76
  export { CROSS_CHAIN_GUARD_ADDRESSES, SINGLE_CHAIN_GUARD_ADDRESSES, PERMIT2_ADDRESS } from './constants.js';
77
+
78
+ export { prepareDcaSecretData, } from './core/solana/dca/single-chain-dca-order.js'
79
+ export { prepareSecretData } from './core/solana/dca/single-chain-limit-order.js'
80
+
81
+ // EVM Intent Helpers
82
+ export {
83
+ createEvmSingleChainLimitOrderIntentRequest,
84
+ createEvmSingleChainDcaOrderIntentRequest,
85
+ createEvmCrossChainOrderIntentRequest,
86
+ generateEvmSingleChainLimitOrderTypedData,
87
+ generateEvmSingleChainDcaOrderTypedData,
88
+ generateEvmCrossChainOrderTypedData,
89
+ generateEvmRandomNonce,
90
+ type CreateEvmSingleChainLimitOrderIntentParams,
91
+ type CreateEvmSingleChainDcaOrderIntentParams,
92
+ type CreateEvmCrossChainOrderIntentParams,
93
+ } from './core/evm/intent-helpers.js';
94
+
95
+ // Solana Intent Helpers
96
+ export {
97
+ createSolanaSingleChainLimitOrderIntentRequest,
98
+ createSolanaSingleChainDcaOrderIntentRequest,
99
+ createSolanaCrossChainOrderIntentRequest,
100
+ generateSolanaSingleChainLimitOrderInstructions,
101
+ generateSolanaSingleChainDcaOrderInstructions,
102
+ generateSolanaCrossChainOrderInstructions,
103
+ generateSolanaLimitOrderSecretData,
104
+ generateSolanaDcaOrderSecretData,
105
+ generateSolanaRandomSecretNumber,
106
+ type CreateSolanaSingleChainLimitOrderIntentParams,
107
+ type CreateSolanaSingleChainDcaOrderIntentParams,
108
+ type CreateSolanaCrossChainOrderIntentParams,
109
+ } from './core/solana/intent-helpers.js';
@@ -35,11 +35,15 @@ export type EvmPreparedData = {
35
35
  export type SuiPreparedData = {
36
36
  /** Transaction hash of the successful order creation transaction */
37
37
  transactionHash: string;
38
+ /** Secret number for single-chain orders (optional for cross-chain) */
39
+ secretNumber?: string;
38
40
  };
39
41
 
40
42
  export type SolanaPreparedData = {
41
43
  /** Public key of the created order account on Solana */
42
44
  orderPubkey: string;
45
+ /** Secret number for single-chain orders (optional for cross-chain) */
46
+ secretNumber?: string;
43
47
  };
44
48
 
45
49
  /**
@@ -78,8 +82,9 @@ export type CrossChainUserIntentRequest = {
78
82
  /** Solana-specific data */
79
83
  Solana?: SolanaPreparedData;
80
84
  /** Sui-specific data */
81
- Sui?: SolanaPreparedData;
85
+ Sui?: SuiPreparedData;
82
86
  };
87
+
83
88
  };
84
89
 
85
90
  export type SingleChainUserIntentRequest = {
@@ -87,7 +92,7 @@ export type SingleChainUserIntentRequest = {
87
92
  chainSpecificData: {
88
93
  EVM?: EvmPreparedData;
89
94
  Solana?: SolanaPreparedData;
90
- Sui?: SolanaPreparedData;
95
+ Sui?: SuiPreparedData;
91
96
  };
92
97
  };
93
98
 
@@ -110,6 +115,7 @@ export type SingleChainSolanaPreparedData = {
110
115
 
111
116
  export type SingleChainSuiPreparedData = {
112
117
  transactionHash: string;
118
+ secretNumber: string;
113
119
  };
114
120
 
115
121
  export type SingleChainPreparedData =
@@ -122,12 +128,17 @@ export type SingleChainOrderPrepared = {
122
128
  preparedData: SingleChainPreparedData;
123
129
  };
124
130
 
131
+ export type DcaSingleChainSuiPreparedData = {
132
+ transactionHash: string;
133
+ secretNumber: string;
134
+ };
135
+
125
136
  export type DcaSingleChainUserIntentRequest = {
126
137
  genericData: DcaSingleChainOrder;
127
138
  chainSpecificData: {
128
139
  EVM?: DcaSingleChainEVMPreparedData;
129
140
  Solana?: DcaSingleChainSolanaPreparedData;
130
- Sui?: never; // DCA not supported on Sui
141
+ Sui?: DcaSingleChainSuiPreparedData; // DCA is now supported on Sui
131
142
  };
132
143
  };
133
144
 
@@ -141,7 +152,7 @@ export type DcaSingleChainSolanaPreparedData = {
141
152
  orderPubkey: string;
142
153
  };
143
154
 
144
- export type DcaSingleChainPreparedData = DcaSingleChainEVMPreparedData | DcaSingleChainSolanaPreparedData;
155
+ export type DcaSingleChainPreparedData = DcaSingleChainEVMPreparedData | DcaSingleChainSolanaPreparedData | DcaSingleChainSuiPreparedData;
145
156
 
146
157
  export type DcaSingleChainOrderPrepared = {
147
158
  order: DcaSingleChainOrder;