@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
@@ -7,7 +7,13 @@ const evm_token_1 = require("./evm-token");
7
7
  // Sums srcChainTokenInAmount for trades matching a given token address.
8
8
  // Returns skip=true if any matching trade has max/auto amount.
9
9
  // Returns violations if any matching trade has an invalid (non-numeric) amount.
10
- function sumTradeAmounts(trades, tokenAddress, realChainId) {
10
+ //
11
+ // When `responseTrades` is provided, trades with `prependOperatingExpenses=true`
12
+ // also contribute `response.trades[i].srcChainTokenIn.approximateOperatingExpense`
13
+ // to the sum. This reflects how the API computes `intent.inputToken[].constraintBudget`
14
+ // (= mutated amount with prepended expense), which is the value used for Wrap.value
15
+ // and Budget approve amount on the same input token.
16
+ function sumTradeAmounts(trades, tokenAddress, realChainId, responseTrades) {
11
17
  let sum = 0n;
12
18
  // Resolve native → WETH so Budget for WETH matches trades with native input (and vice versa)
13
19
  const resolvedToken = (0, evm_token_1.resolveWrappedTokenAddress)(tokenAddress, realChainId) ?? tokenAddress;
@@ -36,7 +42,36 @@ function sumTradeAmounts(trades, tokenAddress, realChainId) {
36
42
  }],
37
43
  };
38
44
  }
45
+ if (responseTrades && (trade.prependOperatingExpenses ?? false)) {
46
+ const expenseResult = parsePrependedExpense(responseTrades, i);
47
+ if (expenseResult.violations)
48
+ return expenseResult;
49
+ sum += expenseResult.value;
50
+ }
39
51
  }
40
52
  return { sum };
41
53
  }
54
+ // Reads response.trades[i].srcChainTokenIn.approximateOperatingExpense as bigint.
55
+ // If responseTrades has no matching index, treat as 0 — the trade-count mismatch
56
+ // is reported by `validateTrades` and we should not add a duplicate violation here.
57
+ function parsePrependedExpense(responseTrades, tradeIndex) {
58
+ const responseTrade = responseTrades[tradeIndex];
59
+ if (!responseTrade)
60
+ return { value: 0n };
61
+ const raw = responseTrade.srcChainTokenIn.approximateOperatingExpense;
62
+ try {
63
+ return { value: BigInt(raw) };
64
+ }
65
+ catch (e) {
66
+ return {
67
+ violations: [{
68
+ code: types_1.ViolationCode.TradeOperatingExpenseInvalid,
69
+ message: "approximateOperatingExpense is not a valid number",
70
+ path: `response.trades[${tradeIndex}].srcChainTokenIn.approximateOperatingExpense`,
71
+ actual: raw,
72
+ details: e,
73
+ }],
74
+ };
75
+ }
76
+ }
42
77
  //# sourceMappingURL=evm-trade-amounts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evm-trade-amounts.js","sourceRoot":"","sources":["../../../src/helpers/evm-trade-amounts.ts"],"names":[],"mappings":";;AAkBA,0CAuCC;AAzDD,oCAMkB;AAClB,uCAA6C;AAC7C,2CAAyD;AAOzD,wEAAwE;AACxE,+DAA+D;AAC/D,gFAAgF;AAChF,SAAgB,eAAe,CAC3B,MAAsB,EACtB,YAAoB,EACpB,WAAoB;IAEpB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,6FAA6F;IAC7F,MAAM,aAAa,GAAG,IAAA,sCAA0B,EAAC,YAAY,EAAE,WAAW,CAAC,IAAI,YAAY,CAAC;IAC5F,MAAM,UAAU,GAAG,IAAA,0BAAgB,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAEhE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,kBAAkB,GAAG,IAAA,sCAA0B,EAAC,KAAK,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAC1F,MAAM,oBAAoB,GAAG,IAAA,0BAAgB,EACzC,WAAW,EAAE,kBAAkB,IAAI,KAAK,CAAC,eAAe,CAC3D,CAAC;QACF,IAAI,oBAAoB,KAAK,UAAU,EAAE,CAAC;YACtC,SAAS;QACb,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,qBAAqB,CAAC;QAC3C,IAAI,MAAM,KAAK,qBAAa,CAAC,GAAG,IAAI,MAAM,KAAK,qBAAa,CAAC,IAAI,EAAE,CAAC;YAChE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC;YACD,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACL,OAAO;gBACH,UAAU,EAAE,CAAC;wBACT,IAAI,EAAE,qBAAa,CAAC,kBAAkB;wBACtC,OAAO,EAAE,mDAAmD;wBAC5D,IAAI,EAAE,kBAAkB,CAAC,yBAAyB;wBAClD,MAAM,EAAE,MAAM;qBACjB,CAAC;aACL,CAAC;QACN,CAAC;IACL,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"evm-trade-amounts.js","sourceRoot":"","sources":["../../../src/helpers/evm-trade-amounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractGasCompensationGroups = extractGasCompensationGroups;
