@uniswap/universal-router-sdk 4.18.1 → 4.19.1

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 (119) hide show
  1. package/dist/{entities → cjs/src/entities}/Command.d.ts +12 -12
  2. package/dist/cjs/src/entities/Command.js +9 -0
  3. package/dist/cjs/src/entities/Command.js.map +1 -0
  4. package/dist/{entities → cjs/src/entities}/actions/index.d.ts +2 -2
  5. package/dist/cjs/src/entities/actions/index.js +6 -0
  6. package/dist/cjs/src/entities/actions/index.js.map +1 -0
  7. package/dist/{entities → cjs/src/entities}/actions/uniswap.d.ts +30 -30
  8. package/dist/cjs/src/entities/actions/uniswap.js +365 -0
  9. package/dist/cjs/src/entities/actions/uniswap.js.map +1 -0
  10. package/dist/{entities → cjs/src/entities}/actions/unwrapWETH.d.ts +12 -12
  11. package/dist/cjs/src/entities/actions/unwrapWETH.js +33 -0
  12. package/dist/cjs/src/entities/actions/unwrapWETH.js.map +1 -0
  13. package/dist/{entities → cjs/src/entities}/index.d.ts +2 -2
  14. package/dist/cjs/src/entities/index.js +6 -0
  15. package/dist/cjs/src/entities/index.js.map +1 -0
  16. package/dist/cjs/src/index.d.ts +9 -0
  17. package/dist/cjs/src/index.js +24 -0
  18. package/dist/cjs/src/index.js.map +1 -0
  19. package/dist/{swapRouter.d.ts → cjs/src/swapRouter.d.ts} +37 -37
  20. package/dist/cjs/src/swapRouter.js +120 -0
  21. package/dist/cjs/src/swapRouter.js.map +1 -0
  22. package/dist/{utils → cjs/src/utils}/commandParser.d.ts +34 -34
  23. package/dist/cjs/src/utils/commandParser.js +144 -0
  24. package/dist/cjs/src/utils/commandParser.js.map +1 -0
  25. package/dist/{utils → cjs/src/utils}/constants.d.ts +30 -30
  26. package/dist/cjs/src/utils/constants.js +373 -0
  27. package/dist/cjs/src/utils/constants.js.map +1 -0
  28. package/dist/{utils → cjs/src/utils}/getCurrencyAddress.d.ts +2 -2
  29. package/dist/cjs/src/utils/getCurrencyAddress.js +9 -0
  30. package/dist/cjs/src/utils/getCurrencyAddress.js.map +1 -0
  31. package/dist/{utils → cjs/src/utils}/inputTokens.d.ts +23 -23
  32. package/dist/cjs/src/utils/inputTokens.js +58 -0
  33. package/dist/cjs/src/utils/inputTokens.js.map +1 -0
  34. package/dist/{utils → cjs/src/utils}/numbers.d.ts +6 -6
  35. package/dist/cjs/src/utils/numbers.js +22 -0
  36. package/dist/cjs/src/utils/numbers.js.map +1 -0
  37. package/dist/{utils → cjs/src/utils}/pathCurrency.d.ts +3 -3
  38. package/dist/cjs/src/utils/pathCurrency.js +27 -0
  39. package/dist/cjs/src/utils/pathCurrency.js.map +1 -0
  40. package/dist/{utils → cjs/src/utils}/routerCommands.d.ts +64 -64
  41. package/dist/cjs/src/utils/routerCommands.js +231 -0
  42. package/dist/cjs/src/utils/routerCommands.js.map +1 -0
  43. package/dist/{utils → cjs/src/utils}/routerTradeAdapter.d.ts +73 -73
  44. package/dist/cjs/src/utils/routerTradeAdapter.js +139 -0
  45. package/dist/cjs/src/utils/routerTradeAdapter.js.map +1 -0
  46. package/dist/esm/src/entities/Command.d.ts +12 -0
  47. package/dist/esm/src/entities/Command.js +6 -0
  48. package/dist/esm/src/entities/Command.js.map +1 -0
  49. package/dist/esm/src/entities/actions/index.d.ts +2 -0
  50. package/dist/esm/src/entities/actions/index.js +3 -0
  51. package/dist/esm/src/entities/actions/index.js.map +1 -0
  52. package/dist/esm/src/entities/actions/uniswap.d.ts +30 -0
  53. package/dist/esm/src/entities/actions/uniswap.js +361 -0
  54. package/dist/esm/src/entities/actions/uniswap.js.map +1 -0
  55. package/dist/esm/src/entities/actions/unwrapWETH.d.ts +12 -0
  56. package/dist/esm/src/entities/actions/unwrapWETH.js +28 -0
  57. package/dist/esm/src/entities/actions/unwrapWETH.js.map +1 -0
  58. package/dist/esm/src/entities/index.d.ts +2 -0
  59. package/dist/esm/src/entities/index.js +3 -0
  60. package/dist/esm/src/entities/index.js.map +1 -0
  61. package/dist/esm/src/index.d.ts +9 -0
  62. package/dist/esm/src/index.js +7 -0
  63. package/dist/esm/src/index.js.map +1 -0
  64. package/dist/esm/src/swapRouter.d.ts +37 -0
  65. package/dist/esm/src/swapRouter.js +115 -0
  66. package/dist/esm/src/swapRouter.js.map +1 -0
  67. package/dist/esm/src/utils/commandParser.d.ts +34 -0
  68. package/dist/esm/src/utils/commandParser.js +137 -0
  69. package/dist/esm/src/utils/commandParser.js.map +1 -0
  70. package/dist/esm/src/utils/constants.d.ts +30 -0
  71. package/dist/esm/src/utils/constants.js +367 -0
  72. package/dist/esm/src/utils/constants.js.map +1 -0
  73. package/dist/esm/src/utils/getCurrencyAddress.d.ts +2 -0
  74. package/dist/esm/src/utils/getCurrencyAddress.js +5 -0
  75. package/dist/esm/src/utils/getCurrencyAddress.js.map +1 -0
  76. package/dist/esm/src/utils/inputTokens.d.ts +23 -0
  77. package/dist/esm/src/utils/inputTokens.js +51 -0
  78. package/dist/esm/src/utils/inputTokens.js.map +1 -0
  79. package/dist/esm/src/utils/numbers.d.ts +6 -0
  80. package/dist/esm/src/utils/numbers.js +15 -0
  81. package/dist/esm/src/utils/numbers.js.map +1 -0
  82. package/dist/esm/src/utils/pathCurrency.d.ts +3 -0
  83. package/dist/esm/src/utils/pathCurrency.js +23 -0
  84. package/dist/esm/src/utils/pathCurrency.js.map +1 -0
  85. package/dist/esm/src/utils/routerCommands.d.ts +64 -0
  86. package/dist/esm/src/utils/routerCommands.js +226 -0
  87. package/dist/esm/src/utils/routerCommands.js.map +1 -0
  88. package/dist/esm/src/utils/routerTradeAdapter.d.ts +73 -0
  89. package/dist/esm/src/utils/routerTradeAdapter.js +134 -0
  90. package/dist/esm/src/utils/routerTradeAdapter.js.map +1 -0
  91. package/dist/types/src/entities/Command.d.ts +12 -0
  92. package/dist/types/src/entities/actions/index.d.ts +2 -0
  93. package/dist/types/src/entities/actions/uniswap.d.ts +30 -0
  94. package/dist/types/src/entities/actions/unwrapWETH.d.ts +12 -0
  95. package/dist/types/src/entities/index.d.ts +2 -0
  96. package/dist/types/src/index.d.ts +9 -0
  97. package/dist/types/src/swapRouter.d.ts +37 -0
  98. package/dist/types/src/utils/commandParser.d.ts +34 -0
  99. package/dist/types/src/utils/constants.d.ts +30 -0
  100. package/dist/types/src/utils/getCurrencyAddress.d.ts +2 -0
  101. package/dist/types/src/utils/inputTokens.d.ts +23 -0
  102. package/dist/types/src/utils/numbers.d.ts +6 -0
  103. package/dist/types/src/utils/pathCurrency.d.ts +3 -0
  104. package/dist/types/src/utils/routerCommands.d.ts +64 -0
  105. package/dist/types/src/utils/routerTradeAdapter.d.ts +73 -0
  106. package/package.json +22 -10
  107. package/dist/index.d.ts +0 -6
  108. package/dist/index.js +0 -8
  109. package/dist/test/forge/writeInterop.d.ts +0 -2
  110. package/dist/test/utils/addresses.d.ts +0 -5
  111. package/dist/test/utils/hexToDecimalString.d.ts +0 -2
  112. package/dist/test/utils/permit2.d.ts +0 -7
  113. package/dist/test/utils/uniswapData.d.ts +0 -24
  114. package/dist/universal-router-sdk.cjs.development.js +0 -1424
  115. package/dist/universal-router-sdk.cjs.development.js.map +0 -1
  116. package/dist/universal-router-sdk.cjs.production.min.js +0 -2
  117. package/dist/universal-router-sdk.cjs.production.min.js.map +0 -1
  118. package/dist/universal-router-sdk.esm.js +0 -1417
  119. package/dist/universal-router-sdk.esm.js.map +0 -1
