UNPKG

astra-universal-router-sdk

Version:

sdk for integrating with the Astra Router contracts

3 lines (2 loc) 20.7 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t,r,n,o,a=(e=require("tiny-invariant"))&&"object"==typeof e&&"default"in e?e.default:e,i=require("@airdao/astra-universal-router/artifacts/contracts/UniversalRouter.sol/UniversalRouter.json"),s=require("@ethersproject/abi"),p=require("ethers"),u=require("ethers/lib/utils"),m=require("astra-classic-sdk"),d=require("astra-cl-sdk-dev"),c=require("astra-router-sdk"),T=require("astra-sdk-core");function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function l(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=typeof n)return n;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.CL_SWAP_EXACT_IN=0]="CL_SWAP_EXACT_IN",r[r.CL_SWAP_EXACT_OUT=1]="CL_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.CLASSIC_SWAP_EXACT_IN=8]="CLASSIC_SWAP_EXACT_IN",r[r.CLASSIC_SWAP_EXACT_OUT=9]="CLASSIC_SWAP_EXACT_OUT",r[r.PERMIT2_PERMIT=10]="PERMIT2_PERMIT",r[r.WRAP_AMB=11]="WRAP_AMB",r[r.UNWRAP_SAMB=12]="UNWRAP_SAMB",r[r.PERMIT2_TRANSFER_FROM_BATCH=13]="PERMIT2_TRANSFER_FROM_BATCH",r[r.BALANCE_CHECK_ERC20=14]="BALANCE_CHECK_ERC20",r[r.CL_POSITION_MANAGER_PERMIT=17]="CL_POSITION_MANAGER_PERMIT",r[r.CL_POSITION_MANAGER_CALL=18]="CL_POSITION_MANAGER_CALL",r[r.EXECUTE_SUB_PLAN=33]="EXECUTE_SUB_PLAN",(n=exports.Subparser||(exports.Subparser={}))[n.CLPathExactIn=0]="CLPathExactIn",n[n.CLPathExactOut=1]="CLPathExactOut",(o=exports.Parser||(exports.Parser={}))[o.Abi=0]="Abi",o[o.CLActions=1]="CLActions";var C,y,f,P,h,_,x=new Set([exports.CommandType.EXECUTE_SUB_PLAN]),E=((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.CL_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.CLPathExactIn,type:"bytes"},{name:"payerIsUser",type:"bool"}]},t[exports.CommandType.CL_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.CLPathExactOut,type:"bytes"},{name:"payerIsUser",type:"bool"}]},t[exports.CommandType.CLASSIC_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.CLASSIC_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.WRAP_AMB]={parser:exports.Parser.Abi,params:[{name:"recipient",type:"address"},{name:"amount",type:"uint256"}]},t[exports.CommandType.UNWRAP_SAMB]={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.CL_POSITION_MANAGER_PERMIT]={parser:exports.Parser.CLActions},t[exports.CommandType.CL_POSITION_MANAGER_CALL]={parser:exports.Parser.CLActions},t),R=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 n=function(e,t){var r=E[e];switch(r.parser){case exports.Parser.Abi:return{type:e,encodedInput:u.defaultAbiCoder.encode(r.params.map((function(e){return e.type})),t)};case exports.Parser.CLActions:return{type:e,encodedInput:t[0]}}}(e,t);if(this.inputs.push(n.encodedInput),r){if(!x.has(n.type))throw new Error("command type: "+n.type+" cannot be allowed to revert");n.type=128|n.type}return this.commands=this.commands.concat(n.type.toString(16).padStart(2,"0")),this},e}();function b(e,t){if(t.involvesToken(e))return e;if(t.involvesToken(e.wrapped))return e.wrapped;throw new Error("Expected currency "+e.symbol+" to be either "+t.token0.symbol+" or "+t.token1.symbol)}(C=exports.RouterActionType||(exports.RouterActionType={})).AstraTrade="AstraTrade",C.UnwrapSAMB="UnwrapSAMB",(_=exports.UniversalRouterVersion||(exports.UniversalRouterVersion={})).V1_2="1.2",_.V2_0="2.0";var I=((h={})[16718]={samb:"0x2b2d892C3fe2b4113dd7aC0D2c1882AF202FB28F",routerConfigs:(y={},y[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17143817},y[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:17143817},y)},h[30746]={samb:"0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6",routerConfigs:(f={},f[exports.UniversalRouterVersion.V1_2]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8940568},f[exports.UniversalRouterVersion.V2_0]={address:"0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD",creationBlock:8940568},f)},h[22040]={samb:"0x2Cf845b49e1c4E5D657fbBF36E97B7B5B7B7b74b",routerConfigs:(P={},P[exports.UniversalRouterVersion.V1_2]={address:"0xb0d6892CbC3f2dC5830cd8758FF3c16Fef5e847A",creationBlock:3543575},P[exports.UniversalRouterVersion.V2_0]={address:"0xb0d6892CbC3f2dC5830cd8758FF3c16Fef5e847A",creationBlock:6898582},P)},h),v=function(e){if(!(e in I))throw new Error("Universal Router not deployed on chain "+e);if("0x0000000000000000000000000000000000000000"==I[e].samb)throw new Error("Chain "+e+" does not have SAMB");return I[e].samb},S=p.BigNumber.from(2).pow(255),w="0x0000000000000000000000000000000000000000",g="0x0000000000000000000000000000000000000002",N=new T.Percent(50,100),O=function(){function e(e,t){if(this.trade=e,this.options=t,this.tradeType=exports.RouterActionType.AstraTrade,t.fee&&t.flatFee)throw new Error("Only one fee option permitted");this.payerIsUser=!this.inputRequiresWrap&&!this.options.useRouterBalance}var t,r;return e.prototype.encode=function(e,t){var r;this.inputRequiresWrap&&e.addCommand(exports.CommandType.WRAP_AMB,[g,this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]),this.options.recipient=null!=(r=this.options.recipient)?r:"0x0000000000000000000000000000000000000001";for(var n,o,a=this.trade.tradeType===T.TradeType.EXACT_INPUT&&this.trade.routes.length>2||this.outputRequiresUnwrap||!!(n=this.options).fee||!!n.flatFee,i=function(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))){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(this.trade.swaps);!(o=i()).done;){var s=o.value;switch(s.route.protocol){case c.Protocol.Classic:U(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case c.Protocol.CL:M(e,s,this.trade.tradeType,this.options,this.payerIsUser,a);break;case c.Protocol.MIXED:k(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){if(this.options.fee){var m=d.toHex(this.options.fee.fee.multiply(1e4).quotient);e.addCommand(exports.CommandType.PAY_PORTION,[this.trade.outputAmount.currency.wrapped.address,this.options.fee.recipient,m]),this.trade.tradeType===T.TradeType.EXACT_OUTPUT&&(u=u.sub(u.mul(m).div(1e4)))}if(this.options.flatFee){var l=this.options.flatFee.amount;if(u.lt(l))throw new Error("Flat fee amount greater than minimumAmountOut");e.addCommand(exports.CommandType.TRANSFER,[this.trade.outputAmount.currency.wrapped.address,this.options.flatFee.recipient,l]),this.trade.tradeType===T.TradeType.EXACT_OUTPUT&&(u=u.sub(l))}this.outputRequiresUnwrap?e.addCommand(exports.CommandType.UNWRAP_SAMB,[this.options.recipient,u]):e.addCommand(exports.CommandType.SWEEP,[this.trade.outputAmount.currency.wrapped.address,this.options.recipient,u])}this.inputRequiresWrap&&(this.trade.tradeType===T.TradeType.EXACT_OUTPUT||this.trade.priceImpact.greaterThan(N))&&e.addCommand(exports.CommandType.UNWRAP_SAMB,[this.options.recipient,0]),this.options.safeMode&&e.addCommand(exports.CommandType.SWEEP,[w,this.options.recipient,0])},t=e,(r=[{key:"inputRequiresWrap",get:function(){return this.trade.inputAmount.currency.isNative&&!this.trade.swaps[0].route.input.isNative}},{key:"outputRequiresUnwrap",get:function(){return this.trade.outputAmount.currency.isNative&&!this.trade.swaps[0].route.output.isNative}}])&&function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,l(n.key),n)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),t}();function U(e,t,r,n,o,a){var i=t.route,s=new m.Trade(i,r==T.TradeType.EXACT_INPUT?t.inputAmount:t.outputAmount,r);r==T.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.CLASSIC_SWAP_EXACT_IN,[a?g:n.recipient,s.maximumAmountIn(n.slippageTolerance).quotient.toString(),a?0:s.minimumAmountOut(n.slippageTolerance).quotient.toString(),i.path.map((function(e){return e.wrapped.address})),o]):r==T.TradeType.EXACT_OUTPUT&&e.addCommand(exports.CommandType.CLASSIC_SWAP_EXACT_OUT,[a?g:n.recipient,s.minimumAmountOut(n.slippageTolerance).quotient.toString(),s.maximumAmountIn(n.slippageTolerance).quotient.toString(),i.path.map((function(e){return e.wrapped.address})),o])}function M(e,t,r,n,o,a){var i=t.route,s=d.Trade.createUncheckedTrade({route:i,inputAmount:t.inputAmount,outputAmount:t.outputAmount,tradeType:r}),p=d.encodeRouteToPath(i,s.tradeType===T.TradeType.EXACT_OUTPUT);r==T.TradeType.EXACT_INPUT?e.addCommand(exports.CommandType.CL_SWAP_EXACT_IN,[a?g:n.recipient,s.maximumAmountIn(n.slippageTolerance).quotient.toString(),a?0:s.minimumAmountOut(n.slippageTolerance).quotient.toString(),p,o]):r==T.TradeType.EXACT_OUTPUT&&e.addCommand(exports.CommandType.CL_SWAP_EXACT_OUT,[a?g:n.recipient,s.minimumAmountOut(n.slippageTolerance).quotient.toString(),s.maximumAmountIn(n.slippageTolerance).quotient.toString(),p,o])}function k(e,t,r,n,o,a){var i,s=t.route,p=t.inputAmount,u=t.outputAmount,T=a?g:null!=(i=n.recipient)?i:"0x0000000000000000000000000000000000000001";if(1===s.pools.length){if(s.pools[0]instanceof d.Pool)return M(e,t,r,n,o,a);if(s.pools[0]instanceof m.Pair)return U(e,t,r,n,o,a);throw new Error("Invalid route type")}for(var A=c.MixedRouteTrade.createUncheckedTrade({route:s,inputAmount:p,outputAmount:u,tradeType:r}),l=A.maximumAmountIn(n.slippageTolerance,p).quotient.toString(),C=a?0:A.minimumAmountOut(n.slippageTolerance,u).quotient.toString(),y=c.partitionMixedRouteByProtocol(s),f=function(e){return e===y.length-1},P=s.pathInput,h=0;h<y.length;h++){var _=y[h],x=_[0],E=c.getOutputOfPools(_,P),R=new c.MixedRoute(new c.MixedRouteSDK([].concat(_),P,E)),I=void 0,v=void 0;if(f(h))I=E,v=T;else{var w=y[h+1][0];I=b(E,w),v=w instanceof m.Pair&&E.equals(I)?w.liquidityToken.address:g}x instanceof d.Pool?e.addCommand(exports.CommandType.CL_SWAP_EXACT_IN,[v,0==h?l:S,f(h)?C:0,c.encodeMixedRouteToPath(R),o&&0===h]):e.addCommand(exports.CommandType.CLASSIC_SWAP_EXACT_IN,[v,0===h?l:S,f(h)?C:0,R.path.map((function(e){return e.wrapped.address})),o&&0===h]),f(h)||(E.isNative&&!I.isNative?e.addCommand(exports.CommandType.WRAP_AMB,[g,S]):!E.isNative&&I.isNative&&e.addCommand(exports.CommandType.UNWRAP_SAMB,[g,0])),P=I}}function L(e,t){var r=t.signature,n=p.ethers.utils.arrayify(t.signature).length;65!==n&&64!==n||(r=p.ethers.utils.joinSignature(p.ethers.utils.splitSignature(t.signature))),e.addCommand(exports.CommandType.PERMIT2_PERMIT,[t,r])}var B=function(){function e(){}return e.swapCallParameters=function(t,r){var n=new R,o=new O(t,r),i=o.trade.inputAmount.currency;i.isNative&&r.inputTokenPermit&&a(!1),r.inputTokenPermit&&L(n,r.inputTokenPermit);var s=p.BigNumber.from(i.isNative?o.trade.maximumAmountIn(r.slippageTolerance).quotient.toString():0);return o.encode(n,{allowRevert:!1}),e.encodePlan(n,s,{deadline:r.deadlineOrPreviousBlockhash?p.BigNumber.from(r.deadlineOrPreviousBlockhash):void 0})},e.encodePlan=function(t,r,n){void 0===n&&(n={});var o=t.commands,a=t.inputs;return{calldata:e.INTERFACE.encodeFunctionData(n.deadline?"execute(bytes,bytes[],uint256)":"execute(bytes,bytes[])",n.deadline?[o,a,n.deadline]:[o,a]),value:r.toHexString()}},e}();B.INTERFACE=new s.Interface(i.abi);var F,W=function(){function e(e,t,r){this.tradeType=exports.RouterActionType.UnwrapSAMB,this.sambAddress=v(t),this.amount=e,r&&(r.details.token.toLowerCase()!==this.sambAddress.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&&L(e,t.permit2Permit),t.permit2TransferFrom&&e.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM,[t.permit2TransferFrom.token,t.permit2TransferFrom.recipient?t.permit2TransferFrom.recipient:g,t.permit2TransferFrom.amount])}(e,{permit2Permit:this.permit2Data,permit2TransferFrom:{token:this.sambAddress,amount:this.amount.toString()}}),e.addCommand(exports.CommandType.UNWRAP_SAMB,[g,this.amount])},e}();(F=exports.PoolType||(exports.PoolType={})).ClassicPool="classic-pool",F.CLPool="cl-pool";var q=function(e){return e.toLowerCase()===w.toLowerCase()||e.toLowerCase()==="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee".toLowerCase()},X=function(){function e(){}return e.fromClassicQuote=function(t){var r=t.route,n=t.tokenIn,o=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(q(n),i),u=e.toCurrency(q(o),s),A=r.map((function(t){var r=t[0].amountIn,n=t[t.length-1].amountOut;if(!r||!n)throw new Error("Expected both raw amountIn and raw amountOut to be present");var o=T.CurrencyAmount.fromRawAmount(p,r),a=T.CurrencyAmount.fromRawAmount(u,n),i=e.isVersionedRoute(exports.PoolType.ClassicPool,t),s=e.isVersionedRoute(exports.PoolType.CLPool,t);return{routecl:s?new d.Route(t.map(e.toPool),p,u):null,routeclassic:i?new m.Route(t.map(e.toPair),p,u):null,mixedRoute:s||i?null:new c.MixedRouteSDK(t.map(e.toPoolOrPair),p,u),inputAmount:o,outputAmount:a}}));return new c.Trade({classicRoutes:A.filter((function(e){return e.routeclassic})).map((function(e){return{routeclassic:e.routeclassic,inputAmount:e.inputAmount,outputAmount:e.outputAmount}})),clRoutes:A.filter((function(e){return e.routecl})).map((function(e){return{routecl:e.routecl,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?T.Amber.onChain(t.chainId):this.toToken(t)},e.toToken=function(e){var t=e.symbol,r=e.buyFeeBps,n=e.sellFeeBps;return new T.Token(e.chainId,e.address,parseInt(e.decimals.toString()),t,void 0,!1,r?p.BigNumber.from(r):void 0,n?p.BigNumber.from(n):void 0)},e.toPool=function(t){var r=t.fee,n=t.sqrtRatioX96,o=t.liquidity,a=t.tickCurrent,i=t.tokenOut;return new d.Pool(e.toToken(t.tokenIn),e.toToken(i),parseInt(r),n,o,parseInt(a))},e.isVersionedRoute=function(e,t){return t.every((function(t){return t.type===e}))},e}();X.toPoolOrPair=function(e){return e.type===exports.PoolType.CLPool?X.toPool(e):X.toPair(e)},X.toPair=function(e){var t=e.reserve0,r=e.reserve1;return new m.Pair(T.CurrencyAmount.fromRawAmount(X.toToken(t.token),t.quotient),T.CurrencyAmount.fromRawAmount(X.toToken(r.token),r.quotient))};var D=function(){function e(){}return e.parseCalldata=function(t){var r=new V(E),n=e.INTERFACE.parseTransaction({data:t}).args;return r.parse(n.commands,n.inputs)},e}();D.INTERFACE=new s.Interface(i.abi);var V=function(){function e(e){this.commandDefinition=e}return e.prototype.parse=function(t,r){var n=this;return{commands:e.getCommands(t).map((function(e,t){var o=n.commandDefinition[e];if(o.parser===exports.Parser.Abi){var a=o.params,i=p.ethers.utils.defaultAbiCoder.decode(a.map((function(e){return e.type})),r[t]).map((function(e,t){switch(a[t].subparser){case exports.Subparser.CLPathExactIn:return{name:a[t].name,value:j(e)};case exports.Subparser.CLPathExactOut:return{name:a[t].name,value:H(e)};default:return{name:a[t].name,value:e}}}));return{commandName:exports.CommandType[e],commandType:e,params:i}}if(o.parser===exports.Parser.CLActions)return{commandName:exports.CommandType[e],commandType:e,params:r.map((function(e){return{name:"command",value:e}}))};throw new Error("Unsupported parser: "+o)}))}},e.getCommands=function(e){for(var t=[],r=2;r<e.length;r+=2){var n=e.substring(r,r+2);t.push(parseInt(n,16))}return t},e}();function j(e){for(var t=e.replace("0x",""),r=p.ethers.utils.getAddress(t.substring(0,40)),n=40,o=[];n<t.length;){var a=t.substring(n,n+46),i=parseInt(a.substring(0,6),16),s=p.ethers.utils.getAddress(a.substring(6,46));o.push({tokenIn:r,tokenOut:s,fee:i}),r=s,n+=46}return o}function H(e){for(var t=e.replace("0x",""),r=p.ethers.utils.getAddress(t.substring(t.length-40)),n=t.length-86,o=[];n>=0;){var a=t.substring(n,n+46),i=p.ethers.utils.getAddress(a.substring(0,40)),s=parseInt(a.substring(40,46),16);o.push({tokenIn:r,tokenOut:i,fee:s}),r=i,n-=46}return o}exports.AstraTrade=O,exports.COMMAND_DEFINITION=E,exports.CommandParser=D,exports.GenericCommandParser=V,exports.ROUTER_AS_RECIPIENT=g,exports.RoutePlanner=R,exports.RouterTradeAdapter=X,exports.SAMB_ADDRESS=v,exports.SwapRouter=B,exports.UNIVERSAL_ROUTER_ADDRESS=function(e,t){if(!(t in I))throw new Error("Universal Router not deployed on chain "+t);return I[t].routerConfigs[e].address},exports.UNIVERSAL_ROUTER_CREATION_BLOCK=function(e,t){if(!(t in I))throw new Error("Universal Router not deployed on chain "+t);return I[t].routerConfigs[e].creationBlock},exports.UnwrapSAMB=W,exports.isNativeCurrency=q; //# sourceMappingURL=astra-universal-router-sdk.cjs.production.min.js.map