@uniswap/universal-router-sdk 1.5.0-beta.2 → 1.5.0-beta.3
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/protocols/looksRareV2.d.ts +2 -2
- package/dist/entities/protocols/seaport.d.ts +1 -0
- package/dist/swapRouter.d.ts +1 -0
- package/dist/test/orders/seaportV1_4.d.ts +1 -0
- package/dist/test/orders/{seaport.d.ts → seaportV1_5.d.ts} +1 -2
- package/dist/universal-router-sdk.cjs.development.js +106 -67
- 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 +108 -69
- package/dist/universal-router-sdk.esm.js.map +1 -1
- package/package.json +2 -2
|
@@ -74,6 +74,31 @@ var RouterTradeType;
|
|
|
74
74
|
RouterTradeType["UnwrapWETH"] = "UnwrapWETH";
|
|
75
75
|
})(RouterTradeType || (RouterTradeType = {}));
|
|
76
76
|
|
|
77
|
+
var NFTTrade = function NFTTrade(market, orders) {
|
|
78
|
+
this.tradeType = RouterTradeType.NFTTrade;
|
|
79
|
+
!(orders.length > 0) ? process.env.NODE_ENV !== "production" ? invariant(false, 'no buy Items') : invariant(false) : void 0;
|
|
80
|
+
this.market = market;
|
|
81
|
+
this.orders = orders;
|
|
82
|
+
};
|
|
83
|
+
var Market;
|
|
84
|
+
(function (Market) {
|
|
85
|
+
Market["Foundation"] = "foundation";
|
|
86
|
+
Market["LooksRareV2"] = "looksrareV2";
|
|
87
|
+
Market["NFT20"] = "nft20";
|
|
88
|
+
Market["NFTX"] = "nftx";
|
|
89
|
+
Market["Seaport"] = "seaport";
|
|
90
|
+
Market["Sudoswap"] = "Sudoswap";
|
|
91
|
+
Market["Cryptopunks"] = "cryptopunks";
|
|
92
|
+
Market["X2Y2"] = "x2y2";
|
|
93
|
+
Market["Element"] = "element";
|
|
94
|
+
})(Market || (Market = {}));
|
|
95
|
+
var TokenType;
|
|
96
|
+
(function (TokenType) {
|
|
97
|
+
TokenType["ERC721"] = "ERC721";
|
|
98
|
+
TokenType["ERC1155"] = "ERC1155";
|
|
99
|
+
TokenType["Cryptopunk"] = "Cryptopunk";
|
|
100
|
+
})(TokenType || (TokenType = {}));
|
|
101
|
+
|
|
77
102
|
var _ABI_DEFINITION;
|
|
78
103
|
/**
|
|
79
104
|
* CommandTypes
|
|
@@ -431,7 +456,7 @@ function encodeInputTokenOptions(planner, options) {
|
|
|
431
456
|
}
|
|
432
457
|
function mapApprovalProtocol(protocolAddress) {
|
|
433
458
|
switch (protocolAddress.toLowerCase()) {
|
|
434
|
-
case '
|
|
459
|
+
case '0x00000000000000adc04c56bf30ac9d3c0aaf14dc':
|
|
435
460
|
// Seaport v1.5
|
|
436
461
|
return OPENSEA_CONDUIT_SPENDER_ID;
|
|
437
462
|
case '0x00000000000001ad428e4906ae43d8f9852d0dd6':
|
|
@@ -460,6 +485,8 @@ var SwapRouter = /*#__PURE__*/function () {
|
|
|
460
485
|
// track value flow to require the right amount of native value
|
|
461
486
|
var currentNativeValueInRouter = BigNumber.from(0);
|
|
462
487
|
var transactionValue = BigNumber.from(0);
|
|
488
|
+
// tracks the input tokens (and ETH) used to buy NFTs to allow us to sweep
|
|
489
|
+
var nftInputTokens = new Set();
|
|
463
490
|
for (var _iterator = _createForOfIteratorHelperLoose(trades), _step; !(_step = _iterator()).done;) {
|
|
464
491
|
var trade = _step.value;
|
|
465
492
|
/**
|
|
@@ -471,6 +498,15 @@ var SwapRouter = /*#__PURE__*/function () {
|
|
|
471
498
|
allowRevert: allowRevert
|
|
472
499
|
});
|
|
473
500
|
var tradePrice = nftTrade.getTotalPrice();
|
|
501
|
+
if (nftTrade.market == Market.Seaport) {
|
|
502
|
+
var seaportTrade = nftTrade;
|
|
503
|
+
var seaportInputTokens = seaportTrade.getInputTokens();
|
|
504
|
+
seaportInputTokens.forEach(function (inputToken) {
|
|
505
|
+
nftInputTokens.add(inputToken);
|
|
506
|
+
});
|
|
507
|
+
} else {
|
|
508
|
+
nftInputTokens.add(ETH_ADDRESS);
|
|
509
|
+
}
|
|
474
510
|
// send enough native value to contract for NFT purchase
|
|
475
511
|
if (currentNativeValueInRouter.lt(tradePrice)) {
|
|
476
512
|
transactionValue = transactionValue.add(tradePrice.sub(currentNativeValueInRouter));
|
|
@@ -519,11 +555,14 @@ var SwapRouter = /*#__PURE__*/function () {
|
|
|
519
555
|
// TODO: matches current logic for now, but should eventually only sweep for multiple NFT trades
|
|
520
556
|
// or NFT trades with potential slippage (i.e. sudo).
|
|
521
557
|
// Note: NFTXV2 sends excess ETH to the caller (router), not the specified recipient
|
|
522
|
-
|
|
558
|
+
nftInputTokens.forEach(function (inputToken) {
|
|
559
|
+
planner.addCommand(CommandType.SWEEP, [inputToken, SENDER_AS_RECIPIENT, 0]);
|
|
560
|
+
});
|
|
523
561
|
return SwapRouter.encodePlan(planner, transactionValue, config);
|
|
524
562
|
}
|
|
525
563
|
/**
|
|
526
564
|
* @deprecated in favor of swapCallParameters. Update before next major version 2.0.0
|
|
565
|
+
* This version does not work correctly for Seaport ERC20->NFT purchases
|
|
527
566
|
* Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given swap.
|
|
528
567
|
* @param trades to produce call parameters for
|
|
529
568
|
*/;
|
|
@@ -591,31 +630,6 @@ var SwapRouter = /*#__PURE__*/function () {
|
|
|
591
630
|
}();
|
|
592
631
|
SwapRouter.INTERFACE = /*#__PURE__*/new Interface(abi$7);
|
|
593
632
|
|
|
594
|
-
var NFTTrade = function NFTTrade(market, orders) {
|
|
595
|
-
this.tradeType = RouterTradeType.NFTTrade;
|
|
596
|
-
!(orders.length > 0) ? process.env.NODE_ENV !== "production" ? invariant(false, 'no buy Items') : invariant(false) : void 0;
|
|
597
|
-
this.market = market;
|
|
598
|
-
this.orders = orders;
|
|
599
|
-
};
|
|
600
|
-
var Market;
|
|
601
|
-
(function (Market) {
|
|
602
|
-
Market["Foundation"] = "foundation";
|
|
603
|
-
Market["LooksRareV2"] = "looksrareV2";
|
|
604
|
-
Market["NFT20"] = "nft20";
|
|
605
|
-
Market["NFTX"] = "nftx";
|
|
606
|
-
Market["Seaport"] = "seaport";
|
|
607
|
-
Market["Sudoswap"] = "Sudoswap";
|
|
608
|
-
Market["Cryptopunks"] = "cryptopunks";
|
|
609
|
-
Market["X2Y2"] = "x2y2";
|
|
610
|
-
Market["Element"] = "element";
|
|
611
|
-
})(Market || (Market = {}));
|
|
612
|
-
var TokenType;
|
|
613
|
-
(function (TokenType) {
|
|
614
|
-
TokenType["ERC721"] = "ERC721";
|
|
615
|
-
TokenType["ERC1155"] = "ERC1155";
|
|
616
|
-
TokenType["Cryptopunk"] = "Cryptopunk";
|
|
617
|
-
})(TokenType || (TokenType = {}));
|
|
618
|
-
|
|
619
633
|
var CryptopunkTrade = /*#__PURE__*/function (_NFTTrade) {
|
|
620
634
|
_inheritsLoose(CryptopunkTrade, _NFTTrade);
|
|
621
635
|
function CryptopunkTrade(orders) {
|
|
@@ -4318,26 +4332,28 @@ var LooksRareV2Trade = /*#__PURE__*/function (_NFTTrade) {
|
|
|
4318
4332
|
}
|
|
4319
4333
|
var _proto = LooksRareV2Trade.prototype;
|
|
4320
4334
|
_proto.encode = function encode(planner, config) {
|
|
4321
|
-
|
|
4322
|
-
|
|
4323
|
-
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
|
|
4335
|
+
var _this$refactorAPIData = this.refactorAPIData(this.orders),
|
|
4336
|
+
takerBids = _this$refactorAPIData.takerBids,
|
|
4337
|
+
makerOrders = _this$refactorAPIData.makerOrders,
|
|
4338
|
+
makerSignatures = _this$refactorAPIData.makerSignatures,
|
|
4339
|
+
totalValue = _this$refactorAPIData.totalValue,
|
|
4340
|
+
merkleTrees = _this$refactorAPIData.merkleTrees;
|
|
4341
|
+
var calldata;
|
|
4342
|
+
if (this.orders.length == 1) {
|
|
4343
|
+
calldata = LooksRareV2Trade.INTERFACE.encodeFunctionData('executeTakerBid', [takerBids[0], makerOrders[0], makerSignatures[0], merkleTrees[0], ZERO_ADDRESS]);
|
|
4344
|
+
} else {
|
|
4345
|
+
calldata = LooksRareV2Trade.INTERFACE.encodeFunctionData('executeMultipleTakerBids', [takerBids, makerOrders, makerSignatures, merkleTrees, ZERO_ADDRESS, false]);
|
|
4331
4346
|
}
|
|
4347
|
+
planner.addCommand(CommandType.LOOKS_RARE_V2, [totalValue, calldata], config.allowRevert);
|
|
4332
4348
|
};
|
|
4333
4349
|
_proto.getBuyItems = function getBuyItems() {
|
|
4334
4350
|
var buyItems = [];
|
|
4335
|
-
for (var
|
|
4336
|
-
var item =
|
|
4351
|
+
for (var _iterator = _createForOfIteratorHelperLoose(this.orders), _step; !(_step = _iterator()).done;) {
|
|
4352
|
+
var item = _step.value;
|
|
4337
4353
|
var tokenAddress = item.apiOrder.collection;
|
|
4338
4354
|
var tokenType = item.apiOrder.collectionType == LooksRareV2Trade.ERC721_ORDER ? TokenType.ERC721 : TokenType.ERC1155;
|
|
4339
|
-
for (var
|
|
4340
|
-
var tokenId =
|
|
4355
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(item.apiOrder.itemIds), _step2; !(_step2 = _iterator2()).done;) {
|
|
4356
|
+
var tokenId = _step2.value;
|
|
4341
4357
|
buyItems.push({
|
|
4342
4358
|
tokenAddress: tokenAddress,
|
|
4343
4359
|
tokenId: tokenId,
|
|
@@ -4349,30 +4365,38 @@ var LooksRareV2Trade = /*#__PURE__*/function (_NFTTrade) {
|
|
|
4349
4365
|
};
|
|
4350
4366
|
_proto.getTotalPrice = function getTotalPrice() {
|
|
4351
4367
|
var total = BigNumber.from(0);
|
|
4352
|
-
for (var
|
|
4353
|
-
var item =
|
|
4368
|
+
for (var _iterator3 = _createForOfIteratorHelperLoose(this.orders), _step3; !(_step3 = _iterator3()).done;) {
|
|
4369
|
+
var item = _step3.value;
|
|
4354
4370
|
total = total.add(item.apiOrder.price);
|
|
4355
4371
|
}
|
|
4356
4372
|
return total;
|
|
4357
4373
|
};
|
|
4358
|
-
_proto.refactorAPIData = function refactorAPIData(
|
|
4359
|
-
var
|
|
4360
|
-
var
|
|
4361
|
-
var
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
|
|
4369
|
-
|
|
4374
|
+
_proto.refactorAPIData = function refactorAPIData(orders) {
|
|
4375
|
+
var takerBids = [];
|
|
4376
|
+
var makerOrders = [];
|
|
4377
|
+
var makerSignatures = [];
|
|
4378
|
+
var totalValue = BigNumber.from(0);
|
|
4379
|
+
var merkleTrees = [];
|
|
4380
|
+
orders.forEach(function (order) {
|
|
4381
|
+
var _order$apiOrder$merkl, _order$apiOrder$merkl2;
|
|
4382
|
+
makerOrders.push(_extends({}, order.apiOrder));
|
|
4383
|
+
makerSignatures.push(order.apiOrder.signature);
|
|
4384
|
+
takerBids.push({
|
|
4385
|
+
recipient: order.taker,
|
|
4386
|
+
additionalParameters: '0x'
|
|
4387
|
+
});
|
|
4388
|
+
totalValue = totalValue.add(BigNumber.from(order.apiOrder.price));
|
|
4389
|
+
merkleTrees.push({
|
|
4390
|
+
root: (_order$apiOrder$merkl = order.apiOrder.merkleRoot) != null ? _order$apiOrder$merkl : '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
4391
|
+
proof: (_order$apiOrder$merkl2 = order.apiOrder.merkleProof) != null ? _order$apiOrder$merkl2 : []
|
|
4392
|
+
});
|
|
4393
|
+
});
|
|
4370
4394
|
return {
|
|
4371
|
-
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
4375
|
-
|
|
4395
|
+
takerBids: takerBids,
|
|
4396
|
+
makerOrders: makerOrders,
|
|
4397
|
+
makerSignatures: makerSignatures,
|
|
4398
|
+
totalValue: totalValue,
|
|
4399
|
+
merkleTrees: merkleTrees
|
|
4376
4400
|
};
|
|
4377
4401
|
};
|
|
4378
4402
|
return LooksRareV2Trade;
|
|
@@ -8032,13 +8056,28 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
|
|
|
8032
8056
|
}
|
|
8033
8057
|
return buyItems;
|
|
8034
8058
|
};
|
|
8059
|
+
_proto.getInputTokens = function getInputTokens() {
|
|
8060
|
+
var inputTokens = new Set();
|
|
8061
|
+
for (var _iterator7 = _createForOfIteratorHelperLoose(this.orders), _step7; !(_step7 = _iterator7()).done;) {
|
|
8062
|
+
var order = _step7.value;
|
|
8063
|
+
for (var _iterator8 = _createForOfIteratorHelperLoose(order.items), _step8; !(_step8 = _iterator8()).done;) {
|
|
8064
|
+
var item = _step8.value;
|
|
8065
|
+
for (var _iterator9 = _createForOfIteratorHelperLoose(item.parameters.consideration), _step9; !(_step9 = _iterator9()).done;) {
|
|
8066
|
+
var consideration = _step9.value;
|
|
8067
|
+
var token = consideration.token.toLowerCase();
|
|
8068
|
+
inputTokens.add(token);
|
|
8069
|
+
}
|
|
8070
|
+
}
|
|
8071
|
+
}
|
|
8072
|
+
return inputTokens;
|
|
8073
|
+
};
|
|
8035
8074
|
_proto.getTotalOrderPrice = function getTotalOrderPrice(order, token) {
|
|
8036
8075
|
if (token === void 0) {
|
|
8037
8076
|
token = ETH_ADDRESS;
|
|
8038
8077
|
}
|
|
8039
8078
|
var totalOrderPrice = BigNumber.from(0);
|
|
8040
|
-
for (var
|
|
8041
|
-
var item =
|
|
8079
|
+
for (var _iterator10 = _createForOfIteratorHelperLoose(order.items), _step10; !(_step10 = _iterator10()).done;) {
|
|
8080
|
+
var item = _step10.value;
|
|
8042
8081
|
totalOrderPrice = totalOrderPrice.add(this.calculateValue(item.parameters.consideration, token));
|
|
8043
8082
|
}
|
|
8044
8083
|
return totalOrderPrice;
|
|
@@ -8048,10 +8087,10 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
|
|
|
8048
8087
|
token = ETH_ADDRESS;
|
|
8049
8088
|
}
|
|
8050
8089
|
var totalPrice = BigNumber.from(0);
|
|
8051
|
-
for (var
|
|
8052
|
-
var order =
|
|
8053
|
-
for (var
|
|
8054
|
-
var item =
|
|
8090
|
+
for (var _iterator11 = _createForOfIteratorHelperLoose(this.orders), _step11; !(_step11 = _iterator11()).done;) {
|
|
8091
|
+
var order = _step11.value;
|
|
8092
|
+
for (var _iterator12 = _createForOfIteratorHelperLoose(order.items), _step12; !(_step12 = _iterator12()).done;) {
|
|
8093
|
+
var item = _step12.value;
|
|
8055
8094
|
totalPrice = totalPrice.add(this.calculateValue(item.parameters.consideration, token));
|
|
8056
8095
|
}
|
|
8057
8096
|
}
|
|
@@ -8059,7 +8098,7 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
|
|
|
8059
8098
|
};
|
|
8060
8099
|
_proto.commandMap = function commandMap(protocolAddress) {
|
|
8061
8100
|
switch (protocolAddress.toLowerCase()) {
|
|
8062
|
-
case '
|
|
8101
|
+
case '0x00000000000000adc04c56bf30ac9d3c0aaf14dc':
|
|
8063
8102
|
// Seaport v1.5
|
|
8064
8103
|
return CommandType.SEAPORT_V1_5;
|
|
8065
8104
|
case '0x00000000000001ad428e4906ae43d8f9852d0dd6':
|
|
@@ -8116,7 +8155,7 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
|
|
|
8116
8155
|
};
|
|
8117
8156
|
_proto.calculateValue = function calculateValue(considerations, token) {
|
|
8118
8157
|
return considerations.reduce(function (amt, consideration) {
|
|
8119
|
-
return consideration.token == token ? amt.add(consideration.startAmount) : amt;
|
|
8158
|
+
return consideration.token.toLowerCase() == token.toLowerCase() ? amt.add(consideration.startAmount) : amt;
|
|
8120
8159
|
}, BigNumber.from(0));
|
|
8121
8160
|
};
|
|
8122
8161
|
return SeaportTrade;
|
|
@@ -10444,7 +10483,7 @@ var UnwrapWETH = /*#__PURE__*/function () {
|
|
|
10444
10483
|
this.wethAddress = WETH_ADDRESS(chainId);
|
|
10445
10484
|
this.amount = amount;
|
|
10446
10485
|
if (!!permit2) {
|
|
10447
|
-
!(permit2.details.token === this.wethAddress) ? process.env.NODE_ENV !== "production" ? invariant(false, "must be permitting WETH address: " + this.wethAddress) : invariant(false) : void 0;
|
|
10486
|
+
!(permit2.details.token.toLowerCase() === this.wethAddress.toLowerCase()) ? process.env.NODE_ENV !== "production" ? invariant(false, "must be permitting WETH address: " + this.wethAddress) : invariant(false) : void 0;
|
|
10448
10487
|
!(permit2.details.amount >= amount) ? process.env.NODE_ENV !== "production" ? invariant(false, "Did not permit enough WETH for unwrapWETH transaction") : invariant(false) : void 0;
|
|
10449
10488
|
this.permit2Data = permit2;
|
|
10450
10489
|
}
|