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

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 (292) 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 +51 -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 +126 -6
  27. package/dist/cjs/types/response.js.map +1 -1
  28. package/dist/cjs/types/validation.js +82 -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 +357 -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 +41 -15
  73. package/dist/cjs/validator.js.map +1 -1
  74. package/dist/cjs/whitelists/api-endpoints.js +10 -0
  75. package/dist/cjs/whitelists/api-endpoints.js.map +1 -0
  76. package/dist/cjs/whitelists/environment-config.js +47 -28
  77. package/dist/cjs/whitelists/environment-config.js.map +1 -1
  78. package/dist/cjs/whitelists/evm/caveat-enforcers.js +21 -5
  79. package/dist/cjs/whitelists/evm/caveat-enforcers.js.map +1 -1
  80. package/dist/cjs/whitelists/evm/delegation-manager.js +7 -2
  81. package/dist/cjs/whitelists/evm/delegation-manager.js.map +1 -1
  82. package/dist/cjs/whitelists/evm/eip7702-delegation.js +7 -2
  83. package/dist/cjs/whitelists/evm/eip7702-delegation.js.map +1 -1
  84. package/dist/cjs/whitelists/evm/index.js +14 -1
  85. package/dist/cjs/whitelists/evm/index.js.map +1 -1
  86. package/dist/cjs/whitelists/evm/metamask-delegation-chains.js +16 -0
  87. package/dist/cjs/whitelists/evm/metamask-delegation-chains.js.map +1 -0
  88. package/dist/cjs/whitelists/evm/permit2.js +16 -12
  89. package/dist/cjs/whitelists/evm/permit2.js.map +1 -1
  90. package/dist/cjs/whitelists/evm/weth.js +16 -5
  91. package/dist/cjs/whitelists/evm/weth.js.map +1 -1
  92. package/dist/cjs/whitelists/solana/intent-signature.js +0 -1
  93. package/dist/cjs/whitelists/solana/intent-signature.js.map +1 -1
  94. package/dist/cjs/whitelists/subscription-to-chain-id.js +10 -0
  95. package/dist/cjs/whitelists/subscription-to-chain-id.js.map +1 -1
  96. package/dist/cjs/whitelists/types.js +13 -3
  97. package/dist/cjs/whitelists/types.js.map +1 -1
  98. package/dist/esm/helpers/address.js +48 -17
  99. package/dist/esm/helpers/address.js.map +1 -1
  100. package/dist/esm/helpers/evm-action.js +3 -3
  101. package/dist/esm/helpers/evm-action.js.map +1 -1
  102. package/dist/esm/helpers/evm-dln-hook-pack.js +82 -0
  103. package/dist/esm/helpers/evm-dln-hook-pack.js.map +1 -0
  104. package/dist/esm/helpers/evm-gas-compensation-tx.js +99 -0
  105. package/dist/esm/helpers/evm-gas-compensation-tx.js.map +1 -0
  106. package/dist/esm/helpers/evm-intent-id.js +27 -13
  107. package/dist/esm/helpers/evm-intent-id.js.map +1 -1
  108. package/dist/esm/helpers/evm-trade-amounts.js +36 -1
  109. package/dist/esm/helpers/evm-trade-amounts.js.map +1 -1
  110. package/dist/esm/helpers/gas-compensation.js +33 -0
  111. package/dist/esm/helpers/gas-compensation.js.map +1 -0
  112. package/dist/esm/helpers/hex.js +20 -0
  113. package/dist/esm/helpers/hex.js.map +1 -0
  114. package/dist/esm/helpers/placeholder.js +168 -0
  115. package/dist/esm/helpers/placeholder.js.map +1 -0
  116. package/dist/esm/helpers/sets.js +10 -0
  117. package/dist/esm/helpers/sets.js.map +1 -0
  118. package/dist/esm/types/enums.js +50 -1
  119. package/dist/esm/types/enums.js.map +1 -1
  120. package/dist/esm/types/request.js +37 -4
  121. package/dist/esm/types/request.js.map +1 -1
  122. package/dist/esm/types/response.js +126 -6
  123. package/dist/esm/types/response.js.map +1 -1
  124. package/dist/esm/types/validation.js +82 -10
  125. package/dist/esm/types/validation.js.map +1 -1
  126. package/dist/esm/validations/compensation-hook.js +200 -0
  127. package/dist/esm/validations/compensation-hook.js.map +1 -0
  128. package/dist/esm/validations/evm-caveats.js +4 -14
  129. package/dist/esm/validations/evm-caveats.js.map +1 -1
  130. package/dist/esm/validations/evm-op-budget.js +13 -10
  131. package/dist/esm/validations/evm-op-budget.js.map +1 -1
  132. package/dist/esm/validations/evm-op-hook.js +409 -2
  133. package/dist/esm/validations/evm-op-hook.js.map +1 -1
  134. package/dist/esm/validations/evm-op-wrap.js +10 -7
  135. package/dist/esm/validations/evm-op-wrap.js.map +1 -1
  136. package/dist/esm/validations/evm-required-actions.js +7 -9
  137. package/dist/esm/validations/evm-required-actions.js.map +1 -1
  138. package/dist/esm/validations/evm-sign712-metamask.js +17 -94
  139. package/dist/esm/validations/evm-sign712-metamask.js.map +1 -1
  140. package/dist/esm/validations/evm-sign712-shared.js +110 -0
  141. package/dist/esm/validations/evm-sign712-shared.js.map +1 -0
  142. package/dist/esm/validations/evm-sign7702.js +33 -22
  143. package/dist/esm/validations/evm-sign7702.js.map +1 -1
  144. package/dist/esm/validations/hooks-common.js +251 -38
  145. package/dist/esm/validations/hooks-common.js.map +1 -1
  146. package/dist/esm/validations/intent-destinations.js +194 -0
  147. package/dist/esm/validations/intent-destinations.js.map +1 -0
  148. package/dist/esm/validations/intent-tokens.js +354 -0
  149. package/dist/esm/validations/intent-tokens.js.map +1 -0
  150. package/dist/esm/validations/intent.js +285 -0
  151. package/dist/esm/validations/intent.js.map +1 -0
  152. package/dist/esm/validations/required-actions.js +7 -7
  153. package/dist/esm/validations/required-actions.js.map +1 -1
  154. package/dist/esm/validations/solana-hook.js +35 -24
  155. package/dist/esm/validations/solana-hook.js.map +1 -1
  156. package/dist/esm/validations/solana-op-budget.js +56 -18
  157. package/dist/esm/validations/solana-op-budget.js.map +1 -1
  158. package/dist/esm/validations/solana-op-wrap.js +47 -14
  159. package/dist/esm/validations/solana-op-wrap.js.map +1 -1
  160. package/dist/esm/validations/solana-required-actions.js +3 -3
  161. package/dist/esm/validations/solana-required-actions.js.map +1 -1
  162. package/dist/esm/validations/solana-transaction.js +7 -7
  163. package/dist/esm/validations/solana-transaction.js.map +1 -1
  164. package/dist/esm/validations/trade-grouping.js +139 -1
  165. package/dist/esm/validations/trade-grouping.js.map +1 -1
  166. package/dist/esm/validations/trades.js +169 -41
  167. package/dist/esm/validations/trades.js.map +1 -1
  168. package/dist/esm/validator.js +41 -15
  169. package/dist/esm/validator.js.map +1 -1
  170. package/dist/esm/whitelists/api-endpoints.js +7 -0
  171. package/dist/esm/whitelists/api-endpoints.js.map +1 -0
  172. package/dist/esm/whitelists/environment-config.js +47 -28
  173. package/dist/esm/whitelists/environment-config.js.map +1 -1
  174. package/dist/esm/whitelists/evm/caveat-enforcers.js +20 -4
  175. package/dist/esm/whitelists/evm/caveat-enforcers.js.map +1 -1
  176. package/dist/esm/whitelists/evm/delegation-manager.js +6 -1
  177. package/dist/esm/whitelists/evm/delegation-manager.js.map +1 -1
  178. package/dist/esm/whitelists/evm/eip7702-delegation.js +6 -1
  179. package/dist/esm/whitelists/evm/eip7702-delegation.js.map +1 -1
  180. package/dist/esm/whitelists/evm/index.js +4 -4
  181. package/dist/esm/whitelists/evm/index.js.map +1 -1
  182. package/dist/esm/whitelists/evm/metamask-delegation-chains.js +13 -0
  183. package/dist/esm/whitelists/evm/metamask-delegation-chains.js.map +1 -0
  184. package/dist/esm/whitelists/evm/permit2.js +9 -5
  185. package/dist/esm/whitelists/evm/permit2.js.map +1 -1
  186. package/dist/esm/whitelists/evm/weth.js +16 -5
  187. package/dist/esm/whitelists/evm/weth.js.map +1 -1
  188. package/dist/esm/whitelists/solana/intent-signature.js +0 -1
  189. package/dist/esm/whitelists/solana/intent-signature.js.map +1 -1
  190. package/dist/esm/whitelists/subscription-to-chain-id.js +9 -0
  191. package/dist/esm/whitelists/subscription-to-chain-id.js.map +1 -1
  192. package/dist/esm/whitelists/types.js +14 -5
  193. package/dist/esm/whitelists/types.js.map +1 -1
  194. package/dist/types/helpers/address.d.ts +7 -7
  195. package/dist/types/helpers/address.d.ts.map +1 -1
  196. package/dist/types/helpers/evm-dln-hook-pack.d.ts +19 -0
  197. package/dist/types/helpers/evm-dln-hook-pack.d.ts.map +1 -0
  198. package/dist/types/helpers/evm-gas-compensation-tx.d.ts +13 -0
  199. package/dist/types/helpers/evm-gas-compensation-tx.d.ts.map +1 -0
  200. package/dist/types/helpers/evm-intent-id.d.ts.map +1 -1
  201. package/dist/types/helpers/evm-trade-amounts.d.ts +2 -2
  202. package/dist/types/helpers/evm-trade-amounts.d.ts.map +1 -1
  203. package/dist/types/helpers/gas-compensation.d.ts +10 -0
  204. package/dist/types/helpers/gas-compensation.d.ts.map +1 -0
  205. package/dist/types/helpers/hex.d.ts +3 -0
  206. package/dist/types/helpers/hex.d.ts.map +1 -0
  207. package/dist/types/helpers/placeholder.d.ts +41 -0
  208. package/dist/types/helpers/placeholder.d.ts.map +1 -0
  209. package/dist/types/helpers/sets.d.ts +2 -0
  210. package/dist/types/helpers/sets.d.ts.map +1 -0
  211. package/dist/types/types/enums.d.ts +39 -1
  212. package/dist/types/types/enums.d.ts.map +1 -1
  213. package/dist/types/types/request.d.ts +21 -11
  214. package/dist/types/types/request.d.ts.map +1 -1
  215. package/dist/types/types/response.d.ts +1019 -21
  216. package/dist/types/types/response.d.ts.map +1 -1
  217. package/dist/types/types/validation.d.ts +74 -11
  218. package/dist/types/types/validation.d.ts.map +1 -1
  219. package/dist/types/validations/compensation-hook.d.ts +3 -0
  220. package/dist/types/validations/compensation-hook.d.ts.map +1 -0
  221. package/dist/types/validations/evm-caveats.d.ts.map +1 -1
  222. package/dist/types/validations/evm-op-budget.d.ts +2 -2
  223. package/dist/types/validations/evm-op-budget.d.ts.map +1 -1
  224. package/dist/types/validations/evm-op-hook.d.ts +4 -2
  225. package/dist/types/validations/evm-op-hook.d.ts.map +1 -1
  226. package/dist/types/validations/evm-op-wrap.d.ts +2 -2
  227. package/dist/types/validations/evm-op-wrap.d.ts.map +1 -1
  228. package/dist/types/validations/evm-required-actions.d.ts +2 -2
  229. package/dist/types/validations/evm-required-actions.d.ts.map +1 -1
  230. package/dist/types/validations/evm-sign712-metamask.d.ts.map +1 -1
  231. package/dist/types/validations/evm-sign712-shared.d.ts +7 -0
  232. package/dist/types/validations/evm-sign712-shared.d.ts.map +1 -0
  233. package/dist/types/validations/evm-sign7702.d.ts +2 -1
  234. package/dist/types/validations/evm-sign7702.d.ts.map +1 -1
  235. package/dist/types/validations/hooks-common.d.ts +1 -0
  236. package/dist/types/validations/hooks-common.d.ts.map +1 -1
  237. package/dist/types/validations/intent-destinations.d.ts +4 -0
  238. package/dist/types/validations/intent-destinations.d.ts.map +1 -0
  239. package/dist/types/validations/intent-tokens.d.ts +4 -0
  240. package/dist/types/validations/intent-tokens.d.ts.map +1 -0
  241. package/dist/types/validations/intent.d.ts +5 -0
  242. package/dist/types/validations/intent.d.ts.map +1 -0
  243. package/dist/types/validations/required-actions.d.ts +2 -1
  244. package/dist/types/validations/required-actions.d.ts.map +1 -1
  245. package/dist/types/validations/solana-hook.d.ts +4 -2
  246. package/dist/types/validations/solana-hook.d.ts.map +1 -1
  247. package/dist/types/validations/solana-op-budget.d.ts +2 -2
  248. package/dist/types/validations/solana-op-budget.d.ts.map +1 -1
  249. package/dist/types/validations/solana-op-wrap.d.ts +2 -2
  250. package/dist/types/validations/solana-op-wrap.d.ts.map +1 -1
  251. package/dist/types/validations/solana-required-actions.d.ts +2 -2
  252. package/dist/types/validations/solana-required-actions.d.ts.map +1 -1
  253. package/dist/types/validations/solana-transaction.d.ts +3 -3
  254. package/dist/types/validations/solana-transaction.d.ts.map +1 -1
  255. package/dist/types/validations/trade-grouping.d.ts +6 -2
  256. package/dist/types/validations/trade-grouping.d.ts.map +1 -1
  257. package/dist/types/validations/trades.d.ts.map +1 -1
  258. package/dist/types/validator.d.ts.map +1 -1
  259. package/dist/types/whitelists/api-endpoints.d.ts +2 -0
  260. package/dist/types/whitelists/api-endpoints.d.ts.map +1 -0
  261. package/dist/types/whitelists/environment-config.d.ts.map +1 -1
  262. package/dist/types/whitelists/evm/caveat-enforcers.d.ts +8 -0
  263. package/dist/types/whitelists/evm/caveat-enforcers.d.ts.map +1 -1
  264. package/dist/types/whitelists/evm/delegation-manager.d.ts +2 -0
  265. package/dist/types/whitelists/evm/delegation-manager.d.ts.map +1 -1
  266. package/dist/types/whitelists/evm/eip7702-delegation.d.ts +2 -0
  267. package/dist/types/whitelists/evm/eip7702-delegation.d.ts.map +1 -1
  268. package/dist/types/whitelists/evm/index.d.ts +4 -4
  269. package/dist/types/whitelists/evm/index.d.ts.map +1 -1
  270. package/dist/types/whitelists/evm/metamask-delegation-chains.d.ts +3 -0
  271. package/dist/types/whitelists/evm/metamask-delegation-chains.d.ts.map +1 -0
  272. package/dist/types/whitelists/evm/permit2.d.ts +1 -0
  273. package/dist/types/whitelists/evm/permit2.d.ts.map +1 -1
  274. package/dist/types/whitelists/evm/weth.d.ts.map +1 -1
  275. package/dist/types/whitelists/solana/intent-signature.d.ts.map +1 -1
  276. package/dist/types/whitelists/subscription-to-chain-id.d.ts +1 -0
  277. package/dist/types/whitelists/subscription-to-chain-id.d.ts.map +1 -1
  278. package/dist/types/whitelists/types.d.ts +1 -1
  279. package/dist/types/whitelists/types.d.ts.map +1 -1
  280. package/package.json +4 -3
  281. package/dist/cjs/helpers/constants.js +0 -6
  282. package/dist/cjs/helpers/constants.js.map +0 -1
  283. package/dist/cjs/validations/evm-op-gas-compensation.js +0 -152
  284. package/dist/cjs/validations/evm-op-gas-compensation.js.map +0 -1
  285. package/dist/esm/helpers/constants.js +0 -3
  286. package/dist/esm/helpers/constants.js.map +0 -1
  287. package/dist/esm/validations/evm-op-gas-compensation.js +0 -149
  288. package/dist/esm/validations/evm-op-gas-compensation.js.map +0 -1
  289. package/dist/types/helpers/constants.d.ts +0 -2
  290. package/dist/types/helpers/constants.d.ts.map +0 -1
  291. package/dist/types/validations/evm-op-gas-compensation.d.ts +0 -3
  292. package/dist/types/validations/evm-op-gas-compensation.d.ts.map +0 -1
