@debridge-finance/borderless-validation-sdk 0.0.0-dev-4a73f49 → 0.0.1

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/dist/cjs/helpers/address.js +18 -53
  2. package/dist/cjs/helpers/address.js.map +1 -1
  3. package/dist/cjs/helpers/constants.js +6 -0
  4. package/dist/cjs/helpers/constants.js.map +1 -0
  5. package/dist/cjs/helpers/evm-action.js +3 -3
  6. package/dist/cjs/helpers/evm-action.js.map +1 -1
  7. package/dist/cjs/helpers/evm-intent-id.js +13 -27
  8. package/dist/cjs/helpers/evm-intent-id.js.map +1 -1
  9. package/dist/cjs/helpers/evm-trade-amounts.js +1 -36
  10. package/dist/cjs/helpers/evm-trade-amounts.js.map +1 -1
  11. package/dist/cjs/types/enums.js +2 -32
  12. package/dist/cjs/types/enums.js.map +1 -1
  13. package/dist/cjs/types/request.js +2 -25
  14. package/dist/cjs/types/request.js.map +1 -1
  15. package/dist/cjs/types/response.js +5 -125
  16. package/dist/cjs/types/response.js.map +1 -1
  17. package/dist/cjs/types/validation.js +10 -81
  18. package/dist/cjs/types/validation.js.map +1 -1
  19. package/dist/cjs/validations/evm-caveats.js +14 -4
  20. package/dist/cjs/validations/evm-caveats.js.map +1 -1
  21. package/dist/cjs/validations/evm-op-budget.js +10 -13
  22. package/dist/cjs/validations/evm-op-budget.js.map +1 -1
  23. package/dist/cjs/validations/evm-op-gas-compensation.js +152 -0
  24. package/dist/cjs/validations/evm-op-gas-compensation.js.map +1 -0
  25. package/dist/cjs/validations/evm-op-hook.js +3 -410
  26. package/dist/cjs/validations/evm-op-hook.js.map +1 -1
  27. package/dist/cjs/validations/evm-op-wrap.js +7 -10
  28. package/dist/cjs/validations/evm-op-wrap.js.map +1 -1
  29. package/dist/cjs/validations/evm-required-actions.js +9 -7
  30. package/dist/cjs/validations/evm-required-actions.js.map +1 -1
  31. package/dist/cjs/validations/evm-sign712-metamask.js +94 -17
  32. package/dist/cjs/validations/evm-sign712-metamask.js.map +1 -1
  33. package/dist/cjs/validations/evm-sign7702.js +22 -34
  34. package/dist/cjs/validations/evm-sign7702.js.map +1 -1
  35. package/dist/cjs/validations/hooks-common.js +37 -252
  36. package/dist/cjs/validations/hooks-common.js.map +1 -1
  37. package/dist/cjs/validations/required-actions.js +7 -7
  38. package/dist/cjs/validations/required-actions.js.map +1 -1
  39. package/dist/cjs/validations/solana-hook.js +22 -33
  40. package/dist/cjs/validations/solana-hook.js.map +1 -1
  41. package/dist/cjs/validations/solana-op-budget.js +18 -56
  42. package/dist/cjs/validations/solana-op-budget.js.map +1 -1
  43. package/dist/cjs/validations/solana-op-wrap.js +13 -46
  44. package/dist/cjs/validations/solana-op-wrap.js.map +1 -1
  45. package/dist/cjs/validations/solana-required-actions.js +3 -3
  46. package/dist/cjs/validations/solana-required-actions.js.map +1 -1
  47. package/dist/cjs/validations/solana-transaction.js +5 -5
  48. package/dist/cjs/validations/solana-transaction.js.map +1 -1
  49. package/dist/cjs/validations/trade-grouping.js +1 -139
  50. package/dist/cjs/validations/trade-grouping.js.map +1 -1
  51. package/dist/cjs/validations/trades.js +40 -162
  52. package/dist/cjs/validations/trades.js.map +1 -1
  53. package/dist/cjs/validator.js +16 -11
  54. package/dist/cjs/validator.js.map +1 -1
  55. package/dist/cjs/whitelists/environment-config.js +28 -47
  56. package/dist/cjs/whitelists/environment-config.js.map +1 -1
  57. package/dist/cjs/whitelists/evm/caveat-enforcers.js +5 -21
  58. package/dist/cjs/whitelists/evm/caveat-enforcers.js.map +1 -1
  59. package/dist/cjs/whitelists/evm/delegation-manager.js +2 -7
  60. package/dist/cjs/whitelists/evm/delegation-manager.js.map +1 -1
  61. package/dist/cjs/whitelists/evm/eip7702-delegation.js +2 -7
  62. package/dist/cjs/whitelists/evm/eip7702-delegation.js.map +1 -1
  63. package/dist/cjs/whitelists/evm/index.js +1 -14
  64. package/dist/cjs/whitelists/evm/index.js.map +1 -1
  65. package/dist/cjs/whitelists/evm/permit2.js +12 -16
  66. package/dist/cjs/whitelists/evm/permit2.js.map +1 -1
  67. package/dist/cjs/whitelists/evm/weth.js +5 -16
  68. package/dist/cjs/whitelists/evm/weth.js.map +1 -1
  69. package/dist/cjs/whitelists/solana/intent-signature.js +1 -0
  70. package/dist/cjs/whitelists/solana/intent-signature.js.map +1 -1
  71. package/dist/cjs/whitelists/subscription-to-chain-id.js +0 -10
  72. package/dist/cjs/whitelists/subscription-to-chain-id.js.map +1 -1
  73. package/dist/cjs/whitelists/types.js +3 -13
  74. package/dist/cjs/whitelists/types.js.map +1 -1
  75. package/dist/esm/helpers/address.js +17 -48
  76. package/dist/esm/helpers/address.js.map +1 -1
  77. package/dist/esm/helpers/constants.js +3 -0
  78. package/dist/esm/helpers/constants.js.map +1 -0
  79. package/dist/esm/helpers/evm-action.js +3 -3
  80. package/dist/esm/helpers/evm-action.js.map +1 -1
  81. package/dist/esm/helpers/evm-intent-id.js +13 -27
  82. package/dist/esm/helpers/evm-intent-id.js.map +1 -1
  83. package/dist/esm/helpers/evm-trade-amounts.js +1 -36
  84. package/dist/esm/helpers/evm-trade-amounts.js.map +1 -1
  85. package/dist/esm/types/enums.js +1 -31
  86. package/dist/esm/types/enums.js.map +1 -1
  87. package/dist/esm/types/request.js +3 -26
  88. package/dist/esm/types/request.js.map +1 -1
  89. package/dist/esm/types/response.js +4 -124
  90. package/dist/esm/types/response.js.map +1 -1
  91. package/dist/esm/types/validation.js +10 -81
  92. package/dist/esm/types/validation.js.map +1 -1
  93. package/dist/esm/validations/evm-caveats.js +14 -4
  94. package/dist/esm/validations/evm-caveats.js.map +1 -1
  95. package/dist/esm/validations/evm-op-budget.js +10 -13
  96. package/dist/esm/validations/evm-op-budget.js.map +1 -1
  97. package/dist/esm/validations/evm-op-gas-compensation.js +149 -0
  98. package/dist/esm/validations/evm-op-gas-compensation.js.map +1 -0
  99. package/dist/esm/validations/evm-op-hook.js +2 -409
  100. package/dist/esm/validations/evm-op-hook.js.map +1 -1
  101. package/dist/esm/validations/evm-op-wrap.js +7 -10
  102. package/dist/esm/validations/evm-op-wrap.js.map +1 -1
  103. package/dist/esm/validations/evm-required-actions.js +9 -7
  104. package/dist/esm/validations/evm-required-actions.js.map +1 -1
  105. package/dist/esm/validations/evm-sign712-metamask.js +94 -17
  106. package/dist/esm/validations/evm-sign712-metamask.js.map +1 -1
  107. package/dist/esm/validations/evm-sign7702.js +22 -33
  108. package/dist/esm/validations/evm-sign7702.js.map +1 -1
  109. package/dist/esm/validations/hooks-common.js +38 -251
  110. package/dist/esm/validations/hooks-common.js.map +1 -1
  111. package/dist/esm/validations/required-actions.js +7 -7
  112. package/dist/esm/validations/required-actions.js.map +1 -1
  113. package/dist/esm/validations/solana-hook.js +24 -35
  114. package/dist/esm/validations/solana-hook.js.map +1 -1
  115. package/dist/esm/validations/solana-op-budget.js +18 -56
  116. package/dist/esm/validations/solana-op-budget.js.map +1 -1
  117. package/dist/esm/validations/solana-op-wrap.js +14 -47
  118. package/dist/esm/validations/solana-op-wrap.js.map +1 -1
  119. package/dist/esm/validations/solana-required-actions.js +3 -3
  120. package/dist/esm/validations/solana-required-actions.js.map +1 -1
  121. package/dist/esm/validations/solana-transaction.js +7 -7
  122. package/dist/esm/validations/solana-transaction.js.map +1 -1
  123. package/dist/esm/validations/trade-grouping.js +1 -139
  124. package/dist/esm/validations/trade-grouping.js.map +1 -1
  125. package/dist/esm/validations/trades.js +41 -163
  126. package/dist/esm/validations/trades.js.map +1 -1
  127. package/dist/esm/validator.js +16 -11
  128. package/dist/esm/validator.js.map +1 -1
  129. package/dist/esm/whitelists/environment-config.js +28 -47
  130. package/dist/esm/whitelists/environment-config.js.map +1 -1
  131. package/dist/esm/whitelists/evm/caveat-enforcers.js +4 -20
  132. package/dist/esm/whitelists/evm/caveat-enforcers.js.map +1 -1
  133. package/dist/esm/whitelists/evm/delegation-manager.js +1 -6
  134. package/dist/esm/whitelists/evm/delegation-manager.js.map +1 -1
  135. package/dist/esm/whitelists/evm/eip7702-delegation.js +1 -6
  136. package/dist/esm/whitelists/evm/eip7702-delegation.js.map +1 -1
  137. package/dist/esm/whitelists/evm/index.js +4 -4
  138. package/dist/esm/whitelists/evm/index.js.map +1 -1
  139. package/dist/esm/whitelists/evm/permit2.js +5 -9
  140. package/dist/esm/whitelists/evm/permit2.js.map +1 -1
  141. package/dist/esm/whitelists/evm/weth.js +5 -16
  142. package/dist/esm/whitelists/evm/weth.js.map +1 -1
  143. package/dist/esm/whitelists/solana/intent-signature.js +1 -0
  144. package/dist/esm/whitelists/solana/intent-signature.js.map +1 -1
  145. package/dist/esm/whitelists/subscription-to-chain-id.js +0 -9
  146. package/dist/esm/whitelists/subscription-to-chain-id.js.map +1 -1
  147. package/dist/esm/whitelists/types.js +5 -14
  148. package/dist/esm/whitelists/types.js.map +1 -1
  149. package/dist/types/helpers/address.d.ts +7 -7
  150. package/dist/types/helpers/address.d.ts.map +1 -1
  151. package/dist/types/helpers/constants.d.ts +2 -0
  152. package/dist/types/helpers/constants.d.ts.map +1 -0
  153. package/dist/types/helpers/evm-intent-id.d.ts.map +1 -1
  154. package/dist/types/helpers/evm-trade-amounts.d.ts +2 -2
  155. package/dist/types/helpers/evm-trade-amounts.d.ts.map +1 -1
  156. package/dist/types/types/enums.d.ts +1 -24
  157. package/dist/types/types/enums.d.ts.map +1 -1
  158. package/dist/types/types/request.d.ts +9 -19
  159. package/dist/types/types/request.d.ts.map +1 -1
  160. package/dist/types/types/response.d.ts +17 -1015
  161. package/dist/types/types/response.d.ts.map +1 -1
  162. package/dist/types/types/validation.d.ts +11 -73
  163. package/dist/types/types/validation.d.ts.map +1 -1
  164. package/dist/types/validations/evm-caveats.d.ts.map +1 -1
  165. package/dist/types/validations/evm-op-budget.d.ts +2 -2
  166. package/dist/types/validations/evm-op-budget.d.ts.map +1 -1
  167. package/dist/types/validations/evm-op-gas-compensation.d.ts +3 -0
  168. package/dist/types/validations/evm-op-gas-compensation.d.ts.map +1 -0
  169. package/dist/types/validations/evm-op-hook.d.ts +2 -4
  170. package/dist/types/validations/evm-op-hook.d.ts.map +1 -1
  171. package/dist/types/validations/evm-op-wrap.d.ts +2 -2
  172. package/dist/types/validations/evm-op-wrap.d.ts.map +1 -1
  173. package/dist/types/validations/evm-required-actions.d.ts +2 -2
  174. package/dist/types/validations/evm-required-actions.d.ts.map +1 -1
  175. package/dist/types/validations/evm-sign712-metamask.d.ts.map +1 -1
  176. package/dist/types/validations/evm-sign7702.d.ts +1 -2
  177. package/dist/types/validations/evm-sign7702.d.ts.map +1 -1
  178. package/dist/types/validations/hooks-common.d.ts +0 -1
  179. package/dist/types/validations/hooks-common.d.ts.map +1 -1
  180. package/dist/types/validations/required-actions.d.ts +1 -2
  181. package/dist/types/validations/required-actions.d.ts.map +1 -1
  182. package/dist/types/validations/solana-hook.d.ts +2 -4
  183. package/dist/types/validations/solana-hook.d.ts.map +1 -1
  184. package/dist/types/validations/solana-op-budget.d.ts +2 -2
  185. package/dist/types/validations/solana-op-budget.d.ts.map +1 -1
  186. package/dist/types/validations/solana-op-wrap.d.ts +2 -2
  187. package/dist/types/validations/solana-op-wrap.d.ts.map +1 -1
  188. package/dist/types/validations/solana-required-actions.d.ts +2 -2
  189. package/dist/types/validations/solana-required-actions.d.ts.map +1 -1
  190. package/dist/types/validations/solana-transaction.d.ts +3 -3
  191. package/dist/types/validations/solana-transaction.d.ts.map +1 -1
  192. package/dist/types/validations/trade-grouping.d.ts +2 -6
  193. package/dist/types/validations/trade-grouping.d.ts.map +1 -1
  194. package/dist/types/validations/trades.d.ts.map +1 -1
  195. package/dist/types/validator.d.ts.map +1 -1
  196. package/dist/types/whitelists/environment-config.d.ts.map +1 -1
  197. package/dist/types/whitelists/evm/caveat-enforcers.d.ts +0 -8
  198. package/dist/types/whitelists/evm/caveat-enforcers.d.ts.map +1 -1
  199. package/dist/types/whitelists/evm/delegation-manager.d.ts +0 -2
  200. package/dist/types/whitelists/evm/delegation-manager.d.ts.map +1 -1
  201. package/dist/types/whitelists/evm/eip7702-delegation.d.ts +0 -2
  202. package/dist/types/whitelists/evm/eip7702-delegation.d.ts.map +1 -1
  203. package/dist/types/whitelists/evm/index.d.ts +4 -4
  204. package/dist/types/whitelists/evm/index.d.ts.map +1 -1
  205. package/dist/types/whitelists/evm/permit2.d.ts +0 -1
  206. package/dist/types/whitelists/evm/permit2.d.ts.map +1 -1
  207. package/dist/types/whitelists/evm/weth.d.ts.map +1 -1
  208. package/dist/types/whitelists/solana/intent-signature.d.ts.map +1 -1
  209. package/dist/types/whitelists/subscription-to-chain-id.d.ts +0 -1
  210. package/dist/types/whitelists/subscription-to-chain-id.d.ts.map +1 -1
  211. package/dist/types/whitelists/types.d.ts +1 -1
  212. package/dist/types/whitelists/types.d.ts.map +1 -1
  213. package/package.json +3 -4
  214. package/README.md +0 -164
  215. package/dist/cjs/helpers/evm-dln-hook-pack.js +0 -87
  216. package/dist/cjs/helpers/evm-dln-hook-pack.js.map +0 -1
  217. package/dist/cjs/helpers/evm-gas-compensation-tx.js +0 -102
  218. package/dist/cjs/helpers/evm-gas-compensation-tx.js.map +0 -1
  219. package/dist/cjs/helpers/gas-compensation.js +0 -36
  220. package/dist/cjs/helpers/gas-compensation.js.map +0 -1
  221. package/dist/cjs/helpers/hex.js +0 -24
  222. package/dist/cjs/helpers/hex.js.map +0 -1
  223. package/dist/cjs/helpers/placeholder.js +0 -174
  224. package/dist/cjs/helpers/placeholder.js.map +0 -1
  225. package/dist/cjs/helpers/sets.js +0 -13
  226. package/dist/cjs/helpers/sets.js.map +0 -1
  227. package/dist/cjs/validations/compensation-hook.js +0 -203
  228. package/dist/cjs/validations/compensation-hook.js.map +0 -1
  229. package/dist/cjs/validations/evm-sign712-shared.js +0 -116
  230. package/dist/cjs/validations/evm-sign712-shared.js.map +0 -1
  231. package/dist/cjs/validations/intent-destinations.js +0 -197
  232. package/dist/cjs/validations/intent-destinations.js.map +0 -1
  233. package/dist/cjs/validations/intent-tokens.js +0 -347
  234. package/dist/cjs/validations/intent-tokens.js.map +0 -1
  235. package/dist/cjs/validations/intent.js +0 -288
  236. package/dist/cjs/validations/intent.js.map +0 -1
  237. package/dist/cjs/whitelists/evm/metamask-delegation-chains.js +0 -16
  238. package/dist/cjs/whitelists/evm/metamask-delegation-chains.js.map +0 -1
  239. package/dist/esm/helpers/evm-dln-hook-pack.js +0 -82
  240. package/dist/esm/helpers/evm-dln-hook-pack.js.map +0 -1
  241. package/dist/esm/helpers/evm-gas-compensation-tx.js +0 -99
  242. package/dist/esm/helpers/evm-gas-compensation-tx.js.map +0 -1
  243. package/dist/esm/helpers/gas-compensation.js +0 -33
  244. package/dist/esm/helpers/gas-compensation.js.map +0 -1
  245. package/dist/esm/helpers/hex.js +0 -20
  246. package/dist/esm/helpers/hex.js.map +0 -1
  247. package/dist/esm/helpers/placeholder.js +0 -168
  248. package/dist/esm/helpers/placeholder.js.map +0 -1
  249. package/dist/esm/helpers/sets.js +0 -10
  250. package/dist/esm/helpers/sets.js.map +0 -1
  251. package/dist/esm/validations/compensation-hook.js +0 -200
  252. package/dist/esm/validations/compensation-hook.js.map +0 -1
  253. package/dist/esm/validations/evm-sign712-shared.js +0 -110
  254. package/dist/esm/validations/evm-sign712-shared.js.map +0 -1
  255. package/dist/esm/validations/intent-destinations.js +0 -194
  256. package/dist/esm/validations/intent-destinations.js.map +0 -1
  257. package/dist/esm/validations/intent-tokens.js +0 -344
  258. package/dist/esm/validations/intent-tokens.js.map +0 -1
  259. package/dist/esm/validations/intent.js +0 -285
  260. package/dist/esm/validations/intent.js.map +0 -1
  261. package/dist/esm/whitelists/evm/metamask-delegation-chains.js +0 -13
  262. package/dist/esm/whitelists/evm/metamask-delegation-chains.js.map +0 -1
  263. package/dist/types/helpers/evm-dln-hook-pack.d.ts +0 -19
  264. package/dist/types/helpers/evm-dln-hook-pack.d.ts.map +0 -1
  265. package/dist/types/helpers/evm-gas-compensation-tx.d.ts +0 -13
  266. package/dist/types/helpers/evm-gas-compensation-tx.d.ts.map +0 -1
  267. package/dist/types/helpers/gas-compensation.d.ts +0 -10
  268. package/dist/types/helpers/gas-compensation.d.ts.map +0 -1
  269. package/dist/types/helpers/hex.d.ts +0 -3
  270. package/dist/types/helpers/hex.d.ts.map +0 -1
  271. package/dist/types/helpers/placeholder.d.ts +0 -41
  272. package/dist/types/helpers/placeholder.d.ts.map +0 -1
  273. package/dist/types/helpers/sets.d.ts +0 -2
  274. package/dist/types/helpers/sets.d.ts.map +0 -1
  275. package/dist/types/validations/compensation-hook.d.ts +0 -3
  276. package/dist/types/validations/compensation-hook.d.ts.map +0 -1
  277. package/dist/types/validations/evm-sign712-shared.d.ts +0 -7
  278. package/dist/types/validations/evm-sign712-shared.d.ts.map +0 -1
  279. package/dist/types/validations/intent-destinations.d.ts +0 -4
  280. package/dist/types/validations/intent-destinations.d.ts.map +0 -1
  281. package/dist/types/validations/intent-tokens.d.ts +0 -4
  282. package/dist/types/validations/intent-tokens.d.ts.map +0 -1
  283. package/dist/types/validations/intent.d.ts +0 -5
  284. package/dist/types/validations/intent.d.ts.map +0 -1
  285. package/dist/types/whitelists/evm/metamask-delegation-chains.d.ts +0 -3
  286. package/dist/types/whitelists/evm/metamask-delegation-chains.d.ts.map +0 -1
