@uniswap/universal-router-sdk 1.5.0-beta.1 → 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.
@@ -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
@@ -97,7 +122,7 @@ var CommandType;
97
122
  CommandType[CommandType["PERMIT2_TRANSFER_FROM_BATCH"] = 13] = "PERMIT2_TRANSFER_FROM_BATCH";
98
123
  CommandType[CommandType["BALANCE_CHECK_ERC20"] = 14] = "BALANCE_CHECK_ERC20";
99
124
  // NFT-related command types
100
- CommandType[CommandType["SEAPORT"] = 16] = "SEAPORT";
125
+ CommandType[CommandType["SEAPORT_V1_5"] = 16] = "SEAPORT_V1_5";
101
126
  CommandType[CommandType["LOOKS_RARE_V2"] = 17] = "LOOKS_RARE_V2";
102
127
  CommandType[CommandType["NFTX"] = 18] = "NFTX";
103
128
  CommandType[CommandType["CRYPTOPUNKS"] = 19] = "CRYPTOPUNKS";
@@ -117,12 +142,12 @@ var CommandType;
117
142
  CommandType[CommandType["APPROVE_ERC20"] = 34] = "APPROVE_ERC20";
118
143
  })(CommandType || (CommandType = {}));
119
144
  var ALLOW_REVERT_FLAG = 0x80;
120
- var REVERTIBLE_COMMANDS = /*#__PURE__*/new Set([CommandType.SEAPORT, CommandType.SEAPORT_V1_4, CommandType.NFTX, CommandType.LOOKS_RARE_V2, CommandType.X2Y2_721, CommandType.X2Y2_1155, CommandType.FOUNDATION, CommandType.SUDOSWAP, CommandType.NFT20, CommandType.EXECUTE_SUB_PLAN, CommandType.CRYPTOPUNKS, CommandType.ELEMENT_MARKET]);
145
+ var REVERTIBLE_COMMANDS = /*#__PURE__*/new Set([CommandType.SEAPORT_V1_5, CommandType.SEAPORT_V1_4, CommandType.NFTX, CommandType.LOOKS_RARE_V2, CommandType.X2Y2_721, CommandType.X2Y2_1155, CommandType.FOUNDATION, CommandType.SUDOSWAP, CommandType.NFT20, CommandType.EXECUTE_SUB_PLAN, CommandType.CRYPTOPUNKS, CommandType.ELEMENT_MARKET]);
121
146
  var PERMIT_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce) details,address spender,uint256 sigDeadline)';
122
147
  var PERMIT_BATCH_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce)[] details,address spender,uint256 sigDeadline)';
123
148
  var PERMIT2_TRANSFER_FROM_STRUCT = '(address from,address to,uint160 amount,address token)';
124
149
  var PERMIT2_TRANSFER_FROM_BATCH_STRUCT = PERMIT2_TRANSFER_FROM_STRUCT + '[]';