@@ -1,12 +1,12 @@
1
- import { RoutePlanner } from '../utils/routerCommands';
2
- export declare type TradeConfig = {
3
- allowRevert: boolean;
4
- };
5
- export declare enum RouterActionType {
6
- UniswapTrade = "UniswapTrade",
7
- UnwrapWETH = "UnwrapWETH"
8
- }
9
- export interface Command {
10
- tradeType: RouterActionType;
11
- encode(planner: RoutePlanner, config: TradeConfig): void;
12
- }
1
+ import { RoutePlanner } from '../utils/routerCommands';
2
+ export type TradeConfig = {
3
+ allowRevert: boolean;
4
+ };
5
+ export declare enum RouterActionType {
6
+ UniswapTrade = "UniswapTrade",
7
+ UnwrapWETH = "UnwrapWETH"
8
+ }
9
+ export interface Command {
10
+ tradeType: RouterActionType;
11
+ encode(planner: RoutePlanner, config: TradeConfig): void;
12
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RouterActionType = void 0;
4
+ var RouterActionType;
5
+ (function (RouterActionType) {
6
+ RouterActionType["UniswapTrade"] = "UniswapTrade";
7
+ RouterActionType["UnwrapWETH"] = "UnwrapWETH";
8
+ })(RouterActionType = exports.RouterActionType || (exports.RouterActionType = {}));
9
+ //# sourceMappingURL=Command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Command.js","sourceRoot":"","sources":["../../../../src/entities/Command.ts"],"names":[],"mappings":";;;AAMA,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iDAA6B,CAAA;IAC7B,6CAAyB,CAAA;AAC3B,CAAC,EAHW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAG3B"}
@@ -1,2 +1,2 @@
1
- export * from './uniswap';
2
- export * from './unwrapWETH';
1
+ export * from './uniswap';
2
+ export * from './unwrapWETH';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./uniswap"), exports);
5
+ tslib_1.__exportStar(require("./unwrapWETH"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/actions/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB;AACzB,uDAA4B"}
@@ -1,30 +1,30 @@
1
- import { RoutePlanner } from '../../utils/routerCommands';
2
- import { Trade as RouterTrade, SwapOptions as RouterSwapOptions } from '@uniswap/router-sdk';
3
- import { Permit2Permit } from '../../utils/inputTokens';
4
- import { Currency, TradeType } from '@uniswap/sdk-core';
5
- import { Command, RouterActionType, TradeConfig } from '../Command';
6
- import { BigNumberish } from 'ethers';
7
- export declare type FlatFeeOptions = {
8
- amount: BigNumberish;
9
- recipient: string;
10
- };
11
- export declare type SwapOptions = Omit<RouterSwapOptions, 'inputTokenPermit'> & {
12
- useRouterBalance?: boolean;
13
- inputTokenPermit?: Permit2Permit;
14
- flatFee?: FlatFeeOptions;
15
- safeMode?: boolean;
16
- };
17
- export declare class UniswapTrade implements Command {
18
- trade: RouterTrade<Currency, Currency, TradeType>;
19
- options: SwapOptions;
20
- readonly tradeType: RouterActionType;
21
- readonly payerIsUser: boolean;
22
- constructor(trade: RouterTrade<Currency, Currency, TradeType>, options: SwapOptions);
23
- get isAllV4(): boolean;
24
- get inputRequiresWrap(): boolean;
25
- get inputRequiresUnwrap(): boolean;
26
- get outputRequiresWrap(): boolean;
27
- get outputRequiresUnwrap(): boolean;
28
- get outputRequiresTransition(): boolean;
29
- encode(planner: RoutePlanner, _config: TradeConfig): void;
30
- }
1
+ import { RoutePlanner } from '../../utils/routerCommands';
2
+ import { Trade as RouterTrade, SwapOptions as RouterSwapOptions } from '@uniswap/router-sdk';
3
+ import { Permit2Permit } from '../../utils/inputTokens';
4
+ import { Currency, TradeType } from '@uniswap/sdk-core';
5
+ import { Command, RouterActionType, TradeConfig } from '../Command';
6
+ import { BigNumberish } from 'ethers';
7
+ export type FlatFeeOptions = {
8
+ amount: BigNumberish;
9
+ recipient: string;
10
+ };
11
+ export type SwapOptions = Omit<RouterSwapOptions, 'inputTokenPermit'> & {
12
+ useRouterBalance?: boolean;
13
+ inputTokenPermit?: Permit2Permit;
14
+ flatFee?: FlatFeeOptions;
15
+ safeMode?: boolean;
16
+ };
17
+ export declare class UniswapTrade implements Command {
18
+ trade: RouterTrade<Currency, Currency, TradeType>;
19
+ options: SwapOptions;
20
+ readonly tradeType: RouterActionType;
21
+ readonly payerIsUser: boolean;
22
+ constructor(trade: RouterTrade<Currency, Currency, TradeType>, options: SwapOptions);
23
+ get isAllV4(): boolean;
24
+ get inputRequiresWrap(): boolean;
25
+ get inputRequiresUnwrap(): boolean;
26
+ get outputRequiresWrap(): boolean;
27
+ get outputRequiresUnwrap(): boolean;
28
+ get outputRequiresTransition(): boolean;
29
+ encode(planner: RoutePlanner, _config: TradeConfig): void;
30
+ }
@@ -0,0 +1,365 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UniswapTrade = void 0;
4
+ const routerCommands_1 = require("../../utils/routerCommands");
5
+ const v2_sdk_1 = require("@uniswap/v2-sdk");
6
+ const v3_sdk_1 = require("@uniswap/v3-sdk");
7
+ const v4_sdk_1 = require("@uniswap/v4-sdk");
8
+ const router_sdk_1 = require("@uniswap/router-sdk");
9
+ const pathCurrency_1 = require("../../utils/pathCurrency");
10
+ const sdk_core_1 = require("@uniswap/sdk-core");
11
+ const Command_1 = require("../Command");
12
+ const constants_1 = require("../../utils/constants");
13
+ const getCurrencyAddress_1 = require("../../utils/getCurrencyAddress");
14
+ const numbers_1 = require("../../utils/numbers");
15
+ const ethers_1 = require("ethers");
16
+ const REFUND_ETH_PRICE_IMPACT_THRESHOLD = new sdk_core_1.Percent(50, 100);
17
+ // Wrapper for uniswap router-sdk trade entity to encode swaps for Universal Router
18
+ // also translates trade objects from previous (v2, v3) SDKs
19
+ class UniswapTrade {
20
+ constructor(trade, options) {
21
+ this.trade = trade;
22
+ this.options = options;
23
+ this.tradeType = Command_1.RouterActionType.UniswapTrade;
24
+ if (!!options.fee && !!options.flatFee)
25
+ throw new Error('Only one fee option permitted');
26
+ if (this.inputRequiresWrap || this.inputRequiresUnwrap || this.options.useRouterBalance) {
27
+ this.payerIsUser = false;
28
+ }
29
+ else {
30
+ this.payerIsUser = true;
31
+ }
32
+ }
33
+ get isAllV4() {
34
+ let result = true;
35
+ for (const swap of this.trade.swaps) {
36
+ result = result && swap.route.protocol == router_sdk_1.Protocol.V4;
37
+ }
38
+ return result;
39
+ }
40
+ get inputRequiresWrap() {
41
+ if (this.isAllV4) {
42
+ return (this.trade.inputAmount.currency.isNative &&
43
+ !this.trade.swaps[0].route.pathInput.isNative);
44
+ }
45
+ else {
46
+ return this.trade.inputAmount.currency.isNative;
47
+ }
48
+ }
49
+ get inputRequiresUnwrap() {
50
+ if (this.isAllV4) {
51
+ return (!this.trade.inputAmount.currency.isNative &&
52
+ this.trade.swaps[0].route.pathInput.isNative);
53
+ }
54
+ return false;
55
+ }
56
+ get outputRequiresWrap() {
57
+ if (this.isAllV4) {
58
+ return (!this.trade.outputAmount.currency.isNative &&
59
+ this.trade.swaps[0].route.pathOutput.isNative);
60
+ }
61
+ return false;
62
+ }
63
+ get outputRequiresUnwrap() {
64
+ if (this.isAllV4) {
65
+ return (this.trade.outputAmount.currency.isNative &&
66
+ !this.trade.swaps[0].route.pathOutput.isNative);
67
+ }
68
+ else {
69
+ return this.trade.outputAmount.currency.isNative;
70
+ }
71
+ }
72
+ get outputRequiresTransition() {
73
+ return this.outputRequiresWrap || this.outputRequiresUnwrap;
74
+ }
75
+ encode(planner, _config) {
76
+ var _a;
77
+ // If the input currency is the native currency, we need to wrap it with the router as the recipient
78
+ if (this.inputRequiresWrap) {
79
+ // TODO: optimize if only one v2 pool we can directly send this to the pool
80
+ planner.addCommand(routerCommands_1.CommandType.WRAP_ETH, [
81
+ constants_1.ROUTER_AS_RECIPIENT,
82
+ this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString(),
83
+ ]);
84
+ }
85
+ else if (this.inputRequiresUnwrap) {
86
+ // send wrapped token to router to unwrap
87
+ planner.addCommand(routerCommands_1.CommandType.PERMIT2_TRANSFER_FROM, [
88
+ this.trade.inputAmount.currency.address,
89
+ constants_1.ROUTER_AS_RECIPIENT,
90
+ this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString(),
91
+ ]);
92
+ planner.addCommand(routerCommands_1.CommandType.UNWRAP_WETH, [constants_1.ROUTER_AS_RECIPIENT, 0]);
93
+ }
94
+ // The overall recipient at the end of the trade, SENDER_AS_RECIPIENT uses the msg.sender
95
+ this.options.recipient = (_a = this.options.recipient) !== null && _a !== void 0 ? _a : constants_1.SENDER_AS_RECIPIENT;
96
+ // flag for whether we want to perform slippage check on aggregate output of multiple routes
97
+ // 1. when there are >2 exact input trades. this is only a heuristic,
98
+ // as it's still more gas-expensive even in this case, but has benefits
99
+ // in that the reversion probability is lower
100
+ const performAggregatedSlippageCheck = this.trade.tradeType === sdk_core_1.TradeType.EXACT_INPUT && this.trade.routes.length > 2;
101
+ const routerMustCustody = performAggregatedSlippageCheck || this.outputRequiresTransition || hasFeeOption(this.options);
102
+ for (const swap of this.trade.swaps) {
103
+ switch (swap.route.protocol) {
104
+ case router_sdk_1.Protocol.V2:
105
+ addV2Swap(planner, swap, this.trade.tradeType, this.options, this.payerIsUser, routerMustCustody);
106
+ break;
107
+ case router_sdk_1.Protocol.V3:
108
+ addV3Swap(planner, swap, this.trade.tradeType, this.options, this.payerIsUser, routerMustCustody);
109
+ break;
110
+ case router_sdk_1.Protocol.V4:
111
+ addV4Swap(planner, swap, this.trade.tradeType, this.options, this.payerIsUser, routerMustCustody);
112
+ break;
113
+ case router_sdk_1.Protocol.MIXED:
114
+ addMixedSwap(planner, swap, this.trade.tradeType, this.options, this.payerIsUser, routerMustCustody);
115
+ break;
116
+ default:
117
+ throw new Error('UNSUPPORTED_TRADE_PROTOCOL');
118
+ }
119
+ }
120
+ let minimumAmountOut = ethers_1.BigNumber.from(this.trade.minimumAmountOut(this.options.slippageTolerance).quotient.toString());
121
+ // The router custodies for 3 reasons: to unwrap, to take a fee, and/or to do a slippage check
122
+ if (routerMustCustody) {
123
+ const pools = this.trade.swaps[0].route.pools;
124
+ const pathOutputCurrencyAddress = (0, getCurrencyAddress_1.getCurrencyAddress)((0, pathCurrency_1.getPathCurrency)(this.trade.outputAmount.currency, pools[pools.length - 1]));
125
+ // If there is a fee, that percentage is sent to the fee recipient
126
+ // In the case where ETH is the output currency, the fee is taken in WETH (for gas reasons)
127
+ if (!!this.options.fee) {
128
+ const feeBips = (0, numbers_1.encodeFeeBips)(this.options.fee.fee);
129
+ planner.addCommand(routerCommands_1.CommandType.PAY_PORTION, [pathOutputCurrencyAddress, this.options.fee.recipient, feeBips]);
130
+ // If the trade is exact output, and a fee was taken, we must adjust the amount out to be the amount after the fee
131
+ // Otherwise we continue as expected with the trade's normal expected output
132
+ if (this.trade.tradeType === sdk_core_1.TradeType.EXACT_OUTPUT) {
133
+ minimumAmountOut = minimumAmountOut.sub(minimumAmountOut.mul(feeBips).div(10000));
134
+ }
135
+ }
136
+ // If there is a flat fee, that absolute amount is sent to the fee recipient
137
+ // In the case where ETH is the output currency, the fee is taken in WETH (for gas reasons)
138
+ if (!!this.options.flatFee) {
139
+ const feeAmount = this.options.flatFee.amount;
140
+ if (minimumAmountOut.lt(feeAmount))
141
+ throw new Error('Flat fee amount greater than minimumAmountOut');
142
+ planner.addCommand(routerCommands_1.CommandType.TRANSFER, [pathOutputCurrencyAddress, this.options.flatFee.recipient, feeAmount]);
143
+ // If the trade is exact output, and a fee was taken, we must adjust the amount out to be the amount after the fee
144
+ // Otherwise we continue as expected with the trade's normal expected output
145
+ if (this.trade.tradeType === sdk_core_1.TradeType.EXACT_OUTPUT) {
146
+ minimumAmountOut = minimumAmountOut.sub(feeAmount);
147
+ }
148
+ }
149
+ // The remaining tokens that need to be sent to the user after the fee is taken will be caught
150
+ // by this if-else clause.
151
+ if (this.outputRequiresUnwrap) {
152
+ planner.addCommand(routerCommands_1.CommandType.UNWRAP_WETH, [this.options.recipient, minimumAmountOut]);
153
+ }
154
+ else if (this.outputRequiresWrap) {
155
+ planner.addCommand(routerCommands_1.CommandType.WRAP_ETH, [this.options.recipient, constants_1.CONTRACT_BALANCE]);
156
+ }
157
+ else {
158
+ planner.addCommand(routerCommands_1.CommandType.SWEEP, [
159
+ (0, getCurrencyAddress_1.getCurrencyAddress)(this.trade.outputAmount.currency),
160
+ this.options.recipient,
161
+ minimumAmountOut,
162
+ ]);
163
+ }
164
+ }
165
+ // for exactOutput swaps with native input or that perform an inputToken transition (wrap or unwrap)
166
+ // we need to send back the change to the user
167
+ if (this.trade.tradeType === sdk_core_1.TradeType.EXACT_OUTPUT || riskOfPartialFill(this.trade)) {
168
+ if (this.inputRequiresWrap) {
169
+ planner.addCommand(routerCommands_1.CommandType.UNWRAP_WETH, [this.options.recipient, 0]);
170
+ }
171
+ else if (this.inputRequiresUnwrap) {
172
+ planner.addCommand(routerCommands_1.CommandType.WRAP_ETH, [this.options.recipient, constants_1.CONTRACT_BALANCE]);
173
+ }
174
+ else if (this.trade.inputAmount.currency.isNative) {
175
+ // must refund extra native currency sent along for native v4 trades (no input transition)
176
+ planner.addCommand(routerCommands_1.CommandType.SWEEP, [constants_1.ETH_ADDRESS, this.options.recipient, 0]);
177
+ }
178
+ }
179
+ if (this.options.safeMode)
180
+ planner.addCommand(routerCommands_1.CommandType.SWEEP, [constants_1.ETH_ADDRESS, this.options.recipient, 0]);
181
+ }
182
+ }
183
+ exports.UniswapTrade = UniswapTrade;
184
+ // encode a uniswap v2 swap
185
+ function addV2Swap(planner, { route, inputAmount, outputAmount }, tradeType, options, payerIsUser, routerMustCustody) {
186
+ const trade = new v2_sdk_1.Trade(route, tradeType == sdk_core_1.TradeType.EXACT_INPUT ? inputAmount : outputAmount, tradeType);
187
+ if (tradeType == sdk_core_1.TradeType.EXACT_INPUT) {
188
+ planner.addCommand(routerCommands_1.CommandType.V2_SWAP_EXACT_IN, [
189
+ // if native, we have to unwrap so keep in the router for now
190
+ routerMustCustody ? constants_1.ROUTER_AS_RECIPIENT : options.recipient,
191
+ trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),
192
+ // if router will custody funds, we do aggregated slippage check from router
193
+ routerMustCustody ? 0 : trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),
194
+ route.path.map((token) => token.wrapped.address),
195
+ payerIsUser,
196
+ ]);
197
+ }
198
+ else if (tradeType == sdk_core_1.TradeType.EXACT_OUTPUT) {
199
+ planner.addCommand(routerCommands_1.CommandType.V2_SWAP_EXACT_OUT, [
200
+ routerMustCustody ? constants_1.ROUTER_AS_RECIPIENT : options.recipient,
201
+ trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),
202
+ trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),
203
+ route.path.map((token) => token.wrapped.address),
204
+ payerIsUser,
205
+ ]);
206
+ }
207
+ }
208
+ // encode a uniswap v3 swap
209
+ function addV3Swap(planner, { route, inputAmount, outputAmount }, tradeType, options, payerIsUser, routerMustCustody) {
210
+ const trade = v3_sdk_1.Trade.createUncheckedTrade({
211
+ route: route,
212
+ inputAmount,
213
+ outputAmount,
214
+ tradeType,
215
+ });
216
+ const path = (0, v3_sdk_1.encodeRouteToPath)(route, trade.tradeType === sdk_core_1.TradeType.EXACT_OUTPUT);
217
+ if (tradeType == sdk_core_1.TradeType.EXACT_INPUT) {
218
+ planner.addCommand(routerCommands_1.CommandType.V3_SWAP_EXACT_IN, [
219
+ routerMustCustody ? constants_1.ROUTER_AS_RECIPIENT : options.recipient,
220
+ trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),
221
+ routerMustCustody ? 0 : trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),
222
+ path,
223
+ payerIsUser,
224
+ ]);
225
+ }
226
+ else if (tradeType == sdk_core_1.TradeType.EXACT_OUTPUT) {
227
+ planner.addCommand(routerCommands_1.CommandType.V3_SWAP_EXACT_OUT, [
228
+ routerMustCustody ? constants_1.ROUTER_AS_RECIPIENT : options.recipient,
229
+ trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),
230
+ trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),
231
+ path,
232
+ payerIsUser,
233
+ ]);
234
+ }
235
+ }
236
+ function addV4Swap(planner, { inputAmount, outputAmount, route }, tradeType, options, payerIsUser, routerMustCustody) {
237
+ var _a;
238
+ // create a deep copy of pools since v4Planner encoding tampers with array
239
+ const pools = route.pools.map((p) => p);
240
+ const v4Route = new v4_sdk_1.Route(pools, inputAmount.currency, outputAmount.currency);
241
+ const trade = v4_sdk_1.Trade.createUncheckedTrade({
242
+ route: v4Route,
243
+ inputAmount,
244
+ outputAmount,
245
+ tradeType,
246
+ });
247
+ const slippageToleranceOnSwap = routerMustCustody && tradeType == sdk_core_1.TradeType.EXACT_INPUT ? undefined : options.slippageTolerance;
248
+ const v4Planner = new v4_sdk_1.V4Planner();
249
+ v4Planner.addTrade(trade, slippageToleranceOnSwap);
250
+ v4Planner.addSettle(trade.route.pathInput, payerIsUser);
251
+ v4Planner.addTake(trade.route.pathOutput, routerMustCustody ? constants_1.ROUTER_AS_RECIPIENT : (_a = options.recipient) !== null && _a !== void 0 ? _a : constants_1.SENDER_AS_RECIPIENT);
252
+ planner.addCommand(routerCommands_1.CommandType.V4_SWAP, [v4Planner.finalize()]);
253
+ }
254
+ // encode a mixed route swap, i.e. including both v2 and v3 pools
255
+ function addMixedSwap(planner, swap, tradeType, options, payerIsUser, routerMustCustody) {
256
+ var _a;
257
+ const route = swap.route;
258
+ const inputAmount = swap.inputAmount;
259
+ const outputAmount = swap.outputAmount;
260
+ const tradeRecipient = routerMustCustody ? constants_1.ROUTER_AS_RECIPIENT : (_a = options.recipient) !== null && _a !== void 0 ? _a : constants_1.SENDER_AS_RECIPIENT;
261
+ // single hop, so it can be reduced to plain swap logic for one protocol version
262
+ if (route.pools.length === 1) {
263
+ if (route.pools[0] instanceof v4_sdk_1.Pool) {
264
+ return addV4Swap(planner, swap, tradeType, options, payerIsUser, routerMustCustody);
265
+ }
266
+ else if (route.pools[0] instanceof v3_sdk_1.Pool) {
267
+ return addV3Swap(planner, swap, tradeType, options, payerIsUser, routerMustCustody);
268
+ }
269
+ else if (route.pools[0] instanceof v2_sdk_1.Pair) {
270
+ return addV2Swap(planner, swap, tradeType, options, payerIsUser, routerMustCustody);
271
+ }
272
+ else {
273
+ throw new Error('Invalid route type');
274
+ }
275
+ }
276
+ const trade = router_sdk_1.MixedRouteTrade.createUncheckedTrade({
277
+ route: route,
278
+ inputAmount,
279
+ outputAmount,
280
+ tradeType,
281
+ });
282
+ const amountIn = trade.maximumAmountIn(options.slippageTolerance, inputAmount).quotient.toString();
283
+ const amountOut = routerMustCustody
284
+ ? 0
285
+ : trade.minimumAmountOut(options.slippageTolerance, outputAmount).quotient.toString();
286
+ // logic from
287
+ // https://github.com/Uniswap/router-sdk/blob/d8eed164e6c79519983844ca8b6a3fc24ebcb8f8/src/swapRouter.ts#L276
288
+ const sections = (0, router_sdk_1.partitionMixedRouteByProtocol)(route);
289
+ const isLastSectionInRoute = (i) => {
290
+ return i === sections.length - 1;
291
+ };
292
+ let inputToken = route.pathInput;
293
+ for (let i = 0; i < sections.length; i++) {
294
+ const section = sections[i];
295
+ const routePool = section[0];
296
+ const outputToken = (0, router_sdk_1.getOutputOfPools)(section, inputToken);
297
+ const subRoute = new router_sdk_1.MixedRoute(new router_sdk_1.MixedRouteSDK([...section], inputToken, outputToken));
298
+ let nextInputToken;
299
+ let swapRecipient;
300
+ if (isLastSectionInRoute(i)) {
301
+ nextInputToken = outputToken;
302
+ swapRecipient = tradeRecipient;
303
+ }
304
+ else {
305
+ const nextPool = sections[i + 1][0];
306
+ nextInputToken = (0, pathCurrency_1.getPathCurrency)(outputToken, nextPool);
307
+ const v2PoolIsSwapRecipient = nextPool instanceof v2_sdk_1.Pair && outputToken.equals(nextInputToken);
308
+ swapRecipient = v2PoolIsSwapRecipient ? nextPool.liquidityToken.address : constants_1.ROUTER_AS_RECIPIENT;
309
+ }
310
+ if (routePool instanceof v4_sdk_1.Pool) {
311
+ const v4Planner = new v4_sdk_1.V4Planner();
312
+ const v4SubRoute = new v4_sdk_1.Route(section, subRoute.input, subRoute.output);
313
+ v4Planner.addSettle(inputToken, payerIsUser && i === 0, (i == 0 ? amountIn : constants_1.CONTRACT_BALANCE));
314
+ v4Planner.addAction(v4_sdk_1.Actions.SWAP_EXACT_IN, [
315
+ {
316
+ currencyIn: inputToken.isNative ? constants_1.ETH_ADDRESS : inputToken.address,
317
+ path: (0, v4_sdk_1.encodeRouteToPath)(v4SubRoute),
318
+ amountIn: 0,
319
+ amountOutMinimum: !isLastSectionInRoute(i) ? 0 : amountOut,
320
+ },
321
+ ]);
322
+ v4Planner.addTake(outputToken, swapRecipient);
323
+ planner.addCommand(routerCommands_1.CommandType.V4_SWAP, [v4Planner.finalize()]);
324
+ }
325
+ else if (routePool instanceof v3_sdk_1.Pool) {
326
+ planner.addCommand(routerCommands_1.CommandType.V3_SWAP_EXACT_IN, [
327
+ swapRecipient,
328
+ i == 0 ? amountIn : constants_1.CONTRACT_BALANCE,
329
+ !isLastSectionInRoute(i) ? 0 : amountOut,
330
+ (0, router_sdk_1.encodeMixedRouteToPath)(subRoute),
331
+ payerIsUser && i === 0, // payerIsUser
332
+ ]);
333
+ }
334
+ else if (routePool instanceof v2_sdk_1.Pair) {
335
+ planner.addCommand(routerCommands_1.CommandType.V2_SWAP_EXACT_IN, [
336
+ swapRecipient,
337
+ i === 0 ? amountIn : constants_1.CONTRACT_BALANCE,
338
+ !isLastSectionInRoute(i) ? 0 : amountOut,
339
+ subRoute.path.map((token) => token.wrapped.address),
340
+ payerIsUser && i === 0,
341
+ ]);
342
+ }
343
+ else {
344
+ throw new Error('Unexpected Pool Type');
345
+ }
346
+ // perform a token transition (wrap/unwrap if necessary)
347
+ if (!isLastSectionInRoute(i)) {
348
+ if (outputToken.isNative && !nextInputToken.isNative) {
349
+ planner.addCommand(routerCommands_1.CommandType.WRAP_ETH, [constants_1.ROUTER_AS_RECIPIENT, constants_1.CONTRACT_BALANCE]);
350
+ }
351
+ else if (!outputToken.isNative && nextInputToken.isNative) {
352
+ planner.addCommand(routerCommands_1.CommandType.UNWRAP_WETH, [constants_1.ROUTER_AS_RECIPIENT, 0]);
353
+ }
354
+ }
355
+ inputToken = nextInputToken;
356
+ }
357
+ }
358
+ // if price impact is very high, there's a chance of hitting max/min prices resulting in a partial fill of the swap
359
+ function riskOfPartialFill(trade) {
360
+ return trade.priceImpact.greaterThan(REFUND_ETH_PRICE_IMPACT_THRESHOLD);
361
+ }
362
+ function hasFeeOption(swapOptions) {
363
+ return !!swapOptions.fee || !!swapOptions.flatFee;
364
+ }
365
+ //# sourceMappingURL=uniswap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniswap.js","sourceRoot":"","sources":["../../../../../src/entities/actions/uniswap.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { BigNumberish } from 'ethers';
2
- import { RoutePlanner } from '../../utils/routerCommands';
3
- import { Permit2Permit } from '../../utils/inputTokens';
4
- import { Command, RouterActionType, TradeConfig } from '../Command';
5
- export declare class UnwrapWETH implements Command {
6
- readonly tradeType: RouterActionType;
7
- readonly permit2Data: Permit2Permit;
8
- readonly wethAddress: string;
9
- readonly amount: BigNumberish;
10
- constructor(amount: BigNumberish, chainId: number, permit2?: Permit2Permit);
11
- encode(planner: RoutePlanner, _: TradeConfig): void;
12
- }
1
+ import { BigNumberish } from 'ethers';
2
+ import { RoutePlanner } from '../../utils/routerCommands';
3
+ import { Permit2Permit } from '../../utils/inputTokens';
4
+ import { Command, RouterActionType, TradeConfig } from '../Command';
5
+ export declare class UnwrapWETH implements Command {
6
+ readonly tradeType: RouterActionType;
7
+ readonly permit2Data?: Permit2Permit;
8
+ readonly wethAddress: string;
9
+ readonly amount: BigNumberish;
10
+ constructor(amount: BigNumberish, chainId: number, permit2?: Permit2Permit);
11
+ encode(planner: RoutePlanner, _: TradeConfig): void;
12
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnwrapWETH = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const tiny_invariant_1 = tslib_1.__importDefault(require("tiny-invariant"));
6
+ const routerCommands_1 = require("../../utils/routerCommands");
7
+ const inputTokens_1 = require("../../utils/inputTokens");
8
+ const Command_1 = require("../Command");
9
+ const constants_1 = require("../../utils/constants");
10
+ class UnwrapWETH {
11
+ constructor(amount, chainId, permit2) {
12
+ this.tradeType = Command_1.RouterActionType.UnwrapWETH;
13
+ this.wethAddress = (0, constants_1.WETH_ADDRESS)(chainId);
14
+ this.amount = amount;
15
+ if (!!permit2) {
16
+ (0, tiny_invariant_1.default)(permit2.details.token.toLowerCase() === this.wethAddress.toLowerCase(), `must be permitting WETH address: ${this.wethAddress}`);
17
+ (0, tiny_invariant_1.default)(permit2.details.amount >= amount, `Did not permit enough WETH for unwrapWETH transaction`);
18
+ this.permit2Data = permit2;
19
+ }
20
+ }
21
+ encode(planner, _) {
22
+ (0, inputTokens_1.encodeInputTokenOptions)(planner, {
23
+ permit2Permit: this.permit2Data,
24
+ permit2TransferFrom: {
25
+ token: this.wethAddress,
26
+ amount: this.amount.toString(),
27
+ },
28
+ });
29
+ planner.addCommand(routerCommands_1.CommandType.UNWRAP_WETH, [constants_1.ROUTER_AS_RECIPIENT, this.amount]);
30
+ }
31
+ }
32
+ exports.UnwrapWETH = UnwrapWETH;
33
+ //# sourceMappingURL=unwrapWETH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unwrapWETH.js","sourceRoot":"","sources":["../../../../../src/entities/actions/unwrapWETH.ts"],"names":[],"mappings":";;;;AAAA,4EAAsC;AAEtC,+DAAsE;AACtE,yDAAgF;AAChF,wCAAmE;AACnE,qDAAyE;AAEzE,MAAa,UAAU;IAMrB,YAAY,MAAoB,EAAE,OAAe,EAAE,OAAuB;QALjE,cAAS,GAAqB,0BAAgB,CAAC,UAAU,CAAA;QAMhE,IAAI,CAAC,WAAW,GAAG,IAAA,wBAAY,EAAC,OAAO,CAAC,CAAA;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,IAAI,CAAC,CAAC,OAAO,EAAE;YACb,IAAA,wBAAS,EACP,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EACtE,oCAAoC,IAAI,CAAC,WAAW,EAAE,CACvD,CAAA;YACD,IAAA,wBAAS,EAAC,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,IAAA,qCAAuB,EAAC,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,4BAAW,CAAC,WAAW,EAAE,CAAC,+BAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACjF,CAAC;CACF;AA9BD,gCA8BC"}
@@ -1,2 +1,2 @@
1
- export * from './actions';
2
- export * from './Command';
1
+ export * from './actions';
2
+ export * from './Command';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./actions"), exports);
5
+ tslib_1.__exportStar(require("./Command"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/entities/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB;AACzB,oDAAyB"}
@@ -0,0 +1,9 @@
1
+ export { SwapRouter } from './swapRouter';
2
+ export type { MigrateV3ToV4Options } from './swapRouter';
3
+ export * from './entities';
4
+ export * from './utils/routerTradeAdapter';
5
+ export { RoutePlanner, CommandType, COMMAND_DEFINITION, Parser, Subparser } from './utils/routerCommands';
6
+ export type { CommandDefinition, ParamType } from './utils/routerCommands';
7
+ export { UNIVERSAL_ROUTER_CREATION_BLOCK, UNIVERSAL_ROUTER_ADDRESS, ROUTER_AS_RECIPIENT, WETH_ADDRESS, UniversalRouterVersion, } from './utils/constants';
8
+ export { CommandParser, GenericCommandParser } from './utils/commandParser';
9
+ export type { UniversalRouterCommand, UniversalRouterCall, Param, CommandsDefinition } from './utils/commandParser';
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GenericCommandParser = exports.CommandParser = exports.UniversalRouterVersion = exports.WETH_ADDRESS = exports.ROUTER_AS_RECIPIENT = exports.UNIVERSAL_ROUTER_ADDRESS = exports.UNIVERSAL_ROUTER_CREATION_BLOCK = exports.Subparser = exports.Parser = exports.COMMAND_DEFINITION = exports.CommandType = exports.RoutePlanner = exports.SwapRouter = void 0;
4
+ const tslib_1 = require("tslib");
5
+ var swapRouter_1 = require("./swapRouter");
6
+ Object.defineProperty(exports, "SwapRouter", { enumerable: true, get: function () { return swapRouter_1.SwapRouter; } });
7
+ tslib_1.__exportStar(require("./entities"), exports);
8
+ tslib_1.__exportStar(require("./utils/routerTradeAdapter"), exports);
9
+ var routerCommands_1 = require("./utils/routerCommands");
10
+ Object.defineProperty(exports, "RoutePlanner", { enumerable: true, get: function () { return routerCommands_1.RoutePlanner; } });
11
+ Object.defineProperty(exports, "CommandType", { enumerable: true, get: function () { return routerCommands_1.CommandType; } });
12
+ Object.defineProperty(exports, "COMMAND_DEFINITION", { enumerable: true, get: function () { return routerCommands_1.COMMAND_DEFINITION; } });
13
+ Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return routerCommands_1.Parser; } });
14
+ Object.defineProperty(exports, "Subparser", { enumerable: true, get: function () { return routerCommands_1.Subparser; } });
15
+ var constants_1 = require("./utils/constants");
16
+ Object.defineProperty(exports, "UNIVERSAL_ROUTER_CREATION_BLOCK", { enumerable: true, get: function () { return constants_1.UNIVERSAL_ROUTER_CREATION_BLOCK; } });
17
+ Object.defineProperty(exports, "UNIVERSAL_ROUTER_ADDRESS", { enumerable: true, get: function () { return constants_1.UNIVERSAL_ROUTER_ADDRESS; } });
18
+ Object.defineProperty(exports, "ROUTER_AS_RECIPIENT", { enumerable: true, get: function () { return constants_1.ROUTER_AS_RECIPIENT; } });
19
+ Object.defineProperty(exports, "WETH_ADDRESS", { enumerable: true, get: function () { return constants_1.WETH_ADDRESS; } });
20
+ Object.defineProperty(exports, "UniversalRouterVersion", { enumerable: true, get: function () { return constants_1.UniversalRouterVersion; } });
21
+ var commandParser_1 = require("./utils/commandParser");
22
+ Object.defineProperty(exports, "CommandParser", { enumerable: true, get: function () { return commandParser_1.CommandParser; } });
23
+ Object.defineProperty(exports, "GenericCommandParser", { enumerable: true, get: function () { return commandParser_1.GenericCommandParser; } });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AAEnB,qDAA0B;AAC1B,qEAA0C;AAC1C,yDAAyG;AAAhG,8GAAA,YAAY,OAAA;AAAE,6GAAA,WAAW,OAAA;AAAE,oHAAA,kBAAkB,OAAA;AAAE,wGAAA,MAAM,OAAA;AAAE,2GAAA,SAAS,OAAA;AAEzE,+CAM0B;AALxB,4HAAA,+BAA+B,OAAA;AAC/B,qHAAA,wBAAwB,OAAA;AACxB,gHAAA,mBAAmB,OAAA;AACnB,yGAAA,YAAY,OAAA;AACZ,mHAAA,sBAAsB,OAAA;AAExB,uDAA2E;AAAlE,8GAAA,aAAa,OAAA;AAAE,qHAAA,oBAAoB,OAAA"}