@kittycorn-labs/universal-router-sdk 1.4.43 → 2.0.0

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 (244) hide show
  1. package/README.md +312 -0
  2. package/dist/cjs/src/abis/UniversalRouter.json +740 -0
  3. package/dist/{entities → cjs/src/entities}/Command.d.ts +12 -12
  4. package/dist/cjs/src/entities/Command.js +9 -0
  5. package/dist/cjs/src/entities/Command.js.map +1 -0
  6. package/dist/cjs/src/entities/actions/across.d.ts +21 -0
  7. package/dist/cjs/src/entities/actions/across.js +7 -0
  8. package/dist/cjs/src/entities/actions/across.js.map +1 -0
  9. package/dist/{entities → cjs/src/entities}/actions/index.d.ts +3 -2
  10. package/dist/cjs/src/entities/actions/index.js +7 -0
  11. package/dist/cjs/src/entities/actions/index.js.map +1 -0
  12. package/dist/cjs/src/entities/actions/uniswap.d.ts +94 -0
  13. package/dist/cjs/src/entities/actions/uniswap.js +740 -0
  14. package/dist/cjs/src/entities/actions/uniswap.js.map +1 -0
  15. package/dist/{entities → cjs/src/entities}/actions/unwrapWETH.d.ts +12 -12
  16. package/dist/cjs/src/entities/actions/unwrapWETH.js +33 -0
  17. package/dist/cjs/src/entities/actions/unwrapWETH.js.map +1 -0
  18. package/dist/{entities → cjs/src/entities}/index.d.ts +2 -2
  19. package/dist/cjs/src/entities/index.js +6 -0
  20. package/dist/cjs/src/entities/index.js.map +1 -0
  21. package/dist/cjs/src/index.d.ts +19 -0
  22. package/dist/cjs/src/index.js +43 -0
  23. package/dist/cjs/src/index.js.map +1 -0
  24. package/dist/cjs/src/kittycorn.d.ts +9 -0
  25. package/dist/cjs/src/kittycorn.js +26 -0
  26. package/dist/cjs/src/kittycorn.js.map +1 -0
  27. package/dist/cjs/src/swapRouter.d.ts +123 -0
  28. package/dist/cjs/src/swapRouter.js +445 -0
  29. package/dist/cjs/src/swapRouter.js.map +1 -0
  30. package/dist/cjs/src/types/encodeSwaps.d.ts +197 -0
  31. package/dist/cjs/src/types/encodeSwaps.js +3 -0
  32. package/dist/cjs/src/types/encodeSwaps.js.map +1 -0
  33. package/dist/{utils → cjs/src/utils}/commandParser.d.ts +36 -34
  34. package/dist/cjs/src/utils/commandParser.js +154 -0
  35. package/dist/cjs/src/utils/commandParser.js.map +1 -0
  36. package/dist/cjs/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
  37. package/dist/cjs/src/utils/computeEncodeSwapsAmounts.js +46 -0
  38. package/dist/cjs/src/utils/computeEncodeSwapsAmounts.js.map +1 -0
  39. package/dist/{utils → cjs/src/utils}/constants.d.ts +46 -30
  40. package/dist/cjs/src/utils/constants.js +777 -0
  41. package/dist/cjs/src/utils/constants.js.map +1 -0
  42. package/dist/cjs/src/utils/directTransfers.d.ts +15 -0
  43. package/dist/cjs/src/utils/directTransfers.js +381 -0
  44. package/dist/cjs/src/utils/directTransfers.js.map +1 -0
  45. package/dist/cjs/src/utils/eip712.d.ts +17 -0
  46. package/dist/cjs/src/utils/eip712.js +44 -0
  47. package/dist/cjs/src/utils/eip712.js.map +1 -0
  48. package/dist/cjs/src/utils/encodeSwapStep.d.ts +4 -0
  49. package/dist/cjs/src/utils/encodeSwapStep.js +62 -0
  50. package/dist/cjs/src/utils/encodeSwapStep.js.map +1 -0
  51. package/dist/cjs/src/utils/encodeV4Action.d.ts +7 -0
  52. package/dist/cjs/src/utils/encodeV4Action.js +84 -0
  53. package/dist/cjs/src/utils/encodeV4Action.js.map +1 -0
  54. package/dist/{utils → cjs/src/utils}/getCurrencyAddress.d.ts +2 -2
  55. package/dist/cjs/src/utils/getCurrencyAddress.js +9 -0
  56. package/dist/cjs/src/utils/getCurrencyAddress.js.map +1 -0
  57. package/dist/{utils → cjs/src/utils}/inputTokens.d.ts +23 -23
  58. package/dist/cjs/src/utils/inputTokens.js +58 -0
  59. package/dist/cjs/src/utils/inputTokens.js.map +1 -0
  60. package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.d.ts +6 -0
  61. package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.js +34 -0
  62. package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.js.map +1 -0
  63. package/dist/{utils → cjs/src/utils}/numbers.d.ts +7 -6
  64. package/dist/cjs/src/utils/numbers.js +27 -0
  65. package/dist/cjs/src/utils/numbers.js.map +1 -0
  66. package/dist/{utils → cjs/src/utils}/pathCurrency.d.ts +3 -3
  67. package/dist/cjs/src/utils/pathCurrency.js +27 -0
  68. package/dist/cjs/src/utils/pathCurrency.js.map +1 -0
  69. package/dist/cjs/src/utils/portionFees.d.ts +14 -0
  70. package/dist/cjs/src/utils/portionFees.js +40 -0
  71. package/dist/cjs/src/utils/portionFees.js.map +1 -0
  72. package/dist/cjs/src/utils/routerBalanceSteps.d.ts +31 -0
  73. package/dist/cjs/src/utils/routerBalanceSteps.js +293 -0
  74. package/dist/cjs/src/utils/routerBalanceSteps.js.map +1 -0
  75. package/dist/{utils → cjs/src/utils}/routerCommands.d.ts +77 -64
  76. package/dist/cjs/src/utils/routerCommands.js +331 -0
  77. package/dist/cjs/src/utils/routerCommands.js.map +1 -0
  78. package/dist/{utils → cjs/src/utils}/routerTradeAdapter.d.ts +73 -73
  79. package/dist/cjs/src/utils/routerTradeAdapter.js +139 -0
  80. package/dist/cjs/src/utils/routerTradeAdapter.js.map +1 -0
  81. package/dist/cjs/src/utils/toV4URVersion.d.ts +3 -0
  82. package/dist/cjs/src/utils/toV4URVersion.js +17 -0
  83. package/dist/cjs/src/utils/toV4URVersion.js.map +1 -0
  84. package/dist/cjs/src/utils/validateEncodeSwaps.d.ts +2 -0
  85. package/dist/cjs/src/utils/validateEncodeSwaps.js +344 -0
  86. package/dist/cjs/src/utils/validateEncodeSwaps.js.map +1 -0
  87. package/dist/esm/package.json +1 -0
  88. package/dist/esm/src/abis/UniversalRouter.json +740 -0
  89. package/dist/esm/src/entities/Command.d.ts +12 -0
  90. package/dist/esm/src/entities/Command.js +6 -0
  91. package/dist/esm/src/entities/Command.js.map +1 -0
  92. package/dist/esm/src/entities/actions/across.d.ts +21 -0
  93. package/dist/esm/src/entities/actions/across.js +3 -0
  94. package/dist/esm/src/entities/actions/across.js.map +1 -0
  95. package/dist/esm/src/entities/actions/index.d.ts +3 -0
  96. package/dist/esm/src/entities/actions/index.js +4 -0
  97. package/dist/esm/src/entities/actions/index.js.map +1 -0
  98. package/dist/esm/src/entities/actions/uniswap.d.ts +94 -0
  99. package/dist/esm/src/entities/actions/uniswap.js +735 -0
  100. package/dist/esm/src/entities/actions/uniswap.js.map +1 -0
  101. package/dist/esm/src/entities/actions/unwrapWETH.d.ts +12 -0
  102. package/dist/esm/src/entities/actions/unwrapWETH.js +28 -0
  103. package/dist/esm/src/entities/actions/unwrapWETH.js.map +1 -0
  104. package/dist/esm/src/entities/index.d.ts +2 -0
  105. package/dist/esm/src/entities/index.js +3 -0
  106. package/dist/esm/src/entities/index.js.map +1 -0
  107. package/dist/esm/src/index.d.ts +19 -0
  108. package/dist/esm/src/index.js +15 -0
  109. package/dist/esm/src/index.js.map +1 -0
  110. package/dist/esm/src/kittycorn.d.ts +9 -0
  111. package/dist/esm/src/kittycorn.js +22 -0
  112. package/dist/esm/src/kittycorn.js.map +1 -0
  113. package/dist/esm/src/swapRouter.d.ts +123 -0
  114. package/dist/esm/src/swapRouter.js +440 -0
  115. package/dist/esm/src/swapRouter.js.map +1 -0
  116. package/dist/esm/src/types/encodeSwaps.d.ts +197 -0
  117. package/dist/esm/src/types/encodeSwaps.js +2 -0
  118. package/dist/esm/src/types/encodeSwaps.js.map +1 -0
  119. package/dist/esm/src/utils/commandParser.d.ts +36 -0
  120. package/dist/esm/src/utils/commandParser.js +146 -0
  121. package/dist/esm/src/utils/commandParser.js.map +1 -0
  122. package/dist/esm/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
  123. package/dist/esm/src/utils/computeEncodeSwapsAmounts.js +41 -0
  124. package/dist/esm/src/utils/computeEncodeSwapsAmounts.js.map +1 -0
  125. package/dist/esm/src/utils/constants.d.ts +46 -0
  126. package/dist/esm/src/utils/constants.js +768 -0
  127. package/dist/esm/src/utils/constants.js.map +1 -0
  128. package/dist/esm/src/utils/directTransfers.d.ts +15 -0
  129. package/dist/esm/src/utils/directTransfers.js +369 -0
  130. package/dist/esm/src/utils/directTransfers.js.map +1 -0
  131. package/dist/esm/src/utils/eip712.d.ts +17 -0
  132. package/dist/esm/src/utils/eip712.js +39 -0
  133. package/dist/esm/src/utils/eip712.js.map +1 -0
  134. package/dist/esm/src/utils/encodeSwapStep.d.ts +4 -0
  135. package/dist/esm/src/utils/encodeSwapStep.js +58 -0
  136. package/dist/esm/src/utils/encodeSwapStep.js.map +1 -0
  137. package/dist/esm/src/utils/encodeV4Action.d.ts +7 -0
  138. package/dist/esm/src/utils/encodeV4Action.js +80 -0
  139. package/dist/esm/src/utils/encodeV4Action.js.map +1 -0
  140. package/dist/esm/src/utils/getCurrencyAddress.d.ts +2 -0
  141. package/dist/esm/src/utils/getCurrencyAddress.js +5 -0
  142. package/dist/esm/src/utils/getCurrencyAddress.js.map +1 -0
  143. package/dist/esm/src/utils/inputTokens.d.ts +23 -0
  144. package/dist/esm/src/utils/inputTokens.js +51 -0
  145. package/dist/esm/src/utils/inputTokens.js.map +1 -0
  146. package/dist/esm/src/utils/normalizeEncodeSwapsSpec.d.ts +6 -0
  147. package/dist/esm/src/utils/normalizeEncodeSwapsSpec.js +27 -0
  148. package/dist/esm/src/utils/normalizeEncodeSwapsSpec.js.map +1 -0
  149. package/dist/esm/src/utils/numbers.d.ts +7 -0
  150. package/dist/esm/src/utils/numbers.js +19 -0
  151. package/dist/esm/src/utils/numbers.js.map +1 -0
  152. package/dist/esm/src/utils/pathCurrency.d.ts +3 -0
  153. package/dist/esm/src/utils/pathCurrency.js +23 -0
  154. package/dist/esm/src/utils/pathCurrency.js.map +1 -0
  155. package/dist/esm/src/utils/portionFees.d.ts +14 -0
  156. package/dist/esm/src/utils/portionFees.js +35 -0
  157. package/dist/esm/src/utils/portionFees.js.map +1 -0
  158. package/dist/esm/src/utils/routerBalanceSteps.d.ts +31 -0
  159. package/dist/esm/src/utils/routerBalanceSteps.js +282 -0
  160. package/dist/esm/src/utils/routerBalanceSteps.js.map +1 -0
  161. package/dist/esm/src/utils/routerCommands.d.ts +77 -0
  162. package/dist/esm/src/utils/routerCommands.js +326 -0
  163. package/dist/esm/src/utils/routerCommands.js.map +1 -0
  164. package/dist/esm/src/utils/routerTradeAdapter.d.ts +73 -0
  165. package/dist/esm/src/utils/routerTradeAdapter.js +134 -0
  166. package/dist/esm/src/utils/routerTradeAdapter.js.map +1 -0
  167. package/dist/esm/src/utils/toV4URVersion.d.ts +3 -0
  168. package/dist/esm/src/utils/toV4URVersion.js +13 -0
  169. package/dist/esm/src/utils/toV4URVersion.js.map +1 -0
  170. package/dist/esm/src/utils/validateEncodeSwaps.d.ts +2 -0
  171. package/dist/esm/src/utils/validateEncodeSwaps.js +339 -0
  172. package/dist/esm/src/utils/validateEncodeSwaps.js.map +1 -0
  173. package/dist/types/src/entities/Command.d.ts +13 -0
  174. package/dist/types/src/entities/Command.d.ts.map +1 -0
  175. package/dist/types/src/entities/actions/across.d.ts +22 -0
  176. package/dist/types/src/entities/actions/across.d.ts.map +1 -0
  177. package/dist/types/src/entities/actions/index.d.ts +4 -0
  178. package/dist/types/src/entities/actions/index.d.ts.map +1 -0
  179. package/dist/types/src/entities/actions/uniswap.d.ts +95 -0
  180. package/dist/types/src/entities/actions/uniswap.d.ts.map +1 -0
  181. package/dist/types/src/entities/actions/unwrapWETH.d.ts +13 -0
  182. package/dist/types/src/entities/actions/unwrapWETH.d.ts.map +1 -0
  183. package/dist/types/src/entities/index.d.ts +3 -0
  184. package/dist/types/src/entities/index.d.ts.map +1 -0
  185. package/dist/types/src/index.d.ts +20 -0
  186. package/dist/types/src/index.d.ts.map +1 -0
  187. package/dist/types/src/kittycorn.d.ts +10 -0
  188. package/dist/types/src/kittycorn.d.ts.map +1 -0
  189. package/dist/types/src/swapRouter.d.ts +124 -0
  190. package/dist/types/src/swapRouter.d.ts.map +1 -0
  191. package/dist/types/src/types/encodeSwaps.d.ts +198 -0
  192. package/dist/types/src/types/encodeSwaps.d.ts.map +1 -0
  193. package/dist/types/src/utils/commandParser.d.ts +37 -0
  194. package/dist/types/src/utils/commandParser.d.ts.map +1 -0
  195. package/dist/types/src/utils/computeEncodeSwapsAmounts.d.ts +9 -0
  196. package/dist/types/src/utils/computeEncodeSwapsAmounts.d.ts.map +1 -0
  197. package/dist/types/src/utils/constants.d.ts +47 -0
  198. package/dist/types/src/utils/constants.d.ts.map +1 -0
  199. package/dist/types/src/utils/directTransfers.d.ts +16 -0
  200. package/dist/types/src/utils/directTransfers.d.ts.map +1 -0
  201. package/dist/types/src/utils/eip712.d.ts +18 -0
  202. package/dist/types/src/utils/eip712.d.ts.map +1 -0
  203. package/dist/types/src/utils/encodeSwapStep.d.ts +5 -0
  204. package/dist/types/src/utils/encodeSwapStep.d.ts.map +1 -0
  205. package/dist/types/src/utils/encodeV4Action.d.ts +8 -0
  206. package/dist/types/src/utils/encodeV4Action.d.ts.map +1 -0
  207. package/dist/types/src/utils/getCurrencyAddress.d.ts +3 -0
  208. package/dist/types/src/utils/getCurrencyAddress.d.ts.map +1 -0
  209. package/dist/types/src/utils/inputTokens.d.ts +24 -0
  210. package/dist/types/src/utils/inputTokens.d.ts.map +1 -0
  211. package/dist/types/src/utils/normalizeEncodeSwapsSpec.d.ts +7 -0
  212. package/dist/types/src/utils/normalizeEncodeSwapsSpec.d.ts.map +1 -0
  213. package/dist/types/src/utils/numbers.d.ts +8 -0
  214. package/dist/types/src/utils/numbers.d.ts.map +1 -0
  215. package/dist/types/src/utils/pathCurrency.d.ts +4 -0
  216. package/dist/types/src/utils/pathCurrency.d.ts.map +1 -0
  217. package/dist/types/src/utils/portionFees.d.ts +15 -0
  218. package/dist/types/src/utils/portionFees.d.ts.map +1 -0
  219. package/dist/types/src/utils/routerBalanceSteps.d.ts +32 -0
  220. package/dist/types/src/utils/routerBalanceSteps.d.ts.map +1 -0
  221. package/dist/types/src/utils/routerCommands.d.ts +78 -0
  222. package/dist/types/src/utils/routerCommands.d.ts.map +1 -0
  223. package/dist/types/src/utils/routerTradeAdapter.d.ts +74 -0
  224. package/dist/types/src/utils/routerTradeAdapter.d.ts.map +1 -0
  225. package/dist/types/src/utils/toV4URVersion.d.ts +4 -0
  226. package/dist/types/src/utils/toV4URVersion.d.ts.map +1 -0
  227. package/dist/types/src/utils/validateEncodeSwaps.d.ts +3 -0
  228. package/dist/types/src/utils/validateEncodeSwaps.d.ts.map +1 -0
  229. package/package.json +33 -52
  230. package/dist/entities/actions/uniswap.d.ts +0 -30
  231. package/dist/index.d.ts +0 -10
  232. package/dist/index.js +0 -8
  233. package/dist/swapRouter.d.ts +0 -37
  234. package/dist/test/forge/writeInterop.d.ts +0 -2
  235. package/dist/test/utils/addresses.d.ts +0 -5
  236. package/dist/test/utils/hexToDecimalString.d.ts +0 -2
  237. package/dist/test/utils/permit2.d.ts +0 -7
  238. package/dist/test/utils/uniswapData.d.ts +0 -25
  239. package/dist/universal-router-sdk.cjs.development.js +0 -1500
  240. package/dist/universal-router-sdk.cjs.development.js.map +0 -1
  241. package/dist/universal-router-sdk.cjs.production.min.js +0 -2
  242. package/dist/universal-router-sdk.cjs.production.min.js.map +0 -1
  243. package/dist/universal-router-sdk.esm.js +0 -1493
  244. package/dist/universal-router-sdk.esm.js.map +0 -1
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toV4URVersion = void 0;
4
+ const v4_sdk_1 = require("@kittycorn-labs/v4-sdk");
5
+ // the one sanctioned bridge to v4-sdk's URVersion — UniversalRouterVersion and URVersion share string values,
6
+ // so resolve by value: new versions map without code changes, as long as both enums stay in sync.
7
+ const URVERSION_VALUES = new Set(Object.values(v4_sdk_1.URVersion));
8
+ function toV4URVersion(version) {
9
+ if (version === undefined)
10
+ return v4_sdk_1.URVersion.V2_0;
11
+ if (!URVERSION_VALUES.has(version)) {
12
+ throw new Error(`No v4-sdk URVersion mapping for UniversalRouterVersion: ${version}`);
13
+ }
14
+ return version;
15
+ }
16
+ exports.toV4URVersion = toV4URVersion;
17
+ //# sourceMappingURL=toV4URVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toV4URVersion.js","sourceRoot":"","sources":["../../../../src/utils/toV4URVersion.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAGlD,8GAA8G;AAC9G,kGAAkG;AAClG,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,MAAM,CAAC,kBAAS,CAAC,CAAC,CAAA;AAElE,SAAgB,aAAa,CAAC,OAAgC;IAC5D,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,kBAAS,CAAC,IAAI,CAAA;IAChD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,2DAA2D,OAAO,EAAE,CAAC,CAAA;KACtF;IACD,OAAO,OAA+B,CAAA;AACxC,CAAC;AAND,sCAMC"}
@@ -0,0 +1,2 @@
1
+ import { NormalizedSwapSpecification, SwapStep } from '../types/encodeSwaps';
2
+ export declare function validateEncodeSwaps(spec: NormalizedSwapSpecification, swapSteps: SwapStep[]): void;
@@ -0,0 +1,344 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateEncodeSwaps = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const bignumber_1 = require("@ethersproject/bignumber");
6
+ const tiny_invariant_1 = tslib_1.__importDefault(require("tiny-invariant"));
7
+ const sdk_core_1 = require("@kittycorn-labs/sdk-core");
8
+ const uniswap_1 = require("../entities/actions/uniswap");
9
+ const constants_1 = require("./constants");
10
+ const getCurrencyAddress_1 = require("./getCurrencyAddress");
11
+ const directTransfers_1 = require("./directTransfers");
12
+ const computeEncodeSwapsAmounts_1 = require("./computeEncodeSwapsAmounts");
13
+ const routerBalanceSteps_1 = require("./routerBalanceSteps");
14
+ const normalizeEncodeSwapsSpec_1 = require("./normalizeEncodeSwapsSpec");
15
+ function hasPortionFee(spec) {
16
+ return (0, normalizeEncodeSwapsSpec_1.toFeeList)(spec.fee).some((fee) => fee.kind === 'portion');
17
+ }
18
+ function hasV4MinHopPriceX36(action) {
19
+ switch (action.action) {
20
+ case 'SWAP_EXACT_IN':
21
+ case 'SWAP_EXACT_OUT':
22
+ case 'SWAP_EXACT_IN_SINGLE':
23
+ case 'SWAP_EXACT_OUT_SINGLE':
24
+ return action.minHopPriceX36 !== undefined;
25
+ default:
26
+ return false;
27
+ }
28
+ }
29
+ function validateV4HopCounts(actions) {
30
+ for (const action of actions) {
31
+ switch (action.action) {
32
+ case 'SWAP_EXACT_IN':
33
+ case 'SWAP_EXACT_OUT':
34
+ (0, tiny_invariant_1.default)(!action.minHopPriceX36 || action.minHopPriceX36.length === action.path.length, 'V4_MIN_HOP_PRICE_X36_LENGTH_MISMATCH');
35
+ break;
36
+ default:
37
+ break;
38
+ }
39
+ }
40
+ }
41
+ function assertRouterRecipient(recipient) {
42
+ (0, tiny_invariant_1.default)(recipient === constants_1.ROUTER_AS_RECIPIENT, 'STEP_RECIPIENT_MUST_BE_ROUTER');
43
+ }
44
+ // `routerOnlyError` is the surface's legacy flag-off code (steps vs v4 actions)
45
+ function checkRecipient(spec, recipient, routerOnlyError) {
46
+ (0, tiny_invariant_1.default)(typeof recipient === 'string', routerOnlyError);
47
+ if (recipient === constants_1.ROUTER_AS_RECIPIENT)
48
+ return;
49
+ (0, tiny_invariant_1.default)(spec.allowDirectTransfers, routerOnlyError);
50
+ (0, tiny_invariant_1.default)(!hasPortionFee(spec), 'PORTION_FEE_REQUIRES_ROUTER_CUSTODY');
51
+ (0, tiny_invariant_1.default)(recipient.toLowerCase() === spec.recipient.toLowerCase(), 'STEP_RECIPIENT_NOT_ALLOWED');
52
+ }
53
+ function validateV4Recipients(actions, spec) {
54
+ for (const action of actions) {
55
+ switch (action.action) {
56
+ case 'TAKE':
57
+ case 'TAKE_PORTION':
58
+ // fees are sdk-authored (the envelope's PAY_PORTION); a step-level TAKE_PORTION never pays the fee recipient
59
+ checkRecipient(spec, action.recipient, 'V4_ACTION_RECIPIENT_MUST_BE_ROUTER');
60
+ break;
61
+ case 'TAKE_ALL':
62
+ // TAKE_ALL pays msgSender on-chain; any other spec recipient would be the
63
+ // wrong payee while still reducing their sweep floor.
64
+ (0, tiny_invariant_1.default)(spec.allowDirectTransfers, 'TAKE_ALL_REQUIRES_DIRECT_TRANSFERS');
65
+ (0, tiny_invariant_1.default)(!hasPortionFee(spec), 'PORTION_FEE_REQUIRES_ROUTER_CUSTODY');
66
+ // strict equality: the all-numeric sentinel has no checksum variant; anything else fails closed
67
+ (0, tiny_invariant_1.default)(spec.recipient === constants_1.SENDER_AS_RECIPIENT, 'TAKE_ALL_REQUIRES_SENDER_RECIPIENT');
68
+ break;
69
+ default:
70
+ break;
71
+ }
72
+ }
73
+ }
74
+ const HEX_BYTES = /^0x([0-9a-fA-F]{2})*$/;
75
+ // ethers rejects non-hex hookData (e.g. '') deep inside abi encoding; fail loudly here instead
76
+ function validateV4HookData(actions) {
77
+ for (const action of actions) {
78
+ if (action.action === 'SWAP_EXACT_IN_SINGLE' || action.action === 'SWAP_EXACT_OUT_SINGLE') {
79
+ (0, tiny_invariant_1.default)(HEX_BYTES.test(action.hookData), 'V4_HOOK_DATA_INVALID');
80
+ }
81
+ if (action.action === 'SWAP_EXACT_IN' || action.action === 'SWAP_EXACT_OUT') {
82
+ for (const hop of action.path) {
83
+ (0, tiny_invariant_1.default)(HEX_BYTES.test(hop.hookData), 'V4_HOOK_DATA_INVALID');
84
+ }
85
+ }
86
+ }
87
+ }
88
+ function validateEncodeSwaps(spec, swapSteps) {
89
+ var _a, _b;
90
+ (0, tiny_invariant_1.default)(swapSteps.length > 0, 'EMPTY_SWAP_STEPS');
91
+ const amountCurrency = spec.routing.amount.currency.wrapped;
92
+ const quoteCurrency = spec.routing.quote.currency.wrapped;
93
+ const inputCurrency = spec.routing.inputToken.wrapped;
94
+ const outputCurrency = spec.routing.outputToken.wrapped;
95
+ (0, tiny_invariant_1.default)(!spec.slippageTolerance.lessThan(0), 'SLIPPAGE_TOLERANCE');
96
+ (0, tiny_invariant_1.default)(spec.recipient !== constants_1.ZERO_ADDRESS, 'RECIPIENT_CANNOT_BE_ZERO');
97
+ (0, tiny_invariant_1.default)(spec.recipient !== constants_1.ROUTER_AS_RECIPIENT, 'RECIPIENT_CANNOT_BE_ROUTER');
98
+ // routing.amount is on the exact side of the trade; routing.quote is on the slippage side
99
+ if (spec.tradeType === sdk_core_1.TradeType.EXACT_INPUT) {
100
+ (0, tiny_invariant_1.default)(amountCurrency.equals(inputCurrency), 'INVALID_ROUTING_AMOUNT_CURRENCY');
101
+ (0, tiny_invariant_1.default)(quoteCurrency.equals(outputCurrency), 'INVALID_ROUTING_QUOTE_CURRENCY');
102
+ }
103
+ else {
104
+ (0, tiny_invariant_1.default)(amountCurrency.equals(outputCurrency), 'INVALID_ROUTING_AMOUNT_CURRENCY');
105
+ (0, tiny_invariant_1.default)(quoteCurrency.equals(inputCurrency), 'INVALID_ROUTING_QUOTE_CURRENCY');
106
+ }
107
+ // ApproveProxy ingress lives upstream in the proxy contract: needs chain id, ERC20 input, no permit2, explicit recipient
108
+ if (spec.tokenTransferMode === uniswap_1.TokenTransferMode.ApproveProxy) {
109
+ (0, tiny_invariant_1.default)(!!spec.chainId, 'PROXY_MISSING_CHAIN_ID');
110
+ (0, tiny_invariant_1.default)(!spec.routing.inputToken.isNative, 'PROXY_NATIVE_INPUT');
111
+ (0, tiny_invariant_1.default)(!spec.permit, 'PROXY_PERMIT_CONFLICT');
112
+ (0, tiny_invariant_1.default)(spec.recipient !== constants_1.SENDER_AS_RECIPIENT, 'PROXY_EXPLICIT_RECIPIENT_REQUIRED');
113
+ }
114
+ // permit2 is ERC20-only; native input pays via msg.value
115
+ (0, tiny_invariant_1.default)(!(spec.routing.inputToken.isNative && spec.permit), 'NATIVE_INPUT_PERMIT');
116
+ // native-ERC20 gas-token input (e.g. Arc USDC): funded via msg.value, never via Permit2
117
+ if (spec.nativeErc20Input) {
118
+ (0, tiny_invariant_1.default)(!spec.routing.inputToken.isNative, 'NATIVE_ERC20_INPUT_NATIVE_TOKEN');
119
+ (0, tiny_invariant_1.default)(!spec.permit, 'NATIVE_ERC20_INPUT_PERMIT_CONFLICT');
120
+ (0, tiny_invariant_1.default)(spec.tokenTransferMode !== uniswap_1.TokenTransferMode.ApproveProxy, 'NATIVE_ERC20_INPUT_PROXY_CONFLICT');
121
+ (0, tiny_invariant_1.default)(spec.routing.inputToken.decimals <= 18, 'NATIVE_ERC20_INPUT_DECIMALS');
122
+ }
123
+ // router-balance funding: no ingress, first hop spends CONTRACT_BALANCE. Mirrors the
124
+ // SwapOptions.routerBalanceInput guards; anything refused here would silently encode a
125
+ // fixed-amount wallet-funded swap instead.
126
+ if (spec.routerBalanceInput) {
127
+ (0, tiny_invariant_1.default)(spec.tradeType === sdk_core_1.TradeType.EXACT_INPUT, 'ROUTER_BALANCE_INPUT_EXACT_INPUT_ONLY');
128
+ (0, tiny_invariant_1.default)(!spec.nativeErc20Input, 'ROUTER_BALANCE_INPUT_NATIVE_ERC20_CONFLICT');
129
+ (0, tiny_invariant_1.default)(!spec.permit, 'ROUTER_BALANCE_INPUT_PERMIT_CONFLICT');
130
+ (0, tiny_invariant_1.default)(spec.tokenTransferMode !== uniswap_1.TokenTransferMode.ApproveProxy, 'ROUTER_BALANCE_INPUT_PROXY_CONFLICT');
131
+ (0, tiny_invariant_1.default)(!spec.allowDirectTransfers, 'ROUTER_BALANCE_INPUT_DIRECT_TRANSFERS_CONFLICT');
132
+ // SENDER_AS_RECIPIENT resolves to the caller of execute(), who in this flow is the
133
+ // funder (a bridge filler), not the swapper.
134
+ (0, tiny_invariant_1.default)(spec.recipient !== constants_1.SENDER_AS_RECIPIENT, 'ROUTER_BALANCE_INPUT_EXPLICIT_RECIPIENT_REQUIRED');
135
+ if (spec.routerBalanceInput.minimumAmount !== undefined) {
136
+ // BALANCE_CHECK_ERC20 reads `owner` verbatim, so the router's real address is needed
137
+ (0, tiny_invariant_1.default)(!!spec.chainId, 'ROUTER_BALANCE_INPUT_MINIMUM_REQUIRES_CHAIN_ID');
138
+ }
139
+ const nativeBalanceInput = spec.routing.inputToken.isNative;
140
+ // Native input is funded as msg.value on execute() (raw transfers to the router
141
+ // revert) and must be wrapped in full before anything spends it, so the plan has to
142
+ // lead with a WRAP_ETH; the spender checks below then run against the wrapped token.
143
+ if (nativeBalanceInput) {
144
+ (0, tiny_invariant_1.default)(((_a = swapSteps[0]) === null || _a === void 0 ? void 0 : _a.type) === 'WRAP_ETH', 'ROUTER_BALANCE_INPUT_NATIVE_REQUIRES_WRAP');
145
+ }
146
+ // At least one step must spend the (wrapped) input token. Splits are
147
+ // allowed: the transform keeps every spender's quoted amount except the
148
+ // largest, which is rewritten to CONTRACT_BALANCE and moved last among the
149
+ // spenders (a v4 leg's spend is read from its input settle or swaps).
150
+ const balanceInputTokenAddress = nativeBalanceInput
151
+ ? spec.routing.inputToken.wrapped.address
152
+ : (0, getCurrencyAddress_1.getCurrencyAddress)(spec.routing.inputToken);
153
+ const spendableSteps = nativeBalanceInput ? swapSteps.slice(1) : swapSteps;
154
+ const unwrapIndex = swapSteps.findIndex((step) => step.type === 'UNWRAP_WETH');
155
+ const unwrapDrainsInput = unwrapIndex >= 0 &&
156
+ !nativeBalanceInput &&
157
+ balanceInputTokenAddress.toLowerCase() === ((_b = sdk_core_1.WETH9[spec.routing.inputToken.chainId]) === null || _b === void 0 ? void 0 : _b.address.toLowerCase());
158
+ const spenderIndexes = spendableSteps
159
+ .map((step, index) => ((0, routerBalanceSteps_1.stepSpendsToken)(step, balanceInputTokenAddress) ? index : -1))
160
+ .filter((index) => index >= 0);
161
+ (0, tiny_invariant_1.default)(spenderIndexes.length > 0, 'ROUTER_BALANCE_INPUT_SPLIT_ROUTE');
162
+ // Shapes the rewrite cannot express. Checked here so both encode paths get a typed
163
+ // refusal; the transform keeps the same assertions as a backstop.
164
+ if (unwrapDrainsInput) {
165
+ const nativeSpenders = swapSteps.filter((step, index) => index > unwrapIndex && (0, routerBalanceSteps_1.stepSpendsToken)(step, constants_1.ETH_ADDRESS));
166
+ (0, tiny_invariant_1.default)(nativeSpenders.length > 0, 'ROUTER_BALANCE_INPUT_UNWRAP_WITHOUT_NATIVE_LEG');
167
+ (0, tiny_invariant_1.default)(nativeSpenders.length === 1, 'ROUTER_BALANCE_INPUT_UNWRAP_MULTIPLE_NATIVE_LEGS');
168
+ }
169
+ // A split needs a comparable amount on every leg to pick the one that absorbs the
170
+ // variance; a sentinel or zero leg leaves the choice undefined.
171
+ const remainderCurrency = (unwrapDrainsInput ? constants_1.ETH_ADDRESS : balanceInputTokenAddress).toLowerCase();
172
+ const remainderSpenders = swapSteps.filter((step) => (0, routerBalanceSteps_1.stepSpendsToken)(step, remainderCurrency));
173
+ if (remainderSpenders.length > 1) {
174
+ for (const step of remainderSpenders) {
175
+ const amount = (0, routerBalanceSteps_1.stepSpendAmount)(step, remainderCurrency);
176
+ (0, tiny_invariant_1.default)(amount.gt(0) && !amount.eq(constants_1.CONTRACT_BALANCE), 'ROUTER_BALANCE_INPUT_SPLIT_LEG_AMOUNT_UNKNOWN');
177
+ }
178
+ }
179
+ for (const step of swapSteps) {
180
+ if (step.type !== 'V4_SWAP') {
181
+ continue;
182
+ }
183
+ const openDelta = step.v4Actions.filter((action) => (0, routerBalanceSteps_1.isInputSwap)(action, remainderCurrency) && (0, routerBalanceSteps_1.v4SwapAmountIn)(action).isZero());
184
+ (0, tiny_invariant_1.default)(openDelta.length <= 1, 'ROUTER_BALANCE_INPUT_MULTIPLE_OPEN_DELTA_SWAPS');
185
+ }
186
+ swapSteps.forEach((step, index) => {
187
+ (0, tiny_invariant_1.default)(step.type !== 'V2_SWAP_EXACT_OUT' && step.type !== 'V3_SWAP_EXACT_OUT', 'ROUTER_BALANCE_INPUT_EXACT_INPUT_ONLY');
188
+ // An exact-out action draws from the same settled balance but is invisible to the
189
+ // open-delta ordering, so the greedy leg can run first and starve it.
190
+ (0, tiny_invariant_1.default)(step.type !== 'V4_SWAP' ||
191
+ !step.v4Actions.some((action) => action.action === 'SWAP_EXACT_OUT' || action.action === 'SWAP_EXACT_OUT_SINGLE'), 'ROUTER_BALANCE_INPUT_EXACT_INPUT_ONLY');
192
+ // A wrap at hop 0 of an ERC20 plan means the plan expects native input. Wraps later
193
+ // in the plan are routers wrapping intermediate ETH (a v4 leg paid out native and the
194
+ // next leg wants WETH) and only touch what that leg produced.
195
+ (0, tiny_invariant_1.default)(step.type !== 'WRAP_ETH' || index > 0 || nativeBalanceInput, 'ROUTER_BALANCE_INPUT_NATIVE_INPUT');
196
+ // Native mode wraps the whole balance at hop 0, so a later leg that still expects raw
197
+ // ETH (routers can feed v4 pools native directly) would find nothing to spend.
198
+ (0, tiny_invariant_1.default)(!nativeBalanceInput || index === 0 || !(0, routerBalanceSteps_1.stepSpendsToken)(step, constants_1.ETH_ADDRESS), 'ROUTER_BALANCE_INPUT_NATIVE_LEG_UNSUPPORTED');
199
+ // With WETH delivered, the unwrap is the greedy claim, so an input-token spender
200
+ // after it would find an empty balance.
201
+ (0, tiny_invariant_1.default)(!unwrapDrainsInput || index <= unwrapIndex || !(0, routerBalanceSteps_1.stepSpendsToken)(step, balanceInputTokenAddress), 'ROUTER_BALANCE_INPUT_WETH_LEG_AFTER_UNWRAP');
202
+ // The rewrite keeps the caller's v4 action order and turns the input settle into
203
+ // SETTLE(CONTRACT_BALANCE) with the swap on the open delta. A swap that runs before
204
+ // that settle has nothing to spend and reverts on-chain, so require settle first.
205
+ // (A step with no input settle gets one prepended by the rewrite.)
206
+ if (step.type === 'V4_SWAP' && (0, routerBalanceSteps_1.stepSpendsToken)(step, balanceInputTokenAddress)) {
207
+ const token = balanceInputTokenAddress.toLowerCase();
208
+ const settleIndex = step.v4Actions.findIndex((action) => (0, routerBalanceSteps_1.isInputSettle)(action, token));
209
+ const swapIndex = step.v4Actions.findIndex((action) => (0, routerBalanceSteps_1.isInputSwap)(action, token));
210
+ (0, tiny_invariant_1.default)(settleIndex < 0 || swapIndex < 0 || settleIndex < swapIndex, 'ROUTER_BALANCE_INPUT_V4_SETTLE_BEFORE_SWAP');
211
+ }
212
+ });
213
+ }
214
+ // An empty array is rejected rather than read as "no fee": silently paying nobody is the failure to prevent.
215
+ // Fee checks throw plain Errors, not tiny-invariant: invariant strips the
216
+ // message in production builds, and callers classify these by message.
217
+ const fees = (0, normalizeEncodeSwapsSpec_1.toFeeList)(spec.fee);
218
+ if (Array.isArray(spec.fee)) {
219
+ if (fees.length === 0)
220
+ throw new Error('AT_LEAST_ONE_FEE_RECIPIENT_REQUIRED');
221
+ if (fees.length > uniswap_1.MAX_FEE_RECIPIENTS)
222
+ throw new Error('TOO_MANY_FEE_RECIPIENTS');
223
+ }
224
+ // Each portion fee means a fraction of the *gross* output, so later entries are rescaled
225
+ // against the router's shrinking balance at encode time. The rescaled portions are fractional
226
+ // bips, which only PAY_PORTION_FULL_PRECISION (>= v2.1.1) can represent, so multiple portion
227
+ // fees are therefore rejected on older router versions.
228
+ if (fees.filter((fee) => fee.kind === 'portion').length > 1 && !(0, constants_1.isAtLeastV2_1_1)(spec.urVersion)) {
229
+ throw new Error('MULTIPLE_FEE_RECIPIENTS_REQUIRE_UR_V2_1_1');
230
+ }
231
+ // Per entry, so one bad entry is never averaged away, and a mixed portion/flat array trips one of these.
232
+ let flatFeeTotal = bignumber_1.BigNumber.from(0);
233
+ for (const fee of fees) {
234
+ // portion fees pair with exact-input (% of variable output); flat fees pair with exact-output (fixed deduction from the target)
235
+ if (fee.kind === 'portion' && spec.tradeType !== sdk_core_1.TradeType.EXACT_INPUT) {
236
+ throw new Error('INVALID_PORTION_FEE_TRADE_TYPE');
237
+ }
238
+ if (fee.kind === 'flat' && spec.tradeType !== sdk_core_1.TradeType.EXACT_OUTPUT) {
239
+ throw new Error('INVALID_FLAT_FEE_TRADE_TYPE');
240
+ }
241
+ if (fee.kind === 'flat') {
242
+ flatFeeTotal = flatFeeTotal.add(bignumber_1.BigNumber.from(fee.amount));
243
+ }
244
+ // v2.0 PAY_PORTION takes whole bps; fractional bps need >=v2.1.1's PAY_PORTION_FULL_PRECISION
245
+ // Any pre-2.1.1 version lacks PAY_PORTION_FULL_PRECISION, not just 2.0.
246
+ if (fee.kind === 'portion' && !(0, constants_1.isAtLeastV2_1_1)(spec.urVersion) && !fee.fee.multiply(10000).remainder.equalTo(0)) {
247
+ throw new Error('FRACTIONAL_BPS_PORTION_FEE_UNSUPPORTED_ON_V2_0');
248
+ }
249
+ }
250
+ // Each flat transfer is paid in full from the same balance, so it is the total that must fit.
251
+ if (flatFeeTotal.gt(bignumber_1.BigNumber.from(spec.routing.amount.quotient.toString()))) {
252
+ throw new Error('FLAT_FEE_GT_AMOUNT');
253
+ }
254
+ // per-step: capability-gate by UR version, recipients must be router custody (or the spec
255
+ // recipient under allowDirectTransfers), per-hop arrays must match hop counts
256
+ // Router-balance funding rewrites the spender legs and clears any payerIsUser flag a
257
+ // wallet-mode router plan carried, so the flag is tolerated only on those legs.
258
+ const balanceInputAddress = spec.routerBalanceInput
259
+ ? spec.routing.inputToken.isNative
260
+ ? spec.routing.inputToken.wrapped.address
261
+ : (0, getCurrencyAddress_1.getCurrencyAddress)(spec.routing.inputToken)
262
+ : undefined;
263
+ for (const step of swapSteps) {
264
+ if (!spec.allowDirectTransfers) {
265
+ // The router-balance rewrite clears payerIsUser on the spender steps, so a flag a
266
+ // wallet-mode plan carried there is tolerated. The waiver is per-PULL, not
267
+ // per-step: a spender step may also carry a settle in some other currency, which
268
+ // the rewrite has no business funding, and excusing the whole step would let that
269
+ // settle reach the chain and pull the executing filler's balance via Permit2.
270
+ const rewrittenPulls = balanceInputAddress !== undefined &&
271
+ (0, routerBalanceSteps_1.stepSpendsToken)(step, balanceInputAddress) &&
272
+ (0, directTransfers_1.stepUserPaidPulls)(step).every((pull) => { var _a; return ((_a = pull.token) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === balanceInputAddress.toLowerCase(); });
273
+ (0, tiny_invariant_1.default)(!(0, directTransfers_1.hasUserPaidFlag)(step) || rewrittenPulls, 'PAYER_IS_USER_REQUIRES_DIRECT_TRANSFERS');
274
+ if (step.type === 'V4_SWAP') {
275
+ for (const action of step.v4Actions) {
276
+ (0, tiny_invariant_1.default)(action.action !== 'SETTLE_ALL', 'SETTLE_ALL_REQUIRES_DIRECT_TRANSFERS');
277
+ (0, tiny_invariant_1.default)(action.action !== 'TAKE_ALL', 'TAKE_ALL_REQUIRES_DIRECT_TRANSFERS');
278
+ }
279
+ }
280
+ }
281
+ if (spec.urVersion === constants_1.UniversalRouterVersion.V2_0) {
282
+ (0, tiny_invariant_1.default)(!('minHopPriceX36' in step) || step.minHopPriceX36 === undefined, 'MIN_HOP_PRICE_X36_UNSUPPORTED_ON_V2_0');
283
+ (0, tiny_invariant_1.default)(!(step.type === 'V4_SWAP' && step.v4Actions.some(hasV4MinHopPriceX36)), 'MIN_HOP_PRICE_X36_UNSUPPORTED_ON_V2_0');
284
+ }
285
+ switch (step.type) {
286
+ case 'V2_SWAP_EXACT_IN':
287
+ case 'V2_SWAP_EXACT_OUT':
288
+ checkRecipient(spec, step.recipient, 'STEP_RECIPIENT_MUST_BE_ROUTER');
289
+ (0, tiny_invariant_1.default)(!step.minHopPriceX36 || step.minHopPriceX36.length === step.path.length - 1, 'V2_MIN_HOP_PRICE_X36_LENGTH_MISMATCH');
290
+ break;
291
+ case 'V3_SWAP_EXACT_IN':
292
+ case 'V3_SWAP_EXACT_OUT': {
293
+ checkRecipient(spec, step.recipient, 'STEP_RECIPIENT_MUST_BE_ROUTER');
294
+ const hopCount = (0, directTransfers_1.getV3HopCount)(step.path);
295
+ (0, tiny_invariant_1.default)(hopCount === undefined || !step.minHopPriceX36 || step.minHopPriceX36.length === hopCount, 'V3_MIN_HOP_PRICE_X36_LENGTH_MISMATCH');
296
+ break;
297
+ }
298
+ case 'WRAP_ETH':
299
+ // router-only in both regimes: this is the input-side transition, not an outbound payout
300
+ assertRouterRecipient(step.recipient);
301
+ break;
302
+ case 'UNWRAP_WETH':
303
+ checkRecipient(spec, step.recipient, 'STEP_RECIPIENT_MUST_BE_ROUTER');
304
+ break;
305
+ case 'V4_SWAP':
306
+ validateV4HopCounts(step.v4Actions);
307
+ validateV4HookData(step.v4Actions);
308
+ validateV4Recipients(step.v4Actions, spec);
309
+ break;
310
+ default:
311
+ break;
312
+ }
313
+ }
314
+ // inbound budget: user-paid pulls must be concrete input-token amounts whose combined
315
+ // maxima fit within exactOrMaxAmountIn; the encoder then ingresses only the remainder,
316
+ // so total user outflow can never exceed the spec's input
317
+ if (spec.allowDirectTransfers && swapSteps.some((step) => (0, directTransfers_1.stepUserPaidPulls)(step).length > 0)) {
318
+ // permit2-based direct pulls need a plain ERC20 input owned by the tx sender
319
+ (0, tiny_invariant_1.default)(!spec.routing.inputToken.isNative, 'DIRECT_TRANSFERS_NATIVE_INPUT');
320
+ (0, tiny_invariant_1.default)(!spec.nativeErc20Input, 'DIRECT_TRANSFERS_NATIVE_ERC20_INPUT');
321
+ (0, tiny_invariant_1.default)(spec.tokenTransferMode === uniswap_1.TokenTransferMode.Permit2, 'DIRECT_TRANSFERS_REQUIRES_PERMIT2');
322
+ const { exactOrMaxAmountIn } = (0, computeEncodeSwapsAmounts_1.computeEncodeSwapsAmounts)(spec);
323
+ const inputTokenAddress = (0, getCurrencyAddress_1.getCurrencyAddress)(spec.routing.inputToken).toLowerCase();
324
+ let userPaidTotal = bignumber_1.BigNumber.from(0);
325
+ swapSteps.forEach((step, stepIndex) => {
326
+ for (const pull of (0, directTransfers_1.stepUserPaidPulls)(step)) {
327
+ // concrete amounts only: bans ALREADY_PAID/OPEN_DELTA (0), CONTRACT_BALANCE (2^255),
328
+ // and anything permit2's uint160 cannot move
329
+ (0, tiny_invariant_1.default)(pull.maxAmount.gt(0) && pull.maxAmount.lte(constants_1.MAX_UINT160), `USER_PAID_AMOUNT_OUT_OF_RANGE (step ${stepIndex})`);
330
+ (0, tiny_invariant_1.default)(typeof pull.token === 'string', `USER_PAID_MALFORMED_PATH (step ${stepIndex})`);
331
+ (0, tiny_invariant_1.default)(pull.token.toLowerCase() === inputTokenAddress, `USER_PAID_INPUT_TOKEN_MISMATCH (step ${stepIndex})`);
332
+ userPaidTotal = userPaidTotal.add(pull.maxAmount);
333
+ }
334
+ });
335
+ (0, tiny_invariant_1.default)(userPaidTotal.lte(exactOrMaxAmountIn), 'USER_PAID_EXCEEDS_MAX_INPUT');
336
+ // keeps the permit2 allowance an on-chain outer ceiling equal to the budget
337
+ if (spec.permit) {
338
+ (0, tiny_invariant_1.default)(spec.permit.details.token.toLowerCase() === inputTokenAddress, 'PERMIT_TOKEN_MISMATCH');
339
+ (0, tiny_invariant_1.default)(bignumber_1.BigNumber.from(spec.permit.details.amount).gte(exactOrMaxAmountIn), 'PERMIT_AMOUNT_INSUFFICIENT');
340
+ }
341
+ }
342
+ }
343
+ exports.validateEncodeSwaps = validateEncodeSwaps;
344
+ //# sourceMappingURL=validateEncodeSwaps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateEncodeSwaps.js","sourceRoot":"","sources":["../../../../src/utils/validateEncodeSwaps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"type":"module"}