@@ -0,0 +1,99 @@
1
+ import { decodeTransferCalldata } from "./evm-calldata.js";
2
+ import { isNativeToken } from "./evm-token.js";
3
+ import { normalizeAddress } from "./address.js";
4
+ // Validates an EVM `{to, data, value}` triplet that is expected to encode a
5
+ // gas-compensation transfer. `groups` are the gas-compensation groups
6
+ // associated with this triplet's source (already filtered to the relevant
7
+ // `(chainId, sender)` pair by the caller).
8
+ //
9
+ // Classification: dispatched on `triplet.data`:
10
+ // - `data === "0x"` → native compensation (data="0x", value > 0,
11
+ // and at least one group must carry a native token).
12
+ // - otherwise → ERC20 compensation (`triplet.to` matches some non-native
13
+ // group's tokenAddress, data is `transfer(...)`, value === "0").
14
+ export function validateEvmGasCompensationTx(triplet, groups, realChainId, basePath, codes) {
15
+ if (triplet.data === "0x") {
16
+ return validateNativeCompensation(triplet, groups, basePath, codes);
17
+ }
18
+ return validateErc20Compensation(triplet, groups, realChainId, basePath, codes);
19
+ }
20
+ function validateNativeCompensation(triplet, groups, basePath, codes) {
21
+ const violations = [];
22
+ // CRITICAL: data="0x" implies native — must have at least one native group.
23
+ const hasNativeGroup = groups.some(g => isNativeToken(g.tokenAddress, g.realChainId));
24
+ if (!hasNativeGroup) {
25
+ violations.push({
26
+ code: codes.dataInvalid,
27
+ message: "data=\"0x\" implies native compensation but no group has a native token",
28
+ path: `${basePath}.data`,
29
+ expected: groups.map(g => g.tokenAddress),
30
+ actual: "0x",
31
+ });
32
+ }
33
+ // HIGH: native compensation value must parse and be > 0.
34
+ violations.push(...validateNativeValue(triplet.value, basePath, codes));
35
+ return violations;
36
+ }
37
+ function validateNativeValue(rawValue, basePath, codes) {
38
+ try {
39
+ if (BigInt(rawValue) <= 0n) {
40
+ return [{
41
+ code: codes.valueInvalid,
42
+ message: "native compensation must have value > 0",
43
+ path: `${basePath}.value`,
44
+ actual: rawValue,
45
+ }];
46
+ }
47
+ return [];
48
+ }
49
+ catch (error) {
50
+ return [{
51
+ code: codes.valueInvalid,
52
+ message: "native compensation value is not a valid number",
53
+ path: `${basePath}.value`,
54
+ actual: rawValue,
55
+ details: error,
56
+ }];
57
+ }
58
+ }
59
+ function validateErc20Compensation(triplet, groups, realChainId, basePath, codes) {
60
+ const violations = [];
61
+ // CRITICAL: `to` must equal some non-native group's tokenAddress.
62
+ const erc20Groups = groups.filter(g => !isNativeToken(g.tokenAddress, g.realChainId));
63
+ const matches = erc20Groups.some(g => normalizeAddress(g.realChainId, g.tokenAddress)
64
+ === normalizeAddress(realChainId, triplet.to));
65
+ if (!matches) {
66
+ violations.push({
67
+ code: codes.toMismatch,
68
+ message: "ERC20 compensation `to` does not match any group's tokenAddress",
69
+ path: `${basePath}.to`,
70
+ expected: erc20Groups.map(g => g.tokenAddress),
71
+ actual: triplet.to,
72
+ });
73
+ }
74
+ // CRITICAL: data must be a valid ERC20 transfer calldata.
75
+ try {
76
+ decodeTransferCalldata(triplet.data);
77
+ }
78
+ catch (error) {
79
+ violations.push({
80
+ code: codes.dataInvalid,
81
+ message: "ERC20 compensation data is not a valid transfer calldata",
82
+ path: `${basePath}.data`,
83
+ actual: triplet.data,
84
+ details: error,
85
+ });
86
+ }
87
+ // HIGH: ERC20 compensation must have value="0".
88
+ if (triplet.value !== "0") {
89
+ violations.push({
90
+ code: codes.valueInvalid,
91
+ message: "ERC20 compensation must have value=\"0\"",
92
+ path: `${basePath}.value`,
93
+ expected: "0",
94
+ actual: triplet.value,
95
+ });
96
+ }
97
+ return violations;
98
+ }
99
+ //# sourceMappingURL=evm-gas-compensation-tx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evm-gas-compensation-tx.js","sourceRoot":"","sources":["../../../src/helpers/evm-gas-compensation-tx.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAW7C,4EAA4E;AAC5E,sEAAsE;AACtE,0EAA0E;AAC1E,2CAA2C;AAC3C,EAAE;AACF,gDAAgD;AAChD,mEAAmE;AACnE,yDAAyD;AACzD,2EAA2E;AAC3E,qEAAqE;AACrE,MAAM,UAAU,4BAA4B,CACxC,OAAoD,EACpD,MAA8B,EAC9B,WAAoB,EACpB,QAAgB,EAChB,KAA+B;IAE/B,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,0BAA0B,CAC/B,OAAoD,EACpD,MAA8B,EAC9B,QAAgB,EAChB,KAA+B;IAE/B,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,4EAA4E;IAC5E,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC,CACpD,CAAC;IACF,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,KAAK,CAAC,WAAW;YACvB,OAAO,EACH,yEAAyE;YAC7E,IAAI,EAAE,GAAG,QAAQ,OAAO;YACxB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;YACzC,MAAM,EAAE,IAAI;SACf,CAAC,CAAC;IACP,CAAC;IAED,yDAAyD;IACzD,UAAU,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAExE,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAS,mBAAmB,CACxB,QAAgB,EAChB,QAAgB,EAChB,KAA+B;IAE/B,IAAI,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YACzB,OAAO,CAAC;oBACJ,IAAI,EAAE,KAAK,CAAC,YAAY;oBACxB,OAAO,EAAE,yCAAyC;oBAClD,IAAI,EAAE,GAAG,QAAQ,QAAQ;oBACzB,MAAM,EAAE,QAAQ;iBACnB,CAAC,CAAC;QACP,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC;gBACJ,IAAI,EAAE,KAAK,CAAC,YAAY;gBACxB,OAAO,EAAE,iDAAiD;gBAC1D,IAAI,EAAE,GAAG,QAAQ,QAAQ;gBACzB,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,KAAK;aACjB,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAC9B,OAAoD,EACpD,MAA8B,EAC9B,WAAoB,EACpB,QAAgB,EAChB,KAA+B;IAE/B,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,kEAAkE;IAClE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC,CACrD,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACjC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,YAAY,CAAC;YACvC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CACpD,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,KAAK,CAAC,UAAU;YACtB,OAAO,EACH,iEAAiE;YACrE,IAAI,EAAE,GAAG,QAAQ,KAAK;YACtB,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;YAC9C,MAAM,EAAE,OAAO,CAAC,EAAE;SACrB,CAAC,CAAC;IACP,CAAC;IAED,0DAA0D;IAC1D,IAAI,CAAC;QACD,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,KAAK,CAAC,WAAW;YACvB,OAAO,EAAE,0DAA0D;YACnE,IAAI,EAAE,GAAG,QAAQ,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,IAAI;YACpB,OAAO,EAAE,KAAK;SACjB,CAAC,CAAC;IACP,CAAC;IAED,gDAAgD;IAChD,IAAI,OAAO,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;QACxB,UAAU,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,KAAK,CAAC,YAAY;YACxB,OAAO,EAAE,0CAA0C;YACnD,IAAI,EAAE,GAAG,QAAQ,QAAQ;YACzB,QAAQ,EAAE,GAAG;YACb,MAAM,EAAE,OAAO,CAAC,KAAK;SACxB,CAAC,CAAC;IACP,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import { encodeAbiParameters, keccak256, zeroAddress, zeroHash } from "viem";
2
2
  import { SUBMIT_INTENT_ABI_PARAMS } from "./evm-intent-id-abi.js";
