@uniswap/universal-router-sdk 1.3.3 → 1.3.4
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/dist/entities/Command.d.ts +13 -7
- package/dist/entities/NFTTrade.d.ts +42 -49
- package/dist/entities/index.d.ts +3 -2
- package/dist/entities/protocols/cryptopunk.d.ts +16 -16
- package/dist/entities/protocols/foundation.d.ts +19 -19
- package/dist/entities/protocols/index.d.ts +10 -9
- package/dist/entities/protocols/looksRare.d.ts +44 -44
- package/dist/entities/protocols/nft20.d.ts +21 -21
- package/dist/entities/protocols/nftx.d.ts +20 -20
- package/dist/entities/protocols/seaport.d.ts +57 -57
- package/dist/entities/protocols/sudoswap.d.ts +27 -27
- package/dist/entities/protocols/uniswap.d.ts +15 -14
- package/dist/entities/protocols/unwrapWETH.d.ts +13 -0
- package/dist/entities/protocols/x2y2.d.ts +28 -28
- package/dist/index.d.ts +3 -3
- package/dist/swapRouter.d.ts +38 -35
- package/dist/test/forge/writeInterop.d.ts +1 -0
- package/dist/test/orders/looksRare.d.ts +12 -0
- package/dist/test/orders/seaport.d.ts +4 -0
- package/dist/test/orders/x2y2.d.ts +6 -0
- package/dist/test/utils/addresses.d.ts +2 -0
- package/dist/test/utils/hexToDecimalString.d.ts +2 -0
- package/dist/test/utils/permit2.d.ts +7 -0
- package/dist/test/utils/uniswapData.d.ts +24 -0
- package/dist/universal-router-sdk.cjs.development.js +158 -19
- 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 +158 -21
- package/dist/universal-router-sdk.esm.js.map +1 -1
- package/dist/utils/constants.d.ts +8 -7
- package/dist/utils/expandTo18Decimals.d.ts +4 -4
- package/dist/utils/getNativeCurrencyValue.d.ts +2 -2
- package/dist/utils/permit2.d.ts +6 -6
- package/dist/utils/routerCommands.d.ts +43 -43
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import invariant from 'tiny-invariant';
|
|
2
2
|
import { abi as abi$7 } from '@uniswap/universal-router/artifacts/contracts/UniversalRouter.sol/UniversalRouter.json';
|
|
3
3
|
import { Interface } from '@ethersproject/abi';
|
|
4
|
-
import { BigNumber } from 'ethers';
|
|
4
|
+
import { BigNumber, ethers } from 'ethers';
|
|
5
5
|
import JSBI from 'jsbi';
|
|
6
6
|
import { defaultAbiCoder } from 'ethers/lib/utils';
|
|
7
7
|
import { Trade, Pair } from '@uniswap/v2-sdk';
|
|
@@ -53,6 +53,13 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
|
|
|
53
53
|
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
+
var RouterTradeType;
|
|
57
|
+
(function (RouterTradeType) {
|
|
58
|
+
RouterTradeType["UniswapTrade"] = "UniswapTrade";
|
|
59
|
+
RouterTradeType["NFTTrade"] = "NFTTrade";
|
|
60
|
+
RouterTradeType["UnwrapWETH"] = "UnwrapWETH";
|
|
61
|
+
})(RouterTradeType || (RouterTradeType = {}));
|
|
62
|
+
|
|
56
63
|
var _ABI_DEFINITION;
|
|
57
64
|
/**
|
|
58
65
|
* CommandTypes
|
|
@@ -126,7 +133,7 @@ function createCommand(type, parameters) {
|
|
|
126
133
|
var UNIVERSAL_ROUTER_ADDRESS = function UNIVERSAL_ROUTER_ADDRESS(chainId) {
|
|
127
134
|
switch (chainId) {
|
|
128
135
|
case 1:
|
|
129
|
-
//mainnet
|
|
136
|
+
// mainnet
|
|
130
137
|
return '0xEf1c6E67703c7BD7107eed8303Fbe6EC2554BF6B';
|
|
131
138
|
case 5:
|
|
132
139
|
// goerli
|
|
@@ -153,11 +160,38 @@ var UNIVERSAL_ROUTER_ADDRESS = function UNIVERSAL_ROUTER_ADDRESS(chainId) {
|
|
|
153
160
|
throw new Error("Universal Router not deployed on chain " + chainId);
|
|
154
161
|
}
|
|
155
162
|
};
|
|
163
|
+
var WETH_ADDRESS = function WETH_ADDRESS(chainId) {
|
|
164
|
+
switch (chainId) {
|
|
165
|
+
case 1:
|
|
166
|
+
//mainnet
|
|
167
|
+
return '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2';
|
|
168
|
+
case 5:
|
|
169
|
+
// goerli
|
|
170
|
+
return '0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6';
|
|
171
|
+
case 137:
|
|
172
|
+
// polygon
|
|
173
|
+
return '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270';
|
|
174
|
+
case 10:
|
|
175
|
+
// optimism
|
|
176
|
+
return '0x4200000000000000000000000000000000000006';
|
|
177
|
+
case 42161:
|
|
178
|
+
// arbitrum
|
|
179
|
+
return '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1';
|
|
180
|
+
case 420:
|
|
181
|
+
// optimism goerli
|
|
182
|
+
return '0x4200000000000000000000000000000000000006';
|
|
183
|
+
case 421613:
|
|
184
|
+
// arbitrum goerli
|
|
185
|
+
return '0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3';
|
|
186
|
+
default:
|
|
187
|
+
throw new Error("WETH9 or UniversalRouter not deployed on chain " + chainId);
|
|
188
|
+
}
|
|
189
|
+
};
|
|
156
190
|
var PERMIT2_ADDRESS = '0x000000000022D473030F116dDEE9F6B43aC78BA3';
|
|
157
191
|
var CONTRACT_BALANCE = /*#__PURE__*/BigNumber.from(2).pow(255);
|
|
158
192
|
var ETH_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
159
|
-
var
|
|
160
|
-
var
|
|
193
|
+
var SENDER_AS_RECIPIENT = '0x0000000000000000000000000000000000000001';
|
|
194
|
+
var ROUTER_AS_RECIPIENT = '0x0000000000000000000000000000000000000002';
|
|
161
195
|
|
|
162
196
|
var REFUND_ETH_PRICE_IMPACT_THRESHOLD = /*#__PURE__*/new Percent( /*#__PURE__*/JSBI.BigInt(50), /*#__PURE__*/JSBI.BigInt(100));
|
|
163
197
|
// Wrapper for uniswap router-sdk trade entity to encode swaps for Universal Router
|
|
@@ -166,6 +200,7 @@ var UniswapTrade = /*#__PURE__*/function () {
|
|
|
166
200
|
function UniswapTrade(trade, options) {
|
|
167
201
|
this.trade = trade;
|
|
168
202
|
this.options = options;
|
|
203
|
+
this.tradeType = RouterTradeType.UniswapTrade;
|
|
169
204
|
}
|
|
170
205
|
var _proto = UniswapTrade.prototype;
|
|
171
206
|
_proto.encode = function encode(planner, _config) {
|
|
@@ -173,11 +208,11 @@ var UniswapTrade = /*#__PURE__*/function () {
|
|
|
173
208
|
var payerIsUser = true;
|
|
174
209
|
if (this.trade.inputAmount.currency.isNative) {
|
|
175
210
|
// TODO: optimize if only one v2 pool we can directly send this to the pool
|
|
176
|
-
planner.addCommand(CommandType.WRAP_ETH, [
|
|
211
|
+
planner.addCommand(CommandType.WRAP_ETH, [ROUTER_AS_RECIPIENT, this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]);
|
|
177
212
|
// since WETH is now owned by the router, the router pays for inputs
|
|
178
213
|
payerIsUser = false;
|
|
179
214
|
}
|
|
180
|
-
this.options.recipient = (_this$options$recipie = this.options.recipient) != null ? _this$options$recipie :
|
|
215
|
+
this.options.recipient = (_this$options$recipie = this.options.recipient) != null ? _this$options$recipie : SENDER_AS_RECIPIENT;
|
|
181
216
|
// flag for whether we want to perform slippage check on aggregate output of multiple routes
|
|
182
217
|
// 1. when there are >2 exact input trades. this is only a heuristic,
|
|
183
218
|
// as it's still more gas-expensive even in this case, but has benefits
|
|
@@ -226,11 +261,11 @@ function addV2Swap(planner, _ref, tradeType, options, payerIsUser, routerMustCus
|
|
|
226
261
|
if (tradeType == TradeType.EXACT_INPUT) {
|
|
227
262
|
planner.addCommand(CommandType.V2_SWAP_EXACT_IN, [
|
|
228
263
|
// if native, we have to unwrap so keep in the router for now
|
|
229
|
-
routerMustCustody ?
|
|
264
|
+
routerMustCustody ? ROUTER_AS_RECIPIENT : options.recipient, trade.maximumAmountIn(options.slippageTolerance).quotient.toString(), trade.minimumAmountOut(options.slippageTolerance).quotient.toString(), route.path.map(function (pool) {
|
|
230
265
|
return pool.address;
|
|
231
266
|
}), payerIsUser]);
|
|
232
267
|
} else if (tradeType == TradeType.EXACT_OUTPUT) {
|
|
233
|
-
planner.addCommand(CommandType.V2_SWAP_EXACT_OUT, [routerMustCustody ?
|
|
268
|
+
planner.addCommand(CommandType.V2_SWAP_EXACT_OUT, [routerMustCustody ? ROUTER_AS_RECIPIENT : options.recipient, trade.minimumAmountOut(options.slippageTolerance).quotient.toString(), trade.maximumAmountIn(options.slippageTolerance).quotient.toString(), route.path.map(function (pool) {
|
|
234
269
|
return pool.address;
|
|
235
270
|
}), payerIsUser]);
|
|
236
271
|
}
|
|
@@ -248,9 +283,9 @@ function addV3Swap(planner, _ref2, tradeType, options, payerIsUser, routerMustCu
|
|
|
248
283
|
});
|
|
249
284
|
var path = encodeRouteToPath(route, trade.tradeType === TradeType.EXACT_OUTPUT);
|
|
250
285
|
if (tradeType == TradeType.EXACT_INPUT) {
|
|
251
|
-
planner.addCommand(CommandType.V3_SWAP_EXACT_IN, [routerMustCustody ?
|
|
286
|
+
planner.addCommand(CommandType.V3_SWAP_EXACT_IN, [routerMustCustody ? ROUTER_AS_RECIPIENT : options.recipient, trade.maximumAmountIn(options.slippageTolerance).quotient.toString(), trade.minimumAmountOut(options.slippageTolerance).quotient.toString(), path, payerIsUser]);
|
|
252
287
|
} else if (tradeType == TradeType.EXACT_OUTPUT) {
|
|
253
|
-
planner.addCommand(CommandType.V3_SWAP_EXACT_OUT, [routerMustCustody ?
|
|
288
|
+
planner.addCommand(CommandType.V3_SWAP_EXACT_OUT, [routerMustCustody ? ROUTER_AS_RECIPIENT : options.recipient, trade.minimumAmountOut(options.slippageTolerance).quotient.toString(), trade.maximumAmountIn(options.slippageTolerance).quotient.toString(), path, payerIsUser]);
|
|
254
289
|
}
|
|
255
290
|
}
|
|
256
291
|
// encode a mixed route swap, i.e. including both v2 and v3 pools
|
|
@@ -258,7 +293,7 @@ function addMixedSwap(planner, swap, tradeType, options, payerIsUser, routerMust
|
|
|
258
293
|
var route = swap.route,
|
|
259
294
|
inputAmount = swap.inputAmount,
|
|
260
295
|
outputAmount = swap.outputAmount;
|
|
261
|
-
var tradeRecipient = routerMustCustody ?
|
|
296
|
+
var tradeRecipient = routerMustCustody ? ROUTER_AS_RECIPIENT : options.recipient;
|
|
262
297
|
// single hop, so it can be reduced to plain v2 or v3 swap logic
|
|
263
298
|
if (route.pools.length === 1) {
|
|
264
299
|
if (route.pools[0] instanceof Pool) {
|
|
@@ -305,7 +340,7 @@ function addMixedSwap(planner, swap, tradeType, options, payerIsUser, routerMust
|
|
|
305
340
|
// note: because of the partitioning function we can be sure that the next section is v2
|
|
306
341
|
isLastSectionInRoute(i) ? tradeRecipient : sections[i + 1][0].liquidityToken.address, i == 0 ? amountIn : CONTRACT_BALANCE, !isLastSectionInRoute(i) ? 0 : amountOut, path, payerIsUser && i === 0]);
|
|
307
342
|
} else {
|
|
308
|
-
planner.addCommand(CommandType.V2_SWAP_EXACT_IN, [isLastSectionInRoute(i) ? tradeRecipient :
|
|
343
|
+
planner.addCommand(CommandType.V2_SWAP_EXACT_IN, [isLastSectionInRoute(i) ? tradeRecipient : ROUTER_AS_RECIPIENT, i === 0 ? amountIn : CONTRACT_BALANCE, !isLastSectionInRoute(i) ? 0 : amountOut, newRoute.path.map(function (pool) {
|
|
309
344
|
return pool.address;
|
|
310
345
|
}), payerIsUser && i === 0]);
|
|
311
346
|
}
|
|
@@ -317,37 +352,117 @@ function riskOfPartialFill(trade) {
|
|
|
317
352
|
}
|
|
318
353
|
|
|
319
354
|
function encodePermit(planner, permit) {
|
|
320
|
-
|
|
355
|
+
// sanitizes signature to cover edge cases like malformed EIP-2098 sigs and v used as recovery id
|
|
356
|
+
var sanitizedSignature = ethers.utils.joinSignature(ethers.utils.splitSignature(permit.signature));
|
|
357
|
+
planner.addCommand(CommandType.PERMIT, [permit, sanitizedSignature]);
|
|
321
358
|
}
|
|
322
359
|
|
|
323
360
|
var SwapRouter = /*#__PURE__*/function () {
|
|
324
361
|
function SwapRouter() {}
|
|
362
|
+
SwapRouter.swapCallParameters = function swapCallParameters(trades, config) {
|
|
363
|
+
if (config === void 0) {
|
|
364
|
+
config = {};
|
|
365
|
+
}
|
|
366
|
+
if (!Array.isArray(trades)) trades = [trades];
|
|
367
|
+
var nftTrades = trades.filter(function (trade, _, _ref) {
|
|
368
|
+
return trade.hasOwnProperty('market');
|
|
369
|
+
});
|
|
370
|
+
var allowRevert = nftTrades.length == 1 && nftTrades[0].orders.length == 1 ? false : true;
|
|
371
|
+
var planner = new RoutePlanner();
|
|
372
|
+
// track value flow to require the right amount of native value
|
|
373
|
+
var currentNativeValueInRouter = BigNumber.from(0);
|
|
374
|
+
var transactionValue = BigNumber.from(0);
|
|
375
|
+
for (var _iterator = _createForOfIteratorHelperLoose(trades), _step; !(_step = _iterator()).done;) {
|
|
376
|
+
var trade = _step.value;
|
|
377
|
+
/**
|
|
378
|
+
* is NFTTrade
|
|
379
|
+
*/
|
|
380
|
+
if (trade.tradeType == RouterTradeType.NFTTrade) {
|
|
381
|
+
var nftTrade = trade;
|
|
382
|
+
nftTrade.encode(planner, {
|
|
383
|
+
allowRevert: allowRevert
|
|
384
|
+
});
|
|
385
|
+
var tradePrice = nftTrade.getTotalPrice();
|
|
386
|
+
// send enough native value to contract for NFT purchase
|
|
387
|
+
if (currentNativeValueInRouter.lt(tradePrice)) {
|
|
388
|
+
transactionValue = transactionValue.add(tradePrice.sub(currentNativeValueInRouter));
|
|
389
|
+
currentNativeValueInRouter = BigNumber.from(0);
|
|
390
|
+
} else {
|
|
391
|
+
currentNativeValueInRouter = currentNativeValueInRouter.sub(tradePrice);
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* is Uniswap Trade
|
|
395
|
+
*/
|
|
396
|
+
} else if (trade.tradeType == RouterTradeType.UniswapTrade) {
|
|
397
|
+
var uniswapTrade = trade;
|
|
398
|
+
var inputIsNative = uniswapTrade.trade.inputAmount.currency.isNative;
|
|
399
|
+
var outputIsNative = uniswapTrade.trade.outputAmount.currency.isNative;
|
|
400
|
+
var swapOptions = uniswapTrade.options;
|
|
401
|
+
!!(inputIsNative && !!swapOptions.inputTokenPermit) ? process.env.NODE_ENV !== "production" ? invariant(false, 'NATIVE_INPUT_PERMIT') : invariant(false) : void 0;
|
|
402
|
+
if (!!swapOptions.inputTokenPermit) {
|
|
403
|
+
encodePermit(planner, swapOptions.inputTokenPermit);
|
|
404
|
+
}
|
|
405
|
+
if (inputIsNative) {
|
|
406
|
+
transactionValue = transactionValue.add(BigNumber.from(uniswapTrade.trade.maximumAmountIn(swapOptions.slippageTolerance).quotient.toString()));
|
|
407
|
+
}
|
|
408
|
+
// track amount of native currency in the router
|
|
409
|
+
if (outputIsNative && swapOptions.recipient == ROUTER_AS_RECIPIENT) {
|
|
410
|
+
currentNativeValueInRouter = currentNativeValueInRouter.add(BigNumber.from(uniswapTrade.trade.minimumAmountOut(swapOptions.slippageTolerance).quotient.toString()));
|
|
411
|
+
}
|
|
412
|
+
uniswapTrade.encode(planner, {
|
|
413
|
+
allowRevert: false
|
|
414
|
+
});
|
|
415
|
+
/**
|
|
416
|
+
* is UnwrapWETH
|
|
417
|
+
*/
|
|
418
|
+
} else if (trade.tradeType == RouterTradeType.UnwrapWETH) {
|
|
419
|
+
var UnwrapWETH = trade;
|
|
420
|
+
trade.encode(planner, {
|
|
421
|
+
allowRevert: false
|
|
422
|
+
});
|
|
423
|
+
currentNativeValueInRouter = currentNativeValueInRouter.add(UnwrapWETH.amount);
|
|
424
|
+
/**
|
|
425
|
+
* else
|
|
426
|
+
*/
|
|
427
|
+
} else {
|
|
428
|
+
throw 'trade must be of instance: UniswapTrade or NFTTrade';
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
// TODO: matches current logic for now, but should eventually only sweep for multiple NFT trades
|
|
432
|
+
// or NFT trades with potential slippage (i.e. sudo)
|
|
433
|
+
if (nftTrades.length > 0) planner.addCommand(CommandType.SWEEP, [ETH_ADDRESS, SENDER_AS_RECIPIENT, 0]);
|
|
434
|
+
return SwapRouter.encodePlan(planner, transactionValue, config);
|
|
435
|
+
}
|
|
325
436
|
/**
|
|
437
|
+
* @deprecated in favor of swapCallParameters. Update before next major version 2.0.0
|
|
326
438
|
* Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given swap.
|
|
327
439
|
* @param trades to produce call parameters for
|
|
328
|
-
|
|
440
|
+
*/;
|
|
329
441
|
SwapRouter.swapNFTCallParameters = function swapNFTCallParameters(trades, config) {
|
|
330
|
-
|
|
442
|
+
if (config === void 0) {
|
|
443
|
+
config = {};
|
|
444
|
+
}
|
|
331
445
|
var planner = new RoutePlanner();
|
|
332
446
|
var totalPrice = BigNumber.from(0);
|
|
333
447
|
var allowRevert = trades.length == 1 && trades[0].orders.length == 1 ? false : true;
|
|
334
|
-
for (var
|
|
335
|
-
var trade =
|
|
448
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(trades), _step2; !(_step2 = _iterator2()).done;) {
|
|
449
|
+
var trade = _step2.value;
|
|
336
450
|
trade.encode(planner, {
|
|
337
451
|
allowRevert: allowRevert
|
|
338
452
|
});
|
|
339
453
|
totalPrice = totalPrice.add(trade.getTotalPrice());
|
|
340
454
|
}
|
|
341
|
-
planner.addCommand(CommandType.SWEEP, [ETH_ADDRESS,
|
|
455
|
+
planner.addCommand(CommandType.SWEEP, [ETH_ADDRESS, SENDER_AS_RECIPIENT, 0]);
|
|
342
456
|
return SwapRouter.encodePlan(planner, totalPrice, config);
|
|
343
457
|
}
|
|
344
458
|
/**
|
|
459
|
+
* @deprecated in favor of swapCallParameters. Update before next major version 2.0.0
|
|
345
460
|
* Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given trade.
|
|
346
461
|
* @param trades to produce call parameters for
|
|
347
462
|
* @param options options for the call parameters
|
|
348
463
|
*/;
|
|
349
464
|
SwapRouter.swapERC20CallParameters = function swapERC20CallParameters(trades, options) {
|
|
350
|
-
// TODO: use permit if signature included in
|
|
465
|
+
// TODO: use permit if signature included in swapOptions
|
|
351
466
|
var planner = new RoutePlanner();
|
|
352
467
|
var trade = new UniswapTrade(trades, options);
|
|
353
468
|
var inputCurrency = trade.trade.inputAmount.currency;
|
|
@@ -380,7 +495,7 @@ var SwapRouter = /*#__PURE__*/function () {
|
|
|
380
495
|
var calldata = SwapRouter.INTERFACE.encodeFunctionData(functionSignature, parameters);
|
|
381
496
|
return {
|
|
382
497
|
calldata: calldata,
|
|
383
|
-
value: nativeCurrencyValue.
|
|
498
|
+
value: nativeCurrencyValue.toHexString()
|
|
384
499
|
};
|
|
385
500
|
};
|
|
386
501
|
return SwapRouter;
|
|
@@ -388,6 +503,7 @@ var SwapRouter = /*#__PURE__*/function () {
|
|
|
388
503
|
SwapRouter.INTERFACE = /*#__PURE__*/new Interface(abi$7);
|
|
389
504
|
|
|
390
505
|
var NFTTrade = function NFTTrade(market, orders) {
|
|
506
|
+
this.tradeType = RouterTradeType.NFTTrade;
|
|
391
507
|
!(orders.length > 0) ? process.env.NODE_ENV !== "production" ? invariant(false, 'no buy Items') : invariant(false) : void 0;
|
|
392
508
|
this.market = market;
|
|
393
509
|
this.orders = orders;
|
|
@@ -9276,5 +9392,26 @@ var X2Y2Trade = /*#__PURE__*/function (_NFTTrade) {
|
|
|
9276
9392
|
}(NFTTrade);
|
|
9277
9393
|
X2Y2Trade.INTERFACE = /*#__PURE__*/new Interface(abi$6);
|
|
9278
9394
|
|
|
9279
|
-
|
|
9395
|
+
var UnwrapWETH = /*#__PURE__*/function () {
|
|
9396
|
+
function UnwrapWETH(amount, chainId, permit2) {
|
|
9397
|
+
this.tradeType = RouterTradeType.UnwrapWETH;
|
|
9398
|
+
this.wethAddress = WETH_ADDRESS(chainId);
|
|
9399
|
+
this.routerAddress = UNIVERSAL_ROUTER_ADDRESS(chainId);
|
|
9400
|
+
this.amount = amount;
|
|
9401
|
+
if (!!permit2) {
|
|
9402
|
+
!(permit2.details.token === this.wethAddress) ? process.env.NODE_ENV !== "production" ? invariant(false, "must be permitting WETH address: " + this.wethAddress) : invariant(false) : void 0;
|
|
9403
|
+
!(permit2.details.amount >= amount) ? process.env.NODE_ENV !== "production" ? invariant(false, "Did not permit enough WETH for unwrapWETH transaction") : invariant(false) : void 0;
|
|
9404
|
+
this.permit2Data = permit2;
|
|
9405
|
+
}
|
|
9406
|
+
}
|
|
9407
|
+
var _proto = UnwrapWETH.prototype;
|
|
9408
|
+
_proto.encode = function encode(planner, _) {
|
|
9409
|
+
if (!!this.permit2Data) encodePermit(planner, this.permit2Data);
|
|
9410
|
+
planner.addCommand(CommandType.PERMIT2_TRANSFER_FROM, [this.wethAddress, this.routerAddress, this.amount]);
|
|
9411
|
+
planner.addCommand(CommandType.UNWRAP_WETH, [ROUTER_AS_RECIPIENT, this.amount]);
|
|
9412
|
+
};
|
|
9413
|
+
return UnwrapWETH;
|
|
9414
|
+
}();
|
|
9415
|
+
|
|
9416
|
+
export { CryptopunkTrade, FoundationTrade, LooksRareTrade, Market, NFT20Trade, NFTTrade, NFTXTrade, PERMIT2_ADDRESS, ROUTER_AS_RECIPIENT, RouterTradeType, SeaportTrade, SudoswapTrade, SwapRouter, TokenType, UNIVERSAL_ROUTER_ADDRESS, UniswapTrade, UnwrapWETH, WETH_ADDRESS, X2Y2Trade };
|
|
9280
9417
|
//# sourceMappingURL=universal-router-sdk.esm.js.map
|