@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,239 @@
1
+ export var ViolationCode;
2
+ (function (ViolationCode) {
3
+ // Structure
4
+ ViolationCode["InvalidRequestStructure"] = "INVALID_REQUEST_STRUCTURE";
5
+ ViolationCode["InvalidResponseStructure"] = "INVALID_RESPONSE_STRUCTURE";
6
+ // Echo fields
7
+ ViolationCode["RequestIdMismatch"] = "REQUEST_ID_MISMATCH";
8
+ ViolationCode["UserIdMismatch"] = "USER_ID_MISMATCH";
9
+ ViolationCode["IntentExpirationTimestampMismatch"] = "INTENT_EXPIRATION_TIMESTAMP_MISMATCH";
10
+ ViolationCode["ReferralCodeMismatch"] = "REFERRAL_CODE_MISMATCH";
11
+ // Required actions — general
12
+ ViolationCode["DuplicateActionId"] = "DUPLICATE_ACTION_ID";
13
+ ViolationCode["ForbiddenTransactionWithAA"] = "FORBIDDEN_TRANSACTION_WITH_AA";
14
+ ViolationCode["ForbiddenSign7702WithoutAA"] = "FORBIDDEN_SIGN7702_WITHOUT_AA";
15
+ ViolationCode["ForbiddenSign712MetaMaskWithoutAA"] = "FORBIDDEN_SIGN712_METAMASK_WITHOUT_AA";
16
+ ViolationCode["ForbiddenDelegateWithoutAA"] = "FORBIDDEN_DELEGATE_WITHOUT_AA";
17
+ ViolationCode["ForbiddenTransactionCallsWithoutAA"] = "FORBIDDEN_TRANSACTION_CALLS_WITHOUT_AA";
18
+ // Required actions — Sign7702Authorization
19
+ ViolationCode["Sign7702ActionsNotSingleDelegate"] = "SIGN7702_ACTIONS_NOT_SINGLE_DELEGATE";
20
+ ViolationCode["Sign7702ContractAddressNotWhitelisted"] = "SIGN7702_CONTRACT_ADDRESS_NOT_WHITELISTED";
21
+ ViolationCode["DuplicateSign7702Authorization"] = "DUPLICATE_SIGN7702_AUTHORIZATION";
22
+ // Subscription / chain resolution
23
+ ViolationCode["UnknownSubscriptionId"] = "UNKNOWN_SUBSCRIPTION_ID";
24
+ // Required actions — Sign712MetaMask
25
+ ViolationCode["Sign712MetaMaskEmptyTransactionCalls"] = "SIGN712_METAMASK_EMPTY_TRANSACTION_CALLS";
26
+ ViolationCode["Sign712MetaMaskForbiddenAction"] = "SIGN712_METAMASK_FORBIDDEN_ACTION";
27
+ ViolationCode["Sign712MetaMaskChainIdMismatch"] = "SIGN712_METAMASK_CHAIN_ID_MISMATCH";
28
+ ViolationCode["Sign712MetaMaskDomainNameNotDelegationManager"] = "SIGN712_METAMASK_DOMAIN_NAME_NOT_DELEGATION_MANAGER";
29
+ ViolationCode["Sign712MetaMaskVerifyingContractNotWhitelisted"] = "SIGN712_METAMASK_VERIFYING_CONTRACT_NOT_WHITELISTED";
30
+ ViolationCode["Sign712MetaMaskDelegatorMismatch"] = "SIGN712_METAMASK_DELEGATOR_MISMATCH";
31
+ ViolationCode["Sign712MetaMaskCaveatEnforcerNotWhitelisted"] = "SIGN712_METAMASK_CAVEAT_ENFORCER_NOT_WHITELISTED";
32
+ ViolationCode["Sign712MetaMaskMissingExactExecutionCaveat"] = "SIGN712_METAMASK_MISSING_EXACT_EXECUTION_CAVEAT";
33
+ ViolationCode["Sign712MetaMaskMissingExactExecutionBatchCaveat"] = "SIGN712_METAMASK_MISSING_EXACT_EXECUTION_BATCH_CAVEAT";
34
+ ViolationCode["Sign712MetaMaskExactExecutionMismatch"] = "SIGN712_METAMASK_EXACT_EXECUTION_MISMATCH";
35
+ ViolationCode["Sign712MetaMaskExactExecutionBatchMismatch"] = "SIGN712_METAMASK_EXACT_EXECUTION_BATCH_MISMATCH";
36
+ ViolationCode["Sign712MetaMaskCaveatDecodeError"] = "SIGN712_METAMASK_CAVEAT_DECODE_ERROR";
37
+ ViolationCode["Sign712MetaMaskMissingIdEnforcerCaveat"] = "SIGN712_METAMASK_MISSING_ID_ENFORCER_CAVEAT";
38
+ ViolationCode["Sign712MetaMaskIdEnforcerValueMismatch"] = "SIGN712_METAMASK_ID_ENFORCER_VALUE_MISMATCH";
39
+ ViolationCode["Sign712MetaMaskMissingTimestampEnforcerCaveat"] = "SIGN712_METAMASK_MISSING_TIMESTAMP_ENFORCER_CAVEAT";
40
+ ViolationCode["Sign712MetaMaskDuplicateTimestampEnforcerCaveat"] = "SIGN712_METAMASK_DUPLICATE_TIMESTAMP_ENFORCER_CAVEAT";
41
+ ViolationCode["Sign712MetaMaskTimestampBeforeThresholdMismatch"] = "SIGN712_METAMASK_TIMESTAMP_BEFORE_THRESHOLD_MISMATCH";
42
+ // Required actions — Sign712 (Intent)
43
+ ViolationCode["Sign712IntentMissing"] = "SIGN712_INTENT_MISSING";
44
+ ViolationCode["Sign712IntentDuplicate"] = "SIGN712_INTENT_DUPLICATE";
45
+ ViolationCode["Sign712IntentActionsNotSingleIntent"] = "SIGN712_INTENT_ACTIONS_NOT_SINGLE_INTENT";
46
+ ViolationCode["Sign712IntentPrimaryTypeInvalid"] = "SIGN712_INTENT_PRIMARY_TYPE_INVALID";
47
+ ViolationCode["Sign712IntentChainIdMismatch"] = "SIGN712_INTENT_CHAIN_ID_MISMATCH";
48
+ ViolationCode["Sign712IntentDomainNameInvalid"] = "SIGN712_INTENT_DOMAIN_NAME_INVALID";
49
+ ViolationCode["Sign712IntentDomainVersionInvalid"] = "SIGN712_INTENT_DOMAIN_VERSION_INVALID";
50
+ ViolationCode["Sign712IntentVerifyingContractNotWhitelisted"] = "SIGN712_INTENT_VERIFYING_CONTRACT_NOT_WHITELISTED";
51
+ ViolationCode["Sign712IntentIdMismatch"] = "SIGN712_INTENT_ID_MISMATCH";
52
+ ViolationCode["Sign712IntentIdComputeError"] = "SIGN712_INTENT_ID_COMPUTE_ERROR";
53
+ ViolationCode["Sign712IntentTypesInvalid"] = "SIGN712_INTENT_TYPES_INVALID";
54
+ // Required actions — Permit
55
+ ViolationCode["PermitActionsNotSingleBudget"] = "PERMIT_ACTIONS_NOT_SINGLE_BUDGET";
56
+ ViolationCode["PermitPrimaryTypeInvalid"] = "PERMIT_PRIMARY_TYPE_INVALID";
57
+ ViolationCode["PermitChainIdMismatch"] = "PERMIT_CHAIN_ID_MISMATCH";
58
+ ViolationCode["PermitVerifyingContractMismatch"] = "PERMIT_VERIFYING_CONTRACT_MISMATCH";
59
+ ViolationCode["PermitOwnerMismatch"] = "PERMIT_OWNER_MISMATCH";
60
+ ViolationCode["PermitSpenderMissing"] = "PERMIT_SPENDER_MISSING";
61
+ ViolationCode["PermitSpenderNotAllowed"] = "PERMIT_SPENDER_NOT_ALLOWED";
62
+ ViolationCode["PermitDetailsAllowanceHolderMismatch"] = "PERMIT_DETAILS_ALLOWANCE_HOLDER_MISMATCH";
63
+ ViolationCode["PermitDetailsTokenAddressMismatch"] = "PERMIT_DETAILS_TOKEN_ADDRESS_MISMATCH";
64
+ ViolationCode["PermitDetailsMissing"] = "PERMIT_DETAILS_MISSING";
65
+ ViolationCode["PermitForbiddenWithoutPermitMode"] = "PERMIT_FORBIDDEN_WITHOUT_PERMIT_MODE";
66
+ ViolationCode["PermitDomainNameMismatch"] = "PERMIT_DOMAIN_NAME_MISMATCH";
67
+ ViolationCode["PermitDomainVersionMismatch"] = "PERMIT_DOMAIN_VERSION_MISMATCH";
68
+ // Required actions — Permit2
69
+ ViolationCode["Permit2ActionsNotSingleBudget"] = "PERMIT2_ACTIONS_NOT_SINGLE_BUDGET";
70
+ ViolationCode["Permit2PrimaryTypeInvalid"] = "PERMIT2_PRIMARY_TYPE_INVALID";
71
+ ViolationCode["Permit2ChainIdMismatch"] = "PERMIT2_CHAIN_ID_MISMATCH";
72
+ ViolationCode["Permit2VerifyingContractNotWhitelisted"] = "PERMIT2_VERIFYING_CONTRACT_NOT_WHITELISTED";
73
+ ViolationCode["Permit2DomainHasVersion"] = "PERMIT2_DOMAIN_HAS_VERSION";
74
+ ViolationCode["Permit2TypesInvalid"] = "PERMIT2_TYPES_INVALID";
75
+ ViolationCode["Permit2TokenMismatch"] = "PERMIT2_TOKEN_MISMATCH";
76
+ ViolationCode["Permit2AmountNotMaxUint160"] = "PERMIT2_AMOUNT_NOT_MAX_UINT160";
77
+ ViolationCode["Permit2ExpirationMismatch"] = "PERMIT2_EXPIRATION_MISMATCH";
78
+ ViolationCode["Permit2MessageDetailsMissing"] = "PERMIT2_MESSAGE_DETAILS_MISSING";
79
+ ViolationCode["Permit2SpenderMissing"] = "PERMIT2_SPENDER_MISSING";
80
+ ViolationCode["Permit2SpenderNotAllowed"] = "PERMIT2_SPENDER_NOT_ALLOWED";
81
+ ViolationCode["Permit2DetailsAllowanceHolderMismatch"] = "PERMIT2_DETAILS_ALLOWANCE_HOLDER_MISMATCH";
82
+ ViolationCode["Permit2DetailsTokenAddressMismatch"] = "PERMIT2_DETAILS_TOKEN_ADDRESS_MISMATCH";
83
+ ViolationCode["Permit2DetailsPermit2ContractMismatch"] = "PERMIT2_DETAILS_PERMIT2_CONTRACT_MISMATCH";
84
+ ViolationCode["Permit2DetailsMissing"] = "PERMIT2_DETAILS_MISSING";
85
+ ViolationCode["Permit2ForbiddenWithoutPermitMode"] = "PERMIT2_FORBIDDEN_WITHOUT_PERMIT_MODE";
86
+ // Required actions — Transaction
87
+ ViolationCode["TransactionActionsInvalid"] = "TRANSACTION_ACTIONS_INVALID";
88
+ // Operations — Budget
89
+ ViolationCode["BudgetTransactionCallsMissing"] = "BUDGET_TRANSACTION_CALLS_MISSING";
90
+ ViolationCode["BudgetTokenAddressMissing"] = "BUDGET_TOKEN_ADDRESS_MISSING";
91
+ ViolationCode["BudgetForbiddenWithApproveNone"] = "BUDGET_FORBIDDEN_WITH_APPROVE_NONE";
92
+ ViolationCode["BudgetTokenAddressMismatch"] = "BUDGET_TOKEN_ADDRESS_MISMATCH";
93
+ ViolationCode["BudgetTokenAddressZero"] = "BUDGET_TOKEN_ADDRESS_ZERO";
94
+ ViolationCode["BudgetTokenNotInTrades"] = "BUDGET_TOKEN_NOT_IN_TRADES";
95
+ ViolationCode["BudgetTooManyTransactionCalls"] = "BUDGET_TOO_MANY_TRANSACTION_CALLS";
96
+ ViolationCode["BudgetCalldataInvalid"] = "BUDGET_CALLDATA_INVALID";
97
+ ViolationCode["BudgetAmountMismatch"] = "BUDGET_AMOUNT_MISMATCH";
98
+ ViolationCode["BudgetAllowanceHolderMismatch"] = "BUDGET_ALLOWANCE_HOLDER_MISMATCH";
99
+ ViolationCode["BudgetAllowanceHolderNotWhitelisted"] = "BUDGET_ALLOWANCE_HOLDER_NOT_WHITELISTED";
100
+ // Operations — Wrap
101
+ ViolationCode["WrapTransactionCallsMissing"] = "WRAP_TRANSACTION_CALLS_MISSING";
102
+ ViolationCode["WrapTooManyTransactionCalls"] = "WRAP_TOO_MANY_TRANSACTION_CALLS";
103
+ ViolationCode["WrapNativeTokenNotInTrades"] = "WRAP_NATIVE_TOKEN_NOT_IN_TRADES";
104
+ ViolationCode["WrapToNotWeth"] = "WRAP_TO_NOT_WETH";
105
+ ViolationCode["WrapCalldataInvalid"] = "WRAP_CALLDATA_INVALID";
106
+ ViolationCode["WrapAmountMismatch"] = "WRAP_AMOUNT_MISMATCH";
107
+ // Operations — GasCompensation
108
+ ViolationCode["GasCompensationTransactionCallsMissing"] = "GAS_COMPENSATION_TRANSACTION_CALLS_MISSING";
109
+ ViolationCode["GasCompensationTooManyTransactionCalls"] = "GAS_COMPENSATION_TOO_MANY_TRANSACTION_CALLS";
110
+ ViolationCode["GasCompensationNoMatchingPreHook"] = "GAS_COMPENSATION_NO_MATCHING_PRE_HOOK";
111
+ ViolationCode["GasCompensationToMismatch"] = "GAS_COMPENSATION_TO_MISMATCH";
112
+ ViolationCode["GasCompensationCalldataInvalid"] = "GAS_COMPENSATION_CALLDATA_INVALID";
113
+ ViolationCode["GasCompensationNativeValueZero"] = "GAS_COMPENSATION_NATIVE_VALUE_ZERO";
114
+ // Required actions — approval mutual exclusivity
115
+ ViolationCode["ApprovalMutualExclusivity"] = "APPROVAL_MUTUAL_EXCLUSIVITY";
116
+ // Trade validation — amount parsing (used by Budget/Wrap)
117
+ ViolationCode["TradeAmountInvalid"] = "TRADE_AMOUNT_INVALID";
118
+ // Trade validation — structure
119
+ ViolationCode["TradeCountMismatch"] = "TRADE_COUNT_MISMATCH";
120
+ // Trade validation — srcChainTokenIn
121
+ ViolationCode["TradeSrcTokenInChainIdMismatch"] = "TRADE_SRC_TOKEN_IN_CHAIN_ID_MISMATCH";
122
+ ViolationCode["TradeSrcTokenInAddressMismatch"] = "TRADE_SRC_TOKEN_IN_ADDRESS_MISMATCH";
123
+ ViolationCode["TradeSrcTokenInAmountMismatch"] = "TRADE_SRC_TOKEN_IN_AMOUNT_MISMATCH";
124
+ ViolationCode["TradeOperatingExpenseInvalid"] = "TRADE_OPERATING_EXPENSE_INVALID";
125
+ ViolationCode["TradeOperatingExpenseNegative"] = "TRADE_OPERATING_EXPENSE_NEGATIVE";
126
+ ViolationCode["TradeOperatingExpenseExpectedPositive"] = "TRADE_OPERATING_EXPENSE_EXPECTED_POSITIVE";
127
+ ViolationCode["TradeMutatedWithOperatingExpenseMismatch"] = "TRADE_MUTATED_WITH_OPERATING_EXPENSE_MISMATCH";
128
+ // Trade validation — srcChainTokenOut
129
+ ViolationCode["TradeSrcTokenOutChainIdMismatch"] = "TRADE_SRC_TOKEN_OUT_CHAIN_ID_MISMATCH";
130
+ ViolationCode["TradeSrcTokenOutAmountNegative"] = "TRADE_SRC_TOKEN_OUT_AMOUNT_NEGATIVE";
131
+ // Trade validation — dstChainTokenOut
132
+ ViolationCode["TradeDstTokenOutChainIdMismatch"] = "TRADE_DST_TOKEN_OUT_CHAIN_ID_MISMATCH";
133
+ ViolationCode["TradeDstTokenOutAddressMismatch"] = "TRADE_DST_TOKEN_OUT_ADDRESS_MISMATCH";
134
+ ViolationCode["TradeDstTokenOutAmountBelowRequested"] = "TRADE_DST_TOKEN_OUT_AMOUNT_BELOW_REQUESTED";
135
+ ViolationCode["TradeWithoutPartnerFeeAmountTooLow"] = "TRADE_WITHOUT_PARTNER_FEE_AMOUNT_TOO_LOW";
136
+ ViolationCode["TradeWithoutPartnerFeeAmountMismatch"] = "TRADE_WITHOUT_PARTNER_FEE_AMOUNT_MISMATCH";
137
+ // Trade validation — USD values
138
+ ViolationCode["TradeUsdValueNegative"] = "TRADE_USD_VALUE_NEGATIVE";
139
+ // Trade validation — execution-mode echo fields
140
+ ViolationCode["TradeSrcAuthorityAddressMismatch"] = "TRADE_SRC_AUTHORITY_ADDRESS_MISMATCH";
141
+ ViolationCode["TradeDstRecipientMismatch"] = "TRADE_DST_RECIPIENT_MISMATCH";
142
+ ViolationCode["TradeDstAuthorityAddressMismatch"] = "TRADE_DST_AUTHORITY_ADDRESS_MISMATCH";
143
+ // Trade validation — prependedOperatingExpenseCost
144
+ ViolationCode["TradePrependedCostNotZero"] = "TRADE_PREPENDED_COST_NOT_ZERO";
145
+ ViolationCode["TradePrependedCostInvalid"] = "TRADE_PREPENDED_COST_INVALID";
146
+ // Trade validation — relatedIntentId
147
+ ViolationCode["TradeRelatedIntentIdNotFound"] = "TRADE_RELATED_INTENT_ID_NOT_FOUND";
148
+ ViolationCode["TradeRelatedIntentIdChainIdInconsistent"] = "TRADE_RELATED_INTENT_ID_CHAIN_ID_INCONSISTENT";
149
+ ViolationCode["TradeRelatedIntentIdAuthorityInconsistent"] = "TRADE_RELATED_INTENT_ID_AUTHORITY_INCONSISTENT";
150
+ ViolationCode["TradeIntentChainIdMismatch"] = "TRADE_INTENT_CHAIN_ID_MISMATCH";
151
+ // Trade validation — partnerFeeBps
152
+ ViolationCode["TradePartnerFeeBpsMismatch"] = "TRADE_PARTNER_FEE_BPS_MISMATCH";
153
+ // Trade grouping
154
+ ViolationCode["IntentNotMatchedToTradeGroup"] = "INTENT_NOT_MATCHED_TO_TRADE_GROUP";
155
+ ViolationCode["TradeGroupHasNoIntent"] = "TRADE_GROUP_HAS_NO_INTENT";
156
+ ViolationCode["DuplicateIntentsInTradeGroup"] = "DUPLICATE_INTENTS_IN_TRADE_GROUP";
157
+ // Required actions — kind consistency
158
+ ViolationCode["RequiredActionKindInconsistent"] = "REQUIRED_ACTION_KIND_INCONSISTENT";
159
+ // Solana — general required actions
160
+ ViolationCode["SolanaDuplicateActionId"] = "SOLANA_DUPLICATE_ACTION_ID";
161
+ ViolationCode["SolanaRequiredActionsOrder"] = "SOLANA_REQUIRED_ACTIONS_ORDER";
162
+ ViolationCode["SolanaForbiddenTransactionWithAA"] = "SOLANA_FORBIDDEN_TRANSACTION_WITH_AA";
163
+ ViolationCode["SolanaForbiddenSignTransactionWithoutAA"] = "SOLANA_FORBIDDEN_SIGN_TRANSACTION_WITHOUT_AA";
164
+ ViolationCode["SolanaForbiddenOperationAction"] = "SOLANA_FORBIDDEN_OPERATION_ACTION";
165
+ // Solana — Transaction / SignTransaction common
166
+ ViolationCode["SolanaTransactionActionsInvalid"] = "SOLANA_TRANSACTION_ACTIONS_INVALID";
167
+ ViolationCode["SolanaTransactionDecodeError"] = "SOLANA_TRANSACTION_DECODE_ERROR";
168
+ ViolationCode["SolanaTransactionVersionInvalid"] = "SOLANA_TRANSACTION_VERSION_INVALID";
169
+ // Solana — Transaction (AA=false)
170
+ ViolationCode["SolanaTransactionFeePayerMismatch"] = "SOLANA_TRANSACTION_FEE_PAYER_MISMATCH";
171
+ ViolationCode["SolanaTransactionComputeBudgetMissing"] = "SOLANA_TRANSACTION_COMPUTE_BUDGET_MISSING";
172
+ ViolationCode["SolanaTransactionForbiddenInstruction"] = "SOLANA_TRANSACTION_FORBIDDEN_INSTRUCTION";
173
+ // Solana — SignTransaction (AA=true)
174
+ ViolationCode["SolanaSignTransactionFeePayerIsUser"] = "SOLANA_SIGN_TRANSACTION_FEE_PAYER_IS_USER";
175
+ ViolationCode["SolanaSignTransactionForbiddenInstruction"] = "SOLANA_SIGN_TRANSACTION_FORBIDDEN_INSTRUCTION";
176
+ // Solana — Budget (approve) common
177
+ ViolationCode["SolanaBudgetForbiddenWithApproveNone"] = "SOLANA_BUDGET_FORBIDDEN_WITH_APPROVE_NONE";
178
+ ViolationCode["SolanaBudgetNoApproveInstruction"] = "SOLANA_BUDGET_NO_APPROVE_INSTRUCTION";
179
+ // Solana — Budget — Classic SPL Token Approve
180
+ ViolationCode["SolanaBudgetClassicAtaMismatch"] = "SOLANA_BUDGET_CLASSIC_ATA_MISMATCH";
181
+ ViolationCode["SolanaBudgetClassicDelegateNotWhitelisted"] = "SOLANA_BUDGET_CLASSIC_DELEGATE_NOT_WHITELISTED";
182
+ ViolationCode["SolanaBudgetClassicOwnerMismatch"] = "SOLANA_BUDGET_CLASSIC_OWNER_MISMATCH";
183
+ ViolationCode["SolanaBudgetClassicAmountMismatch"] = "SOLANA_BUDGET_CLASSIC_AMOUNT_MISMATCH";
184
+ // Solana — Budget — Custom (approveProtocolTransfers)
185
+ ViolationCode["SolanaBudgetCustomMakerMismatch"] = "SOLANA_BUDGET_CUSTOM_MAKER_MISMATCH";
186
+ ViolationCode["SolanaBudgetCustomStatePdaMismatch"] = "SOLANA_BUDGET_CUSTOM_STATE_PDA_MISMATCH";
187
+ ViolationCode["SolanaBudgetCustomTokenProgramInvalid"] = "SOLANA_BUDGET_CUSTOM_TOKEN_PROGRAM_INVALID";
188
+ ViolationCode["SolanaBudgetCustomAtaMismatch"] = "SOLANA_BUDGET_CUSTOM_ATA_MISMATCH";
189
+ ViolationCode["SolanaBudgetCustomVecLengthMismatch"] = "SOLANA_BUDGET_CUSTOM_VEC_LENGTH_MISMATCH";
190
+ ViolationCode["SolanaBudgetCustomAmountMismatch"] = "SOLANA_BUDGET_CUSTOM_AMOUNT_MISMATCH";
191
+ // Solana — unclassified instruction
192
+ ViolationCode["SolanaUnclassifiedInstruction"] = "SOLANA_UNCLASSIFIED_INSTRUCTION";
193
+ // Solana — Compensation (forbidden)
194
+ ViolationCode["SolanaForbiddenCompensationAction"] = "SOLANA_FORBIDDEN_COMPENSATION_ACTION";
195
+ // Solana — Wrap
196
+ ViolationCode["SolanaWrapNotForNativeToken"] = "SOLANA_WRAP_NOT_FOR_NATIVE_TOKEN";
197
+ ViolationCode["SolanaWrapNoTransferInstruction"] = "SOLANA_WRAP_NO_TRANSFER_INSTRUCTION";
198
+ ViolationCode["SolanaWrapNoSyncNativeInstruction"] = "SOLANA_WRAP_NO_SYNC_NATIVE_INSTRUCTION";
199
+ ViolationCode["SolanaWrapTransferAmountMismatch"] = "SOLANA_WRAP_TRANSFER_AMOUNT_MISMATCH";
200
+ ViolationCode["SolanaWrapTransferToMismatch"] = "SOLANA_WRAP_TRANSFER_TO_MISMATCH";
201
+ ViolationCode["SolanaWrapSyncNativeAccountMismatch"] = "SOLANA_WRAP_SYNC_NATIVE_ACCOUNT_MISMATCH";
202
+ ViolationCode["SolanaWrapCreateAtaOwnerMismatch"] = "SOLANA_WRAP_CREATE_ATA_OWNER_MISMATCH";
203
+ ViolationCode["SolanaWrapCreateAtaMintMismatch"] = "SOLANA_WRAP_CREATE_ATA_MINT_MISMATCH";
204
+ ViolationCode["SolanaWrapCreateAtaAddressMismatch"] = "SOLANA_WRAP_CREATE_ATA_ADDRESS_MISMATCH";
205
+ // Solana — Sign (Intent)
206
+ ViolationCode["SolanaSignIntentMissing"] = "SOLANA_SIGN_INTENT_MISSING";
207
+ ViolationCode["SolanaSignIntentDuplicate"] = "SOLANA_SIGN_INTENT_DUPLICATE";
208
+ ViolationCode["SolanaSignIntentActionsInvalid"] = "SOLANA_SIGN_INTENT_ACTIONS_INVALID";
209
+ ViolationCode["SolanaSignIntentDataInvalid"] = "SOLANA_SIGN_INTENT_DATA_INVALID";
210
+ ViolationCode["SolanaSignIntentIdMismatch"] = "SOLANA_SIGN_INTENT_ID_MISMATCH";
211
+ ViolationCode["SolanaSignIntentIdComputeError"] = "SOLANA_SIGN_INTENT_ID_COMPUTE_ERROR";
212
+ // Hooks — common (chain-agnostic)
213
+ ViolationCode["HookEchoMismatch"] = "HOOK_ECHO_MISMATCH";
214
+ ViolationCode["HookCountMismatch"] = "HOOK_COUNT_MISMATCH";
215
+ ViolationCode["NonEmptyHooksWithoutAA"] = "NON_EMPTY_HOOKS_WITHOUT_AA";
216
+ ViolationCode["HookActionsInvalid"] = "HOOK_ACTIONS_INVALID";
217
+ ViolationCode["HookGasCompensationWithoutInfo"] = "HOOK_GAS_COMPENSATION_WITHOUT_INFO";
218
+ ViolationCode["HookDuplicateActionId"] = "HOOK_DUPLICATE_ACTION_ID";
219
+ // Hooks — Solana
220
+ ViolationCode["SolanaHookDataMismatch"] = "SOLANA_HOOK_DATA_MISMATCH";
221
+ ViolationCode["SolanaHookDecodeError"] = "SOLANA_HOOK_DECODE_ERROR";
222
+ ViolationCode["SolanaGasCompensationDecodeError"] = "SOLANA_GAS_COMPENSATION_DECODE_ERROR";
223
+ ViolationCode["SolanaGasCompensationForbiddenProgram"] = "SOLANA_GAS_COMPENSATION_FORBIDDEN_PROGRAM";
224
+ ViolationCode["SolanaGasCompensationTransferMissing"] = "SOLANA_GAS_COMPENSATION_TRANSFER_MISSING";
225
+ ViolationCode["SolanaGasCompensationTooManyTransfers"] = "SOLANA_GAS_COMPENSATION_TOO_MANY_TRANSFERS";
226
+ ViolationCode["SolanaGasCompensationRecipientNotWhitelisted"] = "SOLANA_GAS_COMPENSATION_RECIPIENT_NOT_WHITELISTED";
227
+ ViolationCode["SolanaGasCompensationTokenMismatch"] = "SOLANA_GAS_COMPENSATION_TOKEN_MISMATCH";
228
+ ViolationCode["SolanaGasCompensationFeePayerIsUser"] = "SOLANA_GAS_COMPENSATION_FEE_PAYER_IS_USER";
229
+ ViolationCode["SolanaGasCompensationUnexpectedInstruction"] = "SOLANA_GAS_COMPENSATION_UNEXPECTED_INSTRUCTION";
230
+ ViolationCode["UrlNotWhitelisted"] = "URL_NOT_WHITELISTED";
231
+ })(ViolationCode || (ViolationCode = {}));
232
+ export var Environment;
233
+ (function (Environment) {
234
+ Environment[Environment["Prod"] = 0] = "Prod";
235
+ Environment[Environment["Hanoi"] = 1] = "Hanoi";
236
+ Environment[Environment["Dubai"] = 2] = "Dubai";
237
+ Environment[Environment["Madrid"] = 3] = "Madrid";
238
+ })(Environment || (Environment = {}));
239
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/types/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { ViolationCode, } from "../types/index.js";
2
+ export function validateEchoFields(request, response) {
3
+ return [
4
+ ...validateRequestId(request, response),
5
+ ...validateUserId(request, response),
6
+ ...validateExpirationTimestamp(request, response),
7
+ ...validateReferralCode(request, response),
8
+ ];
9
+ }
10
+ function validateRequestId(request, response) {
11
+ if (request.requestId === response.requestId)
12
+ return [];
13
+ return [{
14
+ code: ViolationCode.RequestIdMismatch,
15
+ message: `response.requestId does not match request.requestId`,
16
+ path: "response.requestId",
17
+ expected: request.requestId,
18
+ actual: response.requestId,
19
+ }];
20
+ }
21
+ function validateUserId(request, response) {
22
+ if (request.userId === response.userId)
23
+ return [];
24
+ return [{
25
+ code: ViolationCode.UserIdMismatch,
26
+ message: `response.userId does not match request.userId`,
27
+ path: "response.userId",
28
+ expected: request.userId,
29
+ actual: response.userId,
30
+ }];
31
+ }
32
+ // TODO: move to a separate validation (specifically for intents)?
33
+ function validateExpirationTimestamp(request, response) {
34
+ const violations = [];
35
+ for (let i = 0; i < response.intents.length; i++) {
36
+ const intent = response.intents[i].intent;
37
+ violations.push(...validateIntentExpirationTimestamp(request.expirationTimestamp, intent, i));
38
+ }
39
+ return violations;
40
+ }
41
+ // TODO: move to a separate validation (specifically for intents)?
42
+ function validateIntentExpirationTimestamp(expected, intent, intentIndex) {
43
+ if (expected === intent.expirationTimestamp)
44
+ return [];
45
+ return [{
46
+ code: ViolationCode.IntentExpirationTimestampMismatch,
47
+ message: `intent "${intent.intentId}" expirationTimestamp does not match request.expirationTimestamp`,
48
+ path: `response.intents[${intentIndex}].intent.expirationTimestamp`,
49
+ expected,
50
+ actual: intent.expirationTimestamp,
51
+ }];
52
+ }
53
+ function validateReferralCode(request, response) {
54
+ if (request.referralCode === response.referralCode)
55
+ return [];
56
+ return [{
57
+ code: ViolationCode.ReferralCodeMismatch,
58
+ message: `response.referralCode does not match request.referralCode`,
59
+ path: "response.referralCode",
60
+ expected: request.referralCode,
61
+ actual: response.referralCode,
62
+ }];
63
+ }
64
+ //# sourceMappingURL=echo-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"echo-fields.js","sourceRoot":"","sources":["../../../src/validations/echo-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,aAAa,GAIhB,MAAM,UAAU,CAAC;AAElB,MAAM,UAAU,kBAAkB,CAC9B,OAA8B,EAC9B,QAAgC;IAEhC,OAAO;QACH,GAAG,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC;QACvC,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC;QACpC,GAAG,2BAA2B,CAAC,OAAO,EAAE,QAAQ,CAAC;QACjD,GAAG,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC7C,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CACtB,OAA8B,EAC9B,QAAgC;IAEhC,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAExD,OAAO,CAAC;YACJ,IAAI,EAAE,aAAa,CAAC,iBAAiB;YACrC,OAAO,EAAE,qDAAqD;YAC9D,IAAI,EAAE,oBAAoB;YAC1B,QAAQ,EAAE,OAAO,CAAC,SAAS;YAC3B,MAAM,EAAE,QAAQ,CAAC,SAAS;SAC7B,CAAC,CAAC;AACP,CAAC;AAED,SAAS,cAAc,CACnB,OAA8B,EAC9B,QAAgC;IAEhC,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAElD,OAAO,CAAC;YACJ,IAAI,EAAE,aAAa,CAAC,cAAc;YAClC,OAAO,EAAE,+CAA+C;YACxD,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,OAAO,CAAC,MAAM;YACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;SAC1B,CAAC,CAAC;AACP,CAAC;AAED,kEAAkE;AAClE,SAAS,2BAA2B,CAChC,OAA8B,EAC9B,QAAgC;IAEhC,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1C,UAAU,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,kEAAkE;AAClE,SAAS,iCAAiC,CACtC,QAAgB,EAChB,MAAsB,EACtB,WAAmB;IAEnB,IAAI,QAAQ,KAAK,MAAM,CAAC,mBAAmB;QAAE,OAAO,EAAE,CAAC;IAEvD,OAAO,CAAC;YACJ,IAAI,EAAE,aAAa,CAAC,iCAAiC;YACrD,OAAO,EAAE,WAAW,MAAM,CAAC,QAAQ,kEAAkE;YACrG,IAAI,EAAE,oBAAoB,WAAW,8BAA8B;YACnE,QAAQ;YACR,MAAM,EAAE,MAAM,CAAC,mBAAmB;SACrC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,oBAAoB,CACzB,OAA8B,EAC9B,QAAgC;IAEhC,IAAI,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAE9D,OAAO,CAAC;YACJ,IAAI,EAAE,aAAa,CAAC,oBAAoB;YACxC,OAAO,EAAE,2DAA2D;YACpE,IAAI,EAAE,uBAAuB;YAC7B,QAAQ,EAAE,OAAO,CAAC,YAAY;YAC9B,MAAM,EAAE,QAAQ,CAAC,YAAY;SAChC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,228 @@
1
+ import { ViolationCode, } from "../types/index.js";
2
+ import { isWhitelisted } from "../whitelists/types.js";
3
+ import { EXACT_EXECUTION_ENFORCER_CONTRACTS, EXACT_EXECUTION_BATCH_ENFORCER_CONTRACTS, ID_ENFORCER_CONTRACTS, TIMESTAMP_ENFORCER_CONTRACTS, } from "../whitelists/evm/index.js";
4
+ import { decodeExactExecution, decodeExactExecutionBatch, decodeTimestampEnforcer, } from "../helpers/caveat-decoder.js";
5
+ export var CaveatKind;
6
+ (function (CaveatKind) {
7
+ CaveatKind[CaveatKind["Unknown"] = 0] = "Unknown";
8
+ CaveatKind[CaveatKind["ExactExec"] = 1] = "ExactExec";
9
+ CaveatKind[CaveatKind["ExactExecBatch"] = 2] = "ExactExecBatch";
10
+ CaveatKind[CaveatKind["IdEnforcer"] = 3] = "IdEnforcer";
11
+ CaveatKind[CaveatKind["Timestamp"] = 4] = "Timestamp";
12
+ })(CaveatKind || (CaveatKind = {}));
13
+ export function classifyCaveats(caveats, actionId, actionPath, realChainId, violations) {
14
+ const result = {
15
+ hasIdEnforcer: false,
16
+ timestampCount: 0,
17
+ };
18
+ for (let i = 0; i < caveats.length; i++) {
19
+ const caveat = caveats[i];
20
+ const path = `${actionPath}.data.message.caveats[${i}]`;
21
+ const kind = classifySingleCaveat(caveat, realChainId);
22
+ // CRITICAL: each caveat.enforcer must be in one of the allowed whitelists
23
+ if (kind === CaveatKind.Unknown) {
24
+ violations.push({
25
+ code: ViolationCode.Sign712MetaMaskCaveatEnforcerNotWhitelisted,
26
+ message: `Sign712MetaMask caveat enforcer is not in any whitelist`,
27
+ path: `${path}.enforcer`,
28
+ actual: caveat.enforcer,
29
+ });
30
+ continue;
31
+ }
32
+ if (kind === CaveatKind.ExactExec)
33
+ result.exactExec = { caveat, index: i };
34
+ if (kind === CaveatKind.ExactExecBatch)
35
+ result.exactExecBatch = { caveat, index: i };
36
+ if (kind === CaveatKind.IdEnforcer) {
37
+ result.hasIdEnforcer = true;
38
+ // CRITICAL: IdEnforcer ID must equal Number(actionId)
39
+ validateIdEnforcerValue(caveat, actionId, path, violations);
40
+ }
41
+ // CRITICAL: exactly one TimestampEnforcer per action
42
+ if (kind === CaveatKind.Timestamp) {
43
+ result.timestampCount++;
44
+ if (result.timestampCount === 1) {
45
+ result.firstTimestamp = { caveat, index: i };
46
+ }
47
+ else if (result.timestampCount === 2) {
48
+ violations.push({
49
+ code: ViolationCode.Sign712MetaMaskDuplicateTimestampEnforcerCaveat,
50
+ message: `Sign712MetaMask must have exactly one TimestampEnforcer`,
51
+ path: `${path}.enforcer`,
52
+ expected: 1,
53
+ actual: result.timestampCount,
54
+ });
55
+ }
56
+ }
57
+ }
58
+ return result;
59
+ }
60
+ function classifySingleCaveat(caveat, realChainId) {
61
+ if (isWhitelisted(EXACT_EXECUTION_ENFORCER_CONTRACTS, realChainId, caveat.enforcer))
62
+ return CaveatKind.ExactExec;
63
+ if (isWhitelisted(EXACT_EXECUTION_BATCH_ENFORCER_CONTRACTS, realChainId, caveat.enforcer))
64
+ return CaveatKind.ExactExecBatch;
65
+ if (isWhitelisted(ID_ENFORCER_CONTRACTS, realChainId, caveat.enforcer))
66
+ return CaveatKind.IdEnforcer;
67
+ if (isWhitelisted(TIMESTAMP_ENFORCER_CONTRACTS, realChainId, caveat.enforcer))
68
+ return CaveatKind.Timestamp;
69
+ return CaveatKind.Unknown;
70
+ }
71
+ // CRITICAL: single transactionCall requires ExactExecution caveat,
72
+ // multiple transactionCalls require ExactExecutionBatch caveat
73
+ export function validateExactExecutionPresence(classified, txCalls, actionPath) {
74
+ if (txCalls.length === 1 && !classified.exactExec) {
75
+ return [{
76
+ code: ViolationCode.Sign712MetaMaskMissingExactExecutionCaveat,
77
+ message: `Sign712MetaMask must have an ExactExecution caveat for a single transactionCall`,
78
+ path: `${actionPath}.data.message.caveats`,
79
+ }];
80
+ }
81
+ if (txCalls.length > 1 && !classified.exactExecBatch) {
82
+ return [{
83
+ code: ViolationCode.Sign712MetaMaskMissingExactExecutionBatchCaveat,
84
+ message: `Sign712MetaMask must have an ExactExecutionBatch caveat for multiple transactionCalls`,
85
+ path: `${actionPath}.data.message.caveats`,
86
+ expected: txCalls.length,
87
+ actual: 0,
88
+ }];
89
+ }
90
+ return [];
91
+ }
92
+ // CRITICAL: decoded caveat terms must match transactionCalls[]
93
+ export function validateExactExecutionContent(classified, txCalls, actionPath, violations) {
94
+ if (txCalls.length === 1 && classified.exactExec) {
95
+ validateExactExecutionTerms(classified.exactExec.caveat, txCalls[0], classified.exactExec.index, actionPath, violations);
96
+ }
97
+ else if (txCalls.length > 1 && classified.exactExecBatch) {
98
+ validateExactExecutionBatchTerms(classified.exactExecBatch.caveat, txCalls, classified.exactExecBatch.index, actionPath, violations);
99
+ }
100
+ }
101
+ function validateExactExecutionTerms(caveat, txCall, caveatIndex, actionPath, violations) {
102
+ const caveatPath = `${actionPath}.data.message.caveats[${caveatIndex}]`;
103
+ let decoded;
104
+ try {
105
+ decoded = decodeExactExecution(caveat.terms);
106
+ }
107
+ catch (e) {
108
+ violations.push({
109
+ code: ViolationCode.Sign712MetaMaskCaveatDecodeError,
110
+ message: `failed to decode ExactExecution caveat terms`,
111
+ path: `${caveatPath}.terms`,
112
+ actual: caveat.terms,
113
+ details: e,
114
+ });
115
+ return;
116
+ }
117
+ if (!executionMatchesTxCall(decoded, txCall)) {
118
+ violations.push({
119
+ code: ViolationCode.Sign712MetaMaskExactExecutionMismatch,
120
+ message: `ExactExecution caveat terms do not match transactionCalls[0]`,
121
+ path: `${caveatPath}.terms`,
122
+ expected: txCall,
123
+ actual: decoded,
124
+ });
125
+ }
126
+ }
127
+ function validateExactExecutionBatchTerms(caveat, txCalls, caveatIndex, actionPath, violations) {
128
+ const caveatPath = `${actionPath}.data.message.caveats[${caveatIndex}]`;
129
+ let decoded;
130
+ try {
131
+ decoded = decodeExactExecutionBatch(caveat.terms);
132
+ }
133
+ catch (e) {
134
+ violations.push({
135
+ code: ViolationCode.Sign712MetaMaskCaveatDecodeError,
136
+ message: `failed to decode ExactExecutionBatch caveat terms`,
137
+ path: `${caveatPath}.terms`,
138
+ actual: caveat.terms,
139
+ details: e,
140
+ });
141
+ return;
142
+ }
143
+ if (decoded.length !== txCalls.length) {
144
+ violations.push({
145
+ code: ViolationCode.Sign712MetaMaskExactExecutionBatchMismatch,
146
+ message: `ExactExecutionBatch decoded ${decoded.length} executions but transactionCalls has ${txCalls.length}`,
147
+ path: `${caveatPath}.terms`,
148
+ expected: txCalls.length,
149
+ actual: decoded.length,
150
+ });
151
+ return;
152
+ }
153
+ for (let i = 0; i < txCalls.length; i++) {
154
+ if (!executionMatchesTxCall(decoded[i], txCalls[i])) {
155
+ violations.push({
156
+ code: ViolationCode.Sign712MetaMaskExactExecutionBatchMismatch,
157
+ message: `ExactExecutionBatch caveat terms[${i}] do not match transactionCalls[${i}]`,
158
+ path: `${caveatPath}.terms`,
159
+ expected: txCalls[i],
160
+ actual: decoded[i],
161
+ });
162
+ }
163
+ }
164
+ }
165
+ function executionMatchesTxCall(decoded, txCall) {
166
+ return (decoded.to.toLowerCase() === txCall.to.toLowerCase() &&
167
+ decoded.value === txCall.value &&
168
+ decoded.data.toLowerCase() === txCall.data.toLowerCase());
169
+ }
170
+ // Decodes IdEnforcer terms (ABI-encoded uint256) and checks it equals the actionId UUID.
171
+ // actionId is a UUID string like "ea675851-d810-4e1a-b438-044ec80840a3";
172
+ // caveat.terms is ABI-encoded uint256 (hex-padded to 32 bytes).
173
+ function validateIdEnforcerValue(caveat, actionId, caveatPath, violations) {
174
+ try {
175
+ const decodedId = BigInt(caveat.terms);
176
+ const expectedId = actionIdToBigInt(actionId);
177
+ if (decodedId !== expectedId) {
178
+ violations.push({
179
+ code: ViolationCode.Sign712MetaMaskIdEnforcerValueMismatch,
180
+ message: `IdEnforcer ID does not match actionId`,
181
+ path: `${caveatPath}.terms`,
182
+ expected: { actionId, numeric: expectedId.toString() },
183
+ actual: { numeric: decodedId.toString() },
184
+ });
185
+ }
186
+ }
187
+ catch {
188
+ violations.push({
189
+ code: ViolationCode.Sign712MetaMaskIdEnforcerValueMismatch,
190
+ message: `IdEnforcer terms cannot be decoded as uint256`,
191
+ path: `${caveatPath}.terms`,
192
+ expected: actionId,
193
+ actual: caveat.terms,
194
+ });
195
+ }
196
+ }
197
+ function actionIdToBigInt(actionId) {
198
+ if (actionId.includes("-")) {
199
+ return BigInt("0x" + actionId.replace(/-/g, ""));
200
+ }
201
+ return BigInt(actionId);
202
+ }
203
+ // CRITICAL: beforeThreshold must equal request.expirationTimestamp
204
+ export function validateTimestampEnforcerValue(caveat, expirationTimestamp, caveatIndex, actionPath, violations) {
205
+ const caveatPath = `${actionPath}.data.message.caveats[${caveatIndex}]`;
206
+ try {
207
+ const decoded = decodeTimestampEnforcer(caveat.terms);
208
+ if (decoded.beforeThreshold !== BigInt(expirationTimestamp)) {
209
+ violations.push({
210
+ code: ViolationCode.Sign712MetaMaskTimestampBeforeThresholdMismatch,
211
+ message: `TimestampEnforcer beforeThreshold does not match request.expirationTimestamp`,
212
+ path: `${caveatPath}.terms`,
213
+ expected: expirationTimestamp,
214
+ actual: Number(decoded.beforeThreshold),
215
+ });
216
+ }
217
+ }
218
+ catch (e) {
219
+ violations.push({
220
+ code: ViolationCode.Sign712MetaMaskCaveatDecodeError,
221
+ message: `failed to decode TimestampEnforcer caveat terms`,
222
+ path: `${caveatPath}.terms`,
223
+ actual: caveat.terms,
224
+ details: e,
225
+ });
226
+ }
227
+ }
228
+ //# sourceMappingURL=evm-caveats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evm-caveats.js","sourceRoot":"","sources":["../../../src/validations/evm-caveats.ts"],"names":[],"mappings":"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"}