3
+ import { addressToHex, addressToHexByValue } from "./address.js";
4
+ import { resolveChainId } from "../whitelists/subscription-to-chain-id.js";
3
5
  export function computeIntentId(intent) {
4
6
  const struct = convertToIntentStruct(intent);
5
7
  const encoded = encodeAbiParameters(SUBMIT_INTENT_ABI_PARAMS, [struct]);
@@ -17,7 +19,7 @@ function convertToIntentStruct(intent) {
17
19
  intentTimestamp: BigInt(intent.intentTimestamp),
18
20
  srcAllowedSender: (intent.srcAllowedSender ?? []),
19
21
  executionMetadata: (intent.executionMetadata ?? zeroHash),
20
- isAnyDlnMetadataAllowed: true,
22
+ isAnyDlnMetadataAllowed: !intent.dlnMetadata,
21
23
  dlnMetadata: (intent.dlnMetadata ?? "0x"),
22
24
  externalCallHash: (intent.externalCallHash ?? zeroHash),
23
25
  combinedInteractions: "0x",
@@ -26,14 +28,22 @@ function convertToIntentStruct(intent) {
26
28
  intentAuthority: intent.intentAuthority,
27
29
  };
28
30
  }
31
+ // Encodes addresses as raw bytes — non-EVM strings can't be passed as-is.
29
32
  function convertAllowedAddresses(details) {
30
33
  if (!details)
31
34
  return [];
32
- return details.map(d => ({
33
- allowedAddress: d.address,
34
- chains: d.destinationChainIds === "any" ? [] : d.destinationChainIds,
35
- isAnyChain: d.destinationChainIds === "any",
36
- }));
35
+ return details.map(d => {
36
+ const isAnyChain = d.destinationChainIds === "any";
37
+ const chains = isAnyChain ? [] : d.destinationChainIds;
38
+ // All chains within one entry share the same address family (validated
39
+ // elsewhere), so any chainId in the list resolves the address family
40
+ // identically. For "any" / empty chains, the family is inferred from
41
+ // the address itself.
42
+ const allowedAddress = chains.length > 0
43
+ ? addressToHex(resolveChainId(chains[0]) ?? chains[0], d.address)
44
+ : addressToHexByValue(d.address);
45
+ return { allowedAddress, chains, isAnyChain };
46
+ });
37
47
  }
38
48
  function convertInputTokens(tokens) {
39
49
  if (!tokens)
@@ -55,13 +65,17 @@ function convertGiveTokens(tokens) {
55
65
  denominator: Number(t.denominator),
56
66
  }));
