@uniswap/universal-router-sdk 1.4.2 → 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.
Files changed (40) hide show
  1. package/dist/entities/Command.d.ts +13 -13
  2. package/dist/entities/NFTTrade.d.ts +44 -50
  3. package/dist/entities/index.d.ts +3 -3
  4. package/dist/entities/protocols/cryptopunk.d.ts +16 -16
  5. package/dist/entities/protocols/element-market.d.ts +44 -0
  6. package/dist/entities/protocols/foundation.d.ts +19 -19
  7. package/dist/entities/protocols/index.d.ts +10 -10
  8. package/dist/entities/protocols/looksRare.d.ts +44 -44
  9. package/dist/entities/protocols/nft20.d.ts +21 -21
  10. package/dist/entities/protocols/nftx.d.ts +20 -20
  11. package/dist/entities/protocols/seaport.d.ts +68 -63
  12. package/dist/entities/protocols/sudoswap.d.ts +27 -27
  13. package/dist/entities/protocols/uniswap.d.ts +15 -15
  14. package/dist/entities/protocols/unwrapWETH.d.ts +12 -13
  15. package/dist/entities/protocols/x2y2.d.ts +28 -28
  16. package/dist/index.d.ts +3 -3
  17. package/dist/swapRouter.d.ts +38 -41
  18. package/dist/test/forge/writeInterop.d.ts +1 -1
  19. package/dist/test/orders/element.d.ts +7 -0
  20. package/dist/test/orders/looksRare.d.ts +12 -15
  21. package/dist/test/orders/seaport.d.ts +5 -4
  22. package/dist/test/orders/seaportV1_4.d.ts +4 -4
  23. package/dist/test/orders/x2y2.d.ts +6 -6
  24. package/dist/test/utils/addresses.d.ts +7 -2
  25. package/dist/test/utils/hexToDecimalString.d.ts +2 -2
  26. package/dist/test/utils/permit2.d.ts +7 -17
  27. package/dist/test/utils/uniswapData.d.ts +23 -30
  28. package/dist/universal-router-sdk.cjs.development.js +124 -41
  29. package/dist/universal-router-sdk.cjs.development.js.map +1 -1
  30. package/dist/universal-router-sdk.cjs.production.min.js +1 -1
  31. package/dist/universal-router-sdk.cjs.production.min.js.map +1 -1
  32. package/dist/universal-router-sdk.esm.js +125 -43
  33. package/dist/universal-router-sdk.esm.js.map +1 -1
  34. package/dist/utils/constants.d.ts +13 -8
  35. package/dist/utils/expandTo18Decimals.d.ts +4 -4
  36. package/dist/utils/getNativeCurrencyValue.d.ts +2 -2
  37. package/dist/utils/inputTokens.d.ts +21 -0
  38. package/dist/utils/routerCommands.d.ts +51 -44
  39. package/package.json +4 -2
  40. package/dist/utils/permit2.d.ts +0 -6
@@ -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.getTotalPrice().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,23 +7100,41 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
7038
7100
  }
7039
7101
  return buyItems;
7040
7102
  };
7041
- _proto.getTotalPrice = function getTotalPrice() {
7103
+ _proto.getTotalOrderPrice = function getTotalOrderPrice(order, token) {
7104
+ if (token === void 0) {
7105
+ token = ETH_ADDRESS;
7106
+ }
7107
+ var totalOrderPrice = BigNumber.from(0);
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));
7111
+ }
7112
+ return totalOrderPrice;
7113
+ };
7114
+ _proto.getTotalPrice = function getTotalPrice(token) {
7115
+ if (token === void 0) {
7116
+ token = ETH_ADDRESS;
7117
+ }
7042
7118
  var totalPrice = BigNumber.from(0);
7043
- for (var _iterator6 = _createForOfIteratorHelperLoose(this.orders), _step6; !(_step6 = _iterator6()).done;) {
7044
- var order = _step6.value;
7045
- for (var _iterator7 = _createForOfIteratorHelperLoose(order.items), _step7; !(_step7 = _iterator7()).done;) {
7046
- var item = _step7.value;
7047
- 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));
7048
7124
  }
7049
7125
  }
7050
7126
  return totalPrice;
7051
7127
  };
7052
- _proto.commandMap = function commandMap(version) {
7053
- switch (version) {
7054
- case SeaportVersion.V1_1:
7128
+ _proto.commandMap = function commandMap(protocolAddress) {
7129
+ switch (protocolAddress.toLowerCase()) {
7130
+ case '0x00000000006c3852cbef3e08e8df289169ede581':
7131
+ // Seaport v1.1
7055
7132
  return CommandType.SEAPORT;
7056
- case SeaportVersion.V1_4:
7133
+ case '0x00000000000001ad428e4906ae43d8f9852d0dd6':
7134
+ // Seaport v1.4
7057
7135
  return CommandType.SEAPORT_V1_4;
7136
+ default:
7137
+ throw new Error('unsupported Seaport address');
7058
7138
  }
7059
7139
  };
7060
7140
  _proto.getConsiderationFulfillments = function getConsiderationFulfillments(protocolDatas) {
@@ -7098,15 +7178,13 @@ var SeaportTrade = /*#__PURE__*/function (_NFTTrade) {
7098
7178
  signature: data.signature,
7099
7179
  extraData: '0x00'
7100
7180
  };
7101
- var value = this.calculateValue(data.parameters.consideration);
7102
7181
  return {
7103
- advancedOrder: advancedOrder,
7104
- value: value
7182
+ advancedOrder: advancedOrder
7105
7183
  };
7106
7184
  };
7107
- _proto.calculateValue = function calculateValue(considerations) {
7185
+ _proto.calculateValue = function calculateValue(considerations, token) {
7108
7186
  return considerations.reduce(function (amt, consideration) {
7109
- return amt.add(consideration.startAmount);
7187
+ return consideration.token == token ? amt.add(consideration.startAmount) : amt;
7110
7188
  }, BigNumber.from(0));
7111
7189
  };
7112
7190
  return SeaportTrade;
@@ -9432,7 +9510,6 @@ var UnwrapWETH = /*#__PURE__*/function () {
9432
9510
  function UnwrapWETH(amount, chainId, permit2) {
9433
9511
  this.tradeType = RouterTradeType.UnwrapWETH;
9434
9512
  this.wethAddress = WETH_ADDRESS(chainId);
9435
- this.routerAddress = UNIVERSAL_ROUTER_ADDRESS(chainId);
9436
9513
  this.amount = amount;
9437
9514
  if (!!permit2) {
9438
9515
  !(permit2.details.token === this.wethAddress) ? process.env.NODE_ENV !== "production" ? invariant(false, "must be permitting WETH address: " + this.wethAddress) : invariant(false) : void 0;
@@ -9442,12 +9519,17 @@ var UnwrapWETH = /*#__PURE__*/function () {
9442
9519
  }
9443
9520
  var _proto = UnwrapWETH.prototype;
9444
9521
  _proto.encode = function encode(planner, _) {
9445
- if (!!this.permit2Data) encodePermit(planner, this.permit2Data);
9446
- 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
+ });
9447
9529
  planner.addCommand(CommandType.UNWRAP_WETH, [ROUTER_AS_RECIPIENT, this.amount]);
9448
9530
  };
9449
9531
  return UnwrapWETH;
9450
9532
  }();
9451
9533
 
9452
- 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 };
9453
9535
  //# sourceMappingURL=universal-router-sdk.esm.js.map