4
+ const address_1 = require("./address");
5
+ const subscription_to_chain_id_1 = require("../whitelists/subscription-to-chain-id");
6
+ // Groups `gasCompensationInfo` entries from request.preHooks by
7
+ // (chainId, tokenAddress, sender). One compensation hook per
8
+ // unique group is expected to be appended to response.preHooks.
9
+ // Groups with an unknown subscription chainId are skipped — they'll surface as
10
+ // `UnknownSubscriptionId` via the trade-grouping pass.
11
+ function extractGasCompensationGroups(request) {
12
+ const seen = new Set();
13
+ const groups = [];
14
+ for (const hook of request.preHooks ?? []) {
15
+ const info = hook.gasCompensationInfo;
16
+ if (!info)
17
+ continue;
18
+ const realChainId = (0, subscription_to_chain_id_1.resolveChainId)(info.chainId);
19
+ if (realChainId === undefined)
20
+ continue;
21
+ const key = `${realChainId}`
22
+ + `:${(0, address_1.normalizeAddress)(realChainId, info.tokenAddress)}`
23
+ + `:${(0, address_1.normalizeAddress)(realChainId, info.sender)}`;
24
+ if (seen.has(key))
25
+ continue;
26
+ seen.add(key);
27
+ groups.push({
28
+ chainId: info.chainId,
29
+ realChainId,
30
+ tokenAddress: info.tokenAddress,
31
+ sender: info.sender,
32
+ });
33
+ }
34
+ return groups;
35
+ }
36
+ //# sourceMappingURL=gas-compensation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gas-compensation.js","sourceRoot":"","sources":["../../../src/helpers/gas-compensation.ts"],"names":[],"mappings":";;AAiBA,oEA8BC;AA7CD,uCAA6C;AAC7C,qFAAwE;AASxE,gEAAgE;AAChE,6DAA6D;AAC7D,gEAAgE;AAChE,+EAA+E;AAC/E,uDAAuD;AACvD,SAAgB,4BAA4B,CACxC,OAA8B;IAE9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,WAAW,GAAG,IAAA,yCAAc,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,WAAW,KAAK,SAAS;YAAE,SAAS;QAExC,MAAM,GAAG,GAAG,GAAG,WAAW,EAAE;cACtB,IAAI,IAAA,0BAAgB,EAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;cACtD,IAAI,IAAA,0BAAgB,EAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAEvD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAE5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEd,MAAM,CAAC,IAAI,CAAC;YACR,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW;YACX,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAC;IACP,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEmptyHex = isEmptyHex;
4
+ exports.hexEquals = hexEquals;
5
+ const viem_1 = require("viem");
6
+ // Treats undefined, "0x" and `zeroHash` (`0x000...0`) as the same empty value.
7
+ function isEmptyHex(value) {
8
+ if (value === undefined)
9
+ return true;
10
+ const normalized = value.toLowerCase();
11
+ return normalized === "0x" || normalized === viem_1.zeroHash;
12
+ }
13
+ // Case-insensitive comparison of two hex strings, with `undefined` / `0x` /
14
+ // `zeroHash` treated as a single equivalence class. Use whenever an API field
15
+ // can be omitted, empty, or zero-padded interchangeably.
16
+ function hexEquals(a, b) {
17
+ if (isEmptyHex(a) && isEmptyHex(b))
18
+ return true;
19
+ // If one is `undefined` and the other is not, they are not equal.
20
+ if (a === undefined || b === undefined)
21
+ return false;
22
+ return a.toLowerCase() === b.toLowerCase();
23
+ }
24
+ //# sourceMappingURL=hex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hex.js","sourceRoot":"","sources":["../../../src/helpers/hex.ts"],"names":[],"mappings":";;AAGA,gCAIC;AAKD,8BAUC;AAtBD,+BAAgC;AAEhC,+EAA+E;AAC/E,SAAgB,UAAU,CAAC,KAAyB;IAChD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,eAAQ,CAAC;AAC1D,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,yDAAyD;AACzD,SAAgB,SAAS,CACrB,CAAqB,EACrB,CAAqB;IAErB,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhD,kEAAkE;IAClE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAErD,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlaceholderResolutionErrorReason = exports.HookMode = exports.SOLANA_DEFAULT_PLACEHOLDER_BYTE_COUNT = exports.EVM_DEFAULT_PLACEHOLDER_BYTE_COUNT = void 0;
4
+ exports.encodePlaceholderAmount = encodePlaceholderAmount;
5
+ exports.computeCumulativeTradeAmount = computeCumulativeTradeAmount;
6
+ exports.resolveEagerPlaceholders = resolveEagerPlaceholders;
7
+ const enums_1 = require("../types/enums");
8
+ const address_1 = require("./address");
9
+ const MIN_PLACEHOLDER_BYTE_COUNT = 1;
10
+ const MAX_PLACEHOLDER_BYTE_COUNT = 32;
11
+ exports.EVM_DEFAULT_PLACEHOLDER_BYTE_COUNT = MAX_PLACEHOLDER_BYTE_COUNT;
12
+ exports.SOLANA_DEFAULT_PLACEHOLDER_BYTE_COUNT = 8;
13
+ var HookMode;
14
+ (function (HookMode) {
15
+ HookMode[HookMode["PreHooks"] = 0] = "PreHooks";
16
+ HookMode[HookMode["PostHooks"] = 1] = "PostHooks";
17
+ })(HookMode || (exports.HookMode = HookMode = {}));
18
+ var PlaceholderResolutionErrorReason;
19
+ (function (PlaceholderResolutionErrorReason) {
20
+ PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["MissingTokenOrAddress"] = 0] = "MissingTokenOrAddress";
21
+ PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["NegativeAmount"] = 1] = "NegativeAmount";
22
+ PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["Overflow"] = 2] = "Overflow";
23
+ PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["InvalidByteCount"] = 3] = "InvalidByteCount";
24
+ PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["InvalidAdditionalAmount"] = 4] = "InvalidAdditionalAmount";
25
+ PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["NoMatchingTradeOrAdditional"] = 5] = "NoMatchingTradeOrAdditional";
26
+ })(PlaceholderResolutionErrorReason || (exports.PlaceholderResolutionErrorReason = PlaceholderResolutionErrorReason = {}));
27
+ // Encodes a non-negative integer as a zero-padded hex string (no "0x" prefix),
28
+ // fitting exactly `byteCount` bytes, using the chain engine's endianness.
29
+ // Solana: little-endian. EVM/Tron: big-endian.
30
+ // `byteCount` must be an integer in
31
+ // [MIN_PLACEHOLDER_BYTE_COUNT, MAX_PLACEHOLDER_BYTE_COUNT].
32
+ function encodePlaceholderAmount(amount, byteCount, engine) {
33
+ if (!isValidByteCount(byteCount)) {
34
+ return { ok: false, reason: PlaceholderResolutionErrorReason.InvalidByteCount };
35
+ }
36
+ if (amount < 0n) {
37
+ return { ok: false, reason: PlaceholderResolutionErrorReason.NegativeAmount };
38
+ }
39
+ const maxValue = (1n << BigInt(byteCount * 8)) - 1n;
40
+ if (amount > maxValue) {
41
+ return { ok: false, reason: PlaceholderResolutionErrorReason.Overflow };
42
+ }
43
+ if (engine === enums_1.ChainEngine.Solana) { // Use little-endian for Solana
44
+ const bytes = [];
45
+ let value = amount;
46
+ for (let i = 0; i < byteCount; i++) {
47
+ bytes.push((value & 0xffn).toString(16).padStart(2, "0"));
48
+ value >>= 8n;
49
+ }
50
+ return { ok: true, hex: bytes.join("") };
51
+ }
52
+ // Use big-endian (EVM/Tron): simple hex conversion with left-padding.
53
+ return { ok: true, hex: amount.toString(16).padStart(byteCount * 2, "0") };
54
+ }
55
+ function isValidByteCount(byteCount) {
56
+ return Number.isInteger(byteCount)
57
+ && byteCount >= MIN_PLACEHOLDER_BYTE_COUNT
58
+ && byteCount <= MAX_PLACEHOLDER_BYTE_COUNT;
59
+ }
60
+ // Sums the trade amount matching the placeholder's (chainId, tokenAddress, address).
61
+ // preHooks: sums trade.srcChainTokenIn.amount across trades where
62
+ // trade.srcChainTokenIn.{chainId,address} and trade.srcChainAuthorityAddress match.
63
+ // postHooks: sums trade.dstChainTokenOut.amount across trades where
64
+ // trade.dstChainTokenOut.{chainId,address} and trade.dstChainTokenOutRecipient match.
65
+ // In quote mode authority/recipient is undefined — such trades are skipped.
66
+ function computeCumulativeTradeAmount(trades, mode, chainId, tokenAddress, address) {
67
+ let sum = 0n;
68
+ let matchCount = 0;
69
+ for (const trade of trades) {
70
+ const tradeChainId = mode === HookMode.PreHooks
71
+ ? trade.srcChainTokenIn.chainId
72
+ : trade.dstChainTokenOut.chainId;
73
+ if (tradeChainId !== chainId)
74
+ continue;
75
+ const tradeAuthority = mode === HookMode.PreHooks
76
+ ? trade.srcChainAuthorityAddress
77
+ : trade.dstChainTokenOutRecipient;
78
+ if (tradeAuthority === undefined)
79
+ continue;
80
+ const tradeToken = mode === HookMode.PreHooks
81
+ ? trade.srcChainTokenIn.address
82
+ : trade.dstChainTokenOut.address;
83
+ if (!(0, address_1.addressEquals)(chainId, tradeToken, tokenAddress))
84
+ continue;
85
+ if (!(0, address_1.addressEquals)(chainId, tradeAuthority, address))
86
+ continue;
87
+ const amount = mode === HookMode.PreHooks
88
+ ? trade.srcChainTokenIn.amount
89
+ : trade.dstChainTokenOut.amount;
90
+ sum += BigInt(amount);
91
+ matchCount++;
92
+ }
93
+ return { cumulative: sum, matchCount };
94
+ }
95
+ // Applies eager-placeholder substitution to a hex string (calldata or value).
96
+ // Markers: `{name}` or `{name.N}` (N = byte count).
97
+ // Deferred placeholders are not touched — their markers remain in the output.
98
+ // If any eager placeholder cannot be resolved, its marker is left intact and the
99
+ // error is collected into `errors`; callers decide how to report it.
100
+ function resolveEagerPlaceholders(data, hookChainId, placeholders, trades, mode) {
101
+ const engine = (0, address_1.getChainEngine)(hookChainId);
102
+ const defaultByteCount = engine === enums_1.ChainEngine.Solana
103
+ ? exports.SOLANA_DEFAULT_PLACEHOLDER_BYTE_COUNT
104
+ : exports.EVM_DEFAULT_PLACEHOLDER_BYTE_COUNT;
105
+ let result = data;
106
+ const errors = [];
107
+ for (const placeholder of placeholders) {
108
+ if (placeholder.type === enums_1.PlaceholderType.Deferred)
109
+ continue;
110
+ // Eager placeholder — type is either explicitly 'eager' or undefined (default).
111
+ if (placeholder.tokenAddress === undefined
112
+ || placeholder.address === undefined) {
113
+ // Zod guards this at the schema level; defensive branch for callers
114
+ // that bypass structural validation.
115
+ errors.push({
116
+ nameVariable: placeholder.nameVariable,
117
+ reason: PlaceholderResolutionErrorReason.MissingTokenOrAddress,
118
+ });
119
+ continue;
120
+ }
121
+ let additional = 0n;
122
+ if (placeholder.additionalAmount !== undefined) {
123
+ try {
124
+ additional = BigInt(placeholder.additionalAmount);
125
+ }
126
+ catch (error) {
127
+ errors.push({
128
+ nameVariable: placeholder.nameVariable,
129
+ reason: PlaceholderResolutionErrorReason.InvalidAdditionalAmount,
130
+ details: error,
131
+ });
132
+ continue;
133
+ }
134
+ }
135
+ const { cumulative, matchCount } = computeCumulativeTradeAmount(trades, mode, hookChainId, placeholder.tokenAddress, placeholder.address);
136
+ const expectedAmount = cumulative + additional;
137
+ const nameEscaped = escapeRegex(placeholder.nameVariable);
138
+ const markerRegex = new RegExp(`\\{${nameEscaped}(?:\\.(\\d+))?\\}`, "g");
139
+ // MEDIUM: when no trade matches and no `additionalAmount` is supplied,
140
+ // the API rejects the request. Here we are mirroring this logic.
141
+ if (matchCount === 0
142
+ && placeholder.additionalAmount === undefined
143
+ && markerRegex.test(result)) {
144
+ errors.push({
145
+ nameVariable: placeholder.nameVariable,
146
+ reason: PlaceholderResolutionErrorReason.NoMatchingTradeOrAdditional,
147
+ });
148
+ // Reset RegExp.lastIndex before the `replace` below.
149
+ markerRegex.lastIndex = 0;
150
+ // Skip substitution — leave marker in `result` so calldata comparison
151
+ // surfaces any mutated value as a separate violation.
152
+ continue;
153
+ }
154
+ result = result.replace(markerRegex, (match, byteCountStr) => {
155
+ const byteCount = byteCountStr
156
+ ? parseInt(byteCountStr, 10)
157
+ : defaultByteCount;
158
+ const encoded = encodePlaceholderAmount(expectedAmount, byteCount, engine);
159
+ if (!encoded.ok) {
160
+ errors.push({
161
+ nameVariable: placeholder.nameVariable,
162
+ reason: encoded.reason,
163
+ });
164
+ return match;
165
+ }
166
+ return encoded.hex;
167
+ });
168
+ }
169
+ return { resolved: result, errors };
170
+ }
171
+ function escapeRegex(s) {
172
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
173
+ }
174
+ //# sourceMappingURL=placeholder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"placeholder.js","sourceRoot":"","sources":["../../../src/helpers/placeholder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setsEqual = setsEqual;
4
+ function setsEqual(a, b) {
5
+ if (a.size !== b.size)
6
+ return false;
7
+ for (const item of a) {
8
+ if (!b.has(item))
9
+ return false;
10
+ }
11
+ return true;
12
+ }
13
+ //# sourceMappingURL=sets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sets.js","sourceRoot":"","sources":["../../../src/helpers/sets.ts"],"names":[],"mappings":";;AAAA,8BAQC;AARD,SAAgB,SAAS,CAAI,CAAiB,EAAE,CAAiB;IAC7D,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;IACnC,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  // --- API mode ---
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.SubscriptionId = exports.ChainId = exports.CostItemType = exports.SolanaActionOperation = exports.SolanaActionKind = exports.EvmActionOperation = exports.EvmActionKind = exports.SpecialAmount = exports.ApprovalMode = exports.ApproveAmountFlag = exports.TradingAlgorithm = exports.ApiMode = void 0;
4
+ exports.SubscriptionId = exports.ChainId = exports.ChainEngine = exports.CostItemType = exports.SolanaActionOperation = exports.SolanaActionKind = exports.EvmActionOperation = exports.EvmActionKind = exports.DlnHookType = exports.SpecialChainId = exports.SpecialAmount = exports.PlaceholderType = exports.BundleHookType = exports.ApprovalMode = exports.ApproveAmountFlag = exports.TradingAlgorithm = exports.ApiMode = void 0;
5
5
  var ApiMode;