57
67
  }
68
+ // Encode addresses as raw bytes — non-EVM strings can't be passed as-is.
58
69
  function convertTakeTokens(tokens) {
59
- return tokens.map(t => ({
60
- giveToken: t.fromTokenAddress,
61
- takeTokenChain: t.takeTokenChainId,
62
- takeToken: t.takeTokenAddress,
63
- numerator: BigInt(t.numerator),
64
- denominator: Number(t.denominator),
65
- }));
70
+ return tokens.map(t => {
71
+ const realChainId = resolveChainId(t.takeTokenChainId) ?? t.takeTokenChainId;
72
+ return {
73
+ giveToken: t.fromTokenAddress,
74
+ takeTokenChain: t.takeTokenChainId,
75
+ takeToken: addressToHex(realChainId, t.takeTokenAddress),
76
+ numerator: BigInt(t.numerator),
77
+ denominator: Number(t.denominator),
78
+ };
79
+ });
66
80
  }
67
81
  //# sourceMappingURL=evm-intent-id.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evm-intent-id.js","sourceRoot":"","sources":["../../../src/helpers/evm-intent-id.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evm-intent-id.js","sourceRoot":"","sources":["../../../src/helpers/evm-intent-id.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,13 @@ import { resolveWrappedTokenAddress } from "./evm-token.js";
