@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,419 @@
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 { type Address } from '@solana/kit';
10
+ import {
11
+ type Codec,
12
+ combineCodec,
13
+ type Decoder,
14
+ type Encoder,
15
+ fixDecoderSize,
16
+ fixEncoderSize,
17
+ getBytesDecoder,
18
+ getBytesEncoder,
19
+ getStructDecoder,
20
+ getStructEncoder,
21
+ type ReadonlyUint8Array,
22
+ transformEncoder,
23
+ } from '@solana/kit';
24
+ import {
25
+ type IAccountMeta,
26
+ type IInstruction,
27
+ type IInstructionWithAccounts,
28
+ type IInstructionWithData,
29
+ type ReadonlyAccount,
30
+ type WritableAccount,
31
+ type WritableSignerAccount,
32
+ } from '@solana/kit';
33
+ import { type IAccountSignerMeta, type TransactionSigner } from '@solana/kit';
34
+ import { SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS } from '../programs/index.js';
35
+ import { getAccountMetaFactory, type ResolvedAccount } from '../shared/index.js';
36
+
37
+ export const CLAIM_TOKENS_DISCRIMINATOR = new Uint8Array([108, 216, 210, 231, 0, 212, 42, 64]);
38
+
39
+ export function getClaimTokensDiscriminatorBytes() {
40
+ return fixEncoderSize(getBytesEncoder(), 8).encode(CLAIM_TOKENS_DISCRIMINATOR);
41
+ }
42
+
43
+ export type ClaimTokensInstruction<
44
+ TProgram extends string = typeof SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS,
45
+ TAccountSolver extends string | IAccountMeta<string> = string,
46
+ TAccountOrder extends string | IAccountMeta<string> = string,
47
+ TAccountUser extends string | IAccountMeta<string> = string,
48
+ TAccountGuard extends string | IAccountMeta<string> = string,
49
+ TAccountIxSysvar extends string | IAccountMeta<string> = 'Sysvar1nstructions1111111111111111111111111',
50
+ TAccountRecoveredTokenMint extends string | IAccountMeta<string> = string,
51
+ TAccountSolverRecoveredTokenAccount extends string | IAccountMeta<string> = string,
52
+ TAccountGuardRecoveredTokenAccount extends string | IAccountMeta<string> = string,
53
+ TAccountRecoveredTokenProgram extends string | IAccountMeta<string> = string,
54
+ TAccountCollateralTokenMint extends string | IAccountMeta<string> = string,
55
+ TAccountSolverCollateralTokenAccount extends string | IAccountMeta<string> = string,
56
+ TAccountUserCollateralTokenAccount extends string | IAccountMeta<string> = string,
57
+ TAccountGuardCollateralTokenAccount extends string | IAccountMeta<string> = string,
58
+ TAccountCollateralTokenProgram extends string | IAccountMeta<string> = string,
59
+ TRemainingAccounts extends readonly IAccountMeta<string>[] = [],
60
+ > = IInstruction<TProgram> &
61
+ IInstructionWithData<Uint8Array> &
62
+ IInstructionWithAccounts<
63
+ [
64
+ TAccountSolver extends string
65
+ ? WritableSignerAccount<TAccountSolver> & IAccountSignerMeta<TAccountSolver>
66
+ : TAccountSolver,
67
+ TAccountOrder extends string ? WritableAccount<TAccountOrder> : TAccountOrder,
68
+ TAccountUser extends string ? WritableAccount<TAccountUser> : TAccountUser,
69
+ TAccountGuard extends string ? ReadonlyAccount<TAccountGuard> : TAccountGuard,
70
+ TAccountIxSysvar extends string ? ReadonlyAccount<TAccountIxSysvar> : TAccountIxSysvar,
71
+ TAccountRecoveredTokenMint extends string
72
+ ? ReadonlyAccount<TAccountRecoveredTokenMint>
73
+ : TAccountRecoveredTokenMint,
74
+ TAccountSolverRecoveredTokenAccount extends string
75
+ ? WritableAccount<TAccountSolverRecoveredTokenAccount>
76
+ : TAccountSolverRecoveredTokenAccount,
77
+ TAccountGuardRecoveredTokenAccount extends string
78
+ ? WritableAccount<TAccountGuardRecoveredTokenAccount>
79
+ : TAccountGuardRecoveredTokenAccount,
80
+ TAccountRecoveredTokenProgram extends string
81
+ ? ReadonlyAccount<TAccountRecoveredTokenProgram>
82
+ : TAccountRecoveredTokenProgram,
83
+ TAccountCollateralTokenMint extends string
84
+ ? ReadonlyAccount<TAccountCollateralTokenMint>
85
+ : TAccountCollateralTokenMint,
86
+ TAccountSolverCollateralTokenAccount extends string
87
+ ? WritableAccount<TAccountSolverCollateralTokenAccount>
88
+ : TAccountSolverCollateralTokenAccount,
89
+ TAccountUserCollateralTokenAccount extends string
90
+ ? WritableAccount<TAccountUserCollateralTokenAccount>
91
+ : TAccountUserCollateralTokenAccount,
92
+ TAccountGuardCollateralTokenAccount extends string
93
+ ? WritableAccount<TAccountGuardCollateralTokenAccount>
94
+ : TAccountGuardCollateralTokenAccount,
95
+ TAccountCollateralTokenProgram extends string
96
+ ? ReadonlyAccount<TAccountCollateralTokenProgram>
97
+ : TAccountCollateralTokenProgram,
98
+ ...TRemainingAccounts,
99
+ ]
100
+ >;
101
+
102
+ export type ClaimTokensInstructionData = { discriminator: ReadonlyUint8Array };
103
+
104
+ export type ClaimTokensInstructionDataArgs = {};
105
+
106
+ export function getClaimTokensInstructionDataEncoder(): Encoder<ClaimTokensInstructionDataArgs> {
107
+ return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), (value) => ({
108
+ ...value,
109
+ discriminator: CLAIM_TOKENS_DISCRIMINATOR,
110
+ }));
111
+ }
112
+
113
+ export function getClaimTokensInstructionDataDecoder(): Decoder<ClaimTokensInstructionData> {
114
+ return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)]]);
115
+ }
116
+
117
+ export function getClaimTokensInstructionDataCodec(): Codec<
118
+ ClaimTokensInstructionDataArgs,
119
+ ClaimTokensInstructionData
120
+ > {
121
+ return combineCodec(getClaimTokensInstructionDataEncoder(), getClaimTokensInstructionDataDecoder());
122
+ }
123
+
124
+ export type ClaimTokensInput<
125
+ TAccountSolver extends string = string,
126
+ TAccountOrder extends string = string,
127
+ TAccountUser extends string = string,
128
+ TAccountGuard extends string = string,
129
+ TAccountIxSysvar extends string = string,
130
+ TAccountRecoveredTokenMint extends string = string,
131
+ TAccountSolverRecoveredTokenAccount extends string = string,
132
+ TAccountGuardRecoveredTokenAccount extends string = string,
133
+ TAccountRecoveredTokenProgram extends string = string,
134
+ TAccountCollateralTokenMint extends string = string,
135
+ TAccountSolverCollateralTokenAccount extends string = string,
136
+ TAccountUserCollateralTokenAccount extends string = string,
137
+ TAccountGuardCollateralTokenAccount extends string = string,
138
+ TAccountCollateralTokenProgram extends string = string,
139
+ > = {
140
+ /** Solver that has successfully executed the order and claims tokens */
141
+ solver: TransactionSigner<TAccountSolver>;
142
+ /** Order data */
143
+ order: Address<TAccountOrder>;
144
+ /** User account that will receive lamports after closing Order account */
145
+ user: Address<TAccountUser>;
146
+ /** Guard address, that protects this order execution */
147
+ guard: Address<TAccountGuard>;
148
+ /**
149
+ * the supplied Sysvar could be anything else.
150
+ * The Instruction Sysvar has not been implemented
151
+ * in the Anchor framework yet, so this is the safe approach.
152
+ */
153
+ ixSysvar?: Address<TAccountIxSysvar>;
154
+ /** Recovered token mint */
155
+ recoveredTokenMint: Address<TAccountRecoveredTokenMint>;
156
+ /**
157
+ * Solver token account to which tokens IN or stablecoins will be sent.
158
+ * - Must be either Token IN account or stablecoin account
159
+ * - Must be same token as Guard token account
160
+ */
161
+ solverRecoveredTokenAccount: Address<TAccountSolverRecoveredTokenAccount>;
162
+ /**
163
+ * Guard token account from which tokens IN or stablecoins will be sent to the solver
164
+ * - Must be either Token IN account or stablecoin account
165
+ * - Must be same token as Guard token account
166
+ */
167
+ guardRecoveredTokenAccount: Address<TAccountGuardRecoveredTokenAccount>;
168
+ /** Recovered token program */
169
+ recoveredTokenProgram: Address<TAccountRecoveredTokenProgram>;
170
+ /** Recovered token mint */
171
+ collateralTokenMint: Address<TAccountCollateralTokenMint>;
172
+ /** Solver collateral token account to which taken collateral will be sent. */
173
+ solverCollateralTokenAccount: Address<TAccountSolverCollateralTokenAccount>;
174
+ /** Solver collateral token account to which taken collateral will be sent. */
175
+ userCollateralTokenAccount?: Address<TAccountUserCollateralTokenAccount>;
176
+ /** Guard collateral token account to which taken collateral will be sent. */
177
+ guardCollateralTokenAccount: Address<TAccountGuardCollateralTokenAccount>;
178
+ /** Solana token program */
179
+ collateralTokenProgram: Address<TAccountCollateralTokenProgram>;
180
+ };
181
+
182
+ export function getClaimTokensInstruction<
183
+ TAccountSolver extends string,
184
+ TAccountOrder extends string,
185
+ TAccountUser extends string,
186
+ TAccountGuard extends string,
187
+ TAccountIxSysvar extends string,
188
+ TAccountRecoveredTokenMint extends string,
189
+ TAccountSolverRecoveredTokenAccount extends string,
190
+ TAccountGuardRecoveredTokenAccount extends string,
191
+ TAccountRecoveredTokenProgram extends string,
192
+ TAccountCollateralTokenMint extends string,
193
+ TAccountSolverCollateralTokenAccount extends string,
194
+ TAccountUserCollateralTokenAccount extends string,
195
+ TAccountGuardCollateralTokenAccount extends string,
196
+ TAccountCollateralTokenProgram extends string,
197
+ TProgramAddress extends Address = typeof SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS,
198
+ >(
199
+ input: ClaimTokensInput<
200
+ TAccountSolver,
201
+ TAccountOrder,
202
+ TAccountUser,
203
+ TAccountGuard,
204
+ TAccountIxSysvar,
205
+ TAccountRecoveredTokenMint,
206
+ TAccountSolverRecoveredTokenAccount,
207
+ TAccountGuardRecoveredTokenAccount,
208
+ TAccountRecoveredTokenProgram,
209
+ TAccountCollateralTokenMint,
210
+ TAccountSolverCollateralTokenAccount,
211
+ TAccountUserCollateralTokenAccount,
212
+ TAccountGuardCollateralTokenAccount,
213
+ TAccountCollateralTokenProgram
214
+ >,
215
+ config?: { programAddress?: TProgramAddress },
216
+ ): ClaimTokensInstruction<
217
+ TProgramAddress,
218
+ TAccountSolver,
219
+ TAccountOrder,
220
+ TAccountUser,
221
+ TAccountGuard,
222
+ TAccountIxSysvar,
223
+ TAccountRecoveredTokenMint,
224
+ TAccountSolverRecoveredTokenAccount,
225
+ TAccountGuardRecoveredTokenAccount,
226
+ TAccountRecoveredTokenProgram,
227
+ TAccountCollateralTokenMint,
228
+ TAccountSolverCollateralTokenAccount,
229
+ TAccountUserCollateralTokenAccount,
230
+ TAccountGuardCollateralTokenAccount,
231
+ TAccountCollateralTokenProgram
232
+ > {
233
+ // Program address.
234
+ const programAddress = config?.programAddress ?? SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS;
235
+
236
+ // Original accounts.
237
+ const originalAccounts = {
238
+ solver: { value: input.solver ?? null, isWritable: true },
239
+ order: { value: input.order ?? null, isWritable: true },
240
+ user: { value: input.user ?? null, isWritable: true },
241
+ guard: { value: input.guard ?? null, isWritable: false },
242
+ ixSysvar: { value: input.ixSysvar ?? null, isWritable: false },
243
+ recoveredTokenMint: {
244
+ value: input.recoveredTokenMint ?? null,
245
+ isWritable: false,
246
+ },
247
+ solverRecoveredTokenAccount: {
248
+ value: input.solverRecoveredTokenAccount ?? null,
249
+ isWritable: true,
250
+ },
251
+ guardRecoveredTokenAccount: {
252
+ value: input.guardRecoveredTokenAccount ?? null,
253
+ isWritable: true,
254
+ },
255
+ recoveredTokenProgram: {
256
+ value: input.recoveredTokenProgram ?? null,
257
+ isWritable: false,
258
+ },
259
+ collateralTokenMint: {
260
+ value: input.collateralTokenMint ?? null,
261
+ isWritable: false,
262
+ },
263
+ solverCollateralTokenAccount: {
264
+ value: input.solverCollateralTokenAccount ?? null,
265
+ isWritable: true,
266
+ },
267
+ userCollateralTokenAccount: {
268
+ value: input.userCollateralTokenAccount ?? null,
269
+ isWritable: true,
270
+ },
271
+ guardCollateralTokenAccount: {
272
+ value: input.guardCollateralTokenAccount ?? null,
273
+ isWritable: true,
274
+ },
275
+ collateralTokenProgram: {
276
+ value: input.collateralTokenProgram ?? null,
277
+ isWritable: false,
278
+ },
279
+ };
280
+ const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;
281
+
282
+ // Resolve default values.
283
+ if (!accounts.ixSysvar.value) {
284
+ accounts.ixSysvar.value =
285
+ 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;
286
+ }
287
+
288
+ const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
289
+ const instruction = {
290
+ accounts: [
291
+ getAccountMeta(accounts.solver),
292
+ getAccountMeta(accounts.order),
293
+ getAccountMeta(accounts.user),
294
+ getAccountMeta(accounts.guard),
295
+ getAccountMeta(accounts.ixSysvar),
296
+ getAccountMeta(accounts.recoveredTokenMint),
297
+ getAccountMeta(accounts.solverRecoveredTokenAccount),
298
+ getAccountMeta(accounts.guardRecoveredTokenAccount),
299
+ getAccountMeta(accounts.recoveredTokenProgram),
300
+ getAccountMeta(accounts.collateralTokenMint),
301
+ getAccountMeta(accounts.solverCollateralTokenAccount),
302
+ getAccountMeta(accounts.userCollateralTokenAccount),
303
+ getAccountMeta(accounts.guardCollateralTokenAccount),
304
+ getAccountMeta(accounts.collateralTokenProgram),
305
+ ],
306
+ programAddress,
307
+ data: getClaimTokensInstructionDataEncoder().encode({}),
308
+ } as ClaimTokensInstruction<
309
+ TProgramAddress,
310
+ TAccountSolver,
311
+ TAccountOrder,
312
+ TAccountUser,
313
+ TAccountGuard,
314
+ TAccountIxSysvar,
315
+ TAccountRecoveredTokenMint,
316
+ TAccountSolverRecoveredTokenAccount,
317
+ TAccountGuardRecoveredTokenAccount,
318
+ TAccountRecoveredTokenProgram,
319
+ TAccountCollateralTokenMint,
320
+ TAccountSolverCollateralTokenAccount,
321
+ TAccountUserCollateralTokenAccount,
322
+ TAccountGuardCollateralTokenAccount,
323
+ TAccountCollateralTokenProgram
324
+ >;
325
+
326
+ return instruction;
327
+ }
328
+
329
+ export type ParsedClaimTokensInstruction<
330
+ TProgram extends string = typeof SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS,
331
+ TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],
332
+ > = {
333
+ programAddress: Address<TProgram>;
334
+ accounts: {
335
+ /** Solver that has successfully executed the order and claims tokens */
336
+ solver: TAccountMetas[0];
337
+ /** Order data */
338
+ order: TAccountMetas[1];
339
+ /** User account that will receive lamports after closing Order account */
340
+ user: TAccountMetas[2];
341
+ /** Guard address, that protects this order execution */
342
+ guard: TAccountMetas[3];
343
+ /**
344
+ * the supplied Sysvar could be anything else.
345
+ * The Instruction Sysvar has not been implemented
346
+ * in the Anchor framework yet, so this is the safe approach.
347
+ */
348
+
349
+ ixSysvar: TAccountMetas[4];
350
+ /** Recovered token mint */
351
+ recoveredTokenMint: TAccountMetas[5];
352
+ /**
353
+ * Solver token account to which tokens IN or stablecoins will be sent.
354
+ * - Must be either Token IN account or stablecoin account
355
+ * - Must be same token as Guard token account
356
+ */
357
+
358
+ solverRecoveredTokenAccount: TAccountMetas[6];
359
+ /**
360
+ * Guard token account from which tokens IN or stablecoins will be sent to the solver
361
+ * - Must be either Token IN account or stablecoin account
362
+ * - Must be same token as Guard token account
363
+ */
364
+
365
+ guardRecoveredTokenAccount: TAccountMetas[7];
366
+ /** Recovered token program */
367
+ recoveredTokenProgram: TAccountMetas[8];
368
+ /** Recovered token mint */
369
+ collateralTokenMint: TAccountMetas[9];
370
+ /** Solver collateral token account to which taken collateral will be sent. */
371
+ solverCollateralTokenAccount: TAccountMetas[10];
372
+ /** Solver collateral token account to which taken collateral will be sent. */
373
+ userCollateralTokenAccount?: TAccountMetas[11] | undefined;
374
+ /** Guard collateral token account to which taken collateral will be sent. */
375
+ guardCollateralTokenAccount: TAccountMetas[12];
376
+ /** Solana token program */
377
+ collateralTokenProgram: TAccountMetas[13];
378
+ };
379
+ data: ClaimTokensInstructionData;
380
+ };
381
+
382
+ export function parseClaimTokensInstruction<TProgram extends string, TAccountMetas extends readonly IAccountMeta[]>(
383
+ instruction: IInstruction<TProgram> & IInstructionWithAccounts<TAccountMetas> & IInstructionWithData<Uint8Array>,
384
+ ): ParsedClaimTokensInstruction<TProgram, TAccountMetas> {
385
+ if (instruction.accounts.length < 14) {
386
+ // TODO: Coded error.
387
+ throw new Error('Not enough accounts');
388
+ }
389
+ let accountIndex = 0;
390
+ const getNextAccount = () => {
391
+ const accountMeta = instruction.accounts![accountIndex]!;
392
+ accountIndex += 1;
393
+ return accountMeta;
394
+ };
395
+ const getNextOptionalAccount = () => {
396
+ const accountMeta = getNextAccount();
397
+ return accountMeta.address === SOURCE_CHAIN_GUARD_PROGRAM_ADDRESS ? undefined : accountMeta;
398
+ };
399
+ return {
400
+ programAddress: instruction.programAddress,
401
+ accounts: {
402
+ solver: getNextAccount(),
403
+ order: getNextAccount(),
404
+ user: getNextAccount(),
405
+ guard: getNextAccount(),
406
+ ixSysvar: getNextAccount(),
407
+ recoveredTokenMint: getNextAccount(),
408
+ solverRecoveredTokenAccount: getNextAccount(),
409
+ guardRecoveredTokenAccount: getNextAccount(),
410
+ recoveredTokenProgram: getNextAccount(),
411
+ collateralTokenMint: getNextAccount(),
412
+ solverCollateralTokenAccount: getNextAccount(),
413
+ userCollateralTokenAccount: getNextOptionalAccount(),
414
+ guardCollateralTokenAccount: getNextAccount(),
415
+ collateralTokenProgram: getNextAccount(),
416
+ },
417
+ data: getClaimTokensInstructionDataDecoder().decode(instruction.data),
418
+ };
419
+ }