@kittycorn-labs/universal-router-sdk 1.4.42 → 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,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeV4Action = void 0;
4
+ const v4_sdk_1 = require("@kittycorn-labs/v4-sdk");
5
+ const constants_1 = require("./constants");
6
+ const ACTION_NAME_TO_ENUM = Object.fromEntries(Object.entries(v4_sdk_1.Actions).filter(([key]) => isNaN(Number(key))));
7
+ function encodeV4Action(v4Action, urVersion) {
8
+ var _a, _b, _c, _d;
9
+ const action = ACTION_NAME_TO_ENUM[v4Action.action];
10
+ if (action === undefined)
11
+ throw new Error(`Unknown V4 action: ${v4Action.action}`);
12
+ const useV2_1_1 = (0, constants_1.isAtLeastV2_1_1)(urVersion);
13
+ switch (v4Action.action) {
14
+ case 'SWAP_EXACT_IN':
15
+ return {
16
+ action,
17
+ params: [
18
+ {
19
+ currencyIn: v4Action.currencyIn,
20
+ path: v4Action.path,
21
+ ...(useV2_1_1 && { minHopPriceX36: (_a = v4Action.minHopPriceX36) !== null && _a !== void 0 ? _a : [] }),
22
+ amountIn: v4Action.amountIn,
23
+ amountOutMinimum: v4Action.amountOutMinimum,
24
+ },
25
+ ],
26
+ };
27
+ case 'SWAP_EXACT_IN_SINGLE':
28
+ return {
29
+ action,
30
+ params: [
31
+ {
32
+ poolKey: v4Action.poolKey,
33
+ zeroForOne: v4Action.zeroForOne,
34
+ amountIn: v4Action.amountIn,
35
+ amountOutMinimum: v4Action.amountOutMinimum,
36
+ ...(useV2_1_1 && { minHopPriceX36: (_b = v4Action.minHopPriceX36) !== null && _b !== void 0 ? _b : 0 }),
37
+ hookData: v4Action.hookData,
38
+ },
39
+ ],
40
+ };
41
+ case 'SWAP_EXACT_OUT':
42
+ return {
43
+ action,
44
+ params: [
45
+ {
46
+ currencyOut: v4Action.currencyOut,
47
+ path: v4Action.path,
48
+ ...(useV2_1_1 && { minHopPriceX36: (_c = v4Action.minHopPriceX36) !== null && _c !== void 0 ? _c : [] }),
49
+ amountOut: v4Action.amountOut,
50
+ amountInMaximum: v4Action.amountInMaximum,
51
+ },
52
+ ],
53
+ };
54
+ case 'SWAP_EXACT_OUT_SINGLE':
55
+ return {
56
+ action,
57
+ params: [
58
+ {
59
+ poolKey: v4Action.poolKey,
60
+ zeroForOne: v4Action.zeroForOne,
61
+ amountOut: v4Action.amountOut,
62
+ amountInMaximum: v4Action.amountInMaximum,
63
+ ...(useV2_1_1 && { minHopPriceX36: (_d = v4Action.minHopPriceX36) !== null && _d !== void 0 ? _d : 0 }),
64
+ hookData: v4Action.hookData,
65
+ },
66
+ ],
67
+ };
68
+ case 'SETTLE':
69
+ // payerIsUser defaults to false (router custody); validateEncodeSwaps gates when true is allowed
70
+ return { action, params: [v4Action.currency, v4Action.amount, v4Action.payerIsUser === true] };
71
+ case 'SETTLE_ALL':
72
+ return { action, params: [v4Action.currency, v4Action.maxAmount] };
73
+ case 'TAKE':
74
+ return { action, params: [v4Action.currency, v4Action.recipient, v4Action.amount] };
75
+ case 'TAKE_ALL':
76
+ return { action, params: [v4Action.currency, v4Action.minAmount] };
77
+ case 'TAKE_PORTION':
78
+ return { action, params: [v4Action.currency, v4Action.recipient, v4Action.bips] };
79
+ default:
80
+ throw new Error(`Unhandled V4 action: ${v4Action.action}`);
81
+ }
82
+ }
83
+ exports.encodeV4Action = encodeV4Action;
84
+ //# sourceMappingURL=encodeV4Action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encodeV4Action.js","sourceRoot":"","sources":["../../../../src/utils/encodeV4Action.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { Currency } from '@kittycorn-labs/sdk-core';
2
- export declare function getCurrencyAddress(currency: Currency): string;
1
+ import { Currency } from '@kittycorn-labs/sdk-core';
2
+ export declare function getCurrencyAddress(currency: Currency): string;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCurrencyAddress = void 0;
4
+ const constants_1 = require("./constants");
5
+ function getCurrencyAddress(currency) {
6
+ return currency.isNative ? constants_1.ETH_ADDRESS : currency.wrapped.address;
7
+ }
8
+ exports.getCurrencyAddress = getCurrencyAddress;
9
+ //# sourceMappingURL=getCurrencyAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCurrencyAddress.js","sourceRoot":"","sources":["../../../../src/utils/getCurrencyAddress.ts"],"names":[],"mappings":";;;AACA,2CAAyC;AAEzC,SAAgB,kBAAkB,CAAC,QAAkB;IACnD,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,uBAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAA;AACnE,CAAC;AAFD,gDAEC"}
@@ -1,23 +1,23 @@
1
- import { BigintIsh } from '@kittycorn-labs/sdk-core';
2
- import { NFTPermitOptions } from '@kittycorn-labs/v3-sdk';
3
- import { PermitSingle } from '@uniswap/permit2-sdk';
4
- import { RoutePlanner } from './routerCommands';
5
- export interface Permit2Permit extends PermitSingle {
6
- signature: string;
7
- }
8
- export declare type ApproveProtocol = {
9
- token: string;
10
- protocol: string;
11
- };
12
- export declare type Permit2TransferFrom = {
13
- token: string;
14
- amount: string;
15
- recipient?: string;
16
- };
17
- export declare type InputTokenOptions = {
18
- permit2Permit?: Permit2Permit;
19
- permit2TransferFrom?: Permit2TransferFrom;
20
- };
21
- export declare function encodePermit(planner: RoutePlanner, permit2: Permit2Permit): void;
22
- export declare function encodeV3PositionPermit(planner: RoutePlanner, permit: NFTPermitOptions, tokenId: BigintIsh): void;
23
- export declare function encodeInputTokenOptions(planner: RoutePlanner, options: InputTokenOptions): void;
1
+ import { BigintIsh } from '@kittycorn-labs/sdk-core';
2
+ import { NFTPermitOptions } from '@kittycorn-labs/v3-sdk';
3
+ import { PermitSingle } from '@uniswap/permit2-sdk';
4
+ import { RoutePlanner } from './routerCommands';
5
+ export interface Permit2Permit extends PermitSingle {
6
+ signature: string;
7
+ }
8
+ export type ApproveProtocol = {
9
+ token: string;
10
+ protocol: string;
11
+ };
12
+ export type Permit2TransferFrom = {
13
+ token: string;
14
+ amount: string;
15
+ recipient?: string;
16
+ };
17
+ export type InputTokenOptions = {
18
+ permit2Permit?: Permit2Permit;
19
+ permit2TransferFrom?: Permit2TransferFrom;
20
+ };
21
+ export declare function encodePermit(planner: RoutePlanner, permit2: Permit2Permit): void;
22
+ export declare function encodeV3PositionPermit(planner: RoutePlanner, permit: NFTPermitOptions, tokenId: BigintIsh): void;
23
+ export declare function encodeInputTokenOptions(planner: RoutePlanner, options: InputTokenOptions): void;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeInputTokenOptions = exports.encodeV3PositionPermit = exports.encodePermit = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const tiny_invariant_1 = tslib_1.__importDefault(require("tiny-invariant"));
6
+ const bytes_1 = require("@ethersproject/bytes");
7
+ const sdk_core_1 = require("@kittycorn-labs/sdk-core");
8
+ const v3_sdk_1 = require("@kittycorn-labs/v3-sdk");
9
+ const routerCommands_1 = require("./routerCommands");
10
+ const constants_1 = require("./constants");
11
+ const SIGNATURE_LENGTH = 65;
12
+ const EIP_2098_SIGNATURE_LENGTH = 64;
13
+ function encodePermit(planner, permit2) {
14
+ let signature = permit2.signature;
15
+ const length = (0, bytes_1.arrayify)(permit2.signature).length;
16
+ // signature data provided for EIP-1271 may have length different from ECDSA signature
17
+ if (length === SIGNATURE_LENGTH || length === EIP_2098_SIGNATURE_LENGTH) {
18
+ // sanitizes signature to cover edge cases of malformed EIP-2098 sigs and v used as recovery id
19
+ signature = (0, bytes_1.joinSignature)((0, bytes_1.splitSignature)(permit2.signature));
20
+ }
21
+ planner.addCommand(routerCommands_1.CommandType.PERMIT2_PERMIT, [permit2, signature]);
22
+ }
23
+ exports.encodePermit = encodePermit;
24
+ function encodeV3PositionPermit(planner, permit, tokenId) {
25
+ const calldata = v3_sdk_1.NonfungiblePositionManager.INTERFACE.encodeFunctionData('permit', [
26
+ (0, sdk_core_1.validateAndParseAddress)(permit.spender),
27
+ tokenId,
28
+ permit.deadline,
29
+ permit.v,
30
+ permit.r,
31
+ permit.s,
32
+ ]);
33
+ planner.addCommand(routerCommands_1.CommandType.V3_POSITION_MANAGER_PERMIT, [calldata]);
34
+ }
35
+ exports.encodeV3PositionPermit = encodeV3PositionPermit;
36
+ // Handles the encoding of commands needed to gather input tokens for a trade
37
+ // Approval: The router approving another address to take tokens.
38
+ // note: Only seaport and sudoswap support this action. Approvals are left open.
39
+ // Permit: A Permit2 signature-based Permit to allow the router to access a user's tokens
40
+ // Transfer: A Permit2 TransferFrom of tokens from a user to either the router or another address
41
+ function encodeInputTokenOptions(planner, options) {
42
+ // first ensure that all tokens provided for encoding are the same
43
+ if (!!options.permit2TransferFrom && !!options.permit2Permit)
44
+ (0, tiny_invariant_1.default)(options.permit2TransferFrom.token === options.permit2Permit.details.token, `inconsistent token`);
45
+ // if this order has a options.permit2Permit, encode it
46
+ if (!!options.permit2Permit) {
47
+ encodePermit(planner, options.permit2Permit);
48
+ }
49
+ if (!!options.permit2TransferFrom) {
50
+ planner.addCommand(routerCommands_1.CommandType.PERMIT2_TRANSFER_FROM, [
51
+ options.permit2TransferFrom.token,
52
+ options.permit2TransferFrom.recipient ? options.permit2TransferFrom.recipient : constants_1.ROUTER_AS_RECIPIENT,
53
+ options.permit2TransferFrom.amount,
54
+ ]);
55
+ }
56
+ }
57
+ exports.encodeInputTokenOptions = encodeInputTokenOptions;
58
+ //# sourceMappingURL=inputTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputTokens.js","sourceRoot":"","sources":["../../../../src/utils/inputTokens.ts"],"names":[],"mappings":";;;;AAAA,4EAAsC;AACtC,gDAA8E;AAC9E,uDAA6E;AAC7E,mDAAqF;AAErF,qDAA4D;AAC5D,2CAAiD;AAsBjD,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAC3B,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAEpC,SAAgB,YAAY,CAAC,OAAqB,EAAE,OAAsB;IACxE,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IAEjC,MAAM,MAAM,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAA;IACjD,sFAAsF;IACtF,IAAI,MAAM,KAAK,gBAAgB,IAAI,MAAM,KAAK,yBAAyB,EAAE;QACvE,+FAA+F;QAC/F,SAAS,GAAG,IAAA,qBAAa,EAAC,IAAA,sBAAc,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;KAC7D;IAED,OAAO,CAAC,UAAU,CAAC,4BAAW,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;AACtE,CAAC;AAXD,oCAWC;AAED,SAAgB,sBAAsB,CAAC,OAAqB,EAAE,MAAwB,EAAE,OAAkB;IACxG,MAAM,QAAQ,GAAG,mCAA0B,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE;QACjF,IAAA,kCAAuB,EAAC,MAAM,CAAC,OAAO,CAAC;QACvC,OAAO;QACP,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,CAAC;QACR,MAAM,CAAC,CAAC;QACR,MAAM,CAAC,CAAC;KACT,CAAC,CAAA;IAEF,OAAO,CAAC,UAAU,CAAC,4BAAW,CAAC,0BAA0B,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;AACxE,CAAC;AAXD,wDAWC;AAED,6EAA6E;AAC7E,iEAAiE;AACjE,kFAAkF;AAClF,yFAAyF;AACzF,iGAAiG;AACjG,SAAgB,uBAAuB,CAAC,OAAqB,EAAE,OAA0B;IACvF,kEAAkE;IAClE,IAAI,CAAC,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa;QAC1D,IAAA,wBAAS,EAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,KAAK,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAA;IAE5G,uDAAuD;IACvD,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE;QAC3B,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;KAC7C;IAED,IAAI,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE;QACjC,OAAO,CAAC,UAAU,CAAC,4BAAW,CAAC,qBAAqB,EAAE;YACpD,OAAO,CAAC,mBAAmB,CAAC,KAAK;YACjC,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,+BAAmB;YACnG,OAAO,CAAC,mBAAmB,CAAC,MAAM;SACnC,CAAC,CAAA;KACH;AACH,CAAC;AAjBD,0DAiBC"}
@@ -0,0 +1,6 @@
1
+ import { Fee, FlatFee, NormalizedSwapSpecification, PortionFee, SwapSpecification } from '../types/encodeSwaps';
2
+ export declare function normalizeEncodeSwapsSpec(spec: SwapSpecification): NormalizedSwapSpecification;
3
+ /** A lone `Fee` becomes a one-element list, so every read site handles multiple recipients by construction. */
4
+ export declare function toFeeList(fee: SwapSpecification['fee']): Fee[];
5
+ export declare function toPortionFeeList(fee: SwapSpecification['fee']): PortionFee[];
6
+ export declare function toFlatFeeList(fee: SwapSpecification['fee']): FlatFee[];
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toFlatFeeList = exports.toPortionFeeList = exports.toFeeList = exports.normalizeEncodeSwapsSpec = void 0;
4
+ const uniswap_1 = require("../entities/actions/uniswap");
5
+ const constants_1 = require("./constants");
6
+ // Fills the five optional fields that `validateEncodeSwaps` and `computeEncodeSwapsAmounts` require.
7
+ function normalizeEncodeSwapsSpec(spec) {
8
+ var _a, _b, _c, _d, _e;
9
+ return {
10
+ ...spec,
11
+ recipient: (_a = spec.recipient) !== null && _a !== void 0 ? _a : constants_1.SENDER_AS_RECIPIENT,
12
+ tokenTransferMode: (_b = spec.tokenTransferMode) !== null && _b !== void 0 ? _b : uniswap_1.TokenTransferMode.Permit2,
13
+ urVersion: (_c = spec.urVersion) !== null && _c !== void 0 ? _c : constants_1.DEFAULT_UR_VERSION,
14
+ safeMode: (_d = spec.safeMode) !== null && _d !== void 0 ? _d : false,
15
+ allowDirectTransfers: (_e = spec.allowDirectTransfers) !== null && _e !== void 0 ? _e : false,
16
+ };
17
+ }
18
+ exports.normalizeEncodeSwapsSpec = normalizeEncodeSwapsSpec;
19
+ /** A lone `Fee` becomes a one-element list, so every read site handles multiple recipients by construction. */
20
+ function toFeeList(fee) {
21
+ if (!fee)
22
+ return [];
23
+ return Array.isArray(fee) ? fee : [fee];
24
+ }
25
+ exports.toFeeList = toFeeList;
26
+ function toPortionFeeList(fee) {
27
+ return toFeeList(fee).filter((entry) => entry.kind === 'portion');
28
+ }
29
+ exports.toPortionFeeList = toPortionFeeList;
30
+ function toFlatFeeList(fee) {
31
+ return toFeeList(fee).filter((entry) => entry.kind === 'flat');
32
+ }
33
+ exports.toFlatFeeList = toFlatFeeList;
34
+ //# sourceMappingURL=normalizeEncodeSwapsSpec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeEncodeSwapsSpec.js","sourceRoot":"","sources":["../../../../src/utils/normalizeEncodeSwapsSpec.ts"],"names":[],"mappings":";;;AAAA,yDAA+D;AAE/D,2CAAqE;AAErE,qGAAqG;AACrG,SAAgB,wBAAwB,CAAC,IAAuB;;IAC9D,OAAO;QACL,GAAG,IAAI;QACP,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,+BAAmB;QAChD,iBAAiB,EAAE,MAAA,IAAI,CAAC,iBAAiB,mCAAI,2BAAiB,CAAC,OAAO;QACtE,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,8BAAkB;QAC/C,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,KAAK;QAChC,oBAAoB,EAAE,MAAA,IAAI,CAAC,oBAAoB,mCAAI,KAAK;KACzD,CAAA;AACH,CAAC;AATD,4DASC;AAED,+GAA+G;AAC/G,SAAgB,SAAS,CAAC,GAA6B;IACrD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IACnB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC;AAHD,8BAGC;AAED,SAAgB,gBAAgB,CAAC,GAA6B;IAC5D,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAuB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;AACxF,CAAC;AAFD,4CAEC;AAED,SAAgB,aAAa,CAAC,GAA6B;IACzD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAoB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;AAClF,CAAC;AAFD,sCAEC"}
@@ -1,6 +1,7 @@
1
- import { BigNumber } from 'ethers';
2
- import JSBI from 'jsbi';
3
- import { Percent } from '@kittycorn-labs/sdk-core';
4
- export declare function expandTo18DecimalsBN(n: number): BigNumber;
5
- export declare function expandTo18Decimals(n: number): JSBI;
6
- export declare function encodeFeeBips(fee: Percent): string;
1
+ import { BigNumber } from '@ethersproject/bignumber';
2
+ import JSBI from 'jsbi';
3
+ import { Percent } from '@kittycorn-labs/sdk-core';
4
+ export declare function expandTo18DecimalsBN(n: number): BigNumber;
5
+ export declare function expandTo18Decimals(n: number): JSBI;
6
+ export declare function encodeFeeBips(fee: Percent): string;
7
+ export declare function encodeFee1e18(fee: Percent): string;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeFee1e18 = exports.encodeFeeBips = exports.expandTo18Decimals = exports.expandTo18DecimalsBN = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const bignumber_1 = require("@ethersproject/bignumber");
6
+ const jsbi_1 = tslib_1.__importDefault(require("jsbi"));
7
+ const bignumber_js_1 = tslib_1.__importDefault(require("bignumber.js"));
8
+ const v3_sdk_1 = require("@kittycorn-labs/v3-sdk");
9
+ function expandTo18DecimalsBN(n) {
10
+ // use bn intermediately to allow decimals in intermediate calculations
11
+ return bignumber_1.BigNumber.from(new bignumber_js_1.default(n).times(new bignumber_js_1.default(10).pow(18)).toFixed());
12
+ }
13
+ exports.expandTo18DecimalsBN = expandTo18DecimalsBN;
14
+ function expandTo18Decimals(n) {
15
+ return jsbi_1.default.BigInt(bignumber_1.BigNumber.from(n).mul(bignumber_1.BigNumber.from(10).pow(18)).toString());
16
+ }
17
+ exports.expandTo18Decimals = expandTo18Decimals;
18
+ function encodeFeeBips(fee) {
19
+ return (0, v3_sdk_1.toHex)(fee.multiply(10000).quotient);
20
+ }
21
+ exports.encodeFeeBips = encodeFeeBips;
22
+ const FULL_PORTION_PRECISION = jsbi_1.default.exponentiate(jsbi_1.default.BigInt(10), jsbi_1.default.BigInt(18));
23
+ function encodeFee1e18(fee) {
24
+ return (0, v3_sdk_1.toHex)(fee.multiply(FULL_PORTION_PRECISION).quotient);
25
+ }
26
+ exports.encodeFee1e18 = encodeFee1e18;
27
+ //# sourceMappingURL=numbers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../../../src/utils/numbers.ts"],"names":[],"mappings":";;;;AAAA,wDAAoD;AACpD,wDAAuB;AACvB,wEAA6B;AAE7B,mDAA8C;AAE9C,SAAgB,oBAAoB,CAAC,CAAS;IAC5C,uEAAuE;IACvE,OAAO,qBAAS,CAAC,IAAI,CAAC,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,sBAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;AACtE,CAAC;AAHD,oDAGC;AAED,SAAgB,kBAAkB,CAAC,CAAS;IAC1C,OAAO,cAAI,CAAC,MAAM,CAAC,qBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;AAClF,CAAC;AAFD,gDAEC;AAED,SAAgB,aAAa,CAAC,GAAY;IACxC,OAAO,IAAA,cAAK,EAAC,GAAG,CAAC,QAAQ,CAAC,KAAM,CAAC,CAAC,QAAQ,CAAC,CAAA;AAC7C,CAAC;AAFD,sCAEC;AAED,MAAM,sBAAsB,GAAG,cAAI,CAAC,YAAY,CAAC,cAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,cAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;AAElF,SAAgB,aAAa,CAAC,GAAY;IACxC,OAAO,IAAA,cAAK,EAAC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,CAAA;AAC7D,CAAC;AAFD,sCAEC"}
@@ -1,3 +1,3 @@
1
- import { Currency } from '@kittycorn-labs/sdk-core';
2
- import { TPool } from '@kittycorn-labs/router-sdk';
3
- export declare function getPathCurrency(currency: Currency, pool: TPool): Currency;
1
+ import { Currency } from '@kittycorn-labs/sdk-core';
2
+ import { TPool } from '@kittycorn-labs/router-sdk';
3
+ export declare function getPathCurrency(currency: Currency, pool: TPool): Currency;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPathCurrency = void 0;
4
+ const v4_sdk_1 = require("@kittycorn-labs/v4-sdk");
5
+ function getPathCurrency(currency, pool) {
6
+ // return currency if the currency matches a currency of the pool
7
+ if (pool.involvesToken(currency)) {
8
+ return currency;
9
+ // return if currency.wrapped if pool involves wrapped currency
10
+ }
11
+ else if (pool.involvesToken(currency.wrapped)) {
12
+ return currency.wrapped;
13
+ // return native currency if pool involves native version of wrapped currency (only applies to V4)
14
+ }
15
+ else if (pool instanceof v4_sdk_1.Pool && pool.token0.wrapped.equals(currency)) {
16
+ return pool.token0;
17
+ }
18
+ else if (pool instanceof v4_sdk_1.Pool && pool.token1.wrapped.equals(currency)) {
19
+ return pool.token1;
20
+ }
21
+ else {
22
+ throw new Error(`Expected currency ${currency.symbol} to be either ${pool.token0.symbol} or ${pool.token1.symbol}`);
23
+ }
24
+ return currency; // this line needed for typescript to compile
25
+ }
26
+ exports.getPathCurrency = getPathCurrency;
27
+ //# sourceMappingURL=pathCurrency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathCurrency.js","sourceRoot":"","sources":["../../../../src/utils/pathCurrency.ts"],"names":[],"mappings":";;;AACA,mDAAuD;AAGvD,SAAgB,eAAe,CAAC,QAAkB,EAAE,IAAW;IAC7D,iEAAiE;IACjE,IAAI,IAAI,CAAC,aAAa,CAAC,QAAiB,CAAC,EAAE;QACzC,OAAO,QAAQ,CAAA;QAEf,+DAA+D;KAChE;SAAM,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAgB,CAAC,EAAE;QACxD,OAAO,QAAQ,CAAC,OAAO,CAAA;QAEvB,kGAAkG;KACnG;SAAM,IAAI,IAAI,YAAY,aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QACzE,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;SAAM,IAAI,IAAI,YAAY,aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QACzE,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,iBAAiB,IAAI,CAAC,MAAM,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;KACpH;IAED,OAAO,QAAQ,CAAA,CAAC,6CAA6C;AAC/D,CAAC;AAnBD,0CAmBC"}
@@ -0,0 +1,14 @@
1
+ import { BigNumber } from '@ethersproject/bignumber';
2
+ import { Percent } from '@kittycorn-labs/sdk-core';
3
+ import { FeeOptions } from '@kittycorn-labs/v3-sdk';
4
+ export interface ScaledPortionFee {
5
+ recipient: string;
6
+ /** The caller-supplied fee, read as a fraction of the gross swap output. */
7
+ grossFee: Percent;
8
+ /** Rescaled against the balance remaining when its PAY_PORTION executes, so the recipient still gets `grossFee` of gross. */
9
+ scaledFee: Percent;
10
+ }
11
+ /** Gross fractions to remaining-balance fractions: scaled_i = f_i / (1 - sum(f_0..f_{i-1})), in exact Fraction arithmetic; throws at or past 100%, since a 100% total encodes a swap that pays the swapper nothing. */
12
+ export declare function scalePortionFees(fees: FeeOptions[]): ScaledPortionFee[];
13
+ /** Replays the cascade with the ENCODED portions, which is exact where sum(floor(gross * f_i)) is off by dust either way; reduces to the legacy quantized deduction for a single fee, never exceeds grossAmount, and holds for larger fills. */
14
+ export declare function simulatePortionFeeDeduction(grossAmount: BigNumber, scaledFees: ScaledPortionFee[], useFullPrecision: boolean): BigNumber;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.simulatePortionFeeDeduction = exports.scalePortionFees = void 0;
4
+ const bignumber_1 = require("@ethersproject/bignumber");
5
+ const sdk_core_1 = require("@kittycorn-labs/sdk-core");
6
+ const numbers_1 = require("./numbers");
7
+ const ONE = new sdk_core_1.Fraction(1);
8
+ /** Gross fractions to remaining-balance fractions: scaled_i = f_i / (1 - sum(f_0..f_{i-1})), in exact Fraction arithmetic; throws at or past 100%, since a 100% total encodes a swap that pays the swapper nothing. */
9
+ function scalePortionFees(fees) {
10
+ let remaining = ONE;
11
+ return fees.map(({ fee, recipient }) => {
12
+ if (fee.lessThan(0))
13
+ throw new Error('Portion fees cannot be negative');
14
+ // Strictly less: remaining stays positive, so the swapper's sweep is always non-empty.
15
+ if (!fee.lessThan(remaining))
16
+ throw new Error('Portion fees together exceed 100% of the swap output');
17
+ const scaled = fee.divide(remaining);
18
+ remaining = remaining.subtract(fee);
19
+ return {
20
+ recipient,
21
+ grossFee: new sdk_core_1.Percent(fee.numerator, fee.denominator),
22
+ scaledFee: new sdk_core_1.Percent(scaled.numerator, scaled.denominator),
23
+ };
24
+ });
25
+ }
26
+ exports.scalePortionFees = scalePortionFees;
27
+ const FEE_1E18_DENOMINATOR = bignumber_1.BigNumber.from(10).pow(18);
28
+ const FEE_BIPS_DENOMINATOR = bignumber_1.BigNumber.from(10000);
29
+ /** Replays the cascade with the ENCODED portions, which is exact where sum(floor(gross * f_i)) is off by dust either way; reduces to the legacy quantized deduction for a single fee, never exceeds grossAmount, and holds for larger fills. */
30
+ function simulatePortionFeeDeduction(grossAmount, scaledFees, useFullPrecision) {
31
+ let remainingBalance = grossAmount;
32
+ for (const { scaledFee } of scaledFees) {
33
+ const encodedPortion = bignumber_1.BigNumber.from(useFullPrecision ? (0, numbers_1.encodeFee1e18)(scaledFee) : (0, numbers_1.encodeFeeBips)(scaledFee));
34
+ const portionDenominator = useFullPrecision ? FEE_1E18_DENOMINATOR : FEE_BIPS_DENOMINATOR;
35
+ remainingBalance = remainingBalance.sub(remainingBalance.mul(encodedPortion).div(portionDenominator));
36
+ }
37
+ return grossAmount.sub(remainingBalance);
38
+ }
39
+ exports.simulatePortionFeeDeduction = simulatePortionFeeDeduction;
40
+ //# sourceMappingURL=portionFees.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portionFees.js","sourceRoot":"","sources":["../../../../src/utils/portionFees.ts"],"names":[],"mappings":";;;AAAA,wDAAoD;AACpD,uDAA4D;AAE5D,uCAAwD;AAUxD,MAAM,GAAG,GAAG,IAAI,mBAAQ,CAAC,CAAC,CAAC,CAAA;AAE3B,uNAAuN;AACvN,SAAgB,gBAAgB,CAAC,IAAkB;IACjD,IAAI,SAAS,GAAa,GAAG,CAAA;IAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;QACrC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACvE,uFAAuF;QACvF,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;QACrG,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACpC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QACnC,OAAO;YACL,SAAS;YACT,QAAQ,EAAE,IAAI,kBAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC;YACrD,SAAS,EAAE,IAAI,kBAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;SAC7D,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAdD,4CAcC;AAED,MAAM,oBAAoB,GAAG,qBAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACvD,MAAM,oBAAoB,GAAG,qBAAS,CAAC,IAAI,CAAC,KAAM,CAAC,CAAA;AAEnD,gPAAgP;AAChP,SAAgB,2BAA2B,CACzC,WAAsB,EACtB,UAA8B,EAC9B,gBAAyB;IAEzB,IAAI,gBAAgB,GAAG,WAAW,CAAA;IAClC,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,UAAU,EAAE;QACtC,MAAM,cAAc,GAAG,qBAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAA,uBAAa,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAA,uBAAa,EAAC,SAAS,CAAC,CAAC,CAAA;QAC7G,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,CAAA;QACzF,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAA;KACtG;IACD,OAAO,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAC1C,CAAC;AAZD,kEAYC"}
@@ -0,0 +1,31 @@
1
+ import { BigNumber } from '@ethersproject/bignumber';
2
+ import { SwapStep, V4Action } from '../types/encodeSwaps';
3
+ export declare function stepSpendsToken(step: SwapStep, inputTokenAddress: string): boolean;
4
+ export declare function isInputSettle(action: V4Action, tokenAddress: string): boolean;
5
+ export declare function isInputSwap(action: V4Action, tokenAddress: string): boolean;
6
+ export declare function v4SwapAmountIn(action: V4Action): BigNumber;
7
+ export declare function stepSpendAmount(step: SwapStep, tokenAddress: string): BigNumber;
8
+ /**
9
+ * Rewrites a step plan to spend the router's entire input-token balance.
10
+ *
11
+ * Single spender: its v2/v3 exact-in amount becomes the CONTRACT_BALANCE
12
+ * sentinel (a v4 spender settles CONTRACT_BALANCE; one of its input swaps
13
+ * consumes the open delta while any others keep their quoted slices).
14
+ *
15
+ * Split routes (multiple spenders of the input token): every spender but the
16
+ * largest keeps its quoted amount, funded from router custody; the largest is
17
+ * rewritten to CONTRACT_BALANCE and MOVED after the other spenders, so it
18
+ * absorbs all delivery variance and the fill only reverts when delivery
19
+ * cannot cover the fixed legs.
20
+ */
21
+ export declare function applyRouterBalanceInputToSteps(swapSteps: SwapStep[], inputTokenAddress: string, wrappedNativeAddress?: string): SwapStep[];
22
+ /**
23
+ * Native-input variant: the plan leads with the route's WRAP_ETH, which is resized to wrap
24
+ * the router's entire native balance (attached msg.value plus any stray ETH, so no value
25
+ * is left behind — UR never refunds msg.value); the wrapped-token hop that follows then
26
+ * spends CONTRACT_BALANCE like an ERC20 balance swap.
27
+ *
28
+ * `validateEncodeSwaps` guarantees steps[0] is a router-recipient WRAP_ETH and exactly one
29
+ * later step spends the wrapped token.
30
+ */
31
+ export declare function applyNativeRouterBalanceInputToSteps(swapSteps: SwapStep[], wrappedTokenAddress: string): SwapStep[];