4
4
  // Sums srcChainTokenInAmount for trades matching a given token address.
5
5
  // Returns skip=true if any matching trade has max/auto amount.
6
6
  // Returns violations if any matching trade has an invalid (non-numeric) amount.
7
- export function sumTradeAmounts(trades, tokenAddress, realChainId) {
7
+ //
8
+ // When `responseTrades` is provided, trades with `prependOperatingExpenses=true`
9
+ // also contribute `response.trades[i].srcChainTokenIn.approximateOperatingExpense`
10
+ // to the sum. This reflects how the API computes `intent.inputToken[].constraintBudget`
11
+ // (= mutated amount with prepended expense), which is the value used for Wrap.value
12
+ // and Budget approve amount on the same input token.
13
+ export function sumTradeAmounts(trades, tokenAddress, realChainId, responseTrades) {
8
14
  let sum = 0n;
9
15
  // Resolve native → WETH so Budget for WETH matches trades with native input (and vice versa)
10
16
  const resolvedToken = resolveWrappedTokenAddress(tokenAddress, realChainId) ?? tokenAddress;
@@ -33,7 +39,36 @@ export function sumTradeAmounts(trades, tokenAddress, realChainId) {
33
39
  }],
34
40
  };
35
41
  }
42
+ if (responseTrades && (trade.prependOperatingExpenses ?? false)) {
43
+ const expenseResult = parsePrependedExpense(responseTrades, i);
44
+ if (expenseResult.violations)
45
+ return expenseResult;
46
+ sum += expenseResult.value;
47
+ }
36
48
  }
37
49
  return { sum };
38
50
  }
51
+ // Reads response.trades[i].srcChainTokenIn.approximateOperatingExpense as bigint.
52
+ // If responseTrades has no matching index, treat as 0 — the trade-count mismatch
53
+ // is reported by `validateTrades` and we should not add a duplicate violation here.
54
+ function parsePrependedExpense(responseTrades, tradeIndex) {
55
+ const responseTrade = responseTrades[tradeIndex];
56
+ if (!responseTrade)
57
+ return { value: 0n };
58
+ const raw = responseTrade.srcChainTokenIn.approximateOperatingExpense;
59
+ try {
60
+ return { value: BigInt(raw) };
61
+ }
62
+ catch (e) {
63
+ return {
64
+ violations: [{
65
+ code: ViolationCode.TradeOperatingExpenseInvalid,
66
+ message: "approximateOperatingExpense is not a valid number",
67
+ path: `response.trades[${tradeIndex}].srcChainTokenIn.approximateOperatingExpense`,
68
+ actual: raw,
69
+ details: e,
70
+ }],
71
+ };
72
+ }
73
+ }
39
74
  //# 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":"AAAA,OAAO,EAEH,aAAa,EAEb,aAAa,GAEhB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAOzD,wEAAwE;AACxE,+DAA+D;AAC/D,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAC3B,MAAsB,EACtB,YAAoB,EACpB,WAAoB;IAEpB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,6FAA6F;IAC7F,MAAM,aAAa,GAAG,0BAA0B,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,YAAY,CAAC;IAC5F,MAAM,UAAU,GAAG,gBAAgB,CAAC,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,0BAA0B,CAAC,KAAK,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAC1F,MAAM,oBAAoB,GAAG,gBAAgB,CACzC,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,aAAa,CAAC,GAAG,IAAI,MAAM,KAAK,aAAa,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,aAAa,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,33 @@
