@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
@@ -0,0 +1,154 @@
1
+ import { chainIdToChainTypeMap } from '../chains.js';
2
+ import { AUCTIONEER_URL } from '../constants.js';
3
+ import { NetworkError } from '../errors/index.js';
4
+ import type { CreateOrderParams, PreparedOrder, UserIntentRequest } from '../types/intent.js';
5
+ import { Parsers } from '../utils/parsers.js';
6
+ import { Order } from './order.js';
7
+
8
+ /**
9
+ * Base SDK providing common functionality for all blockchain implementations
10
+ *
11
+ * This abstract class serves as the foundation for chain-specific SDK implementations
12
+ * (EVM, Solana, Sui), providing shared functionality for creating and sending orders
13
+ * across different blockchains.
14
+ */
15
+ export abstract class BaseSDK {
16
+ /**
17
+ * Gets the user's wallet address derived from their private key
18
+ *
19
+ * @returns Promise resolving to the user's address as a string
20
+ * @abstract Must be implemented by each chain-specific SDK
21
+ */
22
+ public abstract getUserAddress(): Promise<string>;
23
+
24
+ /**
25
+ * Prepares an order for submission with chain-specific logic
26
+ *
27
+ * This method handles the chain-specific aspects of order creation, such as:
28
+ * - Creating and signing transactions
29
+ * - Interacting with blockchain-specific smart contracts
30
+ * - Generating proof of intent
31
+ *
32
+ * @param order The validated order to prepare
33
+ * @returns Promise resolving to a prepared order with chain-specific data
34
+ * @abstract Must be implemented by each chain-specific SDK
35
+ * @protected
36
+ */
37
+ protected abstract prepareOrder(order: Order): Promise<PreparedOrder>;
38
+
39
+ /**
40
+ * Creates a cross-chain swap order
41
+ *
42
+ * This method:
43
+ * 1. Gets the user's address from their private key
44
+ * 2. Creates and validates an Order instance
45
+ * 3. Delegates to chain-specific preparation logic
46
+ *
47
+ * @param params Parameters for order creation including source/destination chain details
48
+ * @returns Promise resolving to a prepared order ready for submission
49
+ * @throws {ValidationError} If order parameters are invalid
50
+ * @throws {OrderCreationError} If order creation fails
51
+ */
52
+ public async createOrder(params: CreateOrderParams): Promise<PreparedOrder> {
53
+ const userAddress = await this.getUserAddress();
54
+
55
+ // Order is validated upon creation
56
+ const order = await Order.create({
57
+ user: userAddress,
58
+ sourceChainId: params.sourceChainId,
59
+ sourceTokenAddress: params.sourceTokenAddress,
60
+ sourceTokenAmount: params.sourceTokenAmount,
61
+ minStablecoinAmount: params.minStablecoinAmount,
62
+ deadline: params.deadline,
63
+ destinationAddress: params.destinationAddress,
64
+ destinationChainId: params.destinationChainId,
65
+ destinationTokenAddress: params.destinationTokenAddress,
66
+ destinationTokenMinAmount: params.destinationTokenMinAmount,
67
+ extraTransfers: params.extraTransfers,
68
+ });
69
+
70
+ return this.prepareOrder(order);
71
+ }
72
+
73
+ /**
74
+ * Creates an order and sends it to the auctioneer in a single call
75
+ *
76
+ * Convenience method that combines order creation and submission
77
+ *
78
+ * @param params Parameters for order creation including source/destination chain details
79
+ * @returns Promise resolving to the auctioneer's HTTP response
80
+ * @throws {ValidationError} If order parameters are invalid
81
+ * @throws {OrderCreationError} If order creation fails
82
+ * @throws {NetworkError} If order submission fails
83
+ */
84
+ public async createAndSendOrder(params: CreateOrderParams): Promise<Response> {
85
+ const preparedOrder = await this.createOrder(params);
86
+ return this.sendOrder(preparedOrder);
87
+ }
88
+
89
+ /**
90
+ * Converts a prepared order into a user intent request format for the auctioneer
91
+ *
92
+ * The UserIntentRequest format includes:
93
+ * - Generic data common to all chains
94
+ * - Chain-specific data (signatures, nonces, etc.)
95
+ * - Execution details for the destination chain
96
+ *
97
+ * @param preparedOrder The prepared order with chain-specific data
98
+ * @returns User intent request object ready for submission to the auctioneer
99
+ * @throws {BaseError} If conversion fails
100
+ */
101
+ private getUserIntentRequest(preparedOrder: PreparedOrder): UserIntentRequest {
102
+ const sourceChain = preparedOrder.order.sourceChainId;
103
+ const sourceChainType = chainIdToChainTypeMap[sourceChain];
104
+ const executionDetails = preparedOrder.order.getExecutionDetails();
105
+
106
+ return {
107
+ genericData: preparedOrder.order.toSourceChainData(),
108
+ executionDetails: JSON.stringify(executionDetails, Parsers.bigIntReplacer),
109
+ chainSpecificData: {
110
+ [sourceChainType]: preparedOrder.preparedData,
111
+ },
112
+ };
113
+ }
114
+
115
+ /**
116
+ * Sends a prepared order to the auctioneer service
117
+ *
118
+ * This method:
119
+ * 1. Converts the prepared order to the auctioneer's expected format
120
+ * 2. Serializes the request with proper handling of bigint values
121
+ * 3. Submits the order to the auctioneer endpoint
122
+ * 4. Validates the response
123
+ *
124
+ * @param preparedOrder The prepared order with chain-specific data
125
+ * @returns Promise resolving to the specific-chain tx hash
126
+ * @throws {NetworkError} If the network request fails or returns an error
127
+ */
128
+ public async sendOrder(preparedOrder: PreparedOrder): Promise<Response> {
129
+ const intentRequest = this.getUserIntentRequest(preparedOrder);
130
+ const body = JSON.stringify(intentRequest, Parsers.bigIntReplacer);
131
+
132
+ const url = `${AUCTIONEER_URL}/user_intent`;
133
+ const response = await fetch(url, {
134
+ method: 'POST',
135
+ headers: {
136
+ 'Content-Type': 'application/json',
137
+ },
138
+ body,
139
+ });
140
+
141
+ if (!response.ok) {
142
+ const errorJson = await response.json();
143
+
144
+ const extraErrorData = errorJson.extra_error_data;
145
+ throw new NetworkError(`Server error`, {
146
+ status: response.status,
147
+ statusText: response.statusText,
148
+ body: extraErrorData,
149
+ });
150
+ }
151
+
152
+ return response;
153
+ }
154
+ }
@@ -0,0 +1,37 @@
1
+ import {
2
+ createSolanaRpc,
3
+ createSolanaRpcSubscriptions,
4
+ type Rpc,
5
+ type RpcSubscriptions,
6
+ type SolanaRpcApiMainnet,
7
+ type SolanaRpcSubscriptionsApi,
8
+ sendAndConfirmTransactionFactory,
9
+ } from '@solana/kit';
10
+ import type { SolanaConfig } from '../../config.js';
11
+
12
+ export type SolanaClient = {
13
+ privateKey: string;
14
+ rpc: Rpc<SolanaRpcApiMainnet>;
15
+ rpcSubscriptions: RpcSubscriptions<SolanaRpcSubscriptionsApi>;
16
+ sendAndConfirmTransaction: ReturnType<typeof sendAndConfirmTransactionFactory>;
17
+ };
18
+
19
+ export function createSolanaClient(config: SolanaConfig): SolanaClient {
20
+ const rpc = config.rpcProviderUrl ? createSolanaRpc(config.rpcProviderUrl) : getDefaultSolanaRPC();
21
+ const rpcSubscriptions = createSolanaRpcSubscriptions('wss://api.mainnet-beta.solana.com');
22
+ const sendAndConfirmTransaction = sendAndConfirmTransactionFactory({
23
+ rpc,
24
+ rpcSubscriptions,
25
+ });
26
+
27
+ return {
28
+ privateKey: config.privateKey,
29
+ rpc,
30
+ rpcSubscriptions,
31
+ sendAndConfirmTransaction,
32
+ };
33
+ }
34
+
35
+ export function getDefaultSolanaRPC(): Rpc<SolanaRpcApiMainnet> {
36
+ return createSolanaRpc('https://api.mainnet-beta.solana.com');
37
+ }
@@ -0,0 +1,136 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+
9
+ import {
10
+ type Account,
11
+ assertAccountExists,
12
+ assertAccountsExist,
13
+ decodeAccount,
14
+ type EncodedAccount,
15
+ type FetchAccountConfig,
16
+ type FetchAccountsConfig,
17
+ fetchEncodedAccount,
18
+ fetchEncodedAccounts,
19
+ type MaybeAccount,
20
+ type MaybeEncodedAccount,
21
+ } from '@solana/kit';
22
+ import { type Address, getAddressDecoder, getAddressEncoder } from '@solana/kit';
23
+ import {
24
+ type Codec,
25
+ combineCodec,
26
+ type Decoder,
27
+ type Encoder,
28
+ fixDecoderSize,
29
+ fixEncoderSize,
30
+ getBytesDecoder,
31
+ getBytesEncoder,
32
+ getStructDecoder,
33
+ getStructEncoder,
34
+ getU8Decoder,
35
+ getU8Encoder,
36
+ type ReadonlyUint8Array,
37
+ transformEncoder,
38
+ } from '@solana/kit';
39
+
40
+ export const ADMIN_SINGLETON_DISCRIMINATOR = new Uint8Array([179, 22, 254, 245, 204, 230, 222, 194]);
41
+
42
+ export function getAdminSingletonDiscriminatorBytes() {
43
+ return fixEncoderSize(getBytesEncoder(), 8).encode(ADMIN_SINGLETON_DISCRIMINATOR);
44
+ }
45
+
46
+ export type AdminSingleton = {
47
+ discriminator: ReadonlyUint8Array;
48
+ /** Guard admin */
49
+ admin: Address;
50
+ /** PDA bump */
51
+ bump: number;
52
+ };
53
+
54
+ export type AdminSingletonArgs = {
55
+ /** Guard admin */
56
+ admin: Address;
57
+ /** PDA bump */
58
+ bump: number;
59
+ };
60
+
61
+ export function getAdminSingletonEncoder(): Encoder<AdminSingletonArgs> {
62
+ return transformEncoder(
63
+ getStructEncoder([
64
+ ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],
65
+ ['admin', getAddressEncoder()],
66
+ ['bump', getU8Encoder()],
67
+ ]),
68
+ (value) => ({ ...value, discriminator: ADMIN_SINGLETON_DISCRIMINATOR }),
69
+ );
70
+ }
71
+
72
+ export function getAdminSingletonDecoder(): Decoder<AdminSingleton> {
73
+ return getStructDecoder([
74
+ ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],
75
+ ['admin', getAddressDecoder()],
76
+ ['bump', getU8Decoder()],
77
+ ]);
78
+ }
79
+
80
+ export function getAdminSingletonCodec(): Codec<AdminSingletonArgs, AdminSingleton> {
81
+ return combineCodec(getAdminSingletonEncoder(), getAdminSingletonDecoder());
82
+ }
83
+
84
+ export function decodeAdminSingleton<TAddress extends string = string>(
85
+ encodedAccount: EncodedAccount<TAddress>,
86
+ ): Account<AdminSingleton, TAddress>;
87
+ export function decodeAdminSingleton<TAddress extends string = string>(
88
+ encodedAccount: MaybeEncodedAccount<TAddress>,
89
+ ): MaybeAccount<AdminSingleton, TAddress>;
90
+ export function decodeAdminSingleton<TAddress extends string = string>(
91
+ encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,
92
+ ): Account<AdminSingleton, TAddress> | MaybeAccount<AdminSingleton, TAddress> {
93
+ return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getAdminSingletonDecoder());
94
+ }
95
+
96
+ export async function fetchAdminSingleton<TAddress extends string = string>(
97
+ rpc: Parameters<typeof fetchEncodedAccount>[0],
98
+ address: Address<TAddress>,
99
+ config?: FetchAccountConfig,
100
+ ): Promise<Account<AdminSingleton, TAddress>> {
101
+ const maybeAccount = await fetchMaybeAdminSingleton(rpc, address, config);
102
+ assertAccountExists(maybeAccount);
103
+ return maybeAccount;
104
+ }
105
+
106
+ export async function fetchMaybeAdminSingleton<TAddress extends string = string>(
107
+ rpc: Parameters<typeof fetchEncodedAccount>[0],
108
+ address: Address<TAddress>,
109
+ config?: FetchAccountConfig,
110
+ ): Promise<MaybeAccount<AdminSingleton, TAddress>> {
111
+ const maybeAccount = await fetchEncodedAccount(rpc, address, config);
112
+ return decodeAdminSingleton(maybeAccount);
113
+ }
114
+
115
+ export async function fetchAllAdminSingleton(
116
+ rpc: Parameters<typeof fetchEncodedAccounts>[0],
117
+ addresses: Array<Address>,
118
+ config?: FetchAccountsConfig,
119
+ ): Promise<Account<AdminSingleton>[]> {
120
+ const maybeAccounts = await fetchAllMaybeAdminSingleton(rpc, addresses, config);
121
+ assertAccountsExist(maybeAccounts);
122
+ return maybeAccounts;
123
+ }
124
+
125
+ export async function fetchAllMaybeAdminSingleton(
126
+ rpc: Parameters<typeof fetchEncodedAccounts>[0],
127
+ addresses: Array<Address>,
128
+ config?: FetchAccountsConfig,
129
+ ): Promise<MaybeAccount<AdminSingleton>[]> {
130
+ const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
131
+ return maybeAccounts.map((maybeAccount) => decodeAdminSingleton(maybeAccount));
132
+ }
133
+
134
+ export function getAdminSingletonSize(): number {
135
+ return 41;
136
+ }
@@ -0,0 +1,156 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+
9
+ import {
10
+ type Account,
11
+ assertAccountExists,
12
+ assertAccountsExist,
13
+ decodeAccount,
14
+ type EncodedAccount,
15
+ type FetchAccountConfig,
16
+ type FetchAccountsConfig,
17
+ fetchEncodedAccount,
18
+ fetchEncodedAccounts,
19
+ type MaybeAccount,
20
+ type MaybeEncodedAccount,
21
+ } from '@solana/kit';
22
+ import { type Address, getAddressDecoder, getAddressEncoder } from '@solana/kit';
23
+ import {
24
+ type Codec,
25
+ combineCodec,
26
+ type Decoder,
27
+ type Encoder,
28
+ fixDecoderSize,
29
+ fixEncoderSize,
30
+ getBytesDecoder,
31
+ getBytesEncoder,
32
+ getStructDecoder,
33
+ getStructEncoder,
34
+ getU8Decoder,
35
+ getU8Encoder,
36
+ getU64Decoder,
37
+ getU64Encoder,
38
+ type ReadonlyUint8Array,
39
+ transformEncoder,
40
+ } from '@solana/kit';
41
+
42
+ export const GUARD_DISCRIMINATOR = new Uint8Array([54, 187, 84, 137, 192, 15, 74, 248]);
43
+
44
+ export function getGuardDiscriminatorBytes() {
45
+ return fixEncoderSize(getBytesEncoder(), 8).encode(GUARD_DISCRIMINATOR);
46
+ }
47
+
48
+ export type Guard = {
49
+ discriminator: ReadonlyUint8Array;
50
+ /** Token that is used as collateral and fees */
51
+ collateralToken: Address;
52
+ /** Token that is used as token OUT when swapping Token IN during order execution start */
53
+ stablecoinToken: Address;
54
+ /** PDA bump */
55
+ bump: number;
56
+ /** Public key of auctioneer that signs permissions and confirmations */
57
+ auctioneerPubKey: Address;
58
+ /** Amount of collected fees, in collateral tokens */
59
+ collectedFees: bigint;
60
+ };
61
+
62
+ export type GuardArgs = {
63
+ /** Token that is used as collateral and fees */
64
+ collateralToken: Address;
65
+ /** Token that is used as token OUT when swapping Token IN during order execution start */
66
+ stablecoinToken: Address;
67
+ /** PDA bump */
68
+ bump: number;
69
+ /** Public key of auctioneer that signs permissions and confirmations */
70
+ auctioneerPubKey: Address;
71
+ /** Amount of collected fees, in collateral tokens */
72
+ collectedFees: number | bigint;
73
+ };
74
+
75
+ export function getGuardEncoder(): Encoder<GuardArgs> {
76
+ return transformEncoder(
77
+ getStructEncoder([
78
+ ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],
79
+ ['collateralToken', getAddressEncoder()],
80
+ ['stablecoinToken', getAddressEncoder()],
81
+ ['bump', getU8Encoder()],
82
+ ['auctioneerPubKey', getAddressEncoder()],
83
+ ['collectedFees', getU64Encoder()],
84
+ ]),
85
+ (value) => ({ ...value, discriminator: GUARD_DISCRIMINATOR }),
86
+ );
87
+ }
88
+
89
+ export function getGuardDecoder(): Decoder<Guard> {
90
+ return getStructDecoder([
91
+ ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],
92
+ ['collateralToken', getAddressDecoder()],
93
+ ['stablecoinToken', getAddressDecoder()],
94
+ ['bump', getU8Decoder()],
95
+ ['auctioneerPubKey', getAddressDecoder()],
96
+ ['collectedFees', getU64Decoder()],
97
+ ]);
98
+ }
99
+
100
+ export function getGuardCodec(): Codec<GuardArgs, Guard> {
101
+ return combineCodec(getGuardEncoder(), getGuardDecoder());
102
+ }
103
+
104
+ export function decodeGuard<TAddress extends string = string>(
105
+ encodedAccount: EncodedAccount<TAddress>,
106
+ ): Account<Guard, TAddress>;
107
+ export function decodeGuard<TAddress extends string = string>(
108
+ encodedAccount: MaybeEncodedAccount<TAddress>,
109
+ ): MaybeAccount<Guard, TAddress>;
110
+ export function decodeGuard<TAddress extends string = string>(
111
+ encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,
112
+ ): Account<Guard, TAddress> | MaybeAccount<Guard, TAddress> {
113
+ return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getGuardDecoder());
114
+ }
115
+
116
+ export async function fetchGuard<TAddress extends string = string>(
117
+ rpc: Parameters<typeof fetchEncodedAccount>[0],
118
+ address: Address<TAddress>,
119
+ config?: FetchAccountConfig,
120
+ ): Promise<Account<Guard, TAddress>> {
121
+ const maybeAccount = await fetchMaybeGuard(rpc, address, config);
122
+ assertAccountExists(maybeAccount);
123
+ return maybeAccount;
124
+ }
125
+
126
+ export async function fetchMaybeGuard<TAddress extends string = string>(
127
+ rpc: Parameters<typeof fetchEncodedAccount>[0],
128
+ address: Address<TAddress>,
129
+ config?: FetchAccountConfig,
130
+ ): Promise<MaybeAccount<Guard, TAddress>> {
131
+ const maybeAccount = await fetchEncodedAccount(rpc, address, config);
132
+ return decodeGuard(maybeAccount);
133
+ }
134
+
135
+ export async function fetchAllGuard(
136
+ rpc: Parameters<typeof fetchEncodedAccounts>[0],
137
+ addresses: Array<Address>,
138
+ config?: FetchAccountsConfig,
139
+ ): Promise<Account<Guard>[]> {
140
+ const maybeAccounts = await fetchAllMaybeGuard(rpc, addresses, config);
141
+ assertAccountsExist(maybeAccounts);
142
+ return maybeAccounts;
143
+ }
144
+
145
+ export async function fetchAllMaybeGuard(
146
+ rpc: Parameters<typeof fetchEncodedAccounts>[0],
147
+ addresses: Array<Address>,
148
+ config?: FetchAccountsConfig,
149
+ ): Promise<MaybeAccount<Guard>[]> {
150
+ const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
151
+ return maybeAccounts.map((maybeAccount) => decodeGuard(maybeAccount));
152
+ }
153
+
154
+ export function getGuardSize(): number {
155
+ return 113;
156
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+
9
+ export * from './adminSingleton.js';
10
+ export * from './guard.js';
11
+ export * from './order.js';