@uniswap/universal-router-sdk 2.0.2 → 2.0.4-beta.2
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.
- package/README.md +1 -60
- package/dist/entities/Command.d.ts +1 -3
- package/dist/entities/protocols/index.d.ts +0 -2
- package/dist/entities/protocols/uniswap.d.ts +4 -1
- package/dist/index.d.ts +1 -0
- package/dist/test/utils/uniswapData.d.ts +23 -0
- package/dist/universal-router-sdk.cjs.development.js +184 -113
- package/dist/universal-router-sdk.cjs.development.js.map +1 -1
- package/dist/universal-router-sdk.cjs.production.min.js +1 -1
- package/dist/universal-router-sdk.cjs.production.min.js.map +1 -1
- package/dist/universal-router-sdk.esm.js +188 -116
- package/dist/universal-router-sdk.esm.js.map +1 -1
- package/dist/utils/constants.d.ts +1 -3
- package/dist/utils/routerCommands.d.ts +1 -3
- package/dist/utils/routerTradeAdapter.d.ts +57 -0
- package/package.json +74 -39
- package/dist/entities/protocols/unwrapSTETH.d.ts +0 -10
- package/dist/entities/protocols/wrapSTETH.d.ts +0 -13
package/README.md
CHANGED
|
@@ -92,66 +92,8 @@ const unwrapWETH = new UnwrapWETH(amountWETH, chainId, optionalPermit2Params)
|
|
|
92
92
|
const { calldata, value } = SwapRouter.swapCallParameters([unwrapWETH, seaportTrades, looksRareTrades])
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
### Trading stETH
|
|
96
|
-
To trade stETH as an input token, you can make sure the router automatically wraps stETH to wstETH before trading across a wstETH route. Make sure to specify the router is the payer of the swap (since it's in custody of wSTETH after wrapping)
|
|
97
|
-
|
|
98
|
-
If this is an exactOut trade, we'll need to wrap the maximumAmountIn of steth, and therefore should add an unwrap command at the end of the transaction to account for any leftover steth that didn't get traded. `amountMinimum` can be set to 0 in this scenario for the unwrapSteth commmand.
|
|
99
|
-
```typescript
|
|
100
|
-
import { TradeType } from '@uniswap/sdk-core'
|
|
101
|
-
import { Trade as V2TradeSDK } from '@uniswap/v2-sdk'
|
|
102
|
-
import { Trade as V3TradeSDK } from '@uniswap/v3-sdk'
|
|
103
|
-
import { MixedRouteTrade, MixedRouteSDK, Trade as RouterTrade } from '@uniswap/router-sdk'
|
|
104
|
-
import {
|
|
105
|
-
UniswapTrade,
|
|
106
|
-
WrapSTETH
|
|
107
|
-
} from "@uniswap/universal-router-sdk";
|
|
108
|
-
|
|
109
|
-
// EXACT INPUT
|
|
110
|
-
// including optional permit2 parameter will transfer STETH amount using permit2
|
|
111
|
-
const wrapSTETH = new WrapSTETH(inputSTETH, chainId, WrapSTETHPermitData?, wrapAmountOtherThanContractBalance?)
|
|
112
|
-
const uniswapWstethTrade = new UniswapTrade(
|
|
113
|
-
new RouterTrade({ v2Routes, v3Routes, mixedRoutes, tradeType: TradeType.EXACT_INPUT }),
|
|
114
|
-
{ slippageTolerance, payerIsRouter: true }
|
|
115
|
-
)
|
|
116
|
-
const { calldata, value } = SwapRouter.swapCallParameters([wrapSTETH, uniswapWstethTrade])
|
|
117
|
-
|
|
118
|
-
// EXACT OUTPUT
|
|
119
|
-
const wrapSTETH = new WrapSTETH(maximumInputSTETH, chainId, WrapSTETHPermitData?, wrapAmountOtherThanContractBalance?)
|
|
120
|
-
const uniswapWstethTrade = new UniswapTrade(
|
|
121
|
-
new RouterTrade({ v2Routes, v3Routes, mixedRoutes, tradeType: TradeType.EXACT_OUTPUT }),
|
|
122
|
-
{ slippageTolerance, payerIsRouter: true }
|
|
123
|
-
)
|
|
124
|
-
const unwrapSTETH = new UnwrapSTETH(recipient, amountMinimum = 0, chainId)
|
|
125
|
-
|
|
126
|
-
const { calldata, value } = SwapRouter.swapCallParameters([wrapSTETH, uniswapWstethTrade, unwrapSTETH])
|
|
127
|
-
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
To recieve stETH as an output token, you can make sure the router automatically unwraps wstETH to stETH before returning to the swapper
|
|
131
|
-
```typescript
|
|
132
|
-
import { TradeType } from '@uniswap/sdk-core'
|
|
133
|
-
import { Trade as V2TradeSDK } from '@uniswap/v2-sdk'
|
|
134
|
-
import { Trade as V3TradeSDK } from '@uniswap/v3-sdk'
|
|
135
|
-
import { MixedRouteTrade, MixedRouteSDK, Trade as RouterTrade } from '@uniswap/router-sdk'
|
|
136
|
-
import {
|
|
137
|
-
ROUTER_AS_RECIPIENT,
|
|
138
|
-
UniswapTrade,
|
|
139
|
-
UnwrapSTETH
|
|
140
|
-
} from "@uniswap/universal-router-sdk";
|
|
141
|
-
|
|
142
|
-
// return trade to the router instead of the recipient using the ROUTER_AS_RECIPIENT constant so that the router may custody tokens to unwrap
|
|
143
|
-
const uniswapWstethTrade = new UniswapTrade(
|
|
144
|
-
new RouterTrade({ v2Routes, v3Routes, mixedRoutes, tradeType: TradeType.EXACT_INPUT }),
|
|
145
|
-
{ slippageTolerance, recipient: ROUTER_AS_RECIPIENT}
|
|
146
|
-
)
|
|
147
|
-
const unwrapSTETH = new UnwrapSTETH(recipient, amountMinimum, chainId)
|
|
148
|
-
|
|
149
|
-
const { calldata, value } = SwapRouter.swapCallParameters([uniswapWstethTrade, unwrapSTETH])
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
|
|
153
95
|
## Running this package
|
|
154
|
-
Make sure you are running `node
|
|
96
|
+
Make sure you are running `node v18`
|
|
155
97
|
Install dependencies and run typescript unit tests
|
|
156
98
|
```bash
|
|
157
99
|
yarn install
|
|
@@ -160,7 +102,6 @@ yarn test:hardhat
|
|
|
160
102
|
|
|
161
103
|
Run forge integration tests
|
|
162
104
|
```bash
|
|
163
|
-
yarn symlink # must install git submodules
|
|
164
105
|
forge install
|
|
165
106
|
yarn test:forge
|
|
166
107
|
```
|
|
@@ -5,9 +5,7 @@ export declare type TradeConfig = {
|
|
|
5
5
|
export declare enum RouterTradeType {
|
|
6
6
|
UniswapTrade = "UniswapTrade",
|
|
7
7
|
NFTTrade = "NFTTrade",
|
|
8
|
-
UnwrapWETH = "UnwrapWETH"
|
|
9
|
-
WrapSTETH = "WrapSTETH",
|
|
10
|
-
UnwrapSTETH = "UnwrapSTETH"
|
|
8
|
+
UnwrapWETH = "UnwrapWETH"
|
|
11
9
|
}
|
|
12
10
|
export interface Command {
|
|
13
11
|
tradeType: RouterTradeType;
|
|
@@ -9,14 +9,17 @@ export declare type FlatFeeOptions = {
|
|
|
9
9
|
recipient: string;
|
|
10
10
|
};
|
|
11
11
|
export declare type SwapOptions = Omit<RouterSwapOptions, 'inputTokenPermit'> & {
|
|
12
|
+
useRouterBalance?: boolean;
|
|
12
13
|
inputTokenPermit?: Permit2Permit;
|
|
13
|
-
payerIsRouter?: boolean;
|
|
14
14
|
flatFee?: FlatFeeOptions;
|
|
15
|
+
safeMode?: boolean;
|
|
15
16
|
};
|
|
16
17
|
export declare class UniswapTrade implements Command {
|
|
17
18
|
trade: RouterTrade<Currency, Currency, TradeType>;
|
|
18
19
|
options: SwapOptions;
|
|
19
20
|
readonly tradeType: RouterTradeType;
|
|
21
|
+
readonly payerIsUser: boolean;
|
|
20
22
|
constructor(trade: RouterTrade<Currency, Currency, TradeType>, options: SwapOptions);
|
|
23
|
+
get inputRequiresWrap(): boolean;
|
|
21
24
|
encode(planner: RoutePlanner, _config: TradeConfig): void;
|
|
22
25
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { SwapRouter } from './swapRouter';
|
|
2
2
|
export * from './entities';
|
|
3
|
+
export * from './utils/routerTradeAdapter';
|
|
3
4
|
export { RoutePlanner, CommandType } from './utils/routerCommands';
|
|
4
5
|
export { UNIVERSAL_ROUTER_ADDRESS, UNIVERSAL_ROUTER_CREATION_BLOCK, PERMIT2_ADDRESS, ROUTER_AS_RECIPIENT, WETH_ADDRESS, } from './utils/constants';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { MixedRouteTrade, Trade as RouterTrade } from '@uniswap/router-sdk';
|
|
2
|
+
import { Trade as V2Trade, Pair } from '@uniswap/v2-sdk';
|
|
3
|
+
import { Trade as V3Trade, Pool, FeeAmount } from '@uniswap/v3-sdk';
|
|
4
|
+
import { SwapOptions } from '../../src';
|
|
5
|
+
import { TradeType, Ether, Token, Currency } from '@uniswap/sdk-core';
|
|
6
|
+
export declare const ETHER: Ether;
|
|
7
|
+
export declare const WETH: Token;
|
|
8
|
+
export declare const DAI: Token;
|
|
9
|
+
export declare const USDC: Token;
|
|
10
|
+
export declare const FEE_AMOUNT = FeeAmount.MEDIUM;
|
|
11
|
+
declare type UniswapPools = {
|
|
12
|
+
WETH_USDC_V2: Pair;
|
|
13
|
+
USDC_DAI_V2: Pair;
|
|
14
|
+
WETH_USDC_V3: Pool;
|
|
15
|
+
WETH_USDC_V3_LOW_FEE: Pool;
|
|
16
|
+
USDC_DAI_V3: Pool;
|
|
17
|
+
};
|
|
18
|
+
export declare function getUniswapPools(forkBlock?: number): Promise<UniswapPools>;
|
|
19
|
+
export declare function getPair(tokenA: Token, tokenB: Token, blockNumber: number): Promise<Pair>;
|
|
20
|
+
export declare function getPool(tokenA: Token, tokenB: Token, feeAmount: FeeAmount, blockNumber: number): Promise<Pool>;
|
|
21
|
+
export declare function swapOptions(options: Partial<SwapOptions>): SwapOptions;
|
|
22
|
+
export declare function buildTrade(trades: (V2Trade<Currency, Currency, TradeType> | V3Trade<Currency, Currency, TradeType> | MixedRouteTrade<Currency, Currency, TradeType>)[]): RouterTrade<Currency, Currency, TradeType>;
|
|
23
|
+
export {};
|
|
@@ -16,6 +16,37 @@ var sdkCore = require('@uniswap/sdk-core');
|
|
|
16
16
|
require('jsbi');
|
|
17
17
|
require('bignumber.js');
|
|
18
18
|
|
|
19
|
+
function _toPrimitive(t, r) {
|
|
20
|
+
if ("object" != typeof t || !t) return t;
|
|
21
|
+
var e = t[Symbol.toPrimitive];
|
|
22
|
+
if (void 0 !== e) {
|
|
23
|
+
var i = e.call(t, r || "default");
|
|
24
|
+
if ("object" != typeof i) return i;
|
|
25
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
26
|
+
}
|
|
27
|
+
return ("string" === r ? String : Number)(t);
|
|
28
|
+
}
|
|
29
|
+
function _toPropertyKey(t) {
|
|
30
|
+
var i = _toPrimitive(t, "string");
|
|
31
|
+
return "symbol" == typeof i ? i : String(i);
|
|
32
|
+
}
|
|
33
|
+
function _defineProperties(target, props) {
|
|
34
|
+
for (var i = 0; i < props.length; i++) {
|
|
35
|
+
var descriptor = props[i];
|
|
36
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
37
|
+
descriptor.configurable = true;
|
|
38
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
39
|
+
Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function _createClass(Constructor, protoProps, staticProps) {
|
|
43
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
44
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
45
|
+
Object.defineProperty(Constructor, "prototype", {
|
|
46
|
+
writable: false
|
|
47
|
+
});
|
|
48
|
+
return Constructor;
|
|
49
|
+
}
|
|
19
50
|
function _extends() {
|
|
20
51
|
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
21
52
|
for (var i = 1; i < arguments.length; i++) {
|
|
@@ -78,8 +109,6 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
|
|
|
78
109
|
RouterTradeType["UniswapTrade"] = "UniswapTrade";
|
|
79
110
|
RouterTradeType["NFTTrade"] = "NFTTrade";
|
|
80
111
|
RouterTradeType["UnwrapWETH"] = "UnwrapWETH";
|
|
81
|
-
RouterTradeType["WrapSTETH"] = "WrapSTETH";
|
|
82
|
-
RouterTradeType["UnwrapSTETH"] = "UnwrapSTETH";
|
|
83
112
|
})(exports.RouterTradeType || (exports.RouterTradeType = {}));
|
|
84
113
|
|
|
85
114
|
var NFTTrade = function NFTTrade(market, orders) {
|
|
@@ -140,8 +169,6 @@ var _ABI_DEFINITION;
|
|
|
140
169
|
CommandType[CommandType["SEAPORT_V1_4"] = 32] = "SEAPORT_V1_4";
|
|
141
170
|
CommandType[CommandType["EXECUTE_SUB_PLAN"] = 33] = "EXECUTE_SUB_PLAN";
|
|
142
171
|
CommandType[CommandType["APPROVE_ERC20"] = 34] = "APPROVE_ERC20";
|
|
143
|
-
CommandType[CommandType["WRAP_STETH"] = 35] = "WRAP_STETH";
|
|
144
|
-
CommandType[CommandType["UNWRAP_STETH"] = 36] = "UNWRAP_STETH";
|
|
145
172
|
})(exports.CommandType || (exports.CommandType = {}));
|
|
146
173
|
var ALLOW_REVERT_FLAG = 0x80;
|
|
147
174
|
var REVERTIBLE_COMMANDS = /*#__PURE__*/new Set([exports.CommandType.SEAPORT_V1_5, exports.CommandType.SEAPORT_V1_4, exports.CommandType.NFTX, exports.CommandType.LOOKS_RARE_V2, exports.CommandType.X2Y2_721, exports.CommandType.X2Y2_1155, exports.CommandType.FOUNDATION, exports.CommandType.SUDOSWAP, exports.CommandType.NFT20, exports.CommandType.EXECUTE_SUB_PLAN, exports.CommandType.CRYPTOPUNKS, exports.CommandType.ELEMENT_MARKET]);
|
|
@@ -149,7 +176,7 @@ var PERMIT_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 non
|
|
|
149
176
|
var PERMIT_BATCH_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce)[] details,address spender,uint256 sigDeadline)';
|
|
150
177
|
var PERMIT2_TRANSFER_FROM_STRUCT = '(address from,address to,uint160 amount,address token)';
|
|
151
178
|
var PERMIT2_TRANSFER_FROM_BATCH_STRUCT = PERMIT2_TRANSFER_FROM_STRUCT + '[]';
|
|
152
|
-
var ABI_DEFINITION = (_ABI_DEFINITION = {}, _ABI_DEFINITION[exports.CommandType.EXECUTE_SUB_PLAN] = ['bytes', 'bytes[]'], _ABI_DEFINITION[exports.CommandType.PERMIT2_PERMIT] = [PERMIT_STRUCT, 'bytes'], _ABI_DEFINITION[exports.CommandType.PERMIT2_PERMIT_BATCH] = [PERMIT_BATCH_STRUCT, 'bytes'], _ABI_DEFINITION[exports.CommandType.PERMIT2_TRANSFER_FROM] = ['address', 'address', 'uint160'], _ABI_DEFINITION[exports.CommandType.PERMIT2_TRANSFER_FROM_BATCH] = [PERMIT2_TRANSFER_FROM_BATCH_STRUCT], _ABI_DEFINITION[exports.CommandType.V3_SWAP_EXACT_IN] = ['address', 'uint256', 'uint256', 'bytes', 'bool'], _ABI_DEFINITION[exports.CommandType.V3_SWAP_EXACT_OUT] = ['address', 'uint256', 'uint256', 'bytes', 'bool'], _ABI_DEFINITION[exports.CommandType.V2_SWAP_EXACT_IN] = ['address', 'uint256', 'uint256', 'address[]', 'bool'], _ABI_DEFINITION[exports.CommandType.V2_SWAP_EXACT_OUT] = ['address', 'uint256', 'uint256', 'address[]', 'bool'], _ABI_DEFINITION[exports.CommandType.WRAP_ETH] = ['address', 'uint256'], _ABI_DEFINITION[exports.CommandType.UNWRAP_WETH] = ['address', 'uint256'], _ABI_DEFINITION[exports.CommandType.SWEEP] = ['address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.SWEEP_ERC721] = ['address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.SWEEP_ERC1155] = ['address', 'address', 'uint256', 'uint256'], _ABI_DEFINITION[exports.CommandType.TRANSFER] = ['address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.PAY_PORTION] = ['address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.BALANCE_CHECK_ERC20] = ['address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.OWNER_CHECK_721] = ['address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.OWNER_CHECK_1155] = ['address', 'address', 'uint256', 'uint256'], _ABI_DEFINITION[exports.CommandType.APPROVE_ERC20] = ['address', 'uint256'], _ABI_DEFINITION[exports.CommandType.
|
|
179
|
+
var ABI_DEFINITION = (_ABI_DEFINITION = {}, _ABI_DEFINITION[exports.CommandType.EXECUTE_SUB_PLAN] = ['bytes', 'bytes[]'], _ABI_DEFINITION[exports.CommandType.PERMIT2_PERMIT] = [PERMIT_STRUCT, 'bytes'], _ABI_DEFINITION[exports.CommandType.PERMIT2_PERMIT_BATCH] = [PERMIT_BATCH_STRUCT, 'bytes'], _ABI_DEFINITION[exports.CommandType.PERMIT2_TRANSFER_FROM] = ['address', 'address', 'uint160'], _ABI_DEFINITION[exports.CommandType.PERMIT2_TRANSFER_FROM_BATCH] = [PERMIT2_TRANSFER_FROM_BATCH_STRUCT], _ABI_DEFINITION[exports.CommandType.V3_SWAP_EXACT_IN] = ['address', 'uint256', 'uint256', 'bytes', 'bool'], _ABI_DEFINITION[exports.CommandType.V3_SWAP_EXACT_OUT] = ['address', 'uint256', 'uint256', 'bytes', 'bool'], _ABI_DEFINITION[exports.CommandType.V2_SWAP_EXACT_IN] = ['address', 'uint256', 'uint256', 'address[]', 'bool'], _ABI_DEFINITION[exports.CommandType.V2_SWAP_EXACT_OUT] = ['address', 'uint256', 'uint256', 'address[]', 'bool'], _ABI_DEFINITION[exports.CommandType.WRAP_ETH] = ['address', 'uint256'], _ABI_DEFINITION[exports.CommandType.UNWRAP_WETH] = ['address', 'uint256'], _ABI_DEFINITION[exports.CommandType.SWEEP] = ['address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.SWEEP_ERC721] = ['address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.SWEEP_ERC1155] = ['address', 'address', 'uint256', 'uint256'], _ABI_DEFINITION[exports.CommandType.TRANSFER] = ['address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.PAY_PORTION] = ['address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.BALANCE_CHECK_ERC20] = ['address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.OWNER_CHECK_721] = ['address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.OWNER_CHECK_1155] = ['address', 'address', 'uint256', 'uint256'], _ABI_DEFINITION[exports.CommandType.APPROVE_ERC20] = ['address', 'uint256'], _ABI_DEFINITION[exports.CommandType.SEAPORT_V1_5] = ['uint256', 'bytes'], _ABI_DEFINITION[exports.CommandType.SEAPORT_V1_4] = ['uint256', 'bytes'], _ABI_DEFINITION[exports.CommandType.NFTX] = ['uint256', 'bytes'], _ABI_DEFINITION[exports.CommandType.LOOKS_RARE_V2] = ['uint256', 'bytes'], _ABI_DEFINITION[exports.CommandType.X2Y2_721] = ['uint256', 'bytes', 'address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.X2Y2_1155] = ['uint256', 'bytes', 'address', 'address', 'uint256', 'uint256'], _ABI_DEFINITION[exports.CommandType.FOUNDATION] = ['uint256', 'bytes', 'address', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.SUDOSWAP] = ['uint256', 'bytes'], _ABI_DEFINITION[exports.CommandType.NFT20] = ['uint256', 'bytes'], _ABI_DEFINITION[exports.CommandType.CRYPTOPUNKS] = ['uint256', 'address', 'uint256'], _ABI_DEFINITION[exports.CommandType.ELEMENT_MARKET] = ['uint256', 'bytes'], _ABI_DEFINITION);
|
|
153
180
|
var RoutePlanner = /*#__PURE__*/function () {
|
|
154
181
|
function RoutePlanner() {
|
|
155
182
|
this.commands = '0x';
|
|
@@ -184,97 +211,71 @@ function createCommand(type, parameters) {
|
|
|
184
211
|
}
|
|
185
212
|
|
|
186
213
|
var _CHAIN_CONFIGS;
|
|
187
|
-
var
|
|
214
|
+
var WETH_NOT_SUPPORTED_ON_CHAIN = '0x0000000000000000000000000000000000000000';
|
|
188
215
|
var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
189
216
|
router: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
|
|
190
217
|
weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
|
|
191
|
-
steth: '0xae7ab96520de3a18e5e111b5eaab095312d7fe84',
|
|
192
|
-
wsteth: '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
|
|
193
218
|
creationBlock: 17143817
|
|
194
219
|
}, _CHAIN_CONFIGS[5] = {
|
|
195
220
|
router: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
|
|
196
221
|
weth: '0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6',
|
|
197
|
-
steth: '0x1643E812aE58766192Cf7D2Cf9567dF2C37e9B7F',
|
|
198
|
-
wsteth: '0x6320cD32aA674d2898A68ec82e869385Fc5f7E2f',
|
|
199
222
|
creationBlock: 8940568
|
|
200
223
|
}, _CHAIN_CONFIGS[11155111] = {
|
|
201
224
|
router: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
|
|
202
225
|
weth: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',
|
|
203
|
-
steth: NOT_SUPPORTED_ON_CHAIN,
|
|
204
|
-
wsteth: NOT_SUPPORTED_ON_CHAIN,
|
|
205
226
|
creationBlock: 3543575
|
|
206
227
|
}, _CHAIN_CONFIGS[137] = {
|
|
207
|
-
router: '
|
|
228
|
+
router: '0xec7BE89e9d109e7e3Fec59c222CF297125FEFda2',
|
|
208
229
|
weth: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',
|
|
209
|
-
|
|
210
|
-
wsteth: NOT_SUPPORTED_ON_CHAIN,
|
|
211
|
-
creationBlock: 46866777
|
|
230
|
+
creationBlock: 52210153
|
|
212
231
|
}, _CHAIN_CONFIGS[80001] = {
|
|
213
232
|
router: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
|
|
214
233
|
weth: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889',
|
|
215
|
-
steth: NOT_SUPPORTED_ON_CHAIN,
|
|
216
|
-
wsteth: NOT_SUPPORTED_ON_CHAIN,
|
|
217
234
|
creationBlock: 35176052
|
|
218
235
|
}, _CHAIN_CONFIGS[10] = {
|
|
219
|
-
router: '
|
|
236
|
+
router: '0xCb1355ff08Ab38bBCE60111F1bb2B784bE25D7e8',
|
|
220
237
|
weth: '0x4200000000000000000000000000000000000006',
|
|
221
|
-
|
|
222
|
-
wsteth: NOT_SUPPORTED_ON_CHAIN,
|
|
223
|
-
creationBlock: 108825869
|
|
238
|
+
creationBlock: 114702266
|
|
224
239
|
}, _CHAIN_CONFIGS[420] = {
|
|
225
240
|
router: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
|
|
226
241
|
weth: '0x4200000000000000000000000000000000000006',
|
|
227
|
-
steth: NOT_SUPPORTED_ON_CHAIN,
|
|
228
|
-
wsteth: NOT_SUPPORTED_ON_CHAIN,
|
|
229
242
|
creationBlock: 8887728
|
|
230
243
|
}, _CHAIN_CONFIGS[42161] = {
|
|
231
|
-
router: '
|
|
244
|
+
router: '0x5E325eDA8064b456f4781070C0738d849c824258',
|
|
232
245
|
weth: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
|
|
233
|
-
|
|
234
|
-
wsteth: NOT_SUPPORTED_ON_CHAIN,
|
|
235
|
-
creationBlock: 125861718
|
|
246
|
+
creationBlock: 169472836
|
|
236
247
|
}, _CHAIN_CONFIGS[421613] = {
|
|
237
248
|
router: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
|
|
238
249
|
weth: '0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3',
|
|
239
|
-
steth: NOT_SUPPORTED_ON_CHAIN,
|
|
240
|
-
wsteth: NOT_SUPPORTED_ON_CHAIN,
|
|
241
250
|
creationBlock: 18815277
|
|
242
251
|
}, _CHAIN_CONFIGS[42220] = {
|
|
243
|
-
router: '
|
|
244
|
-
weth:
|
|
245
|
-
|
|
246
|
-
wsteth: NOT_SUPPORTED_ON_CHAIN,
|
|
247
|
-
creationBlock: 21116361
|
|
252
|
+
router: '0x643770e279d5d0733f21d6dc03a8efbabf3255b4',
|
|
253
|
+
weth: WETH_NOT_SUPPORTED_ON_CHAIN,
|
|
254
|
+
creationBlock: 21407637
|
|
248
255
|
}, _CHAIN_CONFIGS[44787] = {
|
|
249
256
|
router: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
|
|
250
|
-
weth:
|
|
251
|
-
steth: NOT_SUPPORTED_ON_CHAIN,
|
|
252
|
-
wsteth: NOT_SUPPORTED_ON_CHAIN,
|
|
257
|
+
weth: WETH_NOT_SUPPORTED_ON_CHAIN,
|
|
253
258
|
creationBlock: 17566658
|
|
254
259
|
}, _CHAIN_CONFIGS[56] = {
|
|
255
|
-
router: '
|
|
260
|
+
router: '0x4Dae2f939ACf50408e13d58534Ff8c2776d45265',
|
|
256
261
|
weth: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',
|
|
257
|
-
|
|
258
|
-
wsteth: NOT_SUPPORTED_ON_CHAIN,
|
|
259
|
-
creationBlock: 31254967
|
|
262
|
+
creationBlock: 35160263
|
|
260
263
|
}, _CHAIN_CONFIGS[43114] = {
|
|
261
|
-
router: '
|
|
264
|
+
router: '0x4Dae2f939ACf50408e13d58534Ff8c2776d45265',
|
|
262
265
|
weth: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7',
|
|
263
|
-
|
|
264
|
-
wsteth: NOT_SUPPORTED_ON_CHAIN,
|
|
265
|
-
creationBlock: 34491144
|
|
266
|
+
creationBlock: 40237257
|
|
266
267
|
}, _CHAIN_CONFIGS[84531] = {
|
|
267
268
|
router: '0xd0872d928672ae2ff74bdb2f5130ac12229cafaf',
|
|
268
269
|
weth: '0x4200000000000000000000000000000000000006',
|
|
269
|
-
steth: NOT_SUPPORTED_ON_CHAIN,
|
|
270
|
-
wsteth: NOT_SUPPORTED_ON_CHAIN,
|
|
271
270
|
creationBlock: 6915289
|
|
272
271
|
}, _CHAIN_CONFIGS[8453] = {
|
|
273
|
-
router: '
|
|
272
|
+
router: '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD',
|
|
274
273
|
weth: '0x4200000000000000000000000000000000000006',
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
274
|
+
creationBlock: 9107268
|
|
275
|
+
}, _CHAIN_CONFIGS[81457] = {
|
|
276
|
+
router: '0x643770E279d5D0733F21d6DC03A8efbABf3255B4',
|
|
277
|
+
weth: '0x4300000000000000000000000000000000000004',
|
|
278
|
+
creationBlock: 1116444
|
|
278
279
|
}, _CHAIN_CONFIGS);
|
|
279
280
|
var UNIVERSAL_ROUTER_ADDRESS = function UNIVERSAL_ROUTER_ADDRESS(chainId) {
|
|
280
281
|
if (!(chainId in CHAIN_CONFIGS)) throw new Error("Universal Router not deployed on chain " + chainId);
|
|
@@ -286,17 +287,13 @@ var UNIVERSAL_ROUTER_CREATION_BLOCK = function UNIVERSAL_ROUTER_CREATION_BLOCK(c
|
|
|
286
287
|
};
|
|
287
288
|
var WETH_ADDRESS = function WETH_ADDRESS(chainId) {
|
|
288
289
|
if (!(chainId in CHAIN_CONFIGS)) throw new Error("Universal Router not deployed on chain " + chainId);
|
|
289
|
-
if (CHAIN_CONFIGS[chainId].weth ==
|
|
290
|
+
if (CHAIN_CONFIGS[chainId].weth == WETH_NOT_SUPPORTED_ON_CHAIN) throw new Error("Chain " + chainId + " does not have WETH");
|
|
290
291
|
return CHAIN_CONFIGS[chainId].weth;
|
|
291
292
|
};
|
|
292
|
-
var STETH_ADDRESS = function STETH_ADDRESS(chainId) {
|
|
293
|
-
if (!(chainId in CHAIN_CONFIGS)) throw new Error("Universal Router not deployed on chain " + chainId);
|
|
294
|
-
if (CHAIN_CONFIGS[chainId].steth == NOT_SUPPORTED_ON_CHAIN) throw new Error("Chain " + chainId + " does not have STETH support");
|
|
295
|
-
return CHAIN_CONFIGS[chainId].steth;
|
|
296
|
-
};
|
|
297
293
|
var PERMIT2_ADDRESS = '0x000000000022D473030F116dDEE9F6B43aC78BA3';
|
|
298
294
|
var CONTRACT_BALANCE = /*#__PURE__*/ethers.BigNumber.from(2).pow(255);
|
|
299
295
|
var ETH_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
296
|
+
var E_ETH_ADDRESS = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee';
|
|
300
297
|
var ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
301
298
|
var SENDER_AS_RECIPIENT = '0x0000000000000000000000000000000000000001';
|
|
302
299
|
var ROUTER_AS_RECIPIENT = '0x0000000000000000000000000000000000000002';
|
|
@@ -316,17 +313,15 @@ var UniswapTrade = /*#__PURE__*/function () {
|
|
|
316
313
|
this.options = options;
|
|
317
314
|
this.tradeType = exports.RouterTradeType.UniswapTrade;
|
|
318
315
|
if (!!options.fee && !!options.flatFee) throw new Error('Only one fee option permitted');
|
|
316
|
+
if (this.inputRequiresWrap) this.payerIsUser = false;else if (this.options.useRouterBalance) this.payerIsUser = false;else this.payerIsUser = true;
|
|
319
317
|
}
|
|
320
318
|
var _proto = UniswapTrade.prototype;
|
|
321
319
|
_proto.encode = function encode(planner, _config) {
|
|
322
320
|
var _this$options$recipie;
|
|
323
|
-
var payerIsUser = !this.options.payerIsRouter;
|
|
324
321
|
// If the input currency is the native currency, we need to wrap it with the router as the recipient
|
|
325
|
-
if (this.
|
|
322
|
+
if (this.inputRequiresWrap) {
|
|
326
323
|
// TODO: optimize if only one v2 pool we can directly send this to the pool
|
|
327
324
|
planner.addCommand(exports.CommandType.WRAP_ETH, [ROUTER_AS_RECIPIENT, this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]);
|
|
328
|
-
// since WETH is now owned by the router, the router pays for inputs
|
|
329
|
-
payerIsUser = false;
|
|
330
325
|
}
|
|
331
326
|
// The overall recipient at the end of the trade, SENDER_AS_RECIPIENT uses the msg.sender
|
|
332
327
|
this.options.recipient = (_this$options$recipie = this.options.recipient) != null ? _this$options$recipie : SENDER_AS_RECIPIENT;
|
|
@@ -336,19 +331,18 @@ var UniswapTrade = /*#__PURE__*/function () {
|
|
|
336
331
|
// in that the reversion probability is lower
|
|
337
332
|
var performAggregatedSlippageCheck = this.trade.tradeType === sdkCore.TradeType.EXACT_INPUT && this.trade.routes.length > 2;
|
|
338
333
|
var outputIsNative = this.trade.outputAmount.currency.isNative;
|
|
339
|
-
var inputIsNative = this.trade.inputAmount.currency.isNative;
|
|
340
334
|
var routerMustCustody = performAggregatedSlippageCheck || outputIsNative || hasFeeOption(this.options);
|
|
341
335
|
for (var _iterator = _createForOfIteratorHelperLoose(this.trade.swaps), _step; !(_step = _iterator()).done;) {
|
|
342
336
|
var swap = _step.value;
|
|
343
337
|
switch (swap.route.protocol) {
|
|
344
338
|
case routerSdk.Protocol.V2:
|
|
345
|
-
addV2Swap(planner, swap, this.trade.tradeType, this.options, payerIsUser, routerMustCustody);
|
|
339
|
+
addV2Swap(planner, swap, this.trade.tradeType, this.options, this.payerIsUser, routerMustCustody);
|
|
346
340
|
break;
|
|
347
341
|
case routerSdk.Protocol.V3:
|
|
348
|
-
addV3Swap(planner, swap, this.trade.tradeType, this.options, payerIsUser, routerMustCustody);
|
|
342
|
+
addV3Swap(planner, swap, this.trade.tradeType, this.options, this.payerIsUser, routerMustCustody);
|
|
349
343
|
break;
|
|
350
344
|
case routerSdk.Protocol.MIXED:
|
|
351
|
-
addMixedSwap(planner, swap, this.trade.tradeType, this.options, payerIsUser, routerMustCustody);
|
|
345
|
+
addMixedSwap(planner, swap, this.trade.tradeType, this.options, this.payerIsUser, routerMustCustody);
|
|
352
346
|
break;
|
|
353
347
|
default:
|
|
354
348
|
throw new Error('UNSUPPORTED_TRADE_PROTOCOL');
|
|
@@ -388,12 +382,19 @@ var UniswapTrade = /*#__PURE__*/function () {
|
|
|
388
382
|
planner.addCommand(exports.CommandType.SWEEP, [this.trade.outputAmount.currency.wrapped.address, this.options.recipient, minimumAmountOut]);
|
|
389
383
|
}
|
|
390
384
|
}
|
|
391
|
-
if (
|
|
385
|
+
if (this.inputRequiresWrap && (this.trade.tradeType === sdkCore.TradeType.EXACT_OUTPUT || riskOfPartialFill(this.trade))) {
|
|
392
386
|
// for exactOutput swaps that take native currency as input
|
|
393
387
|
// we need to send back the change to the user
|
|
394
388
|
planner.addCommand(exports.CommandType.UNWRAP_WETH, [this.options.recipient, 0]);
|
|
395
389
|
}
|
|
390
|
+
if (this.options.safeMode) planner.addCommand(exports.CommandType.SWEEP, [ETH_ADDRESS, this.options.recipient, 0]);
|
|
396
391
|
};
|
|
392
|
+
_createClass(UniswapTrade, [{
|
|
393
|
+
key: "inputRequiresWrap",
|
|
394
|
+
get: function get() {
|
|
395
|
+
return this.trade.inputAmount.currency.isNative;
|
|
396
|
+
}
|
|
397
|
+
}]);
|
|
397
398
|
return UniswapTrade;
|
|
398
399
|
}();
|
|
399
400
|
// encode a uniswap v2 swap
|
|
@@ -623,18 +624,11 @@ var SwapRouter = /*#__PURE__*/function () {
|
|
|
623
624
|
allowRevert: false
|
|
624
625
|
});
|
|
625
626
|
currentNativeValueInRouter = currentNativeValueInRouter.add(UnwrapWETH.amount);
|
|
626
|
-
/**
|
|
627
|
-
* is (Un)WrapSTETH
|
|
628
|
-
*/
|
|
629
|
-
} else if (trade.tradeType == exports.RouterTradeType.WrapSTETH || trade.tradeType == exports.RouterTradeType.UnwrapSTETH) {
|
|
630
|
-
trade.encode(planner, {
|
|
631
|
-
allowRevert: false
|
|
632
|
-
});
|
|
633
627
|
/**
|
|
634
628
|
* else
|
|
635
629
|
*/
|
|
636
630
|
} else {
|
|
637
|
-
throw 'trade must be of instance: UniswapTrade
|
|
631
|
+
throw 'trade must be of instance: UniswapTrade or NFTTrade';
|
|
638
632
|
}
|
|
639
633
|
}
|
|
640
634
|
// TODO: matches current logic for now, but should eventually only sweep for multiple NFT trades
|
|
@@ -8198,7 +8192,7 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
|
|
|
8198
8192
|
var considerationRecipients = [];
|
|
8199
8193
|
for (var i in protocolDatas) {
|
|
8200
8194
|
var protocolData = protocolDatas[i];
|
|
8201
|
-
var _loop = function _loop(
|
|
8195
|
+
var _loop = function _loop() {
|
|
8202
8196
|
var item = protocolData.parameters.consideration[j];
|
|
8203
8197
|
if (considerationRecipients.findIndex(function (x) {
|
|
8204
8198
|
return x === item.recipient;
|
|
@@ -8221,7 +8215,7 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
|
|
|
8221
8215
|
}
|
|
8222
8216
|
};
|
|
8223
8217
|
for (var j in protocolData.parameters.consideration) {
|
|
8224
|
-
_loop(
|
|
8218
|
+
_loop();
|
|
8225
8219
|
}
|
|
8226
8220
|
}
|
|
8227
8221
|
return considerationFulfillments;
|
|
@@ -10587,45 +10581,122 @@ var UnwrapWETH = /*#__PURE__*/function () {
|
|
|
10587
10581
|
return UnwrapWETH;
|
|
10588
10582
|
}();
|
|
10589
10583
|
|
|
10590
|
-
|
|
10591
|
-
|
|
10592
|
-
|
|
10593
|
-
|
|
10594
|
-
|
|
10595
|
-
|
|
10596
|
-
|
|
10597
|
-
|
|
10598
|
-
|
|
10599
|
-
|
|
10600
|
-
|
|
10601
|
-
|
|
10602
|
-
|
|
10603
|
-
|
|
10604
|
-
|
|
10605
|
-
|
|
10606
|
-
|
|
10607
|
-
|
|
10608
|
-
|
|
10584
|
+
(function (PoolType) {
|
|
10585
|
+
PoolType["V2Pool"] = "v2-pool";
|
|
10586
|
+
PoolType["V3Pool"] = "v3-pool";
|
|
10587
|
+
})(exports.PoolType || (exports.PoolType = {}));
|
|
10588
|
+
var isNativeCurrency = function isNativeCurrency(address) {
|
|
10589
|
+
return address.toLowerCase() === ETH_ADDRESS.toLowerCase() || address.toLowerCase() === E_ETH_ADDRESS.toLowerCase();
|
|
10590
|
+
};
|
|
10591
|
+
// Helper class to convert routing-specific quote entities to RouterTrade entities
|
|
10592
|
+
// the returned RouterTrade can then be used to build the UniswapTrade entity in this package
|
|
10593
|
+
var RouterTradeAdapter = /*#__PURE__*/function () {
|
|
10594
|
+
function RouterTradeAdapter() {}
|
|
10595
|
+
// Generate a RouterTrade using fields from a classic quote response
|
|
10596
|
+
RouterTradeAdapter.fromClassicQuote = function fromClassicQuote(quote) {
|
|
10597
|
+
var route = quote.route,
|
|
10598
|
+
tokenIn = quote.tokenIn,
|
|
10599
|
+
tokenOut = quote.tokenOut;
|
|
10600
|
+
if (!route) throw new Error('Expected route to be present');
|
|
10601
|
+
if (!route.length) throw new Error('Expected there to be at least one route');
|
|
10602
|
+
if (route.some(function (r) {
|
|
10603
|
+
return !r.length;
|
|
10604
|
+
})) throw new Error('Expected all routes to have at least one pool');
|
|
10605
|
+
var firstRoute = route[0];
|
|
10606
|
+
var tokenInData = firstRoute[0].tokenIn;
|
|
10607
|
+
var tokenOutData = firstRoute[firstRoute.length - 1].tokenOut;
|
|
10608
|
+
if (!tokenInData || !tokenOutData) throw new Error('Expected both tokenIn and tokenOut to be present');
|
|
10609
|
+
if (tokenInData.chainId !== tokenOutData.chainId) throw new Error('Expected tokenIn and tokenOut to be have same chainId');
|
|
10610
|
+
var parsedCurrencyIn = RouterTradeAdapter.toCurrency(isNativeCurrency(tokenIn), tokenInData);
|
|
10611
|
+
var parsedCurrencyOut = RouterTradeAdapter.toCurrency(isNativeCurrency(tokenOut), tokenOutData);
|
|
10612
|
+
var typedRoutes = route.map(function (subRoute) {
|
|
10613
|
+
var rawAmountIn = subRoute[0].amountIn;
|
|
10614
|
+
var rawAmountOut = subRoute[subRoute.length - 1].amountOut;
|
|
10615
|
+
if (!rawAmountIn || !rawAmountOut) {
|
|
10616
|
+
throw new Error('Expected both raw amountIn and raw amountOut to be present');
|
|
10609
10617
|
}
|
|
10618
|
+
var inputAmount = sdkCore.CurrencyAmount.fromRawAmount(parsedCurrencyIn, rawAmountIn);
|
|
10619
|
+
var outputAmount = sdkCore.CurrencyAmount.fromRawAmount(parsedCurrencyOut, rawAmountOut);
|
|
10620
|
+
var isOnlyV2 = RouterTradeAdapter.isVersionedRoute(exports.PoolType.V2Pool, subRoute);
|
|
10621
|
+
var isOnlyV3 = RouterTradeAdapter.isVersionedRoute(exports.PoolType.V3Pool, subRoute);
|
|
10622
|
+
return {
|
|
10623
|
+
routev3: isOnlyV3 ? new v3Sdk.Route(subRoute.map(RouterTradeAdapter.toPool), parsedCurrencyIn, parsedCurrencyOut) : null,
|
|
10624
|
+
routev2: isOnlyV2 ? new v2Sdk.Route(subRoute.map(RouterTradeAdapter.toPair), parsedCurrencyIn, parsedCurrencyOut) : null,
|
|
10625
|
+
mixedRoute: !isOnlyV3 && !isOnlyV2 ? new routerSdk.MixedRouteSDK(subRoute.map(RouterTradeAdapter.toPoolOrPair), parsedCurrencyIn, parsedCurrencyOut) : null,
|
|
10626
|
+
inputAmount: inputAmount,
|
|
10627
|
+
outputAmount: outputAmount
|
|
10628
|
+
};
|
|
10629
|
+
});
|
|
10630
|
+
return new routerSdk.Trade({
|
|
10631
|
+
v2Routes: typedRoutes.filter(function (route) {
|
|
10632
|
+
return route.routev2;
|
|
10633
|
+
}).map(function (route) {
|
|
10634
|
+
return {
|
|
10635
|
+
routev2: route.routev2,
|
|
10636
|
+
inputAmount: route.inputAmount,
|
|
10637
|
+
outputAmount: route.outputAmount
|
|
10638
|
+
};
|
|
10639
|
+
}),
|
|
10640
|
+
v3Routes: typedRoutes.filter(function (route) {
|
|
10641
|
+
return route.routev3;
|
|
10642
|
+
}).map(function (route) {
|
|
10643
|
+
return {
|
|
10644
|
+
routev3: route.routev3,
|
|
10645
|
+
inputAmount: route.inputAmount,
|
|
10646
|
+
outputAmount: route.outputAmount
|
|
10647
|
+
};
|
|
10648
|
+
}),
|
|
10649
|
+
mixedRoutes: typedRoutes.filter(function (route) {
|
|
10650
|
+
return route.mixedRoute;
|
|
10651
|
+
}).map(function (route) {
|
|
10652
|
+
return {
|
|
10653
|
+
mixedRoute: route.mixedRoute,
|
|
10654
|
+
inputAmount: route.inputAmount,
|
|
10655
|
+
outputAmount: route.outputAmount
|
|
10656
|
+
};
|
|
10657
|
+
}),
|
|
10658
|
+
tradeType: quote.tradeType
|
|
10610
10659
|
});
|
|
10611
|
-
planner.addCommand(exports.CommandType.WRAP_STETH, [ROUTER_AS_RECIPIENT, this.wrapAmount]);
|
|
10612
10660
|
};
|
|
10613
|
-
|
|
10614
|
-
|
|
10615
|
-
|
|
10616
|
-
|
|
10617
|
-
|
|
10618
|
-
this.tradeType = exports.RouterTradeType.UnwrapSTETH;
|
|
10619
|
-
this.recipient = recipient;
|
|
10620
|
-
this.amountMinimum = amountMinimum;
|
|
10621
|
-
!(STETH_ADDRESS(chainId) != NOT_SUPPORTED_ON_CHAIN) ? invariant(false, "STETH not supported on chain " + chainId) : void 0;
|
|
10622
|
-
}
|
|
10623
|
-
var _proto = UnwrapSTETH.prototype;
|
|
10624
|
-
_proto.encode = function encode(planner, _) {
|
|
10625
|
-
planner.addCommand(exports.CommandType.UNWRAP_STETH, [this.recipient, this.amountMinimum]);
|
|
10661
|
+
RouterTradeAdapter.toCurrency = function toCurrency(isNative, token) {
|
|
10662
|
+
if (isNative) {
|
|
10663
|
+
return sdkCore.Ether.onChain(token.chainId);
|
|
10664
|
+
}
|
|
10665
|
+
return this.toToken(token);
|
|
10626
10666
|
};
|
|
10627
|
-
|
|
10667
|
+
RouterTradeAdapter.toToken = function toToken(token) {
|
|
10668
|
+
var chainId = token.chainId,
|
|
10669
|
+
address = token.address,
|
|
10670
|
+
decimals = token.decimals,
|
|
10671
|
+
symbol = token.symbol,
|
|
10672
|
+
buyFeeBps = token.buyFeeBps,
|
|
10673
|
+
sellFeeBps = token.sellFeeBps;
|
|
10674
|
+
return new sdkCore.Token(chainId, address, parseInt(decimals.toString()), symbol, /* name */undefined, false, buyFeeBps ? ethers.BigNumber.from(buyFeeBps) : undefined, sellFeeBps ? ethers.BigNumber.from(sellFeeBps) : undefined);
|
|
10675
|
+
};
|
|
10676
|
+
RouterTradeAdapter.toPool = function toPool(_ref) {
|
|
10677
|
+
var fee = _ref.fee,
|
|
10678
|
+
sqrtRatioX96 = _ref.sqrtRatioX96,
|
|
10679
|
+
liquidity = _ref.liquidity,
|
|
10680
|
+
tickCurrent = _ref.tickCurrent,
|
|
10681
|
+
tokenIn = _ref.tokenIn,
|
|
10682
|
+
tokenOut = _ref.tokenOut;
|
|
10683
|
+
return new v3Sdk.Pool(RouterTradeAdapter.toToken(tokenIn), RouterTradeAdapter.toToken(tokenOut), parseInt(fee), sqrtRatioX96, liquidity, parseInt(tickCurrent));
|
|
10684
|
+
};
|
|
10685
|
+
RouterTradeAdapter.isVersionedRoute = function isVersionedRoute(type, route) {
|
|
10686
|
+
return route.every(function (pool) {
|
|
10687
|
+
return pool.type === type;
|
|
10688
|
+
});
|
|
10689
|
+
};
|
|
10690
|
+
return RouterTradeAdapter;
|
|
10628
10691
|
}();
|
|
10692
|
+
RouterTradeAdapter.toPoolOrPair = function (pool) {
|
|
10693
|
+
return pool.type === exports.PoolType.V3Pool ? RouterTradeAdapter.toPool(pool) : RouterTradeAdapter.toPair(pool);
|
|
10694
|
+
};
|
|
10695
|
+
RouterTradeAdapter.toPair = function (_ref2) {
|
|
10696
|
+
var reserve0 = _ref2.reserve0,
|
|
10697
|
+
reserve1 = _ref2.reserve1;
|
|
10698
|
+
return new v2Sdk.Pair(sdkCore.CurrencyAmount.fromRawAmount(RouterTradeAdapter.toToken(reserve0.token), reserve0.quotient), sdkCore.CurrencyAmount.fromRawAmount(RouterTradeAdapter.toToken(reserve1.token), reserve1.quotient));
|
|
10699
|
+
};
|
|
10629
10700
|
|
|
10630
10701
|
exports.CryptopunkTrade = CryptopunkTrade;
|
|
10631
10702
|
exports.FoundationTrade = FoundationTrade;
|
|
@@ -10636,15 +10707,15 @@ exports.NFTXTrade = NFTXTrade;
|
|
|
10636
10707
|
exports.PERMIT2_ADDRESS = PERMIT2_ADDRESS;
|
|
10637
10708
|
exports.ROUTER_AS_RECIPIENT = ROUTER_AS_RECIPIENT;
|
|
10638
10709
|
exports.RoutePlanner = RoutePlanner;
|
|
10710
|
+
exports.RouterTradeAdapter = RouterTradeAdapter;
|
|
10639
10711
|
exports.SeaportTrade = SeaportTrade;
|
|
10640
10712
|
exports.SudoswapTrade = SudoswapTrade;
|
|
10641
10713
|
exports.SwapRouter = SwapRouter;
|
|
10642
10714
|
exports.UNIVERSAL_ROUTER_ADDRESS = UNIVERSAL_ROUTER_ADDRESS;
|
|
10643
10715
|
exports.UNIVERSAL_ROUTER_CREATION_BLOCK = UNIVERSAL_ROUTER_CREATION_BLOCK;
|
|
10644
10716
|
exports.UniswapTrade = UniswapTrade;
|
|
10645
|
-
exports.UnwrapSTETH = UnwrapSTETH;
|
|
10646
10717
|
exports.UnwrapWETH = UnwrapWETH;
|
|
10647
10718
|
exports.WETH_ADDRESS = WETH_ADDRESS;
|
|
10648
|
-
exports.WrapSTETH = WrapSTETH;
|
|
10649
10719
|
exports.X2Y2Trade = X2Y2Trade;
|
|
10720
|
+
exports.isNativeCurrency = isNativeCurrency;
|
|
10650
10721
|
//# sourceMappingURL=universal-router-sdk.cjs.development.js.map
|