@@ -2,12 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.groupTrades = groupTrades;
4
4
  exports.matchIntentsToGroups = matchIntentsToGroups;
5
- const viem_1 = require("viem");
6
5
  const types_1 = require("../types");
7
6
  const subscription_to_chain_id_1 = require("../whitelists/subscription-to-chain-id");
8
7
  const address_1 = require("../helpers/address");
9
- const evm_dln_hook_pack_1 = require("../helpers/evm-dln-hook-pack");
10
- const hex_1 = require("../helpers/hex");
11
8
  // Groups request trades to match them later with response intents.
12
9
  //
13
10
  // Quote mode: groups by srcChainId only (addresses are placeholders).
@@ -18,7 +15,7 @@ const hex_1 = require("../helpers/hex");
18
15
  // fields like intent.executionMetadata, intent.dlnMetadata,
19
16
  // intent.externalCallHash, etc. that are not present in the request, so one
20
17
  // group can correspond to one or more response intents.
21
- function groupTrades(trades, responseTrades, quoteMode) {
18
+ function groupTrades(trades, quoteMode) {
22
19
  const map = new Map();
23
20
  const violations = [];
24
21
  // Track already-reported unknown subscriptionIds to avoid duplicate violations
@@ -50,13 +47,11 @@ function groupTrades(trades, responseTrades, quoteMode) {
50
47
  realChainId,
51
48
  tradeIndices: [],
52
49
  trades: [],
53
- responseTrades: [],
54
50
  };
55
51
  map.set(key, group);
56
52
  }
57
53
  group.tradeIndices.push(i);
58
54
  group.trades.push(trade);
59
- group.responseTrades.push(responseTrades[i]);
60
55
  }
