@debridge-finance/borderless-validation-sdk 0.0.1 → 0.0.2

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 (286) hide show
  1. package/README.md +164 -0
  2. package/dist/cjs/helpers/address.js +53 -18
  3. package/dist/cjs/helpers/address.js.map +1 -1
  4. package/dist/cjs/helpers/evm-action.js +3 -3
  5. package/dist/cjs/helpers/evm-action.js.map +1 -1
  6. package/dist/cjs/helpers/evm-dln-hook-pack.js +87 -0
  7. package/dist/cjs/helpers/evm-dln-hook-pack.js.map +1 -0
  8. package/dist/cjs/helpers/evm-gas-compensation-tx.js +102 -0
  9. package/dist/cjs/helpers/evm-gas-compensation-tx.js.map +1 -0
  10. package/dist/cjs/helpers/evm-intent-id.js +27 -13
  11. package/dist/cjs/helpers/evm-intent-id.js.map +1 -1
  12. package/dist/cjs/helpers/evm-trade-amounts.js +36 -1
  13. package/dist/cjs/helpers/evm-trade-amounts.js.map +1 -1
  14. package/dist/cjs/helpers/gas-compensation.js +36 -0
  15. package/dist/cjs/helpers/gas-compensation.js.map +1 -0
  16. package/dist/cjs/helpers/hex.js +24 -0
  17. package/dist/cjs/helpers/hex.js.map +1 -0
  18. package/dist/cjs/helpers/placeholder.js +174 -0
  19. package/dist/cjs/helpers/placeholder.js.map +1 -0
  20. package/dist/cjs/helpers/sets.js +13 -0
  21. package/dist/cjs/helpers/sets.js.map +1 -0
  22. package/dist/cjs/types/enums.js +32 -2
  23. package/dist/cjs/types/enums.js.map +1 -1
  24. package/dist/cjs/types/request.js +36 -3
  25. package/dist/cjs/types/request.js.map +1 -1
  26. package/dist/cjs/types/response.js +125 -5
  27. package/dist/cjs/types/response.js.map +1 -1
  28. package/dist/cjs/types/validation.js +81 -10
  29. package/dist/cjs/types/validation.js.map +1 -1
  30. package/dist/cjs/validations/compensation-hook.js +203 -0
  31. package/dist/cjs/validations/compensation-hook.js.map +1 -0
  32. package/dist/cjs/validations/evm-caveats.js +4 -14
  33. package/dist/cjs/validations/evm-caveats.js.map +1 -1
  34. package/dist/cjs/validations/evm-op-budget.js +13 -10
  35. package/dist/cjs/validations/evm-op-budget.js.map +1 -1
  36. package/dist/cjs/validations/evm-op-hook.js +410 -3
  37. package/dist/cjs/validations/evm-op-hook.js.map +1 -1
  38. package/dist/cjs/validations/evm-op-wrap.js +10 -7
  39. package/dist/cjs/validations/evm-op-wrap.js.map +1 -1
  40. package/dist/cjs/validations/evm-required-actions.js +7 -9
  41. package/dist/cjs/validations/evm-required-actions.js.map +1 -1
  42. package/dist/cjs/validations/evm-sign712-metamask.js +17 -94
  43. package/dist/cjs/validations/evm-sign712-metamask.js.map +1 -1
  44. package/dist/cjs/validations/evm-sign712-shared.js +116 -0
  45. package/dist/cjs/validations/evm-sign712-shared.js.map +1 -0
  46. package/dist/cjs/validations/evm-sign7702.js +34 -22
  47. package/dist/cjs/validations/evm-sign7702.js.map +1 -1
  48. package/dist/cjs/validations/hooks-common.js +252 -37
  49. package/dist/cjs/validations/hooks-common.js.map +1 -1
  50. package/dist/cjs/validations/intent-destinations.js +197 -0
  51. package/dist/cjs/validations/intent-destinations.js.map +1 -0
  52. package/dist/cjs/validations/intent-tokens.js +347 -0
  53. package/dist/cjs/validations/intent-tokens.js.map +1 -0
  54. package/dist/cjs/validations/intent.js +288 -0
  55. package/dist/cjs/validations/intent.js.map +1 -0
  56. package/dist/cjs/validations/required-actions.js +7 -7
  57. package/dist/cjs/validations/required-actions.js.map +1 -1
  58. package/dist/cjs/validations/solana-hook.js +33 -22
  59. package/dist/cjs/validations/solana-hook.js.map +1 -1
  60. package/dist/cjs/validations/solana-op-budget.js +56 -18
  61. package/dist/cjs/validations/solana-op-budget.js.map +1 -1
  62. package/dist/cjs/validations/solana-op-wrap.js +46 -13
  63. package/dist/cjs/validations/solana-op-wrap.js.map +1 -1
  64. package/dist/cjs/validations/solana-required-actions.js +3 -3
  65. package/dist/cjs/validations/solana-required-actions.js.map +1 -1
  66. package/dist/cjs/validations/solana-transaction.js +5 -5
  67. package/dist/cjs/validations/solana-transaction.js.map +1 -1
  68. package/dist/cjs/validations/trade-grouping.js +139 -1
  69. package/dist/cjs/validations/trade-grouping.js.map +1 -1
  70. package/dist/cjs/validations/trades.js +168 -40
  71. package/dist/cjs/validations/trades.js.map +1 -1
  72. package/dist/cjs/validator.js +11 -16
  73. package/dist/cjs/validator.js.map +1 -1
  74. package/dist/cjs/whitelists/environment-config.js +47 -28
  75. package/dist/cjs/whitelists/environment-config.js.map +1 -1
  76. package/dist/cjs/whitelists/evm/caveat-enforcers.js +21 -5
  77. package/dist/cjs/whitelists/evm/caveat-enforcers.js.map +1 -1
  78. package/dist/cjs/whitelists/evm/delegation-manager.js +7 -2
  79. package/dist/cjs/whitelists/evm/delegation-manager.js.map +1 -1
  80. package/dist/cjs/whitelists/evm/eip7702-delegation.js +7 -2
  81. package/dist/cjs/whitelists/evm/eip7702-delegation.js.map +1 -1
  82. package/dist/cjs/whitelists/evm/index.js +14 -1
  83. package/dist/cjs/whitelists/evm/index.js.map +1 -1
  84. package/dist/cjs/whitelists/evm/metamask-delegation-chains.js +16 -0
  85. package/dist/cjs/whitelists/evm/metamask-delegation-chains.js.map +1 -0
  86. package/dist/cjs/whitelists/evm/permit2.js +16 -12
  87. package/dist/cjs/whitelists/evm/permit2.js.map +1 -1
  88. package/dist/cjs/whitelists/evm/weth.js +16 -5
  89. package/dist/cjs/whitelists/evm/weth.js.map +1 -1
  90. package/dist/cjs/whitelists/solana/intent-signature.js +0 -1
  91. package/dist/cjs/whitelists/solana/intent-signature.js.map +1 -1
  92. package/dist/cjs/whitelists/subscription-to-chain-id.js +10 -0
  93. package/dist/cjs/whitelists/subscription-to-chain-id.js.map +1 -1
  94. package/dist/cjs/whitelists/types.js +13 -3
  95. package/dist/cjs/whitelists/types.js.map +1 -1
  96. package/dist/esm/helpers/address.js +48 -17
  97. package/dist/esm/helpers/address.js.map +1 -1
  98. package/dist/esm/helpers/evm-action.js +3 -3
  99. package/dist/esm/helpers/evm-action.js.map +1 -1
  100. package/dist/esm/helpers/evm-dln-hook-pack.js +82 -0
  101. package/dist/esm/helpers/evm-dln-hook-pack.js.map +1 -0
  102. package/dist/esm/helpers/evm-gas-compensation-tx.js +99 -0
  103. package/dist/esm/helpers/evm-gas-compensation-tx.js.map +1 -0
  104. package/dist/esm/helpers/evm-intent-id.js +27 -13
  105. package/dist/esm/helpers/evm-intent-id.js.map +1 -1
  106. package/dist/esm/helpers/evm-trade-amounts.js +36 -1
  107. package/dist/esm/helpers/evm-trade-amounts.js.map +1 -1
  108. package/dist/esm/helpers/gas-compensation.js +33 -0
  109. package/dist/esm/helpers/gas-compensation.js.map +1 -0
  110. package/dist/esm/helpers/hex.js +20 -0
  111. package/dist/esm/helpers/hex.js.map +1 -0
  112. package/dist/esm/helpers/placeholder.js +168 -0
  113. package/dist/esm/helpers/placeholder.js.map +1 -0
  114. package/dist/esm/helpers/sets.js +10 -0
  115. package/dist/esm/helpers/sets.js.map +1 -0
  116. package/dist/esm/types/enums.js +31 -1
  117. package/dist/esm/types/enums.js.map +1 -1
  118. package/dist/esm/types/request.js +37 -4
  119. package/dist/esm/types/request.js.map +1 -1
  120. package/dist/esm/types/response.js +124 -4
  121. package/dist/esm/types/response.js.map +1 -1
  122. package/dist/esm/types/validation.js +81 -10
  123. package/dist/esm/types/validation.js.map +1 -1
  124. package/dist/esm/validations/compensation-hook.js +200 -0
  125. package/dist/esm/validations/compensation-hook.js.map +1 -0
  126. package/dist/esm/validations/evm-caveats.js +4 -14
  127. package/dist/esm/validations/evm-caveats.js.map +1 -1
  128. package/dist/esm/validations/evm-op-budget.js +13 -10
  129. package/dist/esm/validations/evm-op-budget.js.map +1 -1
  130. package/dist/esm/validations/evm-op-hook.js +409 -2
  131. package/dist/esm/validations/evm-op-hook.js.map +1 -1
  132. package/dist/esm/validations/evm-op-wrap.js +10 -7
  133. package/dist/esm/validations/evm-op-wrap.js.map +1 -1
  134. package/dist/esm/validations/evm-required-actions.js +7 -9
  135. package/dist/esm/validations/evm-required-actions.js.map +1 -1
  136. package/dist/esm/validations/evm-sign712-metamask.js +17 -94
  137. package/dist/esm/validations/evm-sign712-metamask.js.map +1 -1
  138. package/dist/esm/validations/evm-sign712-shared.js +110 -0
  139. package/dist/esm/validations/evm-sign712-shared.js.map +1 -0
  140. package/dist/esm/validations/evm-sign7702.js +33 -22
  141. package/dist/esm/validations/evm-sign7702.js.map +1 -1
  142. package/dist/esm/validations/hooks-common.js +251 -38
  143. package/dist/esm/validations/hooks-common.js.map +1 -1
  144. package/dist/esm/validations/intent-destinations.js +194 -0
  145. package/dist/esm/validations/intent-destinations.js.map +1 -0
  146. package/dist/esm/validations/intent-tokens.js +344 -0
  147. package/dist/esm/validations/intent-tokens.js.map +1 -0
  148. package/dist/esm/validations/intent.js +285 -0
  149. package/dist/esm/validations/intent.js.map +1 -0
  150. package/dist/esm/validations/required-actions.js +7 -7
  151. package/dist/esm/validations/required-actions.js.map +1 -1
  152. package/dist/esm/validations/solana-hook.js +35 -24
  153. package/dist/esm/validations/solana-hook.js.map +1 -1
  154. package/dist/esm/validations/solana-op-budget.js +56 -18
  155. package/dist/esm/validations/solana-op-budget.js.map +1 -1
  156. package/dist/esm/validations/solana-op-wrap.js +47 -14
  157. package/dist/esm/validations/solana-op-wrap.js.map +1 -1
  158. package/dist/esm/validations/solana-required-actions.js +3 -3
  159. package/dist/esm/validations/solana-required-actions.js.map +1 -1
  160. package/dist/esm/validations/solana-transaction.js +7 -7
  161. package/dist/esm/validations/solana-transaction.js.map +1 -1
  162. package/dist/esm/validations/trade-grouping.js +139 -1
  163. package/dist/esm/validations/trade-grouping.js.map +1 -1
  164. package/dist/esm/validations/trades.js +169 -41
  165. package/dist/esm/validations/trades.js.map +1 -1
  166. package/dist/esm/validator.js +11 -16
  167. package/dist/esm/validator.js.map +1 -1
  168. package/dist/esm/whitelists/environment-config.js +47 -28
  169. package/dist/esm/whitelists/environment-config.js.map +1 -1
  170. package/dist/esm/whitelists/evm/caveat-enforcers.js +20 -4
  171. package/dist/esm/whitelists/evm/caveat-enforcers.js.map +1 -1
  172. package/dist/esm/whitelists/evm/delegation-manager.js +6 -1
  173. package/dist/esm/whitelists/evm/delegation-manager.js.map +1 -1
  174. package/dist/esm/whitelists/evm/eip7702-delegation.js +6 -1
  175. package/dist/esm/whitelists/evm/eip7702-delegation.js.map +1 -1
  176. package/dist/esm/whitelists/evm/index.js +4 -4
  177. package/dist/esm/whitelists/evm/index.js.map +1 -1
  178. package/dist/esm/whitelists/evm/metamask-delegation-chains.js +13 -0
  179. package/dist/esm/whitelists/evm/metamask-delegation-chains.js.map +1 -0
  180. package/dist/esm/whitelists/evm/permit2.js +9 -5
  181. package/dist/esm/whitelists/evm/permit2.js.map +1 -1
  182. package/dist/esm/whitelists/evm/weth.js +16 -5
  183. package/dist/esm/whitelists/evm/weth.js.map +1 -1
  184. package/dist/esm/whitelists/solana/intent-signature.js +0 -1
  185. package/dist/esm/whitelists/solana/intent-signature.js.map +1 -1
  186. package/dist/esm/whitelists/subscription-to-chain-id.js +9 -0
  187. package/dist/esm/whitelists/subscription-to-chain-id.js.map +1 -1
  188. package/dist/esm/whitelists/types.js +14 -5
  189. package/dist/esm/whitelists/types.js.map +1 -1
  190. package/dist/types/helpers/address.d.ts +7 -7
  191. package/dist/types/helpers/address.d.ts.map +1 -1
  192. package/dist/types/helpers/evm-dln-hook-pack.d.ts +19 -0
  193. package/dist/types/helpers/evm-dln-hook-pack.d.ts.map +1 -0
  194. package/dist/types/helpers/evm-gas-compensation-tx.d.ts +13 -0
  195. package/dist/types/helpers/evm-gas-compensation-tx.d.ts.map +1 -0
  196. package/dist/types/helpers/evm-intent-id.d.ts.map +1 -1
  197. package/dist/types/helpers/evm-trade-amounts.d.ts +2 -2
  198. package/dist/types/helpers/evm-trade-amounts.d.ts.map +1 -1
  199. package/dist/types/helpers/gas-compensation.d.ts +10 -0
  200. package/dist/types/helpers/gas-compensation.d.ts.map +1 -0
  201. package/dist/types/helpers/hex.d.ts +3 -0
  202. package/dist/types/helpers/hex.d.ts.map +1 -0
  203. package/dist/types/helpers/placeholder.d.ts +41 -0
  204. package/dist/types/helpers/placeholder.d.ts.map +1 -0
  205. package/dist/types/helpers/sets.d.ts +2 -0
  206. package/dist/types/helpers/sets.d.ts.map +1 -0
  207. package/dist/types/types/enums.d.ts +24 -1
  208. package/dist/types/types/enums.d.ts.map +1 -1
  209. package/dist/types/types/request.d.ts +21 -11
  210. package/dist/types/types/request.d.ts.map +1 -1
  211. package/dist/types/types/response.d.ts +1015 -17
  212. package/dist/types/types/response.d.ts.map +1 -1
  213. package/dist/types/types/validation.d.ts +73 -11
  214. package/dist/types/types/validation.d.ts.map +1 -1
  215. package/dist/types/validations/compensation-hook.d.ts +3 -0
  216. package/dist/types/validations/compensation-hook.d.ts.map +1 -0
  217. package/dist/types/validations/evm-caveats.d.ts.map +1 -1
  218. package/dist/types/validations/evm-op-budget.d.ts +2 -2
  219. package/dist/types/validations/evm-op-budget.d.ts.map +1 -1
  220. package/dist/types/validations/evm-op-hook.d.ts +4 -2
  221. package/dist/types/validations/evm-op-hook.d.ts.map +1 -1
  222. package/dist/types/validations/evm-op-wrap.d.ts +2 -2
  223. package/dist/types/validations/evm-op-wrap.d.ts.map +1 -1
  224. package/dist/types/validations/evm-required-actions.d.ts +2 -2
  225. package/dist/types/validations/evm-required-actions.d.ts.map +1 -1
  226. package/dist/types/validations/evm-sign712-metamask.d.ts.map +1 -1
  227. package/dist/types/validations/evm-sign712-shared.d.ts +7 -0
  228. package/dist/types/validations/evm-sign712-shared.d.ts.map +1 -0
  229. package/dist/types/validations/evm-sign7702.d.ts +2 -1
  230. package/dist/types/validations/evm-sign7702.d.ts.map +1 -1
  231. package/dist/types/validations/hooks-common.d.ts +1 -0
  232. package/dist/types/validations/hooks-common.d.ts.map +1 -1
  233. package/dist/types/validations/intent-destinations.d.ts +4 -0
  234. package/dist/types/validations/intent-destinations.d.ts.map +1 -0
  235. package/dist/types/validations/intent-tokens.d.ts +4 -0
  236. package/dist/types/validations/intent-tokens.d.ts.map +1 -0
  237. package/dist/types/validations/intent.d.ts +5 -0
  238. package/dist/types/validations/intent.d.ts.map +1 -0
  239. package/dist/types/validations/required-actions.d.ts +2 -1
  240. package/dist/types/validations/required-actions.d.ts.map +1 -1
  241. package/dist/types/validations/solana-hook.d.ts +4 -2
  242. package/dist/types/validations/solana-hook.d.ts.map +1 -1
  243. package/dist/types/validations/solana-op-budget.d.ts +2 -2
  244. package/dist/types/validations/solana-op-budget.d.ts.map +1 -1
  245. package/dist/types/validations/solana-op-wrap.d.ts +2 -2
  246. package/dist/types/validations/solana-op-wrap.d.ts.map +1 -1
  247. package/dist/types/validations/solana-required-actions.d.ts +2 -2
  248. package/dist/types/validations/solana-required-actions.d.ts.map +1 -1
  249. package/dist/types/validations/solana-transaction.d.ts +3 -3
  250. package/dist/types/validations/solana-transaction.d.ts.map +1 -1
  251. package/dist/types/validations/trade-grouping.d.ts +6 -2
  252. package/dist/types/validations/trade-grouping.d.ts.map +1 -1
  253. package/dist/types/validations/trades.d.ts.map +1 -1
  254. package/dist/types/validator.d.ts.map +1 -1
  255. package/dist/types/whitelists/environment-config.d.ts.map +1 -1
  256. package/dist/types/whitelists/evm/caveat-enforcers.d.ts +8 -0
  257. package/dist/types/whitelists/evm/caveat-enforcers.d.ts.map +1 -1
  258. package/dist/types/whitelists/evm/delegation-manager.d.ts +2 -0
  259. package/dist/types/whitelists/evm/delegation-manager.d.ts.map +1 -1
  260. package/dist/types/whitelists/evm/eip7702-delegation.d.ts +2 -0
  261. package/dist/types/whitelists/evm/eip7702-delegation.d.ts.map +1 -1
  262. package/dist/types/whitelists/evm/index.d.ts +4 -4
  263. package/dist/types/whitelists/evm/index.d.ts.map +1 -1
  264. package/dist/types/whitelists/evm/metamask-delegation-chains.d.ts +3 -0
  265. package/dist/types/whitelists/evm/metamask-delegation-chains.d.ts.map +1 -0
  266. package/dist/types/whitelists/evm/permit2.d.ts +1 -0
  267. package/dist/types/whitelists/evm/permit2.d.ts.map +1 -1
  268. package/dist/types/whitelists/evm/weth.d.ts.map +1 -1
  269. package/dist/types/whitelists/solana/intent-signature.d.ts.map +1 -1
  270. package/dist/types/whitelists/subscription-to-chain-id.d.ts +1 -0
  271. package/dist/types/whitelists/subscription-to-chain-id.d.ts.map +1 -1
  272. package/dist/types/whitelists/types.d.ts +1 -1
  273. package/dist/types/whitelists/types.d.ts.map +1 -1
  274. package/package.json +4 -3
  275. package/dist/cjs/helpers/constants.js +0 -6
  276. package/dist/cjs/helpers/constants.js.map +0 -1
  277. package/dist/cjs/validations/evm-op-gas-compensation.js +0 -152
  278. package/dist/cjs/validations/evm-op-gas-compensation.js.map +0 -1
  279. package/dist/esm/helpers/constants.js +0 -3
  280. package/dist/esm/helpers/constants.js.map +0 -1
  281. package/dist/esm/validations/evm-op-gas-compensation.js +0 -149
  282. package/dist/esm/validations/evm-op-gas-compensation.js.map +0 -1
  283. package/dist/types/helpers/constants.d.ts +0 -2
  284. package/dist/types/helpers/constants.d.ts.map +0 -1
  285. package/dist/types/validations/evm-op-gas-compensation.d.ts +0 -3
  286. package/dist/types/validations/evm-op-gas-compensation.d.ts.map +0 -1
