@uniswap/universal-router-sdk 4.19.3 → 4.19.5

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 (118) hide show
  1. package/dist/{cjs/src/entities → entities}/Command.d.ts +12 -12
  2. package/dist/{types/src/entities → entities}/actions/index.d.ts +2 -2
  3. package/dist/{cjs/src/entities → entities}/actions/uniswap.d.ts +30 -30
  4. package/dist/{esm/src/entities → entities}/actions/unwrapWETH.d.ts +12 -12
  5. package/dist/{cjs/src/entities → entities}/index.d.ts +2 -2
  6. package/dist/{esm/src/index.d.ts → index.d.ts} +10 -10
  7. package/dist/index.js +8 -0
  8. package/dist/{esm/src/swapRouter.d.ts → swapRouter.d.ts} +37 -37
  9. package/dist/test/forge/writeInterop.d.ts +2 -0
  10. package/dist/test/utils/addresses.d.ts +5 -0
  11. package/dist/test/utils/hexToDecimalString.d.ts +2 -0
  12. package/dist/test/utils/permit2.d.ts +7 -0
  13. package/dist/test/utils/uniswapData.d.ts +24 -0
  14. package/dist/universal-router-sdk.cjs.development.js +1424 -0
  15. package/dist/universal-router-sdk.cjs.development.js.map +1 -0
  16. package/dist/universal-router-sdk.cjs.production.min.js +2 -0
  17. package/dist/universal-router-sdk.cjs.production.min.js.map +1 -0
  18. package/dist/universal-router-sdk.esm.js +1417 -0
  19. package/dist/universal-router-sdk.esm.js.map +1 -0
  20. package/dist/{esm/src/utils → utils}/commandParser.d.ts +34 -34
  21. package/dist/{types/src/utils → utils}/constants.d.ts +30 -30
  22. package/dist/{cjs/src/utils → utils}/getCurrencyAddress.d.ts +2 -2
  23. package/dist/{types/src/utils → utils}/inputTokens.d.ts +23 -23
  24. package/dist/{cjs/src/utils → utils}/numbers.d.ts +6 -6
  25. package/dist/{types/src/utils → utils}/pathCurrency.d.ts +3 -3
  26. package/dist/{cjs/src/utils → utils}/routerCommands.d.ts +64 -64
  27. package/dist/{types/src/utils → utils}/routerTradeAdapter.d.ts +73 -73
  28. package/package.json +10 -21
  29. package/dist/cjs/src/entities/Command.js +0 -9
  30. package/dist/cjs/src/entities/Command.js.map +0 -1
  31. package/dist/cjs/src/entities/actions/index.d.ts +0 -2
  32. package/dist/cjs/src/entities/actions/index.js +0 -6
  33. package/dist/cjs/src/entities/actions/index.js.map +0 -1
  34. package/dist/cjs/src/entities/actions/uniswap.js +0 -365
  35. package/dist/cjs/src/entities/actions/uniswap.js.map +0 -1
  36. package/dist/cjs/src/entities/actions/unwrapWETH.d.ts +0 -12
  37. package/dist/cjs/src/entities/actions/unwrapWETH.js +0 -33
  38. package/dist/cjs/src/entities/actions/unwrapWETH.js.map +0 -1
  39. package/dist/cjs/src/entities/index.js +0 -6
  40. package/dist/cjs/src/entities/index.js.map +0 -1
  41. package/dist/cjs/src/index.d.ts +0 -10
  42. package/dist/cjs/src/index.js +0 -24
  43. package/dist/cjs/src/index.js.map +0 -1
  44. package/dist/cjs/src/swapRouter.d.ts +0 -37
  45. package/dist/cjs/src/swapRouter.js +0 -120
  46. package/dist/cjs/src/swapRouter.js.map +0 -1
  47. package/dist/cjs/src/utils/commandParser.d.ts +0 -34
  48. package/dist/cjs/src/utils/commandParser.js +0 -144
  49. package/dist/cjs/src/utils/commandParser.js.map +0 -1
  50. package/dist/cjs/src/utils/constants.d.ts +0 -30
  51. package/dist/cjs/src/utils/constants.js +0 -373
  52. package/dist/cjs/src/utils/constants.js.map +0 -1
  53. package/dist/cjs/src/utils/getCurrencyAddress.js +0 -9
  54. package/dist/cjs/src/utils/getCurrencyAddress.js.map +0 -1
  55. package/dist/cjs/src/utils/inputTokens.d.ts +0 -23
  56. package/dist/cjs/src/utils/inputTokens.js +0 -58
  57. package/dist/cjs/src/utils/inputTokens.js.map +0 -1
  58. package/dist/cjs/src/utils/numbers.js +0 -22
  59. package/dist/cjs/src/utils/numbers.js.map +0 -1
  60. package/dist/cjs/src/utils/pathCurrency.d.ts +0 -3
  61. package/dist/cjs/src/utils/pathCurrency.js +0 -27
  62. package/dist/cjs/src/utils/pathCurrency.js.map +0 -1
  63. package/dist/cjs/src/utils/routerCommands.js +0 -231
  64. package/dist/cjs/src/utils/routerCommands.js.map +0 -1
  65. package/dist/cjs/src/utils/routerTradeAdapter.d.ts +0 -73
  66. package/dist/cjs/src/utils/routerTradeAdapter.js +0 -139
  67. package/dist/cjs/src/utils/routerTradeAdapter.js.map +0 -1
  68. package/dist/esm/src/entities/Command.d.ts +0 -12
  69. package/dist/esm/src/entities/Command.js +0 -6
  70. package/dist/esm/src/entities/Command.js.map +0 -1
  71. package/dist/esm/src/entities/actions/index.d.ts +0 -2
  72. package/dist/esm/src/entities/actions/index.js +0 -3
  73. package/dist/esm/src/entities/actions/index.js.map +0 -1
  74. package/dist/esm/src/entities/actions/uniswap.d.ts +0 -30
  75. package/dist/esm/src/entities/actions/uniswap.js +0 -361
  76. package/dist/esm/src/entities/actions/uniswap.js.map +0 -1
  77. package/dist/esm/src/entities/actions/unwrapWETH.js +0 -28
  78. package/dist/esm/src/entities/actions/unwrapWETH.js.map +0 -1
  79. package/dist/esm/src/entities/index.d.ts +0 -2
  80. package/dist/esm/src/entities/index.js +0 -3
  81. package/dist/esm/src/entities/index.js.map +0 -1
  82. package/dist/esm/src/index.js +0 -7
  83. package/dist/esm/src/index.js.map +0 -1
  84. package/dist/esm/src/swapRouter.js +0 -115
  85. package/dist/esm/src/swapRouter.js.map +0 -1
  86. package/dist/esm/src/utils/commandParser.js +0 -137
  87. package/dist/esm/src/utils/commandParser.js.map +0 -1
  88. package/dist/esm/src/utils/constants.d.ts +0 -30
  89. package/dist/esm/src/utils/constants.js +0 -367
  90. package/dist/esm/src/utils/constants.js.map +0 -1
  91. package/dist/esm/src/utils/getCurrencyAddress.d.ts +0 -2
  92. package/dist/esm/src/utils/getCurrencyAddress.js +0 -5
  93. package/dist/esm/src/utils/getCurrencyAddress.js.map +0 -1
  94. package/dist/esm/src/utils/inputTokens.d.ts +0 -23
  95. package/dist/esm/src/utils/inputTokens.js +0 -51
  96. package/dist/esm/src/utils/inputTokens.js.map +0 -1
  97. package/dist/esm/src/utils/numbers.d.ts +0 -6
  98. package/dist/esm/src/utils/numbers.js +0 -15
  99. package/dist/esm/src/utils/numbers.js.map +0 -1
  100. package/dist/esm/src/utils/pathCurrency.d.ts +0 -3
  101. package/dist/esm/src/utils/pathCurrency.js +0 -23
  102. package/dist/esm/src/utils/pathCurrency.js.map +0 -1
  103. package/dist/esm/src/utils/routerCommands.d.ts +0 -64
  104. package/dist/esm/src/utils/routerCommands.js +0 -226
  105. package/dist/esm/src/utils/routerCommands.js.map +0 -1
  106. package/dist/esm/src/utils/routerTradeAdapter.d.ts +0 -73
  107. package/dist/esm/src/utils/routerTradeAdapter.js +0 -134
  108. package/dist/esm/src/utils/routerTradeAdapter.js.map +0 -1
  109. package/dist/types/src/entities/Command.d.ts +0 -12
  110. package/dist/types/src/entities/actions/uniswap.d.ts +0 -30
  111. package/dist/types/src/entities/actions/unwrapWETH.d.ts +0 -12
  112. package/dist/types/src/entities/index.d.ts +0 -2
  113. package/dist/types/src/index.d.ts +0 -10
  114. package/dist/types/src/swapRouter.d.ts +0 -37
  115. package/dist/types/src/utils/commandParser.d.ts +0 -34
  116. package/dist/types/src/utils/getCurrencyAddress.d.ts +0 -2
  117. package/dist/types/src/utils/numbers.d.ts +0 -6
  118. package/dist/types/src/utils/routerCommands.d.ts +0 -64
