@shogun-sdk/intents-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/README.md +124 -0
  2. package/dist/_esm/chains.js +46 -0
  3. package/dist/_esm/chains.js.map +1 -0
  4. package/dist/_esm/config.js +2 -0
  5. package/dist/_esm/config.js.map +1 -0
  6. package/dist/_esm/constants.js +46 -0
  7. package/dist/_esm/constants.js.map +1 -0
  8. package/dist/_esm/core/evm/abi/erc20.js +313 -0
  9. package/dist/_esm/core/evm/abi/erc20.js.map +1 -0
  10. package/dist/_esm/core/evm/abi/source-chain-guard.js +1716 -0
  11. package/dist/_esm/core/evm/abi/source-chain-guard.js.map +1 -0
  12. package/dist/_esm/core/evm/intent-provider.js +59 -0
  13. package/dist/_esm/core/evm/intent-provider.js.map +1 -0
  14. package/dist/_esm/core/evm/order-signature.js +19 -0
  15. package/dist/_esm/core/evm/order-signature.js.map +1 -0
  16. package/dist/_esm/core/evm/permit2.js +31 -0
  17. package/dist/_esm/core/evm/permit2.js.map +1 -0
  18. package/dist/_esm/core/evm/sdk.js +79 -0
  19. package/dist/_esm/core/evm/sdk.js.map +1 -0
  20. package/dist/_esm/core/evm/validator.js +46 -0
  21. package/dist/_esm/core/evm/validator.js.map +1 -0
  22. package/dist/_esm/core/evm/viem-provider.js +76 -0
  23. package/dist/_esm/core/evm/viem-provider.js.map +1 -0
  24. package/dist/_esm/core/order.js +190 -0
  25. package/dist/_esm/core/order.js.map +1 -0
  26. package/dist/_esm/core/sdk.js +120 -0
  27. package/dist/_esm/core/sdk.js.map +1 -0
  28. package/dist/_esm/core/solana/client.js +19 -0
  29. package/dist/_esm/core/solana/client.js.map +1 -0
  30. package/dist/_esm/core/solana/generated/accounts/adminSingleton.js +56 -0
  31. package/dist/_esm/core/solana/generated/accounts/adminSingleton.js.map +1 -0
  32. package/dist/_esm/core/solana/generated/accounts/guard.js +62 -0
  33. package/dist/_esm/core/solana/generated/accounts/guard.js.map +1 -0
  34. package/dist/_esm/core/solana/generated/accounts/index.js +11 -0
  35. package/dist/_esm/core/solana/generated/accounts/index.js.map +1 -0
  36. package/dist/_esm/core/solana/generated/accounts/order.js +78 -0
  37. package/dist/_esm/core/solana/generated/accounts/order.js.map +1 -0
  38. package/dist/_esm/core/solana/generated/errors/index.js +9 -0
  39. package/dist/_esm/core/solana/generated/errors/index.js.map +1 -0
  40. package/dist/_esm/core/solana/generated/errors/sourceChainGuard.js +35 -0
  41. package/dist/_esm/core/solana/generated/errors/sourceChainGuard.js.map +1 -0
  42. package/dist/_esm/core/solana/generated/index.js +13 -0
  43. package/dist/_esm/core/solana/generated/index.js.map +1 -0
  44. package/dist/_esm/core/solana/generated/instructions/cancelOrder.js +125 -0
  45. package/dist/_esm/core/solana/generated/instructions/cancelOrder.js.map +1 -0
  46. package/dist/_esm/core/solana/generated/instructions/claimTokens.js +142 -0
  47. package/dist/_esm/core/solana/generated/instructions/claimTokens.js.map +1 -0
  48. package/dist/_esm/core/solana/generated/instructions/collectProtocolFees.js +146 -0
  49. package/dist/_esm/core/solana/generated/instructions/collectProtocolFees.js.map +1 -0
  50. package/dist/_esm/core/solana/generated/instructions/createGuard.js +236 -0
  51. package/dist/_esm/core/solana/generated/instructions/createGuard.js.map +1 -0
  52. package/dist/_esm/core/solana/generated/instructions/createOrder.js +182 -0
  53. package/dist/_esm/core/solana/generated/instructions/createOrder.js.map +1 -0
  54. package/dist/_esm/core/solana/generated/instructions/index.js +19 -0
  55. package/dist/_esm/core/solana/generated/instructions/index.js.map +1 -0
  56. package/dist/_esm/core/solana/generated/instructions/initialize.js +109 -0
  57. package/dist/_esm/core/solana/generated/instructions/initialize.js.map +1 -0
  58. package/dist/_esm/core/solana/generated/instructions/preStartOrderExecution.js +123 -0
  59. package/dist/_esm/core/solana/generated/instructions/preStartOrderExecution.js.map +1 -0
  60. package/dist/_esm/core/solana/generated/instructions/setAdmin.js +98 -0
  61. package/dist/_esm/core/solana/generated/instructions/setAdmin.js.map +1 -0
  62. package/dist/_esm/core/solana/generated/instructions/setAuctioneerPubKey.js +104 -0
  63. package/dist/_esm/core/solana/generated/instructions/setAuctioneerPubKey.js.map +1 -0
  64. package/dist/_esm/core/solana/generated/instructions/startOrderExecution.js +105 -0
  65. package/dist/_esm/core/solana/generated/instructions/startOrderExecution.js.map +1 -0
  66. package/dist/_esm/core/solana/generated/instructions/startOrderExecutionAfterSwap.js +113 -0
  67. package/dist/_esm/core/solana/generated/instructions/startOrderExecutionAfterSwap.js.map +1 -0
  68. package/dist/_esm/core/solana/generated/programs/index.js +9 -0
  69. package/dist/_esm/core/solana/generated/programs/index.js.map +1 -0
  70. package/dist/_esm/core/solana/generated/programs/sourceChainGuard.js +82 -0
  71. package/dist/_esm/core/solana/generated/programs/sourceChainGuard.js.map +1 -0
  72. package/dist/_esm/core/solana/generated/shared/index.js +82 -0
  73. package/dist/_esm/core/solana/generated/shared/index.js.map +1 -0
  74. package/dist/_esm/core/solana/generated/types/adminUpdated.js +18 -0
  75. package/dist/_esm/core/solana/generated/types/adminUpdated.js.map +1 -0
  76. package/dist/_esm/core/solana/generated/types/auctioneerPubkeyUpdated.js +24 -0
  77. package/dist/_esm/core/solana/generated/types/auctioneerPubkeyUpdated.js.map +1 -0
  78. package/dist/_esm/core/solana/generated/types/executionStarted.js +30 -0
  79. package/dist/_esm/core/solana/generated/types/executionStarted.js.map +1 -0
  80. package/dist/_esm/core/solana/generated/types/guardCreated.js +28 -0
  81. package/dist/_esm/core/solana/generated/types/guardCreated.js.map +1 -0
  82. package/dist/_esm/core/solana/generated/types/index.js +16 -0
  83. package/dist/_esm/core/solana/generated/types/index.js.map +1 -0
  84. package/dist/_esm/core/solana/generated/types/orderCancelled.js +18 -0
  85. package/dist/_esm/core/solana/generated/types/orderCancelled.js.map +1 -0
  86. package/dist/_esm/core/solana/generated/types/orderCreated.js +36 -0
  87. package/dist/_esm/core/solana/generated/types/orderCreated.js.map +1 -0
  88. package/dist/_esm/core/solana/generated/types/orderFulfilled.js +18 -0
  89. package/dist/_esm/core/solana/generated/types/orderFulfilled.js.map +1 -0
  90. package/dist/_esm/core/solana/generated/types/tokenInSwapped.js +26 -0
  91. package/dist/_esm/core/solana/generated/types/tokenInSwapped.js.map +1 -0
  92. package/dist/_esm/core/solana/order-instructions.js +92 -0
  93. package/dist/_esm/core/solana/order-instructions.js.map +1 -0
  94. package/dist/_esm/core/solana/sdk.js +111 -0
  95. package/dist/_esm/core/solana/sdk.js.map +1 -0
  96. package/dist/_esm/core/solana/validator.js +22 -0
  97. package/dist/_esm/core/solana/validator.js.map +1 -0
  98. package/dist/_esm/core/sui/client.js +3 -0
  99. package/dist/_esm/core/sui/client.js.map +1 -0
  100. package/dist/_esm/core/sui/order-transaction.js +56 -0
  101. package/dist/_esm/core/sui/order-transaction.js.map +1 -0
  102. package/dist/_esm/core/sui/sdk.js +94 -0
  103. package/dist/_esm/core/sui/sdk.js.map +1 -0
  104. package/dist/_esm/core/sui/validator.js +25 -0
  105. package/dist/_esm/core/sui/validator.js.map +1 -0
  106. package/dist/_esm/errors/index.js +94 -0
  107. package/dist/_esm/errors/index.js.map +1 -0
  108. package/dist/_esm/index.js +7 -0
  109. package/dist/_esm/index.js.map +1 -0
  110. package/dist/_esm/package.json +1 -0
  111. package/dist/_esm/types/intent.js +2 -0
  112. package/dist/_esm/types/intent.js.map +1 -0
  113. package/dist/_esm/utils/base-validator.js +51 -0
  114. package/dist/_esm/utils/base-validator.js.map +1 -0
  115. package/dist/_esm/utils/logger.js +109 -0
  116. package/dist/_esm/utils/logger.js.map +1 -0
  117. package/dist/_esm/utils/order-validator.js +75 -0
  118. package/dist/_esm/utils/order-validator.js.map +1 -0
  119. package/dist/_esm/utils/parsers.js +10 -0
  120. package/dist/_esm/utils/parsers.js.map +1 -0
  121. package/dist/_esm/utils/type-utils.js +2 -0
  122. package/dist/_esm/utils/type-utils.js.map +1 -0
  123. package/dist/_types/chains.d.ts +69 -0
  124. package/dist/_types/chains.d.ts.map +1 -0
  125. package/dist/_types/config.d.ts +21 -0
  126. package/dist/_types/config.d.ts.map +1 -0
  127. package/dist/_types/constants.d.ts +18 -0
  128. package/dist/_types/constants.d.ts.map +1 -0
  129. package/dist/_types/core/evm/abi/erc20.d.ts +240 -0
  130. package/dist/_types/core/evm/abi/erc20.d.ts.map +1 -0
  131. package/dist/_types/core/evm/abi/source-chain-guard.d.ts +1343 -0
  132. package/dist/_types/core/evm/abi/source-chain-guard.d.ts.map +1 -0
  133. package/dist/_types/core/evm/intent-provider.d.ts +12 -0
  134. package/dist/_types/core/evm/intent-provider.d.ts.map +1 -0
  135. package/dist/_types/core/evm/order-signature.d.ts +19 -0
  136. package/dist/_types/core/evm/order-signature.d.ts.map +1 -0
  137. package/dist/_types/core/evm/permit2.d.ts +75 -0
  138. package/dist/_types/core/evm/permit2.d.ts.map +1 -0
  139. package/dist/_types/core/evm/sdk.d.ts +50 -0
  140. package/dist/_types/core/evm/sdk.d.ts.map +1 -0
  141. package/dist/_types/core/evm/validator.d.ts +13 -0
  142. package/dist/_types/core/evm/validator.d.ts.map +1 -0
  143. package/dist/_types/core/evm/viem-provider.d.ts +9657 -0
  144. package/dist/_types/core/evm/viem-provider.d.ts.map +1 -0
  145. package/dist/_types/core/order.d.ts +122 -0
  146. package/dist/_types/core/order.d.ts.map +1 -0
  147. package/dist/_types/core/sdk.d.ts +86 -0
  148. package/dist/_types/core/sdk.d.ts.map +1 -0
  149. package/dist/_types/core/solana/client.d.ts +11 -0
  150. package/dist/_types/core/solana/client.d.ts.map +1 -0
  151. package/dist/_types/core/solana/generated/accounts/adminSingleton.d.ts +36 -0
  152. package/dist/_types/core/solana/generated/accounts/adminSingleton.d.ts.map +1 -0
  153. package/dist/_types/core/solana/generated/accounts/guard.d.ts +48 -0
  154. package/dist/_types/core/solana/generated/accounts/guard.d.ts.map +1 -0
  155. package/dist/_types/core/solana/generated/accounts/index.d.ts +11 -0
  156. package/dist/_types/core/solana/generated/accounts/index.d.ts.map +1 -0
  157. package/dist/_types/core/solana/generated/accounts/order.d.ts +92 -0
  158. package/dist/_types/core/solana/generated/accounts/order.d.ts.map +1 -0
  159. package/dist/_types/core/solana/generated/errors/index.d.ts +9 -0
  160. package/dist/_types/core/solana/generated/errors/index.d.ts.map +1 -0
  161. package/dist/_types/core/solana/generated/errors/sourceChainGuard.d.ts +27 -0
  162. package/dist/_types/core/solana/generated/errors/sourceChainGuard.d.ts.map +1 -0
  163. package/dist/_types/core/solana/generated/index.d.ts +13 -0
  164. package/dist/_types/core/solana/generated/index.d.ts.map +1 -0
  165. package/dist/_types/core/solana/generated/instructions/cancelOrder.d.ts +108 -0
  166. package/dist/_types/core/solana/generated/instructions/cancelOrder.d.ts.map +1 -0
  167. package/dist/_types/core/solana/generated/instructions/claimTokens.d.ts +131 -0
  168. package/dist/_types/core/solana/generated/instructions/claimTokens.d.ts.map +1 -0
  169. package/dist/_types/core/solana/generated/instructions/collectProtocolFees.d.ts +91 -0
  170. package/dist/_types/core/solana/generated/instructions/collectProtocolFees.d.ts.map +1 -0
  171. package/dist/_types/core/solana/generated/instructions/createGuard.d.ts +133 -0
  172. package/dist/_types/core/solana/generated/instructions/createGuard.d.ts.map +1 -0
  173. package/dist/_types/core/solana/generated/instructions/createOrder.d.ts +122 -0
  174. package/dist/_types/core/solana/generated/instructions/createOrder.d.ts.map +1 -0
  175. package/dist/_types/core/solana/generated/instructions/index.d.ts +19 -0
  176. package/dist/_types/core/solana/generated/instructions/index.d.ts.map +1 -0
  177. package/dist/_types/core/solana/generated/instructions/initialize.d.ts +63 -0
  178. package/dist/_types/core/solana/generated/instructions/initialize.d.ts.map +1 -0
  179. package/dist/_types/core/solana/generated/instructions/preStartOrderExecution.d.ts +105 -0
  180. package/dist/_types/core/solana/generated/instructions/preStartOrderExecution.d.ts.map +1 -0
  181. package/dist/_types/core/solana/generated/instructions/setAdmin.d.ts +61 -0
  182. package/dist/_types/core/solana/generated/instructions/setAdmin.d.ts.map +1 -0
  183. package/dist/_types/core/solana/generated/instructions/setAuctioneerPubKey.d.ts +68 -0
  184. package/dist/_types/core/solana/generated/instructions/setAuctioneerPubKey.d.ts.map +1 -0
  185. package/dist/_types/core/solana/generated/instructions/startOrderExecution.d.ts +85 -0
  186. package/dist/_types/core/solana/generated/instructions/startOrderExecution.d.ts.map +1 -0
  187. package/dist/_types/core/solana/generated/instructions/startOrderExecutionAfterSwap.d.ts +95 -0
  188. package/dist/_types/core/solana/generated/instructions/startOrderExecutionAfterSwap.d.ts.map +1 -0
  189. package/dist/_types/core/solana/generated/programs/index.d.ts +9 -0
  190. package/dist/_types/core/solana/generated/programs/index.d.ts.map +1 -0
  191. package/dist/_types/core/solana/generated/programs/sourceChainGuard.d.ts +59 -0
  192. package/dist/_types/core/solana/generated/programs/sourceChainGuard.d.ts.map +1 -0
  193. package/dist/_types/core/solana/generated/shared/index.d.ts +52 -0
  194. package/dist/_types/core/solana/generated/shared/index.d.ts.map +1 -0
  195. package/dist/_types/core/solana/generated/types/adminUpdated.d.ts +16 -0
  196. package/dist/_types/core/solana/generated/types/adminUpdated.d.ts.map +1 -0
  197. package/dist/_types/core/solana/generated/types/auctioneerPubkeyUpdated.d.ts +17 -0
  198. package/dist/_types/core/solana/generated/types/auctioneerPubkeyUpdated.d.ts.map +1 -0
  199. package/dist/_types/core/solana/generated/types/executionStarted.d.ts +26 -0
  200. package/dist/_types/core/solana/generated/types/executionStarted.d.ts.map +1 -0
  201. package/dist/_types/core/solana/generated/types/guardCreated.d.ts +19 -0
  202. package/dist/_types/core/solana/generated/types/guardCreated.d.ts.map +1 -0
  203. package/dist/_types/core/solana/generated/types/index.d.ts +16 -0
  204. package/dist/_types/core/solana/generated/types/index.d.ts.map +1 -0
  205. package/dist/_types/core/solana/generated/types/orderCancelled.d.ts +16 -0
  206. package/dist/_types/core/solana/generated/types/orderCancelled.d.ts.map +1 -0
  207. package/dist/_types/core/solana/generated/types/orderCreated.d.ts +32 -0
  208. package/dist/_types/core/solana/generated/types/orderCreated.d.ts.map +1 -0
  209. package/dist/_types/core/solana/generated/types/orderFulfilled.d.ts +16 -0
  210. package/dist/_types/core/solana/generated/types/orderFulfilled.d.ts.map +1 -0
  211. package/dist/_types/core/solana/generated/types/tokenInSwapped.d.ts +22 -0
  212. package/dist/_types/core/solana/generated/types/tokenInSwapped.d.ts.map +1 -0
  213. package/dist/_types/core/solana/order-instructions.d.ts +12 -0
  214. package/dist/_types/core/solana/order-instructions.d.ts.map +1 -0
  215. package/dist/_types/core/solana/sdk.d.ts +65 -0
  216. package/dist/_types/core/solana/sdk.d.ts.map +1 -0
  217. package/dist/_types/core/solana/validator.d.ts +9 -0
  218. package/dist/_types/core/solana/validator.d.ts.map +1 -0
  219. package/dist/_types/core/sui/client.d.ts +3 -0
  220. package/dist/_types/core/sui/client.d.ts.map +1 -0
  221. package/dist/_types/core/sui/order-transaction.d.ts +9 -0
  222. package/dist/_types/core/sui/order-transaction.d.ts.map +1 -0
  223. package/dist/_types/core/sui/sdk.d.ts +55 -0
  224. package/dist/_types/core/sui/sdk.d.ts.map +1 -0
  225. package/dist/_types/core/sui/validator.d.ts +9 -0
  226. package/dist/_types/core/sui/validator.d.ts.map +1 -0
  227. package/dist/_types/errors/index.d.ts +32 -0
  228. package/dist/_types/errors/index.d.ts.map +1 -0
  229. package/dist/_types/index.d.ts +10 -0
  230. package/dist/_types/index.d.ts.map +1 -0
  231. package/dist/_types/types/intent.d.ts +129 -0
  232. package/dist/_types/types/intent.d.ts.map +1 -0
  233. package/dist/_types/utils/base-validator.d.ts +28 -0
  234. package/dist/_types/utils/base-validator.d.ts.map +1 -0
  235. package/dist/_types/utils/logger.d.ts +35 -0
  236. package/dist/_types/utils/logger.d.ts.map +1 -0
  237. package/dist/_types/utils/order-validator.d.ts +40 -0
  238. package/dist/_types/utils/order-validator.d.ts.map +1 -0
  239. package/dist/_types/utils/parsers.d.ts +4 -0
  240. package/dist/_types/utils/parsers.d.ts.map +1 -0
  241. package/dist/_types/utils/type-utils.d.ts +2 -0
  242. package/dist/_types/utils/type-utils.d.ts.map +1 -0
  243. package/package.json +62 -0
  244. package/src/chains.ts +77 -0
  245. package/src/config.ts +24 -0
  246. package/src/constants.ts +61 -0
  247. package/src/core/evm/abi/erc20.ts +312 -0
  248. package/src/core/evm/abi/source-chain-guard.ts +1715 -0
  249. package/src/core/evm/intent-provider.ts +63 -0
  250. package/src/core/evm/order-signature.ts +33 -0
  251. package/src/core/evm/permit2.ts +60 -0
  252. package/src/core/evm/sdk.ts +74 -0
  253. package/src/core/evm/validator.ts +60 -0
  254. package/src/core/evm/viem-provider.ts +79 -0
  255. package/src/core/order.ts +186 -0
  256. package/src/core/sdk.ts +154 -0
  257. package/src/core/solana/client.ts +37 -0
  258. package/src/core/solana/generated/accounts/adminSingleton.ts +136 -0
  259. package/src/core/solana/generated/accounts/guard.ts +156 -0
  260. package/src/core/solana/generated/accounts/index.ts +11 -0
  261. package/src/core/solana/generated/accounts/order.ts +218 -0
  262. package/src/core/solana/generated/errors/index.ts +9 -0
  263. package/src/core/solana/generated/errors/sourceChainGuard.ts +52 -0
  264. package/src/core/solana/generated/index.ts +13 -0
  265. package/src/core/solana/generated/instructions/cancelOrder.ts +357 -0
  266. package/src/core/solana/generated/instructions/claimTokens.ts +419 -0
  267. package/src/core/solana/generated/instructions/collectProtocolFees.ts +383 -0
  268. package/src/core/solana/generated/instructions/createGuard.ts +569 -0
  269. package/src/core/solana/generated/instructions/createOrder.ts +480 -0
  270. package/src/core/solana/generated/instructions/index.ts +19 -0
  271. package/src/core/solana/generated/instructions/initialize.ts +231 -0
  272. package/src/core/solana/generated/instructions/preStartOrderExecution.ts +362 -0
  273. package/src/core/solana/generated/instructions/setAdmin.ts +211 -0
  274. package/src/core/solana/generated/instructions/setAuctioneerPubKey.ts +241 -0
  275. package/src/core/solana/generated/instructions/startOrderExecution.ts +293 -0
  276. package/src/core/solana/generated/instructions/startOrderExecutionAfterSwap.ts +323 -0
  277. package/src/core/solana/generated/programs/index.ts +9 -0
  278. package/src/core/solana/generated/programs/sourceChainGuard.ts +223 -0
  279. package/src/core/solana/generated/shared/index.ts +124 -0
  280. package/src/core/solana/generated/types/adminUpdated.ts +35 -0
  281. package/src/core/solana/generated/types/auctioneerPubkeyUpdated.ts +44 -0
  282. package/src/core/solana/generated/types/executionStarted.ts +63 -0
  283. package/src/core/solana/generated/types/guardCreated.ts +50 -0
  284. package/src/core/solana/generated/types/index.ts +16 -0
  285. package/src/core/solana/generated/types/orderCancelled.ts +35 -0
  286. package/src/core/solana/generated/types/orderCreated.ts +80 -0
  287. package/src/core/solana/generated/types/orderFulfilled.ts +35 -0
  288. package/src/core/solana/generated/types/tokenInSwapped.ts +53 -0
  289. package/src/core/solana/order-instructions.ts +131 -0
  290. package/src/core/solana/sdk.ts +135 -0
  291. package/src/core/solana/validator.ts +26 -0
  292. package/src/core/sui/client.ts +3 -0
  293. package/src/core/sui/order-transaction.ts +78 -0
  294. package/src/core/sui/sdk.ts +95 -0
  295. package/src/core/sui/validator.ts +32 -0
  296. package/src/errors/index.ts +106 -0
  297. package/src/index.ts +10 -0
  298. package/src/types/intent.ts +143 -0
  299. package/src/utils/base-validator.ts +64 -0
  300. package/src/utils/logger.ts +128 -0
  301. package/src/utils/order-validator.ts +103 -0
  302. package/src/utils/parsers.ts +8 -0
  303. package/src/utils/type-utils.ts +1 -0
