@uniswap/universal-router-sdk 1.2.0 → 1.2.2
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 +7 -7
- package/dist/entities/NFTTrade.d.ts +41 -49
- package/dist/entities/index.d.ts +2 -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 +9 -9
- package/dist/entities/protocols/looksRare.d.ts +44 -43
- 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 +14 -47
- package/dist/entities/protocols/x2y2.d.ts +28 -19
- package/dist/index.d.ts +3 -2
- package/dist/index.js +2 -2
- package/dist/swapRouter.d.ts +32 -30
- package/dist/{narwhal-sdk.cjs.development.js → universal-router-sdk.cjs.development.js} +244 -2489
- package/dist/universal-router-sdk.cjs.development.js.map +1 -0
- package/dist/universal-router-sdk.cjs.production.min.js +2 -0
- package/dist/universal-router-sdk.cjs.production.min.js.map +1 -0
- package/dist/{narwhal-sdk.esm.js → universal-router-sdk.esm.js} +244 -2490
- package/dist/universal-router-sdk.esm.js.map +1 -0
- package/dist/utils/constants.d.ts +7 -5
- package/dist/utils/expandTo18Decimals.d.ts +4 -2
- 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
- package/dist/narwhal-sdk.cjs.development.js.map +0 -1
- package/dist/narwhal-sdk.cjs.production.min.js +0 -2
- package/dist/narwhal-sdk.cjs.production.min.js.map +0 -1
- package/dist/narwhal-sdk.esm.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var n,t,a=e(require("tiny-invariant")),i=require("@uniswap/narwhal/artifacts/contracts/Router.sol/Router.json"),r=require("@ethersproject/abi"),p=require("ethers"),s=require("@uniswap/sdk-core"),y=e(require("jsbi")),u=require("ethers/lib/utils"),d=require("@uniswap/v2-sdk"),o=require("@uniswap/v3-sdk"),m=require("@uniswap/router-sdk");function l(e,n){var t,a;e.prototype=Object.create(n.prototype),e.prototype.constructor=e,t=e,a=n,(Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,n){return e.__proto__=n,e})(t,a)}function T(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,a=new Array(n);t<n;t++)a[t]=e[t];return a}function c(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,n){if(e){if("string"==typeof e)return T(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?T(e,void 0):void 0}}(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var a=0;return function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}!function(e){e[e.PERMIT=0]="PERMIT",e[e.TRANSFER=1]="TRANSFER",e[e.V3_SWAP_EXACT_IN=2]="V3_SWAP_EXACT_IN",e[e.V3_SWAP_EXACT_OUT=3]="V3_SWAP_EXACT_OUT",e[e.V2_SWAP_EXACT_IN=4]="V2_SWAP_EXACT_IN",e[e.V2_SWAP_EXACT_OUT=5]="V2_SWAP_EXACT_OUT",e[e.SEAPORT=6]="SEAPORT",e[e.WRAP_ETH=7]="WRAP_ETH",e[e.UNWRAP_WETH=8]="UNWRAP_WETH",e[e.SWEEP=9]="SWEEP",e[e.NFTX=10]="NFTX",e[e.LOOKS_RARE_721=11]="LOOKS_RARE_721",e[e.X2Y2_721=12]="X2Y2_721",e[e.LOOKS_RARE_1155=13]="LOOKS_RARE_1155",e[e.X2Y2_1155=14]="X2Y2_1155",e[e.FOUNDATION=15]="FOUNDATION",e[e.PAY_PORTION=16]="PAY_PORTION",e[e.SUDOSWAP=18]="SUDOSWAP",e[e.NFT20=19]="NFT20",e[e.OWNER_CHECK_721=20]="OWNER_CHECK_721",e[e.OWNER_CHECK_1155=21]="OWNER_CHECK_1155",e[e.CRYPTOPUNKS=22]="CRYPTOPUNKS",e[e.PERMIT2_TRANSFER_FROM=23]="PERMIT2_TRANSFER_FROM",e[e.PERMIT2_TRANSFER_FROM_BATCH=24]="PERMIT2_TRANSFER_FROM_BATCH",e[e.PERMIT2_PERMIT_BATCH=25]="PERMIT2_PERMIT_BATCH"}(t||(t={}));var f=new Set([t.SEAPORT,t.NFTX,t.LOOKS_RARE_721,t.LOOKS_RARE_1155,t.X2Y2_721,t.X2Y2_1155,t.FOUNDATION,t.SUDOSWAP,t.NFT20]),b=((n={})[t.PERMIT]=["bytes"],n[t.TRANSFER]=["address","address","uint256"],n[t.V3_SWAP_EXACT_IN]=["address","uint256","uint256","bytes","bool"],n[t.V3_SWAP_EXACT_OUT]=["address","uint256","uint256","bytes","bool"],n[t.V2_SWAP_EXACT_IN]=["uint256","uint256","address[]","address","bool"],n[t.V2_SWAP_EXACT_OUT]=["uint256","uint256","address[]","address","bool"],n[t.SEAPORT]=["uint256","bytes"],n[t.WRAP_ETH]=["address","uint256"],n[t.UNWRAP_WETH]=["address","uint256"],n[t.SWEEP]=["address","address","uint256"],n[t.NFTX]=["uint256","bytes"],n[t.LOOKS_RARE_721]=["uint256","bytes","address","address","uint256"],n[t.X2Y2_721]=["uint256","bytes","address","address","uint256"],n[t.LOOKS_RARE_1155]=["uint256","bytes","address","address","uint256","uint256"],n[t.X2Y2_1155]=["uint256","bytes","address","address","uint256","uint256"],n[t.FOUNDATION]=["uint256","bytes","address","address","uint256"],n[t.PAY_PORTION]=["address","address","uint256"],n[t.SUDOSWAP]=["uint256","bytes"],n[t.OWNER_CHECK_721]=["address","address","uint256"],n[t.OWNER_CHECK_1155]=["address","address","uint256","uint256"],n[t.NFT20]=["uint256","bytes"],n[t.CRYPTOPUNKS]=["uint256","address","uint256"],n[t.PERMIT2_TRANSFER_FROM]=["address","address","uint160"],n[t.PERMIT2_TRANSFER_FROM_BATCH]=["bytes"],n[t.PERMIT2_PERMIT_BATCH]=["bytes"],n),v=function(){function e(){this.commands="0x",this.inputs=[]}return e.prototype.addCommand=function(e,n,t){void 0===t&&(t=!1);var a=function(e,n){return{type:e,encodedInput:u.defaultAbiCoder.encode(b[e],n)}}(e,n);if(this.inputs.push(a.encodedInput),t){if(!f.has(a.type))throw new Error("command type: "+a.type+" cannot be allowed to revert");a.type=128|a.type}this.commands=this.commands.concat(a.type.toString(16).padStart(2,"0"))},e}(),A="0x5393904db506415D941726f3Cf0404Bb167537A0",I=p.BigNumber.from(2).pow(255),M=new s.Percent(y.BigInt(50),y.BigInt(100)),S=function(){function e(e,n){this.trade=e,this.options=n}return e.fromAny=function(n,t){return x(n)?new e(n,t):Array.isArray(n)?e.from(n,t):e.from([n],t)},e.from=function(n,t){return n.length>0||a(!1),n.every((function(e){return e.tradeType==n[0].tradeType}))||a(!1),new e(new m.Trade({v2Routes:n.filter((function(e){return e instanceof d.Trade})).map((function(e){return{routev2:e.route,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),v3Routes:n.filter((function(e){return e instanceof o.Trade})).map((function(e){return{routev3:e.route,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),mixedRoutes:n.filter((function(e){return e instanceof m.MixedRouteTrade})).map((function(e){return{mixedRoute:e.route,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),tradeType:n[0].tradeType}),t)},e.prototype.encode=function(e,n){var a=!0;this.trade.inputAmount.currency.isNative&&(e.addCommand(t.WRAP_ETH,[A,this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]),a=!1);for(var i,r=c(this.trade.swaps);!(i=r()).done;){var p=i.value;switch(p.route.protocol){case m.Protocol.V2:R(e,p,this.trade.tradeType,this.options,a);break;case m.Protocol.V3:_(e,p,this.trade.tradeType,this.options,a);break;case m.Protocol.MIXED:k(e,p,this.trade.tradeType,this.options,a);break;default:throw new Error("UNSUPPORTED_TRADE_PROTOCOL")}}this.trade.outputAmount.currency.isNative?e.addCommand(t.UNWRAP_WETH,[this.options.recipient,this.trade.minimumAmountOut(this.options.slippageTolerance).quotient.toString()]):this.trade.inputAmount.currency.isNative&&(this.trade.tradeType===s.TradeType.EXACT_OUTPUT||this.trade.priceImpact.greaterThan(M))&&e.addCommand(t.UNWRAP_WETH,[this.options.recipient,0])},e}();function R(e,n,a,i,r){var p=n.route,y=new d.Trade(p,a==s.TradeType.EXACT_INPUT?n.inputAmount:n.outputAmount,a);a==s.TradeType.EXACT_INPUT?e.addCommand(t.V2_SWAP_EXACT_IN,[y.maximumAmountIn(i.slippageTolerance).quotient.toString(),y.minimumAmountOut(i.slippageTolerance).quotient.toString(),p.path.map((function(e){return e.address})),y.outputAmount.currency.isNative?A:i.recipient,r]):a==s.TradeType.EXACT_OUTPUT&&e.addCommand(t.V2_SWAP_EXACT_OUT,[y.minimumAmountOut(i.slippageTolerance).quotient.toString(),y.maximumAmountIn(i.slippageTolerance).quotient.toString(),p.path.map((function(e){return e.address})),y.outputAmount.currency.isNative?A:i.recipient,r])}function _(e,n,a,i,r){var p=n.route,y=o.Trade.createUncheckedTrade({route:p,inputAmount:n.inputAmount,outputAmount:n.outputAmount,tradeType:a}),u=o.encodeRouteToPath(p,y.tradeType===s.TradeType.EXACT_OUTPUT);a==s.TradeType.EXACT_INPUT?e.addCommand(t.V3_SWAP_EXACT_IN,[y.outputAmount.currency.isNative?A:i.recipient,y.maximumAmountIn(i.slippageTolerance).quotient.toString(),y.minimumAmountOut(i.slippageTolerance).quotient.toString(),u,r]):a==s.TradeType.EXACT_OUTPUT&&e.addCommand(t.V3_SWAP_EXACT_OUT,[y.outputAmount.currency.isNative?A:i.recipient,y.minimumAmountOut(i.slippageTolerance).quotient.toString(),y.maximumAmountIn(i.slippageTolerance).quotient.toString(),u,r])}function k(e,n,a,i,r){var p=n.route,s=n.inputAmount,y=n.outputAmount;if(1===p.pools.length){if(p.pools[0]instanceof o.Pool)return _(e,n,a,i,r);if(p.pools[0]instanceof d.Pair)return R(e,n,a,i,r);throw new Error("Invalid route type")}for(var u,l=m.MixedRouteTrade.createUncheckedTrade({route:p,inputAmount:s,outputAmount:y,tradeType:a}),T=l.maximumAmountIn(i.slippageTolerance,s).quotient.toString(),c=l.minimumAmountOut(i.slippageTolerance,y).quotient.toString(),f=m.partitionMixedRouteByProtocol(p),b=function(e){return e===f.length-1},v=p.input.wrapped,M=0;M<f.length;M++){var S=f[M];u=m.getOutputOfPools(S,v);var k=new m.MixedRouteSDK([].concat(S),S[0].token0.equals(v)?S[0].token0:S[0].token1,u),x=new m.MixedRoute(k);if(v=u,function(e){return e.pools.every((function(e){return e instanceof o.Pool}))}(x)){var O=m.encodeMixedRouteToPath(x),C=b(M)?l.outputAmount.currency.isNative?A:i.recipient:f[M+1][0].liquidityToken.address;e.addCommand(t.V3_SWAP_EXACT_IN,[C,0==M?T:I,b(M)?c:0,O,r&&0===M])}else e.addCommand(t.V2_SWAP_EXACT_IN,[0===M?T:I,b(M)?c:0,x.path.map((function(e){return e.address})),b(M)&&!l.outputAmount.currency.isNative?i.recipient:A,r&&0===M])}}function x(e){return e instanceof m.Trade||!Array.isArray(e)&&e.hasOwnProperty("routes")}var O=new p.ethers.utils.Interface([{inputs:[{internalType:"uint256",name:"deadline",type:"uint256"}],name:"AllowanceExpired",type:"error"},{inputs:[],name:"ExcessiveInvalidation",type:"error"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"InsufficientAllowance",type:"error"},{inputs:[{internalType:"uint256",name:"maxAmount",type:"uint256"}],name:"InvalidAmount",type:"error"},{inputs:[],name:"InvalidContractSignature",type:"error"},{inputs:[],name:"InvalidNonce",type:"error"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[],name:"InvalidSignatureLength",type:"error"},{inputs:[],name:"InvalidSigner",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NotSpender",type:"error"},{inputs:[{internalType:"uint256",name:"signatureDeadline",type:"uint256"}],name:"SignatureExpired",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint160",name:"amount",type:"uint160"},{indexed:!1,internalType:"uint48",name:"expiration",type:"uint48"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"address",name:"spender",type:"address"}],name:"Lockdown",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint48",name:"newNonce",type:"uint48"},{indexed:!1,internalType:"uint48",name:"oldNonce",type:"uint48"}],name:"NonceInvalidation",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!1,internalType:"uint256",name:"word",type:"uint256"},{indexed:!1,internalType:"uint256",name:"mask",type:"uint256"}],name:"UnorderedNonceInvalidation",type:"event"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"}],name:"allowance",outputs:[{internalType:"uint160",name:"amount",type:"uint160"},{internalType:"uint48",name:"expiration",type:"uint48"},{internalType:"uint48",name:"nonce",type:"uint48"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint160",name:"amount",type:"uint160"},{internalType:"uint48",name:"expiration",type:"uint48"}],name:"approve",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint48",name:"newNonce",type:"uint48"}],name:"invalidateNonces",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"wordPos",type:"uint256"},{internalType:"uint256",name:"mask",type:"uint256"}],name:"invalidateUnorderedNonces",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"spender",type:"address"}],internalType:"struct IAllowanceTransfer.TokenSpenderPair[]",name:"approvals",type:"tuple[]"}],name:"lockdown",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],name:"nonceBitmap",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{components:[{components:[{internalType:"address",name:"token",type:"address"},{internalType:"uint160",name:"amount",type:"uint160"},{internalType:"uint48",name:"expiration",type:"uint48"},{internalType:"uint48",name:"nonce",type:"uint48"}],internalType:"struct IAllowanceTransfer.PermitDetails[]",name:"details",type:"tuple[]"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"sigDeadline",type:"uint256"}],internalType:"struct IAllowanceTransfer.PermitBatch",name:"permitBatch",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{components:[{components:[{internalType:"address",name:"token",type:"address"},{internalType:"uint160",name:"amount",type:"uint160"},{internalType:"uint48",name:"expiration",type:"uint48"},{internalType:"uint48",name:"nonce",type:"uint48"}],internalType:"struct IAllowanceTransfer.PermitDetails",name:"details",type:"tuple"},{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"sigDeadline",type:"uint256"}],internalType:"struct IAllowanceTransfer.PermitSingle",name:"permitSingle",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"permit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],internalType:"struct ISignatureTransfer.TokenPermissions[]",name:"permitted",type:"tuple[]"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"}],internalType:"struct ISignatureTransfer.PermitBatchTransferFrom",name:"permit",type:"tuple"},{internalType:"address",name:"owner",type:"address"},{components:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"requestedAmount",type:"uint256"}],internalType:"struct ISignatureTransfer.SignatureTransferDetails[]",name:"transferDetails",type:"tuple[]"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"permitTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],internalType:"struct ISignatureTransfer.TokenPermissions",name:"permitted",type:"tuple"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"}],internalType:"struct ISignatureTransfer.PermitTransferFrom",name:"permit",type:"tuple"},{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"requestedAmount",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"permitTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],internalType:"struct ISignatureTransfer.TokenPermissions[]",name:"permitted",type:"tuple[]"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"}],internalType:"struct ISignatureTransfer.PermitBatchTransferFrom",name:"permit",type:"tuple"},{internalType:"address",name:"owner",type:"address"},{components:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"requestedAmount",type:"uint256"}],internalType:"struct ISignatureTransfer.SignatureTransferDetails[]",name:"transferDetails",type:"tuple[]"},{internalType:"bytes32",name:"witness",type:"bytes32"},{internalType:"string",name:"witnessTypeString",type:"string"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"permitWitnessTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],internalType:"struct ISignatureTransfer.TokenPermissions",name:"permitted",type:"tuple"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"}],internalType:"struct ISignatureTransfer.PermitTransferFrom",name:"permit",type:"tuple"},{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"requestedAmount",type:"uint256"},{internalType:"bytes32",name:"witness",type:"bytes32"},{internalType:"string",name:"witnessTypeString",type:"string"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"permitWitnessTransferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint160",name:"amount",type:"uint160"},{internalType:"address",name:"token",type:"address"}],internalType:"struct IAllowanceTransfer.AllowanceTransferDetails[]",name:"transferDetails",type:"tuple[]"}],name:"transferFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint160",name:"amount",type:"uint160"},{internalType:"address",name:"token",type:"address"}],name:"transferFrom",outputs:[],stateMutability:"nonpayable",type:"function"}]),C=function(){function e(){}return e.swapGenieCallParameters=function(n,i){i.sender||a(!1);for(var r,s=new v,y=p.BigNumber.from(0),u=1!=n.length||1!=n[0].orders.length,d=c(n);!(r=d()).done;){var o=r.value;o.encode(s,{allowRevert:u}),y=y.add(o.getTotalPrice())}return s.addCommand(t.SWEEP,["0x0000000000000000000000000000000000000000",i.sender,0]),e.encodePlan(s,y,i)},e.swapERC20CallParameters=function(n,i){var r=new v,y=S.fromAny(n,i),u=y.trade.inputAmount.currency;u.isNative&&i.inputTokenPermit&&a(!1),i.inputTokenPermit&&u instanceof s.Token&&function(e,n){var a=O.encodeFunctionData("permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)",[p.ethers.constants.AddressZero,n,n.signature]);e.addCommand(t.PERMIT,["0x"+a.slice(74)])}(r,i.inputTokenPermit);var d=p.BigNumber.from(u.isNative?y.trade.maximumAmountIn(i.slippageTolerance).quotient.toString():0);return y.encode(r,{allowRevert:!1}),e.encodePlan(r,d,{deadline:i.deadlineOrPreviousBlockhash?p.BigNumber.from(i.deadlineOrPreviousBlockhash):void 0})},e.encodePlan=function(n,t,a){void 0===a&&(a={});var i=n.commands,r=n.inputs;return{calldata:e.INTERFACE.encodeFunctionData(a.deadline?"execute(bytes,bytes[],uint256)":"execute(bytes,bytes[])",a.deadline?[i,r,a.deadline]:[i,r]),value:t.toString()}},e}();C.INTERFACE=new r.Interface(i.abi);var F,w,g=function(e,n){n.length>0||a(!1),this.market=e,this.orders=n};(F=exports.Market||(exports.Market={})).Foundation="foundation",F.LooksRare="looksrare",F.NFT20="nft20",F.NFTX="nftx",F.Seaport="seaport",F.Sudoswap="Sudoswap",F.Cryptopunks="cryptopunks",F.X2Y2="x2y2",(w=exports.TokenType||(exports.TokenType={})).ERC721="ERC721",w.ERC1155="ERC1155",w.Cryptopunk="Cryptopunk";var P=function(e){function n(n){return e.call(this,exports.Market.Cryptopunks,n)||this}l(n,e);var a=n.prototype;return a.encode=function(e,n){for(var a,i=c(this.orders);!(a=i()).done;){var r=a.value;e.addCommand(t.CRYPTOPUNKS,[r.tokenId,r.recipient,r.value],n.allowRevert)}},a.getBuyItems=function(){for(var e,t=[],a=c(this.orders);!(e=a()).done;)t.push({tokenAddress:n.CRYPTOPUNK_ADDRESS,tokenId:e.value.tokenId,tokenType:exports.TokenType.Cryptopunk});return t},a.getTotalPrice=function(){for(var e,n=p.BigNumber.from(0),t=c(this.orders);!(e=t()).done;)n=n.add(e.value.value);return n},n}(g);P.CRYPTOPUNK_ADDRESS="0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb";var h=[{inputs:[{internalType:"address payable",name:"treasury",type:"address"},{internalType:"address",name:"feth",type:"address"},{internalType:"address",name:"royaltyRegistry",type:"address"},{internalType:"uint256",name:"duration",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"FoundationTreasuryNode_Address_Is_Not_A_Contract",type:"error"},{inputs:[],name:"FoundationTreasuryNode_Caller_Not_Admin",type:"error"},{inputs:[{internalType:"uint256",name:"buyPrice",type:"uint256"}],name:"NFTMarketBuyPrice_Cannot_Buy_At_Lower_Price",type:"error"},{inputs:[],name:"NFTMarketBuyPrice_Cannot_Buy_Unset_Price",type:"error"},{inputs:[],name:"NFTMarketBuyPrice_Cannot_Cancel_Unset_Price",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"NFTMarketBuyPrice_Only_Owner_Can_Cancel_Price",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"NFTMarketBuyPrice_Only_Owner_Can_Set_Price",type:"error"},{inputs:[],name:"NFTMarketBuyPrice_Price_Already_Set",type:"error"},{inputs:[],name:"NFTMarketBuyPrice_Price_Too_High",type:"error"},{inputs:[{internalType:"address",name:"seller",type:"address"}],name:"NFTMarketBuyPrice_Seller_Mismatch",type:"error"},{inputs:[],name:"NFTMarketCore_FETH_Address_Is_Not_A_Contract",type:"error"},{inputs:[],name:"NFTMarketCore_Only_FETH_Can_Transfer_ETH",type:"error"},{inputs:[],name:"NFTMarketCore_Seller_Not_Found",type:"error"},{inputs:[],name:"NFTMarketFees_Address_Does_Not_Support_IRoyaltyRegistry",type:"error"},{inputs:[],name:"NFTMarketOffer_Cannot_Be_Made_While_In_Auction",type:"error"},{inputs:[{internalType:"uint256",name:"currentOfferAmount",type:"uint256"}],name:"NFTMarketOffer_Offer_Below_Min_Amount",type:"error"},{inputs:[{internalType:"uint256",name:"expiry",type:"uint256"}],name:"NFTMarketOffer_Offer_Expired",type:"error"},{inputs:[{internalType:"address",name:"currentOfferFrom",type:"address"}],name:"NFTMarketOffer_Offer_From_Does_Not_Match",type:"error"},{inputs:[{internalType:"uint256",name:"minOfferAmount",type:"uint256"}],name:"NFTMarketOffer_Offer_Must_Be_At_Least_Min_Amount",type:"error"},{inputs:[],name:"NFTMarketOffer_Provided_Contract_And_TokenId_Count_Must_Match",type:"error"},{inputs:[],name:"NFTMarketOffer_Reason_Required",type:"error"},{inputs:[{internalType:"uint256",name:"auctionId",type:"uint256"}],name:"NFTMarketReserveAuction_Already_Listed",type:"error"},{inputs:[{internalType:"uint256",name:"minAmount",type:"uint256"}],name:"NFTMarketReserveAuction_Bid_Must_Be_At_Least_Min_Amount",type:"error"},{inputs:[],name:"NFTMarketReserveAuction_Cannot_Admin_Cancel_Without_Reason",type:"error"},{inputs:[{internalType:"uint256",name:"reservePrice",type:"uint256"}],name:"NFTMarketReserveAuction_Cannot_Bid_Lower_Than_Reserve_Price",type:"error"},{inputs:[{internalType:"uint256",name:"endTime",type:"uint256"}],name:"NFTMarketReserveAuction_Cannot_Bid_On_Ended_Auction",type:"error"},{inputs:[],name:"NFTMarketReserveAuction_Cannot_Bid_On_Nonexistent_Auction",type:"error"},{inputs:[],name:"NFTMarketReserveAuction_Cannot_Cancel_Nonexistent_Auction",type:"error"},{inputs:[],name:"NFTMarketReserveAuction_Cannot_Finalize_Already_Settled_Auction",type:"error"},{inputs:[{internalType:"uint256",name:"endTime",type:"uint256"}],name:"NFTMarketReserveAuction_Cannot_Finalize_Auction_In_Progress",type:"error"},{inputs:[],name:"NFTMarketReserveAuction_Cannot_Rebid_Over_Outstanding_Bid",type:"error"},{inputs:[],name:"NFTMarketReserveAuction_Cannot_Update_Auction_In_Progress",type:"error"},{inputs:[{internalType:"uint256",name:"maxDuration",type:"uint256"}],name:"NFTMarketReserveAuction_Exceeds_Max_Duration",type:"error"},{inputs:[{internalType:"uint256",name:"extensionDuration",type:"uint256"}],name:"NFTMarketReserveAuction_Less_Than_Extension_Duration",type:"error"},{inputs:[],name:"NFTMarketReserveAuction_Must_Set_Non_Zero_Reserve_Price",type:"error"},{inputs:[{internalType:"address",name:"seller",type:"address"}],name:"NFTMarketReserveAuction_Not_Matching_Seller",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"NFTMarketReserveAuction_Only_Owner_Can_Update_Auction",type:"error"},{inputs:[],name:"NFTMarketReserveAuction_Price_Already_Set",type:"error"},{inputs:[],name:"NFTMarketReserveAuction_Too_Much_Value_Provided",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nftContract",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"seller",type:"address"},{indexed:!1,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"uint256",name:"protocolFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"creatorFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"sellerRev",type:"uint256"}],name:"BuyPriceAccepted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nftContract",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"BuyPriceCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nftContract",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"BuyPriceInvalidated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nftContract",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"seller",type:"address"},{indexed:!1,internalType:"uint256",name:"price",type:"uint256"}],name:"BuyPriceSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nftContract",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"address",name:"buyReferrer",type:"address"},{indexed:!1,internalType:"uint256",name:"buyReferrerProtocolFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"buyReferrerSellerFee",type:"uint256"}],name:"BuyReferralPaid",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint8",name:"version",type:"uint8"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nftContract",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"address",name:"seller",type:"address"},{indexed:!1,internalType:"uint256",name:"protocolFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"creatorFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"sellerRev",type:"uint256"}],name:"OfferAccepted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nftContract",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"string",name:"reason",type:"string"}],name:"OfferCanceledByAdmin",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nftContract",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"}],name:"OfferInvalidated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nftContract",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"buyer",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"expiration",type:"uint256"}],name:"OfferMade",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"auctionId",type:"uint256"},{indexed:!0,internalType:"address",name:"bidder",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"endTime",type:"uint256"}],name:"ReserveAuctionBidPlaced",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"auctionId",type:"uint256"}],name:"ReserveAuctionCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"auctionId",type:"uint256"},{indexed:!1,internalType:"string",name:"reason",type:"string"}],name:"ReserveAuctionCanceledByAdmin",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"seller",type:"address"},{indexed:!0,internalType:"address",name:"nftContract",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"duration",type:"uint256"},{indexed:!1,internalType:"uint256",name:"extensionDuration",type:"uint256"},{indexed:!1,internalType:"uint256",name:"reservePrice",type:"uint256"},{indexed:!1,internalType:"uint256",name:"auctionId",type:"uint256"}],name:"ReserveAuctionCreated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"auctionId",type:"uint256"},{indexed:!0,internalType:"address",name:"seller",type:"address"},{indexed:!0,internalType:"address",name:"bidder",type:"address"},{indexed:!1,internalType:"uint256",name:"protocolFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"creatorFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"sellerRev",type:"uint256"}],name:"ReserveAuctionFinalized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"auctionId",type:"uint256"}],name:"ReserveAuctionInvalidated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"auctionId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"reservePrice",type:"uint256"}],name:"ReserveAuctionUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"WithdrawalToFETH",type:"event"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address",name:"offerFrom",type:"address"},{internalType:"uint256",name:"minAmount",type:"uint256"}],name:"acceptOffer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"nftContracts",type:"address[]"},{internalType:"uint256[]",name:"tokenIds",type:"uint256[]"},{internalType:"string",name:"reason",type:"string"}],name:"adminCancelOffers",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"auctionId",type:"uint256"},{internalType:"string",name:"reason",type:"string"}],name:"adminCancelReserveAuction",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"maxPrice",type:"uint256"}],name:"buy",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"maxPrice",type:"uint256"},{internalType:"address payable",name:"referrer",type:"address"}],name:"buyV2",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"cancelBuyPrice",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"auctionId",type:"uint256"}],name:"cancelReserveAuction",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"reservePrice",type:"uint256"}],name:"createReserveAuction",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"auctionId",type:"uint256"}],name:"finalizeReserveAuction",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getBuyPrice",outputs:[{internalType:"address",name:"seller",type:"address"},{internalType:"uint256",name:"price",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"price",type:"uint256"}],name:"getFeesAndRecipients",outputs:[{internalType:"uint256",name:"protocolFee",type:"uint256"},{internalType:"uint256",name:"creatorRev",type:"uint256"},{internalType:"address payable[]",name:"creatorRecipients",type:"address[]"},{internalType:"uint256[]",name:"creatorShares",type:"uint256[]"},{internalType:"uint256",name:"sellerRev",type:"uint256"},{internalType:"address payable",name:"owner",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getFethAddress",outputs:[{internalType:"address",name:"fethAddress",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getFoundationTreasury",outputs:[{internalType:"address payable",name:"treasuryAddress",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getImmutableRoyalties",outputs:[{internalType:"address payable[]",name:"recipients",type:"address[]"},{internalType:"uint256[]",name:"splitPerRecipientInBasisPoints",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"auctionId",type:"uint256"}],name:"getMinBidAmount",outputs:[{internalType:"uint256",name:"minimum",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getMinOfferAmount",outputs:[{internalType:"uint256",name:"minimum",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address payable",name:"creator",type:"address"}],name:"getMutableRoyalties",outputs:[{internalType:"address payable[]",name:"recipients",type:"address[]"},{internalType:"uint256[]",name:"splitPerRecipientInBasisPoints",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getOffer",outputs:[{internalType:"address",name:"buyer",type:"address"},{internalType:"uint256",name:"expiration",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getOfferReferrer",outputs:[{internalType:"address payable",name:"referrer",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"auctionId",type:"uint256"}],name:"getReserveAuction",outputs:[{components:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"address payable",name:"seller",type:"address"},{internalType:"uint256",name:"duration",type:"uint256"},{internalType:"uint256",name:"extensionDuration",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"address payable",name:"bidder",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],internalType:"struct NFTMarketReserveAuction.ReserveAuction",name:"auction",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"auctionId",type:"uint256"}],name:"getReserveAuctionBidReferrer",outputs:[{internalType:"address payable",name:"referrer",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getReserveAuctionIdFor",outputs:[{internalType:"uint256",name:"auctionId",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getRoyaltyRegistry",outputs:[{internalType:"address",name:"registry",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"}],name:"getTokenCreator",outputs:[{internalType:"address payable",name:"creator",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"makeOffer",outputs:[{internalType:"uint256",name:"expiration",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"referrer",type:"address"}],name:"makeOfferV2",outputs:[{internalType:"uint256",name:"expiration",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"auctionId",type:"uint256"}],name:"placeBid",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"auctionId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"referrer",type:"address"}],name:"placeBidV2",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"nftContract",type:"address"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"price",type:"uint256"}],name:"setBuyPrice",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"auctionId",type:"uint256"},{internalType:"uint256",name:"reservePrice",type:"uint256"}],name:"updateReserveAuction",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}],N=function(e){function n(n){return e.call(this,exports.Market.Foundation,n)||this}l(n,e);var a=n.prototype;return a.encode=function(e,a){for(var i,r=c(this.orders);!(i=r()).done;){var p=i.value,s=n.INTERFACE.encodeFunctionData("buyV2",[p.tokenAddress,p.tokenId,p.price,p.referrer]);e.addCommand(t.FOUNDATION,[p.price,s,p.recipient,p.tokenAddress,p.tokenId],a.allowRevert)}},a.getBuyItems=function(){for(var e,n=[],t=c(this.orders);!(e=t()).done;){var a=e.value;n.push({tokenAddress:a.tokenAddress,tokenId:a.tokenId,tokenType:exports.TokenType.ERC721})}return n},a.getTotalPrice=function(){for(var e,n=p.BigNumber.from(0),t=c(this.orders);!(e=t()).done;)n=n.add(e.value.price);return n},n}(g);N.INTERFACE=new r.Interface(h);var E=[{inputs:[{internalType:"address",name:"_currencyManager",type:"address"},{internalType:"address",name:"_executionManager",type:"address"},{internalType:"address",name:"_royaltyFeeManager",type:"address"},{internalType:"address",name:"_WETH",type:"address"},{internalType:"address",name:"_protocolFeeRecipient",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"newMinNonce",type:"uint256"}],name:"CancelAllOrders",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256[]",name:"orderNonces",type:"uint256[]"}],name:"CancelMultipleOrders",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"currencyManager",type:"address"}],name:"NewCurrencyManager",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executionManager",type:"address"}],name:"NewExecutionManager",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"protocolFeeRecipient",type:"address"}],name:"NewProtocolFeeRecipient",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"royaltyFeeManager",type:"address"}],name:"NewRoyaltyFeeManager",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"transferSelectorNFT",type:"address"}],name:"NewTransferSelectorNFT",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"collection",type:"address"},{indexed:!0,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!0,internalType:"address",name:"royaltyRecipient",type:"address"},{indexed:!1,internalType:"address",name:"currency",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RoyaltyPayment",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"orderNonce",type:"uint256"},{indexed:!0,internalType:"address",name:"taker",type:"address"},{indexed:!0,internalType:"address",name:"maker",type:"address"},{indexed:!0,internalType:"address",name:"strategy",type:"address"},{indexed:!1,internalType:"address",name:"currency",type:"address"},{indexed:!1,internalType:"address",name:"collection",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"price",type:"uint256"}],name:"TakerAsk",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"orderNonce",type:"uint256"},{indexed:!0,internalType:"address",name:"taker",type:"address"},{indexed:!0,internalType:"address",name:"maker",type:"address"},{indexed:!0,internalType:"address",name:"strategy",type:"address"},{indexed:!1,internalType:"address",name:"currency",type:"address"},{indexed:!1,internalType:"address",name:"collection",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"price",type:"uint256"}],name:"TakerBid",type:"event"},{inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"WETH",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"minNonce",type:"uint256"}],name:"cancelAllOrdersForSender",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256[]",name:"orderNonces",type:"uint256[]"}],name:"cancelMultipleMakerOrders",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"currencyManager",outputs:[{internalType:"contract ICurrencyManager",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"executionManager",outputs:[{internalType:"contract IExecutionManager",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"orderNonce",type:"uint256"}],name:"isUserOrderNonceExecutedOrCancelled",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"bool",name:"isOrderAsk",type:"bool"},{internalType:"address",name:"taker",type:"address"},{internalType:"uint256",name:"price",type:"uint256"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"minPercentageToAsk",type:"uint256"},{internalType:"bytes",name:"params",type:"bytes"}],internalType:"struct OrderTypes.TakerOrder",name:"takerBid",type:"tuple"},{components:[{internalType:"bool",name:"isOrderAsk",type:"bool"},{internalType:"address",name:"signer",type:"address"},{internalType:"address",name:"collection",type:"address"},{internalType:"uint256",name:"price",type:"uint256"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"strategy",type:"address"},{internalType:"address",name:"currency",type:"address"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"uint256",name:"minPercentageToAsk",type:"uint256"},{internalType:"bytes",name:"params",type:"bytes"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],internalType:"struct OrderTypes.MakerOrder",name:"makerAsk",type:"tuple"}],name:"matchAskWithTakerBid",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"bool",name:"isOrderAsk",type:"bool"},{internalType:"address",name:"taker",type:"address"},{internalType:"uint256",name:"price",type:"uint256"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"minPercentageToAsk",type:"uint256"},{internalType:"bytes",name:"params",type:"bytes"}],internalType:"struct OrderTypes.TakerOrder",name:"takerBid",type:"tuple"},{components:[{internalType:"bool",name:"isOrderAsk",type:"bool"},{internalType:"address",name:"signer",type:"address"},{internalType:"address",name:"collection",type:"address"},{internalType:"uint256",name:"price",type:"uint256"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"strategy",type:"address"},{internalType:"address",name:"currency",type:"address"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"uint256",name:"minPercentageToAsk",type:"uint256"},{internalType:"bytes",name:"params",type:"bytes"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],internalType:"struct OrderTypes.MakerOrder",name:"makerAsk",type:"tuple"}],name:"matchAskWithTakerBidUsingETHAndWETH",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"bool",name:"isOrderAsk",type:"bool"},{internalType:"address",name:"taker",type:"address"},{internalType:"uint256",name:"price",type:"uint256"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"minPercentageToAsk",type:"uint256"},{internalType:"bytes",name:"params",type:"bytes"}],internalType:"struct OrderTypes.TakerOrder",name:"takerAsk",type:"tuple"},{components:[{internalType:"bool",name:"isOrderAsk",type:"bool"},{internalType:"address",name:"signer",type:"address"},{internalType:"address",name:"collection",type:"address"},{internalType:"uint256",name:"price",type:"uint256"},{internalType:"uint256",name:"tokenId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"strategy",type:"address"},{internalType:"address",name:"currency",type:"address"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"uint256",name:"minPercentageToAsk",type:"uint256"},{internalType:"bytes",name:"params",type:"bytes"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],internalType:"struct OrderTypes.MakerOrder",name:"makerBid",type:"tuple"}],name:"matchBidWithTakerAsk",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"protocolFeeRecipient",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"royaltyFeeManager",outputs:[{internalType:"contract IRoyaltyFeeManager",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"transferSelectorNFT",outputs:[{internalType:"contract ITransferSelectorNFT",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_currencyManager",type:"address"}],name:"updateCurrencyManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_executionManager",type:"address"}],name:"updateExecutionManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_protocolFeeRecipient",type:"address"}],name:"updateProtocolFeeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_royaltyFeeManager",type:"address"}],name:"updateRoyaltyFeeManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_transferSelectorNFT",type:"address"}],name:"updateTransferSelectorNFT",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"userMinOrderNonce",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],V=function(e){function n(n){return e.call(this,exports.Market.LooksRare,n)||this}l(n,e);var a=n.prototype;return a.encode=function(e,a){for(var i,r=c(this.orders);!(i=r()).done;){var p=i.value,s=n.INTERFACE.encodeFunctionData("matchAskWithTakerBidUsingETHAndWETH",[p.takerOrder,p.makerOrder]);e.addCommand(t.LOOKS_RARE_721,[p.makerOrder.price,s,p.recipient,p.makerOrder.collection,p.makerOrder.tokenId],a.allowRevert)}},a.getBuyItems=function(){for(var e,n=[],t=c(this.orders);!(e=t()).done;){var a=e.value;n.push({tokenAddress:a.makerOrder.collection,tokenId:a.makerOrder.tokenId,tokenType:exports.TokenType.ERC721})}return n},a.getTotalPrice=function(){for(var e,n=p.BigNumber.from(0),t=c(this.orders);!(e=t()).done;)n=n.add(e.value.makerOrder.price);return n},n}(g);V.INTERFACE=new r.Interface(E);var L=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"ETH",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"NFT20",outputs:[{internalType:"contract INFT20Factory",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"UNIV2",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"UNIV3",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"WETH",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_nft",type:"address"},{internalType:"uint256[]",name:"_toIds",type:"uint256[]"},{internalType:"uint256[]",name:"_toAmounts",type:"uint256[]"},{internalType:"address",name:"_receipient",type:"address"},{internalType:"uint24",name:"_fee",type:"uint24"},{internalType:"bool",name:"isV3",type:"bool"}],name:"ethForNft",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"_nft",type:"address"},{internalType:"uint256[]",name:"_ids",type:"uint256[]"},{internalType:"uint256[]",name:"_amounts",type:"uint256[]"},{internalType:"bool",name:"isErc721",type:"bool"},{internalType:"uint24",name:"_fee",type:"uint24"},{internalType:"bool",name:"isV3",type:"bool"}],name:"nftForEth",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"uint256",name:"tokenAmount",type:"uint256"},{internalType:"address",name:"sendTo",type:"address"}],name:"recoverERC20",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_registry",type:"address"}],name:"setNFT20",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawEth",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],B=function(e){function n(n){return e.call(this,exports.Market.NFT20,n)||this}l(n,e);var a=n.prototype;return a.encode=function(e,a){for(var i,r=c(this.orders);!(i=r()).done;){var p=i.value,s=n.INTERFACE.encodeFunctionData("ethForNft",[p.tokenAddress,p.tokenIds,p.tokenAmounts,p.recipient,p.fee,p.isV3]);e.addCommand(t.NFT20,[p.value,s],a.allowRevert)}},a.getBuyItems=function(){for(var e,n=[],t=c(this.orders);!(e=t()).done;)for(var a,i=e.value,r=c(i.tokenIds);!(a=r()).done;)n.push({tokenAddress:i.tokenAddress,tokenId:a.value,tokenType:exports.TokenType.ERC721});return n},a.getTotalPrice=function(){for(var e,n=p.BigNumber.from(0),t=c(this.orders);!(e=t()).done;)n=n.add(e.value.value);return n},n}(g);B.INTERFACE=new r.Interface(L);var H=[{inputs:[{internalType:"address",name:"_nftxFactory",type:"address"},{internalType:"address",name:"_sushiRouter",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"count",type:"uint256"},{indexed:!1,internalType:"uint256",name:"ethSpent",type:"uint256"},{indexed:!1,internalType:"address",name:"to",type:"address"}],name:"Buy",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"count",type:"uint256"},{indexed:!1,internalType:"uint256",name:"ethReceived",type:"uint256"},{indexed:!1,internalType:"address",name:"to",type:"address"}],name:"Sell",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"count",type:"uint256"},{indexed:!1,internalType:"uint256",name:"ethSpent",type:"uint256"},{indexed:!1,internalType:"address",name:"to",type:"address"}],name:"Swap",type:"event"},{inputs:[],name:"WETH",outputs:[{internalType:"contract IWETH",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vaultId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256[]",name:"specificIds",type:"uint256[]"},{internalType:"address[]",name:"path",type:"address[]"},{internalType:"address",name:"to",type:"address"}],name:"buyAndRedeem",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"vaultId",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256[]",name:"specificIds",type:"uint256[]"},{internalType:"uint256",name:"maxWethIn",type:"uint256"},{internalType:"address[]",name:"path",type:"address[]"},{internalType:"address",name:"to",type:"address"}],name:"buyAndRedeemWETH",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"vaultId",type:"uint256"},{internalType:"uint256[]",name:"idsIn",type:"uint256[]"},{internalType:"uint256[]",name:"amounts",type:"uint256[]"},{internalType:"uint256[]",name:"specificIds",type:"uint256[]"},{internalType:"address[]",name:"path",type:"address[]"},{internalType:"address",name:"to",type:"address"}],name:"buyAndSwap1155",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"vaultId",type:"uint256"},{internalType:"uint256[]",name:"idsIn",type:"uint256[]"},{internalType:"uint256[]",name:"amounts",type:"uint256[]"},{internalType:"uint256[]",name:"specificIds",type:"uint256[]"},{internalType:"uint256",name:"maxWethIn",type:"uint256"},{internalType:"address[]",name:"path",type:"address[]"},{internalType:"address",name:"to",type:"address"}],name:"buyAndSwap1155WETH",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"vaultId",type:"uint256"},{internalType:"uint256[]",name:"idsIn",type:"uint256[]"},{internalType:"uint256[]",name:"specificIds",type:"uint256[]"},{internalType:"address[]",name:"path",type:"address[]"},{internalType:"address",name:"to",type:"address"}],name:"buyAndSwap721",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"vaultId",type:"uint256"},{internalType:"uint256[]",name:"idsIn",type:"uint256[]"},{internalType:"uint256[]",name:"specificIds",type:"uint256[]"},{internalType:"uint256",name:"maxWethIn",type:"uint256"},{internalType:"address[]",name:"path",type:"address[]"},{internalType:"address",name:"to",type:"address"}],name:"buyAndSwap721WETH",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"lpStaking",outputs:[{internalType:"contract INFTXLPStaking",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"vaultId",type:"uint256"},{internalType:"uint256[]",name:"ids",type:"uint256[]"},{internalType:"uint256[]",name:"amounts",type:"uint256[]"},{internalType:"uint256",name:"minWethOut",type:"uint256"},{internalType:"address[]",name:"path",type:"address[]"},{internalType:"address",name:"to",type:"address"}],name:"mintAndSell1155",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"vaultId",type:"uint256"},{internalType:"uint256[]",name:"ids",type:"uint256[]"},{internalType:"uint256[]",name:"amounts",type:"uint256[]"},{internalType:"uint256",name:"minWethOut",type:"uint256"},{internalType:"address[]",name:"path",type:"address[]"},{internalType:"address",name:"to",type:"address"}],name:"mintAndSell1155WETH",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"vaultId",type:"uint256"},{internalType:"uint256[]",name:"ids",type:"uint256[]"},{internalType:"uint256",name:"minEthOut",type:"uint256"},{internalType:"address[]",name:"path",type:"address[]"},{internalType:"address",name:"to",type:"address"}],name:"mintAndSell721",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"vaultId",type:"uint256"},{internalType:"uint256[]",name:"ids",type:"uint256[]"},{internalType:"uint256",name:"minWethOut",type:"uint256"},{internalType:"address[]",name:"path",type:"address[]"},{internalType:"address",name:"to",type:"address"}],name:"mintAndSell721WETH",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"nftxFactory",outputs:[{internalType:"contract INFTXVaultFactory",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC721Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"rescue",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"sushiRouter",outputs:[{internalType:"contract IUniswapV2Router01",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}],W=function(e){function n(n){return e.call(this,exports.Market.NFTX,n)||this}l(n,e);var a=n.prototype;return a.encode=function(e,a){for(var i,r=c(this.orders);!(i=r()).done;){var p=i.value,y=n.INTERFACE.encodeFunctionData("buyAndRedeem",[p.vaultId,p.tokenIds.length,p.tokenIds,[s.Ether.onChain(1).wrapped.address,p.vaultAddress],p.recipient]);e.addCommand(t.NFTX,[p.value,y],a.allowRevert)}},a.getBuyItems=function(){for(var e,n=[],t=c(this.orders);!(e=t()).done;)for(var a,i=e.value,r=c(i.tokenIds);!(a=r()).done;)n.push({tokenAddress:i.tokenAddress,tokenId:a.value,tokenType:exports.TokenType.ERC721});return n},a.getTotalPrice=function(){for(var e,n=p.BigNumber.from(0),t=c(this.orders);!(e=t()).done;)n=n.add(e.value.value);return n},n}(g);W.INTERFACE=new r.Interface(H);var D=[{inputs:[{internalType:"address",name:"conduitController",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"BadContractSignature",type:"error"},{inputs:[],name:"BadFraction",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"BadReturnValueFromERC20OnTransfer",type:"error"},{inputs:[{internalType:"uint8",name:"v",type:"uint8"}],name:"BadSignatureV",type:"error"},{inputs:[],name:"ConsiderationCriteriaResolverOutOfRange",type:"error"},{inputs:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"considerationIndex",type:"uint256"},{internalType:"uint256",name:"shortfallAmount",type:"uint256"}],name:"ConsiderationNotMet",type:"error"},{inputs:[],name:"CriteriaNotEnabledForItem",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256[]",name:"identifiers",type:"uint256[]"},{internalType:"uint256[]",name:"amounts",type:"uint256[]"}],name:"ERC1155BatchTransferGenericFailure",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"EtherTransferGenericFailure",type:"error"},{inputs:[],name:"InexactFraction",type:"error"},{inputs:[],name:"InsufficientEtherSupplied",type:"error"},{inputs:[],name:"Invalid1155BatchTransferEncoding",type:"error"},{inputs:[],name:"InvalidBasicOrderParameterEncoding",type:"error"},{inputs:[{internalType:"address",name:"conduit",type:"address"}],name:"InvalidCallToConduit",type:"error"},{inputs:[],name:"InvalidCanceller",type:"error"},{inputs:[{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"address",name:"conduit",type:"address"}],name:"InvalidConduit",type:"error"},{inputs:[],name:"InvalidERC721TransferAmount",type:"error"},{inputs:[],name:"InvalidFulfillmentComponentData",type:"error"},{inputs:[{internalType:"uint256",name:"value",type:"uint256"}],name:"InvalidMsgValue",type:"error"},{inputs:[],name:"InvalidNativeOfferItem",type:"error"},{inputs:[],name:"InvalidProof",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"InvalidRestrictedOrder",type:"error"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[],name:"InvalidSigner",type:"error"},{inputs:[],name:"InvalidTime",type:"error"},{inputs:[],name:"MismatchedFulfillmentOfferAndConsiderationComponents",type:"error"},{inputs:[{internalType:"enum Side",name:"side",type:"uint8"}],name:"MissingFulfillmentComponentOnAggregation",type:"error"},{inputs:[],name:"MissingItemAmount",type:"error"},{inputs:[],name:"MissingOriginalConsiderationItems",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"NoContract",type:"error"},{inputs:[],name:"NoReentrantCalls",type:"error"},{inputs:[],name:"NoSpecifiedOrdersAvailable",type:"error"},{inputs:[],name:"OfferAndConsiderationRequiredOnFulfillment",type:"error"},{inputs:[],name:"OfferCriteriaResolverOutOfRange",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderAlreadyFilled",type:"error"},{inputs:[],name:"OrderCriteriaResolverOutOfRange",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderIsCancelled",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderPartiallyFilled",type:"error"},{inputs:[],name:"PartialFillsNotEnabledForOrder",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TokenTransferGenericFailure",type:"error"},{inputs:[],name:"UnresolvedConsiderationCriteria",type:"error"},{inputs:[],name:"UnresolvedOfferCriteria",type:"error"},{inputs:[],name:"UnusedItemParameters",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newCounter",type:"uint256"},{indexed:!0,internalType:"address",name:"offerer",type:"address"}],name:"CounterIncremented",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{indexed:!0,internalType:"address",name:"offerer",type:"address"},{indexed:!0,internalType:"address",name:"zone",type:"address"}],name:"OrderCancelled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{indexed:!0,internalType:"address",name:"offerer",type:"address"},{indexed:!0,internalType:"address",name:"zone",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],indexed:!1,internalType:"struct SpentItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],indexed:!1,internalType:"struct ReceivedItem[]",name:"consideration",type:"tuple[]"}],name:"OrderFulfilled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{indexed:!0,internalType:"address",name:"offerer",type:"address"},{indexed:!0,internalType:"address",name:"zone",type:"address"}],name:"OrderValidated",type:"event"},{inputs:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"counter",type:"uint256"}],internalType:"struct OrderComponents[]",name:"orders",type:"tuple[]"}],name:"cancel",outputs:[{internalType:"bool",name:"cancelled",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder",name:"advancedOrder",type:"tuple"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"criteriaResolvers",type:"tuple[]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"}],name:"fulfillAdvancedOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder[]",name:"advancedOrders",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"criteriaResolvers",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"offerFulfillments",type:"tuple[][]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"considerationFulfillments",type:"tuple[][]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"maximumFulfilled",type:"uint256"}],name:"fulfillAvailableAdvancedOrders",outputs:[{internalType:"bool[]",name:"availableOrders",type:"bool[]"},{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"executions",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"orders",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"offerFulfillments",type:"tuple[][]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"considerationFulfillments",type:"tuple[][]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"maximumFulfilled",type:"uint256"}],name:"fulfillAvailableOrders",outputs:[{internalType:"bool[]",name:"availableOrders",type:"bool[]"},{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"executions",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"considerationToken",type:"address"},{internalType:"uint256",name:"considerationIdentifier",type:"uint256"},{internalType:"uint256",name:"considerationAmount",type:"uint256"},{internalType:"address payable",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{internalType:"address",name:"offerToken",type:"address"},{internalType:"uint256",name:"offerIdentifier",type:"uint256"},{internalType:"uint256",name:"offerAmount",type:"uint256"},{internalType:"enum BasicOrderType",name:"basicOrderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"offererConduitKey",type:"bytes32"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalAdditionalRecipients",type:"uint256"},{components:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct AdditionalRecipient[]",name:"additionalRecipients",type:"tuple[]"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct BasicOrderParameters",name:"parameters",type:"tuple"}],name:"fulfillBasicOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order",name:"order",type:"tuple"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"}],name:"fulfillOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"offerer",type:"address"}],name:"getCounter",outputs:[{internalType:"uint256",name:"counter",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"counter",type:"uint256"}],internalType:"struct OrderComponents",name:"order",type:"tuple"}],name:"getOrderHash",outputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"getOrderStatus",outputs:[{internalType:"bool",name:"isValidated",type:"bool"},{internalType:"bool",name:"isCancelled",type:"bool"},{internalType:"uint256",name:"totalFilled",type:"uint256"},{internalType:"uint256",name:"totalSize",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"incrementCounter",outputs:[{internalType:"uint256",name:"newCounter",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"information",outputs:[{internalType:"string",name:"version",type:"string"},{internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{internalType:"address",name:"conduitController",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder[]",name:"advancedOrders",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"criteriaResolvers",type:"tuple[]"},{components:[{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"offerComponents",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"considerationComponents",type:"tuple[]"}],internalType:"struct Fulfillment[]",name:"fulfillments",type:"tuple[]"}],name:"matchAdvancedOrders",outputs:[{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"executions",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"orders",type:"tuple[]"},{components:[{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"offerComponents",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"considerationComponents",type:"tuple[]"}],internalType:"struct Fulfillment[]",name:"fulfillments",type:"tuple[]"}],name:"matchOrders",outputs:[{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"executions",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"contractName",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"orders",type:"tuple[]"}],name:"validate",outputs:[{internalType:"bool",name:"validated",type:"bool"}],stateMutability:"nonpayable",type:"function"}],U=function(e){function n(n){return e.call(this,exports.Market.Seaport,n)||this}l(n,e);var a=n.prototype;return a.encode=function(e,a){for(var i,r=c(this.orders);!(i=r()).done;){for(var p,s=i.value,y=[],u=s.items.map((function(e,n){return[{orderIndex:n,itemIndex:0}]})),d=this.getConsiderationFulfillments(s.items),o=c(s.items);!(p=o()).done;){var m=this.getAdvancedOrderParams(p.value);y.push(m.advancedOrder)}var l;l=1==y.length?n.INTERFACE.encodeFunctionData("fulfillAdvancedOrder",[y[0],[],n.OPENSEA_CONDUIT_KEY,s.recipient]):n.INTERFACE.encodeFunctionData("fulfillAvailableAdvancedOrders",[y,[],u,d,n.OPENSEA_CONDUIT_KEY,s.recipient,100]),e.addCommand(t.SEAPORT,[this.getTotalPrice().toString(),l],a.allowRevert)}},a.getBuyItems=function(){for(var e,n=[],t=c(this.orders);!(e=t()).done;)for(var a,i=c(e.value.items);!(a=i()).done;)for(var r,p=c(a.value.parameters.offer);!(r=p()).done;){var s=r.value;n.push({tokenAddress:s.token,tokenId:s.identifierOrCriteria,tokenType:exports.TokenType.ERC721})}return n},a.getTotalPrice=function(){for(var e,n=p.BigNumber.from(0),t=c(this.orders);!(e=t()).done;)for(var a,i=c(e.value.items);!(a=i()).done;)n=n.add(this.calculateValue(a.value.parameters.consideration));return n},a.getConsiderationFulfillments=function(e){var n=[],t=[];for(var a in e){var i=e[a],r=function(e){var r=i.parameters.consideration[e];-1===t.findIndex((function(e){return e===r.recipient}))&&t.push(r.recipient);var p=t.findIndex((function(e){return e===r.recipient}));n[p]?n[p].push({orderIndex:a,itemIndex:e}):n.push([{orderIndex:a,itemIndex:e}])};for(var p in i.parameters.consideration)r(p)}return n},a.getAdvancedOrderParams=function(e){return{advancedOrder:{parameters:e.parameters,numerator:p.BigNumber.from("1"),denominator:p.BigNumber.from("1"),signature:e.signature,extraData:"0x00"},value:this.calculateValue(e.parameters.consideration)}},a.calculateValue=function(e){return e.reduce((function(e,n){return e.add(n.startAmount)}),p.BigNumber.from(0))},n}(g);U.INTERFACE=new r.Interface(D),U.OPENSEA_CONDUIT_KEY="0x0000007b02230091a7ed01230072f7006a004d60a8d4e71d599b8104250f0000";var X=[{inputs:[{internalType:"contract ILSSVMPairFactoryLike",name:"_factory",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"factory",outputs:[{internalType:"contract ILSSVMPairFactoryLike",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract ERC20",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"enum ILSSVMPairFactoryLike.PairVariant",name:"variant",type:"uint8"}],name:"pairTransferERC20From",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC721",name:"nft",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"id",type:"uint256"},{internalType:"enum ILSSVMPairFactoryLike.PairVariant",name:"variant",type:"uint8"}],name:"pairTransferNFTFrom",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256",name:"numItems",type:"uint256"}],internalType:"struct LSSVMRouter.PairSwapAny",name:"swapInfo",type:"tuple"},{internalType:"uint256",name:"maxCost",type:"uint256"}],internalType:"struct LSSVMRouter.RobustPairSwapAny[]",name:"swapList",type:"tuple[]"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"address",name:"nftRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"robustSwapERC20ForAnyNFTs",outputs:[{internalType:"uint256",name:"remainingValue",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific",name:"swapInfo",type:"tuple"},{internalType:"uint256",name:"maxCost",type:"uint256"}],internalType:"struct LSSVMRouter.RobustPairSwapSpecific[]",name:"swapList",type:"tuple[]"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"address",name:"nftRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"robustSwapERC20ForSpecificNFTs",outputs:[{internalType:"uint256",name:"remainingValue",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific",name:"swapInfo",type:"tuple"},{internalType:"uint256",name:"maxCost",type:"uint256"}],internalType:"struct LSSVMRouter.RobustPairSwapSpecific[]",name:"tokenToNFTTrades",type:"tuple[]"},{components:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific",name:"swapInfo",type:"tuple"},{internalType:"uint256",name:"minOutput",type:"uint256"}],internalType:"struct LSSVMRouter.RobustPairSwapSpecificForToken[]",name:"nftToTokenTrades",type:"tuple[]"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"address payable",name:"tokenRecipient",type:"address"},{internalType:"address",name:"nftRecipient",type:"address"}],internalType:"struct LSSVMRouter.RobustPairNFTsFoTokenAndTokenforNFTsTrade",name:"params",type:"tuple"}],name:"robustSwapERC20ForSpecificNFTsAndNFTsToToken",outputs:[{internalType:"uint256",name:"remainingValue",type:"uint256"},{internalType:"uint256",name:"outputAmount",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256",name:"numItems",type:"uint256"}],internalType:"struct LSSVMRouter.PairSwapAny",name:"swapInfo",type:"tuple"},{internalType:"uint256",name:"maxCost",type:"uint256"}],internalType:"struct LSSVMRouter.RobustPairSwapAny[]",name:"swapList",type:"tuple[]"},{internalType:"address payable",name:"ethRecipient",type:"address"},{internalType:"address",name:"nftRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"robustSwapETHForAnyNFTs",outputs:[{internalType:"uint256",name:"remainingValue",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific",name:"swapInfo",type:"tuple"},{internalType:"uint256",name:"maxCost",type:"uint256"}],internalType:"struct LSSVMRouter.RobustPairSwapSpecific[]",name:"swapList",type:"tuple[]"},{internalType:"address payable",name:"ethRecipient",type:"address"},{internalType:"address",name:"nftRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"robustSwapETHForSpecificNFTs",outputs:[{internalType:"uint256",name:"remainingValue",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific",name:"swapInfo",type:"tuple"},{internalType:"uint256",name:"maxCost",type:"uint256"}],internalType:"struct LSSVMRouter.RobustPairSwapSpecific[]",name:"tokenToNFTTrades",type:"tuple[]"},{components:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific",name:"swapInfo",type:"tuple"},{internalType:"uint256",name:"minOutput",type:"uint256"}],internalType:"struct LSSVMRouter.RobustPairSwapSpecificForToken[]",name:"nftToTokenTrades",type:"tuple[]"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"address payable",name:"tokenRecipient",type:"address"},{internalType:"address",name:"nftRecipient",type:"address"}],internalType:"struct LSSVMRouter.RobustPairNFTsFoTokenAndTokenforNFTsTrade",name:"params",type:"tuple"}],name:"robustSwapETHForSpecificNFTsAndNFTsToToken",outputs:[{internalType:"uint256",name:"remainingValue",type:"uint256"},{internalType:"uint256",name:"outputAmount",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific",name:"swapInfo",type:"tuple"},{internalType:"uint256",name:"minOutput",type:"uint256"}],internalType:"struct LSSVMRouter.RobustPairSwapSpecificForToken[]",name:"swapList",type:"tuple[]"},{internalType:"address payable",name:"tokenRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"robustSwapNFTsForToken",outputs:[{internalType:"uint256",name:"outputAmount",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256",name:"numItems",type:"uint256"}],internalType:"struct LSSVMRouter.PairSwapAny[]",name:"swapList",type:"tuple[]"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"address",name:"nftRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"swapERC20ForAnyNFTs",outputs:[{internalType:"uint256",name:"remainingValue",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific[]",name:"swapList",type:"tuple[]"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"address",name:"nftRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"swapERC20ForSpecificNFTs",outputs:[{internalType:"uint256",name:"remainingValue",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256",name:"numItems",type:"uint256"}],internalType:"struct LSSVMRouter.PairSwapAny[]",name:"swapList",type:"tuple[]"},{internalType:"address payable",name:"ethRecipient",type:"address"},{internalType:"address",name:"nftRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"swapETHForAnyNFTs",outputs:[{internalType:"uint256",name:"remainingValue",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific[]",name:"swapList",type:"tuple[]"},{internalType:"address payable",name:"ethRecipient",type:"address"},{internalType:"address",name:"nftRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"swapETHForSpecificNFTs",outputs:[{internalType:"uint256",name:"remainingValue",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific[]",name:"nftToTokenTrades",type:"tuple[]"},{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256",name:"numItems",type:"uint256"}],internalType:"struct LSSVMRouter.PairSwapAny[]",name:"tokenToNFTTrades",type:"tuple[]"}],internalType:"struct LSSVMRouter.NFTsForAnyNFTsTrade",name:"trade",type:"tuple"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"uint256",name:"minOutput",type:"uint256"},{internalType:"address",name:"nftRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"swapNFTsForAnyNFTsThroughERC20",outputs:[{internalType:"uint256",name:"outputAmount",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific[]",name:"nftToTokenTrades",type:"tuple[]"},{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256",name:"numItems",type:"uint256"}],internalType:"struct LSSVMRouter.PairSwapAny[]",name:"tokenToNFTTrades",type:"tuple[]"}],internalType:"struct LSSVMRouter.NFTsForAnyNFTsTrade",name:"trade",type:"tuple"},{internalType:"uint256",name:"minOutput",type:"uint256"},{internalType:"address payable",name:"ethRecipient",type:"address"},{internalType:"address",name:"nftRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"swapNFTsForAnyNFTsThroughETH",outputs:[{internalType:"uint256",name:"outputAmount",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific[]",name:"nftToTokenTrades",type:"tuple[]"},{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific[]",name:"tokenToNFTTrades",type:"tuple[]"}],internalType:"struct LSSVMRouter.NFTsForSpecificNFTsTrade",name:"trade",type:"tuple"},{internalType:"uint256",name:"inputAmount",type:"uint256"},{internalType:"uint256",name:"minOutput",type:"uint256"},{internalType:"address",name:"nftRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"swapNFTsForSpecificNFTsThroughERC20",outputs:[{internalType:"uint256",name:"outputAmount",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific[]",name:"nftToTokenTrades",type:"tuple[]"},{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific[]",name:"tokenToNFTTrades",type:"tuple[]"}],internalType:"struct LSSVMRouter.NFTsForSpecificNFTsTrade",name:"trade",type:"tuple"},{internalType:"uint256",name:"minOutput",type:"uint256"},{internalType:"address payable",name:"ethRecipient",type:"address"},{internalType:"address",name:"nftRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"swapNFTsForSpecificNFTsThroughETH",outputs:[{internalType:"uint256",name:"outputAmount",type:"uint256"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"contract LSSVMPair",name:"pair",type:"address"},{internalType:"uint256[]",name:"nftIds",type:"uint256[]"}],internalType:"struct LSSVMRouter.PairSwapSpecific[]",name:"swapList",type:"tuple[]"},{internalType:"uint256",name:"minOutput",type:"uint256"},{internalType:"address",name:"tokenRecipient",type:"address"},{internalType:"uint256",name:"deadline",type:"uint256"}],name:"swapNFTsForToken",outputs:[{internalType:"uint256",name:"outputAmount",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}],K=function(e){function n(n){return e.call(this,exports.Market.Sudoswap,n)||this}l(n,e);var a=n.prototype;return a.encode=function(e,a){for(var i,r=c(this.orders);!(i=r()).done;){var s=i.value,y=n.INTERFACE.encodeFunctionData("robustSwapETHForSpecificNFTs",[s.swaps.map((function(e){return{swapInfo:e.swapInfo,maxCost:e.maxCost}})),s.ethRecipient,s.nftRecipient,s.deadline]),u=s.swaps.reduce((function(e,n){return e.add(n.maxCost)}),p.BigNumber.from(0));e.addCommand(t.SUDOSWAP,[u,y],a.allowRevert)}},a.getBuyItems=function(){for(var e,n=[],t=c(this.orders);!(e=t()).done;)for(var a,i=c(e.value.swaps);!(a=i()).done;)for(var r,p=a.value,s=c(p.swapInfo.nftIds);!(r=s()).done;)n.push({tokenAddress:p.tokenAddress,tokenId:r.value,tokenType:exports.TokenType.ERC721});return n},a.getTotalPrice=function(){for(var e,n=p.BigNumber.from(0),t=c(this.orders);!(e=t()).done;)for(var a,i=c(e.value.swaps);!(a=i()).done;)n=n.add(a.value.maxCost);return n},n}(g);K.INTERFACE=new r.Interface(X);var q=[{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"itemHash",type:"bytes32"},{indexed:!1,internalType:"address",name:"currency",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"incentive",type:"uint256"}],name:"EvAuctionRefund",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"itemHash",type:"bytes32"}],name:"EvCancel",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"delegate",type:"address"},{indexed:!1,internalType:"bool",name:"isRemoval",type:"bool"}],name:"EvDelegate",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"index",type:"uint256"},{indexed:!1,internalType:"bytes",name:"error",type:"bytes"}],name:"EvFailure",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newValue",type:"uint256"}],name:"EvFeeCapUpdate",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"itemHash",type:"bytes32"},{indexed:!1,internalType:"address",name:"maker",type:"address"},{indexed:!1,internalType:"address",name:"taker",type:"address"},{indexed:!1,internalType:"uint256",name:"orderSalt",type:"uint256"},{indexed:!1,internalType:"uint256",name:"settleSalt",type:"uint256"},{indexed:!1,internalType:"uint256",name:"intent",type:"uint256"},{indexed:!1,internalType:"uint256",name:"delegateType",type:"uint256"},{indexed:!1,internalType:"uint256",name:"deadline",type:"uint256"},{indexed:!1,internalType:"contract IERC20Upgradeable",name:"currency",type:"address"},{indexed:!1,internalType:"bytes",name:"dataMask",type:"bytes"},{components:[{internalType:"uint256",name:"price",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],indexed:!1,internalType:"struct Market.OrderItem",name:"item",type:"tuple"},{components:[{internalType:"enum Market.Op",name:"op",type:"uint8"},{internalType:"uint256",name:"orderIdx",type:"uint256"},{internalType:"uint256",name:"itemIdx",type:"uint256"},{internalType:"uint256",name:"price",type:"uint256"},{internalType:"bytes32",name:"itemHash",type:"bytes32"},{internalType:"contract IDelegate",name:"executionDelegate",type:"address"},{internalType:"bytes",name:"dataReplacement",type:"bytes"},{internalType:"uint256",name:"bidIncentivePct",type:"uint256"},{internalType:"uint256",name:"aucMinIncrementPct",type:"uint256"},{internalType:"uint256",name:"aucIncDurationSecs",type:"uint256"},{components:[{internalType:"uint256",name:"percentage",type:"uint256"},{internalType:"address",name:"to",type:"address"}],internalType:"struct Market.Fee[]",name:"fees",type:"tuple[]"}],indexed:!1,internalType:"struct Market.SettleDetail",name:"detail",type:"tuple"}],name:"EvInventory",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"itemHash",type:"bytes32"},{indexed:!1,internalType:"address",name:"currency",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"EvProfit",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"signer",type:"address"},{indexed:!1,internalType:"bool",name:"isRemoval",type:"bool"}],name:"EvSigner",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{inputs:[],name:"RATE_BASE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32[]",name:"itemHashes",type:"bytes32[]"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"cancel",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"delegates",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"feeCapPct",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"feeCapPct_",type:"uint256"},{internalType:"address",name:"weth_",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"inventoryStatus",outputs:[{internalType:"enum Market.InvStatus",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"ongoingAuctions",outputs:[{internalType:"uint256",name:"price",type:"uint256"},{internalType:"uint256",name:"netPrice",type:"uint256"},{internalType:"uint256",name:"endAt",type:"uint256"},{internalType:"address",name:"bidder",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"network",type:"uint256"},{internalType:"uint256",name:"intent",type:"uint256"},{internalType:"uint256",name:"delegateType",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"contract IERC20Upgradeable",name:"currency",type:"address"},{internalType:"bytes",name:"dataMask",type:"bytes"},{components:[{internalType:"uint256",name:"price",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct Market.OrderItem[]",name:"items",type:"tuple[]"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"signVersion",type:"uint8"}],internalType:"struct Market.Order[]",name:"orders",type:"tuple[]"},{components:[{internalType:"enum Market.Op",name:"op",type:"uint8"},{internalType:"uint256",name:"orderIdx",type:"uint256"},{internalType:"uint256",name:"itemIdx",type:"uint256"},{internalType:"uint256",name:"price",type:"uint256"},{internalType:"bytes32",name:"itemHash",type:"bytes32"},{internalType:"contract IDelegate",name:"executionDelegate",type:"address"},{internalType:"bytes",name:"dataReplacement",type:"bytes"},{internalType:"uint256",name:"bidIncentivePct",type:"uint256"},{internalType:"uint256",name:"aucMinIncrementPct",type:"uint256"},{internalType:"uint256",name:"aucIncDurationSecs",type:"uint256"},{components:[{internalType:"uint256",name:"percentage",type:"uint256"},{internalType:"address",name:"to",type:"address"}],internalType:"struct Market.Fee[]",name:"fees",type:"tuple[]"}],internalType:"struct Market.SettleDetail[]",name:"details",type:"tuple[]"},{components:[{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint256",name:"amountToEth",type:"uint256"},{internalType:"uint256",name:"amountToWeth",type:"uint256"},{internalType:"address",name:"user",type:"address"},{internalType:"bool",name:"canFail",type:"bool"}],internalType:"struct Market.SettleShared",name:"shared",type:"tuple"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"}],internalType:"struct Market.RunInput",name:"input",type:"tuple"}],name:"run",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"network",type:"uint256"},{internalType:"uint256",name:"intent",type:"uint256"},{internalType:"uint256",name:"delegateType",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"contract IERC20Upgradeable",name:"currency",type:"address"},{internalType:"bytes",name:"dataMask",type:"bytes"},{components:[{internalType:"uint256",name:"price",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct Market.OrderItem[]",name:"items",type:"tuple[]"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"signVersion",type:"uint8"}],internalType:"struct Market.Order",name:"order",type:"tuple"},{components:[{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"uint256",name:"amountToEth",type:"uint256"},{internalType:"uint256",name:"amountToWeth",type:"uint256"},{internalType:"address",name:"user",type:"address"},{internalType:"bool",name:"canFail",type:"bool"}],internalType:"struct Market.SettleShared",name:"shared",type:"tuple"},{components:[{internalType:"enum Market.Op",name:"op",type:"uint8"},{internalType:"uint256",name:"orderIdx",type:"uint256"},{internalType:"uint256",name:"itemIdx",type:"uint256"},{internalType:"uint256",name:"price",type:"uint256"},{internalType:"bytes32",name:"itemHash",type:"bytes32"},{internalType:"contract IDelegate",name:"executionDelegate",type:"address"},{internalType:"bytes",name:"dataReplacement",type:"bytes"},{internalType:"uint256",name:"bidIncentivePct",type:"uint256"},{internalType:"uint256",name:"aucMinIncrementPct",type:"uint256"},{internalType:"uint256",name:"aucIncDurationSecs",type:"uint256"},{components:[{internalType:"uint256",name:"percentage",type:"uint256"},{internalType:"address",name:"to",type:"address"}],internalType:"struct Market.Fee[]",name:"fees",type:"tuple[]"}],internalType:"struct Market.SettleDetail",name:"detail",type:"tuple"}],name:"run1",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"toAdd",type:"address[]"},{internalType:"address[]",name:"toRemove",type:"address[]"}],name:"updateDelegates",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"val",type:"uint256"}],name:"updateFeeCap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"toAdd",type:"address[]"},{internalType:"address[]",name:"toRemove",type:"address[]"}],name:"updateSigners",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"weth",outputs:[{internalType:"contract IWETHUpgradable",name:"",type:"address"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],z=function(e){function n(n){return e.call(this,exports.Market.X2Y2,n)||this}l(n,e);var a=n.prototype;return a.encode=function(e,a){for(var i,r=c(this.orders);!(i=r()).done;){var p=i.value,s=n.INTERFACE.getSighash(n.INTERFACE.getFunction("run"))+p.signedInput.slice(2);e.addCommand(t.X2Y2_721,[p.price,s,p.recipient,p.tokenAddress,p.tokenId],a.allowRevert)}},a.getBuyItems=function(){for(var e,n=[],t=c(this.orders);!(e=t()).done;){var a=e.value;n.push({tokenAddress:a.tokenAddress,tokenId:a.tokenId,tokenType:exports.TokenType.ERC721})}return n},a.getTotalPrice=function(){for(var e,n=p.BigNumber.from(0),t=c(this.orders);!(e=t()).done;)n=n.add(e.value.price);return n},n}(g);z.INTERFACE=new r.Interface(q),exports.CryptopunkTrade=P,exports.FoundationTrade=N,exports.LooksRareTrade=V,exports.NFT20Trade=B,exports.NFTTrade=g,exports.NFTXTrade=W,exports.SeaportTrade=U,exports.SudoswapTrade=K,exports.SwapRouter=C,exports.UniswapTrade=S,exports.X2Y2Trade=z,exports.isRouterTrade=x;
|
|
2
|
-
//# sourceMappingURL=narwhal-sdk.cjs.production.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"narwhal-sdk.cjs.production.min.js","sources":["../src/utils/routerCommands.ts","../src/utils/constants.ts","../src/entities/protocols/uniswap.ts","../src/utils/permit2.ts","../src/swapRouter.ts","../src/entities/NFTTrade.ts","../src/entities/protocols/cryptopunk.ts","../src/entities/protocols/foundation.ts","../src/entities/protocols/looksRare.ts","../src/entities/protocols/nft20.ts","../src/entities/protocols/nftx.ts","../src/entities/protocols/seaport.ts","../src/entities/protocols/sudoswap.ts","../src/entities/protocols/x2y2.ts"],"sourcesContent":["import { defaultAbiCoder } from 'ethers/lib/utils'\n\n/**\n * CommandTypes\n * @description Flags that modify a command's execution\n * @enum {number}\n */\nexport enum CommandType {\n PERMIT = 0x00,\n TRANSFER = 0x01,\n V3_SWAP_EXACT_IN = 0x02,\n V3_SWAP_EXACT_OUT = 0x03,\n V2_SWAP_EXACT_IN = 0x04,\n V2_SWAP_EXACT_OUT = 0x05,\n SEAPORT = 0x06,\n WRAP_ETH = 0x07,\n UNWRAP_WETH = 0x08,\n SWEEP = 0x09,\n NFTX = 0x0a,\n LOOKS_RARE_721 = 0x0b,\n X2Y2_721 = 0x0c,\n LOOKS_RARE_1155 = 0x0d,\n X2Y2_1155 = 0x0e,\n FOUNDATION = 0x0f,\n PAY_PORTION = 0x10,\n SUDOSWAP = 0x12,\n NFT20 = 0x13,\n OWNER_CHECK_721 = 0x14,\n OWNER_CHECK_1155 = 0x15,\n CRYPTOPUNKS = 0x16,\n PERMIT2_TRANSFER_FROM = 0x17,\n PERMIT2_TRANSFER_FROM_BATCH = 0x18,\n PERMIT2_PERMIT_BATCH = 0x19,\n}\n\nconst ALLOW_REVERT_FLAG = 0x80\n\nconst REVERTABLE_COMMANDS = new Set<CommandType>([\n CommandType.SEAPORT,\n CommandType.NFTX,\n CommandType.LOOKS_RARE_721,\n CommandType.LOOKS_RARE_1155,\n CommandType.X2Y2_721,\n CommandType.X2Y2_1155,\n CommandType.FOUNDATION,\n CommandType.SUDOSWAP,\n CommandType.NFT20,\n])\n\nconst ABI_DEFINITION: { [key in CommandType]: string[] } = {\n [CommandType.PERMIT]: ['bytes'],\n [CommandType.TRANSFER]: ['address', 'address', 'uint256'],\n [CommandType.V3_SWAP_EXACT_IN]: ['address', 'uint256', 'uint256', 'bytes', 'bool'],\n [CommandType.V3_SWAP_EXACT_OUT]: ['address', 'uint256', 'uint256', 'bytes', 'bool'],\n [CommandType.V2_SWAP_EXACT_IN]: ['uint256', 'uint256', 'address[]', 'address', 'bool'],\n [CommandType.V2_SWAP_EXACT_OUT]: ['uint256', 'uint256', 'address[]', 'address', 'bool'],\n [CommandType.SEAPORT]: ['uint256', 'bytes'],\n [CommandType.WRAP_ETH]: ['address', 'uint256'],\n [CommandType.UNWRAP_WETH]: ['address', 'uint256'],\n [CommandType.SWEEP]: ['address', 'address', 'uint256'],\n [CommandType.NFTX]: ['uint256', 'bytes'],\n [CommandType.LOOKS_RARE_721]: ['uint256', 'bytes', 'address', 'address', 'uint256'],\n [CommandType.X2Y2_721]: ['uint256', 'bytes', 'address', 'address', 'uint256'],\n [CommandType.LOOKS_RARE_1155]: ['uint256', 'bytes', 'address', 'address', 'uint256', 'uint256'],\n [CommandType.X2Y2_1155]: ['uint256', 'bytes', 'address', 'address', 'uint256', 'uint256'],\n [CommandType.FOUNDATION]: ['uint256', 'bytes', 'address', 'address', 'uint256'],\n [CommandType.PAY_PORTION]: ['address', 'address', 'uint256'],\n [CommandType.SUDOSWAP]: ['uint256', 'bytes'],\n [CommandType.OWNER_CHECK_721]: ['address', 'address', 'uint256'],\n [CommandType.OWNER_CHECK_1155]: ['address', 'address', 'uint256', 'uint256'],\n [CommandType.NFT20]: ['uint256', 'bytes'],\n [CommandType.CRYPTOPUNKS]: ['uint256', 'address', 'uint256'],\n [CommandType.PERMIT2_TRANSFER_FROM]: ['address', 'address', 'uint160'],\n [CommandType.PERMIT2_TRANSFER_FROM_BATCH]: ['bytes'],\n [CommandType.PERMIT2_PERMIT_BATCH]: ['bytes'],\n}\n\nexport class RoutePlanner {\n commands: string\n inputs: string[]\n\n constructor() {\n this.commands = '0x'\n this.inputs = []\n }\n\n addCommand(type: CommandType, parameters: any[], allowRevert = false): void {\n let command = createCommand(type, parameters)\n this.inputs.push(command.encodedInput)\n if (allowRevert) {\n if (!REVERTABLE_COMMANDS.has(command.type)) {\n throw new Error(`command type: ${command.type} cannot be allowed to revert`)\n }\n command.type = command.type | ALLOW_REVERT_FLAG\n }\n\n this.commands = this.commands.concat(command.type.toString(16).padStart(2, '0'))\n }\n}\n\nexport type RouterCommand = {\n type: CommandType\n encodedInput: string\n}\n\nexport function createCommand(type: CommandType, parameters: any[]): RouterCommand {\n const encodedInput = defaultAbiCoder.encode(ABI_DEFINITION[type], parameters)\n return { type, encodedInput }\n}\n","import { BigNumber } from 'ethers'\n\nexport const NARWHAL_ADDRESS = '0x5393904db506415D941726f3Cf0404Bb167537A0'\nexport const PERMIT2_ADDRESS = '0x6fEe9BeC3B3fc8f9DA5740f0efc6BbE6966cd6A6'\n\nexport const CONTRACT_BALANCE = BigNumber.from(2).pow(255)\nexport const ETH_ADDRESS = '0x0000000000000000000000000000000000000000'\n","import invariant from 'tiny-invariant'\nimport JSBI from 'jsbi'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { Trade as V2Trade, Pair } from '@uniswap/v2-sdk'\nimport { Trade as V3Trade, Pool, encodeRouteToPath } from '@uniswap/v3-sdk'\nimport {\n Trade as RouterTrade,\n MixedRouteTrade,\n Protocol,\n IRoute,\n RouteV2,\n RouteV3,\n MixedRouteSDK,\n MixedRoute,\n SwapOptions as RouterSwapOptions,\n getOutputOfPools,\n encodeMixedRouteToPath,\n partitionMixedRouteByProtocol,\n} from '@uniswap/router-sdk'\nimport { Permit2Permit } from '../../utils/permit2'\nimport { Currency, TradeType, CurrencyAmount, Percent } from '@uniswap/sdk-core'\nimport { Command, TradeConfig } from '../Command'\nimport { NARWHAL_ADDRESS, CONTRACT_BALANCE } from '../../utils/constants'\n\n// the existing router permit object doesn't include enough data for permit2\n// so we extend swap options with the permit2 permit\nexport type SwapOptions = Omit<RouterSwapOptions, 'inputTokenPermit'> & {\n inputTokenPermit?: Permit2Permit\n}\n\nexport type AnyUniswapTrade =\n | RouterTrade<Currency, Currency, TradeType>\n | V2Trade<Currency, Currency, TradeType>\n | V3Trade<Currency, Currency, TradeType>\n | MixedRouteTrade<Currency, Currency, TradeType>\n | (\n | V2Trade<Currency, Currency, TradeType>\n | V3Trade<Currency, Currency, TradeType>\n | MixedRouteTrade<Currency, Currency, TradeType>\n )[]\n\nconst REFUND_ETH_PRICE_IMPACT_THRESHOLD = new Percent(JSBI.BigInt(50), JSBI.BigInt(100))\n\ninterface Swap<TInput extends Currency, TOutput extends Currency> {\n route: IRoute<TInput, TOutput, Pair | Pool>\n inputAmount: CurrencyAmount<TInput>\n outputAmount: CurrencyAmount<TOutput>\n}\n\n// Wrapper for uniswap router-sdk trade entity to encode swaps for Narwhal\n// also translates trade objects from previous (v2, v3) SDKs\nexport class UniswapTrade implements Command {\n static fromAny(trades: AnyUniswapTrade, options: SwapOptions): UniswapTrade {\n if (isRouterTrade(trades)) {\n return new UniswapTrade(trades as RouterTrade<Currency, Currency, TradeType>, options)\n }\n\n if (Array.isArray(trades)) {\n return UniswapTrade.from(trades, options)\n }\n\n return UniswapTrade.from(\n [\n trades as\n | V2Trade<Currency, Currency, TradeType>\n | V3Trade<Currency, Currency, TradeType>\n | MixedRouteTrade<Currency, Currency, TradeType>,\n ],\n options\n )\n }\n\n // alternative constructor to create from protocol-specific sdks\n static from(\n trades: (\n | V2Trade<Currency, Currency, TradeType>\n | V3Trade<Currency, Currency, TradeType>\n | MixedRouteTrade<Currency, Currency, TradeType>\n )[],\n options: SwapOptions\n ): UniswapTrade {\n invariant(trades.length > 0, 'ZERO_TRADES')\n invariant(\n trades.every((trade) => trade.tradeType == trades[0].tradeType),\n 'INCONSISTENT_TRADE_TYPES'\n )\n\n return new UniswapTrade(\n // RouterTrade constructor handles validation of routes\n new RouterTrade({\n v2Routes: trades\n .filter((trade) => trade instanceof V2Trade)\n .map((trade) => ({\n routev2: trade.route as RouteV2<Currency, Currency>,\n inputAmount: trade.inputAmount,\n outputAmount: trade.outputAmount,\n })),\n v3Routes: trades\n .filter((trade) => trade instanceof V3Trade)\n .map((trade) => ({\n routev3: trade.route as RouteV3<Currency, Currency>,\n inputAmount: trade.inputAmount,\n outputAmount: trade.outputAmount,\n })),\n mixedRoutes: trades\n .filter((trade) => trade instanceof MixedRouteTrade)\n .map((trade) => ({\n mixedRoute: trade.route as MixedRouteSDK<Currency, Currency>,\n inputAmount: trade.inputAmount,\n outputAmount: trade.outputAmount,\n })),\n tradeType: trades[0].tradeType,\n }),\n options\n )\n }\n\n constructor(public trade: RouterTrade<Currency, Currency, TradeType>, public options: SwapOptions) {}\n\n encode(planner: RoutePlanner, _config: TradeConfig): void {\n let payerIsUser = true\n if (this.trade.inputAmount.currency.isNative) {\n // TODO: opti if only one v2 pool we can directly send this to the pool\n planner.addCommand(CommandType.WRAP_ETH, [\n NARWHAL_ADDRESS,\n this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString(),\n ])\n // since WETH is now owned by the router, the router pays for inputs\n payerIsUser = false\n }\n\n for (const swap of this.trade.swaps) {\n switch (swap.route.protocol) {\n case Protocol.V2:\n addV2Swap(planner, swap, this.trade.tradeType, this.options, payerIsUser)\n break\n case Protocol.V3:\n addV3Swap(planner, swap, this.trade.tradeType, this.options, payerIsUser)\n break\n case Protocol.MIXED:\n addMixedSwap(planner, swap, this.trade.tradeType, this.options, payerIsUser)\n break\n default:\n throw new Error('UNSUPPORTED_TRADE_PROTOCOL')\n }\n }\n\n if (this.trade.outputAmount.currency.isNative) {\n planner.addCommand(CommandType.UNWRAP_WETH, [\n this.options.recipient,\n this.trade.minimumAmountOut(this.options.slippageTolerance).quotient.toString(),\n ])\n } else if (\n this.trade.inputAmount.currency.isNative &&\n (this.trade.tradeType === TradeType.EXACT_OUTPUT || riskOfPartialFill(this.trade))\n ) {\n // for exactOutput swaps that take native currency as input\n // we need to send back the change to the user\n planner.addCommand(CommandType.UNWRAP_WETH, [this.options.recipient, 0])\n }\n }\n}\n\n// encode a uniswap v2 swap\nfunction addV2Swap<TInput extends Currency, TOutput extends Currency>(\n planner: RoutePlanner,\n { route, inputAmount, outputAmount }: Swap<TInput, TOutput>,\n tradeType: TradeType,\n options: SwapOptions,\n payerIsUser: boolean\n): void {\n const trade = new V2Trade(\n route as RouteV2<TInput, TOutput>,\n tradeType == TradeType.EXACT_INPUT ? inputAmount : outputAmount,\n tradeType\n )\n\n if (tradeType == TradeType.EXACT_INPUT) {\n planner.addCommand(CommandType.V2_SWAP_EXACT_IN, [\n trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),\n trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),\n route.path.map((pool) => pool.address),\n // if native, we have to unwrap so keep in the router for now\n trade.outputAmount.currency.isNative ? NARWHAL_ADDRESS : options.recipient,\n payerIsUser,\n ])\n } else if (tradeType == TradeType.EXACT_OUTPUT) {\n planner.addCommand(CommandType.V2_SWAP_EXACT_OUT, [\n trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),\n trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),\n route.path.map((pool) => pool.address),\n trade.outputAmount.currency.isNative ? NARWHAL_ADDRESS : options.recipient,\n payerIsUser,\n ])\n }\n}\n\n// encode a uniswap v3 swap\nfunction addV3Swap<TInput extends Currency, TOutput extends Currency>(\n planner: RoutePlanner,\n { route, inputAmount, outputAmount }: Swap<TInput, TOutput>,\n tradeType: TradeType,\n options: SwapOptions,\n payerIsUser: boolean\n): void {\n const trade = V3Trade.createUncheckedTrade({\n route: route as RouteV3<TInput, TOutput>,\n inputAmount,\n outputAmount,\n tradeType,\n })\n\n const path = encodeRouteToPath(route as RouteV3<TInput, TOutput>, trade.tradeType === TradeType.EXACT_OUTPUT)\n if (tradeType == TradeType.EXACT_INPUT) {\n planner.addCommand(CommandType.V3_SWAP_EXACT_IN, [\n trade.outputAmount.currency.isNative ? NARWHAL_ADDRESS : options.recipient,\n trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),\n trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),\n path,\n payerIsUser,\n ])\n } else if (tradeType == TradeType.EXACT_OUTPUT) {\n planner.addCommand(CommandType.V3_SWAP_EXACT_OUT, [\n trade.outputAmount.currency.isNative ? NARWHAL_ADDRESS : options.recipient,\n trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),\n trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),\n path,\n payerIsUser,\n ])\n }\n}\n\n// encode a mixed route swap, i.e. including both v2 and v3 pools\nfunction addMixedSwap<TInput extends Currency, TOutput extends Currency>(\n planner: RoutePlanner,\n swap: Swap<TInput, TOutput>,\n tradeType: TradeType,\n options: SwapOptions,\n payerIsUser: boolean\n): void {\n const { route, inputAmount, outputAmount } = swap\n\n // single hop, so it can be reduced to plain v2 or v3 swap logic\n if (route.pools.length === 1) {\n if (route.pools[0] instanceof Pool) {\n return addV3Swap(planner, swap, tradeType, options, payerIsUser)\n } else if (route.pools[0] instanceof Pair) {\n return addV2Swap(planner, swap, tradeType, options, payerIsUser)\n } else {\n throw new Error('Invalid route type')\n }\n }\n\n const trade = MixedRouteTrade.createUncheckedTrade({\n route: route as MixedRoute<TInput, TOutput>,\n inputAmount,\n outputAmount,\n tradeType,\n })\n\n const amountIn = trade.maximumAmountIn(options.slippageTolerance, inputAmount).quotient.toString()\n const amountOut = trade.minimumAmountOut(options.slippageTolerance, outputAmount).quotient.toString()\n\n // logic from\n // https://github.com/Uniswap/router-sdk/blob/d8eed164e6c79519983844ca8b6a3fc24ebcb8f8/src/swapRouter.ts#L276\n const sections = partitionMixedRouteByProtocol(route as MixedRoute<TInput, TOutput>)\n const isLastSectionInRoute = (i: number) => {\n return i === sections.length - 1\n }\n\n let outputToken\n let inputToken = route.input.wrapped\n\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i]\n /// Now, we get output of this section\n outputToken = getOutputOfPools(section, inputToken)\n\n const newRouteOriginal = new MixedRouteSDK(\n [...section],\n section[0].token0.equals(inputToken) ? section[0].token0 : section[0].token1,\n outputToken\n )\n const newRoute = new MixedRoute(newRouteOriginal)\n\n /// Previous output is now input\n inputToken = outputToken\n\n const mixedRouteIsAllV3 = (route: MixedRouteSDK<Currency, Currency>) => {\n return route.pools.every((pool) => pool instanceof Pool)\n }\n\n if (mixedRouteIsAllV3(newRoute)) {\n const path: string = encodeMixedRouteToPath(newRoute)\n // if output is native we keep tokens in the router for unwrap\n const recipient = isLastSectionInRoute(i)\n ? trade.outputAmount.currency.isNative\n ? NARWHAL_ADDRESS\n : options.recipient\n : // send tokens directly to the first v2 pair of the next section\n // note: because of the partitioning function we can be sure that the next section is v2\n (sections[i + 1][0] as Pair).liquidityToken.address\n\n planner.addCommand(CommandType.V3_SWAP_EXACT_IN, [\n recipient,\n i == 0 ? amountIn : CONTRACT_BALANCE, // amountIn\n !isLastSectionInRoute(i) ? 0 : amountOut, // amountOut\n path, // path\n payerIsUser && i === 0, // payerIsUser\n ])\n } else {\n planner.addCommand(CommandType.V2_SWAP_EXACT_IN, [\n i === 0 ? amountIn : CONTRACT_BALANCE, // amountIn\n !isLastSectionInRoute(i) ? 0 : amountOut, // amountOutMin\n newRoute.path.map((pool) => pool.address), // path\n isLastSectionInRoute(i) && !trade.outputAmount.currency.isNative ? options.recipient : NARWHAL_ADDRESS, // recipient\n payerIsUser && i === 0,\n ])\n }\n }\n}\n\n// if price impact is very high, there's a chance of hitting max/min prices resulting in a partial fill of the swap\nfunction riskOfPartialFill(trade: RouterTrade<Currency, Currency, TradeType>): boolean {\n return trade.priceImpact.greaterThan(REFUND_ETH_PRICE_IMPACT_THRESHOLD)\n}\n\n// Checks whether a given trade object is a router-sdk RouterTrade\n// simple instanceof check might not work for dependent packages\nexport function isRouterTrade(\n trade:\n | RouterTrade<Currency, Currency, TradeType>\n | V2Trade<Currency, Currency, TradeType>\n | V3Trade<Currency, Currency, TradeType>\n | MixedRouteTrade<Currency, Currency, TradeType>\n | (\n | V2Trade<Currency, Currency, TradeType>\n | V3Trade<Currency, Currency, TradeType>\n | MixedRouteTrade<Currency, Currency, TradeType>\n )[]\n): boolean {\n return trade instanceof RouterTrade || (!Array.isArray(trade) && trade.hasOwnProperty('routes'))\n}\n","import { ethers } from 'ethers'\nimport { PermitSingle } from '@uniswap/permit2-sdk'\nimport { CommandType, RoutePlanner } from './routerCommands'\nimport PERMIT2_COMPILE from '../../out/Permit2.sol/Permit2.json'\n\nexport interface Permit2Permit extends PermitSingle {\n signature: string\n}\n\nconst PERMIT_SIGNATURE = 'permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)'\n\nconst PERMIT2_INTERFACE = new ethers.utils.Interface(PERMIT2_COMPILE.abi)\n\nexport function encodePermit(planner: RoutePlanner, permit: Permit2Permit): void {\n const calldata = PERMIT2_INTERFACE.encodeFunctionData(PERMIT_SIGNATURE, [\n ethers.constants.AddressZero,\n permit,\n permit.signature,\n ])\n\n planner.addCommand(CommandType.PERMIT, ['0x' + calldata.slice(74)])\n}\n","import invariant from 'tiny-invariant'\nimport { abi } from '@uniswap/narwhal/artifacts/contracts/Router.sol/Router.json'\nimport { Interface } from '@ethersproject/abi'\nimport { BigNumber, BigNumberish } from 'ethers'\nimport { MethodParameters } from '@uniswap/v3-sdk'\nimport { Token } from '@uniswap/sdk-core'\nimport { NFTTrade, SupportedProtocolsData } from './entities/NFTTrade'\nimport { UniswapTrade, SwapOptions, AnyUniswapTrade } from './entities/protocols/uniswap'\nimport { CommandType, RoutePlanner } from './utils/routerCommands'\nimport { encodePermit } from './utils/permit2'\nimport { ETH_ADDRESS } from './utils/constants'\n\nexport type SwapRouterConfig = {\n sender?: string // address\n deadline?: BigNumberish\n}\n\nexport abstract class SwapRouter {\n public static INTERFACE: Interface = new Interface(abi)\n\n /**\n * Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given swap.\n * @param trades to produce call parameters for\n */\n public static swapGenieCallParameters(\n trades: NFTTrade<SupportedProtocolsData>[],\n config: SwapRouterConfig\n ): MethodParameters {\n invariant(!!config.sender, 'SENDER_REQUIRED')\n let planner = new RoutePlanner()\n let totalPrice = BigNumber.from(0)\n\n const allowRevert = trades.length == 1 && trades[0].orders.length == 1 ? false : true\n\n for (const trade of trades) {\n trade.encode(planner, { allowRevert })\n totalPrice = totalPrice.add(trade.getTotalPrice())\n }\n\n planner.addCommand(CommandType.SWEEP, [ETH_ADDRESS, config.sender, 0])\n return SwapRouter.encodePlan(planner, totalPrice, config)\n }\n\n /**\n * Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given trade.\n * @param trades to produce call parameters for\n * @param options options for the call parameters\n */\n public static swapERC20CallParameters(trades: AnyUniswapTrade, options: SwapOptions): MethodParameters {\n // TODO: use permit if signature included in options\n const planner = new RoutePlanner()\n\n const trade = UniswapTrade.fromAny(trades, options)\n\n const inputCurrency = trade.trade.inputAmount.currency\n invariant(!(inputCurrency.isNative && !!options.inputTokenPermit), 'NATIVE_INPUT_PERMIT')\n if (options.inputTokenPermit && inputCurrency instanceof Token) {\n encodePermit(planner, options.inputTokenPermit)\n }\n\n const nativeCurrencyValue = inputCurrency.isNative\n ? BigNumber.from(trade.trade.maximumAmountIn(options.slippageTolerance).quotient.toString())\n : BigNumber.from(0)\n\n trade.encode(planner, { allowRevert: false })\n return SwapRouter.encodePlan(planner, nativeCurrencyValue, {\n deadline: options.deadlineOrPreviousBlockhash ? BigNumber.from(options.deadlineOrPreviousBlockhash) : undefined,\n })\n }\n\n /**\n * Encodes a planned route into a method name and parameters for the Router contract.\n * @param planner the planned route\n * @param nativeCurrencyValue the native currency value of the planned route\n * @param config the router config\n */\n private static encodePlan(\n planner: RoutePlanner,\n nativeCurrencyValue: BigNumber,\n config: SwapRouterConfig = {}\n ): MethodParameters {\n const { commands, inputs } = planner\n\n const functionSignature = !!config.deadline ? 'execute(bytes,bytes[],uint256)' : 'execute(bytes,bytes[])'\n const parameters = !!config.deadline ? [commands, inputs, config.deadline] : [commands, inputs]\n const calldata = SwapRouter.INTERFACE.encodeFunctionData(functionSignature, parameters)\n return { calldata, value: nativeCurrencyValue.toString() }\n }\n}\n","import invariant from 'tiny-invariant'\nimport { BigNumberish } from 'ethers'\nimport { SeaportData } from './protocols/seaport'\nimport { FoundationData } from './protocols/foundation'\nimport { NFTXData } from './protocols/nftx'\nimport { NFT20Data } from './protocols/nft20'\nimport { RoutePlanner } from '../utils/routerCommands'\nimport { Command, TradeConfig } from './Command'\nimport { LooksRareData } from './protocols/looksRare'\nimport { SudoswapData } from './protocols/sudoswap'\nimport { CryptopunkData } from './protocols/cryptopunk'\nimport { X2Y2Data } from './protocols/x2y2'\n\nexport type SupportedProtocolsData =\n | SeaportData\n | FoundationData\n | NFTXData\n | LooksRareData\n | X2Y2Data\n | CryptopunkData\n | NFT20Data\n | SudoswapData\n\nexport abstract class NFTTrade<T> implements Command {\n readonly orders: T[]\n readonly market: Market\n\n constructor(market: Market, orders: T[]) {\n invariant(orders.length > 0, 'no buy Items')\n this.market = market\n this.orders = orders\n }\n\n abstract encode(planner: RoutePlanner, config: TradeConfig): void\n\n abstract getBuyItems(): BuyItem[]\n\n abstract getTotalPrice(): BigNumberish\n}\n\nexport type BuyItem = {\n tokenAddress: string\n tokenId: BigNumberish\n tokenType: TokenType\n amount?: BigNumberish // for 1155\n}\n\nexport enum Market {\n Foundation = 'foundation',\n LooksRare = 'looksrare',\n NFT20 = 'nft20',\n NFTX = 'nftx',\n Seaport = 'seaport',\n Sudoswap = 'Sudoswap',\n Cryptopunks = 'cryptopunks',\n X2Y2 = 'x2y2',\n}\n\nexport enum TokenType {\n ERC721 = 'ERC721',\n ERC1155 = 'ERC1155',\n Cryptopunk = 'Cryptopunk',\n}\n","import { TradeConfig } from '../Command'\nimport { NFTTrade, Market, TokenType, BuyItem } from '../NFTTrade'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\n\nexport type CryptopunkData = {\n tokenId: BigNumberish\n recipient: string\n value: BigNumberish\n}\n\nexport class CryptopunkTrade extends NFTTrade<CryptopunkData> {\n public static CRYPTOPUNK_ADDRESS: string = '0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb'\n\n constructor(orders: CryptopunkData[]) {\n super(Market.Cryptopunks, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const item of this.orders) {\n planner.addCommand(CommandType.CRYPTOPUNKS, [item.tokenId, item.recipient, item.value], config.allowRevert)\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const item of this.orders) {\n buyItems.push({\n tokenAddress: CryptopunkTrade.CRYPTOPUNK_ADDRESS,\n tokenId: item.tokenId,\n tokenType: TokenType.Cryptopunk,\n })\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const item of this.orders) {\n total = total.add(item.value)\n }\n return total\n }\n}\n","import abi from '../../../abis/Foundation.json'\nimport { Interface } from '@ethersproject/abi'\nimport { BuyItem, Market, NFTTrade, TokenType } from '../NFTTrade'\nimport { TradeConfig } from '../Command'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\n\nexport type FoundationData = {\n recipient: string\n tokenAddress: string\n tokenId: BigNumberish\n price: BigNumberish\n referrer: string // address\n}\n\nexport class FoundationTrade extends NFTTrade<FoundationData> {\n public static INTERFACE: Interface = new Interface(abi)\n\n constructor(orders: FoundationData[]) {\n super(Market.Foundation, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const item of this.orders) {\n const calldata = FoundationTrade.INTERFACE.encodeFunctionData('buyV2', [\n item.tokenAddress,\n item.tokenId,\n item.price,\n item.referrer,\n ])\n planner.addCommand(\n CommandType.FOUNDATION,\n [item.price, calldata, item.recipient, item.tokenAddress, item.tokenId],\n config.allowRevert\n )\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const item of this.orders) {\n buyItems.push({\n tokenAddress: item.tokenAddress,\n tokenId: item.tokenId,\n tokenType: TokenType.ERC721,\n })\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const item of this.orders) {\n total = total.add(item.price)\n }\n return total\n }\n}\n","import abi from '../../../abis/LooksRare.json'\nimport { Interface } from '@ethersproject/abi'\nimport { BuyItem, Market, NFTTrade, TokenType } from '../NFTTrade'\nimport { TradeConfig } from '../Command'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\n\nexport type MakerOrder = {\n collection: string\n tokenId: BigNumberish\n isOrderAsk: true\n signer: string\n strategy: string\n currency: string\n amount: BigNumberish\n price: BigNumberish\n minPercentageToAsk: BigNumberish\n nonce: BigNumberish\n startTime: BigNumberish\n endTime: BigNumberish\n v: BigNumberish\n r: string\n s: string\n params: string\n}\n\nexport type TakerOrder = {\n minPercentageToAsk: BigNumberish\n price: BigNumberish\n taker: string\n tokenId: BigNumberish\n isOrderAsk: boolean\n params: string\n}\n\nexport type LooksRareData = {\n makerOrder: MakerOrder\n takerOrder: TakerOrder\n recipient: string\n}\n\nexport class LooksRareTrade extends NFTTrade<LooksRareData> {\n public static INTERFACE: Interface = new Interface(abi)\n\n constructor(orders: LooksRareData[]) {\n super(Market.LooksRare, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const item of this.orders) {\n const calldata = LooksRareTrade.INTERFACE.encodeFunctionData('matchAskWithTakerBidUsingETHAndWETH', [\n item.takerOrder,\n item.makerOrder,\n ])\n\n planner.addCommand(\n CommandType.LOOKS_RARE_721,\n [item.makerOrder.price, calldata, item.recipient, item.makerOrder.collection, item.makerOrder.tokenId],\n config.allowRevert\n )\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const item of this.orders) {\n buyItems.push({\n tokenAddress: item.makerOrder.collection,\n tokenId: item.makerOrder.tokenId,\n tokenType: TokenType.ERC721,\n })\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const item of this.orders) {\n total = total.add(item.makerOrder.price)\n }\n return total\n }\n}\n","import abi from '../../../abis/NFT20.json'\nimport { Interface } from '@ethersproject/abi'\nimport { TradeConfig } from '../Command'\nimport { NFTTrade, Market, TokenType, BuyItem } from '../NFTTrade'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\n\nexport type NFT20Data = {\n tokenAddress: string\n tokenIds: BigNumberish[]\n tokenAmounts: BigNumberish[]\n recipient: string\n fee: BigNumberish\n isV3: boolean\n value: BigNumberish\n}\n\nexport class NFT20Trade extends NFTTrade<NFT20Data> {\n public static INTERFACE: Interface = new Interface(abi)\n\n constructor(orders: NFT20Data[]) {\n super(Market.NFT20, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const order of this.orders) {\n const calldata = NFT20Trade.INTERFACE.encodeFunctionData('ethForNft', [\n order.tokenAddress,\n order.tokenIds,\n order.tokenAmounts,\n order.recipient,\n order.fee,\n order.isV3,\n ])\n planner.addCommand(CommandType.NFT20, [order.value, calldata], config.allowRevert)\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const pool of this.orders) {\n for (const tokenId of pool.tokenIds) {\n buyItems.push({\n tokenAddress: pool.tokenAddress,\n tokenId: tokenId,\n tokenType: TokenType.ERC721,\n })\n }\n }\n\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const item of this.orders) {\n total = total.add(item.value)\n }\n return total\n }\n}\n","import abi from '../../../abis/NFTXZap.json'\nimport { Interface } from '@ethersproject/abi'\nimport { BuyItem, Market, NFTTrade, TokenType } from '../NFTTrade'\nimport { TradeConfig } from '../Command'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\nimport { Ether } from '@uniswap/sdk-core'\n\nexport type NFTXData = {\n recipient: string\n vaultAddress: string\n vaultId: BigNumberish\n tokenAddress: string\n tokenIds: BigNumberish[]\n value: BigNumber\n}\n\nexport class NFTXTrade extends NFTTrade<NFTXData> {\n public static INTERFACE: Interface = new Interface(abi)\n\n constructor(orders: NFTXData[]) {\n super(Market.NFTX, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const order of this.orders) {\n const calldata = NFTXTrade.INTERFACE.encodeFunctionData('buyAndRedeem', [\n order.vaultId,\n order.tokenIds.length,\n order.tokenIds,\n [Ether.onChain(1).wrapped.address, order.vaultAddress],\n order.recipient,\n ])\n planner.addCommand(CommandType.NFTX, [order.value, calldata], config.allowRevert)\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const order of this.orders) {\n for (const tokenId of order.tokenIds) {\n buyItems.push({\n tokenAddress: order.tokenAddress,\n tokenId: tokenId,\n tokenType: TokenType.ERC721,\n })\n }\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const item of this.orders) {\n total = total.add(item.value)\n }\n return total\n }\n}\n","import abi from '../../../abis/Seaport.json'\nimport { BigNumber, BigNumberish } from 'ethers'\nimport { Interface } from '@ethersproject/abi'\nimport { BuyItem, Market, NFTTrade, TokenType } from '../NFTTrade'\nimport { TradeConfig } from '../Command'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\n\nexport type SeaportData = {\n items: Order[]\n recipient: string // address\n}\n\nexport type FulfillmentComponent = {\n orderIndex: BigNumberish\n itemIndex: BigNumberish\n}\n\nexport type OfferItem = {\n itemType: BigNumberish // enum\n token: string // address\n identifierOrCriteria: BigNumberish\n startAmount: BigNumberish\n endAmount: BigNumberish\n}\n\nexport type ConsiderationItem = OfferItem & {\n recipient: string\n}\n\nexport type Order = {\n parameters: OrderParameters\n signature: string\n}\n\ntype OrderParameters = {\n offerer: string // address,\n offer: OfferItem[]\n consideration: ConsiderationItem[]\n orderType: BigNumberish // enum\n startTime: BigNumberish\n endTime: BigNumberish\n zoneHash: string // bytes32\n zone: string // address\n salt: BigNumberish\n conduitKey: string // bytes32,\n totalOriginalConsiderationItems: BigNumberish\n}\n\nexport type AdvancedOrder = Order & {\n numerator: BigNumber // uint120\n denominator: BigNumber // uint120\n extraData: string // bytes\n}\n\nexport class SeaportTrade extends NFTTrade<SeaportData> {\n public static INTERFACE: Interface = new Interface(abi)\n public static OPENSEA_CONDUIT_KEY: string = '0x0000007b02230091a7ed01230072f7006a004d60a8d4e71d599b8104250f0000'\n\n constructor(orders: SeaportData[]) {\n super(Market.Seaport, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const order of this.orders) {\n let advancedOrders: AdvancedOrder[] = []\n let orderFulfillments: FulfillmentComponent[][] = order.items.map((_, index) => [\n { orderIndex: index, itemIndex: 0 },\n ])\n let considerationFulFillments: FulfillmentComponent[][] = this.getConsiderationFulfillments(order.items)\n\n for (const item of order.items) {\n const { advancedOrder } = this.getAdvancedOrderParams(item)\n advancedOrders.push(advancedOrder)\n }\n\n let calldata: string\n if (advancedOrders.length == 1) {\n calldata = SeaportTrade.INTERFACE.encodeFunctionData('fulfillAdvancedOrder', [\n advancedOrders[0],\n [],\n SeaportTrade.OPENSEA_CONDUIT_KEY,\n order.recipient,\n ])\n } else {\n calldata = SeaportTrade.INTERFACE.encodeFunctionData('fulfillAvailableAdvancedOrders', [\n advancedOrders,\n [],\n orderFulfillments,\n considerationFulFillments,\n SeaportTrade.OPENSEA_CONDUIT_KEY,\n order.recipient,\n 100, // TODO: look into making this a better number\n ])\n }\n planner.addCommand(CommandType.SEAPORT, [this.getTotalPrice().toString(), calldata], config.allowRevert)\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const order of this.orders) {\n for (const item of order.items) {\n for (const offer of item.parameters.offer) {\n buyItems.push({\n tokenAddress: offer.token,\n tokenId: offer.identifierOrCriteria,\n tokenType: TokenType.ERC721,\n })\n }\n }\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumber {\n let totalPrice = BigNumber.from(0)\n for (const order of this.orders) {\n for (const item of order.items) {\n totalPrice = totalPrice.add(this.calculateValue(item.parameters.consideration))\n }\n }\n return totalPrice\n }\n\n private getConsiderationFulfillments(protocolDatas: Order[]): FulfillmentComponent[][] {\n let considerationFulfillments: FulfillmentComponent[][] = []\n const considerationRecipients: string[] = []\n\n for (const i in protocolDatas) {\n const protocolData = protocolDatas[i]\n\n for (const j in protocolData.parameters.consideration) {\n const item = protocolData.parameters.consideration[j]\n\n if (considerationRecipients.findIndex((x) => x === item.recipient) === -1) {\n considerationRecipients.push(item.recipient)\n }\n\n const recipientIndex = considerationRecipients.findIndex((x) => x === item.recipient)\n\n if (!considerationFulfillments[recipientIndex]) {\n considerationFulfillments.push([\n {\n orderIndex: i,\n itemIndex: j,\n },\n ])\n } else {\n considerationFulfillments[recipientIndex].push({\n orderIndex: i,\n itemIndex: j,\n })\n }\n }\n }\n return considerationFulfillments\n }\n\n private getAdvancedOrderParams(data: Order): { advancedOrder: AdvancedOrder; value: BigNumber } {\n const advancedOrder = {\n parameters: data.parameters,\n numerator: BigNumber.from('1'),\n denominator: BigNumber.from('1'),\n signature: data.signature,\n extraData: '0x00',\n }\n const value = this.calculateValue(data.parameters.consideration)\n return { advancedOrder, value }\n }\n\n private calculateValue(considerations: ConsiderationItem[]): BigNumber {\n return considerations.reduce(\n (amt: BigNumber, consideration: ConsiderationItem) => amt.add(consideration.startAmount),\n BigNumber.from(0)\n )\n }\n}\n","import abi from '../../../abis/Sudoswap.json'\nimport { Interface } from '@ethersproject/abi'\nimport { BuyItem, Market, NFTTrade, TokenType } from '../NFTTrade'\nimport { TradeConfig } from '../Command'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\n\ntype PairSwap = {\n swapInfo: {\n pair: string // address\n nftIds: BigNumberish[]\n }\n tokenAddress: string // address\n maxCost: BigNumberish\n}\n\nexport type SudoswapData = {\n swaps: PairSwap[]\n nftRecipient: string\n ethRecipient: string\n deadline: BigNumberish\n}\n\nexport class SudoswapTrade extends NFTTrade<SudoswapData> {\n public static INTERFACE: Interface = new Interface(abi)\n\n constructor(orders: SudoswapData[]) {\n super(Market.Sudoswap, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const order of this.orders) {\n const calldata = SudoswapTrade.INTERFACE.encodeFunctionData('robustSwapETHForSpecificNFTs', [\n order.swaps.map((swap) => {\n return { swapInfo: swap.swapInfo, maxCost: swap.maxCost }\n }),\n order.ethRecipient,\n order.nftRecipient,\n order.deadline,\n ])\n const value = order.swaps.reduce((prevVal, swap) => {\n return prevVal.add(swap.maxCost)\n }, BigNumber.from(0))\n planner.addCommand(CommandType.SUDOSWAP, [value, calldata], config.allowRevert)\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const order of this.orders) {\n for (const swap of order.swaps) {\n for (const tokenId of swap.swapInfo.nftIds) {\n buyItems.push({\n tokenAddress: swap.tokenAddress,\n tokenId,\n tokenType: TokenType.ERC721,\n })\n }\n }\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const order of this.orders) {\n for (const swap of order.swaps) {\n total = total.add(swap.maxCost)\n }\n }\n return total\n }\n}\n","import abi from '../../../abis/X2Y2.json'\nimport { Interface } from '@ethersproject/abi'\nimport { BuyItem, Market, NFTTrade, TokenType } from '../NFTTrade'\nimport { TradeConfig } from '../Command'\nimport { RoutePlanner, CommandType } from '../../utils/routerCommands'\nimport { BigNumber, BigNumberish } from 'ethers'\n\nexport type X2Y2Data = {\n signedInput: string\n recipient: string\n tokenAddress: string\n tokenId: BigNumberish\n price: BigNumberish\n}\n\nexport class X2Y2Trade extends NFTTrade<X2Y2Data> {\n public static INTERFACE: Interface = new Interface(abi)\n\n constructor(orders: X2Y2Data[]) {\n super(Market.X2Y2, orders)\n }\n\n encode(planner: RoutePlanner, config: TradeConfig): void {\n for (const item of this.orders) {\n const functionSelector = X2Y2Trade.INTERFACE.getSighash(X2Y2Trade.INTERFACE.getFunction('run'))\n const calldata = functionSelector + item.signedInput.slice(2)\n\n planner.addCommand(\n CommandType.X2Y2_721,\n [item.price, calldata, item.recipient, item.tokenAddress, item.tokenId],\n config.allowRevert\n )\n }\n }\n\n getBuyItems(): BuyItem[] {\n let buyItems: BuyItem[] = []\n for (const item of this.orders) {\n buyItems.push({\n tokenAddress: item.tokenAddress,\n tokenId: item.tokenId,\n tokenType: TokenType.ERC721,\n })\n }\n return buyItems\n }\n\n getTotalPrice(): BigNumberish {\n let total = BigNumber.from(0)\n for (const item of this.orders) {\n total = total.add(item.price)\n }\n return total\n }\n}\n"],"names":["CommandType","REVERTABLE_COMMANDS","Set","SEAPORT","NFTX","LOOKS_RARE_721","LOOKS_RARE_1155","X2Y2_721","X2Y2_1155","FOUNDATION","SUDOSWAP","NFT20","ABI_DEFINITION","PERMIT","TRANSFER","V3_SWAP_EXACT_IN","V3_SWAP_EXACT_OUT","V2_SWAP_EXACT_IN","V2_SWAP_EXACT_OUT","WRAP_ETH","UNWRAP_WETH","SWEEP","PAY_PORTION","OWNER_CHECK_721","OWNER_CHECK_1155","CRYPTOPUNKS","PERMIT2_TRANSFER_FROM","PERMIT2_TRANSFER_FROM_BATCH","PERMIT2_PERMIT_BATCH","RoutePlanner","this","commands","inputs","addCommand","type","parameters","allowRevert","command","encodedInput","defaultAbiCoder","encode","createCommand","push","has","Error","concat","toString","padStart","NARWHAL_ADDRESS","CONTRACT_BALANCE","BigNumber","from","pow","REFUND_ETH_PRICE_IMPACT_THRESHOLD","Percent","JSBI","BigInt","UniswapTrade","trade","options","fromAny","trades","isRouterTrade","Array","isArray","length","invariant","every","tradeType","RouterTrade","v2Routes","filter","V2Trade","map","routev2","route","inputAmount","outputAmount","v3Routes","V3Trade","routev3","mixedRoutes","MixedRouteTrade","mixedRoute","planner","_config","payerIsUser","currency","isNative","maximumAmountIn","slippageTolerance","quotient","swaps","swap","protocol","Protocol","V2","addV2Swap","V3","addV3Swap","MIXED","addMixedSwap","recipient","minimumAmountOut","TradeType","EXACT_OUTPUT","priceImpact","greaterThan","EXACT_INPUT","path","pool","address","createUncheckedTrade","encodeRouteToPath","pools","Pool","Pair","outputToken","amountIn","amountOut","sections","partitionMixedRouteByProtocol","isLastSectionInRoute","i","inputToken","input","wrapped","section","getOutputOfPools","newRouteOriginal","MixedRouteSDK","token0","equals","token1","newRoute","MixedRoute","mixedRouteIsAllV3","encodeMixedRouteToPath","liquidityToken","hasOwnProperty","PERMIT2_INTERFACE","ethers","utils","Interface","SwapRouter","swapGenieCallParameters","config","sender","totalPrice","orders","add","getTotalPrice","encodePlan","swapERC20CallParameters","inputCurrency","inputTokenPermit","Token","permit","calldata","encodeFunctionData","constants","AddressZero","signature","slice","encodePermit","nativeCurrencyValue","deadline","deadlineOrPreviousBlockhash","undefined","INTERFACE","value","abi","Market","TokenType","NFTTrade","market","CryptopunkTrade","_NFTTrade","Cryptopunks","_inheritsLoose","_proto","item","tokenId","getBuyItems","buyItems","tokenAddress","CRYPTOPUNK_ADDRESS","tokenType","Cryptopunk","total","FoundationTrade","Foundation","price","referrer","ERC721","LooksRareTrade","LooksRare","takerOrder","makerOrder","collection","NFT20Trade","order","tokenIds","tokenAmounts","fee","isV3","NFTXTrade","vaultId","Ether","onChain","vaultAddress","SeaportTrade","Seaport","advancedOrders","orderFulfillments","items","_","index","orderIndex","itemIndex","considerationFulFillments","getConsiderationFulfillments","getAdvancedOrderParams","advancedOrder","OPENSEA_CONDUIT_KEY","offer","token","identifierOrCriteria","calculateValue","consideration","protocolDatas","considerationFulfillments","considerationRecipients","protocolData","j","findIndex","x","recipientIndex","_loop","data","numerator","denominator","extraData","considerations","reduce","amt","startAmount","SudoswapTrade","Sudoswap","swapInfo","maxCost","ethRecipient","nftRecipient","prevVal","nftIds","X2Y2Trade","X2Y2","getSighash","getFunction","signedInput"],"mappings":"gJAOYA,60CAAZ,SAAYA,GACVA,uBACAA,2BACAA,2CACAA,6CACAA,2CACAA,6CACAA,yBACAA,2BACAA,iCACAA,qBACAA,oBACAA,wCACAA,4BACAA,0CACAA,8BACAA,gCACAA,kCACAA,4BACAA,sBACAA,0CACAA,4CACAA,kCACAA,sDACAA,kEACAA,oDAzBF,CAAYA,IAAAA,OA4BZ,IAEMC,EAAsB,IAAIC,IAAiB,CAC/CF,EAAYG,QACZH,EAAYI,KACZJ,EAAYK,eACZL,EAAYM,gBACZN,EAAYO,SACZP,EAAYQ,UACZR,EAAYS,WACZT,EAAYU,SACZV,EAAYW,QAGRC,UACHZ,EAAYa,QAAS,CAAC,WACtBb,EAAYc,UAAW,CAAC,UAAW,UAAW,aAC9Cd,EAAYe,kBAAmB,CAAC,UAAW,UAAW,UAAW,QAAS,UAC1Ef,EAAYgB,mBAAoB,CAAC,UAAW,UAAW,UAAW,QAAS,UAC3EhB,EAAYiB,kBAAmB,CAAC,UAAW,UAAW,YAAa,UAAW,UAC9EjB,EAAYkB,mBAAoB,CAAC,UAAW,UAAW,YAAa,UAAW,UAC/ElB,EAAYG,SAAU,CAAC,UAAW,WAClCH,EAAYmB,UAAW,CAAC,UAAW,aACnCnB,EAAYoB,aAAc,CAAC,UAAW,aACtCpB,EAAYqB,OAAQ,CAAC,UAAW,UAAW,aAC3CrB,EAAYI,MAAO,CAAC,UAAW,WAC/BJ,EAAYK,gBAAiB,CAAC,UAAW,QAAS,UAAW,UAAW,aACxEL,EAAYO,UAAW,CAAC,UAAW,QAAS,UAAW,UAAW,aAClEP,EAAYM,iBAAkB,CAAC,UAAW,QAAS,UAAW,UAAW,UAAW,aACpFN,EAAYQ,WAAY,CAAC,UAAW,QAAS,UAAW,UAAW,UAAW,aAC9ER,EAAYS,YAAa,CAAC,UAAW,QAAS,UAAW,UAAW,aACpET,EAAYsB,aAAc,CAAC,UAAW,UAAW,aACjDtB,EAAYU,UAAW,CAAC,UAAW,WACnCV,EAAYuB,iBAAkB,CAAC,UAAW,UAAW,aACrDvB,EAAYwB,kBAAmB,CAAC,UAAW,UAAW,UAAW,aACjExB,EAAYW,OAAQ,CAAC,UAAW,WAChCX,EAAYyB,aAAc,CAAC,UAAW,UAAW,aACjDzB,EAAY0B,uBAAwB,CAAC,UAAW,UAAW,aAC3D1B,EAAY2B,6BAA8B,CAAC,WAC3C3B,EAAY4B,sBAAuB,CAAC,YAG1BC,aAIX,aACEC,KAAKC,SAAW,KAChBD,KAAKE,OAAS,GAcf,mBAXDC,WAAA,SAAWC,EAAmBC,EAAmBC,YAAAA,IAAAA,GAAc,GAC7D,IAAIC,WAkBsBH,EAAmBC,GAE/C,MAAO,CAAED,KAAAA,EAAMI,aADMC,kBAAgBC,OAAO5B,EAAesB,GAAOC,IAnBlDM,CAAcP,EAAMC,GAElC,GADAL,KAAKE,OAAOU,KAAKL,EAAQC,cACrBF,EAAa,CACf,IAAKnC,EAAoB0C,IAAIN,EAAQH,MACnC,MAAM,IAAIU,uBAAuBP,EAAQH,qCAE3CG,EAAQH,KA1DY,IA0DLG,EAAQH,KAGzBJ,KAAKC,SAAWD,KAAKC,SAASc,OAAOR,EAAQH,KAAKY,SAAS,IAAIC,SAAS,EAAG,YC9FlEC,EAAkB,6CAGlBC,EAAmBC,YAAUC,KAAK,GAAGC,IAAI,KCoChDC,EAAoC,IAAIC,UAAQC,EAAKC,OAAO,IAAKD,EAAKC,OAAO,MAUtEC,aAkEX,WAAmBC,EAA0DC,GAA1D7B,WAAA4B,EAA0D5B,aAAA6B,EA2C5E,OA3CoGF,EAjE9FG,QAAP,SAAeC,EAAyBF,GACtC,OAAIG,EAAcD,GACT,IAAIJ,EAAaI,EAAsDF,GAG5EI,MAAMC,QAAQH,GACTJ,EAAaN,KAAKU,EAAQF,GAG5BF,EAAaN,KAClB,CACEU,GAKFF,IAIJF,EACON,KAAP,SACEU,EAKAF,GAQA,OANUE,EAAOI,OAAS,GAA1BC,MAEEL,EAAOM,OAAM,SAACT,GAAK,OAAKA,EAAMU,WAAaP,EAAO,GAAGO,cADvDF,MAKO,IAAIT,EAET,IAAIY,QAAY,CACdC,SAAUT,EACPU,QAAO,SAACb,GAAK,OAAKA,aAAiBc,WACnCC,KAAI,SAACf,GAAK,MAAM,CACfgB,QAAShB,EAAMiB,MACfC,YAAalB,EAAMkB,YACnBC,aAAcnB,EAAMmB,iBAExBC,SAAUjB,EACPU,QAAO,SAACb,GAAK,OAAKA,aAAiBqB,WACnCN,KAAI,SAACf,GAAK,MAAM,CACfsB,QAAStB,EAAMiB,MACfC,YAAalB,EAAMkB,YACnBC,aAAcnB,EAAMmB,iBAExBI,YAAapB,EACVU,QAAO,SAACb,GAAK,OAAKA,aAAiBwB,qBACnCT,KAAI,SAACf,GAAK,MAAM,CACfyB,WAAYzB,EAAMiB,MAClBC,YAAalB,EAAMkB,YACnBC,aAAcnB,EAAMmB,iBAExBT,UAAWP,EAAO,GAAGO,YAEvBT,gBAMJnB,OAAA,SAAO4C,EAAuBC,GAC5B,IAAIC,GAAc,EACdxD,KAAK4B,MAAMkB,YAAYW,SAASC,WAElCJ,EAAQnD,WAAWjC,EAAYmB,SAAU,CACvC6B,EACAlB,KAAK4B,MAAM+B,gBAAgB3D,KAAK6B,QAAQ+B,mBAAmBC,SAAS7C,aAGtEwC,GAAc,GAGhB,cAAmBxD,KAAK4B,MAAMkC,sBAAO,CAAA,IAA1BC,UACT,OAAQA,EAAKlB,MAAMmB,UACjB,KAAKC,WAASC,GACZC,EAAUb,EAASS,EAAM/D,KAAK4B,MAAMU,UAAWtC,KAAK6B,QAAS2B,GAC7D,MACF,KAAKS,WAASG,GACZC,EAAUf,EAASS,EAAM/D,KAAK4B,MAAMU,UAAWtC,KAAK6B,QAAS2B,GAC7D,MACF,KAAKS,WAASK,MACZC,EAAajB,EAASS,EAAM/D,KAAK4B,MAAMU,UAAWtC,KAAK6B,QAAS2B,GAChE,MACF,QACE,MAAM,IAAI1C,MAAM,+BAIlBd,KAAK4B,MAAMmB,aAAaU,SAASC,SACnCJ,EAAQnD,WAAWjC,EAAYoB,YAAa,CAC1CU,KAAK6B,QAAQ2C,UACbxE,KAAK4B,MAAM6C,iBAAiBzE,KAAK6B,QAAQ+B,mBAAmBC,SAAS7C,aAGvEhB,KAAK4B,MAAMkB,YAAYW,SAASC,WAC/B1D,KAAK4B,MAAMU,YAAcoC,YAAUC,cAAkC3E,KAAK4B,MA0KlEgD,YAAYC,YAAYtD,KAtKjC+B,EAAQnD,WAAWjC,EAAYoB,YAAa,CAACU,KAAK6B,QAAQ2C,UAAW,UAM3E,SAASL,EACPb,IAEAhB,EACAT,EACA2B,OAHEX,IAAAA,MAKIjB,EAAQ,IAAIc,QAChBG,EACAP,GAAaoC,YAAUI,cAPhBhC,cAAaC,aAQpBT,GAGEA,GAAaoC,YAAUI,YACzBxB,EAAQnD,WAAWjC,EAAYiB,iBAAkB,CAC/CyC,EAAM+B,gBAAgB9B,EAAQ+B,mBAAmBC,SAAS7C,WAC1DY,EAAM6C,iBAAiB5C,EAAQ+B,mBAAmBC,SAAS7C,WAC3D6B,EAAMkC,KAAKpC,KAAI,SAACqC,GAAI,OAAKA,EAAKC,WAE9BrD,EAAMmB,aAAaU,SAASC,SAAWxC,EAAkBW,EAAQ2C,UACjEhB,IAEOlB,GAAaoC,YAAUC,cAChCrB,EAAQnD,WAAWjC,EAAYkB,kBAAmB,CAChDwC,EAAM6C,iBAAiB5C,EAAQ+B,mBAAmBC,SAAS7C,WAC3DY,EAAM+B,gBAAgB9B,EAAQ+B,mBAAmBC,SAAS7C,WAC1D6B,EAAMkC,KAAKpC,KAAI,SAACqC,GAAI,OAAKA,EAAKC,WAC9BrD,EAAMmB,aAAaU,SAASC,SAAWxC,EAAkBW,EAAQ2C,UACjEhB,IAMN,SAASa,EACPf,IAEAhB,EACAT,EACA2B,OAHEX,IAAAA,MAKIjB,EAAQqB,QAAQiC,qBAAqB,CACzCrC,MAAOA,EACPC,cAPOA,YAQPC,eARoBA,aASpBT,UAAAA,IAGIyC,EAAOI,oBAAkBtC,EAAmCjB,EAAMU,YAAcoC,YAAUC,cAC5FrC,GAAaoC,YAAUI,YACzBxB,EAAQnD,WAAWjC,EAAYe,iBAAkB,CAC/C2C,EAAMmB,aAAaU,SAASC,SAAWxC,EAAkBW,EAAQ2C,UACjE5C,EAAM+B,gBAAgB9B,EAAQ+B,mBAAmBC,SAAS7C,WAC1DY,EAAM6C,iBAAiB5C,EAAQ+B,mBAAmBC,SAAS7C,WAC3D+D,EACAvB,IAEOlB,GAAaoC,YAAUC,cAChCrB,EAAQnD,WAAWjC,EAAYgB,kBAAmB,CAChD0C,EAAMmB,aAAaU,SAASC,SAAWxC,EAAkBW,EAAQ2C,UACjE5C,EAAM6C,iBAAiB5C,EAAQ+B,mBAAmBC,SAAS7C,WAC3DY,EAAM+B,gBAAgB9B,EAAQ+B,mBAAmBC,SAAS7C,WAC1D+D,EACAvB,IAMN,SAASe,EACPjB,EACAS,EACAzB,EACAT,EACA2B,GAEA,IAAQX,EAAqCkB,EAArClB,MAAOC,EAA8BiB,EAA9BjB,YAAaC,EAAiBgB,EAAjBhB,aAG5B,GAA2B,IAAvBF,EAAMuC,MAAMjD,OAAc,CAC5B,GAAIU,EAAMuC,MAAM,aAAcC,OAC5B,OAAOhB,EAAUf,EAASS,EAAMzB,EAAWT,EAAS2B,GAC/C,GAAIX,EAAMuC,MAAM,aAAcE,OACnC,OAAOnB,EAAUb,EAASS,EAAMzB,EAAWT,EAAS2B,GAEpD,MAAM,IAAI1C,MAAM,sBAwBpB,IApBA,IAiBIyE,EAjBE3D,EAAQwB,kBAAgB8B,qBAAqB,CACjDrC,MAAOA,EACPC,YAAAA,EACAC,aAAAA,EACAT,UAAAA,IAGIkD,EAAW5D,EAAM+B,gBAAgB9B,EAAQ+B,kBAAmBd,GAAae,SAAS7C,WAClFyE,EAAY7D,EAAM6C,iBAAiB5C,EAAQ+B,kBAAmBb,GAAcc,SAAS7C,WAIrF0E,EAAWC,gCAA8B9C,GACzC+C,EAAuB,SAACC,GAC5B,OAAOA,IAAMH,EAASvD,OAAS,GAI7B2D,EAAajD,EAAMkD,MAAMC,QAEpBH,EAAI,EAAGA,EAAIH,EAASvD,OAAQ0D,IAAK,CACxC,IAAMI,EAAUP,EAASG,GAEzBN,EAAcW,mBAAiBD,EAASH,GAExC,IAAMK,EAAmB,IAAIC,0BACvBH,GACJA,EAAQ,GAAGI,OAAOC,OAAOR,GAAcG,EAAQ,GAAGI,OAASJ,EAAQ,GAAGM,OACtEhB,GAEIiB,EAAW,IAAIC,aAAWN,GAShC,GANAL,EAAaP,EAEa,SAAC1C,GACzB,OAAOA,EAAMuC,MAAM/C,OAAM,SAAC2C,GAAI,OAAKA,aAAgBK,UAGjDqB,CAAkBF,GAAW,CAC/B,IAAMzB,EAAe4B,yBAAuBH,GAEtChC,EAAYoB,EAAqBC,GACnCjE,EAAMmB,aAAaU,SAASC,SAC1BxC,EACAW,EAAQ2C,UAGTkB,EAASG,EAAI,GAAG,GAAYe,eAAe3B,QAEhD3B,EAAQnD,WAAWjC,EAAYe,iBAAkB,CAC/CuF,EACK,GAALqB,EAASL,EAAWrE,EACnByE,EAAqBC,GAASJ,EAAJ,EAC3BV,EACAvB,GAAqB,IAANqC,SAGjBvC,EAAQnD,WAAWjC,EAAYiB,iBAAkB,CACzC,IAAN0G,EAAUL,EAAWrE,EACpByE,EAAqBC,GAASJ,EAAJ,EAC3Be,EAASzB,KAAKpC,KAAI,SAACqC,GAAI,OAAKA,EAAKC,WACjCW,EAAqBC,KAAOjE,EAAMmB,aAAaU,SAASC,SAAW7B,EAAQ2C,UAAYtD,EACvFsC,GAAqB,IAANqC,cAaP7D,EACdJ,GAWA,OAAOA,aAAiBW,UAAiBN,MAAMC,QAAQN,IAAUA,EAAMiF,eAAe,cC1UlFC,EAAoB,IAAIC,SAAOC,MAAMC,mxSCMrBC,aAAU,cAsE7B,OAnEDA,EAIcC,wBAAP,SACLpF,EACAqF,GAEYA,EAAOC,QAAnBjF,MAMA,IALA,MAAIkB,EAAU,IAAIvD,EACduH,EAAalG,YAAUC,KAAK,GAE1Bf,EAA+B,GAAjByB,EAAOI,QAA0C,GAA3BJ,EAAO,GAAGwF,OAAOpF,WAEvCJ,kBAAQ,CAAA,IAAjBH,UACTA,EAAMlB,OAAO4C,EAAS,CAAEhD,YAAAA,IACxBgH,EAAaA,EAAWE,IAAI5F,EAAM6F,iBAIpC,OADAnE,EAAQnD,WAAWjC,EAAYqB,MAAO,CHjCf,6CGiC6B6H,EAAOC,OAAQ,IAC5DH,EAAWQ,WAAWpE,EAASgE,EAAYF,IAGpDF,EAKcS,wBAAP,SAA+B5F,EAAyBF,GAE7D,IAAMyB,EAAU,IAAIvD,EAEd6B,EAAQD,EAAaG,QAAQC,EAAQF,GAErC+F,EAAgBhG,EAAMA,MAAMkB,YAAYW,SAClCmE,EAAclE,UAAc7B,EAAQgG,kBAAhDzF,MACIP,EAAQgG,kBAAoBD,aAAyBE,kBD3ChCxE,EAAuByE,GAClD,IAAMC,EAAWlB,EAAkBmB,mBALZ,0EAKiD,CACtElB,SAAOmB,UAAUC,YACjBJ,EACAA,EAAOK,YAGT9E,EAAQnD,WAAWjC,EAAYa,OAAQ,CAAC,KAAOiJ,EAASK,MAAM,MCqC1DC,CAAahF,EAASzB,EAAQgG,kBAGhC,IAAMU,EACFnH,YAAUC,KADcuG,EAAclE,SACvB9B,EAAMA,MAAM+B,gBAAgB9B,EAAQ+B,mBAAmBC,SAAS7C,WAChE,GAGnB,OADAY,EAAMlB,OAAO4C,EAAS,CAAEhD,aAAa,IAC9B4G,EAAWQ,WAAWpE,EAASiF,EAAqB,CACzDC,SAAU3G,EAAQ4G,4BAA8BrH,YAAUC,KAAKQ,EAAQ4G,kCAA+BC,KAI1GxB,EAMeQ,WAAP,SACNpE,EACAiF,EACAnB,YAAAA,IAAAA,EAA2B,IAE3B,IAAQnH,EAAqBqD,EAArBrD,SAAUC,EAAWoD,EAAXpD,OAKlB,MAAO,CAAE8H,SADQd,EAAWyB,UAAUV,mBAFVb,EAAOoB,SAAW,iCAAmC,yBAC5DpB,EAAOoB,SAAW,CAACvI,EAAUC,EAAQkH,EAAOoB,UAAY,CAACvI,EAAUC,IAErE0I,MAAOL,EAAoBvH,kBApElCkG,YAAuB,IAAID,YAAU4B,WC6BzCC,EAWAC,EAnCUC,EAIpB,SAAYC,EAAgB1B,GAChBA,EAAOpF,OAAS,GAA1BC,MACApC,KAAKiJ,OAASA,EACdjJ,KAAKuH,OAASA,IAiBNuB,EAAAA,iBAAAA,4CAEVA,wBACAA,gBACAA,cACAA,oBACAA,sBACAA,4BACAA,eAGUC,EAAAA,oBAAAA,uCAEVA,oBACAA,8BClDWG,cAGX,WAAY3B,UACV4B,YAAML,eAAOM,YAAa7B,SAJD8B,OAK1B,kBA0BA,OA1BAC,EAED5I,OAAA,SAAO4C,EAAuB8D,GAC5B,cAAmBpH,KAAKuH,uBAAQ,CAAA,IAArBgC,UACTjG,EAAQnD,WAAWjC,EAAYyB,YAAa,CAAC4J,EAAKC,QAASD,EAAK/E,UAAW+E,EAAKX,OAAQxB,EAAO9G,eAElGgJ,EAEDG,YAAA,WAEE,IADA,MAAIC,EAAsB,OACP1J,KAAKuH,uBACtBmC,EAAS9I,KAAK,CACZ+I,aAAcT,EAAgBU,mBAC9BJ,gBAAcA,QACdK,UAAWd,kBAAUe,aAGzB,OAAOJ,GACRJ,EAED7B,cAAA,WAEE,IADA,MAAIsC,EAAQ3I,YAAUC,KAAK,OACRrB,KAAKuH,uBACtBwC,EAAQA,EAAMvC,YAASoB,OAEzB,OAAOmB,MA9B0Bf,GACrBE,qBAA6B,i1jBCGhCc,cAGX,WAAYzC,UACV4B,YAAML,eAAOmB,WAAY1C,SAJA8B,OAK1B,kBAoCA,OApCAC,EAED5I,OAAA,SAAO4C,EAAuB8D,GAC5B,cAAmBpH,KAAKuH,uBAAQ,CAAA,IAArBgC,UACHvB,EAAWgC,EAAgBrB,UAAUV,mBAAmB,QAAS,CACrEsB,EAAKI,aACLJ,EAAKC,QACLD,EAAKW,MACLX,EAAKY,WAEP7G,EAAQnD,WACNjC,EAAYS,WACZ,CAAC4K,EAAKW,MAAOlC,EAAUuB,EAAK/E,UAAW+E,EAAKI,aAAcJ,EAAKC,SAC/DpC,EAAO9G,eAGZgJ,EAEDG,YAAA,WAEE,IADA,MAAIC,EAAsB,OACP1J,KAAKuH,uBAAQ,CAAA,IAArBgC,UACTG,EAAS9I,KAAK,CACZ+I,aAAcJ,EAAKI,aACnBH,QAASD,EAAKC,QACdK,UAAWd,kBAAUqB,SAGzB,OAAOV,GACRJ,EAED7B,cAAA,WAEE,IADA,MAAIsC,EAAQ3I,YAAUC,KAAK,OACRrB,KAAKuH,uBACtBwC,EAAQA,EAAMvC,YAAS0C,OAEzB,OAAOH,MAxC0Bf,GACrBgB,YAAuB,IAAI/C,YAAU4B,wnVCyBxCwB,cAGX,WAAY9C,UACV4B,YAAML,eAAOwB,UAAW/C,SAJA8B,OAKzB,kBAmCA,OAnCAC,EAED5I,OAAA,SAAO4C,EAAuB8D,GAC5B,cAAmBpH,KAAKuH,uBAAQ,CAAA,IAArBgC,UACHvB,EAAWqC,EAAe1B,UAAUV,mBAAmB,sCAAuC,CAClGsB,EAAKgB,WACLhB,EAAKiB,aAGPlH,EAAQnD,WACNjC,EAAYK,eACZ,CAACgL,EAAKiB,WAAWN,MAAOlC,EAAUuB,EAAK/E,UAAW+E,EAAKiB,WAAWC,WAAYlB,EAAKiB,WAAWhB,SAC9FpC,EAAO9G,eAGZgJ,EAEDG,YAAA,WAEE,IADA,MAAIC,EAAsB,OACP1J,KAAKuH,uBAAQ,CAAA,IAArBgC,UACTG,EAAS9I,KAAK,CACZ+I,aAAcJ,EAAKiB,WAAWC,WAC9BjB,QAASD,EAAKiB,WAAWhB,QACzBK,UAAWd,kBAAUqB,SAGzB,OAAOV,GACRJ,EAED7B,cAAA,WAEE,IADA,MAAIsC,EAAQ3I,YAAUC,KAAK,OACRrB,KAAKuH,uBACtBwC,EAAQA,EAAMvC,YAASgD,WAAWN,OAEpC,OAAOH,MAvCyBf,GACpBqB,YAAuB,IAAIpD,YAAU4B,q+ECzBxC6B,cAGX,WAAYnD,UACV4B,YAAML,eAAOjK,MAAO0I,SAJA8B,OAKrB,kBAqCA,OArCAC,EAED5I,OAAA,SAAO4C,EAAuB8D,GAC5B,cAAoBpH,KAAKuH,uBAAQ,CAAA,IAAtBoD,UACH3C,EAAW0C,EAAW/B,UAAUV,mBAAmB,YAAa,CACpE0C,EAAMhB,aACNgB,EAAMC,SACND,EAAME,aACNF,EAAMnG,UACNmG,EAAMG,IACNH,EAAMI,OAERzH,EAAQnD,WAAWjC,EAAYW,MAAO,CAAC8L,EAAM/B,MAAOZ,GAAWZ,EAAO9G,eAEzEgJ,EAEDG,YAAA,WAEE,IADA,MAAIC,EAAsB,OACP1J,KAAKuH,uBACtB,IAD8B,MAArBvC,cACaA,EAAK4F,yBACzBlB,EAAS9I,KAAK,CACZ+I,aAAc3E,EAAK2E,aACnBH,gBACAK,UAAWd,kBAAUqB,SAK3B,OAAOV,GACRJ,EAED7B,cAAA,WAEE,IADA,MAAIsC,EAAQ3I,YAAUC,KAAK,OACRrB,KAAKuH,uBACtBwC,EAAQA,EAAMvC,YAASoB,OAEzB,OAAOmB,MAzCqBf,GAChB0B,YAAuB,IAAIzD,YAAU4B,+4OCDxCmC,cAGX,WAAYzD,UACV4B,YAAML,eAAOxK,KAAMiJ,SAJA8B,OAKpB,kBAmCA,OAnCAC,EAED5I,OAAA,SAAO4C,EAAuB8D,GAC5B,cAAoBpH,KAAKuH,uBAAQ,CAAA,IAAtBoD,UACH3C,EAAWgD,EAAUrC,UAAUV,mBAAmB,eAAgB,CACtE0C,EAAMM,QACNN,EAAMC,SAASzI,OACfwI,EAAMC,SACN,CAACM,QAAMC,QAAQ,GAAGnF,QAAQf,QAAS0F,EAAMS,cACzCT,EAAMnG,YAERlB,EAAQnD,WAAWjC,EAAYI,KAAM,CAACqM,EAAM/B,MAAOZ,GAAWZ,EAAO9G,eAExEgJ,EAEDG,YAAA,WAEE,IADA,MAAIC,EAAsB,OACN1J,KAAKuH,uBACvB,IAD+B,MAAtBoD,cACaA,EAAMC,yBAC1BlB,EAAS9I,KAAK,CACZ+I,aAAcgB,EAAMhB,aACpBH,gBACAK,UAAWd,kBAAUqB,SAI3B,OAAOV,GACRJ,EAED7B,cAAA,WAEE,IADA,MAAIsC,EAAQ3I,YAAUC,KAAK,OACRrB,KAAKuH,uBACtBwC,EAAQA,EAAMvC,YAASoB,OAEzB,OAAOmB,MAvCoBf,GACfgC,YAAuB,IAAI/D,YAAU4B,mr6BCoCxCwC,cAIX,WAAY9D,UACV4B,YAAML,eAAOwC,QAAS/D,SALA8B,OAMvB,kBAmHA,OAnHAC,EAED5I,OAAA,SAAO4C,EAAuB8D,GAC5B,cAAoBpH,KAAKuH,uBAAQ,CAO/B,IAP+B,MAAtBoD,UACLY,EAAkC,GAClCC,EAA8Cb,EAAMc,MAAM9I,KAAI,SAAC+I,EAAGC,GAAK,MAAK,CAC9E,CAAEC,WAAYD,EAAOE,UAAW,OAE9BC,EAAsD9L,KAAK+L,6BAA6BpB,EAAMc,WAE/Ed,EAAMc,sBAAO,CAAA,MACJzL,KAAKgM,gCAC/BT,EAAe3K,OADPqL,eAIV,IAAIjE,EAEFA,EAD2B,GAAzBuD,EAAepJ,OACNkJ,EAAa1C,UAAUV,mBAAmB,uBAAwB,CAC3EsD,EAAe,GACf,GACAF,EAAaa,oBACbvB,EAAMnG,YAGG6G,EAAa1C,UAAUV,mBAAmB,iCAAkC,CACrFsD,EACA,GACAC,EACAM,EACAT,EAAaa,oBACbvB,EAAMnG,UACN,MAGJlB,EAAQnD,WAAWjC,EAAYG,QAAS,CAAC2B,KAAKyH,gBAAgBzG,WAAYgH,GAAWZ,EAAO9G,eAE/FgJ,EAEDG,YAAA,WAEE,IADA,MAAIC,EAAsB,OACN1J,KAAKuH,uBACvB,IAD+B,kBACNkE,sBACvB,IAD8B,kBACLpL,WAAW8L,sBAAO,CAAA,IAAhCA,UACTzC,EAAS9I,KAAK,CACZ+I,aAAcwC,EAAMC,MACpB5C,QAAS2C,EAAME,qBACfxC,UAAWd,kBAAUqB,SAK7B,OAAOV,GACRJ,EAED7B,cAAA,WAEE,IADA,MAAIH,EAAalG,YAAUC,KAAK,OACZrB,KAAKuH,uBACvB,IAD+B,kBACNkE,sBACvBnE,EAAaA,EAAWE,IAAIxH,KAAKsM,uBAAoBjM,WAAWkM,gBAGpE,OAAOjF,GACRgC,EAEOyC,6BAAA,SAA6BS,GACnC,IAAIC,EAAsD,GACpDC,EAAoC,GAE1C,IAAK,IAAM7G,KAAK2G,EAAe,CAC7B,IAAMG,EAAeH,EAAc3G,cAExB+G,GACT,IAAMrD,EAAOoD,EAAatM,WAAWkM,cAAcK,IAEqB,IAApEF,EAAwBG,WAAU,SAACC,GAAC,OAAKA,IAAMvD,EAAK/E,cACtDkI,EAAwB9L,KAAK2I,EAAK/E,WAGpC,IAAMuI,EAAiBL,EAAwBG,WAAU,SAACC,GAAC,OAAKA,IAAMvD,EAAK/E,aAEtEiI,EAA0BM,GAQ7BN,EAA0BM,GAAgBnM,KAAK,CAC7CgL,WAAY/F,EACZgG,UAAWe,IATbH,EAA0B7L,KAAK,CAC7B,CACEgL,WAAY/F,EACZgG,UAAWe,MAbnB,IAAK,IAAMA,KAAKD,EAAatM,WAAWkM,cAAeS,EAA5CJ,GAwBb,OAAOH,GACRnD,EAEO0C,uBAAA,SAAuBiB,GAS7B,MAAO,CAAEhB,cARa,CACpB5L,WAAY4M,EAAK5M,WACjB6M,UAAW9L,YAAUC,KAAK,KAC1B8L,YAAa/L,YAAUC,KAAK,KAC5B+G,UAAW6E,EAAK7E,UAChBgF,UAAW,QAGWxE,MADV5I,KAAKsM,eAAeW,EAAK5M,WAAWkM,iBAEnDjD,EAEOgD,eAAA,SAAee,GACrB,OAAOA,EAAeC,QACpB,SAACC,EAAgBhB,GAAgC,OAAKgB,EAAI/F,IAAI+E,EAAciB,eAC5EpM,YAAUC,KAAK,QAvHa2H,GAClBqC,YAAuB,IAAIpE,YAAU4B,GACrCwC,sBAA8B,mkbCjCjCoC,cAGX,WAAYlG,UACV4B,YAAML,eAAO4E,SAAUnG,SAJA8B,OAKxB,kBA2CA,OA3CAC,EAED5I,OAAA,SAAO4C,EAAuB8D,GAC5B,cAAoBpH,KAAKuH,uBAAQ,CAAA,IAAtBoD,UACH3C,EAAWyF,EAAc9E,UAAUV,mBAAmB,+BAAgC,CAC1F0C,EAAM7G,MAAMnB,KAAI,SAACoB,GACf,MAAO,CAAE4J,SAAU5J,EAAK4J,SAAUC,QAAS7J,EAAK6J,YAElDjD,EAAMkD,aACNlD,EAAMmD,aACNnD,EAAMnC,WAEFI,EAAQ+B,EAAM7G,MAAMwJ,QAAO,SAACS,EAAShK,GACzC,OAAOgK,EAAQvG,IAAIzD,EAAK6J,WACvBxM,YAAUC,KAAK,IAClBiC,EAAQnD,WAAWjC,EAAYU,SAAU,CAACgK,EAAOZ,GAAWZ,EAAO9G,eAEtEgJ,EAEDG,YAAA,WAEE,IADA,MAAIC,EAAsB,OACN1J,KAAKuH,uBACvB,IAD+B,kBACNzD,sBACvB,IAD8B,MAArBC,cACaA,EAAK4J,SAASK,uBAClCtE,EAAS9I,KAAK,CACZ+I,aAAc5F,EAAK4F,aACnBH,gBACAK,UAAWd,kBAAUqB,SAK7B,OAAOV,GACRJ,EAED7B,cAAA,WAEE,IADA,MAAIsC,EAAQ3I,YAAUC,KAAK,OACPrB,KAAKuH,uBACvB,IAD+B,kBACNzD,sBACvBiG,EAAQA,EAAMvC,YAASoG,SAG3B,OAAO7D,MA/CwBf,GACnByE,YAAuB,IAAIxG,YAAU4B,02WCTxCoF,cAGX,WAAY1G,UACV4B,YAAML,eAAOoF,KAAM3G,SAJA8B,OAKpB,kBAiCA,OAjCAC,EAED5I,OAAA,SAAO4C,EAAuB8D,GAC5B,cAAmBpH,KAAKuH,uBAAQ,CAAA,IAArBgC,UAEHvB,EADmBiG,EAAUtF,UAAUwF,WAAWF,EAAUtF,UAAUyF,YAAY,QACpD7E,EAAK8E,YAAYhG,MAAM,GAE3D/E,EAAQnD,WACNjC,EAAYO,SACZ,CAAC8K,EAAKW,MAAOlC,EAAUuB,EAAK/E,UAAW+E,EAAKI,aAAcJ,EAAKC,SAC/DpC,EAAO9G,eAGZgJ,EAEDG,YAAA,WAEE,IADA,MAAIC,EAAsB,OACP1J,KAAKuH,uBAAQ,CAAA,IAArBgC,UACTG,EAAS9I,KAAK,CACZ+I,aAAcJ,EAAKI,aACnBH,QAASD,EAAKC,QACdK,UAAWd,kBAAUqB,SAGzB,OAAOV,GACRJ,EAED7B,cAAA,WAEE,IADA,MAAIsC,EAAQ3I,YAAUC,KAAK,OACRrB,KAAKuH,uBACtBwC,EAAQA,EAAMvC,YAAS0C,OAEzB,OAAOH,MArCoBf,GACfiF,YAAuB,IAAIhH,YAAU4B"}
|