61
56
  return { groups: Array.from(map.values()), violations };
62
57
  }
@@ -84,14 +79,10 @@ function matchIntentsToGroups(intents, groups, quoteMode) {
84
79
  return true;
85
80
  });
86
81
  if (matched) {
87
- const subset = selectIntentTrades(matched, intent);
88
82
  contexts.push({
89
83
  intentIndex: i,
90
84
  intentPayload,
91
85
  tradeGroup: matched,
92
- intentTradeIndices: subset.indices,
93
- intentTrades: subset.trades,
94
- intentResponseTrades: subset.responseTrades,
95
86
  });
96
87
  }
97
88
  else {
@@ -104,135 +95,6 @@ function matchIntentsToGroups(intents, groups, quoteMode) {
104
95
  });
105
96
  }
106
97
  }
107
- violations.push(...validateGroupCoverage(groups, contexts));
108
- violations.push(...validateIntentDifferentiation(contexts));
109
98
  return { contexts, violations };
110
99
  }
111
- // CRITICAL: every trade group must have at least one matching intent.
112
- function validateGroupCoverage(groups, contexts) {
113
- const coveredGroups = new Set(contexts.map(ctx => ctx.tradeGroup));
114
- const violations = [];
115
- for (const group of groups) {
116
- if (!coveredGroups.has(group)) {
117
- const tradeList = group.tradeIndices.join(", ");
118
- violations.push({
119
- code: types_1.ViolationCode.TradeGroupHasNoIntent,
120
- message: `trade group (srcChainId=${group.srcChainId},`
121
- + ` authority=${group.srcChainAuthorityAddress ?? "quote"})`
122
- + ` has no matching intent`
123
- + ` (request trades: [${tradeList}])`,
124
- path: "response.intents",
125
- expected: group,
126
- });
127
- }
128
- }
129
- return violations;
130
- }
131
- // CRITICAL: intents matched to the same trade group must differ
132
- // in at least one of: externalCallHash, dlnMetadata, executionMetadata.
133
- // Duplicate intents within a group indicate an API bug or MITM attack.
134
- function validateIntentDifferentiation(contexts) {
135
- const byGroup = new Map();
136
- for (const ctx of contexts) {
137
- const list = byGroup.get(ctx.tradeGroup) ?? [];
138
- list.push(ctx);
139
- byGroup.set(ctx.tradeGroup, list);
140
- }
141
- const violations = [];
142
- for (const [, groupContexts] of byGroup) {
143
- if (groupContexts.length <= 1)
144
- continue;
145
- const seen = new Map();
146
- for (const ctx of groupContexts) {
147
- const key = intentDifferentiationKey(ctx.intentPayload.intent);
148
- const firstIndex = seen.get(key);
149
- if (firstIndex !== undefined) {
150
- violations.push({
151
- code: types_1.ViolationCode.DuplicateIntentsInTradeGroup,
152
- message: `intents[${firstIndex}] and intents[${ctx.intentIndex}]`
153
- + ` are in the same trade group but do not differ`
154
- + ` in externalCallHash, dlnMetadata, or`
155
- + ` executionMetadata`,
156
- path: `response.intents[${ctx.intentIndex}]`,
157
- actual: ctx.intentPayload.intent,
158
- });
159
- }
160
- else {
161
- seen.set(key, ctx.intentIndex);
162
- }
163
- }
164
- }
165
- return violations;
166
- }
167
- function intentDifferentiationKey(intent) {
168
- return [
169
- intent.externalCallHash ?? "",
170
- intent.dlnMetadata ?? "",
171
- intent.executionMetadata ?? "",
172
- ].join("|");
173
- }
174
- // Picks the trades that the API folded into a single intent.
175
- // API groups trades by `(srcChainId, srcAuthority, dlnHook → externalCallHash,
176
- // metadata → dlnMetadata, executionMetadata)`, so trades inside one intent
177
- // share the last three fields with the intent. When all trades in a group
178
- // share the same key (only one intent exists), the whole group belongs to it.
179
- function selectIntentTrades(group, intent) {
180
- // Distinct keys for trades in the group; if every trade has the same key,
181
- // they all belong to the single intent (no ambiguity).
182
- const tradeKeys = group.trades.map(t => tradeDifferentiationKey(t));
183
- const distinct = new Set(tradeKeys);
184
- if (distinct.size <= 1) {
185
- return {
186
- indices: group.trades.map((_, i) => i),
187
- trades: group.trades.slice(),
188
- responseTrades: group.responseTrades.slice(),
189
- };
190
- }
191
- const indices = [];
192
- const trades = [];
193
- const responseTrades = [];
194
- for (let i = 0; i < group.trades.length; i++) {
195
- const trade = group.trades[i];
196
- if (tradeMatchesIntent(trade, intent)) {
197
- indices.push(i);
198
- trades.push(trade);
199
- responseTrades.push(group.responseTrades[i]);
200
- }
201
- }
202
- // No trade matched — fields the API uses to split a group into intents
203
- // don't line up with anything in the request. Fall back to the full
204
- // group: per-intent budget checks may overshoot, but the underlying
205
- // mismatch is still reported by `validateExternalCallHash` and
206
- // `validateDlnMetadata`.
207
- if (indices.length === 0) {
208
- return {
209
- indices: group.trades.map((_, i) => i),
210
- trades: group.trades.slice(),
211
- responseTrades: group.responseTrades.slice(),
212
- };
213
- }
214
- return { indices, trades, responseTrades };
215
- }
216
- function tradeDifferentiationKey(trade) {
217
- return [computeTradeExternalCallHash(trade) ?? "", trade.metadata ?? ""].join("|");
218
- }
219
- function tradeMatchesIntent(trade, intent) {
220
- return ((0, hex_1.hexEquals)(intent.externalCallHash, computeTradeExternalCallHash(trade))
221
- && (0, hex_1.hexEquals)(intent.dlnMetadata, trade.metadata)
222
- && (0, hex_1.isEmptyHex)(intent.executionMetadata));
223
- }
224
- // Returns the same hash the API stores in `intent.externalCallHash` for a
225
- // request trade, or `undefined` when the trade has no hook. Swallows any
226
- // serialization failure: `validateExternalCallHash` reports it on its own; here
227
- // we just treat the trade as un-matchable so the fallback in
228
- // `selectIntentTrades` keeps the broader group intact.
229
- function computeTradeExternalCallHash(trade) {
230
- try {
231
- const packed = (0, evm_dln_hook_pack_1.serializeDlnHook)(trade);
232
- return packed === undefined ? undefined : (0, viem_1.keccak256)(packed);
233
- }
234
- catch {
235
- return undefined;
236
- }
237
- }
238
100
  //# sourceMappingURL=trade-grouping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"trade-grouping.js","sourceRoot":"","sources":["../../../src/validations/trade-grouping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trade-grouping.js","sourceRoot":"","sources":["../../../src/validations/trade-grouping.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,6 @@ function validateTrades(request, response, quoteMode) {
