@uniswap/universal-router-sdk 1.4.3 → 1.5.0-beta.0

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.
@@ -77,11 +77,11 @@ var CommandType;
77
77
  CommandType[CommandType["PAY_PORTION"] = 6] = "PAY_PORTION";
78
78
  CommandType[CommandType["V2_SWAP_EXACT_IN"] = 8] = "V2_SWAP_EXACT_IN";
79
79
  CommandType[CommandType["V2_SWAP_EXACT_OUT"] = 9] = "V2_SWAP_EXACT_OUT";
80
- CommandType[CommandType["PERMIT"] = 10] = "PERMIT";
80
+ CommandType[CommandType["PERMIT2_PERMIT"] = 10] = "PERMIT2_PERMIT";
81
81
  CommandType[CommandType["WRAP_ETH"] = 11] = "WRAP_ETH";
82
82
  CommandType[CommandType["UNWRAP_WETH"] = 12] = "UNWRAP_WETH";
83
83
  CommandType[CommandType["PERMIT2_TRANSFER_FROM_BATCH"] = 13] = "PERMIT2_TRANSFER_FROM_BATCH";
84
- CommandType[CommandType["SEAPORT_V1_4"] = 14] = "SEAPORT_V1_4";
84
+ CommandType[CommandType["BALANCE_CHECK_ERC20"] = 14] = "BALANCE_CHECK_ERC20";
85
85
  // NFT-related command types
86
86
  CommandType[CommandType["SEAPORT"] = 16] = "SEAPORT";
87
87
  CommandType[CommandType["LOOKS_RARE_721"] = 17] = "LOOKS_RARE_721";
@@ -90,23 +90,34 @@ var CommandType;
90
90
  CommandType[CommandType["LOOKS_RARE_1155"] = 20] = "LOOKS_RARE_1155";
91
91
  CommandType[CommandType["OWNER_CHECK_721"] = 21] = "OWNER_CHECK_721";
92
92
  CommandType[CommandType["OWNER_CHECK_1155"] = 22] = "OWNER_CHECK_1155";
93
+ CommandType[CommandType["SWEEP_ERC721"] = 23] = "SWEEP_ERC721";
93
94
  CommandType[CommandType["X2Y2_721"] = 24] = "X2Y2_721";
94
95
  CommandType[CommandType["SUDOSWAP"] = 25] = "SUDOSWAP";
95
96
  CommandType[CommandType["NFT20"] = 26] = "NFT20";
96
97
  CommandType[CommandType["X2Y2_1155"] = 27] = "X2Y2_1155";
97
98
  CommandType[CommandType["FOUNDATION"] = 28] = "FOUNDATION";
99
+ CommandType[CommandType["SWEEP_ERC1155"] = 29] = "SWEEP_ERC1155";
100
+ CommandType[CommandType["ELEMENT_MARKET"] = 30] = "ELEMENT_MARKET";
101
+ CommandType[CommandType["EXECUTE_SUB_PLAN"] = 32] = "EXECUTE_SUB_PLAN";
102
+ CommandType[CommandType["SEAPORT_V1_4"] = 33] = "SEAPORT_V1_4";
103
+ CommandType[CommandType["APPROVE_ERC20"] = 34] = "APPROVE_ERC20";
98
104
  })(CommandType || (CommandType = {}));
99
- var PERMIT_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce) details, address spender, uint256 sigDeadline)';
100
- var PERMIT_BATCH_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce)[] details, address spender, uint256 sigDeadline)';
101
105
  var ALLOW_REVERT_FLAG = 0x80;