1
+ import { normalizeAddress } from "./address.js";
2
+ import { resolveChainId } from "../whitelists/subscription-to-chain-id.js";
3
+ // Groups `gasCompensationInfo` entries from request.preHooks by
4
+ // (chainId, tokenAddress, sender). One compensation hook per
5
+ // unique group is expected to be appended to response.preHooks.
6
+ // Groups with an unknown subscription chainId are skipped — they'll surface as
7
+ // `UnknownSubscriptionId` via the trade-grouping pass.
8
+ export function extractGasCompensationGroups(request) {
9
+ const seen = new Set();
10
+ const groups = [];
11
+ for (const hook of request.preHooks ?? []) {
12
+ const info = hook.gasCompensationInfo;
13
+ if (!info)
14
+ continue;
15
+ const realChainId = resolveChainId(info.chainId);
16
+ if (realChainId === undefined)
17
+ continue;
18
+ const key = `${realChainId}`
19
+ + `:${normalizeAddress(realChainId, info.tokenAddress)}`
20
+ + `:${normalizeAddress(realChainId, info.sender)}`;
21
+ if (seen.has(key))
22
+ continue;
23
+ seen.add(key);
24
+ groups.push({
25
+ chainId: info.chainId,
26
+ realChainId,
27
+ tokenAddress: info.tokenAddress,
28
+ sender: info.sender,
29
+ });
30
+ }
31
+ return groups;
32
+ }
33
+ //# sourceMappingURL=gas-compensation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gas-compensation.js","sourceRoot":"","sources":["../../../src/helpers/gas-compensation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AASxE,gEAAgE;AAChE,6DAA6D;AAC7D,gEAAgE;AAChE,+EAA+E;AAC/E,uDAAuD;AACvD,MAAM,UAAU,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,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,WAAW,KAAK,SAAS;YAAE,SAAS;QAExC,MAAM,GAAG,GAAG,GAAG,WAAW,EAAE;cACtB,IAAI,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;cACtD,IAAI,gBAAgB,CAAC,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,20 @@
1
+ import { zeroHash } from "viem";
2
+ // Treats undefined, "0x" and `zeroHash` (`0x000...0`) as the same empty value.
3
+ export function isEmptyHex(value) {
4
+ if (value === undefined)
5
+ return true;
6
+ const normalized = value.toLowerCase();
7
+ return normalized === "0x" || normalized === zeroHash;
8
+ }
9
+ // Case-insensitive comparison of two hex strings, with `undefined` / `0x` /
10
+ // `zeroHash` treated as a single equivalence class. Use whenever an API field
11
+ // can be omitted, empty, or zero-padded interchangeably.
12
+ export function hexEquals(a, b) {
13
+ if (isEmptyHex(a) && isEmptyHex(b))
14
+ return true;
15
+ // If one is `undefined` and the other is not, they are not equal.
16
+ if (a === undefined || b === undefined)
17
+ return false;
18
+ return a.toLowerCase() === b.toLowerCase();
19
+ }
20
+ //# sourceMappingURL=hex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hex.js","sourceRoot":"","sources":["../../../src/helpers/hex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,+EAA+E;AAC/E,MAAM,UAAU,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,QAAQ,CAAC;AAC1D,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,yDAAyD;AACzD,MAAM,UAAU,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,168 @@
1
+ import { ChainEngine, PlaceholderType } from "../types/enums.js";
2
+ import { addressEquals, getChainEngine } from "./address.js";
3
+ const MIN_PLACEHOLDER_BYTE_COUNT = 1;
4
+ const MAX_PLACEHOLDER_BYTE_COUNT = 32;
5
+ export const EVM_DEFAULT_PLACEHOLDER_BYTE_COUNT = MAX_PLACEHOLDER_BYTE_COUNT;
6
+ export const SOLANA_DEFAULT_PLACEHOLDER_BYTE_COUNT = 8;
7
+ export var HookMode;
8
+ (function (HookMode) {
9
+ HookMode[HookMode["PreHooks"] = 0] = "PreHooks";
10
+ HookMode[HookMode["PostHooks"] = 1] = "PostHooks";
11
+ })(HookMode || (HookMode = {}));
12
+ export var PlaceholderResolutionErrorReason;
13
+ (function (PlaceholderResolutionErrorReason) {
14
+ PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["MissingTokenOrAddress"] = 0] = "MissingTokenOrAddress";
15
+ PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["NegativeAmount"] = 1] = "NegativeAmount";
16
+ PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["Overflow"] = 2] = "Overflow";
17
+ PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["InvalidByteCount"] = 3] = "InvalidByteCount";
18
+ PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["InvalidAdditionalAmount"] = 4] = "InvalidAdditionalAmount";
19
+ PlaceholderResolutionErrorReason[PlaceholderResolutionErrorReason["NoMatchingTradeOrAdditional"] = 5] = "NoMatchingTradeOrAdditional";
20
+ })(PlaceholderResolutionErrorReason || (PlaceholderResolutionErrorReason = {}));
21
+ // Encodes a non-negative integer as a zero-padded hex string (no "0x" prefix),
22
+ // fitting exactly `byteCount` bytes, using the chain engine's endianness.
23
+ // Solana: little-endian. EVM/Tron: big-endian.
24
+ // `byteCount` must be an integer in
25
+ // [MIN_PLACEHOLDER_BYTE_COUNT, MAX_PLACEHOLDER_BYTE_COUNT].
26
+ export function encodePlaceholderAmount(amount, byteCount, engine) {
27
+ if (!isValidByteCount(byteCount)) {
28
+ return { ok: false, reason: PlaceholderResolutionErrorReason.InvalidByteCount };
29
+ }
30
+ if (amount < 0n) {
31
+ return { ok: false, reason: PlaceholderResolutionErrorReason.NegativeAmount };
32
+ }
33
+ const maxValue = (1n << BigInt(byteCount * 8)) - 1n;
34
+ if (amount > maxValue) {
35
+ return { ok: false, reason: PlaceholderResolutionErrorReason.Overflow };
36
+ }
37
+ if (engine === ChainEngine.Solana) { // Use little-endian for Solana
38
+ const bytes = [];
39
+ let value = amount;
40
+ for (let i = 0; i < byteCount; i++) {
41
+ bytes.push((value & 0xffn).toString(16).padStart(2, "0"));
42
+ value >>= 8n;
43
+ }
44
+ return { ok: true, hex: bytes.join("") };
45
+ }
46
+ // Use big-endian (EVM/Tron): simple hex conversion with left-padding.
47
+ return { ok: true, hex: amount.toString(16).padStart(byteCount * 2, "0") };
48
+ }
49
+ function isValidByteCount(byteCount) {
50
+ return Number.isInteger(byteCount)
51
+ && byteCount >= MIN_PLACEHOLDER_BYTE_COUNT
52
+ && byteCount <= MAX_PLACEHOLDER_BYTE_COUNT;
53
+ }
54
+ // Sums the trade amount matching the placeholder's (chainId, tokenAddress, address).
55
+ // preHooks: sums trade.srcChainTokenIn.amount across trades where
56
+ // trade.srcChainTokenIn.{chainId,address} and trade.srcChainAuthorityAddress match.
57
+ // postHooks: sums trade.dstChainTokenOut.amount across trades where
58
+ // trade.dstChainTokenOut.{chainId,address} and trade.dstChainTokenOutRecipient match.
59
+ // In quote mode authority/recipient is undefined — such trades are skipped.
60
+ export function computeCumulativeTradeAmount(trades, mode, chainId, tokenAddress, address) {
61
+ let sum = 0n;
62
+ let matchCount = 0;
63
+ for (const trade of trades) {
64
+ const tradeChainId = mode === HookMode.PreHooks
65
+ ? trade.srcChainTokenIn.chainId
66
+ : trade.dstChainTokenOut.chainId;
67
+ if (tradeChainId !== chainId)
68
+ continue;
69
+ const tradeAuthority = mode === HookMode.PreHooks
70
+ ? trade.srcChainAuthorityAddress
71
+ : trade.dstChainTokenOutRecipient;
72
+ if (tradeAuthority === undefined)
73
+ continue;
74
+ const tradeToken = mode === HookMode.PreHooks
75
+ ? trade.srcChainTokenIn.address
76
+ : trade.dstChainTokenOut.address;
77
+ if (!addressEquals(chainId, tradeToken, tokenAddress))
78
+ continue;
79
+ if (!addressEquals(chainId, tradeAuthority, address))
80
+ continue;
81
+ const amount = mode === HookMode.PreHooks
82
+ ? trade.srcChainTokenIn.amount
83
+ : trade.dstChainTokenOut.amount;
84
+ sum += BigInt(amount);
85
+ matchCount++;
86
+ }
87
+ return { cumulative: sum, matchCount };
88
+ }
89
+ // Applies eager-placeholder substitution to a hex string (calldata or value).
90
+ // Markers: `{name}` or `{name.N}` (N = byte count).
91
+ // Deferred placeholders are not touched — their markers remain in the output.
92
+ // If any eager placeholder cannot be resolved, its marker is left intact and the
93
+ // error is collected into `errors`; callers decide how to report it.
94
+ export function resolveEagerPlaceholders(data, hookChainId, placeholders, trades, mode) {
95
+ const engine = getChainEngine(hookChainId);
96
+ const defaultByteCount = engine === ChainEngine.Solana
97
+ ? SOLANA_DEFAULT_PLACEHOLDER_BYTE_COUNT
98
+ : EVM_DEFAULT_PLACEHOLDER_BYTE_COUNT;
99
+ let result = data;
100
+ const errors = [];
101
+ for (const placeholder of placeholders) {
102
+ if (placeholder.type === PlaceholderType.Deferred)
103
+ continue;
104
+ // Eager placeholder — type is either explicitly 'eager' or undefined (default).
105
+ if (placeholder.tokenAddress === undefined
106
+ || placeholder.address === undefined) {
107
+ // Zod guards this at the schema level; defensive branch for callers
108
+ // that bypass structural validation.
109
+ errors.push({
110
+ nameVariable: placeholder.nameVariable,
111
+ reason: PlaceholderResolutionErrorReason.MissingTokenOrAddress,
112
+ });
113
+ continue;
114
+ }
115
+ let additional = 0n;
116
+ if (placeholder.additionalAmount !== undefined) {
117
+ try {
118
+ additional = BigInt(placeholder.additionalAmount);
119
+ }
120
+ catch (error) {
121
+ errors.push({
122
+ nameVariable: placeholder.nameVariable,
123
+ reason: PlaceholderResolutionErrorReason.InvalidAdditionalAmount,
124
+ details: error,
125
+ });
126
+ continue;
127
+ }
128
+ }
129
+ const { cumulative, matchCount } = computeCumulativeTradeAmount(trades, mode, hookChainId, placeholder.tokenAddress, placeholder.address);
130
+ const expectedAmount = cumulative + additional;
131
+ const nameEscaped = escapeRegex(placeholder.nameVariable);
132
+ const markerRegex = new RegExp(`\\{${nameEscaped}(?:\\.(\\d+))?\\}`, "g");
133
+ // MEDIUM: when no trade matches and no `additionalAmount` is supplied,
134
+ // the API rejects the request. Here we are mirroring this logic.
135
+ if (matchCount === 0
136
+ && placeholder.additionalAmount === undefined
137
+ && markerRegex.test(result)) {
138
+ errors.push({
139
+ nameVariable: placeholder.nameVariable,
140
+ reason: PlaceholderResolutionErrorReason.NoMatchingTradeOrAdditional,
141
+ });
142
+ // Reset RegExp.lastIndex before the `replace` below.
143
+ markerRegex.lastIndex = 0;
144
+ // Skip substitution — leave marker in `result` so calldata comparison
145
+ // surfaces any mutated value as a separate violation.
146
+ continue;
147
+ }
148
+ result = result.replace(markerRegex, (match, byteCountStr) => {
149
+ const byteCount = byteCountStr
150
+ ? parseInt(byteCountStr, 10)
151
+ : defaultByteCount;
152
+ const encoded = encodePlaceholderAmount(expectedAmount, byteCount, engine);
153
+ if (!encoded.ok) {
154
+ errors.push({
155
+ nameVariable: placeholder.nameVariable,
156
+ reason: encoded.reason,
157
+ });
158
+ return match;
159
+ }
160
+ return encoded.hex;
161
+ });
162
+ }
163
+ return { resolved: result, errors };
164
+ }
165
+ function escapeRegex(s) {
166
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
167
+ }
168
+ //# 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,10 @@
1
+ export function setsEqual(a, b) {
2
+ if (a.size !== b.size)
3
+ return false;
4
+ for (const item of a) {
5
+ if (!b.has(item))
6
+ return false;
7
+ }
8
+ return true;
9
+ }
10
+ //# sourceMappingURL=sets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sets.js","sourceRoot":"","sources":["../../../src/helpers/sets.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,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"}
@@ -20,18 +20,40 @@ export var ApprovalMode;
20
20
  ApprovalMode["Approve"] = "approve";