6
6
  (function (ApiMode) {
7
7
  ApiMode["Execution"] = "execution";
@@ -23,18 +23,40 @@ var ApprovalMode;
23
23
  ApprovalMode["Approve"] = "approve";
24
24
  ApprovalMode["Permit"] = "permit";
25
25
  })(ApprovalMode || (exports.ApprovalMode = ApprovalMode = {}));
26
+ var BundleHookType;
27
+ (function (BundleHookType) {
28
+ BundleHookType["Delegated"] = "delegated";
29
+ BundleHookType["Direct"] = "direct";
30
+ })(BundleHookType || (exports.BundleHookType = BundleHookType = {}));
31
+ var PlaceholderType;
32
+ (function (PlaceholderType) {
33
+ PlaceholderType["Eager"] = "eager";
34
+ PlaceholderType["Deferred"] = "deferred";
35
+ })(PlaceholderType || (exports.PlaceholderType = PlaceholderType = {}));
26
36
  var SpecialAmount;
27
37
  (function (SpecialAmount) {
28
38
  SpecialAmount["Max"] = "max";
29
39
  SpecialAmount["Auto"] = "auto";
30
40
  })(SpecialAmount || (exports.SpecialAmount = SpecialAmount = {}));
41
+ var SpecialChainId;
42
+ (function (SpecialChainId) {
43
+ SpecialChainId["Any"] = "any";
44
+ })(SpecialChainId || (exports.SpecialChainId = SpecialChainId = {}));
45
+ var DlnHookType;
46
+ (function (DlnHookType) {
47
+ DlnHookType["SolanaSerializedInstructions"] = "solana_serialized_instructions";
48
+ DlnHookType["EvmTransactionCall"] = "evm_transaction_call";
49
+ DlnHookType["EvmHookV1"] = "evm_hook_data_v1";
50
+ })(DlnHookType || (exports.DlnHookType = DlnHookType = {}));
31
51
  // --- EVM Action enums ---
