@ring-protocol/universal-router-sdk 0.1.28 → 0.1.29

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"),p=require("ethers"),d=require("@ring-protocol/v3-sdk"),u=require("@ring-protocol/v4-sdk"),m=require("@ring-protocol/sdk-core"),c=require("ethers/lib/utils"),T=require("@ring-protocol/few-v2-sdk"),l=require("@ring-protocol/v2-sdk"),A=require("@ring-protocol/router-sdk");function C(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 f(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 C(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)?C(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 y(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",r[r.FEW_V2_SWAP_EXACT_IN=35]="FEW_V2_SWAP_EXACT_IN",r[r.FEW_V2_SWAP_EXACT_OUT=36]="FEW_V2_SWAP_EXACT_OUT",r[r.WRAP_FEW_TOKEN=39]="WRAP_FEW_TOKEN",r[r.UNWRAP_FEW_TOKEN=40]="UNWRAP_FEW_TOKEN",(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 E,_,x,P,h,R,v,w,b,I,g,N,V,O,k,W,F,U,S,B,q,D,M,L,X,H,K,Y,j,G=new Set([exports.CommandType.EXECUTE_SUB_PLAN]),Z=((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.FEW_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.FEW_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_FEW_TOKEN]={parser:exports.Parser.Abi,params:[{name:"token",type:"address"},{name:"recipient",type:"address"},{name:"amount",type:"uint256"}]},t[exports.CommandType.UNWRAP_FEW_TOKEN]={parser:exports.Parser.Abi,params:[{name:"wrappedToken",type:"address"},{name:"recipient",type:"address"},{name:"amountMin",type:"uint256"}]},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),z=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=Z[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 Q(e,t){if(T.isFewToken(t.token0.wrapped)||T.isFewToken(t.token1.wrapped))return e;if(t.involvesToken(e))return e;if(t.involvesToken(e.wrapped))return e.wrapped;if(t instanceof u.Pool&&t.token0.wrapped.equals(e))return t.token0;if(t instanceof u.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)}(E=exports.RouterActionType||(exports.RouterActionType={})).UniswapTrade="UniswapTrade",E.UnwrapWETH="UnwrapWETH",(j=exports.UniversalRouterVersion||(exports.UniversalRouterVersion={})).V1_2="1.2",j.V2_0="2.0";var $,J=((Y={})[1]={weth:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",routerConfigs:(_={},_[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17143817},_[exports.UniversalRouterVersion.V2_0]={address:"0x66a9893cc07d91d95644aedd05d03f95e1dba8af",creationBlock:1737658355},_)},Y[5]={weth:"0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6",routerConfigs:(x={},x[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8940568},x[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8940568},x)},Y[11155111]={weth:"0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14",routerConfigs:(P={},P[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:3543575},P[exports.UniversalRouterVersion.V2_0]={address:"0x3a9d48ab9751398bbfa63ad67599bb04e4bdf98b",creationBlock:7259601},P)},Y[137]={weth:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",routerConfigs:(h={},h[exports.UniversalRouterVersion.V1_2]={address:"0xec7BE89e9d109e7e3Fec59c222CF297125FEFda2",creationBlock:52210153},h[exports.UniversalRouterVersion.V2_0]={address:"0x1095692a6237d83c6a72f3f5efedb9a670c49223",creationBlock:1737492197},h)},Y[80001]={weth:"0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889",routerConfigs:(R={},R[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:35176052},R[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:35176052},R)},Y[10]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(v={},v[exports.UniversalRouterVersion.V1_2]={address:"0xCb1355ff08Ab38bBCE60111F1bb2B784bE25D7e8",creationBlock:114702266},v[exports.UniversalRouterVersion.V2_0]={address:"0x851116d9223fabed8e56c0e6b8ad0c31d98b3507",creationBlock:1737494278},v)},Y[420]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(w={},w[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8887728},w[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8887728},w)},Y[42161]={weth:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",routerConfigs:(b={},b[exports.UniversalRouterVersion.V1_2]={address:"0x5E325eDA8064b456f4781070C0738d849c824258",creationBlock:169472836},b[exports.UniversalRouterVersion.V2_0]={address:"0xa51afafe0263b40edaef0df8781ea9aa03e381a3",creationBlock:1737487458},b)},Y[421613]={weth:"0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3",routerConfigs:(I={},I[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:18815277},I[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:18815277},I)},Y[42220]={weth:"0x0000000000000000000000000000000000000000",routerConfigs:(g={},g[exports.UniversalRouterVersion.V1_2]={address:"0x643770e279d5d0733f21d6dc03a8efbabf3255b4",creationBlock:21407637},g[exports.UniversalRouterVersion.V2_0]={address:"0x643770e279d5d0733f21d6dc03a8efbabf3255b4",creationBlock:21407637},g)},Y[44787]={weth:"0x0000000000000000000000000000000000000000",routerConfigs:(N={},N[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17566658},N[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17566658},N)},Y[56]={weth:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",routerConfigs:(V={},V[exports.UniversalRouterVersion.V1_2]={address:"0x4Dae2f939ACf50408e13d58534Ff8c2776d45265",creationBlock:35160263},V[exports.UniversalRouterVersion.V2_0]={address:"0x1906c1d672b88cd1b9ac7593301ca990f94eae07",creationBlock:1737493275},V)},Y[43114]={weth:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",routerConfigs:(O={},O[exports.UniversalRouterVersion.V1_2]={address:"0x4Dae2f939ACf50408e13d58534Ff8c2776d45265",creationBlock:40237257},O[exports.UniversalRouterVersion.V2_0]={address:"0x94b75331ae8d42c1b61065089b7d48fe14aa73b7",creationBlock:1737558236},O)},Y[84531]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(k={},k[exports.UniversalRouterVersion.V1_2]={address:"0xd0872d928672ae2ff74bdb2f5130ac12229cafaf",creationBlock:6915289},k[exports.UniversalRouterVersion.V2_0]={address:"0xd0872d928672ae2ff74bdb2f5130ac12229cafaf",creationBlock:6915289},k)},Y[8453]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(W={},W[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:9107268},W[exports.UniversalRouterVersion.V2_0]={address:"0x6ff5693b99212da76ad316178a184ab56d299b43",creationBlock:1737491485},W)},Y[81457]={weth:"0x4300000000000000000000000000000000000004",routerConfigs:(F={},F[exports.UniversalRouterVersion.V1_2]={address:"0x643770E279d5D0733F21d6DC03A8efbABf3255B4",creationBlock:1116444},F[exports.UniversalRouterVersion.V2_0]={address:"0xeabbcb3e8e415306207ef514f660a3f820025be3",creationBlock:1737564586},F)},Y[7777777]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(U={},U[exports.UniversalRouterVersion.V1_2]={address:"0x2986d9721A49838ab4297b695858aF7F17f38014",creationBlock:11832155},U[exports.UniversalRouterVersion.V2_0]={address:"0x3315ef7ca28db74abadc6c44570efdf06b04b020",creationBlock:1737562927},U)},Y[324]={weth:"0x5aea5775959fbc2557cc8789bc1bf90a239d9a91",routerConfigs:(S={},S[exports.UniversalRouterVersion.V1_2]={address:"0x28731BCC616B5f51dD52CF2e4dF0E78dD1136C06",creationBlock:12640979},S[exports.UniversalRouterVersion.V2_0]={address:"0x28731BCC616B5f51dD52CF2e4dF0E78dD1136C06",creationBlock:12640979},S)},Y[480]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(B={},B[exports.UniversalRouterVersion.V1_2]={address:"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",creationBlock:4063979},B[exports.UniversalRouterVersion.V2_0]={address:"0x8ac7bee993bb44dab564ea4bc9ea67bf9eb5e743",creationBlock:1737559557},B)},Y[1301]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(q={},q[exports.UniversalRouterVersion.V1_2]={address:"0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6",creationBlock:1241811},q[exports.UniversalRouterVersion.V2_0]={address:"0xf70536b3bcc1bd1a972dc186a2cf84cc6da6be5d",creationBlock:7100543},q)},Y[130]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(D={},D[exports.UniversalRouterVersion.V1_2]={address:"0x4D73A4411CA1c660035e4AECC8270E5DdDEC8C17",creationBlock:23678},D[exports.UniversalRouterVersion.V2_0]={address:"0xef740bf23acae26f6492b10de645d6b98dc8eaf3",creationBlock:1737568156},D)},Y[10143]={weth:"0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",routerConfigs:(M={},M[exports.UniversalRouterVersion.V1_2]={address:"0x3ae6d8a282d67893e17aa70ebffb33ee5aa65893",creationBlock:23678},M[exports.UniversalRouterVersion.V2_0]={address:"0x3ae6d8a282d67893e17aa70ebffb33ee5aa65893",creationBlock:23678},M)},Y[84532]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(L={},L[exports.UniversalRouterVersion.V1_2]={address:"0x492e6456d9528771018deb9e87ef7750ef184104",creationBlock:20216585},L[exports.UniversalRouterVersion.V2_0]={address:"0x492e6456d9528771018deb9e87ef7750ef184104",creationBlock:20216585},L)},Y[1868]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(X={},X[exports.UniversalRouterVersion.V1_2]={address:"0x0e2850543f69f678257266e0907ff9a58b3f13de",creationBlock:3254782},X[exports.UniversalRouterVersion.V2_0]={address:"0x0e2850543f69f678257266e0907ff9a58b3f13de",creationBlock:3254782},X)},Y[143]={weth:"0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A",routerConfigs:(H={},H[exports.UniversalRouterVersion.V1_2]={address:"0x0d97dc33264bfc1c226207428a79b26757fb9dc3",creationBlock:29255937},H[exports.UniversalRouterVersion.V2_0]={address:"0x0d97dc33264bfc1c226207428a79b26757fb9dc3",creationBlock:29255937},H)},Y[999]={weth:"0x5555555555555555555555555555555555555555",routerConfigs:(K={},K[exports.UniversalRouterVersion.V1_2]={address:"0x7d3D28dee339C17452A4d6b53C71b2557278B530",creationBlock:9273064},K[exports.UniversalRouterVersion.V2_0]={address:"0x7d3D28dee339C17452A4d6b53C71b2557278B530",creationBlock:9273064},K)},Y),ee=function(e,t){if(!(t in J))throw new Error("Universal Router not deployed on chain "+t);return J[t].routerConfigs[e].address},te=function(e){if(!(e in J))throw new Error("Universal Router not deployed on chain "+e);if("0x0000000000000000000000000000000000000000"==J[e].weth)throw new Error("Chain "+e+" does not have WETH");return J[e].weth},re=p.BigNumber.from(2).pow(255),oe="0x0000000000000000000000000000000000000000",ne="0x0000000000000000000000000000000000000001",ae="0x0000000000000000000000000000000000000002";function ie(e){return e.isNative?oe:e.wrapped.address}var se=(($={})[m.ChainId.HYPER_MAINNET]=new m.Token(999,"0x9e1148bC3665a9f7C35F313d89c0432c34928AEf",18,"fwWHYPE","Few Wrapped Wrapped Hyper"),$[m.ChainId.MAINNET]=new m.Token(1,"0xa250CC729Bb3323e7933022a67B52200fE354767",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.BASE]=new m.Token(8453,"0xd38e4149df30AfFFEE13d771f3Ec9277c72333E4",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.ARBITRUM_ONE]=new m.Token(42161,"0x76CDff74222533Efa4BAa713BC3d14df81A460F7",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.ARBITRUM_SEPOLIA]=new m.Token(421614,"0x1fc632A9A9c99ae7C406f8565cd709b52BA0ed47",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.UNICHAIN]=new m.Token(130,"0x05e6c1B4Da05c41c86c35Ce42a8a222C1a450167",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.UNICHAIN_SEPOLIA]=new m.Token(1301,"0x1fc632A9A9c99ae7C406f8565cd709b52BA0ed47",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.GOERLI]=new m.Token(5,"0x6b7e07C37a157d01D71012c36644907Ab5a7694e",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.BLAST]=new m.Token(81457,"0x66714DB8F3397c767d0A602458B5b4E3C0FE7dd1",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.SEPOLIA]=new m.Token(11155111,"0x98b902eF4f9fEB2F6982ceEB4E98761294854D61",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.BLAST_SEPOLIA]=new m.Token(m.ChainId.BLAST_SEPOLIA,"0x798dE0520497E28E8eBfF0DF1d791c2E942eA881",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.STORY_ODYSSEY]=new m.Token(m.ChainId.STORY_ODYSSEY,"0xA67013F71AF4f21563BAf8C1d156F1Dc7ab681C6",18,"fwWIP","Few Wrapped Wrapped IP"),$[m.ChainId.STORY_MAINNET]=new m.Token(m.ChainId.STORY_MAINNET,"0x088dE218b725975E6285995C25Ce3706BAe0f4Ec",18,"fwWIP","Few Wrapped Wrapped IP"),$[m.ChainId.BNB]=new m.Token(56,"0x7f0172b75d3823D8aF04feE3A3f6a14aBD68EFE1",18,"fwWBNB","Few Wrapped Wrapped BNB"),$),pe=new m.Percent(50,100),de=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,[ae,this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]):this.inputRequiresUnwrap&&(e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[this.trade.inputAmount.currency.address,ae,this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.UNWRAP_WETH,[ae,0])),this.options.recipient=null!=(r=this.options.recipient)?r:ne;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=f(this.trade.swaps);!(n=i()).done;){var s=n.value;switch(s.route.protocol){case A.Protocol.FEWV2:ue(e,s,this.trade.tradeType,this.options);break;case A.Protocol.V2:me(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case A.Protocol.V3:ce(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case A.Protocol.V4:Te(this.trade.swaps,e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case A.Protocol.MIXED:le(this.trade.swaps,e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;default:throw new Error("UNSUPPORTED_TRADE_PROTOCOL")}}var u=p.BigNumber.from(this.trade.minimumAmountOut(this.options.slippageTolerance).quotient.toString());if(a){var c=this.trade.swaps[0].route.pools,T=ie(Q(this.trade.outputAmount.currency,c[c.length-1]));if(this.options.fee){var l=d.toHex(this.options.fee.fee.multiply(1e4).quotient);e.addCommand(exports.CommandType.PAY_PORTION,[T,this.options.fee.recipient,l]),this.trade.tradeType===m.TradeType.EXACT_OUTPUT&&(u=u.sub(u.mul(l).div(1e4)))}if(this.options.flatFee){var C=this.options.flatFee.amount;if(u.lt(C))throw new Error("Flat fee amount greater than minimumAmountOut");e.addCommand(exports.CommandType.TRANSFER,[T,this.options.flatFee.recipient,C]),this.trade.tradeType===m.TradeType.EXACT_OUTPUT&&(u=u.sub(C))}this.outputRequiresUnwrap?(e.addCommand(exports.CommandType.UNWRAP_WETH,[this.options.recipient,"0"]),e.addCommand(exports.CommandType.SWEEP,[ie(this.trade.outputAmount.currency),ne,"0"])):this.outputRequiresWrap?e.addCommand(exports.CommandType.WRAP_ETH,[this.options.recipient,re]):e.addCommand(exports.CommandType.SWEEP,this.hasFewV2?[ie(this.trade.outputAmount.currency),this.options.recipient,"0"]:[ie(this.trade.outputAmount.currency),this.options.recipient,u])}var y=se[this.trade.inputAmount.currency.wrapped.chainId];(this.trade.tradeType===m.TradeType.EXACT_OUTPUT||this.trade.priceImpact.greaterThan(pe))&&(this.inputRequiresWrap?(e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[y.address,ae,"0"]),e.addCommand(exports.CommandType.UNWRAP_WETH,[this.options.recipient,0]),e.addCommand(exports.CommandType.SWEEP,[oe,this.options.recipient,0])):this.inputRequiresUnwrap?e.addCommand(exports.CommandType.WRAP_ETH,[this.options.recipient,re]):this.trade.inputAmount.currency.isNative&&(e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[y.address,ae,"0"]),e.addCommand(exports.CommandType.UNWRAP_WETH,[ne,0]),e.addCommand(exports.CommandType.SWEEP,[oe,this.options.recipient,0])),e.addCommand(exports.CommandType.SWEEP,[this.trade.inputAmount.currency.wrapped.address,ne,"0"]),e.addCommand(exports.CommandType.SWEEP,[this.trade.outputAmount.currency.wrapped.address,ne,"0"])),this.options.safeMode&&e.addCommand(exports.CommandType.SWEEP,[oe,this.options.recipient,0])},t=e,(r=[{key:"isAllV4",get:function(){for(var e,t=!0,r=f(this.trade.swaps);!(e=r()).done;)t=t&&e.value.route.protocol==A.Protocol.V4;return t}},{key:"hasFewV2",get:function(){for(var e,t=!1,r=f(this.trade.swaps);!(e=r()).done;)t=t||e.value.route.protocol==A.Protocol.FEWV2;return t}},{key:"inputRequiresWrap",get:function(){return this.trade.swaps[0].route.pools[0]instanceof u.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 u.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 u.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 u.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,y(o.key),o)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),t}();function ue(e,t,r,o,n,a){var i=t.route,s=t.outputAmount,p=new T.Trade(i,r==m.TradeType.EXACT_INPUT?t.inputAmount:s,r),d=i.path[0],u=i.path[i.path.length-1];p.inputAmount.currency.isNative||e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[p.inputAmount.currency.address,ae,p.maximumAmountIn(o.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.WRAP_FEW_TOKEN,[p.inputAmount.currency.wrapped.address,ae,p.inputAmount.quotient.toString()]),r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.FEW_V2_SWAP_EXACT_IN,[ae,p.maximumAmountIn(o.slippageTolerance).quotient.toString(),0,i.path.map((function(e){return e.wrapped.address})),!1]):r==m.TradeType.EXACT_OUTPUT&&e.addCommand(exports.CommandType.FEW_V2_SWAP_EXACT_OUT,[ae,p.minimumAmountOut(o.slippageTolerance).quotient.toString(),p.maximumAmountIn(o.slippageTolerance).quotient.toString(),i.path.map((function(e){return e.wrapped.address})),!1]);var c=T.getFewTokenFromOriginalToken(p.outputAmount.currency.wrapped,p.outputAmount.currency.chainId);s.currency.isNative?e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[se[p.inputAmount.currency.wrapped.chainId].address,ae,p.minimumAmountOut(o.slippageTolerance).quotient.toString()]):T.isFewToken(i.pathInput.wrapped)&&T.isFewToken(i.pathOutput.wrapped)&&(e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[c.address,ne,p.minimumAmountOut(o.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[d.wrapped.address,ne,"0"]),e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[u.wrapped.address,ne,"0"]))}function me(e,t,r,o,n,a){var i=t.route,s=t.outputAmount,p=new l.Trade(i,r==m.TradeType.EXACT_INPUT?t.inputAmount:s,r),d=i.path[0],u=i.path[i.path.length-1];if(T.isFewToken(i.pathInput.wrapped)&&T.isFewToken(i.pathOutput.wrapped)){p.inputAmount.currency.isNative||e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[p.inputAmount.currency.address,ae,p.maximumAmountIn(o.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.WRAP_FEW_TOKEN,[p.inputAmount.currency.wrapped.address,ae,p.inputAmount.currency.isNative?re:p.inputAmount.quotient.toString()]),n=!1,a=!0,r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.V2_SWAP_EXACT_IN,[a?ae:o.recipient,p.maximumAmountIn(o.slippageTolerance).quotient.toString(),a?0:p.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?ae:o.recipient,p.minimumAmountOut(o.slippageTolerance).quotient.toString(),p.maximumAmountIn(o.slippageTolerance).quotient.toString(),i.path.map((function(e){return e.wrapped.address})),n]);var c=T.getFewTokenFromOriginalToken(p.outputAmount.currency.wrapped,p.outputAmount.currency.chainId);T.isFewToken(d.wrapped)&&T.isFewToken(u.wrapped)&&(e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,s.currency.isNative?[c.address,ae,p.minimumAmountOut(o.slippageTolerance).quotient.toString()]:[c.address,ne,p.minimumAmountOut(o.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[d.wrapped.address,ne,"0"]),e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[u.wrapped.address,ne,"0"]))}else r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.V2_SWAP_EXACT_IN,[a?ae:o.recipient,p.maximumAmountIn(o.slippageTolerance).quotient.toString(),a?0:p.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?ae:o.recipient,p.minimumAmountOut(o.slippageTolerance).quotient.toString(),p.maximumAmountIn(o.slippageTolerance).quotient.toString(),i.path.map((function(e){return e.wrapped.address})),n])}function ce(e,t,r,o,n,a){var i=t.route,s=t.outputAmount,p=d.Trade.createUncheckedTrade({route:i,inputAmount:t.inputAmount,outputAmount:s,tradeType:r}),u=i.path[0],c=i.path[i.path.length-1];if(T.isFewToken(i.pathInput.wrapped)&&T.isFewToken(i.pathOutput.wrapped)){p.inputAmount.currency.isNative||e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[p.inputAmount.currency.address,ae,p.maximumAmountIn(o.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.WRAP_FEW_TOKEN,[p.inputAmount.currency.wrapped.address,ae,p.inputAmount.currency.isNative?re:p.inputAmount.quotient.toString()]),n=!1,a=!0;var l=T.getFewTokenFromOriginalToken(i.input.wrapped,i.input.chainId),A=T.getFewTokenFromOriginalToken(i.output.wrapped,i.output.chainId),C=new d.Route(i.pools,l,A),f=d.encodeRouteToPath(C,p.tradeType===m.TradeType.EXACT_OUTPUT);r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.V3_SWAP_EXACT_IN,[a?ae:o.recipient,p.maximumAmountIn(o.slippageTolerance).quotient.toString(),a?0:p.minimumAmountOut(o.slippageTolerance).quotient.toString(),f,n]):r==m.TradeType.EXACT_OUTPUT&&e.addCommand(exports.CommandType.V3_SWAP_EXACT_OUT,[a?ae:o.recipient,p.minimumAmountOut(o.slippageTolerance).quotient.toString(),p.maximumAmountIn(o.slippageTolerance).quotient.toString(),f,n]);var y=T.getFewTokenFromOriginalToken(p.inputAmount.currency.wrapped,p.inputAmount.currency.chainId),E=T.getFewTokenFromOriginalToken(p.outputAmount.currency.wrapped,p.outputAmount.currency.chainId);T.isFewToken(u.wrapped)&&T.isFewToken(c.wrapped)&&(s.currency.isNative?e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[E.address,ae,"0"]):p.inputAmount.currency.isNative?(e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[y.address,ae,"0"]),e.addCommand(exports.CommandType.UNWRAP_WETH,[ne,"0"])):e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[E.address,ne,"0"]),e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[u.wrapped.address,ne,"0"]),e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[c.wrapped.address,ne,"0"]))}else{var _=d.encodeRouteToPath(i,p.tradeType===m.TradeType.EXACT_OUTPUT);r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.V3_SWAP_EXACT_IN,[a?ae:o.recipient,p.maximumAmountIn(o.slippageTolerance).quotient.toString(),a?0:p.minimumAmountOut(o.slippageTolerance).quotient.toString(),_,n]):r==m.TradeType.EXACT_OUTPUT&&e.addCommand(exports.CommandType.V3_SWAP_EXACT_OUT,[a?ae:o.recipient,p.minimumAmountOut(o.slippageTolerance).quotient.toString(),p.maximumAmountIn(o.slippageTolerance).quotient.toString(),_,n])}}function Te(e,t,r,o,n,a,i){var s=r.inputAmount,p=r.outputAmount,d=r.route,c=T.getFewTokenFromOriginalToken(s.currency.wrapped,s.currency.chainId),l=T.getFewTokenFromOriginalToken(p.currency.wrapped,p.currency.chainId),C=e[0],f=e[e.length-1],y=d.path[0],E=d.path[d.path.length-1],_=d.pools.map((function(e){return e})),x=new u.Route(_,s.currency,p.currency);if(T.isFewToken(d.pools[0].token0.wrapped)&&T.isFewToken(d.pools[0].token1.wrapped)){var P,h=new u.Route(_,c,l),R=u.Trade.createUncheckedTrade({route:h,inputAmount:s,outputAmount:p,tradeType:o});R.inputAmount.currency.isNative||t.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[R.inputAmount.currency.address,ae,R.maximumAmountIn(n.slippageTolerance).quotient.toString()]),R.inputAmount.currency.isNative&&t.addCommand(exports.CommandType.WRAP_ETH,[ae,R.inputAmount.quotient.toString()]),t.addCommand(exports.CommandType.WRAP_FEW_TOKEN,[R.inputAmount.currency.wrapped.address,ae,R.inputAmount.currency.isNative?re:R.inputAmount.quotient.toString()]),a=!1;var v=(i=!0)&&o==m.TradeType.EXACT_INPUT?void 0:n.slippageTolerance,w=new u.V4Planner;w.addTrade(R,v),w.addSettle(R.route.pathInput,a),w.addTake(R.route.pathOutput,i?ae:null!=(P=n.recipient)?P:ne),t.addCommand(exports.CommandType.V4_SWAP,[w.finalize()]);var b=T.getFewTokenFromOriginalToken(R.outputAmount.currency.wrapped,R.outputAmount.currency.chainId);T.isFewToken(y.wrapped)&&T.isFewToken(E.wrapped)&&(p.currency.isNative?(t.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[b.address,ae,R.minimumAmountOut(n.slippageTolerance).quotient.toString()]),t.addCommand(exports.CommandType.UNWRAP_WETH,[ne,0])):t.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[b.address,ne,R.minimumAmountOut(n.slippageTolerance).quotient.toString()]),t.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[y.wrapped.address,ne,"0"]),t.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[E.wrapped.address,ne,"0"]))}else{var I,g=u.Trade.createUncheckedTrade({route:x,inputAmount:s,outputAmount:p,tradeType:o}),N=i&&o==m.TradeType.EXACT_INPUT?void 0:n.slippageTolerance,V=new u.V4Planner;V.addTrade(g,N),V.addSettle(g.route.pathInput,a),V.addTake(g.route.pathOutput,i?ae:null!=(I=n.recipient)?I:ne),C.route.protocol!==A.Protocol.V4&&f.route.protocol===A.Protocol.V4&&g.route.pathInput.isNative&&t.addCommand(exports.CommandType.UNWRAP_WETH,[ae,0]),t.addCommand(exports.CommandType.V4_SWAP,[V.finalize()])}}function le(e,t,r,o,n,a,i){var s,p=r.route,m=r.inputAmount,c=r.outputAmount,T=i?ae:null!=(s=n.recipient)?s:ne;if(1===p.pools.length){if(p.pools[0]instanceof u.Pool)return Te(e,t,r,o,n,a,i);if(p.pools[0]instanceof d.Pool)return ce(t,r,o,n,a,i);if(p.pools[0]instanceof l.Pair)return me(t,r,o,n,a,i);throw new Error("Invalid route type")}for(var C=A.MixedRouteTrade.createUncheckedTrade({route:p,inputAmount:m,outputAmount:c,tradeType:o}),f=C.maximumAmountIn(n.slippageTolerance,m).quotient.toString(),y=i?0:C.minimumAmountOut(n.slippageTolerance,c).quotient.toString(),E=A.partitionMixedRouteByProtocol(p),_=function(e){return e===E.length-1},x=p.pathInput,P=0;P<E.length;P++){var h=E[P],R=h[0],v=A.getOutputOfPools(h,x),w=new A.MixedRoute(new A.MixedRouteSDK([].concat(h),x,v)),b=void 0,I=void 0;if(_(P))b=v,I=T;else{var g=E[P+1][0];b=Q(v,g),I=g instanceof l.Pair&&v.equals(b)?g.liquidityToken.address:ae}if(R instanceof u.Pool){var N=new u.V4Planner,V=new u.Route(h,w.input,w.output);N.addSettle(x,a&&0===P,0==P?f:re),N.addAction(u.Actions.SWAP_EXACT_IN,[{currencyIn:x.isNative?oe:x.address,path:u.encodeRouteToPath(V),amountIn:0,amountOutMinimum:_(P)?y:0}]),N.addTake(v,I),t.addCommand(exports.CommandType.V4_SWAP,[N.finalize()])}else if(R instanceof d.Pool)t.addCommand(exports.CommandType.V3_SWAP_EXACT_IN,[I,0==P?f:re,_(P)?y:0,A.encodeMixedRouteToPath(w),a&&0===P]);else{if(!(R instanceof l.Pair))throw new Error("Unexpected Pool Type");t.addCommand(exports.CommandType.V2_SWAP_EXACT_IN,[I,0===P?f:re,_(P)?y:0,w.path.map((function(e){return e.wrapped.address})),a&&0===P])}_(P)||(v.isNative&&!b.isNative?t.addCommand(exports.CommandType.WRAP_ETH,[ae,re]):!v.isNative&&b.isNative&&t.addCommand(exports.CommandType.UNWRAP_WETH,[ae,0])),x=b}}function Ae(e,t){var r=t.signature,o=p.ethers.utils.arrayify(t.signature).length;65!==o&&64!==o||(r=p.ethers.utils.joinSignature(p.ethers.utils.splitSignature(t.signature))),e.addCommand(exports.CommandType.PERMIT2_PERMIT,[t,r])}var Ce=function(){function e(){}return e.swapCallParameters=function(t,r){var o=new z,n=new de(t,r),i=n.trade.inputAmount.currency;i.isNative&&r.inputTokenPermit&&a(!1),r.inputTokenPermit&&Ae(o,r.inputTokenPermit);var s=p.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?p.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 z;if(t.v4AddLiquidityOptions.createPool){var T=u.Pool.getPoolKey(o.currency0,o.currency1,o.fee,o.tickSpacing,o.hooks);c.addCommand(exports.CommandType.V4_INITIALIZE_POOL,[T,o.sqrtRatioX96.toString()]),delete t.v4AddLiquidityOptions.createPool}t.v3RemoveLiquidityOptions.permit&&(ee(exports.UniversalRouterVersion.V2_0,t.inputPosition.pool.chainId)!=t.v3RemoveLiquidityOptions.permit.spender&&a(!1),function(e,t,r){var o=d.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 l,A=d.NonfungiblePositionManager.removeCallParameters(t.inputPosition,t.v3RemoveLiquidityOptions),C=f(d.Multicall.decodeMulticall(A.calldata));!(l=C()).done;){var y=l.value,E=y.slice(0,10);E!=d.NonfungiblePositionManager.INTERFACE.getSighash("collect")&&E!=d.NonfungiblePositionManager.INTERFACE.getSighash("decreaseLiquidity")&&E!=d.NonfungiblePositionManager.INTERFACE.getSighash("burn")&&a(!1),c.addCommand(exports.CommandType.V3_POSITION_MANAGER_CALL,[y])}var _=u.V4PositionManager.addCallParameters(t.outputPosition,t.v4AddLiquidityOptions);return _.calldata.slice(0,10)!=u.V4PositionManager.INTERFACE.getSighash("modifyLiquidities")&&a(!1),c.addCommand(exports.CommandType.V4_POSITION_MANAGER_CALL,[_.calldata]),e.encodePlan(c,p.BigNumber.from(0),{deadline:p.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}();Ce.INTERFACE=new s.Interface(i.abi);var fe,ye=function(){function e(e,t,r){this.tradeType=exports.RouterActionType.UnwrapWETH,this.wethAddress=te(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&&Ae(e,t.permit2Permit),t.permit2TransferFrom&&e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[t.permit2TransferFrom.token,t.permit2TransferFrom.recipient?t.permit2TransferFrom.recipient:ae,t.permit2TransferFrom.amount])}(e,{permit2Permit:this.permit2Data,permit2TransferFrom:{token:this.wethAddress,amount:this.amount.toString()}}),e.addCommand(exports.CommandType.UNWRAP_WETH,[ae,this.amount])},e}();(fe=exports.PoolType||(exports.PoolType={})).V2Pool="v2-pool",fe.V3Pool="v3-pool",fe.V4Pool="v4-pool";var Ee=function(e){return e.toLowerCase()===oe.toLowerCase()||e.toLowerCase()==="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee".toLowerCase()},_e=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 p=e.toCurrency(Ee(o),i),c=e.toCurrency(Ee(n),s),T=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(p,r),a=m.CurrencyAmount.fromRawAmount(c,o),i=e.isVersionedRoute(exports.PoolType.V2Pool,t),s=e.isVersionedRoute(exports.PoolType.V3Pool,t),T=e.isVersionedRoute(exports.PoolType.V4Pool,t);return{routev4:T?new u.Route(t.map(e.toV4Pool),p,c):null,routev3:s?new d.Route(t.map(e.toV3Pool),p,c):null,routev2:i?new l.Route(t.map(e.toPair),p,c):null,mixedRoute:T||s||i?null:new A.MixedRouteSDK(t.map(e.toPoolOrPair),p,c),inputAmount:n,outputAmount:a}}));return new A.Trade({v2Routes:T.filter((function(e){return e.routev2})).map((function(e){return{routev2:e.routev2,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),v3Routes:T.filter((function(e){return e.routev3})).map((function(e){return{routev3:e.routev3,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),v4Routes:T.filter((function(e){return e.routev4})).map((function(e){return{routev4:e.routev4,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),mixedRoutes:T.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?p.BigNumber.from(r):void 0,o?p.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 d.Pool(e.toToken(t.tokenIn),e.toToken(i),parseInt(r),o,n,parseInt(a))},e.toV4Pool=function(t){var r=e.toCurrency(Ee(t.tokenIn.address),t.tokenIn),o=e.toCurrency(Ee(t.tokenOut.address),t.tokenOut);return new u.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}();_e.toPoolOrPair=function(e){switch(e.type){case exports.PoolType.V4Pool:return _e.toV4Pool(e);case exports.PoolType.V3Pool:return _e.toV3Pool(e);case exports.PoolType.V2Pool:return _e.toPair(e);default:throw new Error("Invalid pool type")}},_e.toPair=function(e){var t=e.reserve0,r=e.reserve1;return new l.Pair(m.CurrencyAmount.fromRawAmount(_e.toToken(t.token),t.quotient),m.CurrencyAmount.fromRawAmount(_e.toToken(r.token),r.quotient))};var xe=function(){function e(){}return e.parseCalldata=function(t){var r=new Pe(Z),o=e.INTERFACE.parseTransaction({data:t}).args;return r.parse(o.commands,o.inputs)},e}();xe.INTERFACE=new s.Interface(i.abi);var Pe=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=u.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,d=p.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:he(e)};case exports.Subparser.V3PathExactOut:return{name:s[t].name,value:Re(e)};default:return{name:s[t].name,value:e}}}));return{commandName:exports.CommandType[e],commandType:e,params:d}}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 he(e){for(var t=e.replace("0x",""),r=p.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=p.ethers.utils.getAddress(a.substring(6,46));n.push({tokenIn:r,tokenOut:s,fee:i}),r=s,o+=46}return n}function Re(e){for(var t=e.replace("0x",""),r=p.ethers.utils.getAddress(t.substring(t.length-40)),o=t.length-86,n=[];o>=0;){var a=t.substring(o,o+46),i=p.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=Z,exports.CommandParser=xe,exports.FEW_WRAPPED_NATIVE_CURRENCY=se,exports.GenericCommandParser=Pe,exports.ROUTER_AS_RECIPIENT=ae,exports.RoutePlanner=z,exports.RouterTradeAdapter=_e,exports.SwapRouter=Ce,exports.UNIVERSAL_ROUTER_ADDRESS=ee,exports.UNIVERSAL_ROUTER_CREATION_BLOCK=function(e,t){if(!(t in J))throw new Error("Universal Router not deployed on chain "+t);return J[t].routerConfigs[e].creationBlock},exports.UniswapTrade=de,exports.UnwrapWETH=ye,exports.WETH_ADDRESS=te,exports.isNativeCurrency=Ee;
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"),p=require("ethers"),d=require("@ring-protocol/v3-sdk"),u=require("@ring-protocol/v4-sdk"),m=require("@ring-protocol/sdk-core"),c=require("ethers/lib/utils"),T=require("@ring-protocol/few-v2-sdk"),l=require("@ring-protocol/v2-sdk"),A=require("@ring-protocol/router-sdk");function C(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 f(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 C(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)?C(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 y(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",r[r.FEW_V2_SWAP_EXACT_IN=35]="FEW_V2_SWAP_EXACT_IN",r[r.FEW_V2_SWAP_EXACT_OUT=36]="FEW_V2_SWAP_EXACT_OUT",r[r.WRAP_FEW_TOKEN=39]="WRAP_FEW_TOKEN",r[r.UNWRAP_FEW_TOKEN=40]="UNWRAP_FEW_TOKEN",(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 E,_,x,h,P,R,w,v,b,I,g,N,V,O,k,F,W,U,S,B,q,D,M,L,X,H,K,Y,j,G=new Set([exports.CommandType.EXECUTE_SUB_PLAN]),Z=((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.FEW_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.FEW_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_FEW_TOKEN]={parser:exports.Parser.Abi,params:[{name:"token",type:"address"},{name:"recipient",type:"address"},{name:"amount",type:"uint256"}]},t[exports.CommandType.UNWRAP_FEW_TOKEN]={parser:exports.Parser.Abi,params:[{name:"wrappedToken",type:"address"},{name:"recipient",type:"address"},{name:"amountMin",type:"uint256"}]},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),z=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=Z[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 Q(e,t){if(T.isFewToken(t.token0.wrapped)||T.isFewToken(t.token1.wrapped))return e;if(t.involvesToken(e))return e;if(t.involvesToken(e.wrapped))return e.wrapped;if(t instanceof u.Pool&&t.token0.wrapped.equals(e))return t.token0;if(t instanceof u.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)}(E=exports.RouterActionType||(exports.RouterActionType={})).UniswapTrade="UniswapTrade",E.UnwrapWETH="UnwrapWETH",(j=exports.UniversalRouterVersion||(exports.UniversalRouterVersion={})).V1_2="1.2",j.V2_0="2.0";var $,J=((Y={})[1]={weth:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",routerConfigs:(_={},_[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17143817},_[exports.UniversalRouterVersion.V2_0]={address:"0x66a9893cc07d91d95644aedd05d03f95e1dba8af",creationBlock:1737658355},_)},Y[5]={weth:"0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6",routerConfigs:(x={},x[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8940568},x[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8940568},x)},Y[11155111]={weth:"0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14",routerConfigs:(h={},h[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:3543575},h[exports.UniversalRouterVersion.V2_0]={address:"0x3a9d48ab9751398bbfa63ad67599bb04e4bdf98b",creationBlock:7259601},h)},Y[137]={weth:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",routerConfigs:(P={},P[exports.UniversalRouterVersion.V1_2]={address:"0xec7BE89e9d109e7e3Fec59c222CF297125FEFda2",creationBlock:52210153},P[exports.UniversalRouterVersion.V2_0]={address:"0x1095692a6237d83c6a72f3f5efedb9a670c49223",creationBlock:1737492197},P)},Y[80001]={weth:"0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889",routerConfigs:(R={},R[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:35176052},R[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:35176052},R)},Y[10]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(w={},w[exports.UniversalRouterVersion.V1_2]={address:"0xCb1355ff08Ab38bBCE60111F1bb2B784bE25D7e8",creationBlock:114702266},w[exports.UniversalRouterVersion.V2_0]={address:"0x851116d9223fabed8e56c0e6b8ad0c31d98b3507",creationBlock:1737494278},w)},Y[420]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(v={},v[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8887728},v[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8887728},v)},Y[42161]={weth:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",routerConfigs:(b={},b[exports.UniversalRouterVersion.V1_2]={address:"0x5E325eDA8064b456f4781070C0738d849c824258",creationBlock:169472836},b[exports.UniversalRouterVersion.V2_0]={address:"0xa51afafe0263b40edaef0df8781ea9aa03e381a3",creationBlock:1737487458},b)},Y[421613]={weth:"0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3",routerConfigs:(I={},I[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:18815277},I[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:18815277},I)},Y[42220]={weth:"0x0000000000000000000000000000000000000000",routerConfigs:(g={},g[exports.UniversalRouterVersion.V1_2]={address:"0x643770e279d5d0733f21d6dc03a8efbabf3255b4",creationBlock:21407637},g[exports.UniversalRouterVersion.V2_0]={address:"0x643770e279d5d0733f21d6dc03a8efbabf3255b4",creationBlock:21407637},g)},Y[44787]={weth:"0x0000000000000000000000000000000000000000",routerConfigs:(N={},N[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17566658},N[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17566658},N)},Y[56]={weth:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",routerConfigs:(V={},V[exports.UniversalRouterVersion.V1_2]={address:"0x4Dae2f939ACf50408e13d58534Ff8c2776d45265",creationBlock:35160263},V[exports.UniversalRouterVersion.V2_0]={address:"0x1906c1d672b88cd1b9ac7593301ca990f94eae07",creationBlock:1737493275},V)},Y[43114]={weth:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",routerConfigs:(O={},O[exports.UniversalRouterVersion.V1_2]={address:"0x4Dae2f939ACf50408e13d58534Ff8c2776d45265",creationBlock:40237257},O[exports.UniversalRouterVersion.V2_0]={address:"0x94b75331ae8d42c1b61065089b7d48fe14aa73b7",creationBlock:1737558236},O)},Y[84531]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(k={},k[exports.UniversalRouterVersion.V1_2]={address:"0xd0872d928672ae2ff74bdb2f5130ac12229cafaf",creationBlock:6915289},k[exports.UniversalRouterVersion.V2_0]={address:"0xd0872d928672ae2ff74bdb2f5130ac12229cafaf",creationBlock:6915289},k)},Y[8453]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(F={},F[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:9107268},F[exports.UniversalRouterVersion.V2_0]={address:"0x6ff5693b99212da76ad316178a184ab56d299b43",creationBlock:1737491485},F)},Y[81457]={weth:"0x4300000000000000000000000000000000000004",routerConfigs:(W={},W[exports.UniversalRouterVersion.V1_2]={address:"0x643770E279d5D0733F21d6DC03A8efbABf3255B4",creationBlock:1116444},W[exports.UniversalRouterVersion.V2_0]={address:"0xeabbcb3e8e415306207ef514f660a3f820025be3",creationBlock:1737564586},W)},Y[7777777]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(U={},U[exports.UniversalRouterVersion.V1_2]={address:"0x2986d9721A49838ab4297b695858aF7F17f38014",creationBlock:11832155},U[exports.UniversalRouterVersion.V2_0]={address:"0x3315ef7ca28db74abadc6c44570efdf06b04b020",creationBlock:1737562927},U)},Y[324]={weth:"0x5aea5775959fbc2557cc8789bc1bf90a239d9a91",routerConfigs:(S={},S[exports.UniversalRouterVersion.V1_2]={address:"0x28731BCC616B5f51dD52CF2e4dF0E78dD1136C06",creationBlock:12640979},S[exports.UniversalRouterVersion.V2_0]={address:"0x28731BCC616B5f51dD52CF2e4dF0E78dD1136C06",creationBlock:12640979},S)},Y[480]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(B={},B[exports.UniversalRouterVersion.V1_2]={address:"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",creationBlock:4063979},B[exports.UniversalRouterVersion.V2_0]={address:"0x8ac7bee993bb44dab564ea4bc9ea67bf9eb5e743",creationBlock:1737559557},B)},Y[1301]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(q={},q[exports.UniversalRouterVersion.V1_2]={address:"0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6",creationBlock:1241811},q[exports.UniversalRouterVersion.V2_0]={address:"0xf70536b3bcc1bd1a972dc186a2cf84cc6da6be5d",creationBlock:7100543},q)},Y[130]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(D={},D[exports.UniversalRouterVersion.V1_2]={address:"0x4D73A4411CA1c660035e4AECC8270E5DdDEC8C17",creationBlock:23678},D[exports.UniversalRouterVersion.V2_0]={address:"0xef740bf23acae26f6492b10de645d6b98dc8eaf3",creationBlock:1737568156},D)},Y[10143]={weth:"0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",routerConfigs:(M={},M[exports.UniversalRouterVersion.V1_2]={address:"0x3ae6d8a282d67893e17aa70ebffb33ee5aa65893",creationBlock:23678},M[exports.UniversalRouterVersion.V2_0]={address:"0x3ae6d8a282d67893e17aa70ebffb33ee5aa65893",creationBlock:23678},M)},Y[84532]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(L={},L[exports.UniversalRouterVersion.V1_2]={address:"0x492e6456d9528771018deb9e87ef7750ef184104",creationBlock:20216585},L[exports.UniversalRouterVersion.V2_0]={address:"0x492e6456d9528771018deb9e87ef7750ef184104",creationBlock:20216585},L)},Y[1868]={weth:"0x4200000000000000000000000000000000000006",routerConfigs:(X={},X[exports.UniversalRouterVersion.V1_2]={address:"0x0e2850543f69f678257266e0907ff9a58b3f13de",creationBlock:3254782},X[exports.UniversalRouterVersion.V2_0]={address:"0x0e2850543f69f678257266e0907ff9a58b3f13de",creationBlock:3254782},X)},Y[143]={weth:"0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A",routerConfigs:(H={},H[exports.UniversalRouterVersion.V1_2]={address:"0x0d97dc33264bfc1c226207428a79b26757fb9dc3",creationBlock:29255937},H[exports.UniversalRouterVersion.V2_0]={address:"0x0d97dc33264bfc1c226207428a79b26757fb9dc3",creationBlock:29255937},H)},Y[999]={weth:"0x5555555555555555555555555555555555555555",routerConfigs:(K={},K[exports.UniversalRouterVersion.V1_2]={address:"0x7d3D28dee339C17452A4d6b53C71b2557278B530",creationBlock:9273064},K[exports.UniversalRouterVersion.V2_0]={address:"0x7d3D28dee339C17452A4d6b53C71b2557278B530",creationBlock:9273064},K)},Y),ee=function(e,t){if(!(t in J))throw new Error("Universal Router not deployed on chain "+t);return J[t].routerConfigs[e].address},te=function(e){if(!(e in J))throw new Error("Universal Router not deployed on chain "+e);if("0x0000000000000000000000000000000000000000"==J[e].weth)throw new Error("Chain "+e+" does not have WETH");return J[e].weth},re=p.BigNumber.from(2).pow(255),oe="0x0000000000000000000000000000000000000000",ne="0x0000000000000000000000000000000000000001",ae="0x0000000000000000000000000000000000000002";function ie(e){return e.isNative?oe:e.wrapped.address}var se=(($={})[m.ChainId.HYPER_MAINNET]=new m.Token(999,"0x9e1148bC3665a9f7C35F313d89c0432c34928AEf",18,"fwWHYPE","Few Wrapped Wrapped Hyper"),$[m.ChainId.MAINNET]=new m.Token(1,"0xa250CC729Bb3323e7933022a67B52200fE354767",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.BASE]=new m.Token(8453,"0xd38e4149df30AfFFEE13d771f3Ec9277c72333E4",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.ARBITRUM_ONE]=new m.Token(42161,"0x76CDff74222533Efa4BAa713BC3d14df81A460F7",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.ARBITRUM_SEPOLIA]=new m.Token(421614,"0x1fc632A9A9c99ae7C406f8565cd709b52BA0ed47",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.UNICHAIN]=new m.Token(130,"0x05e6c1B4Da05c41c86c35Ce42a8a222C1a450167",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.UNICHAIN_SEPOLIA]=new m.Token(1301,"0x1fc632A9A9c99ae7C406f8565cd709b52BA0ed47",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.GOERLI]=new m.Token(5,"0x6b7e07C37a157d01D71012c36644907Ab5a7694e",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.BLAST]=new m.Token(81457,"0x66714DB8F3397c767d0A602458B5b4E3C0FE7dd1",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.SEPOLIA]=new m.Token(11155111,"0x98b902eF4f9fEB2F6982ceEB4E98761294854D61",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.BLAST_SEPOLIA]=new m.Token(m.ChainId.BLAST_SEPOLIA,"0x798dE0520497E28E8eBfF0DF1d791c2E942eA881",18,"fwWETH","Few Wrapped Wrapped Ether"),$[m.ChainId.STORY_ODYSSEY]=new m.Token(m.ChainId.STORY_ODYSSEY,"0xA67013F71AF4f21563BAf8C1d156F1Dc7ab681C6",18,"fwWIP","Few Wrapped Wrapped IP"),$[m.ChainId.STORY_MAINNET]=new m.Token(m.ChainId.STORY_MAINNET,"0x088dE218b725975E6285995C25Ce3706BAe0f4Ec",18,"fwWIP","Few Wrapped Wrapped IP"),$[m.ChainId.BNB]=new m.Token(56,"0x7f0172b75d3823D8aF04feE3A3f6a14aBD68EFE1",18,"fwWBNB","Few Wrapped Wrapped BNB"),$),pe=new m.Percent(50,100),de=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,[ae,this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]):this.inputRequiresUnwrap&&(e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[this.trade.inputAmount.currency.address,ae,this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.UNWRAP_WETH,[ae,0])),this.options.recipient=null!=(r=this.options.recipient)?r:ne;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=f(this.trade.swaps);!(n=i()).done;){var s=n.value;switch(s.route.protocol){case A.Protocol.FEWV2:ue(e,s,this.trade.tradeType,this.options);break;case A.Protocol.V2:me(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case A.Protocol.V3:ce(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case A.Protocol.V4:Te(this.trade.swaps,e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case A.Protocol.MIXED:le(this.trade.swaps,e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;default:throw new Error("UNSUPPORTED_TRADE_PROTOCOL")}}var u=p.BigNumber.from(this.trade.minimumAmountOut(this.options.slippageTolerance).quotient.toString());if(a){var c=this.trade.swaps[0].route.pools,T=ie(Q(this.trade.outputAmount.currency,c[c.length-1]));if(this.options.fee){var l=d.toHex(this.options.fee.fee.multiply(1e4).quotient);e.addCommand(exports.CommandType.PAY_PORTION,[T,this.options.fee.recipient,l]),this.trade.tradeType===m.TradeType.EXACT_OUTPUT&&(u=u.sub(u.mul(l).div(1e4)))}if(this.options.flatFee){var C=this.options.flatFee.amount;if(u.lt(C))throw new Error("Flat fee amount greater than minimumAmountOut");e.addCommand(exports.CommandType.TRANSFER,[T,this.options.flatFee.recipient,C]),this.trade.tradeType===m.TradeType.EXACT_OUTPUT&&(u=u.sub(C))}this.outputRequiresUnwrap?(e.addCommand(exports.CommandType.UNWRAP_WETH,[this.options.recipient,"0"]),e.addCommand(exports.CommandType.SWEEP,[ie(this.trade.outputAmount.currency),ne,"0"])):this.outputRequiresWrap?e.addCommand(exports.CommandType.WRAP_ETH,[this.options.recipient,re]):e.addCommand(exports.CommandType.SWEEP,this.hasFewV2?[ie(this.trade.outputAmount.currency),this.options.recipient,"0"]:[ie(this.trade.outputAmount.currency),this.options.recipient,u])}var y=se[this.trade.inputAmount.currency.wrapped.chainId];(this.trade.tradeType===m.TradeType.EXACT_OUTPUT||this.trade.priceImpact.greaterThan(pe))&&(this.inputRequiresWrap?(e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[y.address,ae,"0"]),e.addCommand(exports.CommandType.UNWRAP_WETH,[this.options.recipient,0]),e.addCommand(exports.CommandType.SWEEP,[oe,this.options.recipient,0])):this.inputRequiresUnwrap?e.addCommand(exports.CommandType.WRAP_ETH,[this.options.recipient,re]):this.trade.inputAmount.currency.isNative&&(e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[y.address,ae,"0"]),e.addCommand(exports.CommandType.UNWRAP_WETH,[ne,0]),e.addCommand(exports.CommandType.SWEEP,[oe,this.options.recipient,0])),e.addCommand(exports.CommandType.SWEEP,[this.trade.inputAmount.currency.wrapped.address,ne,"0"]),e.addCommand(exports.CommandType.SWEEP,[this.trade.outputAmount.currency.wrapped.address,ne,"0"])),this.options.safeMode&&e.addCommand(exports.CommandType.SWEEP,[oe,this.options.recipient,0])},t=e,(r=[{key:"isAllV4",get:function(){for(var e,t=!0,r=f(this.trade.swaps);!(e=r()).done;)t=t&&e.value.route.protocol==A.Protocol.V4;return t}},{key:"hasFewV2",get:function(){for(var e,t=!1,r=f(this.trade.swaps);!(e=r()).done;)t=t||e.value.route.protocol==A.Protocol.FEWV2;return t}},{key:"inputRequiresWrap",get:function(){return this.trade.swaps[0].route.pools[0]instanceof u.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 u.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 u.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 u.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,y(o.key),o)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),t}();function ue(e,t,r,o,n,a){var i=t.route,s=t.outputAmount,p=new T.Trade(i,r==m.TradeType.EXACT_INPUT?t.inputAmount:s,r),d=i.path[0],u=i.path[i.path.length-1];p.inputAmount.currency.isNative||e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[p.inputAmount.currency.address,ae,p.maximumAmountIn(o.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.WRAP_FEW_TOKEN,[p.inputAmount.currency.wrapped.address,ae,p.inputAmount.quotient.toString()]),r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.FEW_V2_SWAP_EXACT_IN,[ae,p.maximumAmountIn(o.slippageTolerance).quotient.toString(),0,i.path.map((function(e){return e.wrapped.address})),!1]):r==m.TradeType.EXACT_OUTPUT&&e.addCommand(exports.CommandType.FEW_V2_SWAP_EXACT_OUT,[ae,p.minimumAmountOut(o.slippageTolerance).quotient.toString(),p.maximumAmountIn(o.slippageTolerance).quotient.toString(),i.path.map((function(e){return e.wrapped.address})),!1]),console.log("before fewOutputToken 375",p.outputAmount.currency.wrapped,p.outputAmount.currency.chainId);var c=T.getFewTokenFromOriginalToken(p.outputAmount.currency.wrapped,p.outputAmount.currency.chainId);console.log("after fewOutputToken380",c,p.outputAmount.currency.wrapped,p.outputAmount.currency.chainId),s.currency.isNative?e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[se[p.inputAmount.currency.wrapped.chainId].address,ae,p.minimumAmountOut(o.slippageTolerance).quotient.toString()]):T.isFewToken(i.pathInput.wrapped)&&T.isFewToken(i.pathOutput.wrapped)&&(e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[c.address,ne,p.minimumAmountOut(o.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[d.wrapped.address,ne,"0"]),e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[u.wrapped.address,ne,"0"]))}function me(e,t,r,o,n,a){var i=t.route,s=t.outputAmount,p=new l.Trade(i,r==m.TradeType.EXACT_INPUT?t.inputAmount:s,r),d=i.path[0],u=i.path[i.path.length-1];if(T.isFewToken(i.pathInput.wrapped)&&T.isFewToken(i.pathOutput.wrapped)){p.inputAmount.currency.isNative||e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[p.inputAmount.currency.address,ae,p.maximumAmountIn(o.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.WRAP_FEW_TOKEN,[p.inputAmount.currency.wrapped.address,ae,p.inputAmount.currency.isNative?re:p.inputAmount.quotient.toString()]),n=!1,a=!0,r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.V2_SWAP_EXACT_IN,[a?ae:o.recipient,p.maximumAmountIn(o.slippageTolerance).quotient.toString(),a?0:p.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?ae:o.recipient,p.minimumAmountOut(o.slippageTolerance).quotient.toString(),p.maximumAmountIn(o.slippageTolerance).quotient.toString(),i.path.map((function(e){return e.wrapped.address})),n]),console.log("before fewOutputToken 460",p.outputAmount.currency.wrapped,p.outputAmount.currency.chainId);var c=T.getFewTokenFromOriginalToken(p.outputAmount.currency.wrapped,p.outputAmount.currency.chainId);console.log("after fewOutputToken465",c,p.outputAmount.currency.wrapped,p.outputAmount.currency.chainId),T.isFewToken(d.wrapped)&&T.isFewToken(u.wrapped)&&(e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,s.currency.isNative?[c.address,ae,p.minimumAmountOut(o.slippageTolerance).quotient.toString()]:[c.address,ne,p.minimumAmountOut(o.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[d.wrapped.address,ne,"0"]),e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[u.wrapped.address,ne,"0"]))}else r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.V2_SWAP_EXACT_IN,[a?ae:o.recipient,p.maximumAmountIn(o.slippageTolerance).quotient.toString(),a?0:p.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?ae:o.recipient,p.minimumAmountOut(o.slippageTolerance).quotient.toString(),p.maximumAmountIn(o.slippageTolerance).quotient.toString(),i.path.map((function(e){return e.wrapped.address})),n])}function ce(e,t,r,o,n,a){var i=t.route,s=t.outputAmount,p=d.Trade.createUncheckedTrade({route:i,inputAmount:t.inputAmount,outputAmount:s,tradeType:r}),u=i.path[0],c=i.path[i.path.length-1];if(T.isFewToken(i.pathInput.wrapped)&&T.isFewToken(i.pathOutput.wrapped)){p.inputAmount.currency.isNative||e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[p.inputAmount.currency.address,ae,p.maximumAmountIn(o.slippageTolerance).quotient.toString()]),e.addCommand(exports.CommandType.WRAP_FEW_TOKEN,[p.inputAmount.currency.wrapped.address,ae,p.inputAmount.currency.isNative?re:p.inputAmount.quotient.toString()]),n=!1,a=!0;var l=T.getFewTokenFromOriginalToken(i.input.wrapped,i.input.chainId),A=T.getFewTokenFromOriginalToken(i.output.wrapped,i.output.chainId),C=new d.Route(i.pools,l,A),f=d.encodeRouteToPath(C,p.tradeType===m.TradeType.EXACT_OUTPUT);r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.V3_SWAP_EXACT_IN,[a?ae:o.recipient,p.maximumAmountIn(o.slippageTolerance).quotient.toString(),a?0:p.minimumAmountOut(o.slippageTolerance).quotient.toString(),f,n]):r==m.TradeType.EXACT_OUTPUT&&e.addCommand(exports.CommandType.V3_SWAP_EXACT_OUT,[a?ae:o.recipient,p.minimumAmountOut(o.slippageTolerance).quotient.toString(),p.maximumAmountIn(o.slippageTolerance).quotient.toString(),f,n]);var y=T.getFewTokenFromOriginalToken(p.inputAmount.currency.wrapped,p.inputAmount.currency.chainId),E=T.getFewTokenFromOriginalToken(p.outputAmount.currency.wrapped,p.outputAmount.currency.chainId);T.isFewToken(u.wrapped)&&T.isFewToken(c.wrapped)&&(s.currency.isNative?e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[E.address,ae,"0"]):p.inputAmount.currency.isNative?(e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[y.address,ae,"0"]),e.addCommand(exports.CommandType.UNWRAP_WETH,[ne,"0"])):e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[E.address,ne,"0"]),e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[u.wrapped.address,ne,"0"]),e.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[c.wrapped.address,ne,"0"]))}else{var _=d.encodeRouteToPath(i,p.tradeType===m.TradeType.EXACT_OUTPUT);r==m.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.V3_SWAP_EXACT_IN,[a?ae:o.recipient,p.maximumAmountIn(o.slippageTolerance).quotient.toString(),a?0:p.minimumAmountOut(o.slippageTolerance).quotient.toString(),_,n]):r==m.TradeType.EXACT_OUTPUT&&e.addCommand(exports.CommandType.V3_SWAP_EXACT_OUT,[a?ae:o.recipient,p.minimumAmountOut(o.slippageTolerance).quotient.toString(),p.maximumAmountIn(o.slippageTolerance).quotient.toString(),_,n])}}function Te(e,t,r,o,n,a,i){var s=r.inputAmount,p=r.outputAmount,d=r.route,c=e[0],l=e[e.length-1],C=d.path[0],f=d.path[d.path.length-1],y=d.pools.map((function(e){return e})),E=new u.Route(y,s.currency,p.currency);if(T.isFewToken(d.pools[0].token0.wrapped)&&T.isFewToken(d.pools[0].token1.wrapped)){var _;console.log("isFewToken v4 633",T.isFewToken(d.pools[0].token0.wrapped),T.isFewToken(d.pools[0].token1.wrapped));var x=T.getFewTokenFromOriginalToken(s.currency.wrapped,s.currency.chainId),h=T.getFewTokenFromOriginalToken(p.currency.wrapped,p.currency.chainId),P=new u.Route(y,x,h),R=u.Trade.createUncheckedTrade({route:P,inputAmount:s,outputAmount:p,tradeType:o});R.inputAmount.currency.isNative||t.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[R.inputAmount.currency.address,ae,R.maximumAmountIn(n.slippageTolerance).quotient.toString()]),R.inputAmount.currency.isNative&&t.addCommand(exports.CommandType.WRAP_ETH,[ae,R.inputAmount.quotient.toString()]),t.addCommand(exports.CommandType.WRAP_FEW_TOKEN,[R.inputAmount.currency.wrapped.address,ae,R.inputAmount.currency.isNative?re:R.inputAmount.quotient.toString()]),a=!1;var w=(i=!0)&&o==m.TradeType.EXACT_INPUT?void 0:n.slippageTolerance,v=new u.V4Planner;v.addTrade(R,w),v.addSettle(R.route.pathInput,a),v.addTake(R.route.pathOutput,i?ae:null!=(_=n.recipient)?_:ne),t.addCommand(exports.CommandType.V4_SWAP,[v.finalize()]);var b=T.getFewTokenFromOriginalToken(R.outputAmount.currency.wrapped,R.outputAmount.currency.chainId);T.isFewToken(C.wrapped)&&T.isFewToken(f.wrapped)&&(p.currency.isNative?(t.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[b.address,ae,R.minimumAmountOut(n.slippageTolerance).quotient.toString()]),t.addCommand(exports.CommandType.UNWRAP_WETH,[ne,0])):t.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[b.address,ne,R.minimumAmountOut(n.slippageTolerance).quotient.toString()]),t.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[C.wrapped.address,ne,"0"]),t.addCommand(exports.CommandType.UNWRAP_FEW_TOKEN,[f.wrapped.address,ne,"0"]))}else{var I;console.log("isFewToken v4 701",T.isFewToken(d.pools[0].token0.wrapped),T.isFewToken(d.pools[0].token1.wrapped));var g=u.Trade.createUncheckedTrade({route:E,inputAmount:s,outputAmount:p,tradeType:o}),N=i&&o==m.TradeType.EXACT_INPUT?void 0:n.slippageTolerance,V=new u.V4Planner;V.addTrade(g,N),V.addSettle(g.route.pathInput,a),V.addTake(g.route.pathOutput,i?ae:null!=(I=n.recipient)?I:ne),c.route.protocol!==A.Protocol.V4&&l.route.protocol===A.Protocol.V4&&g.route.pathInput.isNative&&t.addCommand(exports.CommandType.UNWRAP_WETH,[ae,0]),t.addCommand(exports.CommandType.V4_SWAP,[V.finalize()])}}function le(e,t,r,o,n,a,i){var s,p=r.route,m=r.inputAmount,c=r.outputAmount,T=i?ae:null!=(s=n.recipient)?s:ne;if(1===p.pools.length){if(p.pools[0]instanceof u.Pool)return Te(e,t,r,o,n,a,i);if(p.pools[0]instanceof d.Pool)return ce(t,r,o,n,a,i);if(p.pools[0]instanceof l.Pair)return me(t,r,o,n,a,i);throw new Error("Invalid route type")}for(var C=A.MixedRouteTrade.createUncheckedTrade({route:p,inputAmount:m,outputAmount:c,tradeType:o}),f=C.maximumAmountIn(n.slippageTolerance,m).quotient.toString(),y=i?0:C.minimumAmountOut(n.slippageTolerance,c).quotient.toString(),E=A.partitionMixedRouteByProtocol(p),_=function(e){return e===E.length-1},x=p.pathInput,h=0;h<E.length;h++){var P=E[h],R=P[0],w=A.getOutputOfPools(P,x),v=new A.MixedRoute(new A.MixedRouteSDK([].concat(P),x,w)),b=void 0,I=void 0;if(_(h))b=w,I=T;else{var g=E[h+1][0];b=Q(w,g),I=g instanceof l.Pair&&w.equals(b)?g.liquidityToken.address:ae}if(R instanceof u.Pool){var N=new u.V4Planner,V=new u.Route(P,v.input,v.output);N.addSettle(x,a&&0===h,0==h?f:re),N.addAction(u.Actions.SWAP_EXACT_IN,[{currencyIn:x.isNative?oe:x.address,path:u.encodeRouteToPath(V),amountIn:0,amountOutMinimum:_(h)?y:0}]),N.addTake(w,I),t.addCommand(exports.CommandType.V4_SWAP,[N.finalize()])}else if(R instanceof d.Pool)t.addCommand(exports.CommandType.V3_SWAP_EXACT_IN,[I,0==h?f:re,_(h)?y:0,A.encodeMixedRouteToPath(v),a&&0===h]);else{if(!(R instanceof l.Pair))throw new Error("Unexpected Pool Type");t.addCommand(exports.CommandType.V2_SWAP_EXACT_IN,[I,0===h?f:re,_(h)?y:0,v.path.map((function(e){return e.wrapped.address})),a&&0===h])}_(h)||(w.isNative&&!b.isNative?t.addCommand(exports.CommandType.WRAP_ETH,[ae,re]):!w.isNative&&b.isNative&&t.addCommand(exports.CommandType.UNWRAP_WETH,[ae,0])),x=b}}function Ae(e,t){var r=t.signature,o=p.ethers.utils.arrayify(t.signature).length;65!==o&&64!==o||(r=p.ethers.utils.joinSignature(p.ethers.utils.splitSignature(t.signature))),e.addCommand(exports.CommandType.PERMIT2_PERMIT,[t,r])}var Ce=function(){function e(){}return e.swapCallParameters=function(t,r){var o=new z,n=new de(t,r),i=n.trade.inputAmount.currency;i.isNative&&r.inputTokenPermit&&a(!1),r.inputTokenPermit&&Ae(o,r.inputTokenPermit);var s=p.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?p.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 z;if(t.v4AddLiquidityOptions.createPool){var T=u.Pool.getPoolKey(o.currency0,o.currency1,o.fee,o.tickSpacing,o.hooks);c.addCommand(exports.CommandType.V4_INITIALIZE_POOL,[T,o.sqrtRatioX96.toString()]),delete t.v4AddLiquidityOptions.createPool}t.v3RemoveLiquidityOptions.permit&&(ee(exports.UniversalRouterVersion.V2_0,t.inputPosition.pool.chainId)!=t.v3RemoveLiquidityOptions.permit.spender&&a(!1),function(e,t,r){var o=d.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 l,A=d.NonfungiblePositionManager.removeCallParameters(t.inputPosition,t.v3RemoveLiquidityOptions),C=f(d.Multicall.decodeMulticall(A.calldata));!(l=C()).done;){var y=l.value,E=y.slice(0,10);E!=d.NonfungiblePositionManager.INTERFACE.getSighash("collect")&&E!=d.NonfungiblePositionManager.INTERFACE.getSighash("decreaseLiquidity")&&E!=d.NonfungiblePositionManager.INTERFACE.getSighash("burn")&&a(!1),c.addCommand(exports.CommandType.V3_POSITION_MANAGER_CALL,[y])}var _=u.V4PositionManager.addCallParameters(t.outputPosition,t.v4AddLiquidityOptions);return _.calldata.slice(0,10)!=u.V4PositionManager.INTERFACE.getSighash("modifyLiquidities")&&a(!1),c.addCommand(exports.CommandType.V4_POSITION_MANAGER_CALL,[_.calldata]),e.encodePlan(c,p.BigNumber.from(0),{deadline:p.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}();Ce.INTERFACE=new s.Interface(i.abi);var fe,ye=function(){function e(e,t,r){this.tradeType=exports.RouterActionType.UnwrapWETH,this.wethAddress=te(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&&Ae(e,t.permit2Permit),t.permit2TransferFrom&&e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[t.permit2TransferFrom.token,t.permit2TransferFrom.recipient?t.permit2TransferFrom.recipient:ae,t.permit2TransferFrom.amount])}(e,{permit2Permit:this.permit2Data,permit2TransferFrom:{token:this.wethAddress,amount:this.amount.toString()}}),e.addCommand(exports.CommandType.UNWRAP_WETH,[ae,this.amount])},e}();(fe=exports.PoolType||(exports.PoolType={})).V2Pool="v2-pool",fe.V3Pool="v3-pool",fe.V4Pool="v4-pool";var Ee=function(e){return e.toLowerCase()===oe.toLowerCase()||e.toLowerCase()==="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee".toLowerCase()},_e=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 p=e.toCurrency(Ee(o),i),c=e.toCurrency(Ee(n),s),T=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(p,r),a=m.CurrencyAmount.fromRawAmount(c,o),i=e.isVersionedRoute(exports.PoolType.V2Pool,t),s=e.isVersionedRoute(exports.PoolType.V3Pool,t),T=e.isVersionedRoute(exports.PoolType.V4Pool,t);return{routev4:T?new u.Route(t.map(e.toV4Pool),p,c):null,routev3:s?new d.Route(t.map(e.toV3Pool),p,c):null,routev2:i?new l.Route(t.map(e.toPair),p,c):null,mixedRoute:T||s||i?null:new A.MixedRouteSDK(t.map(e.toPoolOrPair),p,c),inputAmount:n,outputAmount:a}}));return new A.Trade({v2Routes:T.filter((function(e){return e.routev2})).map((function(e){return{routev2:e.routev2,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),v3Routes:T.filter((function(e){return e.routev3})).map((function(e){return{routev3:e.routev3,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),v4Routes:T.filter((function(e){return e.routev4})).map((function(e){return{routev4:e.routev4,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),mixedRoutes:T.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?p.BigNumber.from(r):void 0,o?p.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 d.Pool(e.toToken(t.tokenIn),e.toToken(i),parseInt(r),o,n,parseInt(a))},e.toV4Pool=function(t){var r=e.toCurrency(Ee(t.tokenIn.address),t.tokenIn),o=e.toCurrency(Ee(t.tokenOut.address),t.tokenOut);return new u.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}();_e.toPoolOrPair=function(e){switch(e.type){case exports.PoolType.V4Pool:return _e.toV4Pool(e);case exports.PoolType.V3Pool:return _e.toV3Pool(e);case exports.PoolType.V2Pool:return _e.toPair(e);default:throw new Error("Invalid pool type")}},_e.toPair=function(e){var t=e.reserve0,r=e.reserve1;return new l.Pair(m.CurrencyAmount.fromRawAmount(_e.toToken(t.token),t.quotient),m.CurrencyAmount.fromRawAmount(_e.toToken(r.token),r.quotient))};var xe=function(){function e(){}return e.parseCalldata=function(t){var r=new he(Z),o=e.INTERFACE.parseTransaction({data:t}).args;return r.parse(o.commands,o.inputs)},e}();xe.INTERFACE=new s.Interface(i.abi);var he=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=u.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,d=p.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:Pe(e)};case exports.Subparser.V3PathExactOut:return{name:s[t].name,value:Re(e)};default:return{name:s[t].name,value:e}}}));return{commandName:exports.CommandType[e],commandType:e,params:d}}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 Pe(e){for(var t=e.replace("0x",""),r=p.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=p.ethers.utils.getAddress(a.substring(6,46));n.push({tokenIn:r,tokenOut:s,fee:i}),r=s,o+=46}return n}function Re(e){for(var t=e.replace("0x",""),r=p.ethers.utils.getAddress(t.substring(t.length-40)),o=t.length-86,n=[];o>=0;){var a=t.substring(o,o+46),i=p.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=Z,exports.CommandParser=xe,exports.FEW_WRAPPED_NATIVE_CURRENCY=se,exports.GenericCommandParser=he,exports.ROUTER_AS_RECIPIENT=ae,exports.RoutePlanner=z,exports.RouterTradeAdapter=_e,exports.SwapRouter=Ce,exports.UNIVERSAL_ROUTER_ADDRESS=ee,exports.UNIVERSAL_ROUTER_CREATION_BLOCK=function(e,t){if(!(t in J))throw new Error("Universal Router not deployed on chain "+t);return J[t].routerConfigs[e].creationBlock},exports.UniswapTrade=de,exports.UnwrapWETH=ye,exports.WETH_ADDRESS=te,exports.isNativeCurrency=Ee;
2
2
  //# sourceMappingURL=universal-router-sdk.cjs.production.min.js.map