21
21
  ApprovalMode["Permit"] = "permit";
22
22
  })(ApprovalMode || (ApprovalMode = {}));
23
+ export var BundleHookType;
24
+ (function (BundleHookType) {
25
+ BundleHookType["Delegated"] = "delegated";
26
+ BundleHookType["Direct"] = "direct";
27
+ })(BundleHookType || (BundleHookType = {}));
28
+ export var PlaceholderType;
29
+ (function (PlaceholderType) {
30
+ PlaceholderType["Eager"] = "eager";
31
+ PlaceholderType["Deferred"] = "deferred";
32
+ })(PlaceholderType || (PlaceholderType = {}));
23
33
  export var SpecialAmount;
24
34
  (function (SpecialAmount) {
25
35
  SpecialAmount["Max"] = "max";
26
36
  SpecialAmount["Auto"] = "auto";
27
37
  })(SpecialAmount || (SpecialAmount = {}));
38
+ export var SpecialChainId;
39
+ (function (SpecialChainId) {
40
+ SpecialChainId["Any"] = "any";
41
+ })(SpecialChainId || (SpecialChainId = {}));
42
+ export var DlnHookType;
43
+ (function (DlnHookType) {
44
+ DlnHookType["SolanaSerializedInstructions"] = "solana_serialized_instructions";
45
+ DlnHookType["EvmTransactionCall"] = "evm_transaction_call";
46
+ DlnHookType["EvmHookV1"] = "evm_hook_data_v1";
47
+ })(DlnHookType || (DlnHookType = {}));
28
48
  // --- EVM Action enums ---
29
49
  export var EvmActionKind;
30
50
  (function (EvmActionKind) {
31
51
  EvmActionKind["Transaction"] = "Transaction";
32
52
  EvmActionKind["Sign7702Authorization"] = "Sign7702Authorization";
33
53
  EvmActionKind["Sign712"] = "Sign712";
34
- EvmActionKind["Sign712MetaMask"] = "Sign712MetaMask";
54
+ EvmActionKind["Sign712MetaMaskCaveats"] = "Sign712MetaMask";
55
+ EvmActionKind["Sign712MetaMaskCaveatsWithPlaceholders"] = "Sign712MetaMaskWithPlaceholders";
56
+ EvmActionKind["ProvidePlaceholders"] = "ProvidePlaceholders";
35
57
  EvmActionKind["Permit"] = "Permit";
36
58
  EvmActionKind["Permit2"] = "Permit2";
37
59
  })(EvmActionKind || (EvmActionKind = {}));
@@ -71,6 +93,33 @@ export var CostItemType;
71
93
  CostItemType["PARTNER_COST"] = "PARTNER_COST";
72
94
  CostItemType["NETWORK_COST"] = "NETWORK_COST";
73
95
  })(CostItemType || (CostItemType = {}));
96
+ // --- Cost detail type ---
97
+ // Markers for individual entries in `trades[].costsDetails[]`. Different
98
+ // markers appear for cross-chain vs same-chain trades.
99
+ export var CostDetailType;
100
+ (function (CostDetailType) {
101
+ CostDetailType["PreSwap"] = "PreSwap";
102
+ CostDetailType["PreSwapEstimatedSlippage"] = "PreSwapEstimatedSlippage";
103
+ CostDetailType["DlnProtocolFee"] = "DlnProtocolFee";
104
+ CostDetailType["AffiliateFee"] = "AffiliateFee";
105
+ CostDetailType["TakerMargin"] = "TakerMargin";
106
+ CostDetailType["EstimatedOperatingExpenses"] = "EstimatedOperatingExpenses";
107
+ CostDetailType["AfterSwap"] = "AfterSwap";
108
+ CostDetailType["AfterSwapEstimatedSlippage"] = "AfterSwapEstimatedSlippage";
109
+ CostDetailType["Subsidization"] = "Subsidization";
110
+ CostDetailType["SingleChainSwapEstimatedSlippage"] = "SingleChainSwapEstimatedSlippage";
111
+ CostDetailType["SingleChainSwapProtocolFee"] = "SingleChainSwapProtocolFee";
112
+ CostDetailType["SingleChainSwapAffiliateFee"] = "SingleChainSwapAffiliateFee";
113
+ CostDetailType["Swap"] = "Swap";
114
+ })(CostDetailType || (CostDetailType = {}));
115
+ // --- Chain engines ---
116
+ // Categorizes chains by their VM/address-format family.
117
+ export var ChainEngine;
118
+ (function (ChainEngine) {
119
+ ChainEngine[ChainEngine["EVM"] = 0] = "EVM";
120
+ ChainEngine[ChainEngine["Tron"] = 1] = "Tron";
121
+ ChainEngine[ChainEngine["Solana"] = 2] = "Solana";
122
+ })(ChainEngine || (ChainEngine = {}));
74
123
  // --- Chain IDs (real, after resolving from subscriptionId) ---
