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