@@ -1,9 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DELEGATION_MANAGER_CONTRACTS = void 0;
3
+ exports.DELEGATION_MANAGER_CONTRACTS = exports.AVALANCHE_DELEGATION_MANAGER = exports.DEFAULT_DELEGATION_MANAGER = void 0;
4
4
  const enums_1 = require("../../types/enums");
5
+ const types_1 = require("../types");
6
+ const metamask_delegation_chains_1 = require("./metamask-delegation-chains");
5
7
  // See: https://docs.metamask.io/smart-accounts-kit/changelog/0.13.0#delegation-framework
8
+ exports.DEFAULT_DELEGATION_MANAGER = "0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3";
9
+ exports.AVALANCHE_DELEGATION_MANAGER = "0xAe210fcd400801CFd06F2Ae831571363634F673A";
6
10
  exports.DELEGATION_MANAGER_CONTRACTS = {
7
- [enums_1.ChainId.Wildcard]: ["0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3"] // wildcard for any chain
11
+ ...(0, types_1.buildSameAddressMap)(metamask_delegation_chains_1.METAMASK_DEFAULT_EVM_CHAINS, exports.DEFAULT_DELEGATION_MANAGER),
12
+ [enums_1.ChainId.Avalanche]: [exports.AVALANCHE_DELEGATION_MANAGER],
8
13
  };
