@debridge-finance/borderless-validation-sdk 0.0.6 → 0.0.8

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 (283) hide show
  1. package/dist/cjs/helpers/eip712-types.js +29 -0
  2. package/dist/cjs/helpers/eip712-types.js.map +1 -0
  3. package/dist/cjs/helpers/evm-action.js +18 -2
  4. package/dist/cjs/helpers/evm-action.js.map +1 -1
  5. package/dist/cjs/helpers/evm-dln-hook-pack.js +8 -6
  6. package/dist/cjs/helpers/evm-dln-hook-pack.js.map +1 -1
  7. package/dist/cjs/helpers/evm-gas-compensation-tx.js +26 -7
  8. package/dist/cjs/helpers/evm-gas-compensation-tx.js.map +1 -1
  9. package/dist/cjs/helpers/evm-intent-id.js +6 -5
  10. package/dist/cjs/helpers/evm-intent-id.js.map +1 -1
  11. package/dist/cjs/helpers/evm-token.js +1 -1
  12. package/dist/cjs/helpers/evm-token.js.map +1 -1
  13. package/dist/cjs/helpers/evm-trade-amounts.js +2 -1
  14. package/dist/cjs/helpers/evm-trade-amounts.js.map +1 -1
  15. package/dist/cjs/helpers/expected-delegate.js +10 -11
  16. package/dist/cjs/helpers/expected-delegate.js.map +1 -1
  17. package/dist/cjs/helpers/gas-compensation.js +3 -0
  18. package/dist/cjs/helpers/gas-compensation.js.map +1 -1
  19. package/dist/cjs/helpers/hex.js +35 -0
  20. package/dist/cjs/helpers/hex.js.map +1 -1
  21. package/dist/cjs/helpers/integer.js +10 -0
  22. package/dist/cjs/helpers/integer.js.map +1 -0
  23. package/dist/cjs/helpers/placeholder.js +99 -4
  24. package/dist/cjs/helpers/placeholder.js.map +1 -1
  25. package/dist/cjs/helpers/solana-intent-id.js +6 -5
  26. package/dist/cjs/helpers/solana-intent-id.js.map +1 -1
  27. package/dist/cjs/helpers/synthetic-native-wrap.js +56 -0
  28. package/dist/cjs/helpers/synthetic-native-wrap.js.map +1 -0
  29. package/dist/cjs/types/enums.js +2 -0
  30. package/dist/cjs/types/enums.js.map +1 -1
  31. package/dist/cjs/types/request.js +25 -5
  32. package/dist/cjs/types/request.js.map +1 -1
  33. package/dist/cjs/types/response.js +10 -3
  34. package/dist/cjs/types/response.js.map +1 -1
  35. package/dist/cjs/types/validation.js +28 -1
  36. package/dist/cjs/types/validation.js.map +1 -1
  37. package/dist/cjs/validations/accumulative-token.js +5 -4
  38. package/dist/cjs/validations/accumulative-token.js.map +1 -1
  39. package/dist/cjs/validations/compensation-hook.js +14 -4
  40. package/dist/cjs/validations/compensation-hook.js.map +1 -1
  41. package/dist/cjs/validations/dln-metadata.js +63 -0
  42. package/dist/cjs/validations/dln-metadata.js.map +1 -0
  43. package/dist/cjs/validations/evm-caveats.js +12 -11
  44. package/dist/cjs/validations/evm-caveats.js.map +1 -1
  45. package/dist/cjs/validations/evm-op-budget.js +162 -53
  46. package/dist/cjs/validations/evm-op-budget.js.map +1 -1
  47. package/dist/cjs/validations/evm-op-hook.js +67 -26
  48. package/dist/cjs/validations/evm-op-hook.js.map +1 -1
  49. package/dist/cjs/validations/evm-op-wrap.js +29 -26
  50. package/dist/cjs/validations/evm-op-wrap.js.map +1 -1
  51. package/dist/cjs/validations/evm-permit.js +143 -42
  52. package/dist/cjs/validations/evm-permit.js.map +1 -1
  53. package/dist/cjs/validations/evm-permit2.js +32 -39
  54. package/dist/cjs/validations/evm-permit2.js.map +1 -1
  55. package/dist/cjs/validations/evm-required-actions.js +17 -9
  56. package/dist/cjs/validations/evm-required-actions.js.map +1 -1
  57. package/dist/cjs/validations/evm-sign712-metamask.js +126 -3
  58. package/dist/cjs/validations/evm-sign712-metamask.js.map +1 -1
  59. package/dist/cjs/validations/evm-sign712-shared.js +4 -5
  60. package/dist/cjs/validations/evm-sign712-shared.js.map +1 -1
  61. package/dist/cjs/validations/evm-sign712.js +3 -23
  62. package/dist/cjs/validations/evm-sign712.js.map +1 -1
  63. package/dist/cjs/validations/evm-sign7702.js +4 -5
  64. package/dist/cjs/validations/evm-sign7702.js.map +1 -1
  65. package/dist/cjs/validations/external-call.js +330 -0
  66. package/dist/cjs/validations/external-call.js.map +1 -0
  67. package/dist/cjs/validations/hooks-common.js +279 -25
  68. package/dist/cjs/validations/hooks-common.js.map +1 -1
  69. package/dist/cjs/validations/intent-tokens.js +23 -15
  70. package/dist/cjs/validations/intent-tokens.js.map +1 -1
  71. package/dist/cjs/validations/intent.js +194 -72
  72. package/dist/cjs/validations/intent.js.map +1 -1
  73. package/dist/cjs/validations/ptp.js +7 -6
  74. package/dist/cjs/validations/ptp.js.map +1 -1
  75. package/dist/cjs/validations/required-actions.js +6 -4
  76. package/dist/cjs/validations/required-actions.js.map +1 -1
  77. package/dist/cjs/validations/solana-hook.js +74 -9
  78. package/dist/cjs/validations/solana-hook.js.map +1 -1
  79. package/dist/cjs/validations/solana-op-budget.js +71 -2
  80. package/dist/cjs/validations/solana-op-budget.js.map +1 -1
  81. package/dist/cjs/validations/solana-op-wrap.js +32 -4
  82. package/dist/cjs/validations/solana-op-wrap.js.map +1 -1
  83. package/dist/cjs/validations/solana-sign.js +31 -15
  84. package/dist/cjs/validations/solana-sign.js.map +1 -1
  85. package/dist/cjs/validations/solana-transaction.js +29 -2
  86. package/dist/cjs/validations/solana-transaction.js.map +1 -1
  87. package/dist/cjs/validations/total-dst-amount.js +36 -22
  88. package/dist/cjs/validations/total-dst-amount.js.map +1 -1
  89. package/dist/cjs/validations/trade-grouping.js +67 -31
  90. package/dist/cjs/validations/trade-grouping.js.map +1 -1
  91. package/dist/cjs/validations/trade-matching.js +112 -0
  92. package/dist/cjs/validations/trade-matching.js.map +1 -0
  93. package/dist/cjs/validations/trades.js +53 -52
  94. package/dist/cjs/validations/trades.js.map +1 -1
  95. package/dist/cjs/validator.js +19 -7
  96. package/dist/cjs/validator.js.map +1 -1
  97. package/dist/cjs/whitelists/environment-config.js +65 -16
  98. package/dist/cjs/whitelists/environment-config.js.map +1 -1
  99. package/dist/cjs/whitelists/solana/intent-signature.js +7 -2
  100. package/dist/cjs/whitelists/solana/intent-signature.js.map +1 -1
  101. package/dist/cjs/whitelists/types.js.map +1 -1
  102. package/dist/esm/helpers/eip712-types.js +26 -0
  103. package/dist/esm/helpers/eip712-types.js.map +1 -0
  104. package/dist/esm/helpers/evm-action.js +16 -2
  105. package/dist/esm/helpers/evm-action.js.map +1 -1
  106. package/dist/esm/helpers/evm-dln-hook-pack.js +8 -6
  107. package/dist/esm/helpers/evm-dln-hook-pack.js.map +1 -1
  108. package/dist/esm/helpers/evm-gas-compensation-tx.js +26 -7
  109. package/dist/esm/helpers/evm-gas-compensation-tx.js.map +1 -1
  110. package/dist/esm/helpers/evm-intent-id.js +6 -5
  111. package/dist/esm/helpers/evm-intent-id.js.map +1 -1
  112. package/dist/esm/helpers/evm-token.js +3 -3
  113. package/dist/esm/helpers/evm-token.js.map +1 -1
  114. package/dist/esm/helpers/evm-trade-amounts.js +2 -1
  115. package/dist/esm/helpers/evm-trade-amounts.js.map +1 -1
  116. package/dist/esm/helpers/expected-delegate.js +10 -11
  117. package/dist/esm/helpers/expected-delegate.js.map +1 -1
  118. package/dist/esm/helpers/gas-compensation.js +3 -0
  119. package/dist/esm/helpers/gas-compensation.js.map +1 -1
  120. package/dist/esm/helpers/hex.js +29 -0
  121. package/dist/esm/helpers/hex.js.map +1 -1
  122. package/dist/esm/helpers/integer.js +7 -0
  123. package/dist/esm/helpers/integer.js.map +1 -0
  124. package/dist/esm/helpers/placeholder.js +98 -4
  125. package/dist/esm/helpers/placeholder.js.map +1 -1
  126. package/dist/esm/helpers/solana-intent-id.js +6 -5
  127. package/dist/esm/helpers/solana-intent-id.js.map +1 -1
  128. package/dist/esm/helpers/synthetic-native-wrap.js +52 -0
  129. package/dist/esm/helpers/synthetic-native-wrap.js.map +1 -0
  130. package/dist/esm/types/enums.js +2 -0
  131. package/dist/esm/types/enums.js.map +1 -1
  132. package/dist/esm/types/request.js +23 -4
  133. package/dist/esm/types/request.js.map +1 -1
  134. package/dist/esm/types/response.js +10 -3
  135. package/dist/esm/types/response.js.map +1 -1
  136. package/dist/esm/types/validation.js +28 -1
  137. package/dist/esm/types/validation.js.map +1 -1
  138. package/dist/esm/validations/accumulative-token.js +5 -4
  139. package/dist/esm/validations/accumulative-token.js.map +1 -1
  140. package/dist/esm/validations/compensation-hook.js +14 -4
  141. package/dist/esm/validations/compensation-hook.js.map +1 -1
  142. package/dist/esm/validations/dln-metadata.js +56 -0
  143. package/dist/esm/validations/dln-metadata.js.map +1 -0
  144. package/dist/esm/validations/evm-caveats.js +12 -11
  145. package/dist/esm/validations/evm-caveats.js.map +1 -1
  146. package/dist/esm/validations/evm-op-budget.js +162 -54
  147. package/dist/esm/validations/evm-op-budget.js.map +1 -1
  148. package/dist/esm/validations/evm-op-hook.js +68 -27
  149. package/dist/esm/validations/evm-op-hook.js.map +1 -1
  150. package/dist/esm/validations/evm-op-wrap.js +30 -27
  151. package/dist/esm/validations/evm-op-wrap.js.map +1 -1
  152. package/dist/esm/validations/evm-permit.js +144 -43
  153. package/dist/esm/validations/evm-permit.js.map +1 -1
  154. package/dist/esm/validations/evm-permit2.js +33 -40
  155. package/dist/esm/validations/evm-permit2.js.map +1 -1
  156. package/dist/esm/validations/evm-required-actions.js +18 -10
  157. package/dist/esm/validations/evm-required-actions.js.map +1 -1
  158. package/dist/esm/validations/evm-sign712-metamask.js +126 -3
  159. package/dist/esm/validations/evm-sign712-metamask.js.map +1 -1
  160. package/dist/esm/validations/evm-sign712-shared.js +4 -5
  161. package/dist/esm/validations/evm-sign712-shared.js.map +1 -1
  162. package/dist/esm/validations/evm-sign712.js +3 -23
  163. package/dist/esm/validations/evm-sign712.js.map +1 -1
  164. package/dist/esm/validations/evm-sign7702.js +4 -5
  165. package/dist/esm/validations/evm-sign7702.js.map +1 -1
  166. package/dist/esm/validations/external-call.js +325 -0
  167. package/dist/esm/validations/external-call.js.map +1 -0
  168. package/dist/esm/validations/hooks-common.js +280 -26
  169. package/dist/esm/validations/hooks-common.js.map +1 -1
  170. package/dist/esm/validations/intent-tokens.js +23 -15
  171. package/dist/esm/validations/intent-tokens.js.map +1 -1
  172. package/dist/esm/validations/intent.js +197 -75
  173. package/dist/esm/validations/intent.js.map +1 -1
  174. package/dist/esm/validations/ptp.js +7 -6
  175. package/dist/esm/validations/ptp.js.map +1 -1
  176. package/dist/esm/validations/required-actions.js +7 -5
  177. package/dist/esm/validations/required-actions.js.map +1 -1
  178. package/dist/esm/validations/solana-hook.js +74 -9
  179. package/dist/esm/validations/solana-hook.js.map +1 -1
  180. package/dist/esm/validations/solana-op-budget.js +71 -2
  181. package/dist/esm/validations/solana-op-budget.js.map +1 -1
  182. package/dist/esm/validations/solana-op-wrap.js +32 -4
  183. package/dist/esm/validations/solana-op-wrap.js.map +1 -1
  184. package/dist/esm/validations/solana-sign.js +31 -15
  185. package/dist/esm/validations/solana-sign.js.map +1 -1
  186. package/dist/esm/validations/solana-transaction.js +29 -2
  187. package/dist/esm/validations/solana-transaction.js.map +1 -1
  188. package/dist/esm/validations/total-dst-amount.js +36 -22
  189. package/dist/esm/validations/total-dst-amount.js.map +1 -1
  190. package/dist/esm/validations/trade-grouping.js +67 -31
  191. package/dist/esm/validations/trade-grouping.js.map +1 -1
  192. package/dist/esm/validations/trade-matching.js +109 -0
  193. package/dist/esm/validations/trade-matching.js.map +1 -0
  194. package/dist/esm/validations/trades.js +53 -52
  195. package/dist/esm/validations/trades.js.map +1 -1
  196. package/dist/esm/validator.js +19 -7
  197. package/dist/esm/validator.js.map +1 -1
  198. package/dist/esm/whitelists/environment-config.js +65 -16
  199. package/dist/esm/whitelists/environment-config.js.map +1 -1
  200. package/dist/esm/whitelists/solana/intent-signature.js +7 -2
  201. package/dist/esm/whitelists/solana/intent-signature.js.map +1 -1
  202. package/dist/esm/whitelists/types.js.map +1 -1
  203. package/dist/types/helpers/eip712-types.d.ts +7 -0
  204. package/dist/types/helpers/eip712-types.d.ts.map +1 -0
  205. package/dist/types/helpers/evm-action.d.ts +6 -0
  206. package/dist/types/helpers/evm-action.d.ts.map +1 -1
  207. package/dist/types/helpers/evm-dln-hook-pack.d.ts.map +1 -1
  208. package/dist/types/helpers/evm-gas-compensation-tx.d.ts +3 -1
  209. package/dist/types/helpers/evm-gas-compensation-tx.d.ts.map +1 -1
  210. package/dist/types/helpers/evm-intent-id.d.ts.map +1 -1
  211. package/dist/types/helpers/evm-token.d.ts.map +1 -1
  212. package/dist/types/helpers/evm-trade-amounts.d.ts.map +1 -1
  213. package/dist/types/helpers/expected-delegate.d.ts.map +1 -1
  214. package/dist/types/helpers/gas-compensation.d.ts.map +1 -1
  215. package/dist/types/helpers/hex.d.ts +6 -0
  216. package/dist/types/helpers/hex.d.ts.map +1 -1
  217. package/dist/types/helpers/integer.d.ts +2 -0
  218. package/dist/types/helpers/integer.d.ts.map +1 -0
  219. package/dist/types/helpers/placeholder.d.ts +3 -1
  220. package/dist/types/helpers/placeholder.d.ts.map +1 -1
  221. package/dist/types/helpers/solana-intent-id.d.ts.map +1 -1
  222. package/dist/types/helpers/synthetic-native-wrap.d.ts +4 -0
  223. package/dist/types/helpers/synthetic-native-wrap.d.ts.map +1 -0
  224. package/dist/types/types/enums.d.ts +4 -2
  225. package/dist/types/types/enums.d.ts.map +1 -1
  226. package/dist/types/types/request.d.ts +83 -6
  227. package/dist/types/types/request.d.ts.map +1 -1
  228. package/dist/types/types/response.d.ts +95 -12
  229. package/dist/types/types/response.d.ts.map +1 -1
  230. package/dist/types/types/validation.d.ts +29 -1
  231. package/dist/types/types/validation.d.ts.map +1 -1
  232. package/dist/types/validations/accumulative-token.d.ts.map +1 -1
  233. package/dist/types/validations/compensation-hook.d.ts +2 -1
  234. package/dist/types/validations/compensation-hook.d.ts.map +1 -1
  235. package/dist/types/validations/dln-metadata.d.ts +7 -0
  236. package/dist/types/validations/dln-metadata.d.ts.map +1 -0
  237. package/dist/types/validations/evm-caveats.d.ts +2 -1
  238. package/dist/types/validations/evm-caveats.d.ts.map +1 -1
  239. package/dist/types/validations/evm-op-budget.d.ts +8 -0
  240. package/dist/types/validations/evm-op-budget.d.ts.map +1 -1
  241. package/dist/types/validations/evm-op-hook.d.ts +2 -1
  242. package/dist/types/validations/evm-op-hook.d.ts.map +1 -1
  243. package/dist/types/validations/evm-op-wrap.d.ts.map +1 -1
  244. package/dist/types/validations/evm-permit.d.ts.map +1 -1
  245. package/dist/types/validations/evm-permit2.d.ts.map +1 -1
  246. package/dist/types/validations/evm-required-actions.d.ts +1 -1
  247. package/dist/types/validations/evm-required-actions.d.ts.map +1 -1
  248. package/dist/types/validations/evm-sign712-metamask.d.ts +2 -1
  249. package/dist/types/validations/evm-sign712-metamask.d.ts.map +1 -1
  250. package/dist/types/validations/evm-sign712-shared.d.ts +3 -2
  251. package/dist/types/validations/evm-sign712-shared.d.ts.map +1 -1
  252. package/dist/types/validations/evm-sign712.d.ts.map +1 -1
  253. package/dist/types/validations/evm-sign7702.d.ts +3 -2
  254. package/dist/types/validations/evm-sign7702.d.ts.map +1 -1
  255. package/dist/types/validations/external-call.d.ts +15 -0
  256. package/dist/types/validations/external-call.d.ts.map +1 -0
  257. package/dist/types/validations/hooks-common.d.ts +5 -1
  258. package/dist/types/validations/hooks-common.d.ts.map +1 -1
  259. package/dist/types/validations/intent-tokens.d.ts.map +1 -1
  260. package/dist/types/validations/intent.d.ts +1 -1
  261. package/dist/types/validations/intent.d.ts.map +1 -1
  262. package/dist/types/validations/ptp.d.ts.map +1 -1
  263. package/dist/types/validations/required-actions.d.ts +1 -1
  264. package/dist/types/validations/required-actions.d.ts.map +1 -1
  265. package/dist/types/validations/solana-hook.d.ts +2 -1
  266. package/dist/types/validations/solana-hook.d.ts.map +1 -1
  267. package/dist/types/validations/solana-op-budget.d.ts.map +1 -1
  268. package/dist/types/validations/solana-op-wrap.d.ts.map +1 -1
  269. package/dist/types/validations/solana-transaction.d.ts.map +1 -1
  270. package/dist/types/validations/total-dst-amount.d.ts.map +1 -1
  271. package/dist/types/validations/trade-grouping.d.ts +2 -1
  272. package/dist/types/validations/trade-grouping.d.ts.map +1 -1
  273. package/dist/types/validations/trade-matching.d.ts +13 -0
  274. package/dist/types/validations/trade-matching.d.ts.map +1 -0
  275. package/dist/types/validations/trades.d.ts +2 -1
  276. package/dist/types/validations/trades.d.ts.map +1 -1
  277. package/dist/types/validator.d.ts.map +1 -1
  278. package/dist/types/whitelists/environment-config.d.ts.map +1 -1
  279. package/dist/types/whitelists/solana/intent-signature.d.ts +1 -0
  280. package/dist/types/whitelists/solana/intent-signature.d.ts.map +1 -1
  281. package/dist/types/whitelists/types.d.ts +9 -0
  282. package/dist/types/whitelists/types.d.ts.map +1 -1
  283. package/package.json +1 -1