package/src/index.ts ADDED
@@ -0,0 +1,10 @@
1
+ export type { ChainID, ChainType } from './chains.js';
2
+ export { SupportedChains } from './chains.js';
3
+
4
+ export type { EVMConfig, SolanaConfig, SuiConfig } from './config.js';
5
+ export { EVMSDK } from './core/evm/sdk.js';
6
+ export { Order } from './core/order.js';
7
+ export { SolanaSDK } from './core/solana/sdk.js';
8
+ export { SuiSDK } from './core/sui/sdk.js';
9
+ export { ValidationError } from './errors/index.js';
10
+ export type { CreateOrderParams } from './types/intent.js';
@@ -0,0 +1,143 @@
1
+ import type { SupportedChain } from '../chains.js';
2
+ import type { ExtraTransfer, Order } from '../core/order.js';
3
+
4
+ /**
5
+ * Parameters for creating a cross-chain order
6
+ * Used as input for the createOrder and createAndSendOrder methods
7
+ */
8
+ export type CreateOrderParams = {
9
+ /** Chain ID where tokens will be sent from */
10
+ sourceChainId: SupportedChain;
11
+ /** Token address on the source chain to be swapped */
12
+ sourceTokenAddress: string;
13
+ /** Amount of source tokens to swap, in smallest units (e.g., Wei for ETH) */
14
+ sourceTokenAmount: bigint;
15
+
16
+ /** Chain ID where tokens will be received */
17
+ destinationChainId: SupportedChain;
18
+ /** Token address on the destination chain to receive */
19
+ destinationTokenAddress: string;
20
+ /** Minimum amount of destination tokens to receive, in smallest units */
21
+ destinationTokenMinAmount: bigint;
22
+ /** Recipient wallet address on the destination chain */
23
+ destinationAddress: string;
24
+
25
+ /** Minimum amount of stablecoins in the intermediate swap, in smallest units */
26
+ minStablecoinAmount: bigint;
27
+ /** Timestamp (in seconds) after which the order expires */
28
+ deadline: number;
29
+
30
+ /** Extra Transfers */
31
+ extraTransfers?: ExtraTransfer[];
32
+ };
33
+
34
+ /**
35
+ * Details required to execute the order on the destination chain
36
+ * Contains all information needed for the cross-chain fulfillment
37
+ */
38
+ export type ExecutionDetails = {
39
+ /** Chain ID where tokens will be received */
40
+ destChainId: SupportedChain;
41
+ /** Token address on the destination chain to receive */
42
+ tokenOut: string;
43
+ /** Minimum amount of destination tokens to receive, in smallest units */
44
+ amountOutMin: bigint;
45
+ /** Recipient wallet address on the destination chain */
46
+ destinationAddress: string;
47
+ /** Extra transfers to be made */
48
+ extraTransfers?: ExtraTransfer[];
49
+ };
50
+
51
+ /** Hex string with 0x prefix, used for various hashes */
52
+ export type Hash = `0x${string}`;
53
+ /** Hash of execution details, used to verify order integrity across chains */
54
+ export type ExecutionDetailsHash = Hash;
55
+
56
+ /**
57
+ * EVM-specific data required for prepared orders
58
+ * Contains the signature and nonce for Permit2 allowance
59
+ */
60
+ export type EvmPreparedData = {
61
+ /** Random nonce for Permit2 signature, prevents replay attacks */
62
+ nonce: string;
63
+ /** EIP-712 signature authorizing the order */
64
+ signature: string | Hash;
65
+ };
66
+
67
+ /**
68
+ * Sui-specific data required for prepared orders
69
+ * Contains the transaction hash of the order creation transaction
70
+ */
71
+ export type SuiPreparedData = {
72
+ /** Transaction hash of the successful order creation transaction */
73
+ transactionHash: string;
74
+ };
75
+
76
+ /**
77
+ * Solana-specific data required for prepared orders
78
+ * Contains the public key of the created order account
79
+ */
80
+ export type SolanaPreparedData = {
81
+ /** Public key of the created order account on Solana */
82
+ orderPubkey: string;
83
+ };
84
+
85
+ /**
86
+ * Source chain data sent to the auctioneer
87
+ * Contains all information needed to start the cross-chain swap from the source chain
88
+ */
89
+ export type SourceChainData = {
90
+ /** User's wallet address that initiated the order */
91
+ user: string;
92
+ /** Source chain ID where tokens will be sent from */
93
+ srcChainId: SupportedChain;
94
+ /** Token address on the source chain to be swapped */
95
+ tokenIn: string;
96
+ /** Amount of source tokens to swap, in smallest units */
97
+ amountIn: bigint;
98
+ /** Minimum amount of stablecoins in the intermediate swap, in smallest units */
99
+ minStablecoinsAmount: bigint;
100
+ /** Timestamp (in seconds) after which the order expires */
101
+ deadline: number;
102
+ /** Hash of execution details for cross-chain verification */
103
+ executionDetailsHash: ExecutionDetailsHash;
104
+ };
105
+
106
+ /**
107
+ * Complete user intent request sent to the auctioneer service
108
+ * Contains all the information needed to execute the cross-chain swap
109
+ */
110
+ export type UserIntentRequest = {
111
+ /** Generic data common to all chains */
112
+ genericData: SourceChainData;
113
+ /** JSON-stringified execution details for the destination chain */
114
+ executionDetails: string;
115
+ /** Chain-specific data including signatures and transaction details */
116
+ chainSpecificData: {
117
+ /** EVM-specific data (for Ethereum, Arbitrum, Optimism, Base) */
118
+ EVM?: EvmPreparedData;
119
+ /** Solana-specific data */
120
+ Solana?: SolanaPreparedData;
121
+ /** Sui-specific data */
122
+ Sui?: SolanaPreparedData;
123
+ };
124
+ };
125
+
126
+ /**
127
+ * Union type of all chain-specific prepared data
128
+ * The actual type depends on the source chain
129
+ */
130
+ export type ChainPreparedData = EvmPreparedData | SuiPreparedData | SolanaPreparedData;
131
+
132
+ /**
133
+ * Fully prepared order ready for submission to the auctioneer
134
+ * Contains both the order details and chain-specific prepared data
135
+ */
136
+ export type PreparedOrder = {
137
+ /** The original order with all cross-chain details */
138
+ order: Order;
139
+ /** Chain-specific data needed for order execution */
140
+ preparedData: ChainPreparedData;
141
+ /** Hash related to the start order execution */
142
+ // txHash: string // TODO: Think if we need this
143
+ };
@@ -0,0 +1,64 @@
1
+ import type { OrderInput } from '../core/order.js';
2
+ import { ValidationError } from '../errors/index.js';
3
+ import type { IChainValidator } from './order-validator.js';
4
+
5
+ /**
6
+ * BaseValidator - Abstract class implementing common validation logic
7
+ * This follows the Template Method pattern
8
+ */
9
+ export abstract class BaseValidator implements IChainValidator {
10
+ abstract isValidAddress(address: string): boolean;
11
+ abstract isValidTokenAddress(tokenAddress: string): boolean;
12
+ abstract isValidAmount(amount: bigint): boolean;
13
+ protected abstract getChainName(): string;
14
+ abstract chainSpecificValidation(order: OrderInput): Promise<void>;
15
+
16
+ /**
17
+ * Validate source chain specific parameters of the order
18
+ */
19
+ async validateSourceChain(order: OrderInput): Promise<void> {
20
+ this.validateAddress(order.user);
21
+ this.validateTokenAddress(order.sourceTokenAddress);
22
+ this.validateAmount(order.sourceTokenAmount);
23
+ this.validateAmount(order.minStablecoinAmount);
24
+ await this.chainSpecificValidation(order);
25
+ }
26
+
27
+ /**
28
+ * Validate destination chain specific parameters of the order
29
+ */
30
+ validateDestinationChain(order: OrderInput): void {
31
+ this.validateAddress(order.destinationAddress);
32
+ this.validateTokenAddress(order.destinationTokenAddress);
33
+ this.validateAmount(order.destinationTokenMinAmount);
34
+
35
+ if (order.extraTransfers) {
36
+ for (const extraTransfer of order.extraTransfers) {
37
+ this.validateAddress(extraTransfer.receiver);
38
+ this.validateTokenAddress(extraTransfer.token);
39
+ this.validateAmount(extraTransfer.amount);
40
+ }
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Helper methods that throw specific validation errors
46
+ */
47
+ protected validateAddress(address: string): void {
48
+ if (!this.isValidAddress(address)) {
49
+ throw new ValidationError(`Invalid ${this.getChainName()} address: ${address}`);
50
+ }
51
+ }
52
+
53
+ protected validateTokenAddress(tokenAddress: string): void {
54
+ if (!this.isValidTokenAddress(tokenAddress)) {
55
+ throw new ValidationError(`Invalid ${this.getChainName()} token address: ${tokenAddress}`);
56
+ }
57
+ }
58
+
59
+ protected validateAmount(amount: bigint): void {
60
+ if (!this.isValidAmount(amount)) {
61
+ throw new ValidationError(`Amount must be greater than 0. Value: ${amount}`);
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,128 @@
1
+ import { BaseError } from '../errors/index.js';
2
+
3
+ export enum LogLevel {
4
+ DEBUG = 'DEBUG',
5
+ INFO = 'INFO',
6
+ WARN = 'WARN',
7
+ ERROR = 'ERROR',
8
+ NONE = 'NONE',
9
+ }
10
+
11
+ export type LoggerConfig = {
12
+ level: LogLevel;
13
+ customLogger?: CustomLogger;
14
+ };
15
+
16
+ export interface CustomLogger {
17
+ debug(message: string, ...args: unknown[]): void;
18
+ info(message: string, ...args: unknown[]): void;
19
+ warn(message: string, ...args: unknown[]): void;
20
+ error(message: string, ...args: unknown[]): void;
21
+ }
22
+
23
+ class DefaultLogger implements CustomLogger {
24
+ debug(message: string, ...args: unknown[]): void {
25
+ console.debug(`[${new Date().toISOString()} DEBUG] ${message}`, ...args);
26
+ }
27
+
28
+ info(message: string, ...args: unknown[]): void {
29
+ console.info(`[${new Date().toISOString()} INFO] ${message}`, ...args);
30
+ }
31
+
32
+ warn(message: string, ...args: unknown[]): void {
33
+ console.warn(`[${new Date().toISOString()} WARN] ${message}`, ...args);
34
+ }
35
+
36
+ error(message: string, ...args: unknown[]): void {
37
+ console.error(`[${new Date().toISOString()} ERROR] ${message}`, ...args);
38
+ }
39
+ }
40
+
41
+ class Logger {
42
+ private static instance: Logger;
43
+ private loggerImpl: CustomLogger = new DefaultLogger();
44
+ private logLevel: LogLevel = LogLevel.INFO;
45
+
46
+ private constructor() {}
47
+
48
+ public static getInstance(): Logger {
49
+ if (!Logger.instance) {
50
+ Logger.instance = new Logger();
51
+ }
52
+ return Logger.instance;
53
+ }
54
+
55
+ public configure(config: LoggerConfig): void {
56
+ this.logLevel = config.level;
57
+ if (config.customLogger) {
58
+ this.loggerImpl = config.customLogger;
59
+ }
60
+ }
61
+
62
+ public debug(message: string, ...args: unknown[]): void {
63
+ if (this.shouldLog(LogLevel.DEBUG)) {
64
+ this.loggerImpl.debug(message, ...args);
65
+ }
66
+ }
67
+
68
+ public info(message: string, ...args: unknown[]): void {
69
+ if (this.shouldLog(LogLevel.INFO)) {
70
+ this.loggerImpl.info(message, ...args);
71
+ }
72
+ }
73
+
74
+ public warn(message: string, ...args: unknown[]): void {
75
+ if (this.shouldLog(LogLevel.WARN)) {
76
+ this.loggerImpl.warn(message, ...args);
77
+ }
78
+ }
79
+
80
+ public error(message: string, error?: unknown): void {
81
+ if (this.shouldLog(LogLevel.ERROR)) {
82
+ const formattedError = this.formatError(error);
83
+ this.loggerImpl.error(message, formattedError);
84
+ }
85
+ }
86
+
87
+ public logError(error: unknown): void {
88
+ if (this.shouldLog(LogLevel.ERROR)) {
89
+ const formattedError = this.formatError(error);
90
+
91
+ if (error instanceof BaseError) {
92
+ this.loggerImpl.error(`${error.name}: ${error.message}`, formattedError);
93
+ } else if (error instanceof Error) {
94
+ this.loggerImpl.error(`${error.name}: ${error.message}`, formattedError);
95
+ } else {
96
+ this.loggerImpl.error('Unknown error', formattedError);
97
+ }
98
+ }
99
+ }
100
+
101
+ private shouldLog(level: LogLevel): boolean {
102
+ const levels = [LogLevel.DEBUG, LogLevel.INFO, LogLevel.WARN, LogLevel.ERROR];
103
+ const currentLevelIndex = levels.indexOf(this.logLevel);
104
+ const targetLevelIndex = levels.indexOf(level);
105
+
106
+ return currentLevelIndex <= targetLevelIndex && this.logLevel !== LogLevel.NONE;
107
+ }
108
+
109
+ private formatError(error?: unknown): unknown {
110
+ if (!error) return 'No error details provided';
111
+
112
+ if (error instanceof BaseError) {
113
+ return error.toJSON();
114
+ }
115
+
116
+ if (error instanceof Error) {
117
+ return {
118
+ name: error.name,
119
+ message: error.message,
120
+ stack: error.stack,
121
+ };
122
+ }
123
+
124
+ return error;
125
+ }
126
+ }
127
+
128
+ export const logger = Logger.getInstance();
@@ -0,0 +1,103 @@
1
+ import { ChainType, chainIdToChainTypeMap, type SupportedChain } from '../chains.js';
2
+ import { EvmValidator } from '../core/evm/validator.js';
3
+ import type { OrderInput } from '../core/order.js';
4
+ import { SolanaValidator } from '../core/solana/validator.js';
5
+ import { SuiValidator } from '../core/sui/validator.js';
6
+ import { ValidationError } from '../errors/index.js';
7
+
8
+ export interface IAddressValidator {
9
+ isValidAddress(address: string): boolean;
10
+ }
11
+
12
+ export interface ITokenValidator {
13
+ isValidTokenAddress(tokenAddress: string): boolean;
14
+ }
15
+
16
+ export interface IAmountValidator {
17
+ isValidAmount(amount: bigint): boolean;
18
+ }
19
+
20
+ export interface IDeadlineValidator {
21
+ isValidDeadline(deadline: number): boolean;
22
+ }
23
+
24
+ export interface ICrossChainValidator {
25
+ isValidCrossChain(sourceChainId: SupportedChain, destinationChainId: SupportedChain): boolean;
26
+ }
27
+
28
+ export interface IChainValidator extends IAddressValidator, ITokenValidator, IAmountValidator {
29
+ validateSourceChain(order: OrderInput): Promise<void>;
30
+ validateDestinationChain(order: OrderInput): void;
31
+ }
32
+
33
+ /**
34
+ * CommonValidator - Handles validations shared across chains
35
+ */
36
+ export class CommonValidator implements IDeadlineValidator, ICrossChainValidator {
37
+ isValidDeadline(deadline: number): boolean {
38
+ return deadline > Math.floor(Date.now() / 1000);
39
+ }
40
+
41
+ validateDeadline(deadline: number): void {
42
+ if (!this.isValidDeadline(deadline)) {
43
+ throw new ValidationError('Deadline must be in the future');
44
+ }
45
+ }
46
+
47
+ isValidCrossChain(sourceChainId: SupportedChain, destinationChainId: SupportedChain): boolean {
48
+ return sourceChainId !== destinationChainId;
49
+ }
50
+
51
+ validateCrossChain(sourceChainId: SupportedChain, destinationChainId: SupportedChain): void {
52
+ if (!this.isValidCrossChain(sourceChainId, destinationChainId)) {
53
+ throw new ValidationError('Source and destination chains cannot be the same');
54
+ }
55
+ }
56
+ }
57
+
58
+ export class ValidatorFactory {
59
+ private static validators: Map<ChainType, IChainValidator> = new Map();
60
+
61
+ static getValidator(chainType: ChainType): IChainValidator {
62
+ if (!this.validators.has(chainType)) {
63
+ switch (chainType) {
64
+ case ChainType.EVM:
65
+ this.validators.set(chainType, new EvmValidator());
66
+ break;
67
+ case ChainType.Solana:
68
+ this.validators.set(chainType, new SolanaValidator());
69
+ break;
70
+ case ChainType.Sui:
71
+ this.validators.set(chainType, new SuiValidator());
72
+ break;
73
+ default:
74
+ throw new ValidationError(`Chain type ${chainType} validation is not implemented.`);
75
+ }
76
+ }
77
+
78
+ return this.validators.get(chainType)!;
79
+ }
80
+
81
+ static getValidatorForChain(chainId: SupportedChain): IChainValidator {
82
+ const chainType = chainIdToChainTypeMap[chainId];
83
+ return this.getValidator(chainType);
84
+ }
85
+ }
86
+
87
+ export class OrderValidator {
88
+ private readonly commonValidator = new CommonValidator();
89
+
90
+ async validateOrder(order: OrderInput): Promise<void> {
91
+ const sourceValidator = ValidatorFactory.getValidatorForChain(order.sourceChainId);
92
+
93
+ await sourceValidator.validateSourceChain(order);
94
+
95
+ this.commonValidator.validateCrossChain(order.sourceChainId, order.destinationChainId);
96
+
97
+ const destinationValidator = ValidatorFactory.getValidatorForChain(order.destinationChainId);
98
+
99
+ destinationValidator.validateDestinationChain(order);
100
+
101
+ this.commonValidator.validateDeadline(order.deadline);
102
+ }
103
+ }
@@ -0,0 +1,8 @@
1
+ /* eslint-disable @typescript-eslint/no-namespace */
2
+
3
+ export namespace Parsers {
4
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+ export function bigIntReplacer(_key: string, value: any): any {
6
+ return typeof value === 'bigint' ? value.toString() : value;
7
+ }
8
+ }
@@ -0,0 +1 @@
1
+ export type TupleToUnion<ArrayType> = ArrayType extends readonly unknown[] ? ArrayType[number] : never;