@uniswap/universal-router-sdk 4.19.7 → 4.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,r,o,n,a=e(require("tiny-invariant")),i=e(require("@uniswap/universal-router/artifacts/contracts/UniversalRouter.sol/UniversalRouter.json")),s=require("@ethersproject/abi"),u=require("ethers"),p=require("@uniswap/v3-sdk"),d=require("@uniswap/v4-sdk"),m=require("@uniswap/sdk-core"),c=require("ethers/lib/utils"),l=require("@uniswap/v2-sdk"),f=require("@uniswap/router-sdk");function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=Array(t);r<t;r++)o[r]=e[r];return o}function T(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return A(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?A(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}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 C(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,"string");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}require("jsbi"),require("bignumber.js"),(r=exports.CommandType||(exports.CommandType={}))[r.V3_SWAP_EXACT_IN=0]="V3_SWAP_EXACT_IN",r[r.V3_SWAP_EXACT_OUT=1]="V3_SWAP_EXACT_OUT",r[r.PERMIT2_TRANSFER_FROM=2]="PERMIT2_TRANSFER_FROM",r[r.PERMIT2_PERMIT_BATCH=3]="PERMIT2_PERMIT_BATCH",r[r.SWEEP=4]="SWEEP",r[r.TRANSFER=5]="TRANSFER",r[r.PAY_PORTION=6]="PAY_PORTION",r[r.V2_SWAP_EXACT_IN=8]="V2_SWAP_EXACT_IN",r[r.V2_SWAP_EXACT_OUT=9]="V2_SWAP_EXACT_OUT",r[r.PERMIT2_PERMIT=10]="PERMIT2_PERMIT",r[r.WRAP_ETH=11]="WRAP_ETH",r[r.UNWRAP_WETH=12]="UNWRAP_WETH",r[r.PERMIT2_TRANSFER_FROM_BATCH=13]="PERMIT2_TRANSFER_FROM_BATCH",r[r.BALANCE_CHECK_ERC20=14]="BALANCE_CHECK_ERC20",r[r.V4_SWAP=16]="V4_SWAP",r[r.V3_POSITION_MANAGER_PERMIT=17]="V3_POSITION_MANAGER_PERMIT",r[r.V3_POSITION_MANAGER_CALL=18]="V3_POSITION_MANAGER_CALL",r[r.V4_INITIALIZE_POOL=19]="V4_INITIALIZE_POOL",r[r.V4_POSITION_MANAGER_CALL=20]="V4_POSITION_MANAGER_CALL",r[r.EXECUTE_SUB_PLAN=33]="EXECUTE_SUB_PLAN",(o=exports.Subparser||(exports.Subparser={}))[o.V3PathExactIn=0]="V3PathExactIn",o[o.V3PathExactOut=1]="V3PathExactOut",(n=exports.Parser||(exports.Parser={}))[n.Abi=0]="Abi",n[n.V4Actions=1]="V4Actions",n[n.V3Actions=2]="V3Actions";var x,y,P,h,v,_,R,b,E,V,I,w,g,k,U,N,O,B,S,F,q,M,D,W,L,X,H,j=new Set([exports.CommandType.EXECUTE_SUB_PLAN]),G=((t={})[exports.CommandType.EXECUTE_SUB_PLAN]={parser:exports.Parser.Abi,params:[{name:"commands",type:"bytes"},{name:"inputs",type:"bytes[]"}]},t[exports.CommandType.PERMIT2_PERMIT]={parser:exports.Parser.Abi,params:[{name:"permit",type:"((address token,uint160 amount,uint48 expiration,uint48 nonce) details,address spender,uint256 sigDeadline)"},{name:"signature",type:"bytes"}]},t[exports.CommandType.PERMIT2_PERMIT_BATCH]={parser:exports.Parser.Abi,params:[{name:"permit",type:"((address token,uint160 amount,uint48 expiration,uint48 nonce)[] details,address spender,uint256 sigDeadline)"},{name:"signature",type:"bytes"}]},t[exports.CommandType.PERMIT2_TRANSFER_FROM]={parser:exports.Parser.Abi,params:[{name:"token",type:"address"},{name:"recipient",type:"address"},{name:"amount",type:"uint160"}]},t[exports.CommandType.PERMIT2_TRANSFER_FROM_BATCH]={parser:exports.Parser.Abi,params:[{name:"transferFrom",type:"(address from,address to,uint160 amount,address token)[]"}]},t[exports.CommandType.V3_SWAP_EXACT_IN]={parser:exports.Parser.Abi,params:[{name:"recipient",type:"address"},{name:"amountIn",type:"uint256"},{name:"amountOutMin",type:"uint256"},{name:"path",subparser:exports.Subparser.V3PathExactIn,type:"bytes"},{name:"payerIsUser",type:"bool"}]},t[exports.CommandType.V3_SWAP_EXACT_OUT]={parser:exports.Parser.Abi,params:[{name:"recipient",type:"address"},{name:"amountOut",type:"uint256"},{name:"amountInMax",type:"uint256"},{name:"path",subparser:exports.Subparser.V3PathExactOut,type:"bytes"},{name:"payerIsUser",type:"bool"}]},t[exports.CommandType.V2_SWAP_EXACT_IN]={parser:exports.Parser.Abi,params:[{name:"recipient",type:"address"},{name:"amountIn",type:"uint256"},{name:"amountOutMin",type:"uint256"},{name:"path",type:"address[]"},{name:"payerIsUser",type:"bool"}]},t[exports.CommandType.V2_SWAP_EXACT_OUT]={parser:exports.Parser.Abi,params:[{name:"recipient",type:"address"},{name:"amountOut",type:"uint256"},{name:"amountInMax",type:"uint256"},{name:"path",type:"address[]"},{name:"payerIsUser",type:"bool"}]},t[exports.CommandType.V4_SWAP]={parser:exports.Parser.V4Actions},t[exports.CommandType.WRAP_ETH]={parser:exports.Parser.Abi,params:[{name:"recipient",type:"address"},{name:"amount",type:"uint256"}]},t[exports.CommandType.UNWRAP_WETH]={parser:exports.Parser.Abi,params:[{name:"recipient",type:"address"},{name:"amountMin",type:"uint256"}]},t[exports.CommandType.SWEEP]={parser:exports.Parser.Abi,params:[{name:"token",type:"address"},{name:"recipient",type:"address"},{name:"amountMin",type:"uint256"}]},t[exports.CommandType.TRANSFER]={parser:exports.Parser.Abi,params:[{name:"token",type:"address"},{name:"recipient",type:"address"},{name:"value",type:"uint256"}]},t[exports.CommandType.PAY_PORTION]={parser:exports.Parser.Abi,params:[{name:"token",type:"address"},{name:"recipient",type:"address"},{name:"bips",type:"uint256"}]},t[exports.CommandType.BALANCE_CHECK_ERC20]={parser:exports.Parser.Abi,params:[{name:"owner",type:"address"},{name:"token",type:"address"},{name:"minBalance",type:"uint256"}]},t[exports.CommandType.V4_INITIALIZE_POOL]={parser:exports.Parser.Abi,params:[{name:"poolKey",type:"(address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks)"},{name:"sqrtPriceX96",type:"uint160"}]},t[exports.CommandType.V3_POSITION_MANAGER_PERMIT]={parser:exports.Parser.V3Actions},t[exports.CommandType.V3_POSITION_MANAGER_CALL]={parser:exports.Parser.V3Actions},t[exports.CommandType.V4_POSITION_MANAGER_CALL]={parser:exports.Parser.V4Actions},t),K=function(){function e(){this.commands="0x",this.inputs=[]}var t=e.prototype;return t.addSubPlan=function(e){return this.addCommand(exports.CommandType.EXECUTE_SUB_PLAN,[e.commands,e.inputs],!0),this},t.addCommand=function(e,t,r){void 0===r&&(r=!1);var o=function(e,t){var r=G[e];switch(r.parser){case exports.Parser.Abi:return{type:e,encodedInput:c.defaultAbiCoder.encode(r.params.map((function(e){return e.type})),t)};case exports.Parser.V4Actions:case exports.Parser.V3Actions:return{type:e,encodedInput:t[0]}}}(e,t);if(this.inputs.push(o.encodedInput),r){if(!j.has(o.type))throw new Error("command type: "+o.type+" cannot be allowed to revert");o.type=128|o.type}return this.commands=this.commands.concat(o.type.toString(16).padStart(2,"0")),this},e}();function Y(e,t){if(t.involvesToken(e))return e;if(t.involvesToken(e.wrapped))return e.wrapped;if(t instanceof d.Pool&&t.token0.wrapped.equals(e))return t.token0;if(t instanceof d.Pool&&t.token1.wrapped.equals(e))return t.token1;throw new Error("Expected currency "+e.symbol+" to be either "+t.token0.symbol+" or "+t.token1.symbol)}(x=exports.RouterActionType||(exports.RouterActionType={})).UniswapTrade="UniswapTrade",x.UnwrapWETH="UnwrapWETH",(H=exports.UniversalRouterVersion||(exports.UniversalRouterVersion={})).V1_2="1.2",H.V2_0="2.0";var Z=((X={})[1]={weth:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",routerConfigs:(y={},y[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17143817},y[exports.UniversalRouterVersion.V2_0]={address:"0x66a9893cc07d91d95644aedd05d03f95e1dba8af",creationBlock:1737658355},y)},X[5]={weth:"0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6",routerConfigs:(P={},P[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8940568},P[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8940568},P)},X[11155111]={weth:"0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14",routerConfigs:(h={},h[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:3543575},h[exports.UniversalRouterVersion.V2_0]={address:"0x3a9d48ab9751398bbfa63ad67599bb04e4bdf98b",creationBlock:7259601},h)},X[137]={weth:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",routerConfigs:(v={},v[exports.UniversalRouterVersion.V1_2]={address:"0xec7BE89e9d109e7e3Fec59c222CF297125FEFda2",creationBlock:52210153},v[exports.UniversalRouterVersion.V2_0]={address:"0x1095692a6237d83c6a72f3f5efedb9a670c49223",creationBlock:1737492197},v)},X[80001]={weth:"0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889",routerConfigs:(_={},_[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:35176052},_[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:35176052},_)},X[10]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(R={},R[exports.UniversalRouterVersion.V1_2]={address:"0xCb1355ff08Ab38bBCE60111F1bb2B784bE25D7e8",creationBlock:114702266},R[exports.UniversalRouterVersion.V2_0]={address:"0x851116d9223fabed8e56c0e6b8ad0c31d98b3507",creationBlock:1737494278},R)},X[420]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(b={},b[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8887728},b[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8887728},b)},X[42161]={weth:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",routerConfigs:(E={},E[exports.UniversalRouterVersion.V1_2]={address:"0x5E325eDA8064b456f4781070C0738d849c824258",creationBlock:169472836},E[exports.UniversalRouterVersion.V2_0]={address:"0xa51afafe0263b40edaef0df8781ea9aa03e381a3",creationBlock:1737487458},E)},X[421613]={weth:"0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3",routerConfigs:(V={},V[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:18815277},V[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:18815277},V)},X[42220]={weth:"0x0000000000000000000000000000000000000000",routerConfigs:(I={},I[exports.UniversalRouterVersion.V1_2]={address:"0x643770e279d5d0733f21d6dc03a8efbabf3255b4",creationBlock:21407637},I[exports.UniversalRouterVersion.V2_0]={address:"0x643770e279d5d0733f21d6dc03a8efbabf3255b4",creationBlock:21407637},I)},X[44787]={weth:"0x0000000000000000000000000000000000000000",routerConfigs:(w={},w[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17566658},w[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17566658},w)},X[56]={weth:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",routerConfigs:(g={},g[exports.UniversalRouterVersion.V1_2]={address:"0x4Dae2f939ACf50408e13d58534Ff8c2776d45265",creationBlock:35160263},g[exports.UniversalRouterVersion.V2_0]={address:"0x1906c1d672b88cd1b9ac7593301ca990f94eae07",creationBlock:1737493275},g)},X[43114]={weth:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",routerConfigs:(k={},k[exports.UniversalRouterVersion.V1_2]={address:"0x4Dae2f939ACf50408e13d58534Ff8c2776d45265",creationBlock:40237257},k[exports.UniversalRouterVersion.V2_0]={address:"0x94b75331ae8d42c1b61065089b7d48fe14aa73b7",creationBlock:1737558236},k)},X[84531]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(U={},U[exports.UniversalRouterVersion.V1_2]={address:"0xd0872d928672ae2ff74bdb2f5130ac12229cafaf",creationBlock:6915289},U[exports.UniversalRouterVersion.V2_0]={address:"0xd0872d928672ae2ff74bdb2f5130ac12229cafaf",creationBlock:6915289},U)},X[8453]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(N={},N[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:9107268},N[exports.UniversalRouterVersion.V2_0]={address:"0x6ff5693b99212da76ad316178a184ab56d299b43",creationBlock:1737491485},N)},X[81457]={weth:"0x4300000000000000000000000000000000000004",routerConfigs:(O={},O[exports.UniversalRouterVersion.V1_2]={address:"0x643770E279d5D0733F21d6DC03A8efbABf3255B4",creationBlock:1116444},O[exports.UniversalRouterVersion.V2_0]={address:"0xeabbcb3e8e415306207ef514f660a3f820025be3",creationBlock:1737564586},O)},X[7777777]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(B={},B[exports.UniversalRouterVersion.V1_2]={address:"0x2986d9721A49838ab4297b695858aF7F17f38014",creationBlock:11832155},B[exports.UniversalRouterVersion.V2_0]={address:"0x3315ef7ca28db74abadc6c44570efdf06b04b020",creationBlock:1737562927},B)},X[324]={weth:"0x5aea5775959fbc2557cc8789bc1bf90a239d9a91",routerConfigs:(S={},S[exports.UniversalRouterVersion.V1_2]={address:"0x28731BCC616B5f51dD52CF2e4dF0E78dD1136C06",creationBlock:12640979},S[exports.UniversalRouterVersion.V2_0]={address:"0x28731BCC616B5f51dD52CF2e4dF0E78dD1136C06",creationBlock:12640979},S)},X[480]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(F={},F[exports.UniversalRouterVersion.V1_2]={address:"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",creationBlock:4063979},F[exports.UniversalRouterVersion.V2_0]={address:"0x8ac7bee993bb44dab564ea4bc9ea67bf9eb5e743",creationBlock:1737559557},F)},X[1301]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(q={},q[exports.UniversalRouterVersion.V1_2]={address:"0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6",creationBlock:1241811},q[exports.UniversalRouterVersion.V2_0]={address:"0xf70536b3bcc1bd1a972dc186a2cf84cc6da6be5d",creationBlock:7100543},q)},X[130]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(M={},M[exports.UniversalRouterVersion.V1_2]={address:"0x4D73A4411CA1c660035e4AECC8270E5DdDEC8C17",creationBlock:23678},M[exports.UniversalRouterVersion.V2_0]={address:"0xef740bf23acae26f6492b10de645d6b98dc8eaf3",creationBlock:1737568156},M)},X[10143]={weth:"0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",routerConfigs:(D={},D[exports.UniversalRouterVersion.V1_2]={address:"0x3ae6d8a282d67893e17aa70ebffb33ee5aa65893",creationBlock:23678},D[exports.UniversalRouterVersion.V2_0]={address:"0x3ae6d8a282d67893e17aa70ebffb33ee5aa65893",creationBlock:23678},D)},X[84532]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(W={},W[exports.UniversalRouterVersion.V1_2]={address:"0x492e6456d9528771018deb9e87ef7750ef184104",creationBlock:20216585},W[exports.UniversalRouterVersion.V2_0]={address:"0x492e6456d9528771018deb9e87ef7750ef184104",creationBlock:20216585},W)},X[1868]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(L={},L[exports.UniversalRouterVersion.V1_2]={address:"0x0e2850543f69f678257266e0907ff9a58b3f13de",creationBlock:3254782},L[exports.UniversalRouterVersion.V2_0]={address:"0x0e2850543f69f678257266e0907ff9a58b3f13de",creationBlock:3254782},L)},X),z=function(e,t){if(!(t in Z))throw new Error("Universal Router not deployed on chain "+t);return Z[t].routerConfigs[e].address},Q=function(e){if(!(e in Z))throw new Error("Universal Router not deployed on chain "+e);if("0x0000000000000000000000000000000000000000"==Z[e].weth)throw new Error("Chain "+e+" does not have WETH");return Z[e].weth},$=u.BigNumber.from(2).pow(255),J="0x0000000000000000000000000000000000000000",ee="0x0000000000000000000000000000000000000001",te="0x0000000000000000000000000000000000000002";function re(e){return e.isNative?J:e.wrapped.address}var oe=new m.Percent(50,100),ne=function(){function e(e,t){if(this.trade=e,this.options=t,this.tradeType=exports.RouterActionType.UniswapTrade,t.fee&&t.flatFee)throw new Error("Only one fee option permitted");this.payerIsUser=!(this.inputRequiresWrap||this.inputRequiresUnwrap||this.options.useRouterBalance)}var t,r;return e.prototype.encode=function(e,t){var r;this.inputRequiresWrap?e.addCommand(exports.CommandType.WRAP_ETH,[te,this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]):this.inputRequiresUnwrap&&(e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[this.trade.inputAmount.currency.address,te,this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.UNWRAP_WETH,[te,0])),this.options.recipient=null!=(r=this.options.recipient)?r:ee;for(var o,n,a=this.trade.tradeType===m.TradeType.EXACT_INPUT&&this.trade.routes.length>2||this.outputRequiresTransition||!!(o=this.options).fee||!!o.flatFee,i=T(this.trade.swaps);!(n=i()).done;){var s=n.value;switch(s.route.protocol){case f.Protocol.V2:ae(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case f.Protocol.V3:ie(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case f.Protocol.V4:se(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case f.Protocol.MIXED:ue(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;default:throw new Error("UNSUPPORTED_TRADE_PROTOCOL")}}var d=u.BigNumber.from(this.trade.minimumAmountOut(this.options.slippageTolerance).quotient.toString());if(a){var c=this.trade.swaps[0].route.pools,l=re(Y(this.trade.outputAmount.currency,c[c.length-1]));if(this.options.fee){var A=p.toHex(this.options.fee.fee.multiply(1e4).quotient);e.addCommand(exports.CommandType.PAY_PORTION,[l,this.options.fee.recipient,A]),this.trade.tradeType===m.TradeType.EXACT_OUTPUT&&(d=d.sub(d.mul(A).div(1e4)))}if(this.options.flatFee){var C=this.options.flatFee.amount;if(d.lt(C))throw new Error("Flat fee amount greater than minimumAmountOut");e.addCommand(exports.CommandType.TRANSFER,[l,this.options.flatFee.recipient,C]),this.trade.tradeType===m.TradeType.EXACT_OUTPUT&&(d=d.sub(C))}this.outputRequiresUnwrap?e.addCommand(exports.CommandType.UNWRAP_WETH,[this.options.recipient,d]):this.outputRequiresWrap?e.addCommand(exports.CommandType.WRAP_ETH,[this.options.recipient,$]):e.addCommand(exports.CommandType.SWEEP,[re(this.trade.outputAmount.currency),this.options.recipient,d])}(this.trade.tradeType===m.TradeType.EXACT_OUTPUT||this.trade.priceImpact.greaterThan(oe))&&(this.inputRequiresWrap?e.addCommand(exports.CommandType.UNWRAP_WETH,[this.options.recipient,0]):this.inputRequiresUnwrap?e.addCommand(exports.CommandType.WRAP_ETH,[this.options.recipient,$]):this.trade.inputAmount.currency.isNative&&e.addCommand(exports.CommandType.SWEEP,[J,this.options.recipient,0])),this.options.safeMode&&e.addCommand(exports.CommandType.SWEEP,[J,this.options.recipient,0])},t=e,(r=[{key:"isAllV4",get:function(){for(var e,t=!0,r=T(this.trade.swaps);!(e=r()).done;)t=t&&e.value.route.protocol==f.Protocol.V4;return t}},{key:"inputRequiresWrap",get:function(){return this.trade.swaps[0].route.pools[0]instanceof d.Pool?this.trade.inputAmount.currency.isNative&&!this.trade.swaps[0].route.pathInput.isNative:this.trade.inputAmount.currency.isNative}},{key:"inputRequiresUnwrap",get:function(){return this.trade.swaps[0].route.pools[0]instanceof d.Pool&&!this.trade.inputAmount.currency.isNative&&this.trade.swaps[0].route.pathInput.isNative}},{key:"outputRequiresWrap",get:function(){var e=this.trade.swaps[0].route;return e.pools[e.pools.length-1]instanceof d.Pool&&!this.trade.outputAmount.currency.isNative&&e.pathOutput.isNative}},{key:"outputRequiresUnwrap",get:function(){var e=this.trade.swaps[0].route;return e.pools[e.pools.length-1]instanceof d.Pool?this.trade.outputAmount.currency.isNative&&!this.trade.swaps[0].route.pathOutput.isNative:this.trade.outputAmount.currency.isNative}},{key:"outputRequiresTransition",get:function(){return this.outputRequiresWrap||this.outputRequiresUnwrap}}])&&function(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,C(o.key),o)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),t}();function ae(e,t,r,o,n,a){var i=t.route,s=new l.Trade(i,r==m.TradeType.EXACT_INPUT?t.inputAmount:t.outputAmount,r);r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.V2_SWAP_EXACT_IN,[a?te:o.recipient,s.maximumAmountIn(o.slippageTolerance).quotient.toString(),a?0:s.minimumAmountOut(o.slippageTolerance).quotient.toString(),i.path.map((function(e){return e.wrapped.address})),n]):r==m.TradeType.EXACT_OUTPUT&&e.addCommand(exports.CommandType.V2_SWAP_EXACT_OUT,[a?te:o.recipient,s.minimumAmountOut(o.slippageTolerance).quotient.toString(),s.maximumAmountIn(o.slippageTolerance).quotient.toString(),i.path.map((function(e){return e.wrapped.address})),n])}function ie(e,t,r,o,n,a){var i=t.route,s=p.Trade.createUncheckedTrade({route:i,inputAmount:t.inputAmount,outputAmount:t.outputAmount,tradeType:r}),u=p.encodeRouteToPath(i,s.tradeType===m.TradeType.EXACT_OUTPUT);r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.V3_SWAP_EXACT_IN,[a?te:o.recipient,s.maximumAmountIn(o.slippageTolerance).quotient.toString(),a?0:s.minimumAmountOut(o.slippageTolerance).quotient.toString(),u,n]):r==m.TradeType.EXACT_OUTPUT&&e.addCommand(exports.CommandType.V3_SWAP_EXACT_OUT,[a?te:o.recipient,s.minimumAmountOut(o.slippageTolerance).quotient.toString(),s.maximumAmountIn(o.slippageTolerance).quotient.toString(),u,n])}function se(e,t,r,o,n,a){var i,s=t.inputAmount,u=t.outputAmount,p=t.route.pools.map((function(e){return e})),c=new d.Route(p,s.currency,u.currency),l=d.Trade.createUncheckedTrade({route:c,inputAmount:s,outputAmount:u,tradeType:r}),f=a&&r==m.TradeType.EXACT_INPUT?void 0:o.slippageTolerance,A=new d.V4Planner;A.addTrade(l,f),A.addSettle(l.route.pathInput,n),A.addTake(l.route.pathOutput,a?te:null!=(i=o.recipient)?i:ee),e.addCommand(exports.CommandType.V4_SWAP,[A.finalize()])}function ue(e,t,r,o,n,a){var i,s=t.route,u=t.inputAmount,m=t.outputAmount,c=a?te:null!=(i=o.recipient)?i:ee;if(1===s.pools.length){if(s.pools[0]instanceof d.Pool)return se(e,t,r,o,n,a);if(s.pools[0]instanceof p.Pool)return ie(e,t,r,o,n,a);if(s.pools[0]instanceof l.Pair)return ae(e,t,r,o,n,a);throw new Error("Invalid route type")}for(var A=f.MixedRouteTrade.createUncheckedTrade({route:s,inputAmount:u,outputAmount:m,tradeType:r}),T=A.maximumAmountIn(o.slippageTolerance,u).quotient.toString(),C=a?0:A.minimumAmountOut(o.slippageTolerance,m).quotient.toString(),x=f.partitionMixedRouteByProtocol(s),y=function(e){return e===x.length-1},P=s.pathInput,h=0;h<x.length;h++){var v=x[h],_=v[0],R=f.getOutputOfPools(v,P),b=new f.MixedRoute(new f.MixedRouteSDK([].concat(v),P,R)),E=void 0,V=void 0;if(y(h))E=R,V=c;else{var I=x[h+1][0];E=Y(R,I),V=I instanceof l.Pair&&R.equals(E)?I.liquidityToken.address:te}if(_ instanceof d.Pool){var w=new d.V4Planner,g=new d.Route(v,b.input,b.output);w.addSettle(P,n&&0===h,0==h?T:$),w.addAction(d.Actions.SWAP_EXACT_IN,[{currencyIn:P.isNative?J:P.address,path:d.encodeRouteToPath(g),amountIn:0,amountOutMinimum:y(h)?C:0}]),w.addTake(R,V),e.addCommand(exports.CommandType.V4_SWAP,[w.finalize()])}else if(_ instanceof p.Pool)e.addCommand(exports.CommandType.V3_SWAP_EXACT_IN,[V,0==h?T:$,y(h)?C:0,f.encodeMixedRouteToPath(b),n&&0===h]);else{if(!(_ instanceof l.Pair))throw new Error("Unexpected Pool Type");e.addCommand(exports.CommandType.V2_SWAP_EXACT_IN,[V,0===h?T:$,y(h)?C:0,b.path.map((function(e){return e.wrapped.address})),n&&0===h])}y(h)||(R.isNative&&!E.isNative?e.addCommand(exports.CommandType.WRAP_ETH,[te,$]):!R.isNative&&E.isNative&&e.addCommand(exports.CommandType.UNWRAP_WETH,[te,0])),P=E}}function pe(e,t){var r=t.signature,o=u.ethers.utils.arrayify(t.signature).length;65!==o&&64!==o||(r=u.ethers.utils.joinSignature(u.ethers.utils.splitSignature(t.signature))),e.addCommand(exports.CommandType.PERMIT2_PERMIT,[t,r])}var de=function(){function e(){}return e.swapCallParameters=function(t,r){var o=new K,n=new ne(t,r),i=n.trade.inputAmount.currency;i.isNative&&r.inputTokenPermit&&a(!1),r.inputTokenPermit&&pe(o,r.inputTokenPermit);var s=u.BigNumber.from(i.isNative?n.trade.maximumAmountIn(r.slippageTolerance).quotient.toString():0);return n.encode(o,{allowRevert:!1}),e.encodePlan(o,s,{deadline:r.deadlineOrPreviousBlockhash?u.BigNumber.from(r.deadlineOrPreviousBlockhash):void 0})},e.migrateV3ToV4CallParameters=function(t,r){var o=t.outputPosition.pool,n=t.inputPosition.pool.token0,i=t.inputPosition.pool.token1,s=null!=r?r:m.CHAIN_TO_ADDRESSES_MAP[o.chainId].v4PositionManagerAddress;o.currency0.isNative?o.currency0.wrapped.equals(n)&&o.currency1.equals(i)||o.currency0.wrapped.equals(i)&&o.currency1.equals(n)||a(!1):(n!==o.token0&&a(!1),i!==o.token1&&a(!1)),t.v3RemoveLiquidityOptions.liquidityPercentage.equalTo(new m.Percent(100,100))||a(!1),1!=t.v3RemoveLiquidityOptions.burnToken&&a(!1),t.v3RemoveLiquidityOptions.collectOptions.recipient!==s&&a(!1),!function(e){return Object.keys(e).some((function(e){return"recipient"===e}))}(t.v4AddLiquidityOptions)&&a(!1),t.v4AddLiquidityOptions.migrate||a(!1);var c=new K;if(t.v4AddLiquidityOptions.createPool){var l=d.Pool.getPoolKey(o.currency0,o.currency1,o.fee,o.tickSpacing,o.hooks);c.addCommand(exports.CommandType.V4_INITIALIZE_POOL,[l,o.sqrtRatioX96.toString()]),delete t.v4AddLiquidityOptions.createPool}t.v3RemoveLiquidityOptions.permit&&(z(exports.UniversalRouterVersion.V2_0,t.inputPosition.pool.chainId)!=t.v3RemoveLiquidityOptions.permit.spender&&a(!1),function(e,t,r){var o=p.NonfungiblePositionManager.INTERFACE.encodeFunctionData("permit",[m.validateAndParseAddress(t.spender),r,t.deadline,t.v,t.r,t.s]);e.addCommand(exports.CommandType.V3_POSITION_MANAGER_PERMIT,[o])}(c,t.v3RemoveLiquidityOptions.permit,t.v3RemoveLiquidityOptions.tokenId),delete t.v3RemoveLiquidityOptions.permit);for(var f,A=p.NonfungiblePositionManager.removeCallParameters(t.inputPosition,t.v3RemoveLiquidityOptions),C=T(p.Multicall.decodeMulticall(A.calldata));!(f=C()).done;){var x=f.value,y=x.slice(0,10);y!=p.NonfungiblePositionManager.INTERFACE.getSighash("collect")&&y!=p.NonfungiblePositionManager.INTERFACE.getSighash("decreaseLiquidity")&&y!=p.NonfungiblePositionManager.INTERFACE.getSighash("burn")&&a(!1),c.addCommand(exports.CommandType.V3_POSITION_MANAGER_CALL,[x])}var P=d.V4PositionManager.addCallParameters(t.outputPosition,t.v4AddLiquidityOptions);return P.calldata.slice(0,10)!=d.V4PositionManager.INTERFACE.getSighash("modifyLiquidities")&&a(!1),c.addCommand(exports.CommandType.V4_POSITION_MANAGER_CALL,[P.calldata]),e.encodePlan(c,u.BigNumber.from(0),{deadline:u.BigNumber.from(t.v4AddLiquidityOptions.deadline)})},e.encodePlan=function(t,r,o){void 0===o&&(o={});var n=t.commands,a=t.inputs;return{calldata:e.INTERFACE.encodeFunctionData(o.deadline?"execute(bytes,bytes[],uint256)":"execute(bytes,bytes[])",o.deadline?[n,a,o.deadline]:[n,a]),value:r.toHexString()}},e}();de.INTERFACE=new s.Interface(i.abi);var me,ce=function(){function e(e,t,r){this.tradeType=exports.RouterActionType.UnwrapWETH,this.wethAddress=Q(t),this.amount=e,r&&(r.details.token.toLowerCase()!==this.wethAddress.toLowerCase()&&a(!1),r.details.amount>=e||a(!1),this.permit2Data=r)}return e.prototype.encode=function(e,t){!function(e,t){t.permit2TransferFrom&&t.permit2Permit&&t.permit2TransferFrom.token!==t.permit2Permit.details.token&&a(!1),t.permit2Permit&&pe(e,t.permit2Permit),t.permit2TransferFrom&&e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[t.permit2TransferFrom.token,t.permit2TransferFrom.recipient?t.permit2TransferFrom.recipient:te,t.permit2TransferFrom.amount])}(e,{permit2Permit:this.permit2Data,permit2TransferFrom:{token:this.wethAddress,amount:this.amount.toString()}}),e.addCommand(exports.CommandType.UNWRAP_WETH,[te,this.amount])},e}();(me=exports.PoolType||(exports.PoolType={})).V2Pool="v2-pool",me.V3Pool="v3-pool",me.V4Pool="v4-pool";var le=function(e){return e.toLowerCase()===J.toLowerCase()||e.toLowerCase()==="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee".toLowerCase()},fe=function(){function e(){}return e.fromClassicQuote=function(t){var r=t.route,o=t.tokenIn,n=t.tokenOut;if(!r)throw new Error("Expected route to be present");if(!r.length)throw new Error("Expected there to be at least one route");if(r.some((function(e){return!e.length})))throw new Error("Expected all routes to have at least one pool");var a=r[0],i=a[0].tokenIn,s=a[a.length-1].tokenOut;if(!i||!s)throw new Error("Expected both tokenIn and tokenOut to be present");if(i.chainId!==s.chainId)throw new Error("Expected tokenIn and tokenOut to be have same chainId");var u=e.toCurrency(le(o),i),c=e.toCurrency(le(n),s),A=r.map((function(t){var r=t[0].amountIn,o=t[t.length-1].amountOut;if(!r||!o)throw new Error("Expected both raw amountIn and raw amountOut to be present");var n=m.CurrencyAmount.fromRawAmount(u,r),a=m.CurrencyAmount.fromRawAmount(c,o),i=e.isVersionedRoute(exports.PoolType.V2Pool,t),s=e.isVersionedRoute(exports.PoolType.V3Pool,t),A=e.isVersionedRoute(exports.PoolType.V4Pool,t);return{routev4:A?new d.Route(t.map(e.toV4Pool),u,c):null,routev3:s?new p.Route(t.map(e.toV3Pool),u,c):null,routev2:i?new l.Route(t.map(e.toPair),u,c):null,mixedRoute:A||s||i?null:new f.MixedRouteSDK(t.map(e.toPoolOrPair),u,c),inputAmount:n,outputAmount:a}}));return new f.Trade({v2Routes:A.filter((function(e){return e.routev2})).map((function(e){return{routev2:e.routev2,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),v3Routes:A.filter((function(e){return e.routev3})).map((function(e){return{routev3:e.routev3,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),v4Routes:A.filter((function(e){return e.routev4})).map((function(e){return{routev4:e.routev4,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),mixedRoutes:A.filter((function(e){return e.mixedRoute})).map((function(e){return{mixedRoute:e.mixedRoute,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),tradeType:t.tradeType})},e.toCurrency=function(e,t){return e?m.Ether.onChain(t.chainId):this.toToken(t)},e.toToken=function(e){var t=e.symbol,r=e.buyFeeBps,o=e.sellFeeBps;return new m.Token(e.chainId,e.address,parseInt(e.decimals.toString()),t,void 0,!1,r?u.BigNumber.from(r):void 0,o?u.BigNumber.from(o):void 0)},e.toV3Pool=function(t){var r=t.fee,o=t.sqrtRatioX96,n=t.liquidity,a=t.tickCurrent,i=t.tokenOut;return new p.Pool(e.toToken(t.tokenIn),e.toToken(i),parseInt(r),o,n,parseInt(a))},e.toV4Pool=function(t){var r=e.toCurrency(le(t.tokenIn.address),t.tokenIn),o=e.toCurrency(le(t.tokenOut.address),t.tokenOut);return new d.Pool(r,o,parseInt(t.fee),parseInt(t.tickSpacing),t.hooks,t.sqrtRatioX96,t.liquidity,parseInt(t.tickCurrent))},e.isVersionedRoute=function(e,t){return t.every((function(t){return t.type===e}))},e}();fe.toPoolOrPair=function(e){switch(e.type){case exports.PoolType.V4Pool:return fe.toV4Pool(e);case exports.PoolType.V3Pool:return fe.toV3Pool(e);case exports.PoolType.V2Pool:return fe.toPair(e);default:throw new Error("Invalid pool type")}},fe.toPair=function(e){var t=e.reserve0,r=e.reserve1;return new l.Pair(m.CurrencyAmount.fromRawAmount(fe.toToken(t.token),t.quotient),m.CurrencyAmount.fromRawAmount(fe.toToken(r.token),r.quotient))};var Ae=function(){function e(){}return e.parseCalldata=function(t){var r=new Te(G),o=e.INTERFACE.parseTransaction({data:t}).args;return r.parse(o.commands,o.inputs)},e}();Ae.INTERFACE=new s.Interface(i.abi);var Te=function(){function e(e){this.commandDefinition=e}return e.prototype.parse=function(t,r){var o=this;return{commands:e.getCommands(t).map((function(e,t){var n,a=o.commandDefinition[e];if(a.parser===exports.Parser.V4Actions){var i=d.V4BaseActionsParser.parseCalldata(r[t]);return{commandName:exports.CommandType[e],commandType:e,params:(n=i.actions,n.map((function(e){return{name:e.actionName,value:e.params.map((function(e){return{name:e.name,value:e.value}}))}})))}}if(a.parser===exports.Parser.Abi){var s=a.params,p=u.ethers.utils.defaultAbiCoder.decode(s.map((function(e){return e.type})),r[t]).map((function(e,t){switch(s[t].subparser){case exports.Subparser.V3PathExactIn:return{name:s[t].name,value:Ce(e)};case exports.Subparser.V3PathExactOut:return{name:s[t].name,value:xe(e)};default:return{name:s[t].name,value:e}}}));return{commandName:exports.CommandType[e],commandType:e,params:p}}if(a.parser===exports.Parser.V3Actions)return{commandName:exports.CommandType[e],commandType:e,params:r.map((function(e){return{name:"command",value:e}}))};throw new Error("Unsupported parser: "+a)}))}},e.getCommands=function(e){for(var t=[],r=2;r<e.length;r+=2){var o=e.substring(r,r+2);t.push(parseInt(o,16))}return t},e}();function Ce(e){for(var t=e.replace("0x",""),r=u.ethers.utils.getAddress(t.substring(0,40)),o=40,n=[];o<t.length;){var a=t.substring(o,o+46),i=parseInt(a.substring(0,6),16),s=u.ethers.utils.getAddress(a.substring(6,46));n.push({tokenIn:r,tokenOut:s,fee:i}),r=s,o+=46}return n}function xe(e){for(var t=e.replace("0x",""),r=u.ethers.utils.getAddress(t.substring(t.length-40)),o=t.length-86,n=[];o>=0;){var a=t.substring(o,o+46),i=u.ethers.utils.getAddress(a.substring(0,40)),s=parseInt(a.substring(40,46),16);n.push({tokenIn:r,tokenOut:i,fee:s}),r=i,o-=46}return n}exports.COMMAND_DEFINITION=G,exports.CommandParser=Ae,exports.GenericCommandParser=Te,exports.ROUTER_AS_RECIPIENT=te,exports.RoutePlanner=K,exports.RouterTradeAdapter=fe,exports.SwapRouter=de,exports.UNIVERSAL_ROUTER_ADDRESS=z,exports.UNIVERSAL_ROUTER_CREATION_BLOCK=function(e,t){if(!(t in Z))throw new Error("Universal Router not deployed on chain "+t);return Z[t].routerConfigs[e].creationBlock},exports.UniswapTrade=ne,exports.UnwrapWETH=ce,exports.WETH_ADDRESS=Q,exports.isNativeCurrency=le;
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,r,o,n,a=e(require("tiny-invariant")),i=e(require("@uniswap/universal-router/artifacts/contracts/UniversalRouter.sol/UniversalRouter.json")),s=require("@ethersproject/abi"),u=require("ethers"),p=require("@uniswap/v3-sdk"),d=require("@uniswap/v4-sdk"),m=require("@uniswap/sdk-core"),c=require("ethers/lib/utils"),l=require("@uniswap/v2-sdk"),f=require("@uniswap/router-sdk");function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=Array(t);r<t;r++)o[r]=e[r];return o}function T(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return A(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?A(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}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 C(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,"string");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}require("jsbi"),require("bignumber.js"),(r=exports.CommandType||(exports.CommandType={}))[r.V3_SWAP_EXACT_IN=0]="V3_SWAP_EXACT_IN",r[r.V3_SWAP_EXACT_OUT=1]="V3_SWAP_EXACT_OUT",r[r.PERMIT2_TRANSFER_FROM=2]="PERMIT2_TRANSFER_FROM",r[r.PERMIT2_PERMIT_BATCH=3]="PERMIT2_PERMIT_BATCH",r[r.SWEEP=4]="SWEEP",r[r.TRANSFER=5]="TRANSFER",r[r.PAY_PORTION=6]="PAY_PORTION",r[r.V2_SWAP_EXACT_IN=8]="V2_SWAP_EXACT_IN",r[r.V2_SWAP_EXACT_OUT=9]="V2_SWAP_EXACT_OUT",r[r.PERMIT2_PERMIT=10]="PERMIT2_PERMIT",r[r.WRAP_ETH=11]="WRAP_ETH",r[r.UNWRAP_WETH=12]="UNWRAP_WETH",r[r.PERMIT2_TRANSFER_FROM_BATCH=13]="PERMIT2_TRANSFER_FROM_BATCH",r[r.BALANCE_CHECK_ERC20=14]="BALANCE_CHECK_ERC20",r[r.V4_SWAP=16]="V4_SWAP",r[r.V3_POSITION_MANAGER_PERMIT=17]="V3_POSITION_MANAGER_PERMIT",r[r.V3_POSITION_MANAGER_CALL=18]="V3_POSITION_MANAGER_CALL",r[r.V4_INITIALIZE_POOL=19]="V4_INITIALIZE_POOL",r[r.V4_POSITION_MANAGER_CALL=20]="V4_POSITION_MANAGER_CALL",r[r.EXECUTE_SUB_PLAN=33]="EXECUTE_SUB_PLAN",(o=exports.Subparser||(exports.Subparser={}))[o.V3PathExactIn=0]="V3PathExactIn",o[o.V3PathExactOut=1]="V3PathExactOut",(n=exports.Parser||(exports.Parser={}))[n.Abi=0]="Abi",n[n.V4Actions=1]="V4Actions",n[n.V3Actions=2]="V3Actions";var x,y,P,h,v,_,R,b,E,V,I,w,g,k,U,N,O,B,S,F,D,q,M,W,L,X,H,j,G=new Set([exports.CommandType.EXECUTE_SUB_PLAN]),K=((t={})[exports.CommandType.EXECUTE_SUB_PLAN]={parser:exports.Parser.Abi,params:[{name:"commands",type:"bytes"},{name:"inputs",type:"bytes[]"}]},t[exports.CommandType.PERMIT2_PERMIT]={parser:exports.Parser.Abi,params:[{name:"permit",type:"((address token,uint160 amount,uint48 expiration,uint48 nonce) details,address spender,uint256 sigDeadline)"},{name:"signature",type:"bytes"}]},t[exports.CommandType.PERMIT2_PERMIT_BATCH]={parser:exports.Parser.Abi,params:[{name:"permit",type:"((address token,uint160 amount,uint48 expiration,uint48 nonce)[] details,address spender,uint256 sigDeadline)"},{name:"signature",type:"bytes"}]},t[exports.CommandType.PERMIT2_TRANSFER_FROM]={parser:exports.Parser.Abi,params:[{name:"token",type:"address"},{name:"recipient",type:"address"},{name:"amount",type:"uint160"}]},t[exports.CommandType.PERMIT2_TRANSFER_FROM_BATCH]={parser:exports.Parser.Abi,params:[{name:"transferFrom",type:"(address from,address to,uint160 amount,address token)[]"}]},t[exports.CommandType.V3_SWAP_EXACT_IN]={parser:exports.Parser.Abi,params:[{name:"recipient",type:"address"},{name:"amountIn",type:"uint256"},{name:"amountOutMin",type:"uint256"},{name:"path",subparser:exports.Subparser.V3PathExactIn,type:"bytes"},{name:"payerIsUser",type:"bool"}]},t[exports.CommandType.V3_SWAP_EXACT_OUT]={parser:exports.Parser.Abi,params:[{name:"recipient",type:"address"},{name:"amountOut",type:"uint256"},{name:"amountInMax",type:"uint256"},{name:"path",subparser:exports.Subparser.V3PathExactOut,type:"bytes"},{name:"payerIsUser",type:"bool"}]},t[exports.CommandType.V2_SWAP_EXACT_IN]={parser:exports.Parser.Abi,params:[{name:"recipient",type:"address"},{name:"amountIn",type:"uint256"},{name:"amountOutMin",type:"uint256"},{name:"path",type:"address[]"},{name:"payerIsUser",type:"bool"}]},t[exports.CommandType.V2_SWAP_EXACT_OUT]={parser:exports.Parser.Abi,params:[{name:"recipient",type:"address"},{name:"amountOut",type:"uint256"},{name:"amountInMax",type:"uint256"},{name:"path",type:"address[]"},{name:"payerIsUser",type:"bool"}]},t[exports.CommandType.V4_SWAP]={parser:exports.Parser.V4Actions},t[exports.CommandType.WRAP_ETH]={parser:exports.Parser.Abi,params:[{name:"recipient",type:"address"},{name:"amount",type:"uint256"}]},t[exports.CommandType.UNWRAP_WETH]={parser:exports.Parser.Abi,params:[{name:"recipient",type:"address"},{name:"amountMin",type:"uint256"}]},t[exports.CommandType.SWEEP]={parser:exports.Parser.Abi,params:[{name:"token",type:"address"},{name:"recipient",type:"address"},{name:"amountMin",type:"uint256"}]},t[exports.CommandType.TRANSFER]={parser:exports.Parser.Abi,params:[{name:"token",type:"address"},{name:"recipient",type:"address"},{name:"value",type:"uint256"}]},t[exports.CommandType.PAY_PORTION]={parser:exports.Parser.Abi,params:[{name:"token",type:"address"},{name:"recipient",type:"address"},{name:"bips",type:"uint256"}]},t[exports.CommandType.BALANCE_CHECK_ERC20]={parser:exports.Parser.Abi,params:[{name:"owner",type:"address"},{name:"token",type:"address"},{name:"minBalance",type:"uint256"}]},t[exports.CommandType.V4_INITIALIZE_POOL]={parser:exports.Parser.Abi,params:[{name:"poolKey",type:"(address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks)"},{name:"sqrtPriceX96",type:"uint160"}]},t[exports.CommandType.V3_POSITION_MANAGER_PERMIT]={parser:exports.Parser.V3Actions},t[exports.CommandType.V3_POSITION_MANAGER_CALL]={parser:exports.Parser.V3Actions},t[exports.CommandType.V4_POSITION_MANAGER_CALL]={parser:exports.Parser.V4Actions},t),Y=function(){function e(){this.commands="0x",this.inputs=[]}var t=e.prototype;return t.addSubPlan=function(e){return this.addCommand(exports.CommandType.EXECUTE_SUB_PLAN,[e.commands,e.inputs],!0),this},t.addCommand=function(e,t,r){void 0===r&&(r=!1);var o=function(e,t){var r=K[e];switch(r.parser){case exports.Parser.Abi:return{type:e,encodedInput:c.defaultAbiCoder.encode(r.params.map((function(e){return e.type})),t)};case exports.Parser.V4Actions:case exports.Parser.V3Actions:return{type:e,encodedInput:t[0]}}}(e,t);if(this.inputs.push(o.encodedInput),r){if(!G.has(o.type))throw new Error("command type: "+o.type+" cannot be allowed to revert");o.type=128|o.type}return this.commands=this.commands.concat(o.type.toString(16).padStart(2,"0")),this},e}();function Z(e,t){if(t.involvesToken(e))return e;if(t.involvesToken(e.wrapped))return e.wrapped;if(t instanceof d.Pool&&t.token0.wrapped.equals(e))return t.token0;if(t instanceof d.Pool&&t.token1.wrapped.equals(e))return t.token1;throw new Error("Expected currency "+e.symbol+" to be either "+t.token0.symbol+" or "+t.token1.symbol)}(x=exports.RouterActionType||(exports.RouterActionType={})).UniswapTrade="UniswapTrade",x.UnwrapWETH="UnwrapWETH",(j=exports.UniversalRouterVersion||(exports.UniversalRouterVersion={})).V1_2="1.2",j.V2_0="2.0";var z=((H={})[1]={weth:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",routerConfigs:(y={},y[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17143817},y[exports.UniversalRouterVersion.V2_0]={address:"0x66a9893cc07d91d95644aedd05d03f95e1dba8af",creationBlock:1737658355},y)},H[5]={weth:"0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6",routerConfigs:(P={},P[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8940568},P[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8940568},P)},H[11155111]={weth:"0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14",routerConfigs:(h={},h[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:3543575},h[exports.UniversalRouterVersion.V2_0]={address:"0x3a9d48ab9751398bbfa63ad67599bb04e4bdf98b",creationBlock:7259601},h)},H[137]={weth:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",routerConfigs:(v={},v[exports.UniversalRouterVersion.V1_2]={address:"0xec7BE89e9d109e7e3Fec59c222CF297125FEFda2",creationBlock:52210153},v[exports.UniversalRouterVersion.V2_0]={address:"0x1095692a6237d83c6a72f3f5efedb9a670c49223",creationBlock:1737492197},v)},H[80001]={weth:"0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889",routerConfigs:(_={},_[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:35176052},_[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:35176052},_)},H[10]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(R={},R[exports.UniversalRouterVersion.V1_2]={address:"0xCb1355ff08Ab38bBCE60111F1bb2B784bE25D7e8",creationBlock:114702266},R[exports.UniversalRouterVersion.V2_0]={address:"0x851116d9223fabed8e56c0e6b8ad0c31d98b3507",creationBlock:1737494278},R)},H[420]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(b={},b[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8887728},b[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8887728},b)},H[42161]={weth:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",routerConfigs:(E={},E[exports.UniversalRouterVersion.V1_2]={address:"0x5E325eDA8064b456f4781070C0738d849c824258",creationBlock:169472836},E[exports.UniversalRouterVersion.V2_0]={address:"0xa51afafe0263b40edaef0df8781ea9aa03e381a3",creationBlock:1737487458},E)},H[421613]={weth:"0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3",routerConfigs:(V={},V[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:18815277},V[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:18815277},V)},H[42220]={weth:"0x0000000000000000000000000000000000000000",routerConfigs:(I={},I[exports.UniversalRouterVersion.V1_2]={address:"0x643770e279d5d0733f21d6dc03a8efbabf3255b4",creationBlock:21407637},I[exports.UniversalRouterVersion.V2_0]={address:"0x643770e279d5d0733f21d6dc03a8efbabf3255b4",creationBlock:21407637},I)},H[44787]={weth:"0x0000000000000000000000000000000000000000",routerConfigs:(w={},w[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17566658},w[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17566658},w)},H[56]={weth:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",routerConfigs:(g={},g[exports.UniversalRouterVersion.V1_2]={address:"0x4Dae2f939ACf50408e13d58534Ff8c2776d45265",creationBlock:35160263},g[exports.UniversalRouterVersion.V2_0]={address:"0x1906c1d672b88cd1b9ac7593301ca990f94eae07",creationBlock:1737493275},g)},H[43114]={weth:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",routerConfigs:(k={},k[exports.UniversalRouterVersion.V1_2]={address:"0x4Dae2f939ACf50408e13d58534Ff8c2776d45265",creationBlock:40237257},k[exports.UniversalRouterVersion.V2_0]={address:"0x94b75331ae8d42c1b61065089b7d48fe14aa73b7",creationBlock:1737558236},k)},H[84531]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(U={},U[exports.UniversalRouterVersion.V1_2]={address:"0xd0872d928672ae2ff74bdb2f5130ac12229cafaf",creationBlock:6915289},U[exports.UniversalRouterVersion.V2_0]={address:"0xd0872d928672ae2ff74bdb2f5130ac12229cafaf",creationBlock:6915289},U)},H[8453]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(N={},N[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:9107268},N[exports.UniversalRouterVersion.V2_0]={address:"0x6ff5693b99212da76ad316178a184ab56d299b43",creationBlock:1737491485},N)},H[81457]={weth:"0x4300000000000000000000000000000000000004",routerConfigs:(O={},O[exports.UniversalRouterVersion.V1_2]={address:"0x643770E279d5D0733F21d6DC03A8efbABf3255B4",creationBlock:1116444},O[exports.UniversalRouterVersion.V2_0]={address:"0xeabbcb3e8e415306207ef514f660a3f820025be3",creationBlock:1737564586},O)},H[7777777]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(B={},B[exports.UniversalRouterVersion.V1_2]={address:"0x2986d9721A49838ab4297b695858aF7F17f38014",creationBlock:11832155},B[exports.UniversalRouterVersion.V2_0]={address:"0x3315ef7ca28db74abadc6c44570efdf06b04b020",creationBlock:1737562927},B)},H[324]={weth:"0x5aea5775959fbc2557cc8789bc1bf90a239d9a91",routerConfigs:(S={},S[exports.UniversalRouterVersion.V1_2]={address:"0x28731BCC616B5f51dD52CF2e4dF0E78dD1136C06",creationBlock:12640979},S[exports.UniversalRouterVersion.V2_0]={address:"0x28731BCC616B5f51dD52CF2e4dF0E78dD1136C06",creationBlock:12640979},S)},H[480]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(F={},F[exports.UniversalRouterVersion.V1_2]={address:"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",creationBlock:4063979},F[exports.UniversalRouterVersion.V2_0]={address:"0x8ac7bee993bb44dab564ea4bc9ea67bf9eb5e743",creationBlock:1737559557},F)},H[1301]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(D={},D[exports.UniversalRouterVersion.V1_2]={address:"0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6",creationBlock:1241811},D[exports.UniversalRouterVersion.V2_0]={address:"0xf70536b3bcc1bd1a972dc186a2cf84cc6da6be5d",creationBlock:7100543},D)},H[130]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(q={},q[exports.UniversalRouterVersion.V1_2]={address:"0x4D73A4411CA1c660035e4AECC8270E5DdDEC8C17",creationBlock:23678},q[exports.UniversalRouterVersion.V2_0]={address:"0xef740bf23acae26f6492b10de645d6b98dc8eaf3",creationBlock:1737568156},q)},H[10143]={weth:"0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",routerConfigs:(M={},M[exports.UniversalRouterVersion.V1_2]={address:"0x3ae6d8a282d67893e17aa70ebffb33ee5aa65893",creationBlock:23678},M[exports.UniversalRouterVersion.V2_0]={address:"0x3ae6d8a282d67893e17aa70ebffb33ee5aa65893",creationBlock:23678},M)},H[84532]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(W={},W[exports.UniversalRouterVersion.V1_2]={address:"0x492e6456d9528771018deb9e87ef7750ef184104",creationBlock:20216585},W[exports.UniversalRouterVersion.V2_0]={address:"0x492e6456d9528771018deb9e87ef7750ef184104",creationBlock:20216585},W)},H[1868]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(L={},L[exports.UniversalRouterVersion.V1_2]={address:"0x0e2850543f69f678257266e0907ff9a58b3f13de",creationBlock:3254782},L[exports.UniversalRouterVersion.V2_0]={address:"0x0e2850543f69f678257266e0907ff9a58b3f13de",creationBlock:3254782},L)},H[143]={weth:"0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A",routerConfigs:(X={},X[exports.UniversalRouterVersion.V1_2]={address:"0x0d97dc33264bfc1c226207428a79b26757fb9dc3",creationBlock:29255937},X[exports.UniversalRouterVersion.V2_0]={address:"0x0d97dc33264bfc1c226207428a79b26757fb9dc3",creationBlock:29255937},X)},H),Q=function(e,t){if(!(t in z))throw new Error("Universal Router not deployed on chain "+t);return z[t].routerConfigs[e].address},$=function(e){if(!(e in z))throw new Error("Universal Router not deployed on chain "+e);if("0x0000000000000000000000000000000000000000"==z[e].weth)throw new Error("Chain "+e+" does not have WETH");return z[e].weth},J=u.BigNumber.from(2).pow(255),ee="0x0000000000000000000000000000000000000000",te="0x0000000000000000000000000000000000000001",re="0x0000000000000000000000000000000000000002";function oe(e){return e.isNative?ee:e.wrapped.address}var ne=new m.Percent(50,100),ae=function(){function e(e,t){if(this.trade=e,this.options=t,this.tradeType=exports.RouterActionType.UniswapTrade,t.fee&&t.flatFee)throw new Error("Only one fee option permitted");this.payerIsUser=!(this.inputRequiresWrap||this.inputRequiresUnwrap||this.options.useRouterBalance)}var t,r;return e.prototype.encode=function(e,t){var r;this.inputRequiresWrap?e.addCommand(exports.CommandType.WRAP_ETH,[re,this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]):this.inputRequiresUnwrap&&(e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[this.trade.inputAmount.currency.address,re,this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.UNWRAP_WETH,[re,0])),this.options.recipient=null!=(r=this.options.recipient)?r:te;for(var o,n,a=this.trade.tradeType===m.TradeType.EXACT_INPUT&&this.trade.routes.length>2||this.outputRequiresTransition||!!(o=this.options).fee||!!o.flatFee,i=T(this.trade.swaps);!(n=i()).done;){var s=n.value;switch(s.route.protocol){case f.Protocol.V2:ie(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case f.Protocol.V3:se(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case f.Protocol.V4:ue(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case f.Protocol.MIXED:pe(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;default:throw new Error("UNSUPPORTED_TRADE_PROTOCOL")}}var d=u.BigNumber.from(this.trade.minimumAmountOut(this.options.slippageTolerance).quotient.toString());if(a){var c=this.trade.swaps[0].route.pools,l=oe(Z(this.trade.outputAmount.currency,c[c.length-1]));if(this.options.fee){var A=p.toHex(this.options.fee.fee.multiply(1e4).quotient);e.addCommand(exports.CommandType.PAY_PORTION,[l,this.options.fee.recipient,A]),this.trade.tradeType===m.TradeType.EXACT_OUTPUT&&(d=d.sub(d.mul(A).div(1e4)))}if(this.options.flatFee){var C=this.options.flatFee.amount;if(d.lt(C))throw new Error("Flat fee amount greater than minimumAmountOut");e.addCommand(exports.CommandType.TRANSFER,[l,this.options.flatFee.recipient,C]),this.trade.tradeType===m.TradeType.EXACT_OUTPUT&&(d=d.sub(C))}this.outputRequiresUnwrap?e.addCommand(exports.CommandType.UNWRAP_WETH,[this.options.recipient,d]):this.outputRequiresWrap?e.addCommand(exports.CommandType.WRAP_ETH,[this.options.recipient,J]):e.addCommand(exports.CommandType.SWEEP,[oe(this.trade.outputAmount.currency),this.options.recipient,d])}(this.trade.tradeType===m.TradeType.EXACT_OUTPUT||this.trade.priceImpact.greaterThan(ne))&&(this.inputRequiresWrap?e.addCommand(exports.CommandType.UNWRAP_WETH,[this.options.recipient,0]):this.inputRequiresUnwrap?e.addCommand(exports.CommandType.WRAP_ETH,[this.options.recipient,J]):this.trade.inputAmount.currency.isNative&&e.addCommand(exports.CommandType.SWEEP,[ee,this.options.recipient,0])),this.options.safeMode&&e.addCommand(exports.CommandType.SWEEP,[ee,this.options.recipient,0])},t=e,(r=[{key:"isAllV4",get:function(){for(var e,t=!0,r=T(this.trade.swaps);!(e=r()).done;)t=t&&e.value.route.protocol==f.Protocol.V4;return t}},{key:"inputRequiresWrap",get:function(){return this.trade.swaps[0].route.pools[0]instanceof d.Pool?this.trade.inputAmount.currency.isNative&&!this.trade.swaps[0].route.pathInput.isNative:this.trade.inputAmount.currency.isNative}},{key:"inputRequiresUnwrap",get:function(){return this.trade.swaps[0].route.pools[0]instanceof d.Pool&&!this.trade.inputAmount.currency.isNative&&this.trade.swaps[0].route.pathInput.isNative}},{key:"outputRequiresWrap",get:function(){var e=this.trade.swaps[0].route;return e.pools[e.pools.length-1]instanceof d.Pool&&!this.trade.outputAmount.currency.isNative&&e.pathOutput.isNative}},{key:"outputRequiresUnwrap",get:function(){var e=this.trade.swaps[0].route;return e.pools[e.pools.length-1]instanceof d.Pool?this.trade.outputAmount.currency.isNative&&!this.trade.swaps[0].route.pathOutput.isNative:this.trade.outputAmount.currency.isNative}},{key:"outputRequiresTransition",get:function(){return this.outputRequiresWrap||this.outputRequiresUnwrap}}])&&function(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,C(o.key),o)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),t}();function ie(e,t,r,o,n,a){var i=t.route,s=new l.Trade(i,r==m.TradeType.EXACT_INPUT?t.inputAmount:t.outputAmount,r);r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.V2_SWAP_EXACT_IN,[a?re:o.recipient,s.maximumAmountIn(o.slippageTolerance).quotient.toString(),a?0:s.minimumAmountOut(o.slippageTolerance).quotient.toString(),i.path.map((function(e){return e.wrapped.address})),n]):r==m.TradeType.EXACT_OUTPUT&&e.addCommand(exports.CommandType.V2_SWAP_EXACT_OUT,[a?re:o.recipient,s.minimumAmountOut(o.slippageTolerance).quotient.toString(),s.maximumAmountIn(o.slippageTolerance).quotient.toString(),i.path.map((function(e){return e.wrapped.address})),n])}function se(e,t,r,o,n,a){var i=t.route,s=p.Trade.createUncheckedTrade({route:i,inputAmount:t.inputAmount,outputAmount:t.outputAmount,tradeType:r}),u=p.encodeRouteToPath(i,s.tradeType===m.TradeType.EXACT_OUTPUT);r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.V3_SWAP_EXACT_IN,[a?re:o.recipient,s.maximumAmountIn(o.slippageTolerance).quotient.toString(),a?0:s.minimumAmountOut(o.slippageTolerance).quotient.toString(),u,n]):r==m.TradeType.EXACT_OUTPUT&&e.addCommand(exports.CommandType.V3_SWAP_EXACT_OUT,[a?re:o.recipient,s.minimumAmountOut(o.slippageTolerance).quotient.toString(),s.maximumAmountIn(o.slippageTolerance).quotient.toString(),u,n])}function ue(e,t,r,o,n,a){var i,s=t.inputAmount,u=t.outputAmount,p=t.route.pools.map((function(e){return e})),c=new d.Route(p,s.currency,u.currency),l=d.Trade.createUncheckedTrade({route:c,inputAmount:s,outputAmount:u,tradeType:r}),f=a&&r==m.TradeType.EXACT_INPUT?void 0:o.slippageTolerance,A=new d.V4Planner;A.addTrade(l,f),A.addSettle(l.route.pathInput,n),A.addTake(l.route.pathOutput,a?re:null!=(i=o.recipient)?i:te),e.addCommand(exports.CommandType.V4_SWAP,[A.finalize()])}function pe(e,t,r,o,n,a){var i,s=t.route,u=t.inputAmount,m=t.outputAmount,c=a?re:null!=(i=o.recipient)?i:te;if(1===s.pools.length){if(s.pools[0]instanceof d.Pool)return ue(e,t,r,o,n,a);if(s.pools[0]instanceof p.Pool)return se(e,t,r,o,n,a);if(s.pools[0]instanceof l.Pair)return ie(e,t,r,o,n,a);throw new Error("Invalid route type")}for(var A=f.MixedRouteTrade.createUncheckedTrade({route:s,inputAmount:u,outputAmount:m,tradeType:r}),T=A.maximumAmountIn(o.slippageTolerance,u).quotient.toString(),C=a?0:A.minimumAmountOut(o.slippageTolerance,m).quotient.toString(),x=f.partitionMixedRouteByProtocol(s),y=function(e){return e===x.length-1},P=s.pathInput,h=0;h<x.length;h++){var v=x[h],_=v[0],R=f.getOutputOfPools(v,P),b=new f.MixedRoute(new f.MixedRouteSDK([].concat(v),P,R)),E=void 0,V=void 0;if(y(h))E=R,V=c;else{var I=x[h+1][0];E=Z(R,I),V=I instanceof l.Pair&&R.equals(E)?I.liquidityToken.address:re}if(_ instanceof d.Pool){var w=new d.V4Planner,g=new d.Route(v,b.input,b.output);w.addSettle(P,n&&0===h,0==h?T:J),w.addAction(d.Actions.SWAP_EXACT_IN,[{currencyIn:P.isNative?ee:P.address,path:d.encodeRouteToPath(g),amountIn:0,amountOutMinimum:y(h)?C:0}]),w.addTake(R,V),e.addCommand(exports.CommandType.V4_SWAP,[w.finalize()])}else if(_ instanceof p.Pool)e.addCommand(exports.CommandType.V3_SWAP_EXACT_IN,[V,0==h?T:J,y(h)?C:0,f.encodeMixedRouteToPath(b),n&&0===h]);else{if(!(_ instanceof l.Pair))throw new Error("Unexpected Pool Type");e.addCommand(exports.CommandType.V2_SWAP_EXACT_IN,[V,0===h?T:J,y(h)?C:0,b.path.map((function(e){return e.wrapped.address})),n&&0===h])}y(h)||(R.isNative&&!E.isNative?e.addCommand(exports.CommandType.WRAP_ETH,[re,J]):!R.isNative&&E.isNative&&e.addCommand(exports.CommandType.UNWRAP_WETH,[re,0])),P=E}}function de(e,t){var r=t.signature,o=u.ethers.utils.arrayify(t.signature).length;65!==o&&64!==o||(r=u.ethers.utils.joinSignature(u.ethers.utils.splitSignature(t.signature))),e.addCommand(exports.CommandType.PERMIT2_PERMIT,[t,r])}var me=function(){function e(){}return e.swapCallParameters=function(t,r){var o=new Y,n=new ae(t,r),i=n.trade.inputAmount.currency;i.isNative&&r.inputTokenPermit&&a(!1),r.inputTokenPermit&&de(o,r.inputTokenPermit);var s=u.BigNumber.from(i.isNative?n.trade.maximumAmountIn(r.slippageTolerance).quotient.toString():0);return n.encode(o,{allowRevert:!1}),e.encodePlan(o,s,{deadline:r.deadlineOrPreviousBlockhash?u.BigNumber.from(r.deadlineOrPreviousBlockhash):void 0})},e.migrateV3ToV4CallParameters=function(t,r){var o=t.outputPosition.pool,n=t.inputPosition.pool.token0,i=t.inputPosition.pool.token1,s=null!=r?r:m.CHAIN_TO_ADDRESSES_MAP[o.chainId].v4PositionManagerAddress;o.currency0.isNative?o.currency0.wrapped.equals(n)&&o.currency1.equals(i)||o.currency0.wrapped.equals(i)&&o.currency1.equals(n)||a(!1):(n!==o.token0&&a(!1),i!==o.token1&&a(!1)),t.v3RemoveLiquidityOptions.liquidityPercentage.equalTo(new m.Percent(100,100))||a(!1),1!=t.v3RemoveLiquidityOptions.burnToken&&a(!1),t.v3RemoveLiquidityOptions.collectOptions.recipient!==s&&a(!1),!function(e){return Object.keys(e).some((function(e){return"recipient"===e}))}(t.v4AddLiquidityOptions)&&a(!1),t.v4AddLiquidityOptions.migrate||a(!1);var c=new Y;if(t.v4AddLiquidityOptions.createPool){var l=d.Pool.getPoolKey(o.currency0,o.currency1,o.fee,o.tickSpacing,o.hooks);c.addCommand(exports.CommandType.V4_INITIALIZE_POOL,[l,o.sqrtRatioX96.toString()]),delete t.v4AddLiquidityOptions.createPool}t.v3RemoveLiquidityOptions.permit&&(Q(exports.UniversalRouterVersion.V2_0,t.inputPosition.pool.chainId)!=t.v3RemoveLiquidityOptions.permit.spender&&a(!1),function(e,t,r){var o=p.NonfungiblePositionManager.INTERFACE.encodeFunctionData("permit",[m.validateAndParseAddress(t.spender),r,t.deadline,t.v,t.r,t.s]);e.addCommand(exports.CommandType.V3_POSITION_MANAGER_PERMIT,[o])}(c,t.v3RemoveLiquidityOptions.permit,t.v3RemoveLiquidityOptions.tokenId),delete t.v3RemoveLiquidityOptions.permit);for(var f,A=p.NonfungiblePositionManager.removeCallParameters(t.inputPosition,t.v3RemoveLiquidityOptions),C=T(p.Multicall.decodeMulticall(A.calldata));!(f=C()).done;){var x=f.value,y=x.slice(0,10);y!=p.NonfungiblePositionManager.INTERFACE.getSighash("collect")&&y!=p.NonfungiblePositionManager.INTERFACE.getSighash("decreaseLiquidity")&&y!=p.NonfungiblePositionManager.INTERFACE.getSighash("burn")&&a(!1),c.addCommand(exports.CommandType.V3_POSITION_MANAGER_CALL,[x])}var P=d.V4PositionManager.addCallParameters(t.outputPosition,t.v4AddLiquidityOptions);return P.calldata.slice(0,10)!=d.V4PositionManager.INTERFACE.getSighash("modifyLiquidities")&&a(!1),c.addCommand(exports.CommandType.V4_POSITION_MANAGER_CALL,[P.calldata]),e.encodePlan(c,u.BigNumber.from(0),{deadline:u.BigNumber.from(t.v4AddLiquidityOptions.deadline)})},e.encodePlan=function(t,r,o){void 0===o&&(o={});var n=t.commands,a=t.inputs;return{calldata:e.INTERFACE.encodeFunctionData(o.deadline?"execute(bytes,bytes[],uint256)":"execute(bytes,bytes[])",o.deadline?[n,a,o.deadline]:[n,a]),value:r.toHexString()}},e}();me.INTERFACE=new s.Interface(i.abi);var ce,le=function(){function e(e,t,r){this.tradeType=exports.RouterActionType.UnwrapWETH,this.wethAddress=$(t),this.amount=e,r&&(r.details.token.toLowerCase()!==this.wethAddress.toLowerCase()&&a(!1),r.details.amount>=e||a(!1),this.permit2Data=r)}return e.prototype.encode=function(e,t){!function(e,t){t.permit2TransferFrom&&t.permit2Permit&&t.permit2TransferFrom.token!==t.permit2Permit.details.token&&a(!1),t.permit2Permit&&de(e,t.permit2Permit),t.permit2TransferFrom&&e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[t.permit2TransferFrom.token,t.permit2TransferFrom.recipient?t.permit2TransferFrom.recipient:re,t.permit2TransferFrom.amount])}(e,{permit2Permit:this.permit2Data,permit2TransferFrom:{token:this.wethAddress,amount:this.amount.toString()}}),e.addCommand(exports.CommandType.UNWRAP_WETH,[re,this.amount])},e}();(ce=exports.PoolType||(exports.PoolType={})).V2Pool="v2-pool",ce.V3Pool="v3-pool",ce.V4Pool="v4-pool";var fe=function(e){return e.toLowerCase()===ee.toLowerCase()||e.toLowerCase()==="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee".toLowerCase()},Ae=function(){function e(){}return e.fromClassicQuote=function(t){var r=t.route,o=t.tokenIn,n=t.tokenOut;if(!r)throw new Error("Expected route to be present");if(!r.length)throw new Error("Expected there to be at least one route");if(r.some((function(e){return!e.length})))throw new Error("Expected all routes to have at least one pool");var a=r[0],i=a[0].tokenIn,s=a[a.length-1].tokenOut;if(!i||!s)throw new Error("Expected both tokenIn and tokenOut to be present");if(i.chainId!==s.chainId)throw new Error("Expected tokenIn and tokenOut to be have same chainId");var u=e.toCurrency(fe(o),i),c=e.toCurrency(fe(n),s),A=r.map((function(t){var r=t[0].amountIn,o=t[t.length-1].amountOut;if(!r||!o)throw new Error("Expected both raw amountIn and raw amountOut to be present");var n=m.CurrencyAmount.fromRawAmount(u,r),a=m.CurrencyAmount.fromRawAmount(c,o),i=e.isVersionedRoute(exports.PoolType.V2Pool,t),s=e.isVersionedRoute(exports.PoolType.V3Pool,t),A=e.isVersionedRoute(exports.PoolType.V4Pool,t);return{routev4:A?new d.Route(t.map(e.toV4Pool),u,c):null,routev3:s?new p.Route(t.map(e.toV3Pool),u,c):null,routev2:i?new l.Route(t.map(e.toPair),u,c):null,mixedRoute:A||s||i?null:new f.MixedRouteSDK(t.map(e.toPoolOrPair),u,c),inputAmount:n,outputAmount:a}}));return new f.Trade({v2Routes:A.filter((function(e){return e.routev2})).map((function(e){return{routev2:e.routev2,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),v3Routes:A.filter((function(e){return e.routev3})).map((function(e){return{routev3:e.routev3,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),v4Routes:A.filter((function(e){return e.routev4})).map((function(e){return{routev4:e.routev4,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),mixedRoutes:A.filter((function(e){return e.mixedRoute})).map((function(e){return{mixedRoute:e.mixedRoute,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),tradeType:t.tradeType})},e.toCurrency=function(e,t){return e?m.Ether.onChain(t.chainId):this.toToken(t)},e.toToken=function(e){var t=e.symbol,r=e.buyFeeBps,o=e.sellFeeBps;return new m.Token(e.chainId,e.address,parseInt(e.decimals.toString()),t,void 0,!1,r?u.BigNumber.from(r):void 0,o?u.BigNumber.from(o):void 0)},e.toV3Pool=function(t){var r=t.fee,o=t.sqrtRatioX96,n=t.liquidity,a=t.tickCurrent,i=t.tokenOut;return new p.Pool(e.toToken(t.tokenIn),e.toToken(i),parseInt(r),o,n,parseInt(a))},e.toV4Pool=function(t){var r=e.toCurrency(fe(t.tokenIn.address),t.tokenIn),o=e.toCurrency(fe(t.tokenOut.address),t.tokenOut);return new d.Pool(r,o,parseInt(t.fee),parseInt(t.tickSpacing),t.hooks,t.sqrtRatioX96,t.liquidity,parseInt(t.tickCurrent))},e.isVersionedRoute=function(e,t){return t.every((function(t){return t.type===e}))},e}();Ae.toPoolOrPair=function(e){switch(e.type){case exports.PoolType.V4Pool:return Ae.toV4Pool(e);case exports.PoolType.V3Pool:return Ae.toV3Pool(e);case exports.PoolType.V2Pool:return Ae.toPair(e);default:throw new Error("Invalid pool type")}},Ae.toPair=function(e){var t=e.reserve0,r=e.reserve1;return new l.Pair(m.CurrencyAmount.fromRawAmount(Ae.toToken(t.token),t.quotient),m.CurrencyAmount.fromRawAmount(Ae.toToken(r.token),r.quotient))};var Te=function(){function e(){}return e.parseCalldata=function(t){var r=new Ce(K),o=e.INTERFACE.parseTransaction({data:t}).args;return r.parse(o.commands,o.inputs)},e}();Te.INTERFACE=new s.Interface(i.abi);var Ce=function(){function e(e){this.commandDefinition=e}return e.prototype.parse=function(t,r){var o=this;return{commands:e.getCommands(t).map((function(e,t){var n,a=o.commandDefinition[e];if(a.parser===exports.Parser.V4Actions){var i=d.V4BaseActionsParser.parseCalldata(r[t]);return{commandName:exports.CommandType[e],commandType:e,params:(n=i.actions,n.map((function(e){return{name:e.actionName,value:e.params.map((function(e){return{name:e.name,value:e.value}}))}})))}}if(a.parser===exports.Parser.Abi){var s=a.params,p=u.ethers.utils.defaultAbiCoder.decode(s.map((function(e){return e.type})),r[t]).map((function(e,t){switch(s[t].subparser){case exports.Subparser.V3PathExactIn:return{name:s[t].name,value:xe(e)};case exports.Subparser.V3PathExactOut:return{name:s[t].name,value:ye(e)};default:return{name:s[t].name,value:e}}}));return{commandName:exports.CommandType[e],commandType:e,params:p}}if(a.parser===exports.Parser.V3Actions)return{commandName:exports.CommandType[e],commandType:e,params:r.map((function(e){return{name:"command",value:e}}))};throw new Error("Unsupported parser: "+a)}))}},e.getCommands=function(e){for(var t=[],r=2;r<e.length;r+=2){var o=e.substring(r,r+2);t.push(parseInt(o,16))}return t},e}();function xe(e){for(var t=e.replace("0x",""),r=u.ethers.utils.getAddress(t.substring(0,40)),o=40,n=[];o<t.length;){var a=t.substring(o,o+46),i=parseInt(a.substring(0,6),16),s=u.ethers.utils.getAddress(a.substring(6,46));n.push({tokenIn:r,tokenOut:s,fee:i}),r=s,o+=46}return n}function ye(e){for(var t=e.replace("0x",""),r=u.ethers.utils.getAddress(t.substring(t.length-40)),o=t.length-86,n=[];o>=0;){var a=t.substring(o,o+46),i=u.ethers.utils.getAddress(a.substring(0,40)),s=parseInt(a.substring(40,46),16);n.push({tokenIn:r,tokenOut:i,fee:s}),r=i,o-=46}return n}exports.COMMAND_DEFINITION=K,exports.CommandParser=Te,exports.GenericCommandParser=Ce,exports.ROUTER_AS_RECIPIENT=re,exports.RoutePlanner=Y,exports.RouterTradeAdapter=Ae,exports.SwapRouter=me,exports.UNIVERSAL_ROUTER_ADDRESS=Q,exports.UNIVERSAL_ROUTER_CREATION_BLOCK=function(e,t){if(!(t in z))throw new Error("Universal Router not deployed on chain "+t);return z[t].routerConfigs[e].creationBlock},exports.UniswapTrade=ae,exports.UnwrapWETH=le,exports.WETH_ADDRESS=$,exports.isNativeCurrency=fe;
2
2
  //# sourceMappingURL=universal-router-sdk.cjs.production.min.js.map