@@ -4,7 +4,6 @@ exports.validateSign7702Action = validateSign7702Action;
4
4
  exports.validateSign7702Actions = validateSign7702Actions;
5
5
  const types_1 = require("../types");
6
6
  const types_2 = require("../whitelists/types");
7
- const evm_1 = require("../whitelists/evm");
8
7
  // =============================================
9
8
  // Sign7702Authorization constraints
10
9
  // =============================================
@@ -13,7 +12,7 @@ const evm_1 = require("../whitelists/evm");
13
12
  // (`validateHookSign7702Binding`); both wrap this with their scope-specific
14
13
  // constraints (intent: position+duplicate; hook: type↔actions binding +
15
14
  // `validateHookDelegateOp` for position/count).
16
- function validateSign7702Action(action, actionPath, realChainId) {
15
+ function validateSign7702Action(action, actionPath, realChainId, envConfig) {
17
16
  const violations = [];
18
17
  // HIGH: actions[] must contain exactly one element — Delegate
19
18
  const ops = action.actions;
@@ -30,7 +29,7 @@ function validateSign7702Action(action, actionPath, realChainId) {
30
29
  const data = action.data;
31
30
  const contractAddress = data?.contractAddress;
32
31
  if (!contractAddress
33
- || !(0, types_2.isWhitelisted)(evm_1.EIP7702_DELEGATION_CONTRACTS, realChainId, contractAddress)) {
32
+ || !(0, types_2.isWhitelisted)(envConfig.eip7702DelegationContracts, realChainId, contractAddress)) {
34
33
  violations.push({
35
34
  code: types_1.ViolationCode.Sign7702ContractAddressNotWhitelisted,
36
35
  message: `Sign7702Authorization contractAddress is not in the whitelist`,
@@ -40,7 +39,7 @@ function validateSign7702Action(action, actionPath, realChainId) {
40
39
  }
41
40
  return violations;
42
41
  }
43
- function validateSign7702Actions(actions, basePath, realChainId) {
42
+ function validateSign7702Actions(actions, basePath, realChainId, envConfig) {
44
43
  const violations = [];
45
44
  let sign7702Count = 0;
46
45
  let firstSign7702Index = -1;
@@ -49,7 +48,7 @@ function validateSign7702Actions(actions, basePath, realChainId) {
49
48
  if (action.type !== types_1.EvmActionKind.Sign7702Authorization)
50
49
  continue;
51
50
  const actionPath = `${basePath}.requiredActions[${i}]`;
52
- violations.push(...validateSign7702Action(action, actionPath, realChainId));
51
+ violations.push(...validateSign7702Action(action, actionPath, realChainId, envConfig));
53
52
  // HIGH: at most one Sign7702Authorization per intent
54
53
  // Note: only the first duplicate will be reported, subsequent ones will be ignored
55
54
  sign7702Count++;
@@ -1 +1 @@
1
- {"version":3,"file":"evm-sign7702.js","sourceRoot":"","sources":["../../../src/validations/evm-sign7702.ts"],"names":[],"mappings":";;AAsBA,wDAmCC;AAED,0DAiCC;AA5FD,oCASkB;AAClB,+CAAoD;AACpD,2CAAiE;AAEjE,gDAAgD;AAChD,oCAAoC;AACpC,gDAAgD;AAEhD,oEAAoE;AACpE,yEAAyE;AACzE,4EAA4E;AAC5E,wEAAwE;AACxE,gDAAgD;AAChD,SAAgB,sBAAsB,CAClC,MAA0E,EAC1E,UAAkB,EAClB,WAAoB;IAEpB,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,8DAA8D;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAmB,CAAC;IACvC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,0BAAkB,CAAC,QAAQ,EAAE,CAAC;QAC7D,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,qBAAa,CAAC,gCAAgC;YACpD,OAAO,EAAE,+DAA+D;YACxE,IAAI,EAAE,GAAG,UAAU,UAAU;YAC7B,QAAQ,EAAE,CAAC,0BAAkB,CAAC,QAAQ,CAAC;YACvC,MAAM,EAAE,MAAM,CAAC,OAAO;SACzB,CAAC,CAAC;IACP,CAAC;IAED,0DAA0D;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAgD,CAAC;IACrE,MAAM,eAAe,GAAG,IAAI,EAAE,eAAe,CAAC;IAC9C,IACI,CAAC,eAAe;WACb,CAAC,IAAA,qBAAa,EAAC,kCAA4B,EAAE,WAAW,EAAE,eAAe,CAAC,EAC/E,CAAC;QACC,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,qBAAa,CAAC,qCAAqC;YACzD,OAAO,EAAE,+DAA+D;YACxE,IAAI,EAAE,GAAG,UAAU,uBAAuB;YAC1C,MAAM,EAAE,eAAe;SAC1B,CAAC,CAAC;IACP,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAgB,uBAAuB,CACnC,OAA4B,EAC5B,QAAgB,EAChB,WAAoB;IAEpB,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAa,CAAC,qBAAqB;YAAE,SAAS;QAElE,MAAM,UAAU,GAAG,GAAG,QAAQ,oBAAoB,CAAC,GAAG,CAAC;QACvD,UAAU,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;QAE5E,qDAAqD;QACrD,mFAAmF;QACnF,aAAa,EAAE,CAAC;QAChB,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YACtB,kBAAkB,GAAG,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YAC7B,UAAU,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,qBAAa,CAAC,8BAA8B;gBAClD,OAAO,EAAE,kEAAkE,kBAAkB,QAAQ,CAAC,EAAE;gBACxG,IAAI,EAAE,GAAG,UAAU,OAAO;gBAC1B,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,aAAa;aACxB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"evm-sign7702.js","sourceRoot":"","sources":["../../../src/validations/evm-sign7702.ts"],"names":[],"mappings":";;AAsBA,wDAoCC;AAED,0DAkCC;AA9FD,oCASkB;AAClB,+CAAoD;AAGpD,gDAAgD;AAChD,oCAAoC;AACpC,gDAAgD;AAEhD,oEAAoE;AACpE,yEAAyE;AACzE,4EAA4E;AAC5E,wEAAwE;AACxE,gDAAgD;AAChD,SAAgB,sBAAsB,CAClC,MAA0E,EAC1E,UAAkB,EAClB,WAAoB,EACpB,SAA4B;IAE5B,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,8DAA8D;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAmB,CAAC;IACvC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,0BAAkB,CAAC,QAAQ,EAAE,CAAC;QAC7D,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,qBAAa,CAAC,gCAAgC;YACpD,OAAO,EAAE,+DAA+D;YACxE,IAAI,EAAE,GAAG,UAAU,UAAU;YAC7B,QAAQ,EAAE,CAAC,0BAAkB,CAAC,QAAQ,CAAC;YACvC,MAAM,EAAE,MAAM,CAAC,OAAO;SACzB,CAAC,CAAC;IACP,CAAC;IAED,0DAA0D;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAgD,CAAC;IACrE,MAAM,eAAe,GAAG,IAAI,EAAE,eAAe,CAAC;IAC9C,IACI,CAAC,eAAe;WACb,CAAC,IAAA,qBAAa,EAAC,SAAS,CAAC,0BAA0B,EAAE,WAAW,EAAE,eAAe,CAAC,EACvF,CAAC;QACC,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,qBAAa,CAAC,qCAAqC;YACzD,OAAO,EAAE,+DAA+D;YACxE,IAAI,EAAE,GAAG,UAAU,uBAAuB;YAC1C,MAAM,EAAE,eAAe;SAC1B,CAAC,CAAC;IACP,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAgB,uBAAuB,CACnC,OAA4B,EAC5B,QAAgB,EAChB,WAAoB,EACpB,SAA4B;IAE5B,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAa,CAAC,qBAAqB;YAAE,SAAS;QAElE,MAAM,UAAU,GAAG,GAAG,QAAQ,oBAAoB,CAAC,GAAG,CAAC;QACvD,UAAU,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;QAEvF,qDAAqD;QACrD,mFAAmF;QACnF,aAAa,EAAE,CAAC;QAChB,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YACtB,kBAAkB,GAAG,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;YAC7B,UAAU,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,qBAAa,CAAC,8BAA8B;gBAClD,OAAO,EAAE,kEAAkE,kBAAkB,QAAQ,CAAC,EAAE;gBACxG,IAAI,EAAE,GAAG,UAAU,OAAO;gBAC1B,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,aAAa;aACxB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC"}
@@ -0,0 +1,330 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResponseExternalCallHashKind = void 0;
4
+ exports.validateExternalCalls = validateExternalCalls;
5
+ exports.getResponseExternalCallHash = getResponseExternalCallHash;
6
+ const viem_1 = require("viem");
7
+ const types_1 = require("../types");
8
+ const address_1 = require("../helpers/address");
9
+ const hex_1 = require("../helpers/hex");
10
+ const evm_dln_hook_pack_1 = require("../helpers/evm-dln-hook-pack");
11
+ const subscription_to_chain_id_1 = require("../whitelists/subscription-to-chain-id");
12
+ var ExternalCallExpectationKind;
13
+ (function (ExternalCallExpectationKind) {
14
+ ExternalCallExpectationKind[ExternalCallExpectationKind["None"] = 0] = "None";
15
+ ExternalCallExpectationKind[ExternalCallExpectationKind["Verifiable"] = 1] = "Verifiable";
16
+ ExternalCallExpectationKind[ExternalCallExpectationKind["NotChecked"] = 2] = "NotChecked";
17
+ ExternalCallExpectationKind[ExternalCallExpectationKind["Invalid"] = 3] = "Invalid";
18
+ })(ExternalCallExpectationKind || (ExternalCallExpectationKind = {}));
19
+ var DlnHookParseResultKind;
20
+ (function (DlnHookParseResultKind) {
21
+ DlnHookParseResultKind[DlnHookParseResultKind["Valid"] = 0] = "Valid";
22
+ DlnHookParseResultKind[DlnHookParseResultKind["Invalid"] = 1] = "Invalid";
23
+ })(DlnHookParseResultKind || (DlnHookParseResultKind = {}));
24
+ var ResponseExternalCallHashKind;
25
+ (function (ResponseExternalCallHashKind) {
26
+ ResponseExternalCallHashKind[ResponseExternalCallHashKind["Hash"] = 0] = "Hash";
27
+ ResponseExternalCallHashKind[ResponseExternalCallHashKind["Invalid"] = 1] = "Invalid";
28
+ })(ResponseExternalCallHashKind || (exports.ResponseExternalCallHashKind = ResponseExternalCallHashKind = {}));
29
+ function validateExternalCalls(request, response, tradePairs) {
30
+ const violations = [];
31
+ const pairs = tradePairs ?? getIndexTradePairs(request, response);
32
+ for (const pair of pairs) {
33
+ violations.push(...validatePairedExternalCall(pair.requestTrade, pair.responseTrade, pair.requestIndex, pair.responseIndex));
34
+ }
35
+ return violations;
36
+ }
37
+ function getIndexTradePairs(request, response) {
38
+ const pairCount = Math.min(request.trades.length, response.trades.length);
39
+ const pairs = [];
40
+ for (let i = 0; i < pairCount; i++) {
41
+ pairs.push({
42
+ requestIndex: i,
43
+ responseIndex: i,
44
+ requestTrade: request.trades[i],
45
+ responseTrade: response.trades[i],
46
+ });
47
+ }
48
+ return pairs;
49
+ }
50
+ function getResponseExternalCallHash(responseTrade) {
51
+ const externalCallData = responseTrade?.externalCallData;
52
+ if (externalCallData === undefined) {
53
+ return { kind: ResponseExternalCallHashKind.Hash, hash: undefined };
54
+ }
55
+ if (!isValidStrictExternalCallData(externalCallData)) {
56
+ return { kind: ResponseExternalCallHashKind.Invalid };
57
+ }
58
+ return {
59
+ kind: ResponseExternalCallHashKind.Hash,
60
+ hash: (0, viem_1.keccak256)(externalCallData),
61
+ };
62
+ }
63
+ function validatePairedExternalCall(requestTrade, responseTrade, requestIndex, responseIndex) {
64
+ const responsePath = `response.trades[${responseIndex}].externalCallData`;
65
+ const expected = getExpectedExternalCallData(requestTrade, `request.trades[${requestIndex}].dlnHook`);
66
+ const violations = validateResponseExternalCallDataFormat(responseTrade, responsePath);
67
+ if (expected.kind === ExternalCallExpectationKind.Invalid) {
68
+ return [...violations, ...expected.violations];
69
+ }
70
+ if (violations.length > 0)
71
+ return violations;
72
+ return [
73
+ ...violations,
74
+ ...validateResponseExternalCallDataValue(expected, responseTrade.externalCallData, responsePath),
75
+ ];
76
+ }
77
+ function validateResponseExternalCallDataFormat(responseTrade, path) {
78
+ const externalCallData = responseTrade.externalCallData;
79
+ if (externalCallData === undefined)
80
+ return [];
81
+ // CRITICAL: response externalCallData is hashed into signed intent.externalCallHash.
82
+ if (isValidStrictExternalCallData(externalCallData))
83
+ return [];
84
+ return [{
85
+ code: types_1.ViolationCode.ResponseExternalCallDataInvalid,
86
+ message: "response.trades[].externalCallData must be a non-empty hex byte string",
87
+ path,
88
+ actual: externalCallData,
89
+ }];
90
+ }
91
+ function validateResponseExternalCallDataValue(expected, actual, path) {
92
+ if (expected.kind === ExternalCallExpectationKind.None) {
93
+ return validateNoUnexpectedExternalCallData(actual, path);
94
+ }
95
+ if (expected.kind === ExternalCallExpectationKind.NotChecked) {
96
+ // NO NEED: some chain-specific external-call transformations depend on
97
+ // inputs that are not available in the validation contract. We must not
98
+ // report a violation for data that cannot be independently checked.
99
+ return [];
100
+ }
101
+ if (externalCallDataEquals(actual, expected.data))
102
+ return [];
103
+ // CRITICAL: response externalCallData must match the external call requested by this trade.
104
+ return [{
105
+ code: types_1.ViolationCode.TradeExternalCallDataMismatch,
106
+ message: "response.trades[].externalCallData must match request.trades[].dlnHook",
107
+ path,
108
+ expected: expected.data,
109
+ actual,
110
+ }];
111
+ }
112
+ function validateNoUnexpectedExternalCallData(actual, path) {
113
+ if (actual === undefined)
114
+ return [];
115
+ // CRITICAL: a response trade must not introduce external call data absent from the request.
116
+ return [{
117
+ code: types_1.ViolationCode.TradeExternalCallDataMismatch,
118
+ message: "response.trades[].externalCallData is present but request trade has no external call",
119
+ path,
120
+ expected: undefined,
121
+ actual,
122
+ }];
123
+ }
124
+ function getExpectedExternalCallData(trade, path) {
125
+ if (trade.dlnHook === undefined)
126
+ return { kind: ExternalCallExpectationKind.None };
127
+ const parsed = parseDlnHook(trade.dlnHook, path);
128
+ if (parsed.kind === DlnHookParseResultKind.Invalid) {
129
+ return {
130
+ kind: ExternalCallExpectationKind.Invalid,
131
+ violations: parsed.violations,
132
+ };
133
+ }
134
+ const chainViolation = validateHookChainCompatibility(parsed.hook, trade, path);
135
+ if (chainViolation !== undefined) {
136
+ return {
137
+ kind: ExternalCallExpectationKind.Invalid,
138
+ violations: [chainViolation],
139
+ };
140
+ }
141
+ if (parsed.hook.type === types_1.DlnHookType.SolanaSerializedInstructions)
142
+ return solanaExternalCallNotChecked();
143
+ return getExpectedEvmExternalCallData(parsed.hook, trade, path);
144
+ }
145
+ function solanaExternalCallNotChecked() {
146
+ // NO NEED: Solana external-call bytes may be transformed by route-specific
147
+ // logic. Unable to verify without documented public invariant.
148
+ return { kind: ExternalCallExpectationKind.NotChecked };
149
+ }
150
+ function getExpectedEvmExternalCallData(hook, trade, path) {
151
+ try {
152
+ if (hook.type === types_1.DlnHookType.EvmHookV1) {
153
+ return {
154
+ kind: ExternalCallExpectationKind.Verifiable,
155
+ data: (0, evm_dln_hook_pack_1.packEvmHookV1)(hook.data),
156
+ };
157
+ }
158
+ if (trade.dstChainAuthorityAddress === undefined) {
159
+ return invalidExternalCallExpectation(path, "evm_transaction_call requires dstChainAuthorityAddress");
160
+ }
161
+ return {
162
+ kind: ExternalCallExpectationKind.Verifiable,
163
+ data: (0, evm_dln_hook_pack_1.packEvmTransactionCall)(hook.data, trade.dstChainAuthorityAddress),
164
+ };
165
+ }
166
+ catch (error) {
167
+ return invalidExternalCallExpectation(path, "request.trades[].dlnHook cannot be serialized", error);
168
+ }
169
+ }
170
+ function parseDlnHook(raw, path) {
171
+ let parsed;
172
+ try {
173
+ parsed = JSON.parse(raw);
174
+ }
175
+ catch (error) {
176
+ return invalidDlnHookParseResult(path, "request.trades[].dlnHook must be valid JSON", error);
177
+ }
178
+ if (!isRecord(parsed) || !isKnownDlnHookType(parsed.type)) {
179
+ return invalidDlnHookParseResult(path, "request.trades[].dlnHook has unknown type");
180
+ }
181
+ return parseKnownDlnHook(parsed, path);
182
+ }
183
+ function parseKnownDlnHook(parsed, path) {
184
+ switch (parsed.type) {
185
+ case types_1.DlnHookType.EvmHookV1:
186
+ return parseEvmHookV1(parsed.data, path);
187
+ case types_1.DlnHookType.EvmTransactionCall:
188
+ return parseEvmTransactionCall(parsed.data, path);
189
+ case types_1.DlnHookType.SolanaSerializedInstructions:
190
+ return parseSolanaSerializedInstructions(parsed.data, path);
191
+ }
192
+ }
193
+ function parseEvmHookV1(data, path) {
194
+ if (!isRecord(data)) {
195
+ return invalidDlnHookParseResult(path, "evm_hook_data_v1 data must be an object");
196
+ }
197
+ if (!hasNonEmptyStrictHexFields(data, ["fallbackAddress", "target"])
198
+ || !hasNonEmptyRequestHexFields(data, ["targetPayload"])) {
199
+ return invalidDlnHookParseResult(path, "evm_hook_data_v1 data has invalid hex fields");
200
+ }
201
+ if (typeof data.reward !== "string") {
202
+ return invalidDlnHookParseResult(path, "evm_hook_data_v1 reward must be a non-negative BigInt-compatible string");
203
+ }
204
+ try {
205
+ if (BigInt(data.reward) < 0n) {
206
+ return invalidDlnHookParseResult(path, "evm_hook_data_v1 reward must be a non-negative BigInt-compatible string");
207
+ }
208
+ }
209
+ catch (error) {
210
+ return invalidDlnHookParseResult(path, "evm_hook_data_v1 reward must be a non-negative BigInt-compatible string", error);
211
+ }
212
+ if (typeof data.isNonAtomic !== "boolean" || typeof data.isSuccessRequired !== "boolean") {
213
+ return invalidDlnHookParseResult(path, "evm_hook_data_v1 flags must be boolean");
214
+ }
215
+ return {
216
+ kind: DlnHookParseResultKind.Valid,
217
+ hook: { type: types_1.DlnHookType.EvmHookV1, data },
218
+ };
219
+ }
220
+ function parseEvmTransactionCall(data, path) {
221
+ if (!isRecord(data)) {
222
+ return invalidDlnHookParseResult(path, "evm_transaction_call data must be an object");
223
+ }
224
+ if (!hasNonEmptyStrictHexFields(data, ["to"])
225
+ || !hasNonEmptyRequestHexFields(data, ["calldata"])) {
226
+ return invalidDlnHookParseResult(path, "evm_transaction_call data has invalid hex fields");
227
+ }
228
+ if (data.gas !== undefined && !isUint32(data.gas)) {
229
+ return invalidDlnHookParseResult(path, "evm_transaction_call gas must be a uint32 number");
230
+ }
231
+ return {
232
+ kind: DlnHookParseResultKind.Valid,
233
+ hook: { type: types_1.DlnHookType.EvmTransactionCall, data },
234
+ };
235
+ }
236
+ function parseSolanaSerializedInstructions(data, path) {
237
+ if (typeof data !== "string" || !isValidRequestExternalCallData(data)) {
238
+ return invalidDlnHookParseResult(path, "solana_serialized_instructions data must be a non-empty hex string");
239
+ }
240
+ return {
241
+ kind: DlnHookParseResultKind.Valid,
242
+ hook: { type: types_1.DlnHookType.SolanaSerializedInstructions, data },
243
+ };
244
+ }
245
+ function validateHookChainCompatibility(hook, trade, path) {
246
+ const realDestinationChainId = (0, subscription_to_chain_id_1.resolveChainId)(trade.dstChainId);
247
+ if (realDestinationChainId === undefined) {
248
+ // Safe skip: unknown dstChainId is reported by validateTrades.
249
+ return undefined;
250
+ }
251
+ const actualEngine = (0, address_1.getChainEngine)(realDestinationChainId);
252
+ if (actualEngine !== types_1.ChainEngine.EVM && actualEngine !== types_1.ChainEngine.Solana) {
253
+ // HIGH: no request dlnHook type currently has a documented serialization
254
+ // path for non-EVM/non-Solana destination engines.
255
+ return {
256
+ code: types_1.ViolationCode.RequestDlnHookInvalid,
257
+ message: "request.trades[].dlnHook is not supported for this destination chain engine",
258
+ path,
259
+ expected: { supportedDestinationEngines: [types_1.ChainEngine.EVM, types_1.ChainEngine.Solana] },
260
+ actual: actualEngine,
261
+ };
262
+ }
263
+ const expectedEngine = hook.type === types_1.DlnHookType.SolanaSerializedInstructions
264
+ ? types_1.ChainEngine.Solana
265
+ : types_1.ChainEngine.EVM;
266
+ if (actualEngine === expectedEngine)
267
+ return undefined;
268
+ // HIGH: request dlnHook type must match the destination chain engine.
269
+ return {
270
+ code: types_1.ViolationCode.RequestDlnHookInvalid,
271
+ message: "request.trades[].dlnHook type does not match dstChainId engine",
272
+ path,
273
+ expected: expectedEngine,
274
+ actual: hook.type,
275
+ };
276
+ }
277
+ function invalidExternalCallExpectation(path, message, details) {
278
+ return {
279
+ kind: ExternalCallExpectationKind.Invalid,
280
+ violations: [createInvalidDlnHookViolation(path, message, details)],
281
+ };
282
+ }
283
+ function invalidDlnHookParseResult(path, message, details) {
284
+ return {
285
+ kind: DlnHookParseResultKind.Invalid,
286
+ violations: [createInvalidDlnHookViolation(path, message, details)],
287
+ };
288
+ }
289
+ function createInvalidDlnHookViolation(path, message, details) {
290
+ // HIGH: malformed request dlnHook cannot be safely matched to signed externalCallHash.
291
+ return {
292
+ code: types_1.ViolationCode.RequestDlnHookInvalid,
293
+ message,
294
+ path,
295
+ details,
296
+ };
297
+ }
298
+ function hasNonEmptyStrictHexFields(data, fields) {
299
+ return fields.every(field => (typeof data[field] === "string"
300
+ && isValidStrictExternalCallData(data[field])));
301
+ }
302
+ function hasNonEmptyRequestHexFields(data, fields) {
303
+ return fields.every(field => (typeof data[field] === "string"
304
+ && isValidRequestExternalCallData(data[field])));
305
+ }
306
+ function isValidStrictExternalCallData(value) {
307
+ return value !== "0x" && (0, hex_1.isHexByteString)(value);
308
+ }
309
+ function isValidRequestExternalCallData(value) {
310
+ return (0, hex_1.isNonEmptyHexString)(value);
311
+ }
312
+ function externalCallDataEquals(a, b) {
313
+ return a !== undefined && a.toLowerCase() === b.toLowerCase();
314
+ }
315
+ function isKnownDlnHookType(value) {
316
+ return value === types_1.DlnHookType.EvmHookV1
317
+ || value === types_1.DlnHookType.EvmTransactionCall
318
+ || value === types_1.DlnHookType.SolanaSerializedInstructions;
319
+ }
320
+ function isRecord(value) {
321
+ return typeof value === "object" && value !== null && !Array.isArray(value);
322
+ }
323
+ function isUint32(value) {
324
+ const maxUint32 = 0xffffffff;
325
+ return typeof value === "number"
326
+ && Number.isInteger(value)
327
+ && value >= 0
328
+ && value <= maxUint32;
329
+ }
330
+ //# sourceMappingURL=external-call.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-call.js","sourceRoot":"","sources":["../../../src/validations/external-call.ts"],"names":[],"mappings":"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"}