75
124
  export var ChainId;
76
125
  (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":"AAAA,mBAAmB;AAEnB,MAAM,CAAN,IAAY,OAGX;AAHD,WAAY,OAAO;IACf,kCAAuB,CAAA;IACvB,0BAAe,CAAA;AACnB,CAAC,EAHW,OAAO,KAAP,OAAO,QAGlB;AAED,wBAAwB;AAExB,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IACxB,qCAAiB,CAAA;AACrB,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,4CAAuB,CAAA;IACvB,8DAAyC,CAAA;IACzC,kCAAa,CAAA;AACjB,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAED,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACpB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;AACrB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,yCAAuB,CAAA;IACvB,mCAAiB,CAAA;AACrB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACvB,kCAAe,CAAA;IACf,wCAAqB,CAAA;AACzB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,4BAAW,CAAA;IACX,8BAAa,CAAA;AACjB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,MAAM,CAAN,IAAY,cAEX;AAFD,WAAY,cAAc;IACtB,6BAAW,CAAA;AACf,CAAC,EAFW,cAAc,KAAd,cAAc,QAEzB;AAED,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,8EAA+D,CAAA;IAC/D,0DAA2C,CAAA;IAC3C,6CAA8B,CAAA;AAClC,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,2BAA2B;AAE3B,MAAM,CAAN,IAAY,aASX;AATD,WAAY,aAAa;IACrB,4CAA2B,CAAA;IAC3B,gEAA+C,CAAA;IAC/C,oCAAmB,CAAA;IACnB,2DAA0C,CAAA;IAC1C,2FAA0E,CAAA;IAC1E,4DAA2C,CAAA;IAC3C,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;AACvB,CAAC,EATW,aAAa,KAAb,aAAa,QASxB;AAED,MAAM,CAAN,IAAY,kBASX;AATD,WAAY,kBAAkB;IAC1B,2CAAqB,CAAA;IACrB,uCAAiB,CAAA;IACjB,uCAAiB,CAAA;IACjB,yCAAmB,CAAA;IACnB,uCAAiB,CAAA;IACjB,mCAAa,CAAA;IACb,mCAAa,CAAA;IACb,yDAAmC,CAAA;AACvC,CAAC,EATW,kBAAkB,KAAlB,kBAAkB,QAS7B;AAED,8BAA8B;AAE9B,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IACxB,+CAA2B,CAAA;IAC3B,iCAAa,CAAA;IACb,uDAAmC,CAAA;AACvC,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,MAAM,CAAN,IAAY,qBAQX;AARD,WAAY,qBAAqB;IAC7B,0CAAiB,CAAA;IACjB,sDAA6B,CAAA;IAC7B,sCAAa,CAAA;IACb,gDAAuB,CAAA;IACvB,0CAAiB,CAAA;IACjB,sCAAa,CAAA;IACb,4DAAmC,CAAA;AACvC,CAAC,EARW,qBAAqB,KAArB,qBAAqB,QAQhC;AAED,yBAAyB;AAEzB,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACpB,+CAA+B,CAAA;IAC/B,2CAA2B,CAAA;IAC3B,6CAA6B,CAAA;IAC7B,6CAA6B,CAAA;AACjC,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAED,2BAA2B;AAE3B,yEAAyE;AACzE,uDAAuD;AACvD,MAAM,CAAN,IAAY,cAcX;AAdD,WAAY,cAAc;IACtB,qCAAmB,CAAA;IACnB,uEAAqD,CAAA;IACrD,mDAAiC,CAAA;IACjC,+CAA6B,CAAA;IAC7B,6CAA2B,CAAA;IAC3B,2EAAyD,CAAA;IACzD,yCAAuB,CAAA;IACvB,2EAAyD,CAAA;IACzD,iDAA+B,CAAA;IAC/B,uFAAqE,CAAA;IACrE,2EAAyD,CAAA;IACzD,6EAA2D,CAAA;IAC3D,+BAAa,CAAA;AACjB,CAAC,EAdW,cAAc,KAAd,cAAc,QAczB;AAED,wBAAwB;AAExB,wDAAwD;AACxD,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,2CAAG,CAAA;IACH,6CAAI,CAAA;IACJ,iDAAM,CAAA;AACV,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,gEAAgE;AAEhE,MAAM,CAAN,IAAY,OA6BX;AA7BD,WAAY,OAAO;IACf,yEAAyE;IACzE,+CAA+C;IAC/C,6CAAY,CAAA;IAEZ,6CAAY,CAAA;IACZ,8CAAa,CAAA;IACb,0CAAW,CAAA;IACX,oCAAQ,CAAA;IACR,2CAAY,CAAA;IACZ,6CAAa,CAAA;IACb,yCAAW,CAAA;IACX,yCAAW,CAAA;IACX,uCAAU,CAAA;IACV,+CAAc,CAAA;IACd,0CAAY,CAAA;IACZ,sCAAU,CAAA;IACV,0CAAY,CAAA;IACZ,kDAAgB,CAAA;IAChB,8CAAc,CAAA;IACd,4CAAa,CAAA;IACb,wCAAW,CAAA;IACX,2CAAa,CAAA;IACb,iDAAgB,CAAA;IAChB,mDAAiB,CAAA;IACjB,uCAAW,CAAA;IACX,6CAAgB,CAAA;IAChB,+CAAgB,CAAA;IAChB,6CAAgB,CAAA;AACpB,CAAC,EA7BW,OAAO,KAAP,OAAO,QA6BlB;AAED,gFAAgF;AAChF,mEAAmE;AAEnE,MAAM,CAAN,IAAY,cA0BX;AA1BD,WAAY,cAAc;IACtB,2DAA2B,CAAA;IAC3B,4DAA2B,CAAA;IAC3B,kDAAiB,CAAA;IACjB,2DAAyB,CAAA;IACzB,+DAA2B,CAAA;IAC3B,iEAA6B,CAAA;IAC7B,yDAAqB,CAAA;IACrB,sDAAmB,CAAA;IACnB,6DAAuB,CAAA;IAEvB,2DAAgB,CAAA;IAChB,+DAAkB,CAAA;IAClB,6DAAiB,CAAA;IACjB,2DAAgB,CAAA;IAChB,6DAAiB,CAAA;IACjB,6DAAiB,CAAA;IACjB,+DAAkB,CAAA;IAClB,yDAAe,CAAA;IACf,mEAAoB,CAAA;IACpB,+DAAkB,CAAA;IAClB,2DAAgB,CAAA;IAChB,yDAAe,CAAA;IACf,qEAAqB,CAAA;IACrB,6DAAiB,CAAA;IACjB,iEAAmB,CAAA;AACvB,CAAC,EA1BW,cAAc,KAAd,cAAc,QA0BzB"}