32
52
  var EvmActionKind;
33
53
  (function (EvmActionKind) {
34
54
  EvmActionKind["Transaction"] = "Transaction";
35
55
  EvmActionKind["Sign7702Authorization"] = "Sign7702Authorization";
36
56
  EvmActionKind["Sign712"] = "Sign712";
37
- EvmActionKind["Sign712MetaMask"] = "Sign712MetaMask";
57
+ EvmActionKind["Sign712MetaMaskCaveats"] = "Sign712MetaMask";
58
+ EvmActionKind["Sign712MetaMaskCaveatsWithPlaceholders"] = "Sign712MetaMaskWithPlaceholders";
59
+ EvmActionKind["ProvidePlaceholders"] = "ProvidePlaceholders";
38
60
  EvmActionKind["Permit"] = "Permit";
39
61
  EvmActionKind["Permit2"] = "Permit2";
40
62
  })(EvmActionKind || (exports.EvmActionKind = EvmActionKind = {}));
@@ -74,6 +96,14 @@ var CostItemType;
74
96
  CostItemType["PARTNER_COST"] = "PARTNER_COST";
75
97
  CostItemType["NETWORK_COST"] = "NETWORK_COST";
76
98
  })(CostItemType || (exports.CostItemType = CostItemType = {}));
99
+ // --- Chain engines ---
100
+ // Categorizes chains by their VM/address-format family.
101
+ var ChainEngine;
102
+ (function (ChainEngine) {
103
+ ChainEngine[ChainEngine["EVM"] = 0] = "EVM";
104
+ ChainEngine[ChainEngine["Tron"] = 1] = "Tron";
105
+ ChainEngine[ChainEngine["Solana"] = 2] = "Solana";
106
+ })(ChainEngine || (exports.ChainEngine = ChainEngine = {}));
77
107
  // --- Chain IDs (real, after resolving from subscriptionId) ---