102
- var REVERTIBLE_COMMANDS = /*#__PURE__*/new Set([CommandType.SEAPORT, CommandType.SEAPORT_V1_4, CommandType.NFTX, CommandType.LOOKS_RARE_721, CommandType.LOOKS_RARE_1155, CommandType.X2Y2_721, CommandType.X2Y2_1155, CommandType.FOUNDATION, CommandType.SUDOSWAP, CommandType.NFT20, CommandType.CRYPTOPUNKS]);
103
- var ABI_DEFINITION = (_ABI_DEFINITION = {}, _ABI_DEFINITION[CommandType.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] = ['bytes'], _ABI_DEFINITION[CommandType.TRANSFER] = ['address', 'address', 'uint256'], _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.SEAPORT] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.SEAPORT_V1_4] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.WRAP_ETH] = ['address', 'uint256'], _ABI_DEFINITION[CommandType.UNWRAP_WETH] = ['address', 'uint256'], _ABI_DEFINITION[CommandType.SWEEP] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.NFTX] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.LOOKS_RARE_721] = ['uint256', 'bytes', 'address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.LOOKS_RARE_1155] = ['uint256', 'bytes', 'address', 'address', 'uint256', 'uint256'], _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.PAY_PORTION] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.SUDOSWAP] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.OWNER_CHECK_721] = ['address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.OWNER_CHECK_1155] = ['address', 'address', 'uint256', 'uint256'], _ABI_DEFINITION[CommandType.NFT20] = ['uint256', 'bytes'], _ABI_DEFINITION[CommandType.CRYPTOPUNKS] = ['uint256', 'address', 'uint256'], _ABI_DEFINITION);
106
+ var REVERTIBLE_COMMANDS = /*#__PURE__*/new Set([CommandType.SEAPORT, CommandType.SEAPORT_V1_4, CommandType.NFTX, CommandType.LOOKS_RARE_721, CommandType.LOOKS_RARE_1155, CommandType.X2Y2_721, CommandType.X2Y2_1155, CommandType.FOUNDATION, CommandType.SUDOSWAP, CommandType.NFT20, CommandType.EXECUTE_SUB_PLAN, CommandType.CRYPTOPUNKS, CommandType.ELEMENT_MARKET]);
107
+ var PERMIT_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce) details,address spender,uint256 sigDeadline)';
108
+ var PERMIT_BATCH_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce)[] details,address spender,uint256 sigDeadline)';
109
+ var PERMIT2_TRANSFER_FROM_STRUCT = '(address from,address to,uint160 amount,address token)';
110
+ var PERMIT2_TRANSFER_FROM_BATCH_STRUCT = PERMIT2_TRANSFER_FROM_STRUCT + '[]';
111
+ 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_721] = ['uint256', 'bytes', 'address', 'address', 'uint256'], _ABI_DEFINITION[CommandType.LOOKS_RARE_1155] = ['uint256', 'bytes', 'address', 'address', 'uint256', 'uint256'], _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);
104
112
  var RoutePlanner = /*#__PURE__*/function () {
105
113
  function RoutePlanner() {
106
114
  this.commands = '0x';
107
115
  this.inputs = [];
108
116
  }
109
117
  var _proto = RoutePlanner.prototype;
118
+ _proto.addSubPlan = function addSubPlan(subplan) {
119
+ this.addCommand(CommandType.EXECUTE_SUB_PLAN, [subplan.commands, subplan.inputs], true);
120
+ };
110
121
  _proto.addCommand = function addCommand(type, parameters, allowRevert) {
111
122
  if (allowRevert === void 0) {
112
123
  allowRevert = false;
@@ -208,6 +219,8 @@ var CONTRACT_BALANCE = /*#__PURE__*/BigNumber.from(2).pow(255);
208
219
  var ETH_ADDRESS = '0x0000000000000000000000000000000000000000';
209
220
  var SENDER_AS_RECIPIENT = '0x0000000000000000000000000000000000000001';
210
221
  var ROUTER_AS_RECIPIENT = '0x0000000000000000000000000000000000000002';
222
+ var OPENSEA_CONDUIT_SPENDER_ID = 0;
223
+ var SUDOSWAP_SPENDER_ID = 1;
211
224
 
212
225
  var REFUND_ETH_PRICE_IMPACT_THRESHOLD = /*#__PURE__*/new Percent( /*#__PURE__*/JSBI.BigInt(50), /*#__PURE__*/JSBI.BigInt(100));
213
226
  // Wrapper for uniswap router-sdk trade entity to encode swaps for Universal Router
@@ -369,15 +382,52 @@ function riskOfPartialFill(trade) {
369
382
 
370
383
  var SIGNATURE_LENGTH = 65;
371
384
  var EIP_2098_SIGNATURE_LENGTH = 64;
372
- function encodePermit(planner, permit) {
373
- var signature = permit.signature;
374
- var length = ethers.utils.arrayify(permit.signature).length;
385
+ function encodePermit(planner, permit2) {
386
+ var signature = permit2.signature;
387
+ var length = ethers.utils.arrayify(permit2.signature).length;
375
388
  // signature data provided for EIP-1271 may have length different from ECDSA signature
376
389
  if (length === SIGNATURE_LENGTH || length === EIP_2098_SIGNATURE_LENGTH) {
377
390
  // sanitizes signature to cover edge cases of malformed EIP-2098 sigs and v used as recovery id
378
- signature = ethers.utils.joinSignature(ethers.utils.splitSignature(permit.signature));
391
+ signature = ethers.utils.joinSignature(ethers.utils.splitSignature(permit2.signature));
392
+ }
393
+ planner.addCommand(CommandType.PERMIT2_PERMIT, [permit2, signature]);
394
+ }
395
+ // Handles the encoding of commands needed to gather input tokens for a trade
396
+ // Approval: The router approving another address to take tokens.
397
+ // note: Only seaport and sudoswap support this action. Approvals are left open.
398
+ // Permit: A Permit2 signature-based Permit to allow the router to access a user's tokens
399
+ // Transfer: A Permit2 TransferFrom of tokens from a user to either the router or another address
400
+ function encodeInputTokenOptions(planner, options) {
401
+ // first ensure that all tokens provided for encoding are the same
402
+ if (!!options.approval && !!options.permit2Permit) !(options.approval.token === options.permit2Permit.details.token) ? process.env.NODE_ENV !== "production" ? invariant(false, "inconsistent token") : invariant(false) : void 0;
403
+ if (!!options.approval && !!options.permit2TransferFrom) !(options.approval.token === options.permit2TransferFrom.token) ? process.env.NODE_ENV !== "production" ? invariant(false, "inconsistent token") : invariant(false) : void 0;
404
+ if (!!options.permit2TransferFrom && !!options.permit2Permit) !(options.permit2TransferFrom.token === options.permit2Permit.details.token) ? process.env.NODE_ENV !== "production" ? invariant(false, "inconsistent token") : invariant(false) : void 0;
405
+ // if an options.approval is required, add it
406
+ if (!!options.approval) {
407
+ planner.addCommand(CommandType.APPROVE_ERC20, [options.approval.token, mapApprovalProtocol(options.approval.protocol)]);
408
+ }
409
+ // if this order has a options.permit2Permit, encode it
410
+ if (!!options.permit2Permit) {
411
+ encodePermit(planner, options.permit2Permit);
412
+ }
413
+ if (!!options.permit2TransferFrom) {
414
+ planner.addCommand(CommandType.PERMIT2_TRANSFER_FROM, [options.permit2TransferFrom.token, options.permit2TransferFrom.recipient ? options.permit2TransferFrom.recipient : ROUTER_AS_RECIPIENT, options.permit2TransferFrom.amount]);
415
+ }
416
+ }
417
+ function mapApprovalProtocol(protocolAddress) {
418
+ switch (protocolAddress.toLowerCase()) {
419
+ case '0x00000000006c3852cbef3e08e8df289169ede581':
420
+ // Seaport v1.1
421
+ return OPENSEA_CONDUIT_SPENDER_ID;
422
+ case '0x00000000000001ad428e4906ae43d8f9852d0dd6':
423
+ // Seaport v1.4
424
+ return OPENSEA_CONDUIT_SPENDER_ID;
425
+ case '0x2b2e8cda09bba9660dca5cb6233787738ad68329':
426
+ // Sudoswap
427
+ return SUDOSWAP_SPENDER_ID;
428
+ default:
429
+ throw new Error('unsupported protocol address');
379
430
  }
380
- planner.addCommand(CommandType.PERMIT, [permit, signature]);
381
431
  }
382
432
 
383
433
  var SwapRouter = /*#__PURE__*/function () {
@@ -414,7 +464,7 @@ var SwapRouter = /*#__PURE__*/function () {
414
464
  currentNativeValueInRouter = currentNativeValueInRouter.sub(tradePrice);
415
465
  }
416
466
  /**
417
- * is Uniswap Trade
467
+ * is UniswapTrade
418
468
  */
419
469
  } else if (trade.tradeType == RouterTradeType.UniswapTrade) {
420
470
  var uniswapTrade = trade;
@@ -541,6 +591,7 @@ var Market;
541
591
  Market["Sudoswap"] = "Sudoswap";
542
592
  Market["Cryptopunks"] = "cryptopunks";
543
593
  Market["X2Y2"] = "x2y2";
594
+ Market["Element"] = "element";
544
595
  })(Market || (Market = {}));
545
596
  var TokenType;
546
597
  (function (TokenType) {
@@ -6983,11 +7034,6 @@ var abi$4 = [
6983
7034
  }
6984
7035
  ];
6985
7036
 
6986
- var SeaportVersion;
6987
- (function (SeaportVersion) {
6988
- SeaportVersion[SeaportVersion["V1_1"] = 0] = "V1_1";
6989
- SeaportVersion[SeaportVersion["V1_4"] = 1] = "V1_4";
6990
- })(SeaportVersion || (SeaportVersion = {}));
6991
7037
  var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
6992
7038
  _inheritsLoose(SeaportTrade, _NFTTrade);
6993
7039
  function SeaportTrade(orders) {
@@ -7017,17 +7063,33 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
7017
7063
  } else {
7018
7064
  calldata = SeaportTrade.INTERFACE.encodeFunctionData('fulfillAvailableAdvancedOrders', [advancedOrders, [], orderFulfillments, considerationFulFillments, SeaportTrade.OPENSEA_CONDUIT_KEY, order.recipient, 100]);
7019
7065
  }
7020
- planner.addCommand(this.commandMap(order.version), [this.getTotalOrderPrice(order).toString(), calldata], config.allowRevert);
7066
+ if (!!order.inputTokenProcessing) {
7067
+ for (var _iterator3 = _createForOfIteratorHelperLoose(order.inputTokenProcessing), _step3; !(_step3 = _iterator3()).done;) {
7068
+ var inputToken = _step3.value;
7069
+ encodeInputTokenOptions(planner, {
7070
+ approval: inputToken.protocolApproval ? {
7071
+ token: inputToken.token,
7072
+ protocol: order.protocolAddress
7073
+ } : undefined,
7074
+ permit2Permit: inputToken.permit2Permit,
7075
+ permit2TransferFrom: inputToken.permit2TransferFrom ? {
7076
+ token: inputToken.token,
7077
+ amount: this.getTotalOrderPrice(order, inputToken.token).toString()
7078
+ } : undefined
7079
+ });
7080
+ }
7081
+ }
7082
+ planner.addCommand(this.commandMap(order.protocolAddress), [this.getTotalOrderPrice(order, ETH_ADDRESS).toString(), calldata], config.allowRevert);
7021
7083
  }
7022
7084
  };
7023
7085
  _proto.getBuyItems = function getBuyItems() {
7024
7086
  var buyItems = [];
7025
- for (var _iterator3 = _createForOfIteratorHelperLoose(this.orders), _step3; !(_step3 = _iterator3()).done;) {
7026
- var order = _step3.value;
7027
- for (var _iterator4 = _createForOfIteratorHelperLoose(order.items), _step4; !(_step4 = _iterator4()).done;) {
7028
- var item = _step4.value;
7029
- for (var _iterator5 = _createForOfIteratorHelperLoose(item.parameters.offer), _step5; !(_step5 = _iterator5()).done;) {
7030
- var offer = _step5.value;
7087
+ for (var _iterator4 = _createForOfIteratorHelperLoose(this.orders), _step4; !(_step4 = _iterator4()).done;) {
7088
+ var order = _step4.value;
7089
+ for (var _iterator5 = _createForOfIteratorHelperLoose(order.items), _step5; !(_step5 = _iterator5()).done;) {
7090
+ var item = _step5.value;
7091
+ for (var _iterator6 = _createForOfIteratorHelperLoose(item.parameters.offer), _step6; !(_step6 = _iterator6()).done;) {
7092
+ var offer = _step6.value;
7031
7093
  buyItems.push({
7032
7094
  tokenAddress: offer.token,
7033
7095
  tokenId: offer.identifierOrCriteria,
@@ -7038,31 +7100,41 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
7038
7100
  }
7039
7101
  return buyItems;
7040
7102
  };
7041
- _proto.getTotalOrderPrice = function getTotalOrderPrice(order) {
7103
+ _proto.getTotalOrderPrice = function getTotalOrderPrice(order, token) {
7104
+ if (token === void 0) {
7105
+ token = ETH_ADDRESS;
7106
+ }
7042
7107
  var totalOrderPrice = BigNumber.from(0);
7043
- for (var _iterator6 = _createForOfIteratorHelperLoose(order.items), _step6; !(_step6 = _iterator6()).done;) {
7044
- var item = _step6.value;
7045
- totalOrderPrice = totalOrderPrice.add(this.calculateValue(item.parameters.consideration));
7108
+ for (var _iterator7 = _createForOfIteratorHelperLoose(order.items), _step7; !(_step7 = _iterator7()).done;) {
7109
+ var item = _step7.value;
7110
+ totalOrderPrice = totalOrderPrice.add(this.calculateValue(item.parameters.consideration, token));
7046
7111
  }
7047
7112
  return totalOrderPrice;
7048
7113
  };
7049
- _proto.getTotalPrice = function getTotalPrice() {
7114
+ _proto.getTotalPrice = function getTotalPrice(token) {
7115
+ if (token === void 0) {
7116
+ token = ETH_ADDRESS;
7117
+ }
7050
7118
  var totalPrice = BigNumber.from(0);
7051
- for (var _iterator7 = _createForOfIteratorHelperLoose(this.orders), _step7; !(_step7 = _iterator7()).done;) {
7052
- var order = _step7.value;
7053
- for (var _iterator8 = _createForOfIteratorHelperLoose(order.items), _step8; !(_step8 = _iterator8()).done;) {
7054
- var item = _step8.value;
7055
- totalPrice = totalPrice.add(this.calculateValue(item.parameters.consideration));
7119
+ for (var _iterator8 = _createForOfIteratorHelperLoose(this.orders), _step8; !(_step8 = _iterator8()).done;) {
7120
+ var order = _step8.value;
7121
+ for (var _iterator9 = _createForOfIteratorHelperLoose(order.items), _step9; !(_step9 = _iterator9()).done;) {
7122
+ var item = _step9.value;
7123
+ totalPrice = totalPrice.add(this.calculateValue(item.parameters.consideration, token));
7056
7124
  }
7057
7125
  }
7058
7126
  return totalPrice;
7059
7127
  };
7060
- _proto.commandMap = function commandMap(version) {
7061
- switch (version) {
7062
- case SeaportVersion.V1_1:
7128
+ _proto.commandMap = function commandMap(protocolAddress) {
7129
+ switch (protocolAddress.toLowerCase()) {
7130
+ case '0x00000000006c3852cbef3e08e8df289169ede581':
7131
+ // Seaport v1.1
7063
7132
  return CommandType.SEAPORT;
7064
- case SeaportVersion.V1_4:
7133
+ case '0x00000000000001ad428e4906ae43d8f9852d0dd6':
7134
+ // Seaport v1.4
7065
7135
  return CommandType.SEAPORT_V1_4;
7136
+ default:
7137
+ throw new Error('unsupported Seaport address');
7066
7138
  }
7067
7139
  };
7068
7140
  _proto.getConsiderationFulfillments = function getConsiderationFulfillments(protocolDatas) {
@@ -7106,15 +7178,13 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
7106
7178
  signature: data.signature,
7107
7179
  extraData: '0x00'
7108
7180
  };
7109
- var value = this.calculateValue(data.parameters.consideration);
7110
7181
  return {
7111
- advancedOrder: advancedOrder,
7112
- value: value
7182
+ advancedOrder: advancedOrder
7113
7183
  };
7114
7184
  };
7115
- _proto.calculateValue = function calculateValue(considerations) {
7185
+ _proto.calculateValue = function calculateValue(considerations, token) {
7116
7186
  return considerations.reduce(function (amt, consideration) {
7117
- return amt.add(consideration.startAmount);
7187
+ return consideration.token == token ? amt.add(consideration.startAmount) : amt;
7118
7188
  }, BigNumber.from(0));
7119
7189
  };
7120
7190
  return SeaportTrade;
@@ -9440,7 +9510,6 @@ var UnwrapWETH = /*#__PURE__*/function () {
9440
9510
  function UnwrapWETH(amount, chainId, permit2) {
9441
9511
  this.tradeType = RouterTradeType.UnwrapWETH;
9442
9512
  this.wethAddress = WETH_ADDRESS(chainId);
9443
- this.routerAddress = UNIVERSAL_ROUTER_ADDRESS(chainId);
9444
9513
  this.amount = amount;
9445
9514
  if (!!permit2) {
9446
9515
  !(permit2.details.token === this.wethAddress) ? process.env.NODE_ENV !== "production" ? invariant(false, "must be permitting WETH address: " + this.wethAddress) : invariant(false) : void 0;
@@ -9450,12 +9519,17 @@ var UnwrapWETH = /*#__PURE__*/function () {
9450
9519
  }
9451
9520
  var _proto = UnwrapWETH.prototype;
9452
9521
  _proto.encode = function encode(planner, _) {
9453
- if (!!this.permit2Data) encodePermit(planner, this.permit2Data);
9454
- planner.addCommand(CommandType.PERMIT2_TRANSFER_FROM, [this.wethAddress, this.routerAddress, this.amount]);
9522
+ encodeInputTokenOptions(planner, {
9523
+ permit2Permit: this.permit2Data,
9524
+ permit2TransferFrom: {
9525
+ token: this.wethAddress,
9526
+ amount: this.amount.toString()
9527
+ }
9528
+ });
9455
9529
  planner.addCommand(CommandType.UNWRAP_WETH, [ROUTER_AS_RECIPIENT, this.amount]);
9456
9530
  };
9457
9531
  return UnwrapWETH;
9458
9532
  }();
9459
9533
 
9460
- export { CryptopunkTrade, FoundationTrade, LooksRareTrade, Market, NFT20Trade, NFTTrade, NFTXTrade, PERMIT2_ADDRESS, ROUTER_AS_RECIPIENT, RouterTradeType, SeaportTrade, SeaportVersion, SudoswapTrade, SwapRouter, TokenType, UNIVERSAL_ROUTER_ADDRESS, UniswapTrade, UnwrapWETH, WETH_ADDRESS, X2Y2Trade };
9534
+ 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 };
9461
9535
  //# sourceMappingURL=universal-router-sdk.esm.js.map