9
14
  //# sourceMappingURL=delegation-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"delegation-manager.js","sourceRoot":"","sources":["../../../../src/whitelists/evm/delegation-manager.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAG5C,yFAAyF;AAE5E,QAAA,4BAA4B,GAAoB;IACzD,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,4CAA4C,CAAC,CAAC,yBAAyB;CACtF,CAAC"}
1
+ {"version":3,"file":"delegation-manager.js","sourceRoot":"","sources":["../../../../src/whitelists/evm/delegation-manager.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAC5C,oCAAgE;AAChE,6EAA2E;AAE3E,yFAAyF;AAE5E,QAAA,0BAA0B,GAAG,4CAA4C,CAAC;AAC1E,QAAA,4BAA4B,GAAG,4CAA4C,CAAC;AAE5E,QAAA,4BAA4B,GAAoB;IACzD,GAAG,IAAA,2BAAmB,EAAC,wDAA2B,EAAE,kCAA0B,CAAC;IAC/E,CAAC,eAAO,CAAC,SAAS,CAAC,EAAE,CAAC,oCAA4B,CAAC;CAC7C,CAAC"}
@@ -1,8 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EIP7702_DELEGATION_CONTRACTS = void 0;
3
+ exports.EIP7702_DELEGATION_CONTRACTS = exports.AVALANCHE_EIP7702_STATELESS_DELEGATOR_IMPL = exports.DEFAULT_EIP7702_STATELESS_DELEGATOR_IMPL = void 0;
4
4
  const enums_1 = require("../../types/enums");
5
+ const types_1 = require("../types");
6
+ const metamask_delegation_chains_1 = require("./metamask-delegation-chains");
7
+ exports.DEFAULT_EIP7702_STATELESS_DELEGATOR_IMPL = "0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B";
8
+ exports.AVALANCHE_EIP7702_STATELESS_DELEGATOR_IMPL = "0x5E52D56A42320997aD2F89512a62cCA5C90d181d";
5
9
  exports.EIP7702_DELEGATION_CONTRACTS = {
6
- [enums_1.ChainId.Wildcard]: ["0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B"] // wildcard for any chain
10
+ ...(0, types_1.buildSameAddressMap)(metamask_delegation_chains_1.METAMASK_DEFAULT_EVM_CHAINS, exports.DEFAULT_EIP7702_STATELESS_DELEGATOR_IMPL),
11
+ [enums_1.ChainId.Avalanche]: [exports.AVALANCHE_EIP7702_STATELESS_DELEGATOR_IMPL],
7
12
  };
8
13
  //# sourceMappingURL=eip7702-delegation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eip7702-delegation.js","sourceRoot":"","sources":["../../../../src/whitelists/evm/eip7702-delegation.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAG/B,QAAA,4BAA4B,GAAoB;IACzD,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,4CAA4C,CAAC,CAAC,yBAAyB;CACtF,CAAC"}
1
+ {"version":3,"file":"eip7702-delegation.js","sourceRoot":"","sources":["../../../../src/whitelists/evm/eip7702-delegation.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAC5C,oCAAgE;AAChE,6EAA2E;AAE9D,QAAA,wCAAwC,GAAG,4CAA4C,CAAC;AACxF,QAAA,0CAA0C,GAAG,4CAA4C,CAAC;AAE1F,QAAA,4BAA4B,GAAoB;IACzD,GAAG,IAAA,2BAAmB,EAAC,wDAA2B,EAAE,gDAAwC,CAAC;IAC7F,CAAC,eAAO,CAAC,SAAS,CAAC,EAAE,CAAC,kDAA0C,CAAC;CAC3D,CAAC"}
@@ -1,17 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WETH_CONTRACTS = exports.PERMIT2_CONTRACTS = exports.TIMESTAMP_ENFORCER_CONTRACTS = exports.ID_ENFORCER_CONTRACTS = exports.EXACT_EXECUTION_BATCH_ENFORCER_CONTRACTS = exports.EXACT_EXECUTION_ENFORCER_CONTRACTS = exports.DELEGATION_MANAGER_CONTRACTS = exports.EIP7702_DELEGATION_CONTRACTS = void 0;
3
+ exports.WETH_CONTRACTS = exports.DEFAULT_PERMIT2_ADDRESS = exports.PERMIT2_CONTRACTS = exports.AVALANCHE_TIMESTAMP_ENFORCER = exports.AVALANCHE_ID_ENFORCER = exports.AVALANCHE_EXACT_EXECUTION_BATCH_ENFORCER = exports.AVALANCHE_EXACT_EXECUTION_ENFORCER = exports.DEFAULT_TIMESTAMP_ENFORCER = exports.DEFAULT_ID_ENFORCER = exports.DEFAULT_EXACT_EXECUTION_BATCH_ENFORCER = exports.DEFAULT_EXACT_EXECUTION_ENFORCER = exports.TIMESTAMP_ENFORCER_CONTRACTS = exports.ID_ENFORCER_CONTRACTS = exports.EXACT_EXECUTION_BATCH_ENFORCER_CONTRACTS = exports.EXACT_EXECUTION_ENFORCER_CONTRACTS = exports.AVALANCHE_DELEGATION_MANAGER = exports.DEFAULT_DELEGATION_MANAGER = exports.DELEGATION_MANAGER_CONTRACTS = exports.AVALANCHE_EIP7702_STATELESS_DELEGATOR_IMPL = exports.DEFAULT_EIP7702_STATELESS_DELEGATOR_IMPL = exports.EIP7702_DELEGATION_CONTRACTS = void 0;
4
4
  var eip7702_delegation_1 = require("./eip7702-delegation");
5
5
  Object.defineProperty(exports, "EIP7702_DELEGATION_CONTRACTS", { enumerable: true, get: function () { return eip7702_delegation_1.EIP7702_DELEGATION_CONTRACTS; } });
6
+ Object.defineProperty(exports, "DEFAULT_EIP7702_STATELESS_DELEGATOR_IMPL", { enumerable: true, get: function () { return eip7702_delegation_1.DEFAULT_EIP7702_STATELESS_DELEGATOR_IMPL; } });
7
+ Object.defineProperty(exports, "AVALANCHE_EIP7702_STATELESS_DELEGATOR_IMPL", { enumerable: true, get: function () { return eip7702_delegation_1.AVALANCHE_EIP7702_STATELESS_DELEGATOR_IMPL; } });
6
8
  var delegation_manager_1 = require("./delegation-manager");
7
9
  Object.defineProperty(exports, "DELEGATION_MANAGER_CONTRACTS", { enumerable: true, get: function () { return delegation_manager_1.DELEGATION_MANAGER_CONTRACTS; } });
10
+ Object.defineProperty(exports, "DEFAULT_DELEGATION_MANAGER", { enumerable: true, get: function () { return delegation_manager_1.DEFAULT_DELEGATION_MANAGER; } });
11
+ Object.defineProperty(exports, "AVALANCHE_DELEGATION_MANAGER", { enumerable: true, get: function () { return delegation_manager_1.AVALANCHE_DELEGATION_MANAGER; } });
8
12
  var caveat_enforcers_1 = require("./caveat-enforcers");
9
13
  Object.defineProperty(exports, "EXACT_EXECUTION_ENFORCER_CONTRACTS", { enumerable: true, get: function () { return caveat_enforcers_1.EXACT_EXECUTION_ENFORCER_CONTRACTS; } });
10
14
  Object.defineProperty(exports, "EXACT_EXECUTION_BATCH_ENFORCER_CONTRACTS", { enumerable: true, get: function () { return caveat_enforcers_1.EXACT_EXECUTION_BATCH_ENFORCER_CONTRACTS; } });
11
15
  Object.defineProperty(exports, "ID_ENFORCER_CONTRACTS", { enumerable: true, get: function () { return caveat_enforcers_1.ID_ENFORCER_CONTRACTS; } });
12
16
  Object.defineProperty(exports, "TIMESTAMP_ENFORCER_CONTRACTS", { enumerable: true, get: function () { return caveat_enforcers_1.TIMESTAMP_ENFORCER_CONTRACTS; } });
17
+ Object.defineProperty(exports, "DEFAULT_EXACT_EXECUTION_ENFORCER", { enumerable: true, get: function () { return caveat_enforcers_1.DEFAULT_EXACT_EXECUTION_ENFORCER; } });
18
+ Object.defineProperty(exports, "DEFAULT_EXACT_EXECUTION_BATCH_ENFORCER", { enumerable: true, get: function () { return caveat_enforcers_1.DEFAULT_EXACT_EXECUTION_BATCH_ENFORCER; } });
19
+ Object.defineProperty(exports, "DEFAULT_ID_ENFORCER", { enumerable: true, get: function () { return caveat_enforcers_1.DEFAULT_ID_ENFORCER; } });
20
+ Object.defineProperty(exports, "DEFAULT_TIMESTAMP_ENFORCER", { enumerable: true, get: function () { return caveat_enforcers_1.DEFAULT_TIMESTAMP_ENFORCER; } });
21
+ Object.defineProperty(exports, "AVALANCHE_EXACT_EXECUTION_ENFORCER", { enumerable: true, get: function () { return caveat_enforcers_1.AVALANCHE_EXACT_EXECUTION_ENFORCER; } });
22
+ Object.defineProperty(exports, "AVALANCHE_EXACT_EXECUTION_BATCH_ENFORCER", { enumerable: true, get: function () { return caveat_enforcers_1.AVALANCHE_EXACT_EXECUTION_BATCH_ENFORCER; } });
23
+ Object.defineProperty(exports, "AVALANCHE_ID_ENFORCER", { enumerable: true, get: function () { return caveat_enforcers_1.AVALANCHE_ID_ENFORCER; } });
24
+ Object.defineProperty(exports, "AVALANCHE_TIMESTAMP_ENFORCER", { enumerable: true, get: function () { return caveat_enforcers_1.AVALANCHE_TIMESTAMP_ENFORCER; } });
13
25
  var permit2_1 = require("./permit2");
14
26
  Object.defineProperty(exports, "PERMIT2_CONTRACTS", { enumerable: true, get: function () { return permit2_1.PERMIT2_CONTRACTS; } });
27
+ Object.defineProperty(exports, "DEFAULT_PERMIT2_ADDRESS", { enumerable: true, get: function () { return permit2_1.DEFAULT_PERMIT2_ADDRESS; } });
15
28
  var weth_1 = require("./weth");
16
29
  Object.defineProperty(exports, "WETH_CONTRACTS", { enumerable: true, get: function () { return weth_1.WETH_CONTRACTS; } });
17
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/whitelists/evm/index.ts"],"names":[],"mappings":";;;AAAA,2DAAoE;AAA3D,kIAAA,4BAA4B,OAAA;AACrC,2DAAoE;AAA3D,kIAAA,4BAA4B,OAAA;AACrC,uDAK4B;AAJxB,sIAAA,kCAAkC,OAAA;AAClC,4IAAA,wCAAwC,OAAA;AACxC,yHAAA,qBAAqB,OAAA;AACrB,gIAAA,4BAA4B,OAAA;AAEhC,qCAA8C;AAArC,4GAAA,iBAAiB,OAAA;AAC1B,+BAAwC;AAA/B,sGAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/whitelists/evm/index.ts"],"names":[],"mappings":";;;AAAA,2DAI8B;AAH1B,kIAAA,4BAA4B,OAAA;AAC5B,8IAAA,wCAAwC,OAAA;AACxC,gJAAA,0CAA0C,OAAA;AAE9C,2DAI8B;AAH1B,kIAAA,4BAA4B,OAAA;AAC5B,gIAAA,0BAA0B,OAAA;AAC1B,kIAAA,4BAA4B,OAAA;AAEhC,uDAa4B;AAZxB,sIAAA,kCAAkC,OAAA;AAClC,4IAAA,wCAAwC,OAAA;AACxC,yHAAA,qBAAqB,OAAA;AACrB,gIAAA,4BAA4B,OAAA;AAC5B,oIAAA,gCAAgC,OAAA;AAChC,0IAAA,sCAAsC,OAAA;AACtC,uHAAA,mBAAmB,OAAA;AACnB,8HAAA,0BAA0B,OAAA;AAC1B,sIAAA,kCAAkC,OAAA;AAClC,4IAAA,wCAAwC,OAAA;AACxC,yHAAA,qBAAqB,OAAA;AACrB,gIAAA,4BAA4B,OAAA;AAEhC,qCAAuE;AAA9D,4GAAA,iBAAiB,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AACnD,+BAAwC;AAA/B,sGAAA,cAAc,OAAA"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.METAMASK_DEFAULT_EVM_CHAINS = void 0;
4
+ const enums_1 = require("../../types/enums");
5
+ // Chains where MetaMask Delegation Framework uses the "default" set of contract addresses
6
+ // (DelegationManager, EIP7702StatelessDeleGatorImpl, caveat enforcers).
7
+ // Avalanche has a separate, chain-specific deployment and is handled separately.
8
+ exports.METAMASK_DEFAULT_EVM_CHAINS = [
9
+ enums_1.ChainId.Ethereum,
10
+ enums_1.ChainId.Optimism,
11
+ enums_1.ChainId.BNB,
12
+ enums_1.ChainId.Polygon,
13
+ enums_1.ChainId.Base,
14
+ enums_1.ChainId.Arbitrum,
15
+ ];
16
+ //# sourceMappingURL=metamask-delegation-chains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metamask-delegation-chains.js","sourceRoot":"","sources":["../../../../src/whitelists/evm/metamask-delegation-chains.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAE5C,0FAA0F;AAC1F,wEAAwE;AACxE,iFAAiF;AACpE,QAAA,2BAA2B,GAAuB;IAC3D,eAAO,CAAC,QAAQ;IAChB,eAAO,CAAC,QAAQ;IAChB,eAAO,CAAC,GAAG;IACX,eAAO,CAAC,OAAO;IACf,eAAO,CAAC,IAAI;IACZ,eAAO,CAAC,QAAQ;CACV,CAAC"}
@@ -1,18 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PERMIT2_CONTRACTS = void 0;
3
+ exports.PERMIT2_CONTRACTS = exports.DEFAULT_PERMIT2_ADDRESS = void 0;
4
4
  const enums_1 = require("../../types/enums");
5
- const DEFAULT_PERMIT2_ADDRESS = "0x000000000022D473030F116dDEE9F6B43aC78BA3";
5
+ // Canonical Permit2 contract address (same on every chain it is deployed on).
6
+ exports.DEFAULT_PERMIT2_ADDRESS = "0x000000000022D473030F116dDEE9F6B43aC78BA3";
6
7
  exports.PERMIT2_CONTRACTS = {
7
- [enums_1.ChainId.Ethereum]: [DEFAULT_PERMIT2_ADDRESS],
8
- [enums_1.ChainId.BNB]: [DEFAULT_PERMIT2_ADDRESS],
9
- [enums_1.ChainId.Polygon]: [DEFAULT_PERMIT2_ADDRESS],
10
- [enums_1.ChainId.Arbitrum]: [DEFAULT_PERMIT2_ADDRESS],
11
- [enums_1.ChainId.Avalanche]: [DEFAULT_PERMIT2_ADDRESS],
12
- [enums_1.ChainId.Linea]: [DEFAULT_PERMIT2_ADDRESS],
13
- [enums_1.ChainId.Base]: [DEFAULT_PERMIT2_ADDRESS],
14
- [enums_1.ChainId.Optimism]: [DEFAULT_PERMIT2_ADDRESS],
15
- // Gnosis: no Permit2
16
- // Sonic: no Permit2
8
+ [enums_1.ChainId.Ethereum]: [exports.DEFAULT_PERMIT2_ADDRESS],
9
+ [enums_1.ChainId.Optimism]: [exports.DEFAULT_PERMIT2_ADDRESS],
10
+ [enums_1.ChainId.BNB]: [exports.DEFAULT_PERMIT2_ADDRESS],
11
+ [enums_1.ChainId.Polygon]: [exports.DEFAULT_PERMIT2_ADDRESS],
12
+ [enums_1.ChainId.Monad]: [exports.DEFAULT_PERMIT2_ADDRESS],
13
+ [enums_1.ChainId.MegaETH]: [exports.DEFAULT_PERMIT2_ADDRESS],
14
+ [enums_1.ChainId.Base]: [exports.DEFAULT_PERMIT2_ADDRESS],
15
+ [enums_1.ChainId.Arbitrum]: [exports.DEFAULT_PERMIT2_ADDRESS],
16
+ [enums_1.ChainId.Avalanche]: [exports.DEFAULT_PERMIT2_ADDRESS],
17
+ [enums_1.ChainId.Linea]: [exports.DEFAULT_PERMIT2_ADDRESS],
18
+ // No Permit2 deployment on:
19
+ // Cronos, Gnosis, Sonic, Flow, HyperEVM, Sei, Story, Injective, Mantle,
20
+ // Bob, Tron.
17
21
  };
18
22
  //# sourceMappingURL=permit2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permit2.js","sourceRoot":"","sources":["../../../../src/whitelists/evm/permit2.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAG5C,MAAM,uBAAuB,GAAG,4CAA4C,CAAC;AAEhE,QAAA,iBAAiB,GAAoB;IAC9C,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAG,CAAC,uBAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,GAAG,CAAC,EAAQ,CAAC,uBAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,OAAO,CAAC,EAAI,CAAC,uBAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAG,CAAC,uBAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,SAAS,CAAC,EAAE,CAAC,uBAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,KAAK,CAAC,EAAM,CAAC,uBAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,IAAI,CAAC,EAAO,CAAC,uBAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAG,CAAC,uBAAuB,CAAC;IAC9C,qBAAqB;IACrB,oBAAoB;CACd,CAAC"}
1
+ {"version":3,"file":"permit2.js","sourceRoot":"","sources":["../../../../src/whitelists/evm/permit2.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAG5C,8EAA8E;AACjE,QAAA,uBAAuB,GAAG,4CAA4C,CAAC;AAEvE,QAAA,iBAAiB,GAAoB;IAC9C,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAG,CAAC,+BAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAG,CAAC,+BAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,GAAG,CAAC,EAAQ,CAAC,+BAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,OAAO,CAAC,EAAI,CAAC,+BAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,KAAK,CAAC,EAAM,CAAC,+BAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,OAAO,CAAC,EAAI,CAAC,+BAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,IAAI,CAAC,EAAO,CAAC,+BAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAG,CAAC,+BAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,SAAS,CAAC,EAAE,CAAC,+BAAuB,CAAC;IAC9C,CAAC,eAAO,CAAC,KAAK,CAAC,EAAM,CAAC,+BAAuB,CAAC;IAC9C,4BAA4B;IAC5B,2EAA2E;IAC3E,gBAAgB;CACV,CAAC"}
@@ -2,18 +2,29 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WETH_CONTRACTS = void 0;
4
4
  const enums_1 = require("../../types/enums");
5
+ // Wrapped native token ("WETH") addresses for chains where deBridge intent contracts are deployed.
5
6
  exports.WETH_CONTRACTS = {
6
7
  [enums_1.ChainId.Ethereum]: ["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],
8
+ [enums_1.ChainId.Optimism]: ["0x4200000000000000000000000000000000000006"],
9
+ [enums_1.ChainId.Cronos]: ["0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23"],
7
10
  [enums_1.ChainId.BNB]: ["0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"],
11
+ [enums_1.ChainId.Gnosis]: ["0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1"],
8
12
  [enums_1.ChainId.Polygon]: ["0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"],
13
+ [enums_1.ChainId.Monad]: ["0x3bd359c1119da7da1d913d1c4d2b7c461115433a"],
14
+ [enums_1.ChainId.Sonic]: ["0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38"],
15
+ [enums_1.ChainId.Flow]: ["0xd3bf53dac106a0290b0483ecbc89d40fcc961f3e"],
16
+ [enums_1.ChainId.HyperEVM]: ["0x5555555555555555555555555555555555555555"],
17
+ [enums_1.ChainId.Sei]: ["0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7"],
18
+ [enums_1.ChainId.Story]: ["0x1514000000000000000000000000000000000000"],
19
+ [enums_1.ChainId.Injective]: ["0x0000000088827d2d103ee2d9A6b781773AE03FfB"],
20
+ [enums_1.ChainId.MegaETH]: ["0x4200000000000000000000000000000000000006"],
21
+ [enums_1.ChainId.Mantle]: ["0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8"],
22
+ [enums_1.ChainId.Base]: ["0x4200000000000000000000000000000000000006"],
9
23
  [enums_1.ChainId.Arbitrum]: ["0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"],
10
24
  [enums_1.ChainId.Avalanche]: ["0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"],
11
25
  [enums_1.ChainId.Linea]: ["0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f"],
12
- [enums_1.ChainId.Base]: ["0x4200000000000000000000000000000000000006"],
13
- [enums_1.ChainId.Optimism]: ["0x4200000000000000000000000000000000000006"],
14
- // Gnosis: no WETH
15
- [enums_1.ChainId.Sonic]: ["0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38"],
16
- // TODO: add other chains
26
+ [enums_1.ChainId.Bob]: ["0x4200000000000000000000000000000000000006"],
17
27
  [enums_1.ChainId.Tron]: ["0x891cdb91d149f23B1a45D9c5Ca78a88d0cB44C18"],
28
+ // No WETH deployment on: Neon, Metis
18
29
  };
19
30
  //# sourceMappingURL=weth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"weth.js","sourceRoot":"","sources":["../../../../src/whitelists/evm/weth.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAG/B,QAAA,cAAc,GAAoB;IAC3C,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAG,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,GAAG,CAAC,EAAQ,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,OAAO,CAAC,EAAI,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAG,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,SAAS,CAAC,EAAE,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,KAAK,CAAC,EAAM,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,IAAI,CAAC,EAAO,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAG,CAAC,4CAA4C,CAAC;IACnE,kBAAkB;IAClB,CAAC,eAAO,CAAC,KAAK,CAAC,EAAM,CAAC,4CAA4C,CAAC;IACnE,yBAAyB;IACzB,CAAC,eAAO,CAAC,IAAI,CAAC,EAAO,CAAC,4CAA4C,CAAC;CAC7D,CAAC"}
1
+ {"version":3,"file":"weth.js","sourceRoot":"","sources":["../../../../src/whitelists/evm/weth.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAG5C,mGAAmG;AAEtF,QAAA,cAAc,GAAoB;IAC3C,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAG,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAG,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,MAAM,CAAC,EAAK,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,GAAG,CAAC,EAAQ,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,MAAM,CAAC,EAAK,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,OAAO,CAAC,EAAI,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,KAAK,CAAC,EAAM,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,KAAK,CAAC,EAAM,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,IAAI,CAAC,EAAO,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAG,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,GAAG,CAAC,EAAQ,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,KAAK,CAAC,EAAM,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,SAAS,CAAC,EAAE,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,OAAO,CAAC,EAAI,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,MAAM,CAAC,EAAK,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,IAAI,CAAC,EAAO,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAG,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,SAAS,CAAC,EAAE,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,KAAK,CAAC,EAAM,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,GAAG,CAAC,EAAQ,CAAC,4CAA4C,CAAC;IACnE,CAAC,eAAO,CAAC,IAAI,CAAC,EAAO,CAAC,4CAA4C,CAAC;IACnE,qCAAqC;CAC/B,CAAC"}
@@ -9,7 +9,6 @@ const SIG_PREFIX_BY_ENVIRONMENT = {
9
9
  [validation_1.Environment.Prod]: "intents_program",
10
10
  [validation_1.Environment.Dubai]: "intents_program_dubai",
11
11
  [validation_1.Environment.Hanoi]: "intents_program_hanoi",
12
- [validation_1.Environment.Madrid]: "intents_program_madrid", // TODO: placeholder — update when known
13
12
  };
14
13
  // "intents" label — constant across all environments
15
14
  const INTENTS_LABEL = new Uint8Array([105, 110, 116, 101, 110, 116, 115]);
@@ -1 +1 @@
1
- {"version":3,"file":"intent-signature.js","sourceRoot":"","sources":["../../../../src/whitelists/solana/intent-signature.ts"],"names":[],"mappings":";;AAsBA,4DAWC;AAjCD,uDAAqD;AACrD,6CAA4C;AAE5C,qEAAqE;AACrE,8EAA8E;AAC9E,MAAM,yBAAyB,GAAgC;IAC3D,CAAC,wBAAW,CAAC,IAAI,CAAC,EAAE,iBAAiB;IACrC,CAAC,wBAAW,CAAC,KAAK,CAAC,EAAE,uBAAuB;IAC5C,CAAC,wBAAW,CAAC,KAAK,CAAC,EAAE,uBAAuB;IAC5C,CAAC,wBAAW,CAAC,MAAM,CAAC,EAAE,wBAAwB,EAAE,wCAAwC;CAC3F,CAAC;AAEF,qDAAqD;AACrD,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAS1E,SAAgB,wBAAwB,CAAC,WAAwB;IAC7D,MAAM,SAAS,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEnD,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,eAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAErE,gDAAgD;IAChD,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC;IAE3E,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"intent-signature.js","sourceRoot":"","sources":["../../../../src/whitelists/solana/intent-signature.ts"],"names":[],"mappings":";;AAqBA,4DAWC;AAhCD,uDAAqD;AACrD,6CAA4C;AAE5C,qEAAqE;AACrE,8EAA8E;AAC9E,MAAM,yBAAyB,GAAgC;IAC3D,CAAC,wBAAW,CAAC,IAAI,CAAC,EAAE,iBAAiB;IACrC,CAAC,wBAAW,CAAC,KAAK,CAAC,EAAE,uBAAuB;IAC5C,CAAC,wBAAW,CAAC,KAAK,CAAC,EAAE,uBAAuB;CAC/C,CAAC;AAEF,qDAAqD;AACrD,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAS1E,SAAgB,wBAAwB,CAAC,WAAwB;IAC7D,MAAM,SAAS,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEnD,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,eAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAErE,gDAAgD;IAChD,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC;IAE3E,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC;AAChF,CAAC"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SUBSCRIPTION_TO_CHAIN_ID = void 0;
4
4
  exports.resolveChainId = resolveChainId;
5
+ exports.resolveChainIdOrSelf = resolveChainIdOrSelf;
5
6
  const enums_1 = require("../types/enums");
6
7
  exports.SUBSCRIPTION_TO_CHAIN_ID = {
7
8
  [enums_1.SubscriptionId.Ethereum]: enums_1.ChainId.Ethereum,
@@ -33,4 +34,13 @@ function resolveChainId(subscriptionId) {
33
34
  // Cast is safe: unknown subscriptionIds simply return undefined
34
35
  return exports.SUBSCRIPTION_TO_CHAIN_ID[subscriptionId];
35
36
  }
37
+ // Best-effort resolver: returns the real `ChainId` for known subscriptions,
38
+ // otherwise falls back to the input value cast to `ChainId`. Use this only
39
+ // where chain-aware helpers (whose signature requires `ChainId`) need a
40
+ // best-effort answer; for callers that must surface unknown subscriptionIds
41
+ // to the user, call `resolveChainId` directly and emit `UnknownSubscriptionId`
42
+ // on `undefined`.
43
+ function resolveChainIdOrSelf(subscriptionId) {
44
+ return resolveChainId(subscriptionId) ?? subscriptionId;
45
+ }
36
46
  //# sourceMappingURL=subscription-to-chain-id.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscription-to-chain-id.js","sourceRoot":"","sources":["../../../src/whitelists/subscription-to-chain-id.ts"],"names":[],"mappings":";;;AA6BA,wCAGC;AAhCD,0CAAyD;AAE5C,QAAA,wBAAwB,GAAoC;IACrE,CAAC,sBAAc,CAAC,QAAQ,CAAC,EAAE,eAAO,CAAC,QAAQ;IAC3C,CAAC,sBAAc,CAAC,QAAQ,CAAC,EAAE,eAAO,CAAC,QAAQ;IAC3C,CAAC,sBAAc,CAAC,GAAG,CAAC,EAAE,eAAO,CAAC,GAAG;IACjC,CAAC,sBAAc,CAAC,OAAO,CAAC,EAAE,eAAO,CAAC,OAAO;IACzC,CAAC,sBAAc,CAAC,QAAQ,CAAC,EAAE,eAAO,CAAC,QAAQ;IAC3C,CAAC,sBAAc,CAAC,SAAS,CAAC,EAAE,eAAO,CAAC,SAAS;IAC7C,CAAC,sBAAc,CAAC,KAAK,CAAC,EAAE,eAAO,CAAC,KAAK;IACrC,CAAC,sBAAc,CAAC,IAAI,CAAC,EAAE,eAAO,CAAC,IAAI;IACnC,CAAC,sBAAc,CAAC,MAAM,CAAC,EAAE,eAAO,CAAC,MAAM;IACvC,CAAC,sBAAc,CAAC,IAAI,CAAC,EAAE,eAAO,CAAC,IAAI;IACnC,CAAC,sBAAc,CAAC,MAAM,CAAC,EAAE,eAAO,CAAC,MAAM;IACvC,CAAC,sBAAc,CAAC,KAAK,CAAC,EAAE,eAAO,CAAC,KAAK;IACrC,CAAC,sBAAc,CAAC,KAAK,CAAC,EAAE,eAAO,CAAC,KAAK;IACrC,CAAC,sBAAc,CAAC,KAAK,CAAC,EAAE,eAAO,CAAC,KAAK;IACrC,CAAC,sBAAc,CAAC,QAAQ,CAAC,EAAE,eAAO,CAAC,QAAQ;IAC3C,CAAC,sBAAc,CAAC,IAAI,CAAC,EAAE,eAAO,CAAC,IAAI;IACnC,CAAC,sBAAc,CAAC,GAAG,CAAC,EAAE,eAAO,CAAC,GAAG;IACjC,CAAC,sBAAc,CAAC,GAAG,CAAC,EAAE,eAAO,CAAC,GAAG;IACjC,CAAC,sBAAc,CAAC,MAAM,CAAC,EAAE,eAAO,CAAC,MAAM;IACvC,CAAC,sBAAc,CAAC,KAAK,CAAC,EAAE,eAAO,CAAC,KAAK;IACrC,CAAC,sBAAc,CAAC,SAAS,CAAC,EAAE,eAAO,CAAC,SAAS;IAC7C,CAAC,sBAAc,CAAC,OAAO,CAAC,EAAE,eAAO,CAAC,OAAO;IACzC,CAAC,sBAAc,CAAC,MAAM,CAAC,EAAE,eAAO,CAAC,MAAM;IACvC,CAAC,sBAAc,CAAC,IAAI,CAAC,EAAE,eAAO,CAAC,IAAI;CAC7B,CAAC;AAEX,SAAgB,cAAc,CAAC,cAAsB;IACjD,gEAAgE;IAChE,OAAO,gCAAwB,CAAC,cAAgC,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"subscription-to-chain-id.js","sourceRoot":"","sources":["../../../src/whitelists/subscription-to-chain-id.ts"],"names":[],"mappings":";;;AA6BA,wCAGC;AAQD,oDAEC;AA1CD,0CAAyD;AAE5C,QAAA,wBAAwB,GAAoC;IACrE,CAAC,sBAAc,CAAC,QAAQ,CAAC,EAAE,eAAO,CAAC,QAAQ;IAC3C,CAAC,sBAAc,CAAC,QAAQ,CAAC,EAAE,eAAO,CAAC,QAAQ;IAC3C,CAAC,sBAAc,CAAC,GAAG,CAAC,EAAE,eAAO,CAAC,GAAG;IACjC,CAAC,sBAAc,CAAC,OAAO,CAAC,EAAE,eAAO,CAAC,OAAO;IACzC,CAAC,sBAAc,CAAC,QAAQ,CAAC,EAAE,eAAO,CAAC,QAAQ;IAC3C,CAAC,sBAAc,CAAC,SAAS,CAAC,EAAE,eAAO,CAAC,SAAS;IAC7C,CAAC,sBAAc,CAAC,KAAK,CAAC,EAAE,eAAO,CAAC,KAAK;IACrC,CAAC,sBAAc,CAAC,IAAI,CAAC,EAAE,eAAO,CAAC,IAAI;IACnC,CAAC,sBAAc,CAAC,MAAM,CAAC,EAAE,eAAO,CAAC,MAAM;IACvC,CAAC,sBAAc,CAAC,IAAI,CAAC,EAAE,eAAO,CAAC,IAAI;IACnC,CAAC,sBAAc,CAAC,MAAM,CAAC,EAAE,eAAO,CAAC,MAAM;IACvC,CAAC,sBAAc,CAAC,KAAK,CAAC,EAAE,eAAO,CAAC,KAAK;IACrC,CAAC,sBAAc,CAAC,KAAK,CAAC,EAAE,eAAO,CAAC,KAAK;IACrC,CAAC,sBAAc,CAAC,KAAK,CAAC,EAAE,eAAO,CAAC,KAAK;IACrC,CAAC,sBAAc,CAAC,QAAQ,CAAC,EAAE,eAAO,CAAC,QAAQ;IAC3C,CAAC,sBAAc,CAAC,IAAI,CAAC,EAAE,eAAO,CAAC,IAAI;IACnC,CAAC,sBAAc,CAAC,GAAG,CAAC,EAAE,eAAO,CAAC,GAAG;IACjC,CAAC,sBAAc,CAAC,GAAG,CAAC,EAAE,eAAO,CAAC,GAAG;IACjC,CAAC,sBAAc,CAAC,MAAM,CAAC,EAAE,eAAO,CAAC,MAAM;IACvC,CAAC,sBAAc,CAAC,KAAK,CAAC,EAAE,eAAO,CAAC,KAAK;IACrC,CAAC,sBAAc,CAAC,SAAS,CAAC,EAAE,eAAO,CAAC,SAAS;IAC7C,CAAC,sBAAc,CAAC,OAAO,CAAC,EAAE,eAAO,CAAC,OAAO;IACzC,CAAC,sBAAc,CAAC,MAAM,CAAC,EAAE,eAAO,CAAC,MAAM;IACvC,CAAC,sBAAc,CAAC,IAAI,CAAC,EAAE,eAAO,CAAC,IAAI;CAC7B,CAAC;AAEX,SAAgB,cAAc,CAAC,cAAsB;IACjD,gEAAgE;IAChE,OAAO,gCAAwB,CAAC,cAAgC,CAAC,CAAC;AACtE,CAAC;AAED,4EAA4E;AAC5E,2EAA2E;AAC3E,wEAAwE;AACxE,4EAA4E;AAC5E,+EAA+E;AAC/E,kBAAkB;AAClB,SAAgB,oBAAoB,CAAC,cAAsB;IACvD,OAAO,cAAc,CAAC,cAAc,CAAC,IAAK,cAA0B,CAAC;AACzE,CAAC"}
@@ -1,11 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildSameAddressMap = buildSameAddressMap;
3
4
  exports.isWhitelisted = isWhitelisted;
4
5
  const address_1 = require("../helpers/address");
5
6
  const enums_1 = require("../types/enums");
7
+ // Builds a ChainAddressMap with the same address for every chain in the list.
8
+ // Useful for whitelists where one canonical address is deployed on many chains.
9
+ function buildSameAddressMap(chains, address) {
10
+ const map = {};
11
+ for (const chainId of chains) {
12
+ map[chainId] = [address];
13
+ }
14
+ return map;
15
+ }
6
16
  function isWhitelisted(map, chainId, address) {
7
- const addressFormat = (0, address_1.getAddressFormat)(chainId);
8
- if (addressFormat === address_1.AddressFormat.Solana) {
17
+ const engine = (0, address_1.getChainEngine)(chainId);
18
+ if (engine === enums_1.ChainEngine.Solana) {
9
19
  // This function is not supposed to be used for Solana addresses.
10
20
  // If it was called with a Solana address, it's likely a bug in the caller's code.
11
21
  throw new Error("isWhitelisted() does not support Solana addresses — compare directly");
@@ -22,7 +32,7 @@ function isWhitelisted(map, chainId, address) {
22
32
  const wildcard = map[enums_1.ChainId.Wildcard];
23
33
  if (!wildcard)
24
34
  return false;
25
- const evmAddress = addressFormat === address_1.AddressFormat.Tron ? (0, address_1.tronAddressToEvmHex)(address) : address;
35
+ const evmAddress = engine === enums_1.ChainEngine.Tron ? (0, address_1.tronAddressToEvmHex)(address) : address;
26
36
  const normalized = evmAddress.toLowerCase();
27
37
  return wildcard.some(a => a.toLowerCase() === normalized);
28
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/whitelists/types.ts"],"names":[],"mappings":";;AAoCA,sCA6BC;AAjED,gDAK4B;AAC5B,0CAAyC;AA8BzC,SAAgB,aAAa,CACzB,GAAoB,EACpB,OAAgB,EAChB,OAAe;IAEf,MAAM,aAAa,GAAG,IAAA,0BAAgB,EAAC,OAAO,CAAC,CAAC;IAEhD,IAAI,aAAa,KAAK,uBAAa,CAAC,MAAM,EAAE,CAAC;QACzC,iEAAiE;QACjE,kFAAkF;QAClF,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC5F,CAAC;IAED,sCAAsC;IACtC,yGAAyG;IACzG,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,aAAa,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,IAAA,0BAAgB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,0BAAgB,EAAC,OAAO,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;IAChF,CAAC;IAED,oCAAoC;IACpC,mEAAmE;IACnE,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,MAAM,UAAU,GAAG,aAAa,KAAK,uBAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,6BAAmB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACjG,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/whitelists/types.ts"],"names":[],"mappings":";;AAgBA,kDASC;AAoBD,sCA6BC;AA1ED,gDAI4B;AAC5B,0CAAsD;AAStD,8EAA8E;AAC9E,gFAAgF;AAChF,SAAgB,mBAAmB,CAC/B,MAA0B,EAC1B,OAAe;IAEf,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC3B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAoBD,SAAgB,aAAa,CACzB,GAAoB,EACpB,OAAgB,EAChB,OAAe;IAEf,MAAM,MAAM,GAAG,IAAA,wBAAc,EAAC,OAAO,CAAC,CAAC;IAEvC,IAAI,MAAM,KAAK,mBAAW,CAAC,MAAM,EAAE,CAAC;QAChC,iEAAiE;QACjE,kFAAkF;QAClF,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC5F,CAAC;IAED,sCAAsC;IACtC,yGAAyG;IACzG,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,aAAa,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,IAAA,0BAAgB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,0BAAgB,EAAC,OAAO,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;IAChF,CAAC;IAED,oCAAoC;IACpC,mEAAmE;IACnE,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,MAAM,UAAU,GAAG,MAAM,KAAK,mBAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,6BAAmB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACxF,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,21 +1,15 @@
1
1
  import { bytesToHex, zeroAddress } from "viem";
2
2
  import bs58 from "bs58";
3
- import { ChainId } from "../types/enums.js";
3
+ import { ChainEngine, ChainId } from "../types/enums.js";
4
4
  import { SYSTEM_PROGRAM } from "../whitelists/solana/index.js";
5
5
  // Tron-specific addresses (Base58Check format)
6
6
  export const TRON_NATIVE_ADDRESS = "T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb";
7
- export var AddressFormat;
8
- (function (AddressFormat) {
9
- AddressFormat[AddressFormat["EVM"] = 0] = "EVM";
10
- AddressFormat[AddressFormat["Tron"] = 1] = "Tron";
11
- AddressFormat[AddressFormat["Solana"] = 2] = "Solana";
12
- })(AddressFormat || (AddressFormat = {}));
13
- export function getAddressFormat(chainId) {
7
+ export function getChainEngine(chainId) {
14
8
  if (chainId === ChainId.Tron)
15
- return AddressFormat.Tron;
9
+ return ChainEngine.Tron;
16
10
  if (chainId === ChainId.Solana)
17
- return AddressFormat.Solana;
18
- return AddressFormat.EVM;
11
+ return ChainEngine.Solana;
12
+ return ChainEngine.EVM;
19
13
  }
20
14
  export function isTronAddress(address) {
21
15
  if (!address)
@@ -38,10 +32,26 @@ export function tronAddressToEvmHex(tronAddress) {
38
32
  const addressBytes = decoded.slice(1, 21);
39
33
  return bytesToHex(addressBytes);
40
34
  }
41
- // Normalizes address for comparison based on chain format
35
+ // Normalizes address for comparison based on chain engine
42
36
  export function normalizeAddress(chainId, address) {
43
- const format = getAddressFormat(chainId);
44
- if (format === AddressFormat.Tron || format === AddressFormat.Solana) {
37
+ const engine = getChainEngine(chainId);
38
+ return applyEngineNormalization(address, engine);
39
+ }
40
+ // Detects the chain engine from the address value alone (no chainId required).
41
+ // Useful when a chain is not fixed (e.g. destinationChainIds = "any").
42
+ export function detectChainEngine(address) {
43
+ if (address.startsWith("0x"))
44
+ return ChainEngine.EVM;
45
+ if (isTronAddress(address))
46
+ return ChainEngine.Tron;
47
+ return ChainEngine.Solana;
48
+ }
49
+ // Normalizes an address using only its own value — no chainId needed.
50
+ export function normalizeAddressByValue(address) {
51
+ return applyEngineNormalization(address, detectChainEngine(address));
52
+ }
53
+ function applyEngineNormalization(address, engine) {
54
+ if (engine === ChainEngine.Tron || engine === ChainEngine.Solana) {
45
55
  return address; // case-sensitive
46
56
  }
47
57
  return address.toLowerCase(); // EVM: case-insensitive
@@ -50,12 +60,33 @@ export function normalizeAddress(chainId, address) {
50
60
  export function addressEquals(chainId, a, b) {
51
61
  return normalizeAddress(chainId, a) === normalizeAddress(chainId, b);
52
62
  }
53
- // Checks if address is native token for the given chain
63
+ // Raw byte representation, used when an address flows into the intent ID
64
+ // keccak256 hash. EVM → 20 bytes, Tron → 20 bytes (after stripping 0x41
65
+ // prefix and checksum), Solana → 32 bytes (base58, no checksum).
66
+ export function addressToHex(chainId, address) {
67
+ return applyEngineToHex(address, getChainEngine(chainId));
68
+ }
69
+ // Same as addressToHex but infers the engine from the address value alone.
70
+ // Use when the chainId is unknown (e.g. destinationChainIds = "any").
71
+ export function addressToHexByValue(address) {
72
+ return applyEngineToHex(address, detectChainEngine(address));
73
+ }
74
+ function applyEngineToHex(address, engine) {
75
+ if (engine === ChainEngine.EVM) {
76
+ return address.toLowerCase();
77
+ }
78
+ if (engine === ChainEngine.Tron) {
79
+ return tronAddressToEvmHex(address);
80
+ }
81
+ return bytesToHex(bs58.decode(address));
82
+ }
83
+ // Checks if address is the native token for the given chain.
54
84
  export function isNativeToken(address, chainId) {
55
- if (chainId === ChainId.Tron) {
85
+ const engine = getChainEngine(chainId);
86
+ if (engine === ChainEngine.Tron) {
56
87
  return address === TRON_NATIVE_ADDRESS;
57
88
  }
58
- if (chainId === ChainId.Solana) {
89
+ if (engine === ChainEngine.Solana) {
59
90
  return address === SYSTEM_PROGRAM;
60
91
  }
61
92
  return address.toLowerCase() === zeroAddress;
@@ -1 +1 @@
1
- {"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/helpers/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,oCAAoC,CAAC;AAExE,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,+CAAG,CAAA;IACH,iDAAI,CAAA;IACJ,qDAAM,CAAA;AACV,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC5C,IAAI,OAAO,KAAK,OAAO,CAAC,IAAI;QAAE,OAAO,aAAa,CAAC,IAAI,CAAC;IACxD,IAAI,OAAO,KAAK,OAAO,CAAC,MAAM;QAAE,OAAO,aAAa,CAAC,MAAM,CAAC;IAC5D,OAAO,aAAa,CAAC,GAAG,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IACzC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACxC,4DAA4D;IAC5D,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,8DAA8D;AAC9D,4EAA4E;AAC5E,oEAAoE;AACpE,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzC,4DAA4D;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,OAAe;IAC7D,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,aAAa,CAAC,IAAI,IAAI,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;QACnE,OAAO,OAAO,CAAC,CAAC,iBAAiB;IACrC,CAAC;IACD,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,wBAAwB;AAC1D,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,CAAS,EAAE,CAAS;IAC/D,OAAO,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,OAAgB;IAC3D,IAAI,OAAO,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO,OAAO,KAAK,mBAAmB,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO,OAAO,KAAK,cAAc,CAAC;IACtC,CAAC;IACD,OAAO,OAAO,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/helpers/address.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { EvmActionKind } from "../types/index.js";
2
- // Transaction and Sign712MetaMask actions carry transactionCalls;
2
+ // Transaction and Sign712MetaMaskCaveats actions carry transactionCalls;
3
3
  // Sign712 (Permit/Permit2) and Sign7702Authorization do not.
4
4
  export function actionUsesTransactionCalls(action) {
5
5
  return action.type === EvmActionKind.Transaction
6
- || action.type === EvmActionKind.Sign712MetaMask;
6
+ || action.type === EvmActionKind.Sign712MetaMaskCaveats;
7
7
  }
8
8
  // For Transaction-type actions (non-AA), the call is in action.data directly.
9
- // For Sign712MetaMask-type actions (AA), the calls are in details.transactionCalls.
9
+ // For Sign712MetaMaskCaveats-type actions (AA), the calls are in details.transactionCalls.
10
10
  export function getTransactionCalls(action) {
11
11
  if (action.type === EvmActionKind.Transaction) {
12
12
  return [action.data];
@@ -1 +1 @@
1
- {"version":3,"file":"evm-action.js","sourceRoot":"","sources":["../../../src/helpers/evm-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhF,kEAAkE;AAClE,6DAA6D;AAC7D,MAAM,UAAU,0BAA0B,CAAC,MAAyB;IAChE,OAAO,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,WAAW;WACzC,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,eAAe,CAAC;AACzD,CAAC;AAED,8EAA8E;AAC9E,oFAAoF;AACpF,MAAM,UAAU,mBAAmB,CAAC,MAAyB;IACzD,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,IAA0B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"evm-action.js","sourceRoot":"","sources":["../../../src/helpers/evm-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,aAAa,EAAE,MAAM,UAAU,CAAC;AAEhF,yEAAyE;AACzE,6DAA6D;AAC7D,MAAM,UAAU,0BAA0B,CAAC,MAAyB;IAChE,OAAO,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,WAAW;WACzC,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,sBAAsB,CAAC;AAChE,CAAC;AAED,8EAA8E;AAC9E,2FAA2F;AAC3F,MAAM,UAAU,mBAAmB,CAAC,MAAyB;IACzD,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,IAA0B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { concatHex, encodeAbiParameters, zeroAddress } from "viem";
2
+ import { DlnHookType } from "../types/enums.js";
3
+ // Hook envelope: ABI-encoded tuple prefixed with a `uint8 version=1` byte.
4
+ // keccak256 of these bytes is what ends up in `intent.externalCallHash`.
5
+ const ENVELOPE_TUPLE = {
6
+ type: "tuple",
7
+ components: [
8
+ { name: "fallbackAddress", type: "address" },
9
+ { name: "executorAddress", type: "address" },
10
+ { name: "executionFee", type: "uint160" },
11
+ { name: "allowDelayedExecution", type: "bool" },
12
+ { name: "requireSuccessfullExecution", type: "bool" },
13
+ { name: "payload", type: "bytes" },
14
+ ],
15
+ };
16
+ const ENVELOPE_VERSION_PREFIX = "0x01";
17
+ export function packEvmHookV1(data) {
18
+ const tuple = encodeAbiParameters([ENVELOPE_TUPLE], [{
19
+ fallbackAddress: data.fallbackAddress,
20
+ executorAddress: data.target,
21
+ executionFee: BigInt(data.reward),
22
+ allowDelayedExecution: data.isNonAtomic,
23
+ requireSuccessfullExecution: data.isSuccessRequired,
24
+ payload: data.targetPayload,
25
+ }]);
26
+ return concatHex([ENVELOPE_VERSION_PREFIX, tuple]);
27
+ }
28
+ // `evm_transaction_call` wraps the user-supplied (to, gas, calldata) tuple in
29
+ // the same envelope, with fixed field values:
30
+ // executionFee = 0
31
+ // allowDelayedExecution = false
32
+ // requireSuccessfullExecution = true
33
+ // fallbackAddress = dstChainAuthorityAddress
34
+ // executorAddress = 0x0
35
+ export function packEvmTransactionCall(data, dstChainAuthorityAddress) {
36
+ const inner = encodeAbiParameters([{
37
+ type: "tuple",
38
+ components: [
39
+ { name: "to", type: "address" },
40
+ { name: "txGas", type: "uint32" },
41
+ { name: "callData", type: "bytes" },
42
+ ],
43
+ }], [{
44
+ to: data.to,
45
+ txGas: Number(data.gas ?? 0),
46
+ callData: data.calldata,
47
+ }]);
48
+ return packEvmHookV1({
49
+ fallbackAddress: dstChainAuthorityAddress,
50
+ target: zeroAddress,
51
+ reward: "0",
52
+ isNonAtomic: false,
53
+ isSuccessRequired: true,
54
+ targetPayload: inner,
55
+ });
56
+ }
57
+ // Parses a request trade's `dlnHook` JSON and returns the bytes the API
58
+ // hashes into `intent.externalCallHash`. Returns `undefined` when the trade
59
+ // has no hook. Throws on unknown / Solana hook types — Solana hooks live in
60
+ // the response under their own validator and never feed into this hash.
61
+ export function serializeDlnHook(trade) {
62
+ if (!trade.dlnHook)
63
+ return undefined;
64
+ const hook = JSON.parse(trade.dlnHook);
65
+ switch (hook.type) {
66
+ case DlnHookType.EvmHookV1:
67
+ return packEvmHookV1(hook.data);
68
+ case DlnHookType.EvmTransactionCall: {
69
+ if (trade.dstChainAuthorityAddress === undefined) {
70
+ throw new Error("evm_transaction_call hook requires dstChainAuthorityAddress on the trade");
71
+ }
72
+ return packEvmTransactionCall(hook.data, trade.dstChainAuthorityAddress);
73
+ }
74
+ case DlnHookType.SolanaSerializedInstructions:
75
+ throw new Error("Solana hook types are not folded into externalCallHash");
76
+ default: {
77
+ const exhaustive = hook;
78
+ throw new Error(`Unknown dlnHook type: ${JSON.stringify(exhaustive)}`);
79
+ }
80
+ }
81
+ }
82
+ //# sourceMappingURL=evm-dln-hook-pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evm-dln-hook-pack.js","sourceRoot":"","sources":["../../../src/helpers/evm-dln-hook-pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,2EAA2E;AAC3E,yEAAyE;AACzE,MAAM,cAAc,GAAG;IACnB,IAAI,EAAE,OAAO;IACb,UAAU,EAAE;QACR,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE;QAC5C,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE;QAC5C,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;QACzC,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE;QAC/C,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,MAAM,EAAE;QACrD,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;KACrC;CACK,CAAC;AAEX,MAAM,uBAAuB,GAAkB,MAAM,CAAC;AAsBtD,MAAM,UAAU,aAAa,CAAC,IAAmB;IAC7C,MAAM,KAAK,GAAG,mBAAmB,CAC7B,CAAC,cAAc,CAAC,EAChB,CAAC;YACG,eAAe,EAAE,IAAI,CAAC,eAAgC;YACtD,eAAe,EAAE,IAAI,CAAC,MAAuB;YAC7C,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACjC,qBAAqB,EAAE,IAAI,CAAC,WAAW;YACvC,2BAA2B,EAAE,IAAI,CAAC,iBAAiB;YACnD,OAAO,EAAE,IAAI,CAAC,aAA8B;SAC/C,CAAC,CACL,CAAC;IACF,OAAO,SAAS,CAAC,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,8EAA8E;AAC9E,8CAA8C;AAC9C,qBAAqB;AACrB,kCAAkC;AAClC,uCAAuC;AACvC,+CAA+C;AAC/C,0BAA0B;AAC1B,MAAM,UAAU,sBAAsB,CAClC,IAA4B,EAC5B,wBAAgC;IAEhC,MAAM,KAAK,GAAG,mBAAmB,CAC7B,CAAC;YACG,IAAI,EAAE,OAAO;YACb,UAAU,EAAE;gBACR,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC/B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACjC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;aACtC;SACJ,CAAC,EACF,CAAC;YACG,EAAE,EAAE,IAAI,CAAC,EAAmB;YAC5B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAyB;SAC3C,CAAC,CACL,CAAC;IAEF,OAAO,aAAa,CAAC;QACjB,eAAe,EAAE,wBAAwB;QACzC,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,KAAK;QAClB,iBAAiB,EAAE,IAAI;QACvB,aAAa,EAAE,KAAK;KACvB,CAAC,CAAC;AACP,CAAC;AAED,wEAAwE;AACxE,4EAA4E;AAC5E,4EAA4E;AAC5E,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAErC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;IAEtD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC,SAAS;YACtB,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAClC,IAAI,KAAK,CAAC,wBAAwB,KAAK,SAAS,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CACX,0EAA0E,CAC7E,CAAC;YACN,CAAC;YACD,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,WAAW,CAAC,4BAA4B;YACzC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC9E,OAAO,CAAC,CAAC,CAAC;YACN,MAAM,UAAU,GAAU,IAAI,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { decodeTransferCalldata } from "./evm-calldata.js";
2
+ import { isNativeToken } from "./evm-token.js";
3
+ import { normalizeAddress } from "./address.js";
4
+ // Validates an EVM `{to, data, value}` triplet that is expected to encode a
5
+ // gas-compensation transfer. `groups` are the gas-compensation groups
6
+ // associated with this triplet's source (already filtered to the relevant
7
+ // `(chainId, sender)` pair by the caller).
8
+ //
9
+ // Classification: dispatched on `triplet.data`:
10
+ // - `data === "0x"` → native compensation (data="0x", value > 0,
11
+ // and at least one group must carry a native token).
12
+ // - otherwise → ERC20 compensation (`triplet.to` matches some non-native
13
+ // group's tokenAddress, data is `transfer(...)`, value === "0").
14
+ export function validateEvmGasCompensationTx(triplet, groups, realChainId, basePath, codes) {
15
+ if (triplet.data === "0x") {
16
+ return validateNativeCompensation(triplet, groups, basePath, codes);
17
+ }
18
+ return validateErc20Compensation(triplet, groups, realChainId, basePath, codes);
19
+ }
20
+ function validateNativeCompensation(triplet, groups, basePath, codes) {
21
+ const violations = [];
22
+ // CRITICAL: data="0x" implies native — must have at least one native group.
23
+ const hasNativeGroup = groups.some(g => isNativeToken(g.tokenAddress, g.realChainId));
24
+ if (!hasNativeGroup) {
25
+ violations.push({
26
+ code: codes.dataInvalid,
27
+ message: "data=\"0x\" implies native compensation but no group has a native token",
28
+ path: `${basePath}.data`,
29
+ expected: groups.map(g => g.tokenAddress),
30
+ actual: "0x",
31
+ });
32
+ }
33
+ // HIGH: native compensation value must parse and be > 0.
34
+ violations.push(...validateNativeValue(triplet.value, basePath, codes));
35
+ return violations;
36
+ }
37
+ function validateNativeValue(rawValue, basePath, codes) {
38
+ try {
39
+ if (BigInt(rawValue) <= 0n) {
40
+ return [{
41
+ code: codes.valueInvalid,
42
+ message: "native compensation must have value > 0",
43
+ path: `${basePath}.value`,
44
+ actual: rawValue,
45
+ }];
46
+ }
47
+ return [];
48
+ }
49
+ catch (error) {
50
+ return [{
51
+ code: codes.valueInvalid,
52
+ message: "native compensation value is not a valid number",
53
+ path: `${basePath}.value`,
54
+ actual: rawValue,
55
+ details: error,
56
+ }];
57
+ }
58
+ }
59
+ function validateErc20Compensation(triplet, groups, realChainId, basePath, codes) {
60
+ const violations = [];
61
+ // CRITICAL: `to` must equal some non-native group's tokenAddress.
62
+ const erc20Groups = groups.filter(g => !isNativeToken(g.tokenAddress, g.realChainId));
63
+ const matches = erc20Groups.some(g => normalizeAddress(g.realChainId, g.tokenAddress)
64
+ === normalizeAddress(realChainId, triplet.to));
65
+ if (!matches) {
66
+ violations.push({
67
+ code: codes.toMismatch,
68
+ message: "ERC20 compensation `to` does not match any group's tokenAddress",
69
+ path: `${basePath}.to`,
70
+ expected: erc20Groups.map(g => g.tokenAddress),
71
+ actual: triplet.to,
72
+ });
73
+ }
74
+ // CRITICAL: data must be a valid ERC20 transfer calldata.
75
+ try {
76
+ decodeTransferCalldata(triplet.data);
77
+ }
78
+ catch (error) {
79
+ violations.push({
80
+ code: codes.dataInvalid,
81
+ message: "ERC20 compensation data is not a valid transfer calldata",
82
+ path: `${basePath}.data`,
83
+ actual: triplet.data,
84
+ details: error,
85
+ });
86
+ }
87
+ // HIGH: ERC20 compensation must have value="0".
88
+ if (triplet.value !== "0") {
89
+ violations.push({
90
+ code: codes.valueInvalid,
91
+ message: "ERC20 compensation must have value=\"0\"",
92
+ path: `${basePath}.value`,
93
+ expected: "0",
94
+ actual: triplet.value,
95
+ });
96
+ }
97
+ return violations;
98
+ }
99
+ //# sourceMappingURL=evm-gas-compensation-tx.js.map