@@ -1,361 +0,0 @@
1
- import { CommandType } from '../../utils/routerCommands';
2
- import { Trade as V2Trade, Pair } from '@uniswap/v2-sdk';
3
- import { Trade as V3Trade, Pool as V3Pool, encodeRouteToPath } from '@uniswap/v3-sdk';
4
- import { Route as V4Route, Trade as V4Trade, Pool as V4Pool, V4Planner, encodeRouteToPath as encodeV4RouteToPath, Actions, } from '@uniswap/v4-sdk';
5
- import { MixedRouteTrade, Protocol, MixedRouteSDK, MixedRoute, getOutputOfPools, encodeMixedRouteToPath, partitionMixedRouteByProtocol, } from '@uniswap/router-sdk';
6
- import { getPathCurrency } from '../../utils/pathCurrency';
7
- import { TradeType, Percent } from '@uniswap/sdk-core';
8
- import { RouterActionType } from '../Command';
9
- import { SENDER_AS_RECIPIENT, ROUTER_AS_RECIPIENT, CONTRACT_BALANCE, ETH_ADDRESS } from '../../utils/constants';
10
- import { getCurrencyAddress } from '../../utils/getCurrencyAddress';
11
- import { encodeFeeBips } from '../../utils/numbers';
12
- import { BigNumber } from 'ethers';
13
- const REFUND_ETH_PRICE_IMPACT_THRESHOLD = new Percent(50, 100);
14
- // Wrapper for uniswap router-sdk trade entity to encode swaps for Universal Router
15
- // also translates trade objects from previous (v2, v3) SDKs
16
- export class UniswapTrade {
17
- constructor(trade, options) {
18
- this.trade = trade;
19
- this.options = options;
20
- this.tradeType = RouterActionType.UniswapTrade;
21
- if (!!options.fee && !!options.flatFee)
22
- throw new Error('Only one fee option permitted');
23
- if (this.inputRequiresWrap || this.inputRequiresUnwrap || this.options.useRouterBalance) {
24
- this.payerIsUser = false;
25
- }
26
- else {
27
- this.payerIsUser = true;
28
- }
29
- }
30
- get isAllV4() {
31
- let result = true;
32
- for (const swap of this.trade.swaps) {
33
- result = result && swap.route.protocol == Protocol.V4;
34
- }
35
- return result;
36
- }
37
- get inputRequiresWrap() {
38
- if (this.isAllV4) {
39
- return (this.trade.inputAmount.currency.isNative &&
40
- !this.trade.swaps[0].route.pathInput.isNative);
41
- }
42
- else {
43
- return this.trade.inputAmount.currency.isNative;
44
- }
45
- }
46
- get inputRequiresUnwrap() {
47
- if (this.isAllV4) {
48
- return (!this.trade.inputAmount.currency.isNative &&
49
- this.trade.swaps[0].route.pathInput.isNative);
50
- }
51
- return false;
52
- }
53
- get outputRequiresWrap() {
54
- if (this.isAllV4) {
55
- return (!this.trade.outputAmount.currency.isNative &&
56
- this.trade.swaps[0].route.pathOutput.isNative);
57
- }
58
- return false;
59
- }
60
- get outputRequiresUnwrap() {
61
- if (this.isAllV4) {
62
- return (this.trade.outputAmount.currency.isNative &&
63
- !this.trade.swaps[0].route.pathOutput.isNative);
64
- }
65
- else {
66
- return this.trade.outputAmount.currency.isNative;
67
- }
68
- }
69
- get outputRequiresTransition() {
70
- return this.outputRequiresWrap || this.outputRequiresUnwrap;
71
- }
72
- encode(planner, _config) {
73
- var _a;
74
- // If the input currency is the native currency, we need to wrap it with the router as the recipient
75
- if (this.inputRequiresWrap) {
76
- // TODO: optimize if only one v2 pool we can directly send this to the pool
77
- planner.addCommand(CommandType.WRAP_ETH, [
78
- ROUTER_AS_RECIPIENT,
79
- this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString(),
80
- ]);
81
- }
82
- else if (this.inputRequiresUnwrap) {
83
- // send wrapped token to router to unwrap
84
- planner.addCommand(CommandType.PERMIT2_TRANSFER_FROM, [
85
- this.trade.inputAmount.currency.address,
86
- ROUTER_AS_RECIPIENT,
87
- this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString(),
88
- ]);
89
- planner.addCommand(CommandType.UNWRAP_WETH, [ROUTER_AS_RECIPIENT, 0]);
90
- }
91
- // The overall recipient at the end of the trade, SENDER_AS_RECIPIENT uses the msg.sender
92
- this.options.recipient = (_a = this.options.recipient) !== null && _a !== void 0 ? _a : SENDER_AS_RECIPIENT;
93
- // flag for whether we want to perform slippage check on aggregate output of multiple routes
94
- // 1. when there are >2 exact input trades. this is only a heuristic,
95
- // as it's still more gas-expensive even in this case, but has benefits
96
- // in that the reversion probability is lower
97
- const performAggregatedSlippageCheck = this.trade.tradeType === TradeType.EXACT_INPUT && this.trade.routes.length > 2;
98
- const routerMustCustody = performAggregatedSlippageCheck || this.outputRequiresTransition || hasFeeOption(this.options);
99
- for (const swap of this.trade.swaps) {
100
- switch (swap.route.protocol) {
101
- case Protocol.V2:
102
- addV2Swap(planner, swap, this.trade.tradeType, this.options, this.payerIsUser, routerMustCustody);
103
- break;
104
- case Protocol.V3:
105
- addV3Swap(planner, swap, this.trade.tradeType, this.options, this.payerIsUser, routerMustCustody);
106
- break;
107
- case Protocol.V4:
108
- addV4Swap(planner, swap, this.trade.tradeType, this.options, this.payerIsUser, routerMustCustody);
109
- break;
110
- case Protocol.MIXED:
111
- addMixedSwap(planner, swap, this.trade.tradeType, this.options, this.payerIsUser, routerMustCustody);
112
- break;
113
- default:
114
- throw new Error('UNSUPPORTED_TRADE_PROTOCOL');
115
- }
116
- }
117
- let minimumAmountOut = BigNumber.from(this.trade.minimumAmountOut(this.options.slippageTolerance).quotient.toString());
118
- // The router custodies for 3 reasons: to unwrap, to take a fee, and/or to do a slippage check
119
- if (routerMustCustody) {
120
- const pools = this.trade.swaps[0].route.pools;
121
- const pathOutputCurrencyAddress = getCurrencyAddress(getPathCurrency(this.trade.outputAmount.currency, pools[pools.length - 1]));
122
- // If there is a fee, that percentage is sent to the fee recipient
123
- // In the case where ETH is the output currency, the fee is taken in WETH (for gas reasons)
124
- if (!!this.options.fee) {
125
- const feeBips = encodeFeeBips(this.options.fee.fee);
126
- planner.addCommand(CommandType.PAY_PORTION, [pathOutputCurrencyAddress, this.options.fee.recipient, feeBips]);
127
- // If the trade is exact output, and a fee was taken, we must adjust the amount out to be the amount after the fee
128
- // Otherwise we continue as expected with the trade's normal expected output
129
- if (this.trade.tradeType === TradeType.EXACT_OUTPUT) {
130
- minimumAmountOut = minimumAmountOut.sub(minimumAmountOut.mul(feeBips).div(10000));
131
- }
132
- }
133
- // If there is a flat fee, that absolute amount is sent to the fee recipient
134
- // In the case where ETH is the output currency, the fee is taken in WETH (for gas reasons)
135
- if (!!this.options.flatFee) {
136
- const feeAmount = this.options.flatFee.amount;
137
- if (minimumAmountOut.lt(feeAmount))
138
- throw new Error('Flat fee amount greater than minimumAmountOut');
139
- planner.addCommand(CommandType.TRANSFER, [pathOutputCurrencyAddress, this.options.flatFee.recipient, feeAmount]);
140
- // If the trade is exact output, and a fee was taken, we must adjust the amount out to be the amount after the fee
141
- // Otherwise we continue as expected with the trade's normal expected output
142
- if (this.trade.tradeType === TradeType.EXACT_OUTPUT) {
143
- minimumAmountOut = minimumAmountOut.sub(feeAmount);
144
- }
145
- }
146
- // The remaining tokens that need to be sent to the user after the fee is taken will be caught
147
- // by this if-else clause.
148
- if (this.outputRequiresUnwrap) {
149
- planner.addCommand(CommandType.UNWRAP_WETH, [this.options.recipient, minimumAmountOut]);
150
- }
151
- else if (this.outputRequiresWrap) {
152
- planner.addCommand(CommandType.WRAP_ETH, [this.options.recipient, CONTRACT_BALANCE]);
153
- }
154
- else {
155
- planner.addCommand(CommandType.SWEEP, [
156
- getCurrencyAddress(this.trade.outputAmount.currency),
157
- this.options.recipient,
158
- minimumAmountOut,
159
- ]);
160
- }
161
- }
162
- // for exactOutput swaps with native input or that perform an inputToken transition (wrap or unwrap)
163
- // we need to send back the change to the user
164
- if (this.trade.tradeType === TradeType.EXACT_OUTPUT || riskOfPartialFill(this.trade)) {
165
- if (this.inputRequiresWrap) {
166
- planner.addCommand(CommandType.UNWRAP_WETH, [this.options.recipient, 0]);
167
- }
168
- else if (this.inputRequiresUnwrap) {
169
- planner.addCommand(CommandType.WRAP_ETH, [this.options.recipient, CONTRACT_BALANCE]);
170
- }
171
- else if (this.trade.inputAmount.currency.isNative) {
172
- // must refund extra native currency sent along for native v4 trades (no input transition)
173
- planner.addCommand(CommandType.SWEEP, [ETH_ADDRESS, this.options.recipient, 0]);
174
- }
175
- }
176
- if (this.options.safeMode)
177
- planner.addCommand(CommandType.SWEEP, [ETH_ADDRESS, this.options.recipient, 0]);
178
- }
179
- }
180
- // encode a uniswap v2 swap
181
- function addV2Swap(planner, { route, inputAmount, outputAmount }, tradeType, options, payerIsUser, routerMustCustody) {
182
- const trade = new V2Trade(route, tradeType == TradeType.EXACT_INPUT ? inputAmount : outputAmount, tradeType);
183
- if (tradeType == TradeType.EXACT_INPUT) {
184
- planner.addCommand(CommandType.V2_SWAP_EXACT_IN, [
185
- // if native, we have to unwrap so keep in the router for now
186
- routerMustCustody ? ROUTER_AS_RECIPIENT : options.recipient,
187
- trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),
188
- // if router will custody funds, we do aggregated slippage check from router
189
- routerMustCustody ? 0 : trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),
190
- route.path.map((token) => token.wrapped.address),
191
- payerIsUser,
192
- ]);
193
- }
194
- else if (tradeType == TradeType.EXACT_OUTPUT) {
195
- planner.addCommand(CommandType.V2_SWAP_EXACT_OUT, [
196
- routerMustCustody ? ROUTER_AS_RECIPIENT : options.recipient,
197
- trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),
198
- trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),
199
- route.path.map((token) => token.wrapped.address),
200
- payerIsUser,
201
- ]);
202
- }
203
- }
204
- // encode a uniswap v3 swap
205
- function addV3Swap(planner, { route, inputAmount, outputAmount }, tradeType, options, payerIsUser, routerMustCustody) {
206
- const trade = V3Trade.createUncheckedTrade({
207
- route: route,
208
- inputAmount,
209
- outputAmount,
210
- tradeType,
211
- });
212
- const path = encodeRouteToPath(route, trade.tradeType === TradeType.EXACT_OUTPUT);
213
- if (tradeType == TradeType.EXACT_INPUT) {
214
- planner.addCommand(CommandType.V3_SWAP_EXACT_IN, [
215
- routerMustCustody ? ROUTER_AS_RECIPIENT : options.recipient,
216
- trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),
217
- routerMustCustody ? 0 : trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),
218
- path,
219
- payerIsUser,
220
- ]);
221
- }
222
- else if (tradeType == TradeType.EXACT_OUTPUT) {
223
- planner.addCommand(CommandType.V3_SWAP_EXACT_OUT, [
224
- routerMustCustody ? ROUTER_AS_RECIPIENT : options.recipient,
225
- trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),
226
- trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),
227
- path,
228
- payerIsUser,
229
- ]);
230
- }
231
- }
232
- function addV4Swap(planner, { inputAmount, outputAmount, route }, tradeType, options, payerIsUser, routerMustCustody) {
233
- var _a;
234
- // create a deep copy of pools since v4Planner encoding tampers with array
235
- const pools = route.pools.map((p) => p);
236
- const v4Route = new V4Route(pools, inputAmount.currency, outputAmount.currency);
237
- const trade = V4Trade.createUncheckedTrade({
238
- route: v4Route,
239
- inputAmount,
240
- outputAmount,
241
- tradeType,
242
- });
243
- const slippageToleranceOnSwap = routerMustCustody && tradeType == TradeType.EXACT_INPUT ? undefined : options.slippageTolerance;
244
- const v4Planner = new V4Planner();
245
- v4Planner.addTrade(trade, slippageToleranceOnSwap);
246
- v4Planner.addSettle(trade.route.pathInput, payerIsUser);
247
- v4Planner.addTake(trade.route.pathOutput, routerMustCustody ? ROUTER_AS_RECIPIENT : (_a = options.recipient) !== null && _a !== void 0 ? _a : SENDER_AS_RECIPIENT);
248
- planner.addCommand(CommandType.V4_SWAP, [v4Planner.finalize()]);
249
- }
250
- // encode a mixed route swap, i.e. including both v2 and v3 pools
251
- function addMixedSwap(planner, swap, tradeType, options, payerIsUser, routerMustCustody) {
252
- var _a;
253
- const route = swap.route;
254
- const inputAmount = swap.inputAmount;
255
- const outputAmount = swap.outputAmount;
256
- const tradeRecipient = routerMustCustody ? ROUTER_AS_RECIPIENT : (_a = options.recipient) !== null && _a !== void 0 ? _a : SENDER_AS_RECIPIENT;
257
- // single hop, so it can be reduced to plain swap logic for one protocol version
258
- if (route.pools.length === 1) {
259
- if (route.pools[0] instanceof V4Pool) {
260
- return addV4Swap(planner, swap, tradeType, options, payerIsUser, routerMustCustody);
261
- }
262
- else if (route.pools[0] instanceof V3Pool) {
263
- return addV3Swap(planner, swap, tradeType, options, payerIsUser, routerMustCustody);
264
- }
265
- else if (route.pools[0] instanceof Pair) {
266
- return addV2Swap(planner, swap, tradeType, options, payerIsUser, routerMustCustody);
267
- }
268
- else {
269
- throw new Error('Invalid route type');
270
- }
271
- }
272
- const trade = MixedRouteTrade.createUncheckedTrade({
273
- route: route,
274
- inputAmount,
275
- outputAmount,
276
- tradeType,
277
- });
278
- const amountIn = trade.maximumAmountIn(options.slippageTolerance, inputAmount).quotient.toString();
279
- const amountOut = routerMustCustody
280
- ? 0
281
- : trade.minimumAmountOut(options.slippageTolerance, outputAmount).quotient.toString();
282
- // logic from
283
- // https://github.com/Uniswap/router-sdk/blob/d8eed164e6c79519983844ca8b6a3fc24ebcb8f8/src/swapRouter.ts#L276
284
- const sections = partitionMixedRouteByProtocol(route);
285
- const isLastSectionInRoute = (i) => {
286
- return i === sections.length - 1;
287
- };
288
- let inputToken = route.pathInput;
289
- for (let i = 0; i < sections.length; i++) {
290
- const section = sections[i];
291
- const routePool = section[0];
292
- const outputToken = getOutputOfPools(section, inputToken);
293
- const subRoute = new MixedRoute(new MixedRouteSDK([...section], inputToken, outputToken));
294
- let nextInputToken;
295
- let swapRecipient;
296
- if (isLastSectionInRoute(i)) {
297
- nextInputToken = outputToken;
298
- swapRecipient = tradeRecipient;
299
- }
300
- else {
301
- const nextPool = sections[i + 1][0];
302
- nextInputToken = getPathCurrency(outputToken, nextPool);
303
- const v2PoolIsSwapRecipient = nextPool instanceof Pair && outputToken.equals(nextInputToken);
304
- swapRecipient = v2PoolIsSwapRecipient ? nextPool.liquidityToken.address : ROUTER_AS_RECIPIENT;
305
- }
306
- if (routePool instanceof V4Pool) {
307
- const v4Planner = new V4Planner();
308
- const v4SubRoute = new V4Route(section, subRoute.input, subRoute.output);
309
- v4Planner.addSettle(inputToken, payerIsUser && i === 0, (i == 0 ? amountIn : CONTRACT_BALANCE));
310
- v4Planner.addAction(Actions.SWAP_EXACT_IN, [
311
- {
312
- currencyIn: inputToken.isNative ? ETH_ADDRESS : inputToken.address,
313
- path: encodeV4RouteToPath(v4SubRoute),
314
- amountIn: 0,
315
- amountOutMinimum: !isLastSectionInRoute(i) ? 0 : amountOut,
316
- },
317
- ]);
318
- v4Planner.addTake(outputToken, swapRecipient);
319
- planner.addCommand(CommandType.V4_SWAP, [v4Planner.finalize()]);
320
- }
321
- else if (routePool instanceof V3Pool) {
322
- planner.addCommand(CommandType.V3_SWAP_EXACT_IN, [
323
- swapRecipient,
324
- i == 0 ? amountIn : CONTRACT_BALANCE,
325
- !isLastSectionInRoute(i) ? 0 : amountOut,
326
- encodeMixedRouteToPath(subRoute),
327
- payerIsUser && i === 0, // payerIsUser
328
- ]);
329
- }
330
- else if (routePool instanceof Pair) {
331
- planner.addCommand(CommandType.V2_SWAP_EXACT_IN, [
332
- swapRecipient,
333
- i === 0 ? amountIn : CONTRACT_BALANCE,
334
- !isLastSectionInRoute(i) ? 0 : amountOut,
335
- subRoute.path.map((token) => token.wrapped.address),
336
- payerIsUser && i === 0,
337
- ]);
338
- }
339
- else {
340
- throw new Error('Unexpected Pool Type');
341
- }
342
- // perform a token transition (wrap/unwrap if necessary)
343
- if (!isLastSectionInRoute(i)) {
344
- if (outputToken.isNative && !nextInputToken.isNative) {
345
- planner.addCommand(CommandType.WRAP_ETH, [ROUTER_AS_RECIPIENT, CONTRACT_BALANCE]);
346
- }
347
- else if (!outputToken.isNative && nextInputToken.isNative) {
348
- planner.addCommand(CommandType.UNWRAP_WETH, [ROUTER_AS_RECIPIENT, 0]);
349
- }
350
- }
351
- inputToken = nextInputToken;
352
- }
353
- }
354
- // if price impact is very high, there's a chance of hitting max/min prices resulting in a partial fill of the swap
355
- function riskOfPartialFill(trade) {
356
- return trade.priceImpact.greaterThan(REFUND_ETH_PRICE_IMPACT_THRESHOLD);
357
- }
358
- function hasFeeOption(swapOptions) {
359
- return !!swapOptions.fee || !!swapOptions.flatFee;
360
- }
361
- //# sourceMappingURL=uniswap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uniswap.js","sourceRoot":"","sources":["../../../../../src/entities/actions/uniswap.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import invariant from 'tiny-invariant';
2
- import { CommandType } from '../../utils/routerCommands';
3
- import { encodeInputTokenOptions } from '../../utils/inputTokens';
4
- import { RouterActionType } from '../Command';
5
- import { ROUTER_AS_RECIPIENT, WETH_ADDRESS } from '../../utils/constants';
6
- export class UnwrapWETH {
7
- constructor(amount, chainId, permit2) {
8
- this.tradeType = RouterActionType.UnwrapWETH;
9
- this.wethAddress = WETH_ADDRESS(chainId);
10
- this.amount = amount;
11
- if (!!permit2) {
12
- invariant(permit2.details.token.toLowerCase() === this.wethAddress.toLowerCase(), `must be permitting WETH address: ${this.wethAddress}`);
13
- invariant(permit2.details.amount >= amount, `Did not permit enough WETH for unwrapWETH transaction`);
14
- this.permit2Data = permit2;
15
- }
16
- }
17
- encode(planner, _) {
18
- encodeInputTokenOptions(planner, {
19
- permit2Permit: this.permit2Data,
20
- permit2TransferFrom: {
21
- token: this.wethAddress,
22
- amount: this.amount.toString(),
23
- },
24
- });
25
- planner.addCommand(CommandType.UNWRAP_WETH, [ROUTER_AS_RECIPIENT, this.amount]);
26
- }
27
- }
28
- //# sourceMappingURL=unwrapWETH.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unwrapWETH.js","sourceRoot":"","sources":["../../../../../src/entities/actions/unwrapWETH.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAA;AAEtC,OAAO,EAAgB,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EAAE,uBAAuB,EAAiB,MAAM,yBAAyB,CAAA;AAChF,OAAO,EAAW,gBAAgB,EAAe,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzE,MAAM,OAAO,UAAU;IAMrB,YAAY,MAAoB,EAAE,OAAe,EAAE,OAAuB;QALjE,cAAS,GAAqB,gBAAgB,CAAC,UAAU,CAAA;QAMhE,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,IAAI,CAAC,CAAC,OAAO,EAAE;YACb,SAAS,CACP,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EACtE,oCAAoC,IAAI,CAAC,WAAW,EAAE,CACvD,CAAA;YACD,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,uDAAuD,CAAC,CAAA;YACpG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAA;SAC3B;IACH,CAAC;IAED,MAAM,CAAC,OAAqB,EAAE,CAAc;QAC1C,uBAAuB,CAAC,OAAO,EAAE;YAC/B,aAAa,EAAE,IAAI,CAAC,WAAW;YAC/B,mBAAmB,EAAE;gBACnB,KAAK,EAAE,IAAI,CAAC,WAAW;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;aAC/B;SACF,CAAC,CAAA;QACF,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACjF,CAAC;CACF"}
@@ -1,2 +0,0 @@
1
- export * from './actions';
2
- export * from './Command';
@@ -1,3 +0,0 @@
1
- export * from './actions';
2
- export * from './Command';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/entities/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA"}
@@ -1,7 +0,0 @@
1
- export { SwapRouter } from './swapRouter';
2
- export * from './entities';
3
- export * from './utils/routerTradeAdapter';
4
- export { RoutePlanner, CommandType, COMMAND_DEFINITION, Parser, Subparser } from './utils/routerCommands';
5
- export { UNIVERSAL_ROUTER_CREATION_BLOCK, UNIVERSAL_ROUTER_ADDRESS, ROUTER_AS_RECIPIENT, WETH_ADDRESS, UniversalRouterVersion, } from './utils/constants';
6
- export { CommandParser, GenericCommandParser } from './utils/commandParser';
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,cAAc,YAAY,CAAA;AAC1B,cAAc,4BAA4B,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEzG,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,EACxB,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,GACvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -1,115 +0,0 @@
1
- import invariant from 'tiny-invariant';
2
- import { abi } from '@uniswap/universal-router/artifacts/contracts/UniversalRouter.sol/UniversalRouter.json';
3
- import { Interface } from '@ethersproject/abi';
4
- import { BigNumber } from 'ethers';
5
- import { Multicall, NonfungiblePositionManager as V3PositionManager, } from '@uniswap/v3-sdk';
6
- import { V4PositionManager, Pool as V4Pool, } from '@uniswap/v4-sdk';
7
- import { Percent, CHAIN_TO_ADDRESSES_MAP } from '@uniswap/sdk-core';
8
- import { UniswapTrade } from './entities/actions/uniswap';
9
- import { RoutePlanner, CommandType } from './utils/routerCommands';
10
- import { encodePermit, encodeV3PositionPermit } from './utils/inputTokens';
11
- import { UNIVERSAL_ROUTER_ADDRESS, UniversalRouterVersion } from './utils/constants';
12
- function isMint(options) {
13
- return Object.keys(options).some((k) => k === 'recipient');
14
- }
15
- export class SwapRouter {
16
- static swapCallParameters(trades, options) {
17
- // TODO: use permit if signature included in swapOptions
18
- const planner = new RoutePlanner();
19
- const trade = new UniswapTrade(trades, options);
20
- const inputCurrency = trade.trade.inputAmount.currency;
21
- invariant(!(inputCurrency.isNative && !!options.inputTokenPermit), 'NATIVE_INPUT_PERMIT');
22
- if (options.inputTokenPermit) {
23
- encodePermit(planner, options.inputTokenPermit);
24
- }
25
- const nativeCurrencyValue = inputCurrency.isNative
26
- ? BigNumber.from(trade.trade.maximumAmountIn(options.slippageTolerance).quotient.toString())
27
- : BigNumber.from(0);
28
- trade.encode(planner, { allowRevert: false });
29
- return SwapRouter.encodePlan(planner, nativeCurrencyValue, {
30
- deadline: options.deadlineOrPreviousBlockhash ? BigNumber.from(options.deadlineOrPreviousBlockhash) : undefined,
31
- });
32
- }
33
- /**
34
- * Builds the call parameters for a migration from a V3 position to a V4 position.
35
- * Some requirements of the parameters:
36
- * - v3RemoveLiquidityOptions.collectOptions.recipient must equal v4PositionManager
37
- * - v3RemoveLiquidityOptions.liquidityPercentage must be 100%
38
- * - input pool and output pool must have the same tokens
39
- * - V3 NFT must be approved, or valid inputV3NFTPermit must be provided with UR as spender
40
- */
41
- static migrateV3ToV4CallParameters(options, positionManagerOverride) {
42
- const v4Pool = options.outputPosition.pool;
43
- const v3Token0 = options.inputPosition.pool.token0;
44
- const v3Token1 = options.inputPosition.pool.token1;
45
- const v4PositionManagerAddress = positionManagerOverride !== null && positionManagerOverride !== void 0 ? positionManagerOverride : CHAIN_TO_ADDRESSES_MAP[v4Pool.chainId].v4PositionManagerAddress;
46
- // owner of the v3 nft must be the receiver of the v4 nft
47
- // validate the parameters
48
- if (v4Pool.currency0.isNative) {
49
- invariant((v4Pool.currency0.wrapped.equals(v3Token0) && v4Pool.currency1.equals(v3Token1)) ||
50
- (v4Pool.currency0.wrapped.equals(v3Token1) && v4Pool.currency1.equals(v3Token0)), 'TOKEN_MISMATCH');
51
- }
52
- else {
53
- invariant(v3Token0 === v4Pool.token0, 'TOKEN0_MISMATCH');
54
- invariant(v3Token1 === v4Pool.token1, 'TOKEN1_MISMATCH');
55
- }
56
- invariant(options.v3RemoveLiquidityOptions.liquidityPercentage.equalTo(new Percent(100, 100)), 'FULL_REMOVAL_REQUIRED');
57
- invariant(options.v3RemoveLiquidityOptions.burnToken == true, 'BURN_TOKEN_REQUIRED');
58
- invariant(options.v3RemoveLiquidityOptions.collectOptions.recipient === v4PositionManagerAddress, 'RECIPIENT_NOT_POSITION_MANAGER');
59
- invariant(isMint(options.v4AddLiquidityOptions), 'MINT_REQUIRED');
60
- invariant(options.v4AddLiquidityOptions.migrate, 'MIGRATE_REQUIRED');
61
- const planner = new RoutePlanner();
62
- // to prevent reentrancy by the pool hook, we initialize the v4 pool before moving funds
63
- if (options.v4AddLiquidityOptions.createPool) {
64
- const poolKey = V4Pool.getPoolKey(v4Pool.currency0, v4Pool.currency1, v4Pool.fee, v4Pool.tickSpacing, v4Pool.hooks);
65
- planner.addCommand(CommandType.V4_INITIALIZE_POOL, [poolKey, v4Pool.sqrtRatioX96.toString()]);
66
- // remove createPool setting, so that it doesnt get encoded again later
67
- delete options.v4AddLiquidityOptions.createPool;
68
- }
69
- // add position permit to the universal router planner
70
- if (options.v3RemoveLiquidityOptions.permit) {
71
- // permit spender should be UR
72
- const universalRouterAddress = UNIVERSAL_ROUTER_ADDRESS(UniversalRouterVersion.V2_0, options.inputPosition.pool.chainId);
73
- invariant(universalRouterAddress == options.v3RemoveLiquidityOptions.permit.spender, 'INVALID_SPENDER');
74
- // don't need to transfer it because v3posm uses isApprovedOrOwner()
75
- encodeV3PositionPermit(planner, options.v3RemoveLiquidityOptions.permit, options.v3RemoveLiquidityOptions.tokenId);
76
- // remove permit so that multicall doesnt add it again
77
- delete options.v3RemoveLiquidityOptions.permit;
78
- }
79
- // encode v3 withdraw
80
- const v3RemoveParams = V3PositionManager.removeCallParameters(options.inputPosition, options.v3RemoveLiquidityOptions);
81
- const v3Calls = Multicall.decodeMulticall(v3RemoveParams.calldata);
82
- for (const v3Call of v3Calls) {
83
- // slice selector - 0x + 4 bytes = 10 characters
84
- const selector = v3Call.slice(0, 10);
85
- invariant(selector == V3PositionManager.INTERFACE.getSighash('collect') ||
86
- selector == V3PositionManager.INTERFACE.getSighash('decreaseLiquidity') ||
87
- selector == V3PositionManager.INTERFACE.getSighash('burn'), 'INVALID_V3_CALL: ' + selector);
88
- planner.addCommand(CommandType.V3_POSITION_MANAGER_CALL, [v3Call]);
89
- }
90
- // encode v4 mint
91
- const v4AddParams = V4PositionManager.addCallParameters(options.outputPosition, options.v4AddLiquidityOptions);
92
- // only modifyLiquidities can be called by the UniversalRouter
93
- const selector = v4AddParams.calldata.slice(0, 10);
94
- invariant(selector == V4PositionManager.INTERFACE.getSighash('modifyLiquidities'), 'INVALID_V4_CALL: ' + selector);
95
- planner.addCommand(CommandType.V4_POSITION_MANAGER_CALL, [v4AddParams.calldata]);
96
- return SwapRouter.encodePlan(planner, BigNumber.from(0), {
97
- deadline: BigNumber.from(options.v4AddLiquidityOptions.deadline),
98
- });
99
- }
100
- /**
101
- * Encodes a planned route into a method name and parameters for the Router contract.
102
- * @param planner the planned route
103
- * @param nativeCurrencyValue the native currency value of the planned route
104
- * @param config the router config
105
- */
106
- static encodePlan(planner, nativeCurrencyValue, config = {}) {
107
- const { commands, inputs } = planner;
108
- const functionSignature = !!config.deadline ? 'execute(bytes,bytes[],uint256)' : 'execute(bytes,bytes[])';
109
- const parameters = !!config.deadline ? [commands, inputs, config.deadline] : [commands, inputs];
110
- const calldata = SwapRouter.INTERFACE.encodeFunctionData(functionSignature, parameters);
111
- return { calldata, value: nativeCurrencyValue.toHexString() };
112
- }
113
- }
114
- SwapRouter.INTERFACE = new Interface(abi);
115
- //# sourceMappingURL=swapRouter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"swapRouter.js","sourceRoot":"","sources":["../../../src/swapRouter.ts"],"names":[],"mappings":"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"}