@debridge-finance/borderless-validation-sdk 0.0.0-dev-dee2389

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 (345) hide show
  1. package/dist/cjs/graylists/evm/token-permit-metadata.js +28 -0
  2. package/dist/cjs/graylists/evm/token-permit-metadata.js.map +1 -0
  3. package/dist/cjs/helpers/address.js +75 -0
  4. package/dist/cjs/helpers/address.js.map +1 -0
  5. package/dist/cjs/helpers/caveat-decoder.js +60 -0
  6. package/dist/cjs/helpers/caveat-decoder.js.map +1 -0
  7. package/dist/cjs/helpers/constants.js +6 -0
  8. package/dist/cjs/helpers/constants.js.map +1 -0
  9. package/dist/cjs/helpers/evm-action.js +20 -0
  10. package/dist/cjs/helpers/evm-action.js.map +1 -0
  11. package/dist/cjs/helpers/evm-calldata.js +45 -0
  12. package/dist/cjs/helpers/evm-calldata.js.map +1 -0
  13. package/dist/cjs/helpers/evm-intent-id-abi.js +67 -0
  14. package/dist/cjs/helpers/evm-intent-id-abi.js.map +1 -0
  15. package/dist/cjs/helpers/evm-intent-id.js +70 -0
  16. package/dist/cjs/helpers/evm-intent-id.js.map +1 -0
  17. package/dist/cjs/helpers/evm-token.js +30 -0
  18. package/dist/cjs/helpers/evm-token.js.map +1 -0
  19. package/dist/cjs/helpers/evm-trade-amounts.js +42 -0
  20. package/dist/cjs/helpers/evm-trade-amounts.js.map +1 -0
  21. package/dist/cjs/helpers/solana-instruction.js +160 -0
  22. package/dist/cjs/helpers/solana-instruction.js.map +1 -0
  23. package/dist/cjs/helpers/solana-intent-id.js +460 -0
  24. package/dist/cjs/helpers/solana-intent-id.js.map +1 -0
  25. package/dist/cjs/helpers/solana-transaction-decode.js +58 -0
  26. package/dist/cjs/helpers/solana-transaction-decode.js.map +1 -0
  27. package/dist/cjs/helpers/zod.js +12 -0
  28. package/dist/cjs/helpers/zod.js.map +1 -0
  29. package/dist/cjs/index.js +9 -0
  30. package/dist/cjs/index.js.map +1 -0
  31. package/dist/cjs/package.json +1 -0
  32. package/dist/cjs/types/enums.js +137 -0
  33. package/dist/cjs/types/enums.js.map +1 -0
  34. package/dist/cjs/types/index.js +21 -0
  35. package/dist/cjs/types/index.js.map +1 -0
  36. package/dist/cjs/types/request.js +65 -0
  37. package/dist/cjs/types/request.js.map +1 -0
  38. package/dist/cjs/types/response.js +252 -0
  39. package/dist/cjs/types/response.js.map +1 -0
  40. package/dist/cjs/types/validation.js +242 -0
  41. package/dist/cjs/types/validation.js.map +1 -0
  42. package/dist/cjs/validations/echo-fields.js +67 -0
  43. package/dist/cjs/validations/echo-fields.js.map +1 -0
  44. package/dist/cjs/validations/evm-caveats.js +235 -0
  45. package/dist/cjs/validations/evm-caveats.js.map +1 -0
  46. package/dist/cjs/validations/evm-op-budget.js +261 -0
  47. package/dist/cjs/validations/evm-op-budget.js.map +1 -0
  48. package/dist/cjs/validations/evm-op-gas-compensation.js +152 -0
  49. package/dist/cjs/validations/evm-op-gas-compensation.js.map +1 -0
  50. package/dist/cjs/validations/evm-op-hook.js +8 -0
  51. package/dist/cjs/validations/evm-op-hook.js.map +1 -0
  52. package/dist/cjs/validations/evm-op-wrap.js +112 -0
  53. package/dist/cjs/validations/evm-op-wrap.js.map +1 -0
  54. package/dist/cjs/validations/evm-permit.js +224 -0
  55. package/dist/cjs/validations/evm-permit.js.map +1 -0
  56. package/dist/cjs/validations/evm-permit2.js +361 -0
  57. package/dist/cjs/validations/evm-permit2.js.map +1 -0
  58. package/dist/cjs/validations/evm-required-actions.js +184 -0
  59. package/dist/cjs/validations/evm-required-actions.js.map +1 -0
  60. package/dist/cjs/validations/evm-sign712-metamask.js +147 -0
  61. package/dist/cjs/validations/evm-sign712-metamask.js.map +1 -0
  62. package/dist/cjs/validations/evm-sign712.js +203 -0
  63. package/dist/cjs/validations/evm-sign712.js.map +1 -0
  64. package/dist/cjs/validations/evm-sign7702.js +59 -0
  65. package/dist/cjs/validations/evm-sign7702.js.map +1 -0
  66. package/dist/cjs/validations/evm-transaction.js +38 -0
  67. package/dist/cjs/validations/evm-transaction.js.map +1 -0
  68. package/dist/cjs/validations/hooks-common.js +207 -0
  69. package/dist/cjs/validations/hooks-common.js.map +1 -0
  70. package/dist/cjs/validations/required-actions.js +69 -0
  71. package/dist/cjs/validations/required-actions.js.map +1 -0
  72. package/dist/cjs/validations/solana-hook.js +225 -0
  73. package/dist/cjs/validations/solana-hook.js.map +1 -0
  74. package/dist/cjs/validations/solana-op-budget.js +293 -0
  75. package/dist/cjs/validations/solana-op-budget.js.map +1 -0
  76. package/dist/cjs/validations/solana-op-wrap.js +191 -0
  77. package/dist/cjs/validations/solana-op-wrap.js.map +1 -0
  78. package/dist/cjs/validations/solana-required-actions.js +122 -0
  79. package/dist/cjs/validations/solana-required-actions.js.map +1 -0
  80. package/dist/cjs/validations/solana-sign.js +171 -0
  81. package/dist/cjs/validations/solana-sign.js.map +1 -0
  82. package/dist/cjs/validations/solana-transaction.js +238 -0
  83. package/dist/cjs/validations/solana-transaction.js.map +1 -0
  84. package/dist/cjs/validations/trade-grouping.js +165 -0
  85. package/dist/cjs/validations/trade-grouping.js.map +1 -0
  86. package/dist/cjs/validations/trade-intent-consistency.js +104 -0
  87. package/dist/cjs/validations/trade-intent-consistency.js.map +1 -0
  88. package/dist/cjs/validations/trades.js +517 -0
  89. package/dist/cjs/validations/trades.js.map +1 -0
  90. package/dist/cjs/validator.js +75 -0
  91. package/dist/cjs/validator.js.map +1 -0
  92. package/dist/cjs/whitelists/environment-config.js +118 -0
  93. package/dist/cjs/whitelists/environment-config.js.map +1 -0
  94. package/dist/cjs/whitelists/evm/caveat-enforcers.js +18 -0
  95. package/dist/cjs/whitelists/evm/caveat-enforcers.js.map +1 -0
  96. package/dist/cjs/whitelists/evm/delegation-manager.js +9 -0
  97. package/dist/cjs/whitelists/evm/delegation-manager.js.map +1 -0
  98. package/dist/cjs/whitelists/evm/eip7702-delegation.js +8 -0
  99. package/dist/cjs/whitelists/evm/eip7702-delegation.js.map +1 -0
  100. package/dist/cjs/whitelists/evm/index.js +17 -0
  101. package/dist/cjs/whitelists/evm/index.js.map +1 -0
  102. package/dist/cjs/whitelists/evm/permit2.js +18 -0
  103. package/dist/cjs/whitelists/evm/permit2.js.map +1 -0
  104. package/dist/cjs/whitelists/evm/weth.js +19 -0
  105. package/dist/cjs/whitelists/evm/weth.js.map +1 -0
  106. package/dist/cjs/whitelists/solana/index.js +19 -0
  107. package/dist/cjs/whitelists/solana/index.js.map +1 -0
  108. package/dist/cjs/whitelists/solana/intent-signature.js +25 -0
  109. package/dist/cjs/whitelists/solana/intent-signature.js.map +1 -0
  110. package/dist/cjs/whitelists/solana/programs.js +19 -0
  111. package/dist/cjs/whitelists/solana/programs.js.map +1 -0
  112. package/dist/cjs/whitelists/subscription-to-chain-id.js +36 -0
  113. package/dist/cjs/whitelists/subscription-to-chain-id.js.map +1 -0
  114. package/dist/cjs/whitelists/types.js +29 -0
  115. package/dist/cjs/whitelists/types.js.map +1 -0
  116. package/dist/esm/graylists/evm/token-permit-metadata.js +24 -0
  117. package/dist/esm/graylists/evm/token-permit-metadata.js.map +1 -0
  118. package/dist/esm/helpers/address.js +63 -0
  119. package/dist/esm/helpers/address.js.map +1 -0
  120. package/dist/esm/helpers/caveat-decoder.js +55 -0
  121. package/dist/esm/helpers/caveat-decoder.js.map +1 -0
  122. package/dist/esm/helpers/constants.js +3 -0
  123. package/dist/esm/helpers/constants.js.map +1 -0
  124. package/dist/esm/helpers/evm-action.js +16 -0
  125. package/dist/esm/helpers/evm-action.js.map +1 -0
  126. package/dist/esm/helpers/evm-calldata.js +39 -0
  127. package/dist/esm/helpers/evm-calldata.js.map +1 -0
  128. package/dist/esm/helpers/evm-intent-id-abi.js +64 -0
  129. package/dist/esm/helpers/evm-intent-id-abi.js.map +1 -0
  130. package/dist/esm/helpers/evm-intent-id.js +67 -0
  131. package/dist/esm/helpers/evm-intent-id.js.map +1 -0
  132. package/dist/esm/helpers/evm-token.js +25 -0
  133. package/dist/esm/helpers/evm-token.js.map +1 -0
  134. package/dist/esm/helpers/evm-trade-amounts.js +39 -0
  135. package/dist/esm/helpers/evm-trade-amounts.js.map +1 -0
  136. package/dist/esm/helpers/solana-instruction.js +146 -0
  137. package/dist/esm/helpers/solana-instruction.js.map +1 -0
  138. package/dist/esm/helpers/solana-intent-id.js +457 -0
  139. package/dist/esm/helpers/solana-intent-id.js.map +1 -0
  140. package/dist/esm/helpers/solana-transaction-decode.js +55 -0
  141. package/dist/esm/helpers/solana-transaction-decode.js.map +1 -0
  142. package/dist/esm/helpers/zod.js +9 -0
  143. package/dist/esm/helpers/zod.js.map +1 -0
  144. package/dist/esm/index.js +3 -0
  145. package/dist/esm/index.js.map +1 -0
  146. package/dist/esm/package.json +1 -0
  147. package/dist/esm/types/enums.js +134 -0
  148. package/dist/esm/types/enums.js.map +1 -0
  149. package/dist/esm/types/index.js +5 -0
  150. package/dist/esm/types/index.js.map +1 -0
  151. package/dist/esm/types/request.js +62 -0
  152. package/dist/esm/types/request.js.map +1 -0
  153. package/dist/esm/types/response.js +249 -0
  154. package/dist/esm/types/response.js.map +1 -0
  155. package/dist/esm/types/validation.js +239 -0
  156. package/dist/esm/types/validation.js.map +1 -0
  157. package/dist/esm/validations/echo-fields.js +64 -0
  158. package/dist/esm/validations/echo-fields.js.map +1 -0
  159. package/dist/esm/validations/evm-caveats.js +228 -0
  160. package/dist/esm/validations/evm-caveats.js.map +1 -0
  161. package/dist/esm/validations/evm-op-budget.js +258 -0
  162. package/dist/esm/validations/evm-op-budget.js.map +1 -0
  163. package/dist/esm/validations/evm-op-gas-compensation.js +149 -0
  164. package/dist/esm/validations/evm-op-gas-compensation.js.map +1 -0
  165. package/dist/esm/validations/evm-op-hook.js +5 -0
  166. package/dist/esm/validations/evm-op-hook.js.map +1 -0
  167. package/dist/esm/validations/evm-op-wrap.js +109 -0
  168. package/dist/esm/validations/evm-op-wrap.js.map +1 -0
  169. package/dist/esm/validations/evm-permit.js +221 -0
  170. package/dist/esm/validations/evm-permit.js.map +1 -0
  171. package/dist/esm/validations/evm-permit2.js +358 -0
  172. package/dist/esm/validations/evm-permit2.js.map +1 -0
  173. package/dist/esm/validations/evm-required-actions.js +181 -0
  174. package/dist/esm/validations/evm-required-actions.js.map +1 -0
  175. package/dist/esm/validations/evm-sign712-metamask.js +144 -0
  176. package/dist/esm/validations/evm-sign712-metamask.js.map +1 -0
  177. package/dist/esm/validations/evm-sign712.js +200 -0
  178. package/dist/esm/validations/evm-sign712.js.map +1 -0
  179. package/dist/esm/validations/evm-sign7702.js +56 -0
  180. package/dist/esm/validations/evm-sign7702.js.map +1 -0
  181. package/dist/esm/validations/evm-transaction.js +35 -0
  182. package/dist/esm/validations/evm-transaction.js.map +1 -0
  183. package/dist/esm/validations/hooks-common.js +204 -0
  184. package/dist/esm/validations/hooks-common.js.map +1 -0
  185. package/dist/esm/validations/required-actions.js +66 -0
  186. package/dist/esm/validations/required-actions.js.map +1 -0
  187. package/dist/esm/validations/solana-hook.js +222 -0
  188. package/dist/esm/validations/solana-hook.js.map +1 -0
  189. package/dist/esm/validations/solana-op-budget.js +290 -0
  190. package/dist/esm/validations/solana-op-budget.js.map +1 -0
  191. package/dist/esm/validations/solana-op-wrap.js +188 -0
  192. package/dist/esm/validations/solana-op-wrap.js.map +1 -0
  193. package/dist/esm/validations/solana-required-actions.js +119 -0
  194. package/dist/esm/validations/solana-required-actions.js.map +1 -0
  195. package/dist/esm/validations/solana-sign.js +168 -0
  196. package/dist/esm/validations/solana-sign.js.map +1 -0
  197. package/dist/esm/validations/solana-transaction.js +234 -0
  198. package/dist/esm/validations/solana-transaction.js.map +1 -0
  199. package/dist/esm/validations/trade-grouping.js +161 -0
  200. package/dist/esm/validations/trade-grouping.js.map +1 -0
  201. package/dist/esm/validations/trade-intent-consistency.js +101 -0
  202. package/dist/esm/validations/trade-intent-consistency.js.map +1 -0
  203. package/dist/esm/validations/trades.js +514 -0
  204. package/dist/esm/validations/trades.js.map +1 -0
  205. package/dist/esm/validator.js +72 -0
  206. package/dist/esm/validator.js.map +1 -0
  207. package/dist/esm/whitelists/environment-config.js +115 -0
  208. package/dist/esm/whitelists/environment-config.js.map +1 -0
  209. package/dist/esm/whitelists/evm/caveat-enforcers.js +15 -0
  210. package/dist/esm/whitelists/evm/caveat-enforcers.js.map +1 -0
  211. package/dist/esm/whitelists/evm/delegation-manager.js +6 -0
  212. package/dist/esm/whitelists/evm/delegation-manager.js.map +1 -0
  213. package/dist/esm/whitelists/evm/eip7702-delegation.js +5 -0
  214. package/dist/esm/whitelists/evm/eip7702-delegation.js.map +1 -0
  215. package/dist/esm/whitelists/evm/index.js +6 -0
  216. package/dist/esm/whitelists/evm/index.js.map +1 -0
  217. package/dist/esm/whitelists/evm/permit2.js +15 -0
  218. package/dist/esm/whitelists/evm/permit2.js.map +1 -0
  219. package/dist/esm/whitelists/evm/weth.js +16 -0
  220. package/dist/esm/whitelists/evm/weth.js.map +1 -0
  221. package/dist/esm/whitelists/solana/index.js +3 -0
  222. package/dist/esm/whitelists/solana/index.js.map +1 -0
  223. package/dist/esm/whitelists/solana/intent-signature.js +22 -0
  224. package/dist/esm/whitelists/solana/intent-signature.js.map +1 -0
  225. package/dist/esm/whitelists/solana/programs.js +16 -0
  226. package/dist/esm/whitelists/solana/programs.js.map +1 -0
  227. package/dist/esm/whitelists/subscription-to-chain-id.js +32 -0
  228. package/dist/esm/whitelists/subscription-to-chain-id.js.map +1 -0
  229. package/dist/esm/whitelists/types.js +26 -0
  230. package/dist/esm/whitelists/types.js.map +1 -0
  231. package/dist/types/graylists/evm/token-permit-metadata.d.ts +11 -0
  232. package/dist/types/graylists/evm/token-permit-metadata.d.ts.map +1 -0
  233. package/dist/types/helpers/address.d.ts +13 -0
  234. package/dist/types/helpers/address.d.ts.map +1 -0
  235. package/dist/types/helpers/caveat-decoder.d.ts +13 -0
  236. package/dist/types/helpers/caveat-decoder.d.ts.map +1 -0
  237. package/dist/types/helpers/constants.d.ts +2 -0
  238. package/dist/types/helpers/constants.d.ts.map +1 -0
  239. package/dist/types/helpers/evm-action.d.ts +4 -0
  240. package/dist/types/helpers/evm-action.d.ts.map +1 -0
  241. package/dist/types/helpers/evm-calldata.d.ts +15 -0
  242. package/dist/types/helpers/evm-calldata.d.ts.map +1 -0
  243. package/dist/types/helpers/evm-intent-id-abi.d.ts +106 -0
  244. package/dist/types/helpers/evm-intent-id-abi.d.ts.map +1 -0
  245. package/dist/types/helpers/evm-intent-id.d.ts +3 -0
  246. package/dist/types/helpers/evm-intent-id.d.ts.map +1 -0
  247. package/dist/types/helpers/evm-token.d.ts +4 -0
  248. package/dist/types/helpers/evm-token.d.ts.map +1 -0
  249. package/dist/types/helpers/evm-trade-amounts.d.ts +16 -0
  250. package/dist/types/helpers/evm-trade-amounts.d.ts.map +1 -0
  251. package/dist/types/helpers/solana-instruction.d.ts +44 -0
  252. package/dist/types/helpers/solana-instruction.d.ts.map +1 -0
  253. package/dist/types/helpers/solana-intent-id.d.ts +3 -0
  254. package/dist/types/helpers/solana-intent-id.d.ts.map +1 -0
  255. package/dist/types/helpers/solana-transaction-decode.d.ts +18 -0
  256. package/dist/types/helpers/solana-transaction-decode.d.ts.map +1 -0
  257. package/dist/types/helpers/zod.d.ts +2 -0
  258. package/dist/types/helpers/zod.d.ts.map +1 -0
  259. package/dist/types/index.d.ts +4 -0
  260. package/dist/types/index.d.ts.map +1 -0
  261. package/dist/types/types/enums.d.ts +112 -0
  262. package/dist/types/types/enums.d.ts.map +1 -0
  263. package/dist/types/types/index.d.ts +5 -0
  264. package/dist/types/types/index.d.ts.map +1 -0
  265. package/dist/types/types/request.d.ts +134 -0
  266. package/dist/types/types/request.d.ts.map +1 -0
  267. package/dist/types/types/response.d.ts +1140 -0
  268. package/dist/types/types/response.d.ts.map +1 -0
  269. package/dist/types/types/validation.d.ts +216 -0
  270. package/dist/types/types/validation.d.ts.map +1 -0
  271. package/dist/types/validations/echo-fields.d.ts +3 -0
  272. package/dist/types/validations/echo-fields.d.ts.map +1 -0
  273. package/dist/types/validations/evm-caveats.d.ts +33 -0
  274. package/dist/types/validations/evm-caveats.d.ts.map +1 -0
  275. package/dist/types/validations/evm-op-budget.d.ts +4 -0
  276. package/dist/types/validations/evm-op-budget.d.ts.map +1 -0
  277. package/dist/types/validations/evm-op-gas-compensation.d.ts +3 -0
  278. package/dist/types/validations/evm-op-gas-compensation.d.ts.map +1 -0
  279. package/dist/types/validations/evm-op-hook.d.ts +3 -0
  280. package/dist/types/validations/evm-op-hook.d.ts.map +1 -0
  281. package/dist/types/validations/evm-op-wrap.d.ts +3 -0
  282. package/dist/types/validations/evm-op-wrap.d.ts.map +1 -0
  283. package/dist/types/validations/evm-permit.d.ts +4 -0
  284. package/dist/types/validations/evm-permit.d.ts.map +1 -0
  285. package/dist/types/validations/evm-permit2.d.ts +4 -0
  286. package/dist/types/validations/evm-permit2.d.ts.map +1 -0
  287. package/dist/types/validations/evm-required-actions.d.ts +4 -0
  288. package/dist/types/validations/evm-required-actions.d.ts.map +1 -0
  289. package/dist/types/validations/evm-sign712-metamask.d.ts +3 -0
  290. package/dist/types/validations/evm-sign712-metamask.d.ts.map +1 -0
  291. package/dist/types/validations/evm-sign712.d.ts +4 -0
  292. package/dist/types/validations/evm-sign712.d.ts.map +1 -0
  293. package/dist/types/validations/evm-sign7702.d.ts +3 -0
  294. package/dist/types/validations/evm-sign7702.d.ts.map +1 -0
  295. package/dist/types/validations/evm-transaction.d.ts +3 -0
  296. package/dist/types/validations/evm-transaction.d.ts.map +1 -0
  297. package/dist/types/validations/hooks-common.d.ts +3 -0
  298. package/dist/types/validations/hooks-common.d.ts.map +1 -0
  299. package/dist/types/validations/required-actions.d.ts +4 -0
  300. package/dist/types/validations/required-actions.d.ts.map +1 -0
  301. package/dist/types/validations/solana-hook.d.ts +4 -0
  302. package/dist/types/validations/solana-hook.d.ts.map +1 -0
  303. package/dist/types/validations/solana-op-budget.d.ts +5 -0
  304. package/dist/types/validations/solana-op-budget.d.ts.map +1 -0
  305. package/dist/types/validations/solana-op-wrap.d.ts +4 -0
  306. package/dist/types/validations/solana-op-wrap.d.ts.map +1 -0
  307. package/dist/types/validations/solana-required-actions.d.ts +4 -0
  308. package/dist/types/validations/solana-required-actions.d.ts.map +1 -0
  309. package/dist/types/validations/solana-sign.d.ts +4 -0
  310. package/dist/types/validations/solana-sign.d.ts.map +1 -0
  311. package/dist/types/validations/solana-transaction.d.ts +5 -0
  312. package/dist/types/validations/solana-transaction.d.ts.map +1 -0
  313. package/dist/types/validations/trade-grouping.d.ts +22 -0
  314. package/dist/types/validations/trade-grouping.d.ts.map +1 -0
  315. package/dist/types/validations/trade-intent-consistency.d.ts +3 -0
  316. package/dist/types/validations/trade-intent-consistency.d.ts.map +1 -0
  317. package/dist/types/validations/trades.d.ts +3 -0
  318. package/dist/types/validations/trades.d.ts.map +1 -0
  319. package/dist/types/validator.d.ts +3 -0
  320. package/dist/types/validator.d.ts.map +1 -0
  321. package/dist/types/whitelists/environment-config.d.ts +4 -0
  322. package/dist/types/whitelists/environment-config.d.ts.map +1 -0
  323. package/dist/types/whitelists/evm/caveat-enforcers.d.ts +6 -0
  324. package/dist/types/whitelists/evm/caveat-enforcers.d.ts.map +1 -0
  325. package/dist/types/whitelists/evm/delegation-manager.d.ts +3 -0
  326. package/dist/types/whitelists/evm/delegation-manager.d.ts.map +1 -0
  327. package/dist/types/whitelists/evm/eip7702-delegation.d.ts +3 -0
  328. package/dist/types/whitelists/evm/eip7702-delegation.d.ts.map +1 -0
  329. package/dist/types/whitelists/evm/index.d.ts +6 -0
  330. package/dist/types/whitelists/evm/index.d.ts.map +1 -0
  331. package/dist/types/whitelists/evm/permit2.d.ts +3 -0
  332. package/dist/types/whitelists/evm/permit2.d.ts.map +1 -0
  333. package/dist/types/whitelists/evm/weth.d.ts +3 -0
  334. package/dist/types/whitelists/evm/weth.d.ts.map +1 -0
  335. package/dist/types/whitelists/solana/index.d.ts +3 -0
  336. package/dist/types/whitelists/solana/index.d.ts.map +1 -0
  337. package/dist/types/whitelists/solana/intent-signature.d.ts +9 -0
  338. package/dist/types/whitelists/solana/intent-signature.d.ts.map +1 -0
  339. package/dist/types/whitelists/solana/programs.d.ts +9 -0
  340. package/dist/types/whitelists/solana/programs.d.ts.map +1 -0
  341. package/dist/types/whitelists/subscription-to-chain-id.d.ts +4 -0
  342. package/dist/types/whitelists/subscription-to-chain-id.d.ts.map +1 -0
  343. package/dist/types/whitelists/types.d.ts +18 -0
  344. package/dist/types/whitelists/types.d.ts.map +1 -0
  345. package/package.json +59 -0
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApproveKind = exports.CUSTOM_APPROVE_FIRST_ATA_INDEX = void 0;
4
+ exports.isClassicApprove = isClassicApprove;
5
+ exports.isCustomApprove = isCustomApprove;
6
+ exports.isSystemTransfer = isSystemTransfer;
7
+ exports.isSyncNative = isSyncNative;
8
+ exports.isCreateAtaIdempotent = isCreateAtaIdempotent;
9
+ exports.isComputeBudget = isComputeBudget;
10
+ exports.isMemo = isMemo;
11
+ exports.decodeClassicApprove = decodeClassicApprove;
12
+ exports.decodeCustomApprove = decodeCustomApprove;
13
+ exports.deriveAta = deriveAta;
14
+ exports.resolveInstructions = resolveInstructions;
15
+ const web3_js_1 = require("@solana/web3.js");
16
+ const programs_1 = require("../whitelists/solana/programs");
17
+ // =============================================
18
+ // Constants
19
+ // =============================================
20
+ // Classic SPL Token Approve discriminator (1 byte)
21
+ const CLASSIC_APPROVE_DISCRIMINATOR = 4;
22
+ // Classic approve instruction data length: 1 byte discriminator + 8 bytes amount
23
+ const CLASSIC_APPROVE_DATA_LENGTH = 9;
24
+ // Custom approveProtocolTransfers discriminator (8 bytes, Anchor)
25
+ const CUSTOM_APPROVE_DISCRIMINATOR = new Uint8Array([17, 3, 184, 144, 112, 130, 116, 98]);
26
+ // Token program IDs that can issue classic approve
27
+ const TOKEN_PROGRAMS = new Set([programs_1.SPL_TOKEN_PROGRAM, programs_1.SPL_TOKEN_2022_PROGRAM]);
28
+ // Custom approve accounts layout: [0]=maker, [1]=statePda, [2]=tokenProgram, [3+]=ATAs
29
+ exports.CUSTOM_APPROVE_FIRST_ATA_INDEX = 3;
30
+ // =============================================
31
+ // Types
32
+ // =============================================
33
+ var ApproveKind;
34
+ (function (ApproveKind) {
35
+ ApproveKind[ApproveKind["Classic"] = 0] = "Classic";
36
+ ApproveKind[ApproveKind["Custom"] = 1] = "Custom";
37
+ })(ApproveKind || (exports.ApproveKind = ApproveKind = {}));
38
+ // =============================================
39
+ // Instruction identification
40
+ // =============================================
41
+ function isClassicApprove(ix) {
42
+ return TOKEN_PROGRAMS.has(ix.programId)
43
+ && ix.data.length === CLASSIC_APPROVE_DATA_LENGTH
44
+ && ix.data[0] === CLASSIC_APPROVE_DISCRIMINATOR;
45
+ }
46
+ function isCustomApprove(ix, intentProgram) {
47
+ if (ix.programId !== intentProgram)
48
+ return false;
49
+ if (ix.data.length < CUSTOM_APPROVE_DISCRIMINATOR.length)
50
+ return false;
51
+ for (let i = 0; i < CUSTOM_APPROVE_DISCRIMINATOR.length; i++) {
52
+ if (ix.data[i] !== CUSTOM_APPROVE_DISCRIMINATOR[i])
53
+ return false;
54
+ }
55
+ return true;
56
+ }
57
+ // SystemProgram Transfer: discriminator = 2 as u32 LE, data >= 12 bytes
58
+ function isSystemTransfer(ix) {
59
+ if (ix.programId !== programs_1.SYSTEM_PROGRAM)
60
+ return false;
61
+ if (ix.data.length < 12)
62
+ return false; // 4 discriminator + 8 lamports
63
+ return ix.data[0] === 2 && ix.data[1] === 0 && ix.data[2] === 0 && ix.data[3] === 0;
64
+ }
65
+ // SPL Token SyncNative: discriminator = 17, data = 1 byte
66
+ function isSyncNative(ix) {
67
+ return ix.programId === programs_1.SPL_TOKEN_PROGRAM
68
+ && ix.data.length === 1
69
+ && ix.data[0] === 17;
70
+ }
71
+ // CreateAssociatedTokenAccountIdempotent: discriminator = 1, data = 1 byte
72
+ function isCreateAtaIdempotent(ix) {
73
+ return ix.programId === programs_1.ASSOCIATED_TOKEN_PROGRAM
74
+ && ix.data.length === 1
75
+ && ix.data[0] === 1;
76
+ }
77
+ // ComputeBudget program instruction (any discriminator)
78
+ function isComputeBudget(ix) {
79
+ return ix.programId === programs_1.COMPUTE_BUDGET_PROGRAM;
80
+ }
81
+ // Memo program instruction (any content)
82
+ function isMemo(ix) {
83
+ return ix.programId === programs_1.MEMO_PROGRAM;
84
+ }
85
+ // =============================================
86
+ // Instruction decoding
87
+ // =============================================
88
+ function decodeClassicApprove(ix) {
89
+ const amount = readU64LE(ix.data, 1);
90
+ return {
91
+ kind: ApproveKind.Classic,
92
+ amount,
93
+ ataAddress: ix.accountKeys[0],
94
+ delegate: ix.accountKeys[1],
95
+ owner: ix.accountKeys[2],
96
+ tokenProgramId: ix.programId,
97
+ };
98
+ }
99
+ function decodeCustomApprove(ix) {
100
+ const vecLength = readU32LE(ix.data, 8);
101
+ const amounts = [];
102
+ for (let i = 0; i < vecLength; i++) {
103
+ amounts.push(readU64LE(ix.data, 12 + i * 8));
104
+ }
105
+ return {
106
+ kind: ApproveKind.Custom,
107
+ vecLength,
108
+ amounts,
109
+ maker: ix.accountKeys[0],
110
+ statePda: ix.accountKeys[1],
111
+ tokenProgramId: ix.accountKeys[2],
112
+ ataAddresses: ix.accountKeys.slice(exports.CUSTOM_APPROVE_FIRST_ATA_INDEX),
113
+ };
114
+ }
115
+ // =============================================
116
+ // ATA derivation
117
+ // =============================================
118
+ const ASSOCIATED_TOKEN_PROGRAM_PUB_KEY = new web3_js_1.PublicKey(programs_1.ASSOCIATED_TOKEN_PROGRAM);
119
+ // Derives the Associated Token Account address.
120
+ // seeds = [owner, tokenProgramId, mint], program = ASSOCIATED_TOKEN_PROGRAM
121
+ function deriveAta(owner, mint, tokenProgramId) {
122
+ const ownerPk = new web3_js_1.PublicKey(owner);
123
+ const mintPk = new web3_js_1.PublicKey(mint);
124
+ const tokenProgramPk = new web3_js_1.PublicKey(tokenProgramId);
125
+ const [ata] = web3_js_1.PublicKey.findProgramAddressSync([ownerPk.toBytes(), tokenProgramPk.toBytes(), mintPk.toBytes()], ASSOCIATED_TOKEN_PROGRAM_PUB_KEY);
126
+ return ata.toBase58();
127
+ }
128
+ // =============================================
129
+ // Resolve compiled instructions to ResolvedInstruction[]
130
+ // =============================================
131
+ function resolveInstructions(compiledInstructions, staticAccountKeys) {
132
+ const resolved = [];
133
+ for (const ix of compiledInstructions) {
134
+ const programId = staticAccountKeys[ix.programIdIndex];
135
+ // Skip instructions with programId in Address Lookup Table
136
+ // (must be already reported by other validations)
137
+ if (programId === undefined)
138
+ continue;
139
+ const accountKeys = ix.accountKeyIndexes.map(idx => staticAccountKeys[idx] ?? "");
140
+ resolved.push({ programId, accountKeys, data: ix.data });
141
+ }
142
+ return resolved;
143
+ }
144
+ // =============================================
145
+ // Binary helpers (little-endian)
146
+ // =============================================
147
+ function readU64LE(data, offset) {
148
+ let value = 0n;
149
+ for (let i = 0; i < 8; i++) {
150
+ value |= BigInt(data[offset + i]) << BigInt(i * 8);
151
+ }
152
+ return value;
153
+ }
154
+ function readU32LE(data, offset) {
155
+ return (data[offset]
156
+ | (data[offset + 1] << 8)
157
+ | (data[offset + 2] << 16)
158
+ | (data[offset + 3] << 24)) >>> 0;
159
+ }
160
+ //# sourceMappingURL=solana-instruction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-instruction.js","sourceRoot":"","sources":["../../../src/helpers/solana-instruction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,460 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeSolanaIntentId = computeSolanaIntentId;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ const viem_1 = require("viem");
6
+ // Marker bytes used in the custom serialization format
7
+ const NONE_MARKER = new Uint8Array([0]);
8
+ const SOME_MARKER = new Uint8Array([1]);
9
+ const ANY_MARKER = new Uint8Array([1]);
10
+ const NOT_ANY_MARKER = new Uint8Array([0]);
11
+ // =============================================
12
+ // Public API
13
+ // =============================================
14
+ // Computes the Solana intentId from the response intent structure.
15
+ // Returns the intentId as a hex string with "0x" prefix.
16
+ //
17
+ // Algorithm:
18
+ // 1. Convert ResponseIntent to IntentData
19
+ // 2. Serialize IntentData using custom binary format (matching @debridge-finance/intents-client)
20
+ // 3. Keccak256 hash the serialized buffer
21
+ // 4. Derive PDA: seeds = ["intent_id", owner, keccak256_hash], program = intentProgram
22
+ // 5. Return PDA as hex string
23
+ function computeSolanaIntentId(intent, realChainId, programIdBase58) {
24
+ const data = convertResponseToIntentData(intent, realChainId);
25
+ const serialized = serializeIntent(data);
26
+ const hash = keccak256(serialized);
27
+ const programId = new web3_js_1.PublicKey(programIdBase58);
28
+ const owner = new web3_js_1.PublicKey(addressToBytes(intent.intentOwner));
29
+ const [pda] = web3_js_1.PublicKey.findProgramAddressSync([new TextEncoder().encode("intent_id"), owner.toBytes(), hash], programId);
30
+ return "0x" + bytesToHex(pda.toBytes());
31
+ }
32
+ // =============================================
33
+ // ResponseIntent → IntentData conversion
34
+ // =============================================
35
+ function convertResponseToIntentData(intent, realChainId) {
36
+ return {
37
+ chainId: realChainId,
38
+ authority: intent.intentAuthority
39
+ ? addressToBytes(intent.intentAuthority) : undefined,
40
+ timestamp: BigInt(intent.intentTimestamp),
41
+ expirationTimestamp: BigInt(intent.expirationTimestamp),
42
+ inputTokens: (intent.inputToken ?? []).map(t => ({
43
+ token: addressToBytes(t.address),
44
+ minPartialAmount: BigInt(t.minPartialAmount),
45
+ maxPartialAmount: BigInt(t.maxPartialAmount),
46
+ constraintBudget: BigInt(t.constraintBudget),
47
+ })),
48
+ giveTokens: intent.giveToken?.map(t => ({
49
+ input: addressToBytes(t.inputTokenAddress),
50
+ output: addressToBytes(t.giveTokenAddress),
51
+ price: BigInt(t.numerator),
52
+ })),
53
+ takeTokens: groupTakeTokens(intent.takeToken),
54
+ receiverDetails: (intent.receiverDetails ?? []).map(d => ({
55
+ chainIds: d.destinationChainIds,
56
+ address: addressToBytes(d.address),
57
+ })),
58
+ allowedSenders: intent.srcAllowedSender
59
+ ? intent.srcAllowedSender.map(addressToBytes) : "any",
60
+ preInteractions: undefined,
61
+ postInteractions: undefined,
62
+ validationRules: undefined,
63
+ executionMetadata: intent.executionMetadata
64
+ ? hexToUint8Array(intent.executionMetadata) : undefined,
65
+ srcAllowedCancelBeneficiary: intent.allowedCancelBeneficiary
66
+ ? [addressToBytes(intent.allowedCancelBeneficiary)] : undefined,
67
+ dstAuthorityAddress: (intent.dstAuthorityAddress ?? []).map(d => ({
68
+ chainIds: d.destinationChainIds,
69
+ address: addressToBytes(d.address),
70
+ })),
71
+ externalCallHash: "any",
72
+ dlnMetadata: "any",
73
+ };
74
+ }
75
+ // Groups takeTokens by fromTokenAddress (giveToken), matching @debridge-finance/intents-client groupBy logic
76
+ function groupTakeTokens(tokens) {
77
+ const groups = new Map();
78
+ for (const token of tokens) {
79
+ let group = groups.get(token.fromTokenAddress);
80
+ if (!group) {
81
+ group = {
82
+ input: addressToBytes(token.fromTokenAddress),
83
+ output: [],
84
+ };
85
+ groups.set(token.fromTokenAddress, group);
86
+ }
87
+ group.output.push({
88
+ chainId: token.takeTokenChainId,
89
+ token: addressToBytes(token.takeTokenAddress),
90
+ price: BigInt(token.numerator),
91
+ });
92
+ }
93
+ return Array.from(groups.values());
94
+ }
95
+ // =============================================
96
+ // Serialization (mirrors @debridge-finance/intents-client ce.serialize())
97
+ // =============================================
98
+ function serializeIntent(data) {
99
+ const addressesList = buildAddressesList(data);
100
+ const serializedList = serializeAddressesList(addressesList);
101
+ const parts = [];
102
+ // chainId (u32 LE)
103
+ parts.push(writeU32LE(data.chainId));
104
+ // authority (optional pubkey)
105
+ parts.push(serializeOptionalPubkey(data.authority));
106
+ // timestamp + expirationTimestamp (two u64 LE in 16 bytes)
107
+ const timestamps = new Uint8Array(16);
108
+ writeU64LEInto(timestamps, 0, data.timestamp);
109
+ writeU64LEInto(timestamps, 8, data.expirationTimestamp);
110
+ parts.push(timestamps);
111
+ // addresses list
112
+ parts.push(serializedList.bytes);
113
+ // inputTokens
114
+ parts.push(serializeInputTokens(data.inputTokens, serializedList.lookup));
115
+ // giveTokens
116
+ parts.push(serializeGiveTokens(data.giveTokens, serializedList.lookup));
117
+ // takeTokens
118
+ parts.push(serializeTakeTokens(data.takeTokens, serializedList.lookup));
119
+ // receiverDetails
120
+ parts.push(serializeReceiversInfo(data.receiverDetails, serializedList.lookup));
121
+ // allowedSenders
122
+ parts.push(serializeAllowedSenders(data.allowedSenders));
123
+ // preInteractions (optional pubkey)
124
+ parts.push(serializeOptionalPubkey(data.preInteractions));
125
+ // postInteractions (optional pubkey)
126
+ parts.push(serializeOptionalPubkey(data.postInteractions));
127
+ // validationRules (optional short array)
128
+ parts.push(serializeShortArray(data.validationRules));
129
+ // executionMetadata (optional bytes)
130
+ parts.push(serializeOptionalBytes(data.executionMetadata));
131
+ // srcAllowedCancelBeneficiary (address array)
132
+ parts.push(serializeAddressArray(data.srcAllowedCancelBeneficiary));
133
+ // dstAuthorityAddress
134
+ parts.push(serializeReceiversInfo(data.dstAuthorityAddress, serializedList.lookup));
135
+ // externalCallHash
136
+ parts.push(serializeExternalCallHash(data.externalCallHash));
137
+ // dlnMetadata
138
+ parts.push(serializeDlnMetadata(data.dlnMetadata));
139
+ return concatBytes(parts);
140
+ }
141
+ function buildAddressesList(data) {
142
+ const seen = new Set();
143
+ const entries = [];
144
+ function addAddr(bytes) {
145
+ const hex = bytesToHex(bytes);
146
+ if (!seen.has(hex)) {
147
+ seen.add(hex);
148
+ entries.push({ hex, bytes });
149
+ }
150
+ }
151
+ // inputTokens
152
+ for (const t of data.inputTokens) {
153
+ addAddr(t.token);
154
+ }
155
+ // giveTokens
156
+ if (data.giveTokens) {
157
+ for (const g of data.giveTokens) {
158
+ addAddr(g.input);
159
+ addAddr(g.output);
160
+ }
161
+ }
162
+ // takeTokens
163
+ for (const t of data.takeTokens) {
164
+ addAddr(t.input);
165
+ if (t.output !== "any") {
166
+ for (const out of t.output) {
167
+ if (out.token !== "any") {
168
+ addAddr(out.token);
169
+ }
170
+ }
171
+ }
172
+ }
173
+ // receiverDetails
174
+ for (const r of data.receiverDetails) {
175
+ addAddr(r.address);
176
+ }
177
+ // dstAuthorityAddress
178
+ for (const d of data.dstAuthorityAddress) {
179
+ addAddr(d.address);
180
+ }
181
+ return entries;
182
+ }
183
+ // Serializes the addresses list and builds the index lookup map.
184
+ // Format matches @debridge-finance/intents-client V.serialize():
185
+ // [numGroups(1)] + [groupLen(1) + groupCount(1)]... + [addresses]
186
+ // Addresses are grouped by byte length, sorted within each group.
187
+ function serializeAddressesList(entries) {
188
+ // Group by address byte length
189
+ const groups = new Map();
190
+ for (const entry of entries) {
191
+ let group = groups.get(entry.bytes.length);
192
+ if (!group) {
193
+ group = [];
194
+ groups.set(entry.bytes.length, group);
195
+ }
196
+ group.push(entry.bytes);
197
+ }
198
+ // Sort group keys, sort addresses within each group
199
+ const sortedLengths = Array.from(groups.keys()).sort((a, b) => a - b);
200
+ // Calculate total size
201
+ let dataSize = 0;
202
+ for (const len of sortedLengths) {
203
+ dataSize += groups.get(len).length * len;
204
+ }
205
+ const totalSize = 1 + sortedLengths.length * 2 + dataSize;
206
+ const buf = new Uint8Array(totalSize);
207
+ buf[0] = sortedLengths.length;
208
+ let headerOffset = 1;
209
+ let dataOffset = 1 + sortedLengths.length * 2;
210
+ const lookup = new Map();
211
+ let globalIndex = 0;
212
+ for (const len of sortedLengths) {
213
+ const addrs = groups.get(len);
214
+ // Sort addresses lexicographically
215
+ addrs.sort(compareBytes);
216
+ buf[headerOffset] = len;
217
+ headerOffset++;
218
+ buf[headerOffset] = addrs.length;
219
+ headerOffset++;
220
+ for (const addr of addrs) {
221
+ lookup.set(bytesToHex(addr), globalIndex);
222
+ globalIndex++;
223
+ buf.set(addr, dataOffset);
224
+ dataOffset += addr.length;
225
+ }
226
+ }
227
+ return { bytes: buf, lookup };
228
+ }
229
+ // =============================================
230
+ // Serialization helpers (mirror @debridge-finance/intents-client methods)
231
+ // =============================================
232
+ function serializeInputTokens(tokens, lookup) {
233
+ const items = tokens.map(t => {
234
+ const buf = new Uint8Array(25);
235
+ buf[0] = lookupIndex(lookup, t.token);
236
+ writeU64LEInto(buf, 1, t.minPartialAmount);
237
+ writeU64LEInto(buf, 9, t.maxPartialAmount);
238
+ writeU64LEInto(buf, 17, t.constraintBudget);
239
+ return buf;
240
+ });
241
+ const count = new Uint8Array(1);
242
+ count[0] = items.length;
243
+ return concatBytes([count, ...items]);
244
+ }
245
+ function serializeGiveTokens(tokens, lookup) {
246
+ if (!tokens || tokens.length === 0)
247
+ return NONE_MARKER;
248
+ const items = tokens.map(g => {
249
+ // Not-any path: output(1) + not-any(1) + input(1) + price(32BE) = 35 bytes
250
+ const buf = new Uint8Array(35);
251
+ buf[0] = lookupIndex(lookup, g.output);
252
+ buf[1] = 0; // not any
253
+ buf[2] = lookupIndex(lookup, g.input);
254
+ // Price as big-endian 256-bit
255
+ writeBigInt256BE(buf, 3, g.price);
256
+ return buf;
257
+ });
258
+ const count = new Uint8Array(1);
259
+ count[0] = items.length;
260
+ return concatBytes([count, ...items]);
261
+ }
262
+ function serializeTakeTokens(tokens, lookup) {
263
+ let totalOutputCount = 0;
264
+ const items = tokens.map(t => {
265
+ if (t.output === "any") {
266
+ totalOutputCount = 1;
267
+ const buf = new Uint8Array(2);
268
+ buf[0] = lookupIndex(lookup, t.input);
269
+ buf[1] = 1; // any
270
+ return buf;
271
+ }
272
+ totalOutputCount += t.output.length;
273
+ const outputParts = t.output.map(out => {
274
+ const inputIdx = lookupIndex(lookup, t.input);
275
+ if (out.token === "any") {
276
+ // inputIdx(1) + [0, chainId(u8), 0, 0, 0, 1(any)] = 7 bytes
277
+ const buf = new Uint8Array(7);
278
+ buf[0] = inputIdx;
279
+ buf[1] = 0;
280
+ buf[2] = out.chainId;
281
+ buf[6] = 1; // token is any
282
+ return buf;
283
+ }
284
+ if (out.price === "any") {
285
+ // inputIdx(1) + [0, chainId(u32LE), 0, tokenIdx, 1(any)] = 9 bytes
286
+ const buf = new Uint8Array(9);
287
+ buf[0] = inputIdx;
288
+ buf[1] = 0;
289
+ new DataView(buf.buffer, buf.byteOffset).setUint32(2, out.chainId, true);
290
+ buf[6] = 0;
291
+ buf[7] = lookupIndex(lookup, out.token);
292
+ buf[8] = 1; // price is any
293
+ return buf;
294
+ }
295
+ // Normal: inputIdx(1) + [0, chainId(u32LE), 0, tokenIdx, 0, price(32BE)] = 41
296
+ const buf = new Uint8Array(41);
297
+ buf[0] = inputIdx;
298
+ buf[1] = 0;
299
+ new DataView(buf.buffer, buf.byteOffset).setUint32(2, out.chainId, true);
300
+ buf[6] = 0;
301
+ buf[7] = lookupIndex(lookup, out.token);
302
+ buf[8] = 0;
303
+ writeBigInt256BE(buf, 9, out.price);
304
+ return buf;
305
+ });
306
+ return concatBytes(outputParts);
307
+ });
308
+ const count = new Uint8Array(1);
309
+ count[0] = totalOutputCount;
310
+ return concatBytes([count, ...items]);
311
+ }
312
+ function serializeReceiversInfo(receivers, lookup) {
313
+ if (!receivers || receivers.length === 0)
314
+ return NONE_MARKER;
315
+ const items = receivers.map(r => {
316
+ if (r.chainIds === "any") {
317
+ const buf = new Uint8Array(2);
318
+ buf[0] = lookupIndex(lookup, r.address);
319
+ buf[1] = 1; // any
320
+ return buf;
321
+ }
322
+ const buf = new Uint8Array(3 + r.chainIds.length * 4);
323
+ buf[0] = lookupIndex(lookup, r.address);
324
+ buf[1] = 0; // not any
325
+ buf[2] = r.chainIds.length;
326
+ for (let i = 0; i < r.chainIds.length; i++) {
327
+ new DataView(buf.buffer, buf.byteOffset).setUint32(3 + i * 4, r.chainIds[i], true);
328
+ }
329
+ return buf;
330
+ });
331
+ const count = new Uint8Array(1);
332
+ count[0] = items.length;
333
+ return concatBytes([count, ...items]);
334
+ }
335
+ function serializeAllowedSenders(senders) {
336
+ if (senders === "any")
337
+ return ANY_MARKER;
338
+ const count = new Uint8Array(1);
339
+ count[0] = senders.length;
340
+ return concatBytes([NOT_ANY_MARKER, count, ...senders]);
341
+ }
342
+ function serializeOptionalPubkey(pubkey) {
343
+ if (!pubkey)
344
+ return NONE_MARKER;
345
+ return concatBytes([SOME_MARKER, pubkey]);
346
+ }
347
+ function serializeShortArray(data) {
348
+ if (!data)
349
+ return NONE_MARKER;
350
+ const lenBuf = new Uint8Array(2);
351
+ new DataView(lenBuf.buffer).setInt16(0, data.length, true);
352
+ return concatBytes([SOME_MARKER, lenBuf, data]);
353
+ }
354
+ function serializeOptionalBytes(data) {
355
+ if (!data)
356
+ return NONE_MARKER;
357
+ const lenBuf = new Uint8Array(2);
358
+ new DataView(lenBuf.buffer).setInt16(0, data.length, true);
359
+ return concatBytes([SOME_MARKER, lenBuf, data]);
360
+ }
361
+ function serializeAddressArray(addresses) {
362
+ if (!addresses || addresses.length === 0)
363
+ return NONE_MARKER;
364
+ const count = new Uint8Array(1);
365
+ count[0] = addresses.length;
366
+ return concatBytes([count, ...addresses]);
367
+ }
368
+ function serializeExternalCallHash(hash) {
369
+ if (!hash)
370
+ return NONE_MARKER;
371
+ if (hash === "any")
372
+ return concatBytes([SOME_MARKER, ANY_MARKER]);
373
+ return concatBytes([SOME_MARKER, NOT_ANY_MARKER, hash]);
374
+ }
375
+ function serializeDlnMetadata(metadata) {
376
+ if (!metadata)
377
+ return NONE_MARKER;
378
+ if (metadata === "any")
379
+ return concatBytes([SOME_MARKER, ANY_MARKER]);
380
+ const lenBuf = new Uint8Array(2);
381
+ new DataView(lenBuf.buffer).setInt16(0, metadata.length, true);
382
+ return concatBytes([SOME_MARKER, NOT_ANY_MARKER, lenBuf, metadata]);
383
+ }
384
+ // =============================================
385
+ // Low-level helpers
386
+ // =============================================
387
+ function lookupIndex(lookup, addr) {
388
+ const hex = bytesToHex(addr);
389
+ const idx = lookup.get(hex);
390
+ if (idx === undefined) {
391
+ throw new Error(`Address ${hex} not found in addresses list`);
392
+ }
393
+ return idx;
394
+ }
395
+ function keccak256(data) {
396
+ // viem's keccak256 expects hex input and returns hex output
397
+ const hexInput = ("0x" + bytesToHex(data));
398
+ const hexOutput = (0, viem_1.keccak256)(hexInput);
399
+ return hexToUint8Array(hexOutput);
400
+ }
401
+ function writeU32LE(value) {
402
+ const buf = new Uint8Array(4);
403
+ new DataView(buf.buffer).setUint32(0, value, true);
404
+ return buf;
405
+ }
406
+ function writeU64LEInto(buf, offset, value) {
407
+ for (let i = 0; i < 8; i++) {
408
+ buf[offset + i] = Number((value >> BigInt(i * 8)) & 0xffn);
409
+ }
410
+ }
411
+ function writeBigInt256BE(buf, offset, value) {
412
+ const hex = value.toString(16).padStart(64, "0");
413
+ for (let i = 0; i < 32; i++) {
414
+ buf[offset + i] = parseInt(hex.substring(i * 2, i * 2 + 2), 16);
415
+ }
416
+ }
417
+ function concatBytes(arrays) {
418
+ let totalLength = 0;
419
+ for (const arr of arrays)
420
+ totalLength += arr.length;
421
+ const result = new Uint8Array(totalLength);
422
+ let offset = 0;
423
+ for (const arr of arrays) {
424
+ result.set(arr, offset);
425
+ offset += arr.length;
426
+ }
427
+ return result;
428
+ }
429
+ function compareBytes(a, b) {
430
+ const minLen = Math.min(a.length, b.length);
431
+ for (let i = 0; i < minLen; i++) {
432
+ if (a[i] !== b[i])
433
+ return a[i] - b[i];
434
+ }
435
+ return a.length - b.length;
436
+ }
437
+ function bytesToHex(bytes) {
438
+ let hex = "";
439
+ for (let i = 0; i < bytes.length; i++) {
440
+ hex += bytes[i].toString(16).padStart(2, "0");
441
+ }
442
+ return hex;
443
+ }
444
+ function hexToUint8Array(hex) {
445
+ const clean = hex.startsWith("0x") ? hex.slice(2) : hex;
446
+ const bytes = new Uint8Array(clean.length / 2);
447
+ for (let i = 0; i < bytes.length; i++) {
448
+ bytes[i] = parseInt(clean.substring(i * 2, i * 2 + 2), 16);
449
+ }
450
+ return bytes;
451
+ }
452
+ // Convert an address string to raw bytes.
453
+ // Handles both EVM hex (0x-prefixed, 20 bytes) and Solana base58 (32 bytes).
454
+ function addressToBytes(address) {
455
+ if (address.startsWith("0x")) {
456
+ return hexToUint8Array(address);
457
+ }
458
+ return new web3_js_1.PublicKey(address).toBytes();
459
+ }
460
+ //# sourceMappingURL=solana-intent-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-intent-id.js","sourceRoot":"","sources":["../../../src/helpers/solana-intent-id.ts"],"names":[],"mappings":"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"}