125
- var ABI_DEFINITION = (_ABI_DEFINITION = {}, _ABI_DEFINITION[CommandType.EXECUTE_SUB_PLAN] = ['bytes', 'bytes[]'], _ABI_DEFINITION[CommandType.PERMIT2_PERMIT] = [PERMIT_STRUCT, 'bytes'], _ABI_DEFINITION[CommandType.PERMIT2_PERMIT_BATCH] = [PERMIT_BATCH_STRUCT, 'bytes'], _ABI_DEFINITION[CommandType.PERMIT2_TRANSFER_FROM] = ['address', 'address', 'uint160'], _ABI_DEFINITION[CommandType.PERMIT2_TRANSFER_FROM_BATCH] = [PERMIT2_TRANSFER_FROM_BATCH_STRUCT], _ABI_DEFINITION[CommandType.V3_SWAP_EXACT_IN] = ['address', 'uint256', 'uint256', 'bytes', 'bool'], _ABI_DEFINITION[CommandType.V3_SWAP_EXACT_OUT] = ['address', 'uint256', 'uint256', 'bytes', 'bool'], _ABI_DEFINITION[CommandType.V2_SWAP_EXACT_IN] = ['address', 'uint256', 'uint256', 'address[]', 'bool'], _ABI_DEFINITION[CommandType.V2_SWAP_EXACT_OUT] = ['address', 'uint256', 'uint256', 'address[]', 'bool'], _ABI_DEFINITION[CommandType.WRAP_ETH] = ['address', 'uint256'], _ABI_DEFINITION[CommandType.UNWRAP_WETH] = ['address', 'uint256'], _ABI_DEFINITION[CommandType.SWEEP] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.SWEEP_ERC721] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.SWEEP_ERC1155] = ['address', 'address', 'uint256', 'uint256'], _ABI_DEFINITION[CommandType.TRANSFER] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.PAY_PORTION] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.BALANCE_CHECK_ERC20] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.OWNER_CHECK_721] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.OWNER_CHECK_1155] = ['address', 'address', 'uint256', 'uint256'], _ABI_DEFINITION[CommandType.APPROVE_ERC20] = ['address', 'uint256'], _ABI_DEFINITION[CommandType.SEAPORT] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.SEAPORT_V1_4] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.NFTX] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.LOOKS_RARE_V2] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.X2Y2_721] = ['uint256', 'bytes', 'address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.X2Y2_1155] = ['uint256', 'bytes', 'address', 'address', 'uint256', 'uint256'], _ABI_DEFINITION[CommandType.FOUNDATION] = ['uint256', 'bytes', 'address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.SUDOSWAP] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.NFT20] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.CRYPTOPUNKS] = ['uint256', 'address', 'uint256'], _ABI_DEFINITION[CommandType.ELEMENT_MARKET] = ['uint256', 'bytes'], _ABI_DEFINITION);
150
+ var ABI_DEFINITION = (_ABI_DEFINITION = {}, _ABI_DEFINITION[CommandType.EXECUTE_SUB_PLAN] = ['bytes', 'bytes[]'], _ABI_DEFINITION[CommandType.PERMIT2_PERMIT] = [PERMIT_STRUCT, 'bytes'], _ABI_DEFINITION[CommandType.PERMIT2_PERMIT_BATCH] = [PERMIT_BATCH_STRUCT, 'bytes'], _ABI_DEFINITION[CommandType.PERMIT2_TRANSFER_FROM] = ['address', 'address', 'uint160'], _ABI_DEFINITION[CommandType.PERMIT2_TRANSFER_FROM_BATCH] = [PERMIT2_TRANSFER_FROM_BATCH_STRUCT], _ABI_DEFINITION[CommandType.V3_SWAP_EXACT_IN] = ['address', 'uint256', 'uint256', 'bytes', 'bool'], _ABI_DEFINITION[CommandType.V3_SWAP_EXACT_OUT] = ['address', 'uint256', 'uint256', 'bytes', 'bool'], _ABI_DEFINITION[CommandType.V2_SWAP_EXACT_IN] = ['address', 'uint256', 'uint256', 'address[]', 'bool'], _ABI_DEFINITION[CommandType.V2_SWAP_EXACT_OUT] = ['address', 'uint256', 'uint256', 'address[]', 'bool'], _ABI_DEFINITION[CommandType.WRAP_ETH] = ['address', 'uint256'], _ABI_DEFINITION[CommandType.UNWRAP_WETH] = ['address', 'uint256'], _ABI_DEFINITION[CommandType.SWEEP] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.SWEEP_ERC721] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.SWEEP_ERC1155] = ['address', 'address', 'uint256', 'uint256'], _ABI_DEFINITION[CommandType.TRANSFER] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.PAY_PORTION] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.BALANCE_CHECK_ERC20] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.OWNER_CHECK_721] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.OWNER_CHECK_1155] = ['address', 'address', 'uint256', 'uint256'], _ABI_DEFINITION[CommandType.APPROVE_ERC20] = ['address', 'uint256'], _ABI_DEFINITION[CommandType.SEAPORT_V1_5] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.SEAPORT_V1_4] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.NFTX] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.LOOKS_RARE_V2] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.X2Y2_721] = ['uint256', 'bytes', 'address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.X2Y2_1155] = ['uint256', 'bytes', 'address', 'address', 'uint256', 'uint256'], _ABI_DEFINITION[CommandType.FOUNDATION] = ['uint256', 'bytes', 'address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.SUDOSWAP] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.NFT20] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.CRYPTOPUNKS] = ['uint256', 'address', 'uint256'], _ABI_DEFINITION[CommandType.ELEMENT_MARKET] = ['uint256', 'bytes'], _ABI_DEFINITION);
126
151
  var RoutePlanner = /*#__PURE__*/function () {
127
152
  function RoutePlanner() {
128
153
  this.commands = '0x';
@@ -159,8 +184,8 @@ function createCommand(type, parameters) {
159
184
  var UNIVERSAL_ROUTER_ADDRESS = function UNIVERSAL_ROUTER_ADDRESS(chainId) {
160
185
  switch (chainId) {
161
186
  case 1:
162
- // mainnet
163
- return '0x4C60051384bd2d3C01bfc845Cf5F4b44bcbE9de5';
187
+ // mainnet. UR v1.2, all others are v1
188
+ return '0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD';
164
189
  case 5:
165
190
  // goerli
166
191
  return '0x4648a43B2C14Da09FdF82B161150d3F634f40491';
@@ -431,8 +456,8 @@ function encodeInputTokenOptions(planner, options) {
431
456
  }
432
457
  function mapApprovalProtocol(protocolAddress) {
433
458
  switch (protocolAddress.toLowerCase()) {
434
- case '0x00000000006c3852cbef3e08e8df289169ede581':
435
- // Seaport v1.1
459
+ case '0x00000000000000adc04c56bf30ac9d3c0aaf14dc':
460
+ // Seaport v1.5
436
461
  return OPENSEA_CONDUIT_SPENDER_ID;
437
462
  case '0x00000000000001ad428e4906ae43d8f9852d0dd6':
438
463
  // Seaport v1.4
@@ -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));
@@ -517,12 +553,16 @@ var SwapRouter = /*#__PURE__*/function () {
517
553
  }
518
554
  }
519
555
  // TODO: matches current logic for now, but should eventually only sweep for multiple NFT trades
520
- // or NFT trades with potential slippage (i.e. sudo)
521
- if (nftTrades.length > 0) planner.addCommand(CommandType.SWEEP, [ETH_ADDRESS, SENDER_AS_RECIPIENT, 0]);
556
+ // or NFT trades with potential slippage (i.e. sudo).
557
+ // Note: NFTXV2 sends excess ETH to the caller (router), not the specified recipient
558
+ nftInputTokens.forEach(function (inputToken) {
559
+ planner.addCommand(CommandType.SWEEP, [inputToken, SENDER_AS_RECIPIENT, 0]);
560
+ });
522
561
  return SwapRouter.encodePlan(planner, transactionValue, config);
523
562
  }
524
563
  /**
525
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
526
566
  * Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given swap.
527
567
  * @param trades to produce call parameters for
528
568
  */;
@@ -590,31 +630,6 @@ var SwapRouter = /*#__PURE__*/function () {
590
630
  }();
591
631
  SwapRouter.INTERFACE = /*#__PURE__*/new Interface(abi$7);
592
632
 
593
- var NFTTrade = function NFTTrade(market, orders) {
594
- this.tradeType = RouterTradeType.NFTTrade;
595
- !(orders.length > 0) ? process.env.NODE_ENV !== "production" ? invariant(false, 'no buy Items') : invariant(false) : void 0;
596
- this.market = market;
597
- this.orders = orders;
598
- };
599
- var Market;
600
- (function (Market) {
601
- Market["Foundation"] = "foundation";
602
- Market["LooksRareV2"] = "looksrareV2";
603
- Market["NFT20"] = "nft20";
604
- Market["NFTX"] = "nftx";
605
- Market["Seaport"] = "seaport";
606
- Market["Sudoswap"] = "Sudoswap";
607
- Market["Cryptopunks"] = "cryptopunks";
608
- Market["X2Y2"] = "x2y2";
609
- Market["Element"] = "element";
610
- })(Market || (Market = {}));
611
- var TokenType;
612
- (function (TokenType) {
613
- TokenType["ERC721"] = "ERC721";
614
- TokenType["ERC1155"] = "ERC1155";
615
- TokenType["Cryptopunk"] = "Cryptopunk";
616
- })(TokenType || (TokenType = {}));
617
-
618
633
  var CryptopunkTrade = /*#__PURE__*/function (_NFTTrade) {
619
634
  _inheritsLoose(CryptopunkTrade, _NFTTrade);
620
635
  function CryptopunkTrade(orders) {
@@ -4317,26 +4332,28 @@ var LooksRareV2Trade = /*#__PURE__*/function (_NFTTrade) {
4317
4332
  }
4318
4333
  var _proto = LooksRareV2Trade.prototype;
4319
4334
  _proto.encode = function encode(planner, config) {
4320
- for (var _iterator = _createForOfIteratorHelperLoose(this.orders), _step; !(_step = _iterator()).done;) {
4321
- var item = _step.value;
4322
- var _this$refactorAPIData = this.refactorAPIData(item),
4323
- takerBid = _this$refactorAPIData.takerBid,
4324
- makerOrder = _this$refactorAPIData.makerOrder,
4325
- makerSignature = _this$refactorAPIData.makerSignature,
4326
- value = _this$refactorAPIData.value,
4327
- merkleTree = _this$refactorAPIData.merkleTree;
4328
- var calldata = LooksRareV2Trade.INTERFACE.encodeFunctionData('executeTakerBid', [takerBid, makerOrder, makerSignature, merkleTree, ZERO_ADDRESS]);
4329
- planner.addCommand(CommandType.LOOKS_RARE_V2, [value, calldata], config.allowRevert);
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]);
4330
4346
  }
4347
+ planner.addCommand(CommandType.LOOKS_RARE_V2, [totalValue, calldata], config.allowRevert);
4331
4348
  };
4332
4349
  _proto.getBuyItems = function getBuyItems() {
4333
4350
  var buyItems = [];
4334
- for (var _iterator2 = _createForOfIteratorHelperLoose(this.orders), _step2; !(_step2 = _iterator2()).done;) {
4335
- var item = _step2.value;
4351
+ for (var _iterator = _createForOfIteratorHelperLoose(this.orders), _step; !(_step = _iterator()).done;) {
4352
+ var item = _step.value;
4336
4353
  var tokenAddress = item.apiOrder.collection;
4337
4354
  var tokenType = item.apiOrder.collectionType == LooksRareV2Trade.ERC721_ORDER ? TokenType.ERC721 : TokenType.ERC1155;
4338
- for (var _iterator3 = _createForOfIteratorHelperLoose(item.apiOrder.itemIds), _step3; !(_step3 = _iterator3()).done;) {
4339
- var tokenId = _step3.value;
4355
+ for (var _iterator2 = _createForOfIteratorHelperLoose(item.apiOrder.itemIds), _step2; !(_step2 = _iterator2()).done;) {
4356
+ var tokenId = _step2.value;
4340
4357
  buyItems.push({
4341
4358
  tokenAddress: tokenAddress,
4342
4359
  tokenId: tokenId,
@@ -4348,30 +4365,38 @@ var LooksRareV2Trade = /*#__PURE__*/function (_NFTTrade) {
4348
4365
  };
4349
4366
  _proto.getTotalPrice = function getTotalPrice() {
4350
4367
  var total = BigNumber.from(0);
4351
- for (var _iterator4 = _createForOfIteratorHelperLoose(this.orders), _step4; !(_step4 = _iterator4()).done;) {
4352
- var item = _step4.value;
4368
+ for (var _iterator3 = _createForOfIteratorHelperLoose(this.orders), _step3; !(_step3 = _iterator3()).done;) {
4369
+ var item = _step3.value;
4353
4370
  total = total.add(item.apiOrder.price);
4354
4371
  }
4355
4372
  return total;
4356
4373
  };
4357
- _proto.refactorAPIData = function refactorAPIData(data) {
4358
- var makerOrder = _extends({}, data.apiOrder);
4359
- var makerSignature = data.apiOrder.signature;
4360
- var takerBid = {
4361
- recipient: data.taker,
4362
- additionalParameters: '0x'
4363
- };
4364
- var value = BigNumber.from(data.apiOrder.price);
4365
- var merkleTree = {
4366
- root: data.apiOrder.merkleRoot,
4367
- proof: data.apiOrder.merkleProof
4368
- };
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
+ });
4369
4394
  return {
4370
- takerBid: takerBid,
4371
- makerOrder: makerOrder,
4372
- makerSignature: makerSignature,
4373
- value: value,
4374
- merkleTree: merkleTree
4395
+ takerBids: takerBids,
4396
+ makerOrders: makerOrders,
4397
+ makerSignatures: makerSignatures,
4398
+ totalValue: totalValue,
4399
+ merkleTrees: merkleTrees
4375
4400
  };
4376
4401
  };
4377
4402
  return LooksRareV2Trade;
@@ -8031,13 +8056,28 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
8031
8056
  }
8032
8057
  return buyItems;
8033
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
+ };
8034
8074
  _proto.getTotalOrderPrice = function getTotalOrderPrice(order, token) {
8035
8075
  if (token === void 0) {
8036
8076
  token = ETH_ADDRESS;
8037
8077
  }
8038
8078
  var totalOrderPrice = BigNumber.from(0);
8039
- for (var _iterator7 = _createForOfIteratorHelperLoose(order.items), _step7; !(_step7 = _iterator7()).done;) {
8040
- var item = _step7.value;
8079
+ for (var _iterator10 = _createForOfIteratorHelperLoose(order.items), _step10; !(_step10 = _iterator10()).done;) {
8080
+ var item = _step10.value;
8041
8081
  totalOrderPrice = totalOrderPrice.add(this.calculateValue(item.parameters.consideration, token));
8042
8082
  }
8043
8083
  return totalOrderPrice;
@@ -8047,10 +8087,10 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
8047
8087
  token = ETH_ADDRESS;
8048
8088
  }
8049
8089
  var totalPrice = BigNumber.from(0);
8050
- for (var _iterator8 = _createForOfIteratorHelperLoose(this.orders), _step8; !(_step8 = _iterator8()).done;) {
8051
- var order = _step8.value;
8052
- for (var _iterator9 = _createForOfIteratorHelperLoose(order.items), _step9; !(_step9 = _iterator9()).done;) {
8053
- var item = _step9.value;
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;
8054
8094
  totalPrice = totalPrice.add(this.calculateValue(item.parameters.consideration, token));
8055
8095
  }
8056
8096
  }
@@ -8058,9 +8098,9 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
8058
8098
  };
8059
8099
  _proto.commandMap = function commandMap(protocolAddress) {
8060
8100
  switch (protocolAddress.toLowerCase()) {
8061
- case '0x00000000006c3852cbef3e08e8df289169ede581':
8062
- // Seaport v1.1
8063
- return CommandType.SEAPORT;
8101
+ case '0x00000000000000adc04c56bf30ac9d3c0aaf14dc':
8102
+ // Seaport v1.5
8103
+ return CommandType.SEAPORT_V1_5;
8064
8104
  case '0x00000000000001ad428e4906ae43d8f9852d0dd6':
8065
8105
  // Seaport v1.4
8066
8106
  return CommandType.SEAPORT_V1_4;
@@ -8115,7 +8155,7 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
8115
8155
  };
8116
8156
  _proto.calculateValue = function calculateValue(considerations, token) {
8117
8157
  return considerations.reduce(function (amt, consideration) {
8118
- return consideration.token == token ? amt.add(consideration.startAmount) : amt;
8158
+ return consideration.token.toLowerCase() == token.toLowerCase() ? amt.add(consideration.startAmount) : amt;
8119
8159
  }, BigNumber.from(0));
8120
8160
  };
8121
8161
  return SeaportTrade;
@@ -10443,7 +10483,7 @@ var UnwrapWETH = /*#__PURE__*/function () {
10443
10483
  this.wethAddress = WETH_ADDRESS(chainId);
10444
10484
  this.amount = amount;
10445
10485
  if (!!permit2) {
10446
- !(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;
10447
10487
  !(permit2.details.amount >= amount) ? process.env.NODE_ENV !== "production" ? invariant(false, "Did not permit enough WETH for unwrapWETH transaction") : invariant(false) : void 0;
10448
10488
  this.permit2Data = permit2;
10449
10489
  }