78
108
  var ChainId;
79
109
  (function (ChainId) {
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/types/enums.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/types/enums.ts"],"names":[],"mappings":"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"}
@@ -8,11 +8,32 @@ exports.RequestGasCompensationInfoSchema = zod_1.z.object({
8
8
  chainId: zod_1.z.number(),
9
9
  sender: zod_1.z.string(),
10
10
  });
11
+ // tokenAddress and address are required only for eager placeholders.
12
+ // Deferred placeholders are filled at submit time, so trade-group fields are not needed.
11
13
  exports.RequestPlaceholderSchema = zod_1.z.object({
12
14
  nameVariable: zod_1.z.string(),
13
- tokenAddress: zod_1.z.string(),
14
- address: zod_1.z.string(),
15
+ tokenAddress: zod_1.z.string().optional(),
16
+ address: zod_1.z.string().optional(),
15
17
  additionalAmount: zod_1.z.string().optional(),
18
+ type: zod_1.z.enum(enums_1.PlaceholderType).optional(),
19
+ }).superRefine((placeholder, ctx) => {
20
+ const isEager = placeholder.type === undefined || placeholder.type === enums_1.PlaceholderType.Eager;
21
+ if (!isEager)
22
+ return;
23
+ if (placeholder.tokenAddress === undefined) {
24
+ ctx.addIssue({
25
+ code: "custom",
26
+ message: "eager placeholder requires tokenAddress",
27
+ path: ["tokenAddress"],
28
+ });
29
+ }
30
+ if (placeholder.address === undefined) {
31
+ ctx.addIssue({
32
+ code: "custom",
33
+ message: "eager placeholder requires address",
34
+ path: ["address"],
35
+ });
36
+ }
16
37
  });
17
38
  exports.RequestHookV2Schema = zod_1.z.object({
18
39
  chainId: zod_1.z.number(),
@@ -23,11 +44,20 @@ exports.RequestHookV2Schema = zod_1.z.object({
23
44
  isAtomic: zod_1.z.boolean(),
24
45
  placeHolders: zod_1.z.array(exports.RequestPlaceholderSchema),
25
46
  gasCompensationInfo: exports.RequestGasCompensationInfoSchema.optional(),
47
+ type: zod_1.z.enum(enums_1.BundleHookType).optional(),
48
+ gasLimit: zod_1.z.string().optional(),
26
49
  });
27
50
  exports.RequestCostTokenSchema = zod_1.z.object({
28
51
  chainId: zod_1.z.number(),
29
52
  tokenAddress: zod_1.z.string(),
30
53
  });
54
+ // `chainId` fields below use z.number() rather than a chain enum on purpose:
55
+ // the public API contract narrows accepted chains to a smaller subset than
56
+ // the SDK knows about, but the SDK uses a wider chain set elsewhere (e.g.
57
+ // downstream chain-engine resolution). Validating chain support is delegated
58
+ // to those downstream checks rather than encoded here. Same applies to `chainId`
59
+ // in RequestCostTokenSchema, RequestHookV2Schema, and
60
+ // RequestGasCompensationInfoSchema.
31
61
  exports.RequestTradeSchema = zod_1.z.object({
32
62
  srcChainId: zod_1.z.number(),
33
63
  srcChainTokenIn: zod_1.z.string(),
@@ -43,8 +73,11 @@ exports.RequestTradeSchema = zod_1.z.object({
43
73
  dlnHook: zod_1.z.string().optional(),
44
74
  prependOperatingExpenses: zod_1.z.boolean().optional(),
45
75
  ptp: zod_1.z.boolean().optional(),
46
- metadata: zod_1.z.string().optional(),
76
+ dlnMetadata: zod_1.z.string().optional(),
47
77
  srcAllowedCancelBeneficiary: zod_1.z.string().optional(),
78
+ // Field is intentionally absent from the public API schema but is accepted
79
+ // by the server and round-trips into the response intent. Security-critical
80
+ // for execution-mode validation.
48
81
  srcAllowedSender: zod_1.z.string().optional(),
49
82
  });
50
83
  exports.BundleCreationRequestSchema = zod_1.z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/types/request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/types/request.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,mCAMiB;AAEJ,QAAA,gCAAgC,GAAG,OAAC,CAAC,MAAM,CAAC;IACrD,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;IACxB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAEH,qEAAqE;AACrE,yFAAyF;AAC5E,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;IACxB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,uBAAe,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE;IAChC,MAAM,OAAO,GACT,WAAW,CAAC,IAAI,KAAK,SAAS,IAAI,WAAW,CAAC,IAAI,KAAK,uBAAe,CAAC,KAAK,CAAC;IAEjF,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,IAAI,WAAW,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACzC,GAAG,CAAC,QAAQ,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,yCAAyC;YAClD,IAAI,EAAE,CAAC,cAAc,CAAC;SACzB,CAAC,CAAC;IACP,CAAC;IAED,IAAI,WAAW,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACpC,GAAG,CAAC,QAAQ,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,oCAAoC;YAC7C,IAAI,EAAE,CAAC,SAAS,CAAC;SACpB,CAAC,CAAC;IACP,CAAC;AACL,CAAC,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE;IACrB,YAAY,EAAE,OAAC,CAAC,KAAK,CAAC,gCAAwB,CAAC;IAC/C,mBAAmB,EAAE,wCAAgC,CAAC,QAAQ,EAAE;IAChE,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,sBAAc,CAAC,CAAC,QAAQ,EAAE;IACvC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEU,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;CAC3B,CAAC,CAAC;AAEH,6EAA6E;AAC7E,2EAA2E;AAC3E,0EAA0E;AAC1E,6EAA6E;AAC7E,iFAAiF;AACjF,sDAAsD;AACtD,oCAAoC;AACvB,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE;IAC3B,qBAAqB,EAAE,OAAC,CAAC,MAAM,EAAE;IACjC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC5B,sBAAsB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7C,wBAAwB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/C,yBAAyB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChD,wBAAwB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/C,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,wBAAwB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChD,GAAG,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC3B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,2BAA2B,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClD,2EAA2E;IAC3E,4EAA4E;IAC5E,iCAAiC;IACjC,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAEU,QAAA,2BAA2B,GAAG,OAAC,CAAC,MAAM,CAAC;IAChD,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC/B,wBAAwB,EAAE,OAAC,CAAC,OAAO,EAAE;IACrC,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE;IACrB,gBAAgB,EAAE,OAAC,CAAC,IAAI,CAAC,wBAAgB,CAAC;IAC1C,iBAAiB,EAAE,OAAC,CAAC,IAAI,CAAC,yBAAiB,CAAC,CAAC,QAAQ,EAAE;IACvD,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,oBAAY,CAAC,CAAC,QAAQ,EAAE;IAC7C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,0BAAkB,CAAC;IACnC,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,2BAAmB,CAAC,CAAC,QAAQ,EAAE;IACjD,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,2BAAmB,CAAC,CAAC,QAAQ,EAAE;IAClD,SAAS,EAAE,8BAAsB,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC"}