24
24
  if (!quoteMode) {
25
25
  violations.push(...(0, trade_intent_consistency_1.validateRelatedIntentIds)(response));
26
26
  }
27
- violations.push(...validatePartnerCost(request, response));
28
27
  return violations;
29
28
  }
30
29
  function validateSingleTrade(reqTrade, resTrade, tradeIndex, quoteMode) {
@@ -169,14 +168,8 @@ function checkOperatingExpensePositive(resTrade, src, parsedExpense, basePath) {
169
168
  return [];
170
169
  const expensePath = `${basePath}.srcChainTokenIn.approximateOperatingExpense`;
171
170
  const violations = [];
172
- // MEDIUM: if `mutatedWithOperatingExpense` is true, expense must be > 0.
173
- // Exception: secondary trades in a group share `constraintBudget`/expenses
174
- // with the primary trade — the API marks them mutated (because their
175
- // amount IS part of the mutated group budget) but reports
176
- // `approximateOperatingExpense=0` and omits `prependedOperatingExpenseCost`.
177
- // We detect this case by the absent `prependedOperatingExpenseCost`.
178
- const isSecondaryInGroup = resTrade.prependedOperatingExpenseCost === undefined;
179
- if (src.mutatedWithOperatingExpense && !isSecondaryInGroup) {
171
+ // MEDIUM: if mutatedWithOperatingExpense is true, expense must be > 0
172
+ if (src.mutatedWithOperatingExpense) {
180
173
  violations.push({
181
174
  code: types_1.ViolationCode.TradeOperatingExpenseExpectedPositive,
182
175
  message: "approximateOperatingExpense should be > 0"
@@ -185,32 +178,27 @@ function checkOperatingExpensePositive(resTrade, src, parsedExpense, basePath) {
185
178
  actual: src.approximateOperatingExpense,
186
179
  });
187
180
  }
188
- // MEDIUM: if `prependedOperatingExpenseCost` is non-zero, expense must be > 0.
189
- // Skip when the field is absent — secondary trades in a group don't carry
190
- // it (expenses accumulate on the primary trade); `BigInt(undefined)` would
191
- // throw and produce a misleading `TradePrependedCostInvalid`.
192
- if (resTrade.prependedOperatingExpenseCost !== undefined) {
193
- try {
194
- if (BigInt(resTrade.prependedOperatingExpenseCost) !== 0n) {
195
- violations.push({
196
- code: types_1.ViolationCode.TradeOperatingExpenseExpectedPositive,
197
- message: "approximateOperatingExpense should be > 0"
198
- + " when prependedOperatingExpenseCost is non-zero",
199
- path: expensePath,
200
- actual: src.approximateOperatingExpense,
201
- });
202
- }
203
- }
204
- catch (e) {
181
+ // MEDIUM: if prependedOperatingExpenseCost is non-zero, expense must be > 0
182
+ try {
183
+ if (BigInt(resTrade.prependedOperatingExpenseCost) !== 0n) {
205
184
  violations.push({
206
- code: types_1.ViolationCode.TradePrependedCostInvalid,
207
- message: "prependedOperatingExpenseCost is not a valid number",
208
- path: `${basePath}.prependedOperatingExpenseCost`,
209
- actual: resTrade.prependedOperatingExpenseCost,
210
- details: e,
185
+ code: types_1.ViolationCode.TradeOperatingExpenseExpectedPositive,
186
+ message: "approximateOperatingExpense should be > 0"
187
+ + " when prependedOperatingExpenseCost is non-zero",
188
+ path: expensePath,
189
+ actual: src.approximateOperatingExpense,
211
190
  });
212
191
  }
213
192
  }
193
+ catch (e) {
194
+ violations.push({
195
+ code: types_1.ViolationCode.TradePrependedCostInvalid,
196
+ message: "prependedOperatingExpenseCost is not a valid number",
197
+ path: `${basePath}.prependedOperatingExpenseCost`,
198
+ actual: resTrade.prependedOperatingExpenseCost,
199
+ details: e,
200
+ });
201
+ }
214
202
  return violations;
215
203
  }
216
204
  function validateMutatedWithOperatingExpense(reqTrade, src, path) {
@@ -266,11 +254,6 @@ function validateSrcChainTokenOut(reqTrade, resTrade, basePath) {
266
254
  details: e,
267
255
  }];
268
256
  }
269
- // CRITICAL: USD value must be non-negative when present. API may omit
270
- // the field entirely if its price-feed call fails.
271
- if (resTrade.srcChainTokenOut.approximateUsdValue !== undefined) {
272
- return checkNonNegativeUsd(resTrade.srcChainTokenOut.approximateUsdValue, `${basePath}.srcChainTokenOut.approximateUsdValue`);
273
- }
274
257
  return [];
275
258
  }
276
259
  // =============================================
@@ -391,37 +374,22 @@ function validateWithoutPartnerFeeAmount(reqTrade, dst, path) {
391
374
  details: e,
392
375
  }];
393
376
  }
394
- const isExactOutputMode = reqTrade.srcChainTokenInAmount === types_1.SpecialAmount.Auto
395
- || (reqTrade.dstChainTokenOutAmount !== undefined
396
- && reqTrade.dstChainTokenOutAmount !== types_1.SpecialAmount.Auto);
397
- if (isExactOutputMode) {
398
- if (withoutFee < 0n) {
399
- return [{
400
- code: types_1.ViolationCode.TradeWithoutPartnerFeeAmountMismatch,
401
- message: "withoutPartnerFeeBpsAmount must be non-negative",
402
- path: feePath,
403
- actual: dst.withoutPartnerFeeBpsAmount,
404
- }];
405
- }
406
- return [];
377
+ const hasPartnerFee = (reqTrade.partnerFeeBps ?? 0) > 0;
378
+ // CRITICAL: with partner fee — withoutPartnerFeeBpsAmount must be >= amount
379
+ if (hasPartnerFee && withoutFee < amount) {
380
+ return [{
381
+ code: types_1.ViolationCode.TradeWithoutPartnerFeeAmountTooLow,
382
+ message: "withoutPartnerFeeBpsAmount must be >= amount when partnerFeeBps > 0",
383
+ path: feePath,
384
+ expected: dst.amount,
385
+ actual: dst.withoutPartnerFeeBpsAmount,
386
+ }];
407
387
  }
408
- // CRITICAL: `withoutPartnerFeeBpsAmount` must be >= amount in non-exact-output.
409
- // Semantics: `withoutPartnerFee` = "what we'd get without partner fee deduction".
410
- // - With partner fee > 0: strictly greater (the fee is deducted from this).
411
- // - With partner fee = 0: nominally equal, but API recalculation introduces
412
- // sub-wei rounding when bigints divide unevenly. We thus
413
- // accept any `withoutFee >= amount`. A tampered value above amount has
414
- // no economic gain because `withoutPartnerFeeBpsAmount` is not what user
415
- // signs, it's just an informative field.
416
- if (withoutFee < amount) {
417
- const hasPartnerFee = (reqTrade.partnerFeeBps ?? 0) > 0;
388
+ // CRITICAL: without partner fee — must equal amount
389
+ if (!hasPartnerFee && withoutFee !== amount) {
418
390
  return [{
419
- code: hasPartnerFee
420
- ? types_1.ViolationCode.TradeWithoutPartnerFeeAmountTooLow
421
- : types_1.ViolationCode.TradeWithoutPartnerFeeAmountMismatch,
422
- message: hasPartnerFee
423
- ? "withoutPartnerFeeBpsAmount must be >= amount when partnerFeeBps > 0"
424
- : "withoutPartnerFeeBpsAmount must be >= amount",
391
+ code: types_1.ViolationCode.TradeWithoutPartnerFeeAmountMismatch,
392
+ message: "withoutPartnerFeeBpsAmount must equal amount when no partner fee",
425
393
  path: feePath,
426
394
  expected: dst.amount,
427
395
  actual: dst.withoutPartnerFeeBpsAmount,
@@ -481,28 +449,22 @@ function validateAddressEcho(expected, actual, code, path, fieldName, realChainI
481
449
  function validatePrependedOperatingExpenseCost(reqTrade, resTrade, basePath) {
482
450
  const prependExpenses = reqTrade.prependOperatingExpenses ?? false;
483
451
  const isAuto = reqTrade.srcChainTokenInAmount === types_1.SpecialAmount.Auto;
484
- const isMax = reqTrade.srcChainTokenInAmount === types_1.SpecialAmount.Max;
485
- // Only check: when prependOperatingExpenses is false AND not auto/max → must be zero
486
- if (prependExpenses || isAuto || isMax)
487
- return [];
488
- // Treat absent field as "0" — the API omits it on secondary trades in a
489
- // group (expenses accumulate on the primary trade). For `prepend=false`
490
- // requests we still expect zero, and absent means zero.
491
- if (resTrade.prependedOperatingExpenseCost === undefined)
452
+ // Only check: when prependOperatingExpenses is false AND not auto → must be zero
453
+ if (prependExpenses || isAuto)
492
454
  return [];
493
455
  const costPath = `${basePath}.prependedOperatingExpenseCost`;
494
- // CRITICAL: `prependedOperatingExpenseCost` must be zero
456
+ // CRITICAL: prependedOperatingExpenseCost must be zero
495
457
  let parsed;
496
458
  try {
497
459
  parsed = BigInt(resTrade.prependedOperatingExpenseCost);
498
460
  }
499
- catch (error) {
461
+ catch (e) {
500
462
  return [{
501
463
  code: types_1.ViolationCode.TradePrependedCostInvalid,
502
464
  message: "prependedOperatingExpenseCost is not a valid number",
503
465
  path: costPath,
504
466
  actual: resTrade.prependedOperatingExpenseCost,
505
- details: error,
467
+ details: e,
506
468
  }];
507
469
  }
508
470
  if (parsed !== 0n) {
@@ -521,95 +483,11 @@ function validatePrependedOperatingExpenseCost(reqTrade, resTrade, basePath) {
521
483
  // =============================================
522
484
  // partnerFeeBps
523
485
  // =============================================
524
- // API aggregates per-trade partner fees into a single bundle-wide cost item:
525
- // `amount` is the sum across trades, `feeBps` is taken from the first per-trade
526
- // entry — which is always trade index 0 since the API preserves request order.
527
- function validatePartnerCost(request, response) {
528
- const partnerCosts = response.bundleCosts.filter(c => c.type === types_1.CostItemType.PARTNER_COST);
529
- if (partnerCosts.length === 0) {
530
- return [{
531
- code: types_1.ViolationCode.PartnerCostMissing,
532
- message: "bundleCosts[PARTNER_COST] entry is missing",
533
- path: "response.bundleCosts",
534
- }];
535
- }
536
- const violations = [];
537
- const partnerCost = partnerCosts[0];
538
- const path = `response.bundleCosts[PARTNER_COST]`;
539
- let amount;
540
- try {
541
- amount = BigInt(partnerCost.amount);
542
- }
543
- catch (error) {
544
- return [{
545
- code: types_1.ViolationCode.PartnerCostAmountInvalid,
546
- message: "PARTNER_COST.amount is not a valid integer",
547
- path: `${path}.amount`,
548
- actual: partnerCost.amount,
549
- details: error,
550
- }];
551
- }
552
- if (amount < 0n) {
553
- violations.push({
554
- code: types_1.ViolationCode.PartnerCostAmountInvalid,
555
- message: "PARTNER_COST.amount must be non-negative",
556
- path: `${path}.amount`,
557
- actual: partnerCost.amount,
558
- });
559
- }
560
- const feeBps = partnerCost.feeBps;
561
- if (feeBps !== undefined && feeBps < 0) {
562
- violations.push({
563
- code: types_1.ViolationCode.PartnerCostFeeBpsInvalid,
564
- message: "PARTNER_COST.feeBps must be non-negative",
565
- path: `${path}.feeBps`,
566
- actual: feeBps,
567
- });
568
- }
569
- const requestedFees = request.trades.map(t => t.partnerFeeBps ?? 0);
570
- const anyNonZero = requestedFees.some(b => b > 0);
571
- // CRITICAL: when no trade has a partner fee, the aggregated amount must be zero.
572
- if (!anyNonZero && amount !== 0n) {
573
- violations.push({
574
- code: types_1.ViolationCode.PartnerCostAmountUnexpectedlyNonZero,
575
- message: "PARTNER_COST.amount must be 0 when no trade has partnerFeeBps > 0",
576
- path: `${path}.amount`,
577
- expected: "0",
578
- actual: partnerCost.amount,
579
- });
580
- }
581
- // CRITICAL: when at least one trade has a partner fee, the aggregated amount must be > 0.
582
- if (anyNonZero && amount === 0n) {
583
- violations.push({
584
- code: types_1.ViolationCode.PartnerCostAmountUnexpectedlyZero,
585
- message: "PARTNER_COST.amount must be > 0 when at least one trade has partnerFeeBps > 0",
586
- path: `${path}.amount`,
587
- actual: partnerCost.amount,
588
- });
589
- }
590
- // CRITICAL: feeBps must echo request.trades[0].partnerFeeBps (or 0 when omitted).
591
- if (feeBps !== undefined && request.trades.length > 0) {
592
- const expected = requestedFees[0];
593
- if (feeBps !== expected) {
594
- violations.push({
595
- code: types_1.ViolationCode.PartnerCostFeeBpsMismatch,
596
- message: "PARTNER_COST.feeBps does not match request.trades[0].partnerFeeBps",
597
- path: `${path}.feeBps`,
598
- expected,
599
- actual: feeBps,
600
- });
601
- }
602
- }
603
- return violations;
604
- }
605
- // Soft-check: API does not currently echo `response.trades[].partnerFeeBps`.
606
- // Authoritative source is `bundleCosts[PARTNER_COST]` (see `validatePartnerCost`).
607
486
  function validatePartnerFeeBps(reqTrade, resTrade, basePath) {
487
+ // Only check if partnerFeeBps is specified in request.
608
488
  if (reqTrade.partnerFeeBps === undefined)
609
489
  return [];
610
- if (resTrade.partnerFeeBps === undefined)
611
- return [];
612
- // LOW: forward-compat — if API ever starts echoing the field, it must match.
490
+ // CRITICAL: partnerFeeBps must match request value
613
491
  if (resTrade.partnerFeeBps !== reqTrade.partnerFeeBps) {
614
492
  return [{
615
493
  code: types_1.ViolationCode.TradePartnerFeeBpsMismatch,
@@ -1 +1 @@
1
- {"version":3,"file":"trades.js","sourceRoot":"","sources":["../../../src/validations/trades.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trades.js","sourceRoot":"","sources":["../../../src/validations/trades.ts"],"names":[],"mappings":"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"}
@@ -7,15 +7,21 @@ const echo_fields_1 = require("./validations/echo-fields");
7
7
  const required_actions_1 = require("./validations/required-actions");
8
8
  const hooks_common_1 = require("./validations/hooks-common");
9
9
  const trades_1 = require("./validations/trades");
10
- const intent_1 = require("./validations/intent");
11
- const trade_grouping_1 = require("./validations/trade-grouping");
12
10
  const environment_config_1 = require("./whitelists/environment-config");
13
11
  function createValidator(config) {
14
12
  const envConfig = (0, environment_config_1.buildEnvironmentConfig)(config.environment);
15
13
  return {
16
- validate(_url, // currently unused but kept for future use
17
- request, response) {
14
+ validate(url, request, response) {
18
15
  const violations = [];
16
+ // MEDIUM: URL must match an allowed URL for the configured environment
17
+ if (!envConfig.allowedUrls.some(allowed => urlsEqual(url, allowed))) {
18
+ violations.push({
19
+ code: types_1.ViolationCode.UrlNotWhitelisted,
20
+ message: "URL does not match any allowed URL for this environment",
21
+ path: "url",
22
+ actual: url,
23
+ });
24
+ }
19
25
  const reqResult = types_1.BundleCreationRequestSchema.safeParse(request);
20
26
  const resResult = types_1.BundleCreationResponseSchema.safeParse(response);
21
27
  if (!reqResult.success) {
@@ -37,7 +43,7 @@ function createValidator(config) {
37
43
  if (!reqResult.success || !resResult.success) {
38
44
  // If the structure is invalid, we can't do any meaningful validation,
39
45
  // so we do not continue with field validations and just report
40
- // the structure issues.
46
+ // the structure issues (+ URL violation if any).
41
47
  return { ok: false, violations };
42
48
  }
43
49
  violations.push(...validateBundleCreation(reqResult.data, resResult.data, envConfig));
@@ -50,18 +56,17 @@ function createValidator(config) {
50
56
  }
51
57
  function validateBundleCreation(request, response, envConfig) {
52
58
  const quoteMode = isQuoteMode(request);
53
- const { groups, violations: groupViolations } = (0, trade_grouping_1.groupTrades)(request.trades, response.trades, quoteMode);
54
- const { contexts, violations: matchViolations } = (0, trade_grouping_1.matchIntentsToGroups)(response.intents, groups, quoteMode);
55
59
  return [
56
60
  ...(0, echo_fields_1.validateEchoFields)(request, response),
57
61
  ...(0, trades_1.validateTrades)(request, response, quoteMode),
58
- ...groupViolations,
59
- ...matchViolations,
60
- ...(0, intent_1.validateIntents)(contexts, quoteMode, envConfig),
61
- ...(0, required_actions_1.validateRequiredActions)(request, response, contexts, quoteMode, envConfig),
62
+ ...(0, required_actions_1.validateRequiredActions)(request, response, quoteMode, envConfig),
62
63
  ...(0, hooks_common_1.validateHooks)(request, response, quoteMode),
63
64
  ];
64
65
  }
66
+ // Compares URLs ignoring a trailing slash
67
+ function urlsEqual(a, b) {
68
+ return a.replace(/\/$/, "") === b.replace(/\/$/, "");
69
+ }
65
70
  function isQuoteMode(request) {
66
71
  return request.trades.every(t => t.srcChainAuthorityAddress === undefined &&
67
72
  t.dstChainTokenOutRecipient === undefined &&
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":"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"}