@minswap/noodles-sdk 0.1.1-beta.1 → 0.1.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +17 -9
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let e;import{__webpack_require__ as t}from"./0~rslib-runtime.js";import{BluefinXTx as o,Config as r,buildTx as a,getQuote as n}from"@bluefin-exchange/bluefin7k-aggregator-sdk";import{Transaction as i}from"@mysten/sui/transactions";import s from"bignumber.js";import c from"@minswap/tiny-invariant";import{SUI_CLOCK_OBJECT_ID as u,SUI_SYSTEM_STATE_OBJECT_ID as l,fromBase64 as d,isValidSuiAddress as p,normalizeStructTag as _,normalizeSuiAddress as m,parseStructTag as f,toHex as g}from"@mysten/sui/utils";import{Aftermath as A,AftermathApi as b,Helpers as I}from"aftermath-ts-sdk";import{Dex as T}from"@naviprotocol/astros-aggregator-sdk";import{AFSUI as C,AFTERMATH as O,ALPHAFI as M,AggregatorClient as E,BLUEFIN as y,BLUEMOVE as h,CETUS as S,CETUSDLMM as F,DEEPBOOKV3 as P,Env as B,FERRACLMM as w,FERRADLMM as x,FLOWXV2 as R,FLOWXV3 as D,FULLSAIL as v,HAEDAL as L,HAEDALHMMV2 as k,HAEDALPMM as U,HAWAL as N,KRIYA as j,KRIYAV3 as G,MAGMA as K,METASTABLE as q,MOMENTUM as $,OBRIC as Y,SCALLOP as V,SEVENK as J,SPRINGSUI as H,STEAMM as X,STEAMM_OMM as W,STEAMM_OMM_V2 as z,SUILEND as Q,TURBOS as Z,VOLO as ee}from"@cetusprotocol/aggregator-sdk";import et from"bn.js";import{AggregatorQuoter as eo,Coin as er,Commission as ea,CommissionType as en,Protocol as ei,TradeBuilder as es}from"@flowx-finance/sdk";import{bcs as ec}from"@mysten/sui/bcs";import{Network as eu}from"@interest-protocol/sui-core-sdk";import{Ed25519Keypair as el}from"@mysten/sui/keypairs/ed25519";import{SuiJsonRpcClient as ed,getJsonRpcFullnodeUrl as ep}from"@mysten/sui/jsonRpc";import{SuiPriceServiceConnection as e_,SuiPythClient as em}from"@pythnetwork/pyth-sui-js";import{getAmountAfterFee as ef,getSplitCoinForTx as eg,CLOCK_OBJECT_ID as eA,SUI_METADATA_OBJECT_ID as eb,SUI_TYPE as eI,isSuiCoinType as eT,getNeededGasFee as eC,addGasFee as eO,SUI_ADDRESS_ZERO as eM,getSplitCoinsAfterFee as eE,SUI_FULL_TYPE as ey}from"./832.js";var eh,eS,eF,eP,eB,ew,ex,eR,eD,ev,eL,ek,eU,eN,ej,eG,eK,eq,e$,eY,eV,eJ,eH,eX,eW,ez,eQ,eZ,e0,e1,e4,e6,e3,e2,e5,e8,e9,e7,te,tt,to,tr,ta,tn,ti,ts,tc,tu,tl,td,tp,t_,tm,tf,tg,tA,tb,tI,tT,tC,tO,tM,tE,ty,th,tS,tF,tP,tB,tw,tx,tR,tD,tv,tL,tk,tU,tN,tj,tG,tK,tq,t$,tY,tV,tJ,tH,tX,tW,tz,tQ,tZ,t0,t1,t4,t6,t3,t2,t5,t8,t9,t7,oe,ot,oo,or,oa,on,oi,os,oc,ou,ol,od,op,o_,om,of,og,oA,ob,oI,oT,oC,oO,oM,oE,oy,oh,oS,oF,oP,oB,ow,ox,oR,oD,ov,oL,ok,oU,oN,oj,oG,oK,oq,o$,oY,oV,oJ,oH,oX,oW,oz,oQ,oZ,o0,o1,o4,o6,o3,o2,o5,o8,o9={};t.r(o9),t.d(o9,{Bluefin7kClient:()=>rj});var o7={};t.r(o7),t.d(o7,{CetusClient:()=>rK});var re={};function rt(e){return e===eI?ey:e}function ro(e){return e===ey?eI:e}function rr(e){return e===ey||e===eI}t.r(re),t.d(re,{FlowxClient:()=>rq}),(eh=tw||(tw={})).MAX_AMOUNT_IN="18446744073709551615",eh.LAST_PACKAGE_ID="0x7e57926855b32baa3b3cabed89380b8d415606fdedadc18e58bd1ef1e60aee48",eh.openSwap=function(e){let{tx:t,expectedAmountOut:o,minAmountOut:r,coinInType:a,coinOutType:n,inputCoin:i,aggregatorFeeBps:s,aggregatorFeeRecipient:c,partnerFeeRecipient:u,partnerFeeBps:l}=e,[d]=t.moveCall({target:`${eh.LAST_PACKAGE_ID}::aggregator::open_swap`,typeArguments:[a,n],arguments:[t.pure.u64(o),t.pure.u64(r),i,t.pure.u32(s),t.pure.address(c),t.pure.u32(l??0),t.pure.option("address",u)]});return d},eh.closeSwap=function(e){let{tx:t,coinOutType:o,swapSession:r}=e,[a]=t.moveCall({target:`${eh.LAST_PACKAGE_ID}::aggregator::close_swap`,typeArguments:[o],arguments:[r]});return a};var ra=((eS={}).AFTERMATH_CPMM="aftermath_cpmm",eS.AFTERMATH_LSD="aftermath_lsd",eS.ALPHAFI_LSD="alphafi_lsd",eS.BLASTFUN="blastfun",eS.BLUEFIN_CLMM="bluefin_clmm",eS.BLUEMOVE_CPMM="bluemove_cpmm",eS.BOLT="bolt",eS.CETUS_CLMM="cetus_clmm",eS.CETUS_DLMM="cetus_dlmm",eS.DEEPBOOK_V3="deepbook_v3",eS.DIP_CPMM="dip_cpmm",eS.FLOWX_CPMM="flowx_cpmm",eS.FLOWX_CLMM="flowx_clmm",eS.FULLSAIL_CLMM="fullsail_clmm",eS.FERRA_CLMM="ferra_clmm",eS.FERRA_DLMM="ferra_dlmm",eS.HAEDAL_CPMM="haedal_cpmm",eS.HAEDAL_CPMM_V2="haedal_cpmm_v2",eS.HAEDAL_LSD="haedal_lsd",eS.HAEDAL_LSD_WAL="haedal_lsd_wal",eS.KRIYA_CLMM="kriya_clmm",eS.KRIYA_CPMM="kriya_cpmm",eS.MAGMA_ALMM="magma_almm",eS.MAGMA_CLMM="magma_clmm",eS.METASTABLE="metastable",eS.MOMENTUM_CLMM="momentum_clmm",eS.MOVEPUMP="movepump",eS.OBRIC="obric",eS.SCALLOP="scallop",eS.SEVENK_CPMM="sevenk_cpmm",eS.SEVENK_FUN="sevenk_fun",eS.SPRINGSUI="springsui",eS.SRM_CPMM="srm_cpmm",eS.STEAMM_CPMM="steamm_cpmm",eS.SUISWAP_CPMM="suiswap_cpmm",eS.STEAMM_OMM="steamm_omm",eS.STEAMM_OMM_V2="steamm_omm_v2",eS.TRADEPORT_CLMM="tradeport_clmm",eS.TURBOS_CLMM="turbos_clmm",eS.TURBOS_FUN="turbos_fun",eS.VOLO="volo",eS);function rn(e,t){console.error(`NOODLES_SDK_AGGREGATOR_ROUTE_ERROR aggregator=${e} error=${function(e){if(e instanceof Error)return`${e.name}: ${e.message}`;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}(t)}`)}!function(e){let t=new Set(["bluefinx","RFQ"]);e.SUPPORTED_PROTOCOLS=["suiswap","turbos","cetus","bluemove","kriya","kriya_v3","aftermath","deepbook_v3","flowx","flowx_v3","bluefin","springsui","obric","stsui","steamm","steamm_oracle_quoter","steamm_oracle_quoter_v2","magma","haedal_pmm","momentum","sevenk_v1","fullsail","cetus_dlmm","ferra_dlmm","ferra_clmm"];let o={aftermath:e=>{c(e.extra?.poolStructTag,"Aftermath protocol requires poolStructTag");let[t]=i(e.extra.poolStructTag);return{...n(e),protocol:ra.AFTERMATH_CPMM,coinLpType:t}},flowx_v3:e=>{c(e.extra?.swapFeeRate,"flowx_v3 protocol requires swapFeeRate");let t=e.extra.swapFeeRate;return{...n(e),protocol:ra.FLOWX_CLMM,poolFeeRate:t}},turbos:e=>{c(e.extra?.poolStructTag,"turbos protocol requires poolStructTag");let[t,o,r]=i(e.extra.poolStructTag);return{...n(e),protocol:ra.TURBOS_CLMM,coinFeeType:r}},obric:e=>(c(e.extra?.oracles,"obric protocol requires oracles"),{...n(e),protocol:ra.OBRIC,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1])}),haedal_pmm:e=>(c(e.extra.oracles,"haedal_pmm protocol requires oracles"),{...n(e),protocol:ra.HAEDAL_CPMM,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1])}),sevenk_v1:e=>{c(e.extra?.poolStructTag,"sevenk_v1 protocol requires poolStructTag"),c(e.extra?.oracleConfigX,"sevenk_v1 protocol requires oracleConfigX"),c(e.extra?.oracleConfigY,"sevenk_v1 protocol requires oracleConfigY");let t=e.extra.oracles?.[0]?.Pyth?.bytes,o=e.extra.oracles?.[1]?.Pyth?.bytes;c(t,"sevenk_v1 protocol requires pythPriceFeedIdA"),c(o,"sevenk_v1 protocol requires pythPriceFeedIdB");let[r,a,s]=i(e.extra.poolStructTag);return{...n(e),protocol:ra.SEVENK_CPMM,coinLpType:s,pythPriceFeedIdA:t,pythPriceFeedIdB:o,oracleConfigA:e.extra.oracleConfigX,oracleConfigB:e.extra.oracleConfigY}},steamm:e=>{c(e.extra?.poolStructTag,"steamm protocol requires poolStructTag"),c(e.extra?.bankAStructTag,"steamm protocol requires bankAStructTag"),c(e.extra?.lendingMarketA,"steamm protocol requires lendingMarketA"),c(e.extra?.bankA,"steamm protocol requires bankA"),c(e.extra?.bankB,"steamm protocol requires bankB");let[t,o,r,a]=i(e.extra.poolStructTag),[s,u,l]=i(e.extra.bankAStructTag);return{...n(e),protocol:ra.STEAMM_CPMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:s,bCoinAType:t,bCoinBType:o,lpBCoinType:a}},steamm_oracle_quoter:e=>{c(e.extra?.poolStructTag,"steamm_oracle_quoter protocol requires poolStructTag"),c(e.extra?.bankAStructTag,"steamm_oracle_quoter protocol requires bankAStructTag"),c(e.extra?.lendingMarketA,"steamm_oracle_quoter protocol requires lendingMarketA"),c(e.extra?.oracleRegistry,"steamm_oracle_quoter protocol requires oracleRegistry"),c(e.extra?.bankA,"steamm_oracle_quoter protocol requires bankA"),c(e.extra?.bankB,"steamm_oracle_quoter protocol requires bankB"),c(e.extra?.oracleIndexes,"steamm_oracle_quoter protocol requires oracleIndexes"),c(e.extra?.oracles,"steamm_oracle_quoter protocol requires oracles");let[t,o,r,a]=i(e.extra?.poolStructTag),[u,l,d]=i(e.extra.bankAStructTag),[p,_]=e.extra.oracleIndexes;return{...n(e),protocol:ra.STEAMM_OMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:u,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:p,oracleIndexB:_}},steamm_oracle_quoter_v2:e=>{c(e.extra?.poolStructTag,"steamm_oracle_quoter_v2 protocol requires poolStructTag"),c(e.extra?.bankAStructTag,"steamm_oracle_quoter_v2 protocol requires bankAStructTag"),c(e.extra?.lendingMarketA,"steamm_oracle_quoter_v2 protocol requires lendingMarketA"),c(e.extra?.oracleRegistry,"steamm_oracle_quoter_v2 protocol requires oracleRegistry"),c(e.extra?.bankA,"steamm_oracle_quoter_v2 protocol requires bankA"),c(e.extra?.bankB,"steamm_oracle_quoter_v2 protocol requires bankB"),c(e.extra?.oracleIndexes,"steamm_oracle_quoter_v2 protocol requires oracleIndexes"),c(e.extra?.oracles,"steamm_oracle_quoter_v2 protocol requires oracles");let[t,o,r,a]=i(e.extra?.poolStructTag),[u,l,d]=i(e.extra.bankAStructTag),[p,_]=e.extra.oracleIndexes;return{...n(e),protocol:ra.STEAMM_OMM_V2,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:u,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:p,oracleIndexB:_}},cetus:e=>({...n(e),protocol:ra.CETUS_CLMM}),bluemove:e=>({...n(e),protocol:ra.BLUEMOVE_CPMM}),kriya:e=>({...n(e),protocol:ra.KRIYA_CPMM}),kriya_v3:e=>({...n(e),protocol:ra.KRIYA_CLMM}),deepbook_v3:e=>({...n(e),protocol:ra.DEEPBOOK_V3}),flowx:e=>({...n(e),protocol:ra.FLOWX_CPMM}),bluefin:e=>({...n(e),protocol:ra.BLUEFIN_CLMM}),springsui:e=>({...n(e),protocol:ra.SPRINGSUI}),magma:e=>({...n(e),protocol:ra.MAGMA_CLMM}),momentum:e=>({...n(e),protocol:ra.MOMENTUM_CLMM}),fullsail:e=>({...n(e),protocol:ra.FULLSAIL_CLMM}),stsui:e=>({...n(e),protocol:ra.ALPHAFI_LSD}),suiswap:e=>({...n(e),protocol:ra.SUISWAP_CPMM}),cetus_dlmm:e=>({...n(e),protocol:ra.CETUS_DLMM}),ferra_dlmm:e=>({...n(e),protocol:ra.FERRA_DLMM}),ferra_clmm:e=>({...n(e),protocol:ra.FERRA_CLMM})};function r(e){let r=e.pool.type;if(t.has(r))throw Error(`Unsupported SourceDex: ${r}`);return(0,o[r])(e)}function a(e){let t=new Map;for(let[o,r]of e.entries())t.set(r.assetIn,o);let o=e.map(r);for(let e of t.values())o[e].amountIn=tw.MAX_AMOUNT_IN;return o}function n(e){return{poolId:e.poolId,coinInType:e.assetIn,coinOutType:e.assetOut,amountIn:e.amount,aToB:e.swapXtoY}}function i(e){return f(e||"").typeParams.map(_)}function s(e){let t=e?.Pyth?.bytes||e?.Pyth?.price_identifier?.bytes;return c(t,"Pyth price feed id is not found"),"0x"+g(Uint8Array.from(t))}e.toMetaAggregatorPath=r,e.toMetaAggregatorPaths=a,e.convert=function(e){var t,o,r;let n;c(e.routes,"Invalid raw route: routes is missing");let i=(t=e.routes,n={},t.forEach(e=>{e.hops.forEach(e=>{n[e.poolId]=e.pool})}),n),s=a((o=e.swaps,r=i,o.map(e=>{let t=r[e.poolId],o=ro(e.assetIn),a=ro(e.assetOut),n={type:ro(t?.allTokens?.[0]?.address),decimals:t?.allTokens?.[0]?.decimal},i={type:ro(t?.allTokens?.[1]?.address),decimals:t?.allTokens?.[0]?.decimal},s=o===n.type;return{...e,pool:t,assetIn:o,assetOut:a,coinX:n,coinY:i,swapXtoY:s}})));return{coinInType:e.tokenIn,coinOutType:e.tokenOut,amountOut:e.returnAmountWithDecimal,tradePaths:s}}}(tx||(tx={}));class ri{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:a,metaAggregator:i,supportedProtocols:s}){try{this._config.sevenKApiKey&&r.setApiKey(this._config.sevenKApiKey);let c=a?a.tradeFeePercent:this._config.defaultTradeFee.tradeFeePercent,u=s??(i?tx.SUPPORTED_PROTOCOLS:void 0);return await n({tokenIn:t,tokenOut:o,amountIn:e.toString(),commissionBps:1e4*c,sources:u})}catch(e){return rn("sevenk",e),null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:r,tradeFee:n}){let s,c;n?(s=n.tradeFeePercent,c=n.tradeFeeRecipientAddress):(s=this._config.defaultTradeFee.tradeFeePercent,c=this._config.defaultTradeFee.tradeFeeRecipientAddress);let u=await a({quoteResponse:t,slippage:r,accountAddress:e,commission:{partner:c,commissionBps:1e4*s}});return u.tx instanceof o?i.from(u.tx.txBytes).build({client:this._suiClient}):(u.tx.setSender(e),u.tx.build({client:this._suiClient}))}}function rs(e){return"bigint"==typeof e?e:"string"==typeof e&&/^\d+$/.test(e)?BigInt(e):e}function rc(e){return{...e,coinIn:e.coinIn?{...e.coinIn,amount:rs(e.coinIn.amount),tradeFee:rs(e.coinIn.tradeFee)}:e.coinIn,coinOut:e.coinOut?{...e.coinOut,amount:rs(e.coinOut.amount),tradeFee:rs(e.coinOut.tradeFee)}:e.coinOut}}(ri||(ri={})).toCommonTradeRoutes=function(e){let t=[];if(!e.routes||0===e.routes.length)return null;for(let o of e.routes){let e=[],r={};for(let t of o.hops){for(let e of t.pool.allTokens)r[e.address]=e.decimal;let o=r[t.tokenIn]??0,a=r[t.tokenOut]??0,n=BigInt(new s(t.tokenInAmount).multipliedBy(10**o).toFixed(0,3)),i=BigInt(new s(t.tokenOutAmount).multipliedBy(10**a).toFixed(0,3));e.push({poolAddress:t.poolId,coinIn:t.tokenIn,coinOut:t.tokenOut,amountIn:n,amountOut:i})}if(0===e.length)continue;let a=r[o.tokenIn]??0,n=r[o.tokenOut]??0,i=BigInt(new s(o.tokenInAmount).multipliedBy(10**a).toFixed(0,3)),c=BigInt(new s(o.tokenOutAmount).multipliedBy(10**n).toFixed(0,3));t.push({paths:e,coinIn:o.tokenIn,coinOut:o.tokenOut,amountIn:i,amountOut:c})}return 0===t.length?null:{coinIn:e.tokenIn,coinOut:e.tokenOut,amountIn:BigInt(e.swapAmountWithDecimal),amountOut:BigInt(e.returnAmountAfterCommissionWithDecimal),routes:t}};class ru{_config;_aftermathClient;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async aftermathClient(){if(this._aftermathClient)return this._aftermathClient;let e=await A.create({network:"MAINNET",baseUrl:this._config.aftermathApiEndpoint}),t=await e.getAddresses(),o=await A.create({network:"MAINNET",baseUrl:this._config.aftermathApiEndpoint,api:new b(this._suiClient,t)});if(this._config.aftermathApiKey){let e=I.keypairFromPrivateKey(this._config.aftermathApiKey);await o.Auth().init({async signMessageCallback({message:t}){let{signature:o}=await e.signPersonalMessage(t);return{signature:o}},walletAddress:e.toSuiAddress()})}return this._aftermathClient=o,o}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r}){try{let a;a=r?{recipient:r.tradeFeeRecipientAddress,feePercentage:r.tradeFeePercent}:{recipient:this._config.defaultTradeFee.tradeFeeRecipientAddress,feePercentage:this._config.defaultTradeFee.tradeFeePercent};let n=await this.aftermathClient();return await n.Router().getCompleteTradeRouteGivenAmountIn({coinInAmount:e,coinInType:t,coinOutType:o,externalFee:a})}catch(e){return rn("aftermath",e),null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o}){let r=await this.aftermathClient(),a=await r.Router().getTransactionForCompleteTradeRoute({completeRoute:function(e){if("object"!=typeof e||null===e)return e;let t=rc(e);return{...t,routes:Array.isArray(t.routes)?t.routes.map(e=>{let t=rc(e);return{...t,portion:rs(t.portion),paths:Array.isArray(t.paths)?t.paths.map(e=>rc(e)):t.paths}}):t.routes,feeBreakdown:Array.isArray(t.feeBreakdown)?t.feeBreakdown.map(e=>({...e,amount:rs(e.amount)})):t.feeBreakdown}}(e),walletAddress:t,slippage:o+(e.netTradeFeePercentage??0),isSponsoredTx:!1});return a.setSender(t),a.build({client:this._suiClient})}}(ru||(ru={})).toCommonTradeRoutes=function(e){if(0===e.routes.length)return null;let t=[];for(let o of e.routes){let e=[];for(let t of o.paths)e.push({poolAddress:t.poolId,coinIn:t.coinIn.type,coinOut:t.coinOut.type,amountIn:BigInt(t.coinIn.amount),amountOut:BigInt(t.coinOut.amount)});0!==e.length&&t.push({paths:e,coinIn:o.coinIn.type,coinOut:o.coinOut.type,amountIn:o.coinIn.amount,amountOut:o.coinOut.amount})}return 0===t.length?null:{coinIn:e.coinIn.type,coinOut:e.coinOut.type,amountIn:e.coinIn.amount,amountOut:e.coinOut.amount,routes:t}};let rl=new Set([T.MAGMA]),rd=[T.CETUS,T.TURBOS,T.KRIYA_V2,T.KRIYA_V3,T.AFTERMATH,T.DEEPBOOK,T.BLUEFIN,T.VSUI,T.HASUI,T.MOMENTUM,T.FLOWX,T.MAGMA_ALMM];function rp(e){return e.routes.some(e=>!!Array.isArray(e.path)&&e.path.some(e=>rl.has(e.provider??"")))}class r_{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r}){try{let a;a=r?{fee:1e4*r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:1e4*this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let{getQuote:n}=await import("@naviprotocol/astros-aggregator-sdk"),i=await n(t,o,e,this._config.astrosApiKey,{byAmountIn:!0,dexList:rd,serviceFee:a});if(rp(i))throw Error("Astros returned a route with excluded provider: magma");return i}catch(e){return rn("astros",e),null}}returnMergedCoins(e,t,o){if(t.length<2)return e.object(t[0].coinObjectId);let r=0,a=[];t.sort((e,t)=>Number(t.balance)-Number(e.balance)).slice(1).forEach(e=>{r>=o||(r+=Number(e.balance),a.push(e.coinObjectId))});let n=t[0].coinObjectId;return e.mergeCoins(n,a),e.object(n)}async getTransaction({completeRoute:e,walletAddress:t,slippage:o,tradeFee:r}){var a;let n,c;if(n=r?{fee:r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress},rp(e))throw Error("Astros quote contains excluded provider: magma");let u=new s(e.amount_out).multipliedBy(1-o-n.fee).toNumber(),l=new i,{buildSwapPTBFromQuote:d,getCoins:p}=await import("@naviprotocol/astros-aggregator-sdk"),_=this._suiClient;if("0x2::sui::SUI"===(a=e.from)||"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"===a)c=l.splitCoins(l.gas,[l.pure.u64(e.amount_in)]);else{let o=await p(_,t,e.from),r=this.returnMergedCoins(l,o.data,Number.parseFloat(e.amount_in));c=l.splitCoins(r,[l.pure.u64(e.amount_in)])}let m=await d(t,l,u,c,e,void 0,!1,this._config.astrosApiKey,{dexList:rd,serviceFee:n});return l.transferObjects([m],t),l.setSender(t),l.build({client:this._suiClient})}}(r_||(r_={})).toCommonTradeRoutes=function(e,t,o){if(0===e.routes.length)return null;let r=[];for(let t of e.routes){let e=[];for(let o of t.path)e.push({poolAddress:o.id,coinIn:o.from,coinOut:o.target,amountIn:BigInt(o.amount_in),amountOut:BigInt(o.amount_out)});0!==e.length&&r.push({amountIn:BigInt(t.amount_in),amountOut:BigInt(t.amount_out),coinIn:e[0].coinIn,coinOut:e[e.length-1].coinOut,paths:e})}return 0===r.length?null:{coinIn:t,coinOut:o,amountIn:BigInt(e.amount_in),amountOut:BigInt(e.amount_out),routes:r}},(tR||(tR={})).equals=function(e,t){return e.tradeFeePercent===t.tradeFeePercent&&e.tradeFeeRecipientAddress===t.tradeFeeRecipientAddress},(eF=tD||(tD={})).UNIVERSAL_META_VAULT_INTEGRATION_PACKAGE_ID="0xfd12517a9fc87c6a1f2357ad13b3421fb27a8bd7ca07d5fd5934ac35733baa47",(eP=eF.MetaCoinType||(eF.MetaCoinType={})).SUPER_SUI="0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI",eP.MUSD="0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD",eP.METH="0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH",eF.VERSION_OBJ_ID="0x4696559327b35ff2ab26904e7426a1646312e9c836d5c6cff6709a5ccc30915c",eF.createCap=function(e){let t,{txb:o,coinType:r,metaCoin:a,createCapAllTypeParams:n,whitelistedAppId:i,poolId:s,pythInfoObjectIdMap:l,createCapPackageId:d,createCapModule:p,createCapFunc:_}=e,m=[a.toString()];switch(n&&m.push(r),e.metaCoin){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":t=[o.object(i),o.object(s),o.object(e.registryId)];break;case"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD":{let r=l.get(e.pythPriceFeedIdMeta);c(r,"Not found priceMetaId in pythObjectIdMap"),t=[o.object(i),o.object(s),o.object(r),o.object(u)];break}case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":{let r=l.get(e.pythPriceFeedIdMeta);c(r,"Not found priceId in pythObjectIdMap");let a=l.get(e.pythPriceFeedIdEth);c(a,"Not found priceEthFeedId in pythObjectIdMap"),t=[o.object(i),o.object(s),o.object(r),o.object(a),o.object(u)];break}default:throw Error("Invalid MetaCoin: "+a.toString())}return o.moveCall({target:`${d}::${p}::${_}`,typeArguments:m,arguments:t})},eF.getCreateCapModule=function(e){switch(e){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":return"exchange_rate";case"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD":case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":return"pyth";default:throw Error("Invalid MetaCoin: "+e)}},eF.isMetaCoinType=function(e){return Object.values(eF.MetaCoinType).map(e=>e.toString()).includes(e)},eF.getCreateCapAllTypeParams=function(e,t){switch(e){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":return t===eF.UNIVERSAL_META_VAULT_INTEGRATION_PACKAGE_ID;case"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD":case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":return!0;default:throw Error("Invalid MetaCoin: "+e)}},function(e){let t=[S,j,R,D,G,Z,O,L,ee,C,h,P,V,Q,y,U,M,H,X,q,Y,N,W,$,z,K,J,k,v,F,x,w];e.SUPPORTED_PROTOCOLS=[...t];let o=new Set(t),r=e=>({poolId:e.id,coinInType:e.from,coinOutType:e.target,aToB:e.direction,amountIn:e.amountIn});function a(t){if(!o.has(t.provider))throw Error(`Unsupported or unknown provider: ${t.provider} for pool ${t.id}`);return(0,e.TO_META_AGGREGATOR_PATH_FN_MAP[t.provider])(t)}function n(e){let t=new Map;for(let[o,r]of e.paths.entries())t.set(r.from,o);let o=[];for(let r=0;r<e.paths.length;r++){let n=e.paths[r],i=a(n);t.get(n.from)===r&&(i.amountIn=tw.MAX_AMOUNT_IN),o.push(i)}return o}e.TO_META_AGGREGATOR_PATH_FN_MAP={[q]:e=>{let t=r(e),o=e.extendedDetails,a=e.direction?e.target:e.from;c(o&&void 0!==o.metastable_create_cap_pkg_id&&void 0!==o.metastable_create_cap_module&&void 0!==o.metastable_create_cap_all_type_params&&void 0!==o.metastable_whitelisted_app_id,`METASTABLE missing required extendedDetails for pool ${e.id}.`);let n={createCapPackageId:o.metastable_create_cap_pkg_id,createCapModule:o.metastable_create_cap_module,createCapAllTypeParams:o.metastable_create_cap_all_type_params,whitelistedAppId:o.metastable_whitelisted_app_id};switch(a){case tD.MetaCoinType.SUPER_SUI:return c(o.metastable_registry_id,`METASTABLE_SUPER_SUI protocol requires 'metastable_registry_id' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:ra.METASTABLE,metaCoin:a,registryId:o.metastable_registry_id};case tD.MetaCoinType.MUSD:return c(o.metastable_price_seed,`METASTABLE_MUSD protocol requires 'metastable_price_seed' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:ra.METASTABLE,metaCoin:a,pythPriceFeedIdMeta:o.metastable_price_seed};case tD.MetaCoinType.METH:return c(o.metastable_price_seed&&o.metastable_eth_price_seed,`METASTABLE_ETH protocol requires 'metastable_price_seed' and 'metastable_eth_price_seed' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:ra.METASTABLE,metaCoin:a,pythPriceFeedIdMeta:o.metastable_price_seed,pythPriceFeedIdEth:o.metastable_eth_price_seed};default:throw Error(`METASTABLE protocol does not support ${a} as metaCoin.`)}},[P]:e=>({...r(e),protocol:ra.DEEPBOOK_V3}),[O]:e=>{let t=e.extendedDetails;return c(t?.aftermath_lp_supply_type,`AFTERMATH_CPMM protocol requires 'aftermath_lp_type' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.AFTERMATH_CPMM,coinLpType:t.aftermath_lp_supply_type}},[D]:e=>({...r(e),protocol:ra.FLOWX_CLMM,poolFeeRate:String(1e6*e.feeRate)}),[U]:e=>{let t=e.extendedDetails;return c(t?.haedal_pmm_base_price_seed&&t?.haedal_pmm_quote_price_seed,`HAEDAL_CPMM protocol requires 'haedal_pyth_price_a_id' and 'haedal_pyth_price_b_id' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.HAEDAL_CPMM,pythPriceFeedIdA:t.haedal_pmm_base_price_seed,pythPriceFeedIdB:t.haedal_pmm_quote_price_seed}},[k]:e=>{let t=e.extendedDetails;return c(t?.haedalhmmv2_base_price_seed,`HAEDAL_CPMM_V2 protocol requires 'haedal_pyth_price_base_id' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.HAEDAL_CPMM_V2,pythPriceFeedIdBase:t.haedalhmmv2_base_price_seed}},[V]:e=>(c(e.extendedDetails?.scallop_scoin_treasury,`SCALLOP protocol requires 'scallop_scoin_treasury' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.SCALLOP,scoinTreasury:e.extendedDetails.scallop_scoin_treasury}),[X]:e=>{let t=e.extendedDetails;return c(t?.steamm_bank_a&&t?.steamm_bank_b&&t?.steamm_lending_market&&t?.steamm_lending_market_type&&t?.steamm_btoken_a_type&&t?.steamm_btoken_b_type&&t?.steamm_lp_token_type,`STEAMM_CPMM protocol requires steamm fields in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.STEAMM_CPMM,bankAId:t.steamm_bank_a,bankBId:t.steamm_bank_b,lendingMarketId:t.steamm_lending_market,lendingMarketType:t.steamm_lending_market_type,bCoinAType:t.steamm_btoken_a_type,bCoinBType:t.steamm_btoken_b_type,lpBCoinType:t.steamm_lp_token_type}},[W]:e=>{let t=e.extendedDetails;return c(t?.steamm_bank_a&&t?.steamm_bank_b&&t?.steamm_lending_market&&t?.steamm_lending_market_type&&t?.steamm_btoken_a_type&&t?.steamm_btoken_b_type&&t?.steamm_lp_token_type&&t?.steamm_oracle_pyth_price_seed_a&&t?.steamm_oracle_pyth_price_seed_b&&t?.steamm_oracle_registry_id&&t?.steamm_oracle_index_a&&t?.steamm_oracle_index_b,`STEAMM_OMM protocol requires steamm fields in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.STEAMM_OMM,bankAId:t.steamm_bank_a,bankBId:t.steamm_bank_b,lendingMarketId:t.steamm_lending_market,lendingMarketType:t.steamm_lending_market_type,bCoinAType:t.steamm_btoken_a_type,bCoinBType:t.steamm_btoken_b_type,lpBCoinType:t.steamm_lp_token_type,pythPriceFeedIdA:t.steamm_oracle_pyth_price_seed_a,pythPriceFeedIdB:t.steamm_oracle_pyth_price_seed_b,oracleRegistryId:t.steamm_oracle_registry_id,oracleIndexA:String(t.steamm_oracle_index_a),oracleIndexB:String(t.steamm_oracle_index_b)}},[z]:e=>{let t=e.extendedDetails;return c(t?.steamm_bank_a&&t?.steamm_bank_b&&t?.steamm_lending_market&&t?.steamm_lending_market_type&&t?.steamm_btoken_a_type&&t?.steamm_btoken_b_type&&t?.steamm_lp_token_type&&t?.steamm_oracle_pyth_price_seed_a&&t?.steamm_oracle_pyth_price_seed_b&&t?.steamm_oracle_registry_id&&t?.steamm_oracle_index_a&&t?.steamm_oracle_index_b,`STEAMM_OMM_V2 protocol requires steamm fields in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.STEAMM_OMM_V2,bankAId:t.steamm_bank_a,bankBId:t.steamm_bank_b,lendingMarketId:t.steamm_lending_market,lendingMarketType:t.steamm_lending_market_type,bCoinAType:t.steamm_btoken_a_type,bCoinBType:t.steamm_btoken_b_type,lpBCoinType:t.steamm_lp_token_type,pythPriceFeedIdA:t.steamm_oracle_pyth_price_seed_a,pythPriceFeedIdB:t.steamm_oracle_pyth_price_seed_b,oracleRegistryId:t.steamm_oracle_registry_id,oracleIndexA:String(t.steamm_oracle_index_a),oracleIndexB:String(t.steamm_oracle_index_b)}},[Y]:e=>{let t=r(e);if(e.extendedDetails?.obric_coin_a_price_id&&e.extendedDetails?.obric_coin_b_price_id)return{...t,protocol:ra.OBRIC,priceInfoObjIdA:e.extendedDetails.obric_coin_a_price_id,priceInfoObjIdB:e.extendedDetails.obric_coin_b_price_id};if(e.extendedDetails?.obric_coin_a_price_seed&&e.extendedDetails?.obric_coin_b_price_seed)return{...t,protocol:ra.OBRIC,pythPriceFeedIdA:e.extendedDetails.obric_coin_a_price_seed,pythPriceFeedIdB:e.extendedDetails.obric_coin_b_price_seed};throw Error(`OBRIC protocol requires 'obric_coin_a_price_id' and 'obric_coin_b_price_id' in extendedDetails for pool ${e.id}.`)},[J]:e=>{let t=e.extendedDetails;return c(t?.sevenk_lp_cap_type&&t?.sevenk_coin_a_price_seed&&t?.sevenk_coin_b_price_seed&&t?.sevenk_oracle_config_a&&t?.sevenk_oracle_config_b,`SEVENK_CPMM protocol requires sevenk fields in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.SEVENK_CPMM,coinLpType:t.sevenk_lp_cap_type,pythPriceFeedIdA:t.sevenk_coin_a_price_seed,pythPriceFeedIdB:t.sevenk_coin_b_price_seed,oracleConfigA:t.sevenk_oracle_config_a,oracleConfigB:t.sevenk_oracle_config_b}},[Z]:e=>(c(e.extendedDetails?.turbos_fee_type,`TURBOS_CLMM protocol requires 'coinFeeType' parameter for pool ${e.id}. Provide it via the parametersMap argument.`),{...r(e),protocol:ra.TURBOS_CLMM,coinFeeType:e.extendedDetails.turbos_fee_type}),[C]:e=>({...r(e),protocol:ra.AFTERMATH_LSD}),[M]:e=>({...r(e),protocol:ra.ALPHAFI_LSD}),[y]:e=>({...r(e),protocol:ra.BLUEFIN_CLMM}),[h]:e=>({...r(e),protocol:ra.BLUEMOVE_CPMM}),[S]:e=>({...r(e),protocol:ra.CETUS_CLMM}),[F]:e=>({...r(e),protocol:ra.CETUS_DLMM}),[w]:e=>({...r(e),protocol:ra.FERRA_CLMM}),[x]:e=>({...r(e),protocol:ra.FERRA_DLMM}),[R]:e=>({...r(e),protocol:ra.FLOWX_CPMM}),[v]:e=>({...r(e),protocol:ra.FULLSAIL_CLMM}),[L]:e=>({...r(e),protocol:ra.HAEDAL_LSD}),[N]:e=>({...r(e),protocol:ra.HAEDAL_LSD_WAL}),[j]:e=>({...r(e),protocol:ra.KRIYA_CPMM}),[G]:e=>({...r(e),protocol:ra.KRIYA_CLMM}),[K]:e=>({...r(e),protocol:ra.MAGMA_CLMM}),[$]:e=>({...r(e),protocol:ra.MOMENTUM_CLMM}),[Q]:e=>({...r(e),protocol:ra.SPRINGSUI}),[H]:e=>({...r(e),protocol:ra.SPRINGSUI}),[ee]:e=>({...r(e),protocol:ra.VOLO})},e.toMetaAggregatorPath=a,e.toMetaAggregatorPaths=n,e.convert=function(e){return{coinInType:e.paths[0].from,coinOutType:e.paths[e.paths.length-1].target,amountOut:e.amountOut.toString(),tradePaths:n(e)}}}(tv||(tv={}));class rm{_config;_suiClient;_cetusClient;getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t,overlayFeeRate:o}){return{client:this._suiClient,overlayFeeReceiver:t,overlayFeeRate:o,env:B.Mainnet,signer:e,...this._config.cetusApiKey&&this._config.cetusApiEndpoint?{apiKey:this._config.cetusApiKey,endpoint:this._config.cetusApiEndpoint}:{},partner:this._config.cetusPartnerId}}constructor(e,t){this._config=e,this._suiClient=t}cetusClient(e,t){return t&&!tR.equals(t,this._config.defaultTradeFee)?new E(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t.tradeFeeRecipientAddress,overlayFeeRate:t.tradeFeePercent})):(this._cetusClient||(this._cetusClient=new E(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:this._config.defaultTradeFee.tradeFeeRecipientAddress,overlayFeeRate:this._config.defaultTradeFee.tradeFeePercent}))),this._cetusClient)}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){try{let i=this.cetusClient(void 0,r),s=n??(a?tv.SUPPORTED_PROTOCOLS:void 0);return await i.findRouters({from:t,target:o,amount:new et(e.toString()),byAmountIn:!0,providers:s})}catch(e){return rn("cetus",e),null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o,tradeFee:r}){let a=this.cetusClient(t,r),n=new i;return n.setSender(t),await a.fastRouterSwap({router:e,txb:n,slippage:o}),n.build({client:this._suiClient})}}(rm||(rm={})).toCommonTradeRoutes=function(e,t,o){if(0===e.paths.length)return null;let r=[],a=[],n=[];for(let t=0;t<e.paths.length;t++){let o=e.paths[t],r={poolAddress:o.id,amountIn:BigInt(o.amountIn),amountOut:BigInt(o.amountOut),coinIn:o.from,coinOut:o.target};if(n.push(r),t===e.paths.length-1)a.push([...n]);else{let r=e.paths[t+1];o.target!==r.from&&(a.push([...n]),n=[])}}for(let e of a)0!==e.length&&r.push({amountIn:e[0].amountIn,amountOut:e[e.length-1].amountOut,coinIn:e[0].coinIn,coinOut:e[e.length-1].coinOut,paths:e});return 0===r.length?null:{coinIn:t,coinOut:o,amountIn:BigInt(e.amountIn.toString(10)),amountOut:BigInt(e.amountOut.toString(10)),routes:r}};var rf=((eB={}).ASTROS="ASTROS",eB.AFTERMATH="AFTERMATH",eB.SEVENK="7K",eB.CETUS="CETUS",eB.FLOWX="FLOWX",eB);!function(e){let t=[ei.HOP_FUN,ei.FLOWX_PMM,ei.DEEPBOOK,ei.IPX_TIDE,ei.METASTABLE];e.SUPPORTED_PROTOCOLS=Object.values(ei).filter(e=>!t.includes(e));let o={[ei.FLOWX_V2]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:ra.FLOWX_CPMM}),[ei.FLOWX_V3]:t=>(c(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.FLOWX_CLMM,poolFeeRate:t.poolFee.toString()}),[ei.CETUS]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.CETUS_CLMM}),[ei.CETUS_DLMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.CETUS_DLMM}),[ei.AFTERMATH]:t=>(c(t.lpCoinType,`AFTERMATH protocol requires lpCoinType for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:ra.AFTERMATH_CPMM,coinLpType:t.lpCoinType}),[ei.AFTERMATH_LSD]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:ra.AFTERMATH_LSD}),[ei.ALPHA_FI]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:ra.ALPHAFI_LSD}),[ei.BLUEFIN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.BLUEFIN_CLMM}),[ei.BLUEMOVE]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:ra.BLUEMOVE_CPMM}),[ei.DEEPBOOK_V3]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.DEEPBOOK_V3}),[ei.FERRA_CLMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.FERRA_CLMM}),[ei.FERRA_DLMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.FERRA_DLMM}),[ei.FULL_SAIL]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.FULLSAIL_CLMM}),[ei.HAEDAL]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:ra.HAEDAL_LSD}),[ei.HAEDAL_PMM]:t=>{let o=t.oracles;return c(o&&o.length>=2,`HAEDAL_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.HAEDAL_CPMM,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId}},[ei.KRIYA_DEX]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.KRIYA_CPMM}),[ei.KRIYA_V3]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.KRIYA_CLMM}),[ei.MAGMA_FINANCE]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.MAGMA_CLMM}),[ei.MAGMA_ALMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.MAGMA_ALMM}),[ei.MOMENTUM_FINANCE]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.MOMENTUM_CLMM}),[ei.OBRIC]:t=>(c(t.xPriceId&&t.yPriceId,`OBRIC protocol requires price feeds for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.OBRIC,priceInfoObjIdA:t.xPriceId,priceInfoObjIdB:t.yPriceId}),[ei.SPRING_SUI]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:ra.SPRINGSUI}),[ei.STEAMM]:t=>{c(void 0!==t.bankXInfo&&void 0!==t.bankYInfo,`STEAMM protocol requires bank info for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),c(void 0!==t.quoterType,`quoterType is required for pool ${t.pool.id}`),c(void 0!==t.poolInfo,`poolInfo is required for pool ${t.pool.id}`),c(void 0!==t.protocolConfig&&void 0!==t.protocolConfig.oracleRegistryId,`protocolConfig is required for pool ${t.pool.id}`);let o=t.oracles,r=e.toMetaAggregatorBasePath(t),n=t.xForY;switch(t.quoterType){case"constant_product":return{...r,aToB:n,protocol:ra.STEAMM_CPMM,bankAId:n?t.bankXInfo.bankId:t.bankYInfo.bankId,bankBId:n?t.bankYInfo.bankId:t.bankXInfo.bankId,lendingMarketId:t.bankXInfo.lendingMarketId,lendingMarketType:t.bankXInfo.lendingMarketType,bCoinAType:n?t.bankXInfo.bTokenType:t.bankYInfo.bTokenType,bCoinBType:n?t.bankYInfo.bTokenType:t.bankXInfo.bTokenType,lpBCoinType:t.poolInfo.lpTokenType};case"oracle":case"oracle_v2":{(void 0===o||o.length<2)&&console.error("[FlowXAggregatorConverter][STEAMM_OMM] Missing oracle price feeds",{reason:"oracles is undefined or has less than 2 entries",...a(t)}),c(void 0!==o&&o.length>=2,`STEAMM_OMM protocol requires oracle price feeds for pool ${t.pool.id}.`);let e=o[0],i=o[1],s=[void 0===e.oracleIndex?"oracles[0].oracleIndex":void 0,void 0===i.oracleIndex?"oracles[1].oracleIndex":void 0].filter(e=>void 0!==e);return s.length>0&&console.error("[FlowXAggregatorConverter][STEAMM_OMM] Missing oracle indexes",{reason:"STEAMM OMM requires oracleIndex for both oracle entries",missingFields:s,...a(t)}),c(void 0!==e.oracleIndex&&void 0!==i.oracleIndex,`STEAMM_OMM protocol requires oracle indexes for pool ${t.pool.id}.`),{...r,aToB:n,protocol:"oracle_v2"===t.quoterType?ra.STEAMM_OMM_V2:ra.STEAMM_OMM,bankAId:t.bankXInfo.bankId,bankBId:t.bankYInfo.bankId,lendingMarketId:t.bankXInfo.lendingMarketId,lendingMarketType:t.bankXInfo.lendingMarketType,bCoinAType:t.bankXInfo.bTokenType,bCoinBType:t.bankYInfo.bTokenType,lpBCoinType:t.poolInfo.lpTokenType,pythPriceFeedIdA:e.priceId,pythPriceFeedIdB:i.priceId,oracleRegistryId:t.protocolConfig.oracleRegistryId,oracleIndexA:e.oracleIndex.toString(),oracleIndexB:i.oracleIndex.toString()}}default:throw Error(`Unsupported quoter type: ${t.quoterType} for pool ${t.pool.id}`)}},[ei.SEVENK_V1]:t=>{let o=t.oracles;return c(o&&o.length>=2,`SEVENK_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),c(t.poolStructTag,`SEVENK_V1 protocol requires poolStructTag for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.SEVENK_CPMM,coinLpType:t.poolStructTag,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId,oracleConfigA:o[0].oracleId??"",oracleConfigB:o[1].oracleId??""}},[ei.SUI_REWARDS]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.SRM_CPMM}),[ei.TURBOS_FIANCE]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.TURBOS_CLMM,coinFeeType:t.poolStructTag?t.poolStructTag.split("<")[1].split(",")[2].trim().replace(">",""):""}),[ei.VOLO_LSD]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:ra.VOLO}),[ei.TRADEPORT]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),c(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,poolFeeRate:t.poolFee.toString(),protocol:ra.TRADEPORT_CLMM}),[ei.TURBOS_FUN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.TURBOS_FUN}),[ei.BLUEMOVE_FUN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,expectedAmountOut:t.amountOut.toString(),protocol:ra.MOVEPUMP}),[ei.SEVEN_K_FUN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.SEVENK_FUN}),[ei.DIPCOIN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.DIP_CPMM}),[ei.BOLT]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.BOLT})};function r(t){let o=[];for(let e of t)o.push(...e.paths);let r=new Map;for(let[e,t]of o.entries())r.set(t.input.coinType,e);let a=o.map((t,r)=>{try{return e.toMetaAggregatorPath(t)}catch(e){throw console.error("[FlowXAggregatorConverter] Failed to convert FlowX swap route",{routeIndex:r,routeCount:o.length,poolId:t.pool.id,protocol:t.protocol(),coinInType:t.input.coinType,coinOutType:t.output.coinType,amountIn:t.amountIn.toString(),amountOut:t.amountOut.toString(),error:e}),e}});for(let e of r.values())a[e].amountIn=tw.MAX_AMOUNT_IN;return a}function a(e){return{poolId:e.pool.id,quoterType:e.quoterType,xForY:e.xForY,coinInType:e.input.coinType,coinOutType:e.output.coinType,amountIn:e.amountIn.toString(),amountOut:e.amountOut.toString(),oracleCount:e.oracles?.length??0,oracles:e.oracles?.map((e,t)=>({index:t,priceId:e.priceId,oracleId:e.oracleId,oracleIndex:e.oracleIndex,hasPriceId:void 0!==e.priceId&&""!==e.priceId,hasOracleId:void 0!==e.oracleId&&""!==e.oracleId,hasOracleIndex:void 0!==e.oracleIndex})),protocolConfig:{oracleRegistryId:e.protocolConfig?.oracleRegistryId,hasOracleRegistryId:e.protocolConfig?.oracleRegistryId!==void 0},bankXInfo:e.bankXInfo,bankYInfo:e.bankYInfo,poolInfo:e.poolInfo,poolStructTag:e.poolStructTag}}e.toMetaAggregatorBasePath=e=>({poolId:e.pool.id,coinInType:e.input.coinType,coinOutType:e.output.coinType,amountIn:e.amountIn.toString()}),e.toMetaAggregatorPath=e=>{let r=e.protocol();if(t.includes(r))throw Error(`Unsupported protocol: ${r}`);return(0,o[r])(e)},e.toMetaAggregatorPaths=r,e.convert=function(e){return{coinInType:e.coinIn.coinType,coinOutType:e.coinOut.coinType,amountOut:e.amountOut.toString(),tradePaths:r(e.routes)}}}(tL||(tL={}));class rg{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}getCommission(e,t){let o,r;return t?(o=t.tradeFeePercent,r=t.tradeFeeRecipientAddress):(o=this._config.defaultTradeFee.tradeFeePercent,r=this._config.defaultTradeFee.tradeFeeRecipientAddress),new ea(r,new er(e),en.PERCENTAGE,1e6*o,!0)}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){let i=new eo("mainnet",this._config.flowxApiKey),s=n??(a?tL.SUPPORTED_PROTOCOLS:void 0);try{return await i.getRoutes({tokenIn:t,tokenOut:o,amountIn:e.toString(),commission:this.getCommission(t,r),includeSources:s})}catch(e){return rn("flowx",e),null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:o,tradeFee:r}){return new es("mainnet",t.routes).sender(e).slippage(1e6*o).commission(this.getCommission(t.coinIn.coinType,r)).build().buildTransaction({client:this._suiClient}).then(t=>(t.setSender(e),t.build({client:this._suiClient})))}}async function rA(e,t){return(await rb(e,t)).fields}async function rb(e,t){let o=(await e.getObject({objectId:t,include:{json:!0,objectBcs:!0}})).object;c(o,"Pool object not found or has no content"),c(o.json,"Pool object not found or has no content"),c(o.objectBcs,"Pool object not found or has no content");let r=ec.Object.parse(o.objectBcs);return c("Move"===r.data.$kind,"Pool object is not a Move object"),{dataType:"moveObject",fields:o.json,hasPublicTransfer:r.data.Move.hasPublicTransfer,type:o.type}}(rg||(rg={})).toCommonTradeRoutes=function(e){if(0===e.routes.length)return null;let t=[];for(let o of e.routes){let e=[];for(let t of o.paths)e.push({amountIn:BigInt(t.amountIn.toString()),amountOut:BigInt(t.amountOut.toString()),coinIn:t.input.coinType,coinOut:t.output.coinType,poolAddress:t.pool.id});0!==e.length&&t.push({amountIn:BigInt(o.amountIn.toString()),amountOut:BigInt(o.amountOut.toString()),coinIn:o.input.coinType,coinOut:o.output.coinType,paths:e})}return 0===t.length?null:{coinIn:e.coinIn.coinType,coinOut:e.coinOut.coinType,amountIn:BigInt(e.amountIn.toString()),amountOut:BigInt(e.amountOut.toString()),routes:t}},(ew=tk||(tk={})).PACKAGE_ID_V4="0x7e6aa6e179466ab2814425a780b122575296d011119fa69d27f289f5a28814bd",ew.MEMEZ_AV_OBJECT_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",((ex=tU||(tU={})).U64||(ex.U64={})).mulDivUp=function(e,t,o){let r=BigInt(0);return e*t%o>BigInt(0)&&(r=BigInt(1)),e*t/o+r};var rI=tN||(tN={});function rT(e){return c(BigInt(e)<=BigInt(1e4),"Bps overflow"),BigInt(e)}rI.calcUp=function(e,t){let o,r=BigInt(e.pos0),a=BigInt(1e4);return o=r*t%a!==BigInt(0)?BigInt(1):BigInt(0),r*t/a+o},rI.sub=function(e,t){return c(BigInt(e.pos0)>=BigInt(t.pos0),"Bps underflow"),{pos0:(BigInt(e.pos0)-BigInt(t.pos0)).toString()}},rI.value=function(e){return BigInt(e.pos0)},rI.new_=function(e){return{pos0:rT(e).toString()}},rI.assertOverflow=rT,((eR=tj||(tj={})).MemezFun||(eR.MemezFun={})).isSniperProtectedMemezFun=async function(e,t){return(await rA(e,t)).public_key.length>0},(eD=eR.MemezFees||(eR.MemezFees={})).takeWithDiscount=function(e,t,o){if("Value"===e.variant){let o=BigInt(e.fields.pos0);if(o===BigInt(0))return BigInt(0);if(t>=o)return o;throw Error(`Insufficient amount to cover fee. Required: ${o}, provided: ${t}`)}if("Percentage"===e.variant){let r=e.fields.pos0.fields;if(BigInt(r.pos0)===BigInt(0))return BigInt(0);let a=tN.calcUp(tN.sub(r,o),t);if(t>=a)return a;throw Error(`Insufficient amount to cover fee. Required: ${a}, provided: ${t}`)}throw Error("Unknown fee variant")},eD.calculateWithDiscount=function(e,t,o){if("Value"===e.variant)return BigInt(e.fields.pos0);if("Percentage"===e.variant){let r=e.fields.pos0.fields;return tN.calcUp(tN.sub(r,t),o)}throw Error("Unknown fee variant")},(eR.MemezBurner||(eR.MemezBurner={})).calculate=function(e,t){if(tN.value(e.fee.fields)===BigInt(0)||t===BigInt(0)||t>=BigInt(e.target_liquidity))return tN.new_(0);let o=BigInt(1e4);return tN.new_(tU.U64.mulDivUp(tN.value(e.fee.fields),tU.U64.mulDivUp(t,o,BigInt(e.target_liquidity)),o))},(ev=eR.MemezPump||(eR.MemezPump={})).getPumpState=async function(e,t){return await rA(e,t.inner_state)},ev.pump=function(e,t){let o=e.constant_product.fields,r=eR.MemezFees.takeWithDiscount(o.quote_swap_fee,t,o.quote_referrer_fee.fields),a=t-r,n=BigInt(o.meme_balance),i=BigInt(o.quote_balance),s=n*a/(BigInt(o.virtual_liquidity)+i+a),c=eR.MemezFees.takeWithDiscount(o.meme_swap_fee,s,o.meme_referrer_fee.fields);return s-c},ev.dump=function(e,t){let o=e.constant_product.fields,r=eR.MemezFees.takeWithDiscount(o.meme_swap_fee,t,o.meme_referrer_fee.fields),a=t-r,n=BigInt(o.meme_balance),i=BigInt(o.quote_balance),s=BigInt(o.virtual_liquidity),c=eR.MemezBurner.calculate(o.burner.fields,i),u=tN.calcUp(c,a),l=a-(tN.value(c)!==BigInt(0)?u:BigInt(0)),d=(s+i)*l/(n+l);d>i&&(d=i);let p=eR.MemezFees.takeWithDiscount(o.quote_swap_fee,d,o.quote_referrer_fee.fields);return d-p},(eL=tG||(tG={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,n=await rA(t,r),i=await tj.MemezPump.getPumpState(t,n);return o=ef(o,a),tj.MemezPump.pump(i,o)},eL.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,n=await rA(t,r),i=await tj.MemezPump.getPumpState(t,n);return ef(tj.MemezPump.dump(i,o),a)};let rC="0x62412b7268c35f3808336aee57a52836501f40b8ba5d936f8ad275e672befd04";async function rO(e,t){let o,r,{inputAmount:a,accountAddress:n,frontendFee:s,frontendFeeRecipient:u,extendTx:l,isSponsored:d}=e;c(e.inCoinType===ey||e.inCoinType===eI,"Input must be SUI");let{tx:p,coinIn:_}=l||{},m=eE(a,s||"0"),f=p||new i;if(_)o=f.splitCoins(_,m),tK.transferOrDestroyZeroCoin(f,ey,_,n);else{let{coinData:e}=await eg({account:n,amount:a,splits:m,coinType:ey,inheritTx:f,isSponsored:d||!1},t);o=e}if(s&&u){let[e,t]=o;r=e,f.transferObjects([t],f.pure.address(u||n))}else[r]=o;return{tx:f,coinOut:r}}async function rM(e,t,o){if(c(t.outCoinType===ey||t.outCoinType===eI,"Output must be SUI"),0>=Number(t.frontendFee||0))return{tx:e,coinOut:o};let r=e.moveCall({target:"0x2::coin::value",typeArguments:[t.outCoinType],arguments:[o]}),a=e.moveCall({target:`${rC}::math::mul_div_u64`,typeArguments:[],arguments:[r,e.pure.u64(BigInt(1e4*Number(t.frontendFee||"0"))),e.pure.u64(BigInt(1e4))]}),n=e.moveCall({target:"0x2::coin::split",typeArguments:[t.outCoinType],arguments:[o,a]});return e.transferObjects([n],e.pure.address(t.frontendFeeRecipient||t.accountAddress)),{tx:e,coinOut:o}}(tK||(tK={})).transferOrDestroyZeroCoin=function(e,t,o,r){e.moveCall({target:`${rC}::utils::transfer_or_destroy`,typeArguments:[t],arguments:[o,e.pure.address(r)]})};var rE=tq||(tq={});async function ry(e){let t=e||new i;return t.moveCall({target:`${tk.PACKAGE_ID_V4}::memez_allowed_versions::get_allowed_versions`,arguments:[t.object(tk.MEMEZ_AV_OBJECT_ID)],typeArguments:[]})}function rh(e){switch(e){case"mainnet":return"https://fullnode.mainnet.sui.io:443";case"testnet":return"https://fullnode.testnet.sui.io:443";case"devnet":return"https://fullnode.devnet.sui.io:443";case"localnet":return"http://127.0.0.1:9000";default:throw Error(`Unknown network: ${e}`)}}function rS(e){return rh(e)}function rF(e){return"Transaction"===e.$kind?e.Transaction.digest:e.FailedTransaction.digest}rE.getAllowedVersions=ry,rE.buildBuyTx=async function(e,t){c(!await tj.MemezFun.isSniperProtectedMemezFun(t,e.poolId),"This coin is a sniper protected coin, please use the Blast Fun website to trade it.");let{tx:o,coinOut:r}=await rO(e,t);c(r,"Coin out is required");let a=o.moveCall({target:`${tk.PACKAGE_ID_V4}::memez_pump::pump`,typeArguments:[e.outCoinType,ey],arguments:[o.object(e.poolId),r,o.pure.vector("address",[]),o.pure.vector("vector<u8>",[]),o.pure.u64(e.minAmountOut),await ry(o)]});return{tx:o,coinOut:a}},rE.buildSellTx=async function(e,t){c(e.outCoinType===ey||e.outCoinType===eI,"Output must be SUI");let o=await rA(t,e.poolId),{tx:r,coinData:a}=await eg({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[n]=a,[i]=r.moveCall({target:`${tk.PACKAGE_ID_V4}::memez_pump::dump`,typeArguments:[e.inCoinType,e.outCoinType],arguments:[r.object(e.poolId),r.object(o.ipx_meme_coin_treasury),n,r.pure.vector("address",[]),r.pure.u64(e.minAmountOut),await ry(r)]});return await rM(r,e,i)};let rP={network:eu.MAINNET,fullNodeUrl:rh("mainnet")};async function rB(){if(!e){let{MemezPumpSDK:t}=await import("@interest-protocol/memez-fun-sdk");e=new t(rP)}return e}(ek=t$||(t$={})).getCurveAmountAfterBuy=async function(e){let{suiAmount:t,poolId:o,frontendFee:r}=e;t=ef(t,r);let{memeAmountOut:a}=await (await rB()).quotePump({pool:o,amount:t});return a},ek.getSuiAmountAfterSell=async function(e){let{curveAmount:t,poolId:o,frontendFee:r}=e,{quoteAmountOut:a}=await (await rB()).quoteDump({pool:o,amount:t});return ef(a,r)};var rw=tY||(tY={});async function rx(e,t){let{tx:o,coinOut:r}=await rO(e,t);c(r,"Coin out is required");let{memeCoin:a,tx:n}=await (await rB()).pump({pool:e.poolId,quoteCoin:r,minAmountOut:e.minAmountOut,tx:o});return{tx:n,coinOut:a}}async function rR(e,t){c(eT(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await eg({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,{quoteCoin:n,tx:i}=await (await rB()).dump({pool:e.poolId,memeCoin:a,tx:o,minAmountOut:e.minAmountOut});return await rM(i,e,n)}rw.buildBuyTx=rx,rw.buildSellTx=rR,rw.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eT(t),"coinInType must be SUI for buy transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await t$.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0})).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rx({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eC(u,d,n,0);return(d=await eO({inheritTx:d,sender:n,feeAmount:_,suiInputAmount:e},u)).build({client:u})},rw.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eT(o),"coinOutType must be SUI for sell transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await t$.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0})).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rR({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eC(u,d,n,0);return(d=await eO({inheritTx:d,sender:n,feeAmount:_},u)).build({client:u})};var rD=((eU={}).BLAST_FUN="BLAST_FUN",eU.MOONBAGS="MOONBAGS",eU);(eN=tV||(tV={})).PACKAGE_ID="0xb8df325010942634a4afb3db3901ee215546af43a4ec4af781e7213b0bba7290",eN.CONFIG_OBJECT_ID="0x74aecf86067c6913960ba4925333aefd2b1f929cafca7e21fd55a8f244b70499",eN.LOCK_CONFIG_OBJECT_ID="0xfb09822d9808980abd04c51321adb850701f5f55535c6206658ef4d910c3e9be",eN.BURN_MANAGER_OBJECT_ID="0x1d94aa32518d0cb00f9de6ed60d450c9a2090761f326752ffad06b2e9404f845",eN.POOLS_OBJECT_ID="0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0",eN.GLOBAL_CONFIG_OBJECT_ID="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",eN.FEE_DENOMINATOR=BigInt(1e4),function(e){(t=e.Curves||(e.Curves={})).calculateAddLiquidityCost=function(e,t,o){return e*t/(t-o)-e},t.calculateRemoveLiquidityReturn=function(e,t,o){return t-e*t/(e+o)},t.calculateTokenAmountReceived=function(e,t,o){return t-e*t/(e+o)};var t,o=e.Moonbags||(e.Moonbags={});function r(e){return"fields"in e?e.fields.balance:e.balance}o.getDynamicVirtualTokenReserves=async function(e,t){try{let o=await e.getDynamicField({parentId:t,name:{type:"vector<u8>",bcs:ec.byteVector().serialize(new TextEncoder().encode("virtual_token_reserves")).toBytes()}});if(!o.dynamicField?.value)return;return BigInt(ec.u64().parse(o.dynamicField.value.bcs))}catch(e){if("object"==typeof e&&null!==e&&"code"in e&&"dynamicFieldNotFound"===e.code)return;throw e}},o.buyExactInReturnsWithLock=function(t){let{inputAmount:o,amountIn:a,pool:n,config:i,dynamicVirtualTokenReserves:s}=t,u=BigInt(n.virtual_sui_reserves),l=BigInt(n.virtual_token_reserves),d=BigInt(r(n.remain_token_reserves)),p=e.Curves.calculateRemoveLiquidityReturn(u,l,a),_=l-(s||d),m=p,f=a;p>_&&(m=_,f=e.Curves.calculateAddLiquidityCost(u,l,_)+BigInt(1));let g=f*BigInt(i.platform_fee)/tV.FEE_DENOMINATOR;return c(o>=f+g,"Input amount is less than used SUI + fee"),{receivedCurve:m,receivedSui:o-f-g}},o.sellReturns=function(t){let{amountIn:o,pool:a,config:n}=t,i=BigInt(a.virtual_sui_reserves),s=BigInt(a.virtual_token_reserves),c=BigInt(r(a.real_sui_reserves)),u=e.Curves.calculateRemoveLiquidityReturn(s,i,o);u>c&&(u=c);let l=u*BigInt(n.platform_fee)/tV.FEE_DENOMINATOR,d=u-l;return{receivedCurve:BigInt(0),receivedSui:d}}}(tJ||(tJ={})),(ej=tH||(tH={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,[n,i,s]=await Promise.all([rA(t,r),rA(t,tV.CONFIG_OBJECT_ID),tJ.Moonbags.getDynamicVirtualTokenReserves(t,r)]);void 0!==a&&(o=ef(o,a));let c=o*tV.FEE_DENOMINATOR/(tV.FEE_DENOMINATOR+BigInt(i.platform_fee)),{receivedCurve:u}=tJ.Moonbags.buyExactInReturnsWithLock({inputAmount:o,amountIn:c,pool:n,config:i,dynamicVirtualTokenReserves:s});return u},ej.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,[n,i]=await Promise.all([rA(t,r),rA(t,tV.CONFIG_OBJECT_ID)]),{receivedSui:s}=tJ.Moonbags.sellReturns({amountIn:o,pool:n,config:i});return void 0!==a?ef(s,a):s},ej.getUsedSuiForTx=async function(e,t){let{suiAmount:o,frontendFee:r}=e,a=await rA(t,tV.CONFIG_OBJECT_ID);return void 0!==r&&(o=ef(o,r)),o*tV.FEE_DENOMINATOR/(tV.FEE_DENOMINATOR+BigInt(a.platform_fee))};var rv=tX||(tX={});async function rL(e,t){let{tx:o,coinOut:r}=await rO(e,t);c(r,"Coin out is required");let a=await tH.getUsedSuiForTx({suiAmount:BigInt(e.inputAmount),frontendFee:e.frontendFee},t),[n,i]=o.moveCall({target:`${tV.PACKAGE_ID}::moonbags::buy_exact_in_returns_with_lock`,typeArguments:[e.outCoinType],arguments:[o.object(tV.CONFIG_OBJECT_ID),o.object(tV.LOCK_CONFIG_OBJECT_ID),r,o.pure.u64(a),o.pure.u64(e.minAmountOut),o.object(tV.BURN_MANAGER_OBJECT_ID),o.object(tV.POOLS_OBJECT_ID),o.object(tV.GLOBAL_CONFIG_OBJECT_ID),o.object(eb),o.object(eA)]});return tK.transferOrDestroyZeroCoin(o,ey,n,e.accountAddress),{tx:o,coinOut:i}}async function rk(e,t){c(eT(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await eg({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,[n,i]=o.moveCall({target:`${tV.PACKAGE_ID}::moonbags::sell_returns`,typeArguments:[e.inCoinType],arguments:[o.object(tV.CONFIG_OBJECT_ID),a,o.pure.u64(e.minAmountOut),o.object(eA)]});return tK.transferOrDestroyZeroCoin(o,e.inCoinType,i,e.accountAddress),await rM(o,e,n)}rv.buildBuyTx=rL,rv.buildSellTx=rk,rv.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eT(t),"coinInType must be SUI for buy transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await tH.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0},u)).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rL({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eC(u,d,n,0);return(d=await eO({inheritTx:d,sender:n,feeAmount:_,suiInputAmount:e},u)).build({client:u})},rv.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eT(o),"coinOutType must be SUI for sell transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await tH.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0},u)).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rk({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eC(u,d,n,0);return(d=await eO({inheritTx:d,sender:n,feeAmount:_},u)).build({client:u})},(eG=tW||(tW={})).LAST_PACKAGE_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",eG.newHolder=function(e){return e.moveCall({target:`${eG.LAST_PACKAGE_ID}::oracle::new_holder`,typeArguments:[],arguments:[]})},eG.getPrice=function(e){let{txb:t,coinOracleId:o,holder:r,coinPriceId:a}=e;t.moveCall({target:`${eG.LAST_PACKAGE_ID}::pyth::get_price`,typeArguments:[],arguments:[t.object(o),r,t.object(a),t.object(u)]})},(eK=tz||(tz={})).PYTH_URLS=["https://hermes.pyth.network"],eK.WORMHOLE_STATE_ID="0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",eK.PYTH_STATE_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",eK.newPythConnections=function(e){return e||(e=eK.PYTH_URLS),e.map(e=>new e_(e,{timeout:3e3}))},eK.newPythClient=function(e){return e||(e=new ed({network:"mainnet",url:ep("mainnet")})),new em(e,eK.PYTH_STATE_ID,eK.WORMHOLE_STATE_ID)},eK.updatePythPriceIDs=async function(e){let{priceFeedIds:t,txb:o,pythConnections:r,pythClient:a}=e;if(0===t.length)return new Map;let n=null,i=null;for(let e of r)try{n=await e.getPriceFeedsUpdateData(t);break}catch(e){i=e,console.log("Error: ",e)}if(null==n)throw Error(`All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes. Detailed error: ${i?.message}`);let s=[];try{s=await a.updatePriceFeeds(o,n,t)}catch(e){throw Error(`All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes in the pythUrls parameter when initializing AggregatorClient, for example: new AggregatorClient({ pythUrls: ["https://your-pyth-node-url"] }). Detailed error: ${e}`)}let c=new Map;for(let e=0;e<t.length;e++)c.set(t[e],s[e]);return c};var rU=((eq={})[eq.UNKNOWN=1e3]="UNKNOWN",eq[eq.TIMEOUT=1001]="TIMEOUT",eq[eq.PROVIDER_NOT_FOUND=1002]="PROVIDER_NOT_FOUND",eq[eq.PROVIDER_NOT_SUPPORTED=1003]="PROVIDER_NOT_SUPPORTED",eq[eq.INVALID_QUOTE=1004]="INVALID_QUOTE",eq[eq.QUOTE_NOT_FOUND=1005]="QUOTE_NOT_FOUND",eq[eq.INVALID_SIGNER_ADDRESS=1006]="INVALID_SIGNER_ADDRESS",eq[eq.PROVIDER_NOT_SUPPORT_SWAP=1007]="PROVIDER_NOT_SUPPORT_SWAP",eq[eq.SIMULATION_FAILED=1008]="SIMULATION_FAILED",eq);class rN extends Error{code;details;constructor(e,t,o){super(e),this.name="MetaAgError",this.code=t??1e3,this.details=o}static assert(e,t,o,r){if(!e)throw new rN(t??"Assertion failed",o,r)}}class rj{options;kind="SEVENK";constructor(e,t){this.options=e,e.apiKey&&r.setApiKey(e.apiKey),r.setSuiClient(t)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tx.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tx.SUPPORTED_PROTOCOLS);let o=await n({tokenIn:e.coinTypeIn,tokenOut:e.coinTypeOut,amountIn:e.amountIn,sources:t,excludedPools:this.options.excludedPools,targetPools:this.options.targetPools});return rN.assert(!!o,"No quote found",rU.QUOTE_NOT_FOUND,{provider:this.kind}),{sourceRoute:"SEVENK",rawRoute:o,amountIn:o.swapAmountWithDecimal,amountOut:o.returnAmountWithDecimal,coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}let rG=tz.PYTH_URLS;class rK{options;kind="CETUS";cetusClient;constructor(e,t,o){this.options=e,this.cetusClient=new E({apiKey:e.apiKey,client:o,endpoint:e.api,env:B.Mainnet,pythUrls:t.hermesApi?t.hermesApi:rG})}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tv.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tv.SUPPORTED_PROTOCOLS);let o=await this.cetusClient.findRouters({amount:e.amountIn,byAmountIn:!0,from:e.coinTypeIn,target:e.coinTypeOut,providers:t,splitCount:this.options.splitCount,splitAlgorithm:this.options.splitAlgorithm,splitFactor:this.options.splitFactor,depth:this.options.depth,liquidityChanges:this.options.liquidityChanges});return rN.assert(!!o,"No quote found",rU.QUOTE_NOT_FOUND,{provider:this.kind}),{sourceRoute:"CETUS",rawRoute:o,amountIn:o.amountIn.toString()||"0",amountOut:o.amountOut.toString()||"0",coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}class rq{options;kind="FLOWX";quoter;constructor(e){this.options=e,this.quoter=new eo("mainnet",e.apiKey)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tL.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tL.SUPPORTED_PROTOCOLS);let o=await this.quoter.getRoutes({amountIn:e.amountIn,tokenIn:e.coinTypeIn,tokenOut:e.coinTypeOut,includeSources:t,excludePools:this.options.excludePools,excludeSources:this.options.excludeSources,maxHops:this.options.maxHops,splitDistributionPercent:this.options.splitDistributionPercent});return{sourceRoute:"FLOWX",rawRoute:o,amountIn:o.amountIn?.toString()??"0",amountOut:o.amountOut?.toString()??"0",coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}(e$=tQ||(tQ={})).POOL_REGISTRY_OBJ_ID="0xfcc774493db2c45c79f688f88d28023a3e7d98e4ee9f48bbf5c7990f651577ae",e$.PROTOCOL_FEE_VAULT_OBJ_ID="0xf194d9b1bcad972e45a7dd67dd49b3ee1e3357a00a50850c52cd51bb450e13b4",e$.TREASURY_OBJ_ID="0x28e499dff5e864a2eafe476269a4f5035f1c16f338da7be18b103499abf271ce",e$.INSURANCE_FUND_OBJ_ID="0xf0c40d67b078000e18032334c3325c47b9ec9f3d9ae4128be820d54663d14e3b",e$.REFERRAL_VAULT_OBJ_ID="0x35d35b0e5b177593d8c3a801462485572fc30861e6ce96a55af6dc4730709278",(eY=tZ||(tZ={})).LAST_PACKAGE_ID="0xf369250dc5a17e9d5a84a3b0cf5aea715c0682170e726dd601f03ade7ce4decb",eY.swap=function(e){c(e.protocol===ra.AFTERMATH_CPMM);let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,coinLpType:u,packageId:l}=e;t.moveCall({target:`${l??eY.LAST_PACKAGE_ID}::aftermath_cpmm_router::swap`,typeArguments:[i,s,u],arguments:[o,t.object(r),t.object(tQ.POOL_REGISTRY_OBJ_ID),t.object(tQ.PROTOCOL_FEE_VAULT_OBJ_ID),t.object(tQ.TREASURY_OBJ_ID),t.object(tQ.INSURANCE_FUND_OBJ_ID),t.object(tQ.REFERRAL_VAULT_OBJ_ID),t.pure.bool(a),t.pure.u64(n)]})},(eV=t0||(t0={})).STAKED_SUI_VAULT_OBJ_ID="0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d",eV.SAFE_TREASURY_OBJECT_ID="0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610",eV.REFERRAL_VAULT_OBJ_ID="0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef",eV.VALIDATOR_ADDRESS="0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2",(eJ=t1||(t1={})).LAST_PACKAGE_ID="0x148c4e7ff5b308b2d520e050e6a21d986dd3eb203e0aa3eaaba28000977aebf1",eJ.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,packageId:n}=e;if(!r)throw Error("AFSUI not support bToA swap");t.moveCall({target:`${n??eJ.LAST_PACKAGE_ID}::aftermath_lsd_router::swap`,arguments:[o,t.object(t0.STAKED_SUI_VAULT_OBJ_ID),t.object(t0.SAFE_TREASURY_OBJECT_ID),t.object(l),t.object(t0.REFERRAL_VAULT_OBJ_ID),t.pure.address(t0.VALIDATOR_ADDRESS),t.pure.bool(r),t.pure.u64(a)]})},(eH=t4||(t4={})).LAST_PACKAGE_ID="0x108d5d07cf873dec0bc8034db862db55d38e495c1f3ee0e124cf4861af834f25",eH.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??eH.LAST_PACKAGE_ID}::alphafi_lsd_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(l),t.pure.bool(n),t.pure.u64(a)]})},(eX=t6||(t6={})).MEMEZ_AV_OBJ_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",eX.MEMEZ_FUN_OBJ_ID="0x943948644f06942b8b660ca541b10a05f6a7be23ce4069944a3665e7e698930d",eX.IPX_TREASURY_STANDARD_OBJ_ID="0x051e11b667659192917db94e5175fa066909d4dfc04d2663528f499c4afc6999",(eW=t3||(t3={})).LAST_PACKAGE_ID="0x8b1e84ed9bc79d31160600254d65810f6bc6d2352f174a60ed041017d0a2a87a",eW.swap=function(e){c(e.protocol===ra.BLASTFUN,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??eW.LAST_PACKAGE_ID}::blastfun_router::swap`,typeArguments:[r,a],arguments:[o,t.object(t6.MEMEZ_FUN_OBJ_ID),t.object(t6.IPX_TREASURY_STANDARD_OBJ_ID),t.object(t6.MEMEZ_AV_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(t2||(t2={})).GLOBAL_CONFIG_OBJ_ID="0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",(ez=t5||(t5={})).LAST_PACKAGE_ID="0x9f8397124b6bdb55aeb7b5e43761e0e4dc94b9e22e94b1b25d8211d99df422d5",ez.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinAType:i,coinBType:s,packageId:c}=e;t.moveCall({target:`${c??ez.LAST_PACKAGE_ID}::bluefin_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(t2.GLOBAL_CONFIG_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(u)]})},(t8||(t8={})).DEX_INFO_OBJ_ID="0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92",(eQ=t9||(t9={})).LAST_PACKAGE_ID="0xf52bdd65ee347e8994170f8c331cf0c23a55281b3282467f14ccbb3e2a7f928f",eQ.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,coinAType:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??eQ.LAST_PACKAGE_ID}::bluemove_cpmm_router::swap`,typeArguments:[n,i],arguments:[o,t.object(t8.DEX_INFO_OBJ_ID),t.pure.bool(r),t.pure.u64(a)]})},(t7||(t7={})).ORACLE_OBJ_ID="0xfa3975b98f3d0e3df18ed88ae6e69db31836b3f4212df02fae144b1e5a89ca8e",(eZ=oe||(oe={})).LAST_PACKAGE_ID="0x2dd7b04509f332bdb93a8f228ab5c40b34baee4645b2ebe5e5fa2c3502b2c088",eZ.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??eZ.LAST_PACKAGE_ID}::bolt_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(t7.ORACLE_OBJ_ID),t.object(u),t.pure.u64(s),t.pure.bool(i)]})},(ot||(ot={})).GLOBAL_CONFIG="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",(e0=oo||(oo={})).LAST_PACKAGE_ID="0xb3dbb229464cb14b9f8cfa087e5b162623c8f485395dc9b975e263a5ee7051e4",e0.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??e0.LAST_PACKAGE_ID}::cetus_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(ot.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(e1=or||(or={})).GLOBAL_CONFIG_OBJ_ID="0xf31b605d117f959b9730e8c07b08b856cb05143c5e81d5751c90d2979e82f599",e1.VERSIONED_OBJ_ID="0x05370b2d656612dd5759cbe80463de301e3b94a921dfc72dd9daa2ecdeb2d0a8",(e4=oa||(oa={})).LAST_PACKAGE_ID="0x9ab3ba62b4327a7d90e4aed1c025b62736f035911ad7bab830c065ec84ef1ffa",e4.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinAType:i,coinBType:s,packageId:c}=e,l=[o,t.object(or.GLOBAL_CONFIG_OBJ_ID),t.object(or.VERSIONED_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(u)];t.moveCall({target:`${c??e4.LAST_PACKAGE_ID}::cetus_dlmm_router::swap`,typeArguments:[i,s],arguments:l})},(e6=on||(on={})).GLOBAL_CONFIG="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135",e6.DEEP_TYPE="0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",(e3=oi||(oi={})).LAST_PACKAGE_ID="0xff274b63c0f6e3a01f3dd0e923aefcb3146e05e2f6bef4ae339e2703b085f8ed",e3.swap=function(e){c(e.protocol===ra.DEEPBOOK_V3,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,deepFeeCoin:l,packageId:d}=e,p=l||t.moveCall({target:"0x2::coin::zero",typeArguments:[on.DEEP_TYPE]});t.moveCall({target:`${d??e3.LAST_PACKAGE_ID}::deepbook_v3_router::swap`,typeArguments:[r,a],arguments:[o,t.object(on.GLOBAL_CONFIG),t.object(n),t.pure.u64(s),t.pure.bool(i),p,t.object(u)]})},(os||(os={})).GLOBAL_OBJ_ID="0x935229a3c32399e9fb207ec8461a54f56c6af5744c64442435ac217ab28f0d59",(e2=oc||(oc={})).LAST_PACKAGE_ID="0xfd86c0308327eae31c04560460ee6190220e4ae1cdf5b999eef1110bf0b0f2b8",e2.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??e2.LAST_PACKAGE_ID}::dip_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(os.GLOBAL_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(ou||(ou={})).FERRA_GLOBAL_CONFIG_ID="0x2cd8382c19e6994f16df204e9b8cddd04bdc486c251de75ac66ac4e48e3e7081",(e5=ol||(ol={})).LAST_PACKAGE_ID="0x70c4318f67d88ebe4e83bacad15f9e2f5c8becd77695f63dc4bd9393730851cd",e5.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,packageId:c}=e;t.moveCall({target:`${c??e5.LAST_PACKAGE_ID}::ferra_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(ou.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object("0x6")]})},(od||(od={})).FERRA_GLOBAL_CONFIG_ID="0x5c9dacf5a678ea15b8569d65960330307e23d429289ca380e665b1aa175ebeca",(e8=op||(op={})).LAST_PACKAGE_ID="0x686e9eb19b04d46374c3fb82cb4ebb7b24ef8a9ae13f403915f4ae347e0f6593",e8.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,packageId:c}=e;t.moveCall({target:`${c??e8.LAST_PACKAGE_ID}::ferra_dlmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(od.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object(u)]})},(e9=o_||(o_={})).POOL_REGISTRY_OBJ_ID="0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc",e9.VERSIONED_OBJ_ID="0x67624a1533b5aff5d0dfcf5e598684350efd38134d2d245f475524c03a64e656",(e7=om||(om={})).LAST_PACKAGE_ID="0x350a752d3388165e578cc33a39655a6da83613cf4e58c8d9d0723711c2603e17",e7.swap=function(e){c(e.protocol===ra.FLOWX_CLMM);let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolFeeRate:n,amountIn:i,aToB:s,packageId:l}=e;t.moveCall({target:`${l??e7.LAST_PACKAGE_ID}::flowx_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(o_.POOL_REGISTRY_OBJ_ID),t.object(o_.VERSIONED_OBJ_ID),t.pure.u64(n),t.pure.u64(i),t.pure.bool(s),t.object(u)]})},(of||(of={})).CONTAINER_OBJ_ID="0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511",(te=og||(og={})).LAST_PACKAGE_ID="0xd95b440ad340bb6cbf571897d312e43d4b6de37b60c69ef714c94b9835cb8866",te.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??te.LAST_PACKAGE_ID}::flowx_cpmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(of.CONTAINER_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(tt=oA||(oA={})).GLOBAL_CONFIG_OBJ_ID="0xe93baa80cb570b3a494cbf0621b2ba96bc993926d34dc92508c9446f9a05d615",tt.REWARDER_VAULT_OBJ_ID="0xfb971d3a2fb98bde74e1c30ba15a3d8bef60a02789e59ae0b91660aeed3e64e1",tt.STATS_OBJ_ID="0x6822a33d1d971e040c32f7cc74507010d1fe786f7d06ab89135083ddb07d2dc2",tt.PRICE_PROVIDER_OBJ_ID="0x854b2d2c0381bb656ec962f8b443eb082654384cf97885359d1956c7d76e33c9",(to=ob||(ob={})).LAST_PACKAGE_ID="0xf0bf13b5baaf3d368f165e846b919294bed79a3ab3ab0c9bd1e75f23533e44a5",to.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??to.LAST_PACKAGE_ID}::fullsail_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(oA.GLOBAL_CONFIG_OBJ_ID),t.object(oA.REWARDER_VAULT_OBJ_ID),t.object(oA.STATS_OBJ_ID),t.object(oA.PRICE_PROVIDER_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(tr=oI||(oI={})).LAST_PACKAGE_ID="0x8969ed3e56c1dbdaf9df52f812d69c6c45fe5a4bab7093c88f5a8697a409398e",tr.swap=function(e){c(e.protocol===ra.HAEDAL_CPMM);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdA:l,pythPriceFeedIdB:d,pythInfoObjectIdMap:p,packageId:_}=e,m=p.get(l),f=p.get(d);c(m,"Not found priceInfoAId in pythObjectIdMap"),c(f,"Not found priceInfoBId in pythObjectIdMap"),t.moveCall({target:`${_??tr.LAST_PACKAGE_ID}::haedal_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(m),t.object(f),t.pure.u64(s),t.pure.bool(i),t.object(u)]})},(ta=oT||(oT={})).LAST_PACKAGE_ID="0x5d01f22e5471a5912a88e15d62fdcb922beba65b8e8dfe1a715aebf743194f4a",ta.swap=function(e){c(e.protocol===ra.HAEDAL_CPMM_V2);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdBase:l,pythInfoObjectIdMap:d,packageId:p}=e,_=d.get(l);c(_,"Not found pythPriceBaseId in pythObjectIdMap"),t.moveCall({target:`${p??ta.LAST_PACKAGE_ID}::haedal_cpmm_v2_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(_),t.pure.u64(s),t.pure.bool(i),t.object(u)]})},(tn=oC||(oC={})).LAST_PACKAGE_ID="0x1644956086caa5eb791eba152f3b69ba862b3a5382ef0e1d8a474ab158aafa1a",tn.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,poolId:n,packageId:i}=e;t.moveCall({target:`${i??tn.LAST_PACKAGE_ID}::haedal_lsd_router::swap`,arguments:[o,t.object(n),t.object(l),t.pure.bool(r),t.pure.u64(a)]})},(oO||(oO={})).STAKING_OBJ_ID="0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904",(oM||(oM={})).VALIDATOR_ID="0x7b3ba6de2ae58283f60d5b8dc04bb9e90e4796b3b2e0dea75569f491275242e7",(ti=oE||(oE={})).LAST_PACKAGE_ID="0x7be077dd73c85e788c2a49a51f0627066d81d3dc9982c268e3691265a81d544d",ti.swap=function(e){c(e.protocol===ra.HAEDAL_LSD_WAL),c(e.aToB,"HAEDAL_LSD_WAL does not support bToA swap");let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??ti.LAST_PACKAGE_ID}::haedal_wal_lsd_router::swap`,arguments:[o,t.object(oO.STAKING_OBJ_ID),t.object(r),t.pure.id(oM.VALIDATOR_ID),t.pure.bool(a),t.pure.u64(n)]})},(oy||(oy={})).VERSION_OBJ_ID="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78",(ts=oh||(oh={})).LAST_PACKAGE_ID="0xcf141e1d18ff609b2ac56532b391f7648fc55e28696efe354186f5109c0eff06",ts.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??ts.LAST_PACKAGE_ID}::kriya_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oy.VERSION_OBJ_ID),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(tc=oS||(oS={})).LAST_PACKAGE_ID="0x50d37f46df75ef125ce656d4ac91b31b2cf0c1195752a96558561d163e45c223",tc.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??tc.LAST_PACKAGE_ID}::kriya_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(tu=oF||(oF={})).FACTORY_OBJ_ID="0xedb456e93e423dd75a8ddebedd9974bb661195043027e32ce01649d6ccee74cf",tu.GLOBAL_CONFIG_OBJ_ID="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(tl=oP||(oP={})).LAST_PACKAGE_ID="0x950f94d33060c0575389c9f84fabab1e140776c6c84389d4237a0c2687a7adc9",tl.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??tl.LAST_PACKAGE_ID}::magma_almm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oF.FACTORY_OBJ_ID),t.object(oF.GLOBAL_CONFIG_OBJ_ID),t.pure.u64(s),t.pure.bool(i),t.object(u)]})},(oB||(oB={})).GLOBAL_CONFIG="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(td=ow||(ow={})).LAST_PACKAGE_ID="0xbe5f590339c55ca8ebbf93cedfb68aafd479d71e1c57043246f7dcf352745242",td.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??td.LAST_PACKAGE_ID}::magma_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oB.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(tp=ox||(ox={})).LATEST_PACKAGE_ID="0xfab91518218f10204b083dba1e62c8bfc23f14fb87742158043e5faec4670ec4",tp.swap=function(e){let t,o,r;c(e.protocol===ra.METASTABLE,"Invalid protocol");let{txb:a,swapContext:n,aToB:i,amountIn:s,coinAType:u,coinBType:l,poolId:d,metaCoin:p,packageId:_}=e,[m,f]=i?[u,l]:[l,u];m===p?(r="swap_from_meta_coin",t=[p,f],o=[tD.createCap({coinType:f,createCapFunc:"create_withdraw_cap",...e})]):f===p?(r="swap_to_meta_coin",t=[p,m],o=[tD.createCap({coinType:m,createCapFunc:"create_deposit_cap",...e})]):(r="swap",t=[p,m,f],o=[tD.createCap({coinType:m,createCapFunc:"create_deposit_cap",...e}),tD.createCap({coinType:f,createCapFunc:"create_withdraw_cap",...e})]),a.moveCall({target:`${_??tp.LATEST_PACKAGE_ID}::metastable_router::${r}`,typeArguments:t,arguments:[n,a.object(d),a.object(tD.VERSION_OBJ_ID),...o,a.pure.u64(s)]})},(oR||(oR={})).VERSION_OBJ_ID="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a",(t_=oD||(oD={})).LAST_PACKAGE_ID="0xba7ab4c8c39024fa0052bb4f00548a2e7b60742bb4ed0b87bc1d945fd8209102",t_.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??t_.LAST_PACKAGE_ID}::momentum_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(oR.VERSION_OBJ_ID),t.object(u)]})},(ov||(ov={})).CONFIGURATION_OBJ_ID="0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4",(tm=oL||(oL={})).LAST_PACKAGE_ID="0x5a259db4b1d17fafc09185c9a71bac36f25f9ee462e72894c8610e5a58b79f8f",tm.swap=function(e){c(e.protocol===ra.MOVEPUMP,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,expectedAmountOut:s,packageId:l}=e;t.moveCall({target:`${l??tm.LAST_PACKAGE_ID}::movepump_router::swap`,typeArguments:[n?a:r],arguments:[o,t.object(ov.CONFIGURATION_OBJ_ID),t.object(t8.DEX_INFO_OBJ_ID),t.object(u),t.pure.u64(s),t.pure.bool(n),t.pure.u64(i)]})},(ok||(ok={})).STATE_OBJ_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",(tf=oU||(oU={})).LAST_PACKAGE_ID="0xd615fed37d692280047068e80d3a6bb685aa9d574608054c9df881d6a7378fab",tf.swap=function(e){let t,o;c(e.protocol===ra.OBRIC);let{txb:r,swapContext:a,poolId:n,coinAType:i,coinBType:s,aToB:l,amountIn:d,pythInfoObjectIdMap:p,packageId:_}=e;"priceInfoObjIdA"in e?(t=e.priceInfoObjIdA,o=e.priceInfoObjIdB):(t=p.get(e.pythPriceFeedIdA),o=p.get(e.pythPriceFeedIdB),c(t,"Not found priceInfoAId in pythObjectIdMap"),c(o,"Not found priceInfoBId in pythObjectIdMap")),r.moveCall({target:`${_??tf.LAST_PACKAGE_ID}::obric_router::swap`,typeArguments:[i,s],arguments:[a,r.object(n),r.pure.u64(d),r.pure.bool(l),r.object(ok.STATE_OBJ_ID),r.object(t),r.object(o),r.object(u)]})},(tg=oN||(oN={})).VERSION_OBJ_ID="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",tg.MARKET_OBJ_ID="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",(tA=oj||(oj={})).LAST_PACKAGE_ID="0xea409bb08c8a09e4127f859d9c36b8b62ca609282aa1e443091db6b7a7409ee7",tA.swap=function(e){c(e.protocol===ra.SCALLOP);let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,scoinTreasury:s,packageId:l}=e;t.moveCall({target:`${l??tA.LAST_PACKAGE_ID}::scallop_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oN.VERSION_OBJ_ID),t.object(oN.MARKET_OBJ_ID),t.object(s),t.pure.u64(i),t.pure.bool(n),t.object(u)]})},(oG||(oG={})).ORACLE_HOLDER_OBJ_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",(tb=oK||(oK={})).LAST_PACKAGE_ID="0x918a30e2a05d24ea9451e2d2900d055f74e6752f2e10251fa50c7175831b1958",tb.swap=function(e){c(e.protocol===ra.SEVENK_CPMM,"Invalid protocol for sevenk_cpmm_router swap");let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,coinLpType:u,oracleConfigA:l,oracleConfigB:d,pythPriceFeedIdA:p,pythPriceFeedIdB:_,pythInfoObjectIdMap:m,packageId:f}=e,g=m.get(p),A=m.get(_);c(g,"Not found priceInfoAId in pythObjectIdMap"),c(A,"Not found priceInfoBId in pythObjectIdMap");let b=tW.newHolder(t);tW.getPrice({txb:t,coinPriceId:p,holder:b,coinOracleId:l}),tW.getPrice({txb:t,coinPriceId:_,holder:b,coinOracleId:d}),t.moveCall({target:`${f??tb.LAST_PACKAGE_ID}::sevenk_cpmm_router::swap`,typeArguments:[a,n,u],arguments:[o,t.object(r),t.object(oG.ORACLE_HOLDER_OBJ_ID),t.pure.bool(i),t.pure.u64(s)]})},(oq||(oq={})).CONFIGURATION_OBJ_ID="0xe79fff6c77d81f9a8efb729e25bf0037deec42518d40b978f274a4915d7e1ec9",(tI=o$||(o$={})).LAST_PACKAGE_ID="0x0a5dc665dc3c1c846a6d1e00811c84cae3510c839ab4dc0873f85dc8908d0606",tI.swap=function(e){c(e.protocol===ra.SEVENK_FUN,"Invalid protocol");let{txb:t,swapContext:o,aToB:r,amountIn:a,coinBType:n,packageId:i}=e;t.moveCall({target:`${i??tI.LAST_PACKAGE_ID}::sevenk_fun_router::swap`,typeArguments:[n],arguments:[o,t.object(oq.CONFIGURATION_OBJ_ID),t.object(of.CONTAINER_OBJ_ID),t.object(u),t.pure.bool(r),t.pure.u64(a)]})},(tT=oY||(oY={})).LAST_PACKAGE_ID="0xa6d129c0b314e85d1bc5aecf305d64212bdd5d466457531f4f624fef5f2e7751",tT.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??tT.LAST_PACKAGE_ID}::springsui_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(l),t.pure.u64(a),t.pure.bool(n)]})},(oV||(oV={})).CONFIG_OBJ_ID="0x881fd0a12ca4fa48991f5c27ba57d17f1ec147fa15f43b3cb760cc3bd7ba9402",(tC=oJ||(oJ={})).LAST_PACKAGE_ID="0xa314a64962ed4b91a6b4085de4dff2e631fd4c731dbca671a74489955df322ef",tC.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,packageId:c}=e,u=[o,t.object(r),t.object(oV.CONFIG_OBJ_ID),t.pure.bool(a),t.pure.u64(n),t.object("0x6")];t.moveCall({target:`${c??tC.LAST_PACKAGE_ID}::srm_cpmm_router::swap`,typeArguments:[i,s],arguments:u})},(tM=(tO=oH||(oH={})).Oracle||(tO.Oracle={})).PACKAGE_ID="0xe84b649199654d18c38e727212f5d8dacfc3cf78d60d0a7fc85fd589f280eb2b",tM.getPythPrice=function(e){let{txb:t,oracleRegistryId:o,priceInfoId:r,oracleIndex:a}=e;return t.moveCall({target:`${tM.PACKAGE_ID}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(o),t.object(r),t.pure.u64(a),t.object(u)]})};var r$=oX||(oX={});function rY(e,t){c(e.protocol===ra.STEAMM_OMM||e.protocol===ra.STEAMM_OMM_V2,"Invalid protocol for steamm _swapOmm swap");let{txb:o,swapContext:r,poolId:a,coinAType:n,coinBType:i,aToB:s,amountIn:l,bankAId:d,bankBId:p,lendingMarketId:_,lendingMarketType:m,bCoinAType:f,bCoinBType:g,lpBCoinType:A,pythPriceFeedIdA:b,pythPriceFeedIdB:I,pythInfoObjectIdMap:T,oracleRegistryId:C,oracleIndexA:O,oracleIndexB:M,packageId:E}=e,y=T.get(b),h=T.get(I);c(y,"Not found priceInfoAId in pythObjectIdMap"),c(h,"Not found priceInfoBId in pythObjectIdMap");let S=oH.Oracle.getPythPrice({txb:o,oracleRegistryId:C,priceInfoId:y,oracleIndex:O}),F=oH.Oracle.getPythPrice({txb:o,oracleRegistryId:C,priceInfoId:h,oracleIndex:M});o.moveCall({target:`${E??r$.LAST_PACKAGE_ID}::${rV(t)}::swap`,typeArguments:[m,n,i,f,g,A],arguments:[r,o.object(a),o.object(d),o.object(p),o.object(_),S,F,o.pure.bool(s),o.pure.u64(l),o.object(u)]})}function rV(e){switch(e){case 0:return"steamm_omm_router";case 1:return"steamm_omm_v2_router"}}function rJ(e){let{amountOut:t,aggregatorFeeBps:o,partnerFeeBps:r}=e,a=rH(t,o);return r&&(a=rH(a,r)),a}function rH(e,t){let o=BigInt(e)*BigInt(t)/BigInt(1e4);return(BigInt(e)-o).toString()}function rX(e){return Math.floor(100*e)}r$.LAST_PACKAGE_ID="0xd606880d67c399f349758111a91582d5515f31dd051632402653d872818f594e",r$.swapCpmm=function(e){c(e.protocol===ra.STEAMM_CPMM,"Invalid protocol for steamm_cpmm_router swap");let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,bankAId:l,bankBId:d,lendingMarketId:p,lendingMarketType:_,bCoinAType:m,bCoinBType:f,lpBCoinType:g}=e;t.moveCall({target:`${r$.LAST_PACKAGE_ID}::steamm_cpmm_router::swap`,typeArguments:[_,a,n,m,f,g],arguments:[o,t.object(r),t.object(l),t.object(d),t.object(p),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},r$.swapOmm=function(e){rY(e,0)},r$.swapOmmV2=function(e){rY(e,1)},r$.getOmmRouterModule=rV,(tE=oW||(oW={})).LAST_PACKAGE_ID="0x7a1cf89025a60161e84809784d772263231fad08a7cb76a88ca1ba69e0a656da",tE.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??tE.LAST_PACKAGE_ID}::suiswap_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(ty=oz||(oz={})).VERSIONED="0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676",ty.POOL_REGISTRY="0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd",(th=oQ||(oQ={})).LAST_PACKAGE_ID="0x79957062a7424ed9c2eb83932e4c4fcc3fee67ab3c8f6f874c54e417178bbb7a",th.swap=function(e){c(e.protocol===ra.TRADEPORT_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,poolFeeRate:s,packageId:l}=e;t.moveCall({target:`${l??th.LAST_PACKAGE_ID}::tradeport_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oz.POOL_REGISTRY),t.pure.u64(s),t.object(oz.VERSIONED),t.pure.bool(n),t.pure.u64(i),t.object(u)]})},(oZ||(oZ={})).POOL_VERSIONED="0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f",(tS=o0||(o0={})).LAST_PACKAGE_ID="0x512d63711ff38353fb167238b0529001b6871c1727c67ce3bf6ec23556b0f1da",tS.swap=function(e){c(e.protocol===ra.TURBOS_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,coinFeeType:n,poolId:i,aToB:s,amountIn:l,packageId:d}=e;t.moveCall({target:`${d??tS.LAST_PACKAGE_ID}::turbos_clmm_router::swap`,typeArguments:[r,a,n],arguments:[o,t.object(i),t.object(oZ.POOL_VERSIONED),t.pure.bool(s),t.pure.u64(l),t.object(u)]})},(o1||(o1={})).CONFIGURATION_OBJ_ID="0xd86685fc3c3d989385b9311ef55bfc01653105670209ac4276ebb6c83d7df928",(tF=o4||(o4={})).LAST_PACKAGE_ID="0x1fad13f09797aa87a4385d0b1efb2de963ba16742447b1ad5a3b0c5b1d1c588b",tF.swap=function(e){c(e.protocol===ra.TURBOS_FUN,"Invalid protocol");let{txb:t,swapContext:o,coinBType:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??tF.LAST_PACKAGE_ID}::turbos_fun_router::swap`,typeArguments:[r],arguments:[o,t.object(o1.CONFIGURATION_OBJ_ID),t.object(u),t.pure.bool(a),t.pure.u64(n)]})},(o6||(o6={})).VOLO_CERT_METADATA_ID="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",(tP=o3||(o3={})).LAST_PACKAGE_ID="0x7c8d95256342f904d5f251776903a17905d87c95f387b3a35cc2aecc23b3c042",tP.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??tP.LAST_PACKAGE_ID}::volo_router::swap`,arguments:[o,t.object(r),t.object(o6.VOLO_CERT_METADATA_ID),t.object(l),t.pure.bool(a),t.pure.u64(n)]})},(tB=o2||(o2={})).RouterSwapFunctionMap={[ra.AFTERMATH_CPMM]:tZ.swap,[ra.AFTERMATH_LSD]:t1.swap,[ra.ALPHAFI_LSD]:t4.swap,[ra.BLASTFUN]:t3.swap,[ra.BLUEFIN_CLMM]:t5.swap,[ra.BLUEMOVE_CPMM]:t9.swap,[ra.BOLT]:oe.swap,[ra.CETUS_CLMM]:oo.swap,[ra.CETUS_DLMM]:oa.swap,[ra.DEEPBOOK_V3]:oi.swap,[ra.DIP_CPMM]:oc.swap,[ra.FERRA_CLMM]:ol.swap,[ra.FERRA_DLMM]:op.swap,[ra.FLOWX_CPMM]:og.swap,[ra.FLOWX_CLMM]:om.swap,[ra.FULLSAIL_CLMM]:ob.swap,[ra.HAEDAL_CPMM]:oI.swap,[ra.HAEDAL_CPMM_V2]:oT.swap,[ra.HAEDAL_LSD]:oC.swap,[ra.HAEDAL_LSD_WAL]:oE.swap,[ra.KRIYA_CLMM]:oh.swap,[ra.KRIYA_CPMM]:oS.swap,[ra.MAGMA_ALMM]:oP.swap,[ra.MAGMA_CLMM]:ow.swap,[ra.METASTABLE]:ox.swap,[ra.MOMENTUM_CLMM]:oD.swap,[ra.MOVEPUMP]:oL.swap,[ra.OBRIC]:oU.swap,[ra.SCALLOP]:oj.swap,[ra.SEVENK_CPMM]:oK.swap,[ra.SEVENK_FUN]:o$.swap,[ra.SPRINGSUI]:oY.swap,[ra.SRM_CPMM]:oJ.swap,[ra.STEAMM_CPMM]:oX.swapCpmm,[ra.STEAMM_OMM]:oX.swapOmm,[ra.STEAMM_OMM_V2]:oX.swapOmmV2,[ra.SUISWAP_CPMM]:oW.swap,[ra.TRADEPORT_CLMM]:oQ.swap,[ra.TURBOS_CLMM]:o0.swap,[ra.TURBOS_FUN]:o4.swap,[ra.VOLO]:o3.swap},tB.swap=function(e){(0,tB.RouterSwapFunctionMap[e.protocol])(e)},(o5||(o5={})).buildAggregatorSwapTransaction=async function(e){let{tx:t,coinOutType:o,tradePaths:r,pythConnections:a,pythClient:n,packageIdMap:i}=e,s=tw.openSwap(e),c=await tz.updatePythPriceIDs({priceFeedIds:function(e){let t=new Set;for(let o of e)"pythPriceFeedIdA"in o&&t.add(o.pythPriceFeedIdA),"pythPriceFeedIdB"in o&&t.add(o.pythPriceFeedIdB),"pythPriceFeedIdBase"in o&&t.add(o.pythPriceFeedIdBase),"pythPriceFeedIdMeta"in o&&t.add(o.pythPriceFeedIdMeta),"pythPriceFeedIdEth"in o&&t.add(o.pythPriceFeedIdEth);return[...t]}(r),txb:t,pythClient:n,pythConnections:a});for(let e=0;e<r.length;e++){let o=r[e],[a,n]=o.aToB?[o.coinInType,o.coinOutType]:[o.coinOutType,o.coinInType];o2.swap({...o,txb:t,swapContext:s,amountIn:o.amountIn,coinAType:a,coinBType:n,packageId:i?.get(o.protocol),pythInfoObjectIdMap:c})}return tw.closeSwap({tx:t,coinOutType:o,swapSession:s})};let rW=tz.newPythConnections(),rz=tz.newPythClient();var rQ=o8||(o8={});function rZ(e){var t,o;let r,a,{buildTxParam:n,rawRouteParam:i}=e;switch(i.sourceRoute){case"CETUS":r=tv.convert(i.rawRoute);break;case"FLOWX":r=tL.convert(i.rawRoute);break;case"SEVENK":r=tx.convert(i.rawRoute);break;default:throw Error("Unsupported source route")}let s=rX(n.aggregatorFeeRatePercent),c=n.partnerFeeRatePercent?rX(n.partnerFeeRatePercent):void 0,u=n.expectedAmountOut??rJ({amountOut:r.amountOut,aggregatorFeeBps:s,partnerFeeBps:c}),l=(o=(t=n.slippagePercent)?Math.floor(100*t):100,a=BigInt(u)*BigInt(o??100)/BigInt(1e4),(BigInt(u)-a).toString());return{...n,...r,expectedAmountOut:u,minAmountOut:l,aggregatorFeeBps:s,partnerFeeBps:c,pythConnections:n.pythConnections??rW,pythClient:n.pythClient??rz}}rQ.toMetaAggregatorBuildTxParams=rZ,rQ.buildTx=function(e){let t=rZ(e);return o5.buildAggregatorSwapTransaction(t)};let r0=async(e,t,o)=>t<=0?e():new Promise((r,a)=>{let n=setTimeout(()=>a(new rN(`Timeout ${o??"operation"}`,rU.TIMEOUT,{timeout:t})),t);e().then(r).catch(a).finally(()=>clearTimeout(n))}),r1=(e,t,o,r=0)=>{if(t>1e4)throw Error("Slippage must be less than 100%");if(o>1e4)throw Error("Commission must be less than 100%");if(r>1e4)throw Error("Tip must be less than 100%");let a=BigInt(e),n=a*BigInt(r||0)/10000n,i=(a-n)*BigInt(o)/10000n,s=a-n-i;return{tipAmount:n,minAmount:s*BigInt(1e4-t)/10000n,commissionAmount:i,expectedAmount:s.toString(10)}},r4={SEVENK:{},FLOWX:{},CETUS:{}};class r6{client;jsonRpcClient;providers={};options;constructor(e){this.options={providers:{...r4,...e?.providers},clients:e.clients,slippageBps:e?.slippageBps??100,hermesApi:e?.hermesApi??tz.PYTH_URLS,partner:e?.partner??eM,partnerCommissionBps:e?.partnerCommissionBps??0,tipBps:e?.tipBps??0},this.client=e.clients.grpc,this.jsonRpcClient=e.clients.jsonRpc}async getQuoteClient(e){let t=this.providers[e];if(t)return t;let o=this.options.providers[e];switch(rN.assert(!!o,`Provider not found: ${e}`,rU.PROVIDER_NOT_FOUND,{provider:e}),e){case"SEVENK":{let{Bluefin7kClient:e}=await Promise.resolve(o9).catch(r3("SEVENK"));this.providers.SEVENK=new e(o,this.client);break}case"FLOWX":{let{FlowxClient:e}=await Promise.resolve(re).catch(r3("FLOWX"));this.providers.FLOWX=new e(o);break}case"CETUS":{let{CetusClient:e}=await Promise.resolve(o7).catch(r3("CETUS"));this.providers.CETUS=new e(o,this.options,this.client);break}default:throw new rN(`Provider not supported: ${e}`,rU.PROVIDER_NOT_SUPPORTED,{provider:e})}return this.providers[e]}async getQuoteByClient(e,t){return await r0(async()=>{let o=await e.quote(t);return o?(o.amountOut=rJ({amountOut:o.amountOut,partnerFeeBps:this.options.partnerCommissionBps,aggregatorFeeBps:this.options.tipBps}),o):null},t.timeout??2e3,`quote for ${e.kind} provider from ${t.coinTypeIn} to ${t.coinTypeOut}`)}async getQuote(e){let t={...e,coinTypeIn:_(e.coinTypeIn),coinTypeOut:_(e.coinTypeOut)};return(await Promise.allSettled(Object.entries(this.options.providers).filter(([e,t])=>!t.disabled).map(async([e])=>{let o=await this.getQuoteClient(e);return this.getQuoteByClient(o,t)}))).map(e=>"fulfilled"===e.status?e.value:(console.warn(e.reason),null)).filter(e=>null!==e)}async swap(e){let{quote:t,signer:o,tx:r,coinIn:a,slippageBps:n}=e,i=m(o);rN.assert(p(i),`Invalid signer address: ${o}`,rU.INVALID_SIGNER_ADDRESS,{signer:o}),r.setSender(i);let s=(n??this.options.slippageBps)/1e4,c=this.options.partner&&this.options.partner!==eM?this.options.partner:void 0,u=c&&this.options.partnerCommissionBps>0?this.options.partnerCommissionBps/1e4:void 0;return o8.buildTx({buildTxParam:{tx:r,inputCoin:a,expectedAmountOut:t.amountOut,slippagePercent:s,aggregatorFeeRatePercent:this.options.tipBps/1e4,aggregatorFeeRecipient:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff",partnerFeeRatePercent:u,partnerFeeRecipient:c,pythConnections:tz.newPythConnections(this.options.hermesApi),pythClient:tz.newPythClient(this.jsonRpcClient)},rawRouteParam:{...t}})}}let r3=e=>t=>{throw console.warn(`Please install ${{CETUS:"@cetusprotocol/aggregator-sdk",FLOWX:"@flowx-finance/sdk",SEVENK:"@bluefin-exchange/bluefin7k-aggregator-sdk"}[e]} to use ${e} provider`),t},r2=new Set([rf.SEVENK,rf.CETUS,rf.FLOWX]);function r5(e){let t=Object.values(rf);return e?t.filter(e=>r2.has(e)):t}class r8{sdk;_astrosAggregator;_aftermathAggregator;_sevenkAggregator;_cetusAggregator;_flowXAggregator;constructor(e){this.sdk=e,this._astrosAggregator=new r_({defaultTradeFee:e.options.tradeFee,astrosApiKey:e.options.astrosApiKey},e.suiJsonRpcClient),this._aftermathAggregator=new ru({defaultTradeFee:e.options.tradeFee,aftermathApiKey:e.options.aftermathApiKey,aftermathApiEndpoint:e.options.aftermathApiEndpoint},e.suiJsonRpcClient),this._sevenkAggregator=new ri({defaultTradeFee:e.options.tradeFee,sevenKApiKey:e.options.sevenKApiKey},e.suiClient),this._cetusAggregator=new rm({defaultTradeFee:e.options.tradeFee,cetusApiKey:e.options.cetusApiKey,cetusApiEndpoint:e.options.cetusApiEndpoint,cetusPartnerId:e.options.cetusPartnerId},e.suiClient),this._flowXAggregator=new rg({defaultTradeFee:e.options.tradeFee,flowxApiKey:e.options.flowxApiKey},e.suiClient)}get astrosAggregator(){return this._astrosAggregator}get aftermathAggregator(){return this._aftermathAggregator}get sevenkAggregator(){return this._sevenkAggregator}get cetusAggregator(){return this._cetusAggregator}get flowXAggregator(){return this._flowXAggregator}async getTradeRoute(e,t){let o;switch(e){case rf.ASTROS:{let e,r=await this._astrosAggregator.getTradeRoute(t);if(!r)return null;let a=r_.toCommonTradeRoutes(r,t.coinInType,t.coinOutType);if(!a)return null;e=t.tradeFee?t.tradeFee.tradeFeePercent:this.sdk.options.tradeFee.tradeFeePercent,a.amountOut=BigInt(new s(r.amount_out).multipliedBy(1-e).toFixed(0,3)),o={route:a,aggregatorRoute:r};break}case rf.AFTERMATH:{let e=await this._aftermathAggregator.getTradeRoute(t);if(!e)return null;let r=ru.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rf.SEVENK:{let e=await this._sevenkAggregator.getTradeRoute(t);if(!e)return null;let r=ri.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rf.CETUS:{let e=await this._cetusAggregator.getTradeRoute(t);if(!e)return null;let r=rm.toCommonTradeRoutes(e,t.coinInType,t.coinOutType);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rf.FLOWX:{let e=await this._flowXAggregator.getTradeRoute(t);if(!e)return null;let r=rg.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e}}}return o}async getTransactionByRoute(e,t){switch(e){case rf.ASTROS:return this._astrosAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rf.AFTERMATH:return this._aftermathAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage});case rf.SEVENK:return this._sevenkAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rf.CETUS:return this._cetusAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rf.FLOWX:return this._flowXAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee})}}async getTradeTransaction(e,t){let o=await this.getTradeRoute(e,{coinInAmount:t.coinInAmount,coinInType:t.coinInType,coinOutType:t.coinOutType,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});if(!o)return null;let r=await this.getTransactionByRoute(e,{walletAddress:t.walletAddress,completeRoute:o.aggregatorRoute,slippage:t.slippage,tradeFee:t.tradeFee});return{route:o.route,aggregatorRoute:o.aggregatorRoute,transaction:r}}async getTradeTransactionWithBestRate(e){let t=r5(e.metaAggregator),o=await Promise.all(t.map(async t=>{try{return await this.getTradeRoute(t,e)}catch{return null}})),r=null,a=null;for(let e=0;e<o.length;e++){let n=o[e],i=t[e];if(n&&(!r||n.route.amountOut>r.route.amountOut)){r=n,a=i;continue}}if(!r||!a)return null;let n=await this.getTransactionByRoute(a,{walletAddress:e.walletAddress,completeRoute:r.aggregatorRoute,slippage:e.slippage,tradeFee:e.tradeFee});return{route:r.route,aggregatorRoute:r.aggregatorRoute,transaction:n}}async getAmountOut(e,t){let o=await this.getTradeRoute(e,t);return o?o.route.amountOut:null}async getBestAmountOut(e){let t=r5(e.metaAggregator),o=null,r=null;for(let a of t){let t=await this.getAmountOut(a,e);null!==t&&(null===o||t>o)&&(o=t,r=a)}return null===o||null===r?null:{amountOut:o,aggregator:r}}}class r9{sdk;constructor(e){this.sdk=e}async getEstimatedAmountOut(e,t){let{coinInType:o,coinOutType:r}=t;c(o!==r,"coinInType and coinOutType must be different"),c(eT(o)||eT(r),"One of coinInType or coinOutType must be SUI");let a=eT(o);switch(e){case rD.MOONBAGS:if(a)return await tH.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);return await tH.getSuiAmountAfterSell({poolId:t.poolId,curveAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);case rD.BLAST_FUN:if(a)return await t$.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});return await t$.getSuiAmountAfterSell({poolId:t.poolId,curveAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});default:throw Error(`Unsupported bonding curve platform: ${e}`)}}async getTradeTransaction(e,t){let o,{coinInType:r,coinOutType:a}=t;c(r!==a,"coinInType and coinOutType must be different"),c(eT(r)||eT(a),"One of coinInType or coinOutType must be SUI");let n=eT(r);switch(e){case rD.MOONBAGS:o=n?await tX.getBuyTransaction(t,this.sdk.suiClient):await tX.getSellTransaction(t,this.sdk.suiClient);break;case rD.BLAST_FUN:o=n?await tY.getBuyTransaction(t,this.sdk.suiClient):await tY.getSellTransaction(t,this.sdk.suiClient);break;default:throw Error(`Unsupported bonding curve platform: ${e}`)}return o}}let r7={tradeFeePercent:.01,tradeFeeRecipientAddress:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff"};class ae{network;env;options;_suiGrpcClient;_suiJsonRpcClient;aggregatorModule;curveModule;constructor(e,t="mainnet",o="prod"){this.options=e,this.network=t,this.env=o,this._suiGrpcClient=e.clients.grpc,this._suiJsonRpcClient=e.clients.jsonRpc,this.aggregatorModule=new r8(this),this.curveModule=new r9(this)}get suiClient(){return this._suiGrpcClient}get suiJsonRpcClient(){return this._suiJsonRpcClient}}class at{suiClient;constructor(e){this.suiClient=e}validatePrivateKey(e,t){c(e?.trim(),"Private key is required");let o=el.fromSecretKey(e),r=o.getPublicKey().toSuiAddress();if(r!==t)throw Error(`Private key mismatch. Expected: ${t}, Got: ${r}`);return o}async createDraft(e,t,o){c(e?.trim(),"Sender address is required"),c(t?.trim(),"Recipient address is required"),c(e!==t,"Sender and recipient cannot be the same"),c(o>0n,"Transfer amount must be at least 1 MIST");try{let r=new i,[a]=r.splitCoins(r.gas,[o]);r.transferObjects([a],t),r.setSender(e);let{referenceGasPrice:n}=await this.suiClient.getReferenceGasPrice();r.setGasPrice(n);let s=await eC(this.suiClient,r,e,.1);r=await eO({inheritTx:r,sender:e,feeAmount:s,suiInputAmount:o},this.suiClient);let c=await r.build({client:this.suiClient}),u=Buffer.from(c).toString("base64"),l=await r.getDigest();return{sender:e,recipient:t,amountMIST:o,txDraftBase64:u,txDigest:l}}catch(e){throw Error(`Failed to create draft transaction: ${e instanceof Error?e.message:"Unknown error"}`)}}async execute(e,t){try{c(e,"Draft transaction is required"),c(e.txDraftBase64?.trim(),"Transaction data is required");let o=this.validatePrivateKey(t,e.sender),r=d(e.txDraftBase64),{signature:a}=await o.signTransaction(r),n=await this.suiClient.executeTransaction({transaction:r,signatures:[a],include:{effects:!0}}),i="Transaction"===n.$kind?n.Transaction:n.FailedTransaction,{status:s}=i;return{success:s.success,txDigest:i.digest,effects:i.effects,error:s.success?void 0:s.error.message}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Unknown error occurred"}}}async getTransactionStatus(e){c(e?.trim(),"Transaction digest is required");try{let t=await this.suiClient.getTransaction({digest:e,include:{effects:!0}}),o="Transaction"===t.$kind?t.Transaction:t.FailedTransaction;if(!o.effects?.status)return"pending";return o.effects.status.success?"success":"failure"}catch(e){if(e instanceof Error&&(e.message.includes("not found")||e.message.includes("Could not find")))return"pending";return"failure"}}}var ao=1e4;export{ADMIN_CAP_ID,BOOSTING_PACKAGE_ID,BoostingModule,CLOCK_OBJECT_ID,CONFIG_ID,NATIVE_USDC_TOKEN_TYPE,NoodlesPaySdk,SUBSCRIPTION_CONFIG,SUI_ADDRESS_ZERO,SUI_FULL_TYPE,SUI_METADATA_OBJECT_ID,SUI_TYPE,SubscriptionModule,USDC_TOKEN_TYPE,addGasFee,getAmountAfterFee,getCoinObjectIdsByAmount,getNeededGasFee,getSplitCoinForTx,getSplitCoinsAfterFee,isSuiCoinType}from"./832.js";export{SuiGrpcClient}from"@mysten/sui/grpc";export{r8 as AggregatorModule,rC as BLUEFIN_PACKAGE_ID,r9 as CurveModule,r7 as DEFAULT_TRADE_FEE,at as DraftTransferTx,rN as MetaAgError,r6 as MetaClient,ae as NoodlesSdk,ed as SuiJsonRpcClient,ri as SevenKAggregator,ru as AftermathAggregator,tQ as AftermathCpmm,t0 as AftermathLsd,o8 as AggregatorConverter,r_ as AstrosAggregator,t6 as Blastfun,rj as Bluefin7kClient,tK as BluefinTx,t2 as BluefinClmm,t8 as BluemoveCpmm,t7 as Bolt,tH as MoonbagsCalculation,rm as CetusAggregator,tv as CetusAggregatorConverter,rK as CetusClient,ot as CetusClmm,or as CetusDlmm,rr as checkIsSui,rf as SupportedAggregator,tk as BlastFunConstants,tV as MoonbagsConstants,tG as BlastFunCustomCalculation,tq as BlastFunCustomTransaction,on as DeepbookV3,ro as denormalizeTokenType,os as DipCpmm,rU as MetaAgErrorCode,ao as BASE_BPS,ou as FerraClmm,od as FerraDlmm,rg as FlowXAggregator,tL as FlowXAggregatorConverter,rq as FlowxClient,of as FlowxCpmm,oA as FullsailClmm,r1 as getExpectedReturn,rh as getGrpcFullnodeUrl,rS as getJsonRpcFullnodeUrl,rB as getMemezPumpSDK,rb as getMoveObject,rA as getMoveObjectContent,rF as getTransactionResultDigest,oM as HaedalLsdWal,oy as KriyaClmm,oF as MagmaAlmm,oB as MagmaClmm,o5 as MetaAggregator,tD as Metastable,oR as MomentumClmm,ov as Movepump,rt as normalizeTokenType,ok as Obric,tj as BlastFunPackage,tN as Bps,tU as MathUtils,tJ as MoonbagsPackage,tW as PythPrice,tz as PythUtils,oN as Scallop,t$ as BlastFunSDKCalculation,tY as BlastFunSDKTransaction,tx as SevenKAggregatorConverter,oG as SevenkCpmm,oq as SevenkFun,rO as splitSuiCoinAfterFeeFromBuyTx,rM as splitSuiCoinAfterFeeFromSellTx,oV as SrmCpmm,oH as Steamm,oz as TradeportClmm,tX as MoonbagsTransaction,oZ as TurbosClmm,o1 as TurbosFun,ra as AggregatorProtocol,rD as SupportedBondingCurve,tR as TradeFeeOptions,o2 as RouterUtils,r0 as timeout,o6 as Volo,oO as Walrus};
|
|
1
|
+
let e;import{__webpack_require__ as t}from"./0~rslib-runtime.js";import{BluefinXTx as o,Config as r,buildTx as a,getQuote as n}from"@bluefin-exchange/bluefin7k-aggregator-sdk";import{Transaction as i}from"@mysten/sui/transactions";import s from"bignumber.js";import c from"@minswap/tiny-invariant";import{SUI_CLOCK_OBJECT_ID as u,SUI_SYSTEM_STATE_OBJECT_ID as l,fromBase64 as d,isValidSuiAddress as p,normalizeStructTag as _,normalizeSuiAddress as m,parseStructTag as f,toHex as g}from"@mysten/sui/utils";import{Aftermath as A,AftermathApi as b,Helpers as I}from"aftermath-ts-sdk";import{Dex as T}from"@naviprotocol/astros-aggregator-sdk";import{AFSUI as C,AFTERMATH as O,ALPHAFI as M,AggregatorClient as E,BLUEFIN as y,BLUEMOVE as h,CETUS as S,CETUSDLMM as F,DEEPBOOKV3 as P,Env as B,FERRACLMM as w,FERRADLMM as x,FLOWXV2 as R,FLOWXV3 as D,FULLSAIL as v,HAEDAL as L,HAEDALHMMV2 as k,HAEDALPMM as U,HAWAL as N,KRIYA as j,KRIYAV3 as G,MAGMA as K,METASTABLE as q,MOMENTUM as $,OBRIC as Y,SCALLOP as V,SEVENK as J,SPRINGSUI as H,STEAMM as X,STEAMM_OMM as W,STEAMM_OMM_V2 as z,SUILEND as Q,TURBOS as Z,VOLO as ee}from"@cetusprotocol/aggregator-sdk";import et from"bn.js";import{AggregatorQuoter as eo,Coin as er,Commission as ea,CommissionType as en,Protocol as ei,TradeBuilder as es}from"@flowx-finance/sdk";import{bcs as ec}from"@mysten/sui/bcs";import{Network as eu}from"@interest-protocol/sui-core-sdk";import{Ed25519Keypair as el}from"@mysten/sui/keypairs/ed25519";import{SuiJsonRpcClient as ed,getJsonRpcFullnodeUrl as ep}from"@mysten/sui/jsonRpc";import{SuiPriceServiceConnection as e_,SuiPythClient as em}from"@pythnetwork/pyth-sui-js";import{getAmountAfterFee as ef,getSplitCoinForTx as eg,CLOCK_OBJECT_ID as eA,SUI_METADATA_OBJECT_ID as eb,SUI_TYPE as eI,isSuiCoinType as eT,getNeededGasFee as eC,addGasFee as eO,SUI_ADDRESS_ZERO as eM,getSplitCoinsAfterFee as eE,SUI_FULL_TYPE as ey}from"./832.js";var eh,eS,eF,eP,eB,ew,ex,eR,eD,ev,eL,ek,eU,eN,ej,eG,eK,eq,e$,eY,eV,eJ,eH,eX,eW,ez,eQ,eZ,e0,e1,e4,e6,e3,e2,e5,e8,e9,e7,te,tt,to,tr,ta,tn,ti,ts,tc,tu,tl,td,tp,t_,tm,tf,tg,tA,tb,tI,tT,tC,tO,tM,tE,ty,th,tS,tF,tP,tB,tw,tx,tR,tD,tv,tL,tk,tU,tN,tj,tG,tK,tq,t$,tY,tV,tJ,tH,tX,tW,tz,tQ,tZ,t0,t1,t4,t6,t3,t2,t5,t8,t9,t7,oe,ot,oo,or,oa,on,oi,os,oc,ou,ol,od,op,o_,om,of,og,oA,ob,oI,oT,oC,oO,oM,oE,oy,oh,oS,oF,oP,oB,ow,ox,oR,oD,ov,oL,ok,oU,oN,oj,oG,oK,oq,o$,oY,oV,oJ,oH,oX,oW,oz,oQ,oZ,o0,o1,o4,o6,o3,o2,o5,o8,o9={};t.r(o9),t.d(o9,{Bluefin7kClient:()=>rj});var o7={};t.r(o7),t.d(o7,{CetusClient:()=>rK});var re={};function rt(e){return e===eI?ey:e}function ro(e){return e===ey?eI:e}function rr(e){return e===ey||e===eI}t.r(re),t.d(re,{FlowxClient:()=>rq}),(eh=tw||(tw={})).MAX_AMOUNT_IN="18446744073709551615",eh.LAST_PACKAGE_ID="0x7e57926855b32baa3b3cabed89380b8d415606fdedadc18e58bd1ef1e60aee48",eh.openSwap=function(e){let{tx:t,expectedAmountOut:o,minAmountOut:r,coinInType:a,coinOutType:n,inputCoin:i,aggregatorFeeBps:s,aggregatorFeeRecipient:c,partnerFeeRecipient:u,partnerFeeBps:l}=e,[d]=t.moveCall({target:`${eh.LAST_PACKAGE_ID}::aggregator::open_swap`,typeArguments:[a,n],arguments:[t.pure.u64(o),t.pure.u64(r),i,t.pure.u32(s),t.pure.address(c),t.pure.u32(l??0),t.pure.option("address",u)]});return d},eh.closeSwap=function(e){let{tx:t,coinOutType:o,swapSession:r}=e,[a]=t.moveCall({target:`${eh.LAST_PACKAGE_ID}::aggregator::close_swap`,typeArguments:[o],arguments:[r]});return a};var ra=((eS={}).AFTERMATH_CPMM="aftermath_cpmm",eS.AFTERMATH_LSD="aftermath_lsd",eS.ALPHAFI_LSD="alphafi_lsd",eS.BLASTFUN="blastfun",eS.BLUEFIN_CLMM="bluefin_clmm",eS.BLUEMOVE_CPMM="bluemove_cpmm",eS.BOLT="bolt",eS.CETUS_CLMM="cetus_clmm",eS.CETUS_DLMM="cetus_dlmm",eS.DEEPBOOK_V3="deepbook_v3",eS.DIP_CPMM="dip_cpmm",eS.FLOWX_CPMM="flowx_cpmm",eS.FLOWX_CLMM="flowx_clmm",eS.FULLSAIL_CLMM="fullsail_clmm",eS.FERRA_CLMM="ferra_clmm",eS.FERRA_DLMM="ferra_dlmm",eS.HAEDAL_CPMM="haedal_cpmm",eS.HAEDAL_CPMM_V2="haedal_cpmm_v2",eS.HAEDAL_LSD="haedal_lsd",eS.HAEDAL_LSD_WAL="haedal_lsd_wal",eS.KRIYA_CLMM="kriya_clmm",eS.KRIYA_CPMM="kriya_cpmm",eS.MAGMA_ALMM="magma_almm",eS.MAGMA_CLMM="magma_clmm",eS.METASTABLE="metastable",eS.MOMENTUM_CLMM="momentum_clmm",eS.MOVEPUMP="movepump",eS.OBRIC="obric",eS.SCALLOP="scallop",eS.SEVENK_CPMM="sevenk_cpmm",eS.SEVENK_FUN="sevenk_fun",eS.SPRINGSUI="springsui",eS.SRM_CPMM="srm_cpmm",eS.STEAMM_CPMM="steamm_cpmm",eS.SUISWAP_CPMM="suiswap_cpmm",eS.STEAMM_OMM="steamm_omm",eS.STEAMM_OMM_V2="steamm_omm_v2",eS.TRADEPORT_CLMM="tradeport_clmm",eS.TURBOS_CLMM="turbos_clmm",eS.TURBOS_FUN="turbos_fun",eS.VOLO="volo",eS);function rn(e,t){console.error(`NOODLES_SDK_AGGREGATOR_ROUTE_ERROR aggregator=${e} error=${function(e){if(e instanceof Error)return`${e.name}: ${e.message}`;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}(t)}`)}!function(e){let t=new Set(["bluefinx","RFQ"]);e.SUPPORTED_PROTOCOLS=["suiswap","turbos","cetus","bluemove","kriya","kriya_v3","aftermath","deepbook_v3","flowx","flowx_v3","bluefin","springsui","obric","stsui","steamm","steamm_oracle_quoter","steamm_oracle_quoter_v2","magma","haedal_pmm","momentum","sevenk_v1","fullsail","cetus_dlmm","ferra_dlmm","ferra_clmm"];let o={aftermath:e=>{c(e.extra?.poolStructTag,"Aftermath protocol requires poolStructTag");let[t]=i(e.extra.poolStructTag);return{...n(e),protocol:ra.AFTERMATH_CPMM,coinLpType:t}},flowx_v3:e=>{c(e.extra?.swapFeeRate,"flowx_v3 protocol requires swapFeeRate");let t=e.extra.swapFeeRate;return{...n(e),protocol:ra.FLOWX_CLMM,poolFeeRate:t}},turbos:e=>{c(e.extra?.poolStructTag,"turbos protocol requires poolStructTag");let[t,o,r]=i(e.extra.poolStructTag);return{...n(e),protocol:ra.TURBOS_CLMM,coinFeeType:r}},obric:e=>(c(e.extra?.oracles,"obric protocol requires oracles"),{...n(e),protocol:ra.OBRIC,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1])}),haedal_pmm:e=>(c(e.extra.oracles,"haedal_pmm protocol requires oracles"),{...n(e),protocol:ra.HAEDAL_CPMM,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1])}),sevenk_v1:e=>{c(e.extra?.poolStructTag,"sevenk_v1 protocol requires poolStructTag"),c(e.extra?.oracleConfigX,"sevenk_v1 protocol requires oracleConfigX"),c(e.extra?.oracleConfigY,"sevenk_v1 protocol requires oracleConfigY");let t=e.extra.oracles?.[0]?.Pyth?.bytes,o=e.extra.oracles?.[1]?.Pyth?.bytes;c(t,"sevenk_v1 protocol requires pythPriceFeedIdA"),c(o,"sevenk_v1 protocol requires pythPriceFeedIdB");let[r,a,s]=i(e.extra.poolStructTag);return{...n(e),protocol:ra.SEVENK_CPMM,coinLpType:s,pythPriceFeedIdA:t,pythPriceFeedIdB:o,oracleConfigA:e.extra.oracleConfigX,oracleConfigB:e.extra.oracleConfigY}},steamm:e=>{c(e.extra?.poolStructTag,"steamm protocol requires poolStructTag"),c(e.extra?.bankAStructTag,"steamm protocol requires bankAStructTag"),c(e.extra?.lendingMarketA,"steamm protocol requires lendingMarketA"),c(e.extra?.bankA,"steamm protocol requires bankA"),c(e.extra?.bankB,"steamm protocol requires bankB");let[t,o,r,a]=i(e.extra.poolStructTag),[s,u,l]=i(e.extra.bankAStructTag);return{...n(e),protocol:ra.STEAMM_CPMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:s,bCoinAType:t,bCoinBType:o,lpBCoinType:a}},steamm_oracle_quoter:e=>{c(e.extra?.poolStructTag,"steamm_oracle_quoter protocol requires poolStructTag"),c(e.extra?.bankAStructTag,"steamm_oracle_quoter protocol requires bankAStructTag"),c(e.extra?.lendingMarketA,"steamm_oracle_quoter protocol requires lendingMarketA"),c(e.extra?.oracleRegistry,"steamm_oracle_quoter protocol requires oracleRegistry"),c(e.extra?.bankA,"steamm_oracle_quoter protocol requires bankA"),c(e.extra?.bankB,"steamm_oracle_quoter protocol requires bankB"),c(e.extra?.oracleIndexes,"steamm_oracle_quoter protocol requires oracleIndexes"),c(e.extra?.oracles,"steamm_oracle_quoter protocol requires oracles");let[t,o,r,a]=i(e.extra?.poolStructTag),[u,l,d]=i(e.extra.bankAStructTag),[p,_]=e.extra.oracleIndexes;return{...n(e),protocol:ra.STEAMM_OMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:u,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:p,oracleIndexB:_}},steamm_oracle_quoter_v2:e=>{c(e.extra?.poolStructTag,"steamm_oracle_quoter_v2 protocol requires poolStructTag"),c(e.extra?.bankAStructTag,"steamm_oracle_quoter_v2 protocol requires bankAStructTag"),c(e.extra?.lendingMarketA,"steamm_oracle_quoter_v2 protocol requires lendingMarketA"),c(e.extra?.oracleRegistry,"steamm_oracle_quoter_v2 protocol requires oracleRegistry"),c(e.extra?.bankA,"steamm_oracle_quoter_v2 protocol requires bankA"),c(e.extra?.bankB,"steamm_oracle_quoter_v2 protocol requires bankB"),c(e.extra?.oracleIndexes,"steamm_oracle_quoter_v2 protocol requires oracleIndexes"),c(e.extra?.oracles,"steamm_oracle_quoter_v2 protocol requires oracles");let[t,o,r,a]=i(e.extra?.poolStructTag),[u,l,d]=i(e.extra.bankAStructTag),[p,_]=e.extra.oracleIndexes;return{...n(e),protocol:ra.STEAMM_OMM_V2,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:u,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:p,oracleIndexB:_}},cetus:e=>({...n(e),protocol:ra.CETUS_CLMM}),bluemove:e=>({...n(e),protocol:ra.BLUEMOVE_CPMM}),kriya:e=>({...n(e),protocol:ra.KRIYA_CPMM}),kriya_v3:e=>({...n(e),protocol:ra.KRIYA_CLMM}),deepbook_v3:e=>({...n(e),protocol:ra.DEEPBOOK_V3}),flowx:e=>({...n(e),protocol:ra.FLOWX_CPMM}),bluefin:e=>({...n(e),protocol:ra.BLUEFIN_CLMM}),springsui:e=>({...n(e),protocol:ra.SPRINGSUI}),magma:e=>({...n(e),protocol:ra.MAGMA_CLMM}),momentum:e=>({...n(e),protocol:ra.MOMENTUM_CLMM}),fullsail:e=>({...n(e),protocol:ra.FULLSAIL_CLMM}),stsui:e=>({...n(e),protocol:ra.ALPHAFI_LSD}),suiswap:e=>({...n(e),protocol:ra.SUISWAP_CPMM}),cetus_dlmm:e=>({...n(e),protocol:ra.CETUS_DLMM}),ferra_dlmm:e=>({...n(e),protocol:ra.FERRA_DLMM}),ferra_clmm:e=>({...n(e),protocol:ra.FERRA_CLMM})};function r(e){let r=e.pool.type;if(t.has(r))throw Error(`Unsupported SourceDex: ${r}`);return(0,o[r])(e)}function a(e){let t=new Map;for(let[o,r]of e.entries())t.set(r.assetIn,o);let o=e.map(r);for(let e of t.values())o[e].amountIn=tw.MAX_AMOUNT_IN;return o}function n(e){return{poolId:e.poolId,coinInType:e.assetIn,coinOutType:e.assetOut,amountIn:e.amount,aToB:e.swapXtoY}}function i(e){return f(e||"").typeParams.map(_)}function s(e){let t=e?.Pyth?.bytes||e?.Pyth?.price_identifier?.bytes;return c(t,"Pyth price feed id is not found"),"0x"+g(Uint8Array.from(t))}e.toMetaAggregatorPath=r,e.toMetaAggregatorPaths=a,e.convert=function(e){var t,o,r;let n;c(e.routes,"Invalid raw route: routes is missing");let i=(t=e.routes,n={},t.forEach(e=>{e.hops.forEach(e=>{n[e.poolId]=e.pool})}),n),s=a((o=e.swaps,r=i,o.map(e=>{let t=r[e.poolId],o=ro(e.assetIn),a=ro(e.assetOut),n={type:ro(t?.allTokens?.[0]?.address),decimals:t?.allTokens?.[0]?.decimal},i={type:ro(t?.allTokens?.[1]?.address),decimals:t?.allTokens?.[0]?.decimal},s=o===n.type;return{...e,pool:t,assetIn:o,assetOut:a,coinX:n,coinY:i,swapXtoY:s}})));return{coinInType:e.tokenIn,coinOutType:e.tokenOut,amountOut:e.returnAmountWithDecimal,tradePaths:s}}}(tx||(tx={}));class ri{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:a,metaAggregator:i,supportedProtocols:s}){try{this._config.sevenKApiKey&&r.setApiKey(this._config.sevenKApiKey);let c=i?0:a?a.tradeFeePercent:this._config.defaultTradeFee.tradeFeePercent,u=s??(i?tx.SUPPORTED_PROTOCOLS:void 0);return await n({tokenIn:t,tokenOut:o,amountIn:e.toString(),commissionBps:1e4*c,sources:u})}catch(e){return rn("sevenk",e),null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:r,tradeFee:n,metaAggregator:s}){let c,u;s?(c=0,u=this._config.defaultTradeFee.tradeFeeRecipientAddress):n?(c=n.tradeFeePercent,u=n.tradeFeeRecipientAddress):(c=this._config.defaultTradeFee.tradeFeePercent,u=this._config.defaultTradeFee.tradeFeeRecipientAddress);let l=await a({quoteResponse:t,slippage:r,accountAddress:e,commission:{partner:u,commissionBps:1e4*c}});return l.tx instanceof o?i.from(l.tx.txBytes).build({client:this._suiClient}):(l.tx.setSender(e),l.tx.build({client:this._suiClient}))}}function rs(e){return"bigint"==typeof e?e:"string"==typeof e&&/^\d+$/.test(e)?BigInt(e):e}function rc(e){return{...e,coinIn:e.coinIn?{...e.coinIn,amount:rs(e.coinIn.amount),tradeFee:rs(e.coinIn.tradeFee)}:e.coinIn,coinOut:e.coinOut?{...e.coinOut,amount:rs(e.coinOut.amount),tradeFee:rs(e.coinOut.tradeFee)}:e.coinOut}}(ri||(ri={})).toCommonTradeRoutes=function(e){let t=[];if(!e.routes||0===e.routes.length)return null;for(let o of e.routes){let e=[],r={};for(let t of o.hops){for(let e of t.pool.allTokens)r[e.address]=e.decimal;let o=r[t.tokenIn]??0,a=r[t.tokenOut]??0,n=BigInt(new s(t.tokenInAmount).multipliedBy(10**o).toFixed(0,3)),i=BigInt(new s(t.tokenOutAmount).multipliedBy(10**a).toFixed(0,3));e.push({poolAddress:t.poolId,coinIn:t.tokenIn,coinOut:t.tokenOut,amountIn:n,amountOut:i})}if(0===e.length)continue;let a=r[o.tokenIn]??0,n=r[o.tokenOut]??0,i=BigInt(new s(o.tokenInAmount).multipliedBy(10**a).toFixed(0,3)),c=BigInt(new s(o.tokenOutAmount).multipliedBy(10**n).toFixed(0,3));t.push({paths:e,coinIn:o.tokenIn,coinOut:o.tokenOut,amountIn:i,amountOut:c})}return 0===t.length?null:{coinIn:e.tokenIn,coinOut:e.tokenOut,amountIn:BigInt(e.swapAmountWithDecimal),amountOut:BigInt(e.returnAmountAfterCommissionWithDecimal),routes:t}};class ru{_config;_aftermathClient;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async aftermathClient(){if(this._aftermathClient)return this._aftermathClient;let e=await A.create({network:"MAINNET",baseUrl:this._config.aftermathApiEndpoint}),t=await e.getAddresses(),o=await A.create({network:"MAINNET",baseUrl:this._config.aftermathApiEndpoint,api:new b(this._suiClient,t)});if(this._config.aftermathApiKey){let e=I.keypairFromPrivateKey(this._config.aftermathApiKey);await o.Auth().init({async signMessageCallback({message:t}){let{signature:o}=await e.signPersonalMessage(t);return{signature:o}},walletAddress:e.toSuiAddress()})}return this._aftermathClient=o,o}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r}){try{let a;a=r?{recipient:r.tradeFeeRecipientAddress,feePercentage:r.tradeFeePercent}:{recipient:this._config.defaultTradeFee.tradeFeeRecipientAddress,feePercentage:this._config.defaultTradeFee.tradeFeePercent};let n=await this.aftermathClient();return await n.Router().getCompleteTradeRouteGivenAmountIn({coinInAmount:e,coinInType:t,coinOutType:o,externalFee:a})}catch(e){return rn("aftermath",e),null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o}){let r=await this.aftermathClient(),a=await r.Router().getTransactionForCompleteTradeRoute({completeRoute:function(e){if("object"!=typeof e||null===e)return e;let t=rc(e);return{...t,routes:Array.isArray(t.routes)?t.routes.map(e=>{let t=rc(e);return{...t,portion:rs(t.portion),paths:Array.isArray(t.paths)?t.paths.map(e=>rc(e)):t.paths}}):t.routes,feeBreakdown:Array.isArray(t.feeBreakdown)?t.feeBreakdown.map(e=>({...e,amount:rs(e.amount)})):t.feeBreakdown}}(e),walletAddress:t,slippage:o+(e.netTradeFeePercentage??0),isSponsoredTx:!1});return a.setSender(t),a.build({client:this._suiClient})}}(ru||(ru={})).toCommonTradeRoutes=function(e){if(0===e.routes.length)return null;let t=[];for(let o of e.routes){let e=[];for(let t of o.paths)e.push({poolAddress:t.poolId,coinIn:t.coinIn.type,coinOut:t.coinOut.type,amountIn:BigInt(t.coinIn.amount),amountOut:BigInt(t.coinOut.amount)});0!==e.length&&t.push({paths:e,coinIn:o.coinIn.type,coinOut:o.coinOut.type,amountIn:o.coinIn.amount,amountOut:o.coinOut.amount})}return 0===t.length?null:{coinIn:e.coinIn.type,coinOut:e.coinOut.type,amountIn:e.coinIn.amount,amountOut:e.coinOut.amount,routes:t}};let rl=new Set([T.MAGMA]),rd=[T.CETUS,T.TURBOS,T.KRIYA_V2,T.KRIYA_V3,T.AFTERMATH,T.DEEPBOOK,T.BLUEFIN,T.VSUI,T.HASUI,T.MOMENTUM,T.FLOWX,T.MAGMA_ALMM];function rp(e){return e.routes.some(e=>!!Array.isArray(e.path)&&e.path.some(e=>rl.has(e.provider??"")))}class r_{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r}){try{let a;a=r?{fee:1e4*r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:1e4*this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let{getQuote:n}=await import("@naviprotocol/astros-aggregator-sdk"),i=await n(t,o,e,this._config.astrosApiKey,{byAmountIn:!0,dexList:rd,serviceFee:a});if(rp(i))throw Error("Astros returned a route with excluded provider: magma");return i}catch(e){return rn("astros",e),null}}returnMergedCoins(e,t,o){if(t.length<2)return e.object(t[0].coinObjectId);let r=0,a=[];t.sort((e,t)=>Number(t.balance)-Number(e.balance)).slice(1).forEach(e=>{r>=o||(r+=Number(e.balance),a.push(e.coinObjectId))});let n=t[0].coinObjectId;return e.mergeCoins(n,a),e.object(n)}async getTransaction({completeRoute:e,walletAddress:t,slippage:o,tradeFee:r}){var a;let n,c;if(n=r?{fee:r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress},rp(e))throw Error("Astros quote contains excluded provider: magma");let u=new s(e.amount_out).multipliedBy(1-o-n.fee).toNumber(),l=new i,{buildSwapPTBFromQuote:d,getCoins:p}=await import("@naviprotocol/astros-aggregator-sdk"),_=this._suiClient;if("0x2::sui::SUI"===(a=e.from)||"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"===a)c=l.splitCoins(l.gas,[l.pure.u64(e.amount_in)]);else{let o=await p(_,t,e.from),r=this.returnMergedCoins(l,o.data,Number.parseFloat(e.amount_in));c=l.splitCoins(r,[l.pure.u64(e.amount_in)])}let m=await d(t,l,u,c,e,void 0,!1,this._config.astrosApiKey,{dexList:rd,serviceFee:n});return l.transferObjects([m],t),l.setSender(t),l.build({client:this._suiClient})}}(r_||(r_={})).toCommonTradeRoutes=function(e,t,o){if(0===e.routes.length)return null;let r=[];for(let t of e.routes){let e=[];for(let o of t.path)e.push({poolAddress:o.id,coinIn:o.from,coinOut:o.target,amountIn:BigInt(o.amount_in),amountOut:BigInt(o.amount_out)});0!==e.length&&r.push({amountIn:BigInt(t.amount_in),amountOut:BigInt(t.amount_out),coinIn:e[0].coinIn,coinOut:e[e.length-1].coinOut,paths:e})}return 0===r.length?null:{coinIn:t,coinOut:o,amountIn:BigInt(e.amount_in),amountOut:BigInt(e.amount_out),routes:r}},(tR||(tR={})).equals=function(e,t){return e.tradeFeePercent===t.tradeFeePercent&&e.tradeFeeRecipientAddress===t.tradeFeeRecipientAddress},(eF=tD||(tD={})).UNIVERSAL_META_VAULT_INTEGRATION_PACKAGE_ID="0xfd12517a9fc87c6a1f2357ad13b3421fb27a8bd7ca07d5fd5934ac35733baa47",(eP=eF.MetaCoinType||(eF.MetaCoinType={})).SUPER_SUI="0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI",eP.MUSD="0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD",eP.METH="0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH",eF.VERSION_OBJ_ID="0x4696559327b35ff2ab26904e7426a1646312e9c836d5c6cff6709a5ccc30915c",eF.createCap=function(e){let t,{txb:o,coinType:r,metaCoin:a,createCapAllTypeParams:n,whitelistedAppId:i,poolId:s,pythInfoObjectIdMap:l,createCapPackageId:d,createCapModule:p,createCapFunc:_}=e,m=[a.toString()];switch(n&&m.push(r),e.metaCoin){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":t=[o.object(i),o.object(s),o.object(e.registryId)];break;case"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD":{let r=l.get(e.pythPriceFeedIdMeta);c(r,"Not found priceMetaId in pythObjectIdMap"),t=[o.object(i),o.object(s),o.object(r),o.object(u)];break}case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":{let r=l.get(e.pythPriceFeedIdMeta);c(r,"Not found priceId in pythObjectIdMap");let a=l.get(e.pythPriceFeedIdEth);c(a,"Not found priceEthFeedId in pythObjectIdMap"),t=[o.object(i),o.object(s),o.object(r),o.object(a),o.object(u)];break}default:throw Error("Invalid MetaCoin: "+a.toString())}return o.moveCall({target:`${d}::${p}::${_}`,typeArguments:m,arguments:t})},eF.getCreateCapModule=function(e){switch(e){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":return"exchange_rate";case"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD":case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":return"pyth";default:throw Error("Invalid MetaCoin: "+e)}},eF.isMetaCoinType=function(e){return Object.values(eF.MetaCoinType).map(e=>e.toString()).includes(e)},eF.getCreateCapAllTypeParams=function(e,t){switch(e){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":return t===eF.UNIVERSAL_META_VAULT_INTEGRATION_PACKAGE_ID;case"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD":case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":return!0;default:throw Error("Invalid MetaCoin: "+e)}},function(e){let t=[S,j,R,D,G,Z,O,L,ee,C,h,P,V,Q,y,U,M,H,X,q,Y,N,W,$,z,K,J,k,v,F,x,w];e.SUPPORTED_PROTOCOLS=[...t];let o=new Set(t),r=e=>({poolId:e.id,coinInType:e.from,coinOutType:e.target,aToB:e.direction,amountIn:e.amountIn});function a(t){if(!o.has(t.provider))throw Error(`Unsupported or unknown provider: ${t.provider} for pool ${t.id}`);return(0,e.TO_META_AGGREGATOR_PATH_FN_MAP[t.provider])(t)}function n(e){let t=new Map;for(let[o,r]of e.paths.entries())t.set(r.from,o);let o=[];for(let r=0;r<e.paths.length;r++){let n=e.paths[r],i=a(n);t.get(n.from)===r&&(i.amountIn=tw.MAX_AMOUNT_IN),o.push(i)}return o}e.TO_META_AGGREGATOR_PATH_FN_MAP={[q]:e=>{let t=r(e),o=e.extendedDetails,a=e.direction?e.target:e.from;c(o&&void 0!==o.metastable_create_cap_pkg_id&&void 0!==o.metastable_create_cap_module&&void 0!==o.metastable_create_cap_all_type_params&&void 0!==o.metastable_whitelisted_app_id,`METASTABLE missing required extendedDetails for pool ${e.id}.`);let n={createCapPackageId:o.metastable_create_cap_pkg_id,createCapModule:o.metastable_create_cap_module,createCapAllTypeParams:o.metastable_create_cap_all_type_params,whitelistedAppId:o.metastable_whitelisted_app_id};switch(a){case tD.MetaCoinType.SUPER_SUI:return c(o.metastable_registry_id,`METASTABLE_SUPER_SUI protocol requires 'metastable_registry_id' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:ra.METASTABLE,metaCoin:a,registryId:o.metastable_registry_id};case tD.MetaCoinType.MUSD:return c(o.metastable_price_seed,`METASTABLE_MUSD protocol requires 'metastable_price_seed' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:ra.METASTABLE,metaCoin:a,pythPriceFeedIdMeta:o.metastable_price_seed};case tD.MetaCoinType.METH:return c(o.metastable_price_seed&&o.metastable_eth_price_seed,`METASTABLE_ETH protocol requires 'metastable_price_seed' and 'metastable_eth_price_seed' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:ra.METASTABLE,metaCoin:a,pythPriceFeedIdMeta:o.metastable_price_seed,pythPriceFeedIdEth:o.metastable_eth_price_seed};default:throw Error(`METASTABLE protocol does not support ${a} as metaCoin.`)}},[P]:e=>({...r(e),protocol:ra.DEEPBOOK_V3}),[O]:e=>{let t=e.extendedDetails;return c(t?.aftermath_lp_supply_type,`AFTERMATH_CPMM protocol requires 'aftermath_lp_type' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.AFTERMATH_CPMM,coinLpType:t.aftermath_lp_supply_type}},[D]:e=>({...r(e),protocol:ra.FLOWX_CLMM,poolFeeRate:String(1e6*e.feeRate)}),[U]:e=>{let t=e.extendedDetails;return c(t?.haedal_pmm_base_price_seed&&t?.haedal_pmm_quote_price_seed,`HAEDAL_CPMM protocol requires 'haedal_pyth_price_a_id' and 'haedal_pyth_price_b_id' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.HAEDAL_CPMM,pythPriceFeedIdA:t.haedal_pmm_base_price_seed,pythPriceFeedIdB:t.haedal_pmm_quote_price_seed}},[k]:e=>{let t=e.extendedDetails;return c(t?.haedalhmmv2_base_price_seed,`HAEDAL_CPMM_V2 protocol requires 'haedal_pyth_price_base_id' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.HAEDAL_CPMM_V2,pythPriceFeedIdBase:t.haedalhmmv2_base_price_seed}},[V]:e=>(c(e.extendedDetails?.scallop_scoin_treasury,`SCALLOP protocol requires 'scallop_scoin_treasury' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.SCALLOP,scoinTreasury:e.extendedDetails.scallop_scoin_treasury}),[X]:e=>{let t=e.extendedDetails;return c(t?.steamm_bank_a&&t?.steamm_bank_b&&t?.steamm_lending_market&&t?.steamm_lending_market_type&&t?.steamm_btoken_a_type&&t?.steamm_btoken_b_type&&t?.steamm_lp_token_type,`STEAMM_CPMM protocol requires steamm fields in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.STEAMM_CPMM,bankAId:t.steamm_bank_a,bankBId:t.steamm_bank_b,lendingMarketId:t.steamm_lending_market,lendingMarketType:t.steamm_lending_market_type,bCoinAType:t.steamm_btoken_a_type,bCoinBType:t.steamm_btoken_b_type,lpBCoinType:t.steamm_lp_token_type}},[W]:e=>{let t=e.extendedDetails;return c(t?.steamm_bank_a&&t?.steamm_bank_b&&t?.steamm_lending_market&&t?.steamm_lending_market_type&&t?.steamm_btoken_a_type&&t?.steamm_btoken_b_type&&t?.steamm_lp_token_type&&t?.steamm_oracle_pyth_price_seed_a&&t?.steamm_oracle_pyth_price_seed_b&&t?.steamm_oracle_registry_id&&t?.steamm_oracle_index_a&&t?.steamm_oracle_index_b,`STEAMM_OMM protocol requires steamm fields in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.STEAMM_OMM,bankAId:t.steamm_bank_a,bankBId:t.steamm_bank_b,lendingMarketId:t.steamm_lending_market,lendingMarketType:t.steamm_lending_market_type,bCoinAType:t.steamm_btoken_a_type,bCoinBType:t.steamm_btoken_b_type,lpBCoinType:t.steamm_lp_token_type,pythPriceFeedIdA:t.steamm_oracle_pyth_price_seed_a,pythPriceFeedIdB:t.steamm_oracle_pyth_price_seed_b,oracleRegistryId:t.steamm_oracle_registry_id,oracleIndexA:String(t.steamm_oracle_index_a),oracleIndexB:String(t.steamm_oracle_index_b)}},[z]:e=>{let t=e.extendedDetails;return c(t?.steamm_bank_a&&t?.steamm_bank_b&&t?.steamm_lending_market&&t?.steamm_lending_market_type&&t?.steamm_btoken_a_type&&t?.steamm_btoken_b_type&&t?.steamm_lp_token_type&&t?.steamm_oracle_pyth_price_seed_a&&t?.steamm_oracle_pyth_price_seed_b&&t?.steamm_oracle_registry_id&&t?.steamm_oracle_index_a&&t?.steamm_oracle_index_b,`STEAMM_OMM_V2 protocol requires steamm fields in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.STEAMM_OMM_V2,bankAId:t.steamm_bank_a,bankBId:t.steamm_bank_b,lendingMarketId:t.steamm_lending_market,lendingMarketType:t.steamm_lending_market_type,bCoinAType:t.steamm_btoken_a_type,bCoinBType:t.steamm_btoken_b_type,lpBCoinType:t.steamm_lp_token_type,pythPriceFeedIdA:t.steamm_oracle_pyth_price_seed_a,pythPriceFeedIdB:t.steamm_oracle_pyth_price_seed_b,oracleRegistryId:t.steamm_oracle_registry_id,oracleIndexA:String(t.steamm_oracle_index_a),oracleIndexB:String(t.steamm_oracle_index_b)}},[Y]:e=>{let t=r(e);if(e.extendedDetails?.obric_coin_a_price_id&&e.extendedDetails?.obric_coin_b_price_id)return{...t,protocol:ra.OBRIC,priceInfoObjIdA:e.extendedDetails.obric_coin_a_price_id,priceInfoObjIdB:e.extendedDetails.obric_coin_b_price_id};if(e.extendedDetails?.obric_coin_a_price_seed&&e.extendedDetails?.obric_coin_b_price_seed)return{...t,protocol:ra.OBRIC,pythPriceFeedIdA:e.extendedDetails.obric_coin_a_price_seed,pythPriceFeedIdB:e.extendedDetails.obric_coin_b_price_seed};throw Error(`OBRIC protocol requires 'obric_coin_a_price_id' and 'obric_coin_b_price_id' in extendedDetails for pool ${e.id}.`)},[J]:e=>{let t=e.extendedDetails;return c(t?.sevenk_lp_cap_type&&t?.sevenk_coin_a_price_seed&&t?.sevenk_coin_b_price_seed&&t?.sevenk_oracle_config_a&&t?.sevenk_oracle_config_b,`SEVENK_CPMM protocol requires sevenk fields in extendedDetails for pool ${e.id}.`),{...r(e),protocol:ra.SEVENK_CPMM,coinLpType:t.sevenk_lp_cap_type,pythPriceFeedIdA:t.sevenk_coin_a_price_seed,pythPriceFeedIdB:t.sevenk_coin_b_price_seed,oracleConfigA:t.sevenk_oracle_config_a,oracleConfigB:t.sevenk_oracle_config_b}},[Z]:e=>(c(e.extendedDetails?.turbos_fee_type,`TURBOS_CLMM protocol requires 'coinFeeType' parameter for pool ${e.id}. Provide it via the parametersMap argument.`),{...r(e),protocol:ra.TURBOS_CLMM,coinFeeType:e.extendedDetails.turbos_fee_type}),[C]:e=>({...r(e),protocol:ra.AFTERMATH_LSD}),[M]:e=>({...r(e),protocol:ra.ALPHAFI_LSD}),[y]:e=>({...r(e),protocol:ra.BLUEFIN_CLMM}),[h]:e=>({...r(e),protocol:ra.BLUEMOVE_CPMM}),[S]:e=>({...r(e),protocol:ra.CETUS_CLMM}),[F]:e=>({...r(e),protocol:ra.CETUS_DLMM}),[w]:e=>({...r(e),protocol:ra.FERRA_CLMM}),[x]:e=>({...r(e),protocol:ra.FERRA_DLMM}),[R]:e=>({...r(e),protocol:ra.FLOWX_CPMM}),[v]:e=>({...r(e),protocol:ra.FULLSAIL_CLMM}),[L]:e=>({...r(e),protocol:ra.HAEDAL_LSD}),[N]:e=>({...r(e),protocol:ra.HAEDAL_LSD_WAL}),[j]:e=>({...r(e),protocol:ra.KRIYA_CPMM}),[G]:e=>({...r(e),protocol:ra.KRIYA_CLMM}),[K]:e=>({...r(e),protocol:ra.MAGMA_CLMM}),[$]:e=>({...r(e),protocol:ra.MOMENTUM_CLMM}),[Q]:e=>({...r(e),protocol:ra.SPRINGSUI}),[H]:e=>({...r(e),protocol:ra.SPRINGSUI}),[ee]:e=>({...r(e),protocol:ra.VOLO})},e.toMetaAggregatorPath=a,e.toMetaAggregatorPaths=n,e.convert=function(e){return{coinInType:e.paths[0].from,coinOutType:e.paths[e.paths.length-1].target,amountOut:e.amountOut.toString(),tradePaths:n(e)}}}(tv||(tv={}));class rm{_config;_suiClient;_cetusClient;getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t,overlayFeeRate:o}){return{client:this._suiClient,overlayFeeReceiver:t,overlayFeeRate:o,env:B.Mainnet,signer:e,...this._config.cetusApiKey&&this._config.cetusApiEndpoint?{apiKey:this._config.cetusApiKey,endpoint:this._config.cetusApiEndpoint}:{},partner:this._config.cetusPartnerId}}constructor(e,t){this._config=e,this._suiClient=t}cetusClient(e,t,o){return o?new E(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:void 0,overlayFeeRate:void 0})):t&&!tR.equals(t,this._config.defaultTradeFee)?new E(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t.tradeFeeRecipientAddress,overlayFeeRate:t.tradeFeePercent})):(this._cetusClient||(this._cetusClient=new E(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:this._config.defaultTradeFee.tradeFeeRecipientAddress,overlayFeeRate:this._config.defaultTradeFee.tradeFeePercent}))),this._cetusClient)}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){try{let i=this.cetusClient(void 0,r,a),s=n??(a?tv.SUPPORTED_PROTOCOLS:void 0);return await i.findRouters({from:t,target:o,amount:new et(e.toString()),byAmountIn:!0,providers:s})}catch(e){return rn("cetus",e),null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o,tradeFee:r,metaAggregator:a}){let n=this.cetusClient(t,r,a),s=new i;return s.setSender(t),await n.fastRouterSwap({router:e,txb:s,slippage:o}),s.build({client:this._suiClient})}}(rm||(rm={})).toCommonTradeRoutes=function(e,t,o){if(0===e.paths.length)return null;let r=[],a=[],n=[];for(let t=0;t<e.paths.length;t++){let o=e.paths[t],r={poolAddress:o.id,amountIn:BigInt(o.amountIn),amountOut:BigInt(o.amountOut),coinIn:o.from,coinOut:o.target};if(n.push(r),t===e.paths.length-1)a.push([...n]);else{let r=e.paths[t+1];o.target!==r.from&&(a.push([...n]),n=[])}}for(let e of a)0!==e.length&&r.push({amountIn:e[0].amountIn,amountOut:e[e.length-1].amountOut,coinIn:e[0].coinIn,coinOut:e[e.length-1].coinOut,paths:e});return 0===r.length?null:{coinIn:t,coinOut:o,amountIn:BigInt(e.amountIn.toString(10)),amountOut:BigInt(e.amountOut.toString(10)),routes:r}};var rf=((eB={}).ASTROS="ASTROS",eB.AFTERMATH="AFTERMATH",eB.SEVENK="7K",eB.CETUS="CETUS",eB.FLOWX="FLOWX",eB);!function(e){let t=[ei.HOP_FUN,ei.FLOWX_PMM,ei.DEEPBOOK,ei.IPX_TIDE,ei.METASTABLE];e.SUPPORTED_PROTOCOLS=Object.values(ei).filter(e=>!t.includes(e));let o={[ei.FLOWX_V2]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:ra.FLOWX_CPMM}),[ei.FLOWX_V3]:t=>(c(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.FLOWX_CLMM,poolFeeRate:t.poolFee.toString()}),[ei.CETUS]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.CETUS_CLMM}),[ei.CETUS_DLMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.CETUS_DLMM}),[ei.AFTERMATH]:t=>(c(t.lpCoinType,`AFTERMATH protocol requires lpCoinType for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:ra.AFTERMATH_CPMM,coinLpType:t.lpCoinType}),[ei.AFTERMATH_LSD]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:ra.AFTERMATH_LSD}),[ei.ALPHA_FI]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:ra.ALPHAFI_LSD}),[ei.BLUEFIN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.BLUEFIN_CLMM}),[ei.BLUEMOVE]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:ra.BLUEMOVE_CPMM}),[ei.DEEPBOOK_V3]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.DEEPBOOK_V3}),[ei.FERRA_CLMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.FERRA_CLMM}),[ei.FERRA_DLMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.FERRA_DLMM}),[ei.FULL_SAIL]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.FULLSAIL_CLMM}),[ei.HAEDAL]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:ra.HAEDAL_LSD}),[ei.HAEDAL_PMM]:t=>{let o=t.oracles;return c(o&&o.length>=2,`HAEDAL_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.HAEDAL_CPMM,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId}},[ei.KRIYA_DEX]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.KRIYA_CPMM}),[ei.KRIYA_V3]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.KRIYA_CLMM}),[ei.MAGMA_FINANCE]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.MAGMA_CLMM}),[ei.MAGMA_ALMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.MAGMA_ALMM}),[ei.MOMENTUM_FINANCE]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.MOMENTUM_CLMM}),[ei.OBRIC]:t=>(c(t.xPriceId&&t.yPriceId,`OBRIC protocol requires price feeds for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.OBRIC,priceInfoObjIdA:t.xPriceId,priceInfoObjIdB:t.yPriceId}),[ei.SPRING_SUI]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:ra.SPRINGSUI}),[ei.STEAMM]:t=>{c(void 0!==t.bankXInfo&&void 0!==t.bankYInfo,`STEAMM protocol requires bank info for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),c(void 0!==t.quoterType,`quoterType is required for pool ${t.pool.id}`),c(void 0!==t.poolInfo,`poolInfo is required for pool ${t.pool.id}`),c(void 0!==t.protocolConfig&&void 0!==t.protocolConfig.oracleRegistryId,`protocolConfig is required for pool ${t.pool.id}`);let o=t.oracles,r=e.toMetaAggregatorBasePath(t),n=t.xForY;switch(t.quoterType){case"constant_product":return{...r,aToB:n,protocol:ra.STEAMM_CPMM,bankAId:n?t.bankXInfo.bankId:t.bankYInfo.bankId,bankBId:n?t.bankYInfo.bankId:t.bankXInfo.bankId,lendingMarketId:t.bankXInfo.lendingMarketId,lendingMarketType:t.bankXInfo.lendingMarketType,bCoinAType:n?t.bankXInfo.bTokenType:t.bankYInfo.bTokenType,bCoinBType:n?t.bankYInfo.bTokenType:t.bankXInfo.bTokenType,lpBCoinType:t.poolInfo.lpTokenType};case"oracle":case"oracle_v2":{(void 0===o||o.length<2)&&console.error("[FlowXAggregatorConverter][STEAMM_OMM] Missing oracle price feeds",{reason:"oracles is undefined or has less than 2 entries",...a(t)}),c(void 0!==o&&o.length>=2,`STEAMM_OMM protocol requires oracle price feeds for pool ${t.pool.id}.`);let e=o[0],i=o[1],s=[void 0===e.oracleIndex?"oracles[0].oracleIndex":void 0,void 0===i.oracleIndex?"oracles[1].oracleIndex":void 0].filter(e=>void 0!==e);return s.length>0&&console.error("[FlowXAggregatorConverter][STEAMM_OMM] Missing oracle indexes",{reason:"STEAMM OMM requires oracleIndex for both oracle entries",missingFields:s,...a(t)}),c(void 0!==e.oracleIndex&&void 0!==i.oracleIndex,`STEAMM_OMM protocol requires oracle indexes for pool ${t.pool.id}.`),{...r,aToB:n,protocol:"oracle_v2"===t.quoterType?ra.STEAMM_OMM_V2:ra.STEAMM_OMM,bankAId:t.bankXInfo.bankId,bankBId:t.bankYInfo.bankId,lendingMarketId:t.bankXInfo.lendingMarketId,lendingMarketType:t.bankXInfo.lendingMarketType,bCoinAType:t.bankXInfo.bTokenType,bCoinBType:t.bankYInfo.bTokenType,lpBCoinType:t.poolInfo.lpTokenType,pythPriceFeedIdA:e.priceId,pythPriceFeedIdB:i.priceId,oracleRegistryId:t.protocolConfig.oracleRegistryId,oracleIndexA:e.oracleIndex.toString(),oracleIndexB:i.oracleIndex.toString()}}default:throw Error(`Unsupported quoter type: ${t.quoterType} for pool ${t.pool.id}`)}},[ei.SEVENK_V1]:t=>{let o=t.oracles;return c(o&&o.length>=2,`SEVENK_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),c(t.poolStructTag,`SEVENK_V1 protocol requires poolStructTag for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.SEVENK_CPMM,coinLpType:t.poolStructTag,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId,oracleConfigA:o[0].oracleId??"",oracleConfigB:o[1].oracleId??""}},[ei.SUI_REWARDS]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.SRM_CPMM}),[ei.TURBOS_FIANCE]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.TURBOS_CLMM,coinFeeType:t.poolStructTag?t.poolStructTag.split("<")[1].split(",")[2].trim().replace(">",""):""}),[ei.VOLO_LSD]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:ra.VOLO}),[ei.TRADEPORT]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),c(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,poolFeeRate:t.poolFee.toString(),protocol:ra.TRADEPORT_CLMM}),[ei.TURBOS_FUN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.TURBOS_FUN}),[ei.BLUEMOVE_FUN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,expectedAmountOut:t.amountOut.toString(),protocol:ra.MOVEPUMP}),[ei.SEVEN_K_FUN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.SEVENK_FUN}),[ei.DIPCOIN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.DIP_CPMM}),[ei.BOLT]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:ra.BOLT})};function r(t){let o=[];for(let e of t)o.push(...e.paths);let r=new Map;for(let[e,t]of o.entries())r.set(t.input.coinType,e);let a=o.map((t,r)=>{try{return e.toMetaAggregatorPath(t)}catch(e){throw console.error("[FlowXAggregatorConverter] Failed to convert FlowX swap route",{routeIndex:r,routeCount:o.length,poolId:t.pool.id,protocol:t.protocol(),coinInType:t.input.coinType,coinOutType:t.output.coinType,amountIn:t.amountIn.toString(),amountOut:t.amountOut.toString(),error:e}),e}});for(let e of r.values())a[e].amountIn=tw.MAX_AMOUNT_IN;return a}function a(e){return{poolId:e.pool.id,quoterType:e.quoterType,xForY:e.xForY,coinInType:e.input.coinType,coinOutType:e.output.coinType,amountIn:e.amountIn.toString(),amountOut:e.amountOut.toString(),oracleCount:e.oracles?.length??0,oracles:e.oracles?.map((e,t)=>({index:t,priceId:e.priceId,oracleId:e.oracleId,oracleIndex:e.oracleIndex,hasPriceId:void 0!==e.priceId&&""!==e.priceId,hasOracleId:void 0!==e.oracleId&&""!==e.oracleId,hasOracleIndex:void 0!==e.oracleIndex})),protocolConfig:{oracleRegistryId:e.protocolConfig?.oracleRegistryId,hasOracleRegistryId:e.protocolConfig?.oracleRegistryId!==void 0},bankXInfo:e.bankXInfo,bankYInfo:e.bankYInfo,poolInfo:e.poolInfo,poolStructTag:e.poolStructTag}}e.toMetaAggregatorBasePath=e=>({poolId:e.pool.id,coinInType:e.input.coinType,coinOutType:e.output.coinType,amountIn:e.amountIn.toString()}),e.toMetaAggregatorPath=e=>{let r=e.protocol();if(t.includes(r))throw Error(`Unsupported protocol: ${r}`);return(0,o[r])(e)},e.toMetaAggregatorPaths=r,e.convert=function(e){return{coinInType:e.coinIn.coinType,coinOutType:e.coinOut.coinType,amountOut:e.amountOut.toString(),tradePaths:r(e.routes)}}}(tL||(tL={}));class rg{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}getCommission(e,t,o){let r,a;if(!o)return t?(r=t.tradeFeePercent,a=t.tradeFeeRecipientAddress):(r=this._config.defaultTradeFee.tradeFeePercent,a=this._config.defaultTradeFee.tradeFeeRecipientAddress),new ea(a,new er(e),en.PERCENTAGE,1e6*r,!0)}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){let i=new eo("mainnet",this._config.flowxApiKey),s=n??(a?tL.SUPPORTED_PROTOCOLS:void 0);try{return await i.getRoutes({tokenIn:t,tokenOut:o,amountIn:e.toString(),commission:this.getCommission(t,r,a),includeSources:s})}catch(e){return rn("flowx",e),null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:o,tradeFee:r,metaAggregator:a}){let n=new es("mainnet",t.routes).sender(e).slippage(1e6*o),i=this.getCommission(t.coinIn.coinType,r,a);return i&&(n=n.commission(i)),n.build().buildTransaction({client:this._suiClient}).then(t=>(t.setSender(e),t.build({client:this._suiClient})))}}async function rA(e,t){return(await rb(e,t)).fields}async function rb(e,t){let o=(await e.getObject({objectId:t,include:{json:!0,objectBcs:!0}})).object;c(o,"Pool object not found or has no content"),c(o.json,"Pool object not found or has no content"),c(o.objectBcs,"Pool object not found or has no content");let r=ec.Object.parse(o.objectBcs);return c("Move"===r.data.$kind,"Pool object is not a Move object"),{dataType:"moveObject",fields:o.json,hasPublicTransfer:r.data.Move.hasPublicTransfer,type:o.type}}(rg||(rg={})).toCommonTradeRoutes=function(e){if(0===e.routes.length)return null;let t=[];for(let o of e.routes){let e=[];for(let t of o.paths)e.push({amountIn:BigInt(t.amountIn.toString()),amountOut:BigInt(t.amountOut.toString()),coinIn:t.input.coinType,coinOut:t.output.coinType,poolAddress:t.pool.id});0!==e.length&&t.push({amountIn:BigInt(o.amountIn.toString()),amountOut:BigInt(o.amountOut.toString()),coinIn:o.input.coinType,coinOut:o.output.coinType,paths:e})}return 0===t.length?null:{coinIn:e.coinIn.coinType,coinOut:e.coinOut.coinType,amountIn:BigInt(e.amountIn.toString()),amountOut:BigInt(e.amountOut.toString()),routes:t}},(ew=tk||(tk={})).PACKAGE_ID_V4="0x7e6aa6e179466ab2814425a780b122575296d011119fa69d27f289f5a28814bd",ew.MEMEZ_AV_OBJECT_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",((ex=tU||(tU={})).U64||(ex.U64={})).mulDivUp=function(e,t,o){let r=BigInt(0);return e*t%o>BigInt(0)&&(r=BigInt(1)),e*t/o+r};var rI=tN||(tN={});function rT(e){return c(BigInt(e)<=BigInt(1e4),"Bps overflow"),BigInt(e)}rI.calcUp=function(e,t){let o,r=BigInt(e.pos0),a=BigInt(1e4);return o=r*t%a!==BigInt(0)?BigInt(1):BigInt(0),r*t/a+o},rI.sub=function(e,t){return c(BigInt(e.pos0)>=BigInt(t.pos0),"Bps underflow"),{pos0:(BigInt(e.pos0)-BigInt(t.pos0)).toString()}},rI.value=function(e){return BigInt(e.pos0)},rI.new_=function(e){return{pos0:rT(e).toString()}},rI.assertOverflow=rT,((eR=tj||(tj={})).MemezFun||(eR.MemezFun={})).isSniperProtectedMemezFun=async function(e,t){return(await rA(e,t)).public_key.length>0},(eD=eR.MemezFees||(eR.MemezFees={})).takeWithDiscount=function(e,t,o){if("Value"===e.variant){let o=BigInt(e.fields.pos0);if(o===BigInt(0))return BigInt(0);if(t>=o)return o;throw Error(`Insufficient amount to cover fee. Required: ${o}, provided: ${t}`)}if("Percentage"===e.variant){let r=e.fields.pos0.fields;if(BigInt(r.pos0)===BigInt(0))return BigInt(0);let a=tN.calcUp(tN.sub(r,o),t);if(t>=a)return a;throw Error(`Insufficient amount to cover fee. Required: ${a}, provided: ${t}`)}throw Error("Unknown fee variant")},eD.calculateWithDiscount=function(e,t,o){if("Value"===e.variant)return BigInt(e.fields.pos0);if("Percentage"===e.variant){let r=e.fields.pos0.fields;return tN.calcUp(tN.sub(r,t),o)}throw Error("Unknown fee variant")},(eR.MemezBurner||(eR.MemezBurner={})).calculate=function(e,t){if(tN.value(e.fee.fields)===BigInt(0)||t===BigInt(0)||t>=BigInt(e.target_liquidity))return tN.new_(0);let o=BigInt(1e4);return tN.new_(tU.U64.mulDivUp(tN.value(e.fee.fields),tU.U64.mulDivUp(t,o,BigInt(e.target_liquidity)),o))},(ev=eR.MemezPump||(eR.MemezPump={})).getPumpState=async function(e,t){return await rA(e,t.inner_state)},ev.pump=function(e,t){let o=e.constant_product.fields,r=eR.MemezFees.takeWithDiscount(o.quote_swap_fee,t,o.quote_referrer_fee.fields),a=t-r,n=BigInt(o.meme_balance),i=BigInt(o.quote_balance),s=n*a/(BigInt(o.virtual_liquidity)+i+a),c=eR.MemezFees.takeWithDiscount(o.meme_swap_fee,s,o.meme_referrer_fee.fields);return s-c},ev.dump=function(e,t){let o=e.constant_product.fields,r=eR.MemezFees.takeWithDiscount(o.meme_swap_fee,t,o.meme_referrer_fee.fields),a=t-r,n=BigInt(o.meme_balance),i=BigInt(o.quote_balance),s=BigInt(o.virtual_liquidity),c=eR.MemezBurner.calculate(o.burner.fields,i),u=tN.calcUp(c,a),l=a-(tN.value(c)!==BigInt(0)?u:BigInt(0)),d=(s+i)*l/(n+l);d>i&&(d=i);let p=eR.MemezFees.takeWithDiscount(o.quote_swap_fee,d,o.quote_referrer_fee.fields);return d-p},(eL=tG||(tG={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,n=await rA(t,r),i=await tj.MemezPump.getPumpState(t,n);return o=ef(o,a),tj.MemezPump.pump(i,o)},eL.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,n=await rA(t,r),i=await tj.MemezPump.getPumpState(t,n);return ef(tj.MemezPump.dump(i,o),a)};let rC="0x62412b7268c35f3808336aee57a52836501f40b8ba5d936f8ad275e672befd04";async function rO(e,t){let o,r,{inputAmount:a,accountAddress:n,frontendFee:s,frontendFeeRecipient:u,extendTx:l,isSponsored:d}=e;c(e.inCoinType===ey||e.inCoinType===eI,"Input must be SUI");let{tx:p,coinIn:_}=l||{},m=eE(a,s||"0"),f=p||new i;if(_)o=f.splitCoins(_,m),tK.transferOrDestroyZeroCoin(f,ey,_,n);else{let{coinData:e}=await eg({account:n,amount:a,splits:m,coinType:ey,inheritTx:f,isSponsored:d||!1},t);o=e}if(s&&u){let[e,t]=o;r=e,f.transferObjects([t],f.pure.address(u||n))}else[r]=o;return{tx:f,coinOut:r}}async function rM(e,t,o){if(c(t.outCoinType===ey||t.outCoinType===eI,"Output must be SUI"),0>=Number(t.frontendFee||0))return{tx:e,coinOut:o};let r=e.moveCall({target:"0x2::coin::value",typeArguments:[t.outCoinType],arguments:[o]}),a=e.moveCall({target:`${rC}::math::mul_div_u64`,typeArguments:[],arguments:[r,e.pure.u64(BigInt(1e4*Number(t.frontendFee||"0"))),e.pure.u64(BigInt(1e4))]}),n=e.moveCall({target:"0x2::coin::split",typeArguments:[t.outCoinType],arguments:[o,a]});return e.transferObjects([n],e.pure.address(t.frontendFeeRecipient||t.accountAddress)),{tx:e,coinOut:o}}(tK||(tK={})).transferOrDestroyZeroCoin=function(e,t,o,r){e.moveCall({target:`${rC}::utils::transfer_or_destroy`,typeArguments:[t],arguments:[o,e.pure.address(r)]})};var rE=tq||(tq={});async function ry(e){let t=e||new i;return t.moveCall({target:`${tk.PACKAGE_ID_V4}::memez_allowed_versions::get_allowed_versions`,arguments:[t.object(tk.MEMEZ_AV_OBJECT_ID)],typeArguments:[]})}function rh(e){switch(e){case"mainnet":return"https://fullnode.mainnet.sui.io:443";case"testnet":return"https://fullnode.testnet.sui.io:443";case"devnet":return"https://fullnode.devnet.sui.io:443";case"localnet":return"http://127.0.0.1:9000";default:throw Error(`Unknown network: ${e}`)}}function rS(e){return rh(e)}function rF(e){return"Transaction"===e.$kind?e.Transaction.digest:e.FailedTransaction.digest}rE.getAllowedVersions=ry,rE.buildBuyTx=async function(e,t){c(!await tj.MemezFun.isSniperProtectedMemezFun(t,e.poolId),"This coin is a sniper protected coin, please use the Blast Fun website to trade it.");let{tx:o,coinOut:r}=await rO(e,t);c(r,"Coin out is required");let a=o.moveCall({target:`${tk.PACKAGE_ID_V4}::memez_pump::pump`,typeArguments:[e.outCoinType,ey],arguments:[o.object(e.poolId),r,o.pure.vector("address",[]),o.pure.vector("vector<u8>",[]),o.pure.u64(e.minAmountOut),await ry(o)]});return{tx:o,coinOut:a}},rE.buildSellTx=async function(e,t){c(e.outCoinType===ey||e.outCoinType===eI,"Output must be SUI");let o=await rA(t,e.poolId),{tx:r,coinData:a}=await eg({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[n]=a,[i]=r.moveCall({target:`${tk.PACKAGE_ID_V4}::memez_pump::dump`,typeArguments:[e.inCoinType,e.outCoinType],arguments:[r.object(e.poolId),r.object(o.ipx_meme_coin_treasury),n,r.pure.vector("address",[]),r.pure.u64(e.minAmountOut),await ry(r)]});return await rM(r,e,i)};let rP={network:eu.MAINNET,fullNodeUrl:rh("mainnet")};async function rB(){if(!e){let{MemezPumpSDK:t}=await import("@interest-protocol/memez-fun-sdk");e=new t(rP)}return e}(ek=t$||(t$={})).getCurveAmountAfterBuy=async function(e){let{suiAmount:t,poolId:o,frontendFee:r}=e;t=ef(t,r);let{memeAmountOut:a}=await (await rB()).quotePump({pool:o,amount:t});return a},ek.getSuiAmountAfterSell=async function(e){let{curveAmount:t,poolId:o,frontendFee:r}=e,{quoteAmountOut:a}=await (await rB()).quoteDump({pool:o,amount:t});return ef(a,r)};var rw=tY||(tY={});async function rx(e,t){let{tx:o,coinOut:r}=await rO(e,t);c(r,"Coin out is required");let{memeCoin:a,tx:n}=await (await rB()).pump({pool:e.poolId,quoteCoin:r,minAmountOut:e.minAmountOut,tx:o});return{tx:n,coinOut:a}}async function rR(e,t){c(eT(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await eg({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,{quoteCoin:n,tx:i}=await (await rB()).dump({pool:e.poolId,memeCoin:a,tx:o,minAmountOut:e.minAmountOut});return await rM(i,e,n)}rw.buildBuyTx=rx,rw.buildSellTx=rR,rw.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eT(t),"coinInType must be SUI for buy transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await t$.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0})).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rx({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eC(u,d,n,0);return(d=await eO({inheritTx:d,sender:n,feeAmount:_,suiInputAmount:e},u)).build({client:u})},rw.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eT(o),"coinOutType must be SUI for sell transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await t$.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0})).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rR({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eC(u,d,n,0);return(d=await eO({inheritTx:d,sender:n,feeAmount:_},u)).build({client:u})};var rD=((eU={}).BLAST_FUN="BLAST_FUN",eU.MOONBAGS="MOONBAGS",eU);(eN=tV||(tV={})).PACKAGE_ID="0xb8df325010942634a4afb3db3901ee215546af43a4ec4af781e7213b0bba7290",eN.CONFIG_OBJECT_ID="0x74aecf86067c6913960ba4925333aefd2b1f929cafca7e21fd55a8f244b70499",eN.LOCK_CONFIG_OBJECT_ID="0xfb09822d9808980abd04c51321adb850701f5f55535c6206658ef4d910c3e9be",eN.BURN_MANAGER_OBJECT_ID="0x1d94aa32518d0cb00f9de6ed60d450c9a2090761f326752ffad06b2e9404f845",eN.POOLS_OBJECT_ID="0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0",eN.GLOBAL_CONFIG_OBJECT_ID="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",eN.FEE_DENOMINATOR=BigInt(1e4),function(e){(t=e.Curves||(e.Curves={})).calculateAddLiquidityCost=function(e,t,o){return e*t/(t-o)-e},t.calculateRemoveLiquidityReturn=function(e,t,o){return t-e*t/(e+o)},t.calculateTokenAmountReceived=function(e,t,o){return t-e*t/(e+o)};var t,o=e.Moonbags||(e.Moonbags={});function r(e){return"fields"in e?e.fields.balance:e.balance}o.getDynamicVirtualTokenReserves=async function(e,t){try{let o=await e.getDynamicField({parentId:t,name:{type:"vector<u8>",bcs:ec.byteVector().serialize(new TextEncoder().encode("virtual_token_reserves")).toBytes()}});if(!o.dynamicField?.value)return;return BigInt(ec.u64().parse(o.dynamicField.value.bcs))}catch(e){if("object"==typeof e&&null!==e&&"code"in e&&"dynamicFieldNotFound"===e.code)return;throw e}},o.buyExactInReturnsWithLock=function(t){let{inputAmount:o,amountIn:a,pool:n,config:i,dynamicVirtualTokenReserves:s}=t,u=BigInt(n.virtual_sui_reserves),l=BigInt(n.virtual_token_reserves),d=BigInt(r(n.remain_token_reserves)),p=e.Curves.calculateRemoveLiquidityReturn(u,l,a),_=l-(s||d),m=p,f=a;p>_&&(m=_,f=e.Curves.calculateAddLiquidityCost(u,l,_)+BigInt(1));let g=f*BigInt(i.platform_fee)/tV.FEE_DENOMINATOR;return c(o>=f+g,"Input amount is less than used SUI + fee"),{receivedCurve:m,receivedSui:o-f-g}},o.sellReturns=function(t){let{amountIn:o,pool:a,config:n}=t,i=BigInt(a.virtual_sui_reserves),s=BigInt(a.virtual_token_reserves),c=BigInt(r(a.real_sui_reserves)),u=e.Curves.calculateRemoveLiquidityReturn(s,i,o);u>c&&(u=c);let l=u*BigInt(n.platform_fee)/tV.FEE_DENOMINATOR,d=u-l;return{receivedCurve:BigInt(0),receivedSui:d}}}(tJ||(tJ={})),(ej=tH||(tH={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,[n,i,s]=await Promise.all([rA(t,r),rA(t,tV.CONFIG_OBJECT_ID),tJ.Moonbags.getDynamicVirtualTokenReserves(t,r)]);void 0!==a&&(o=ef(o,a));let c=o*tV.FEE_DENOMINATOR/(tV.FEE_DENOMINATOR+BigInt(i.platform_fee)),{receivedCurve:u}=tJ.Moonbags.buyExactInReturnsWithLock({inputAmount:o,amountIn:c,pool:n,config:i,dynamicVirtualTokenReserves:s});return u},ej.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,[n,i]=await Promise.all([rA(t,r),rA(t,tV.CONFIG_OBJECT_ID)]),{receivedSui:s}=tJ.Moonbags.sellReturns({amountIn:o,pool:n,config:i});return void 0!==a?ef(s,a):s},ej.getUsedSuiForTx=async function(e,t){let{suiAmount:o,frontendFee:r}=e,a=await rA(t,tV.CONFIG_OBJECT_ID);return void 0!==r&&(o=ef(o,r)),o*tV.FEE_DENOMINATOR/(tV.FEE_DENOMINATOR+BigInt(a.platform_fee))};var rv=tX||(tX={});async function rL(e,t){let{tx:o,coinOut:r}=await rO(e,t);c(r,"Coin out is required");let a=await tH.getUsedSuiForTx({suiAmount:BigInt(e.inputAmount),frontendFee:e.frontendFee},t),[n,i]=o.moveCall({target:`${tV.PACKAGE_ID}::moonbags::buy_exact_in_returns_with_lock`,typeArguments:[e.outCoinType],arguments:[o.object(tV.CONFIG_OBJECT_ID),o.object(tV.LOCK_CONFIG_OBJECT_ID),r,o.pure.u64(a),o.pure.u64(e.minAmountOut),o.object(tV.BURN_MANAGER_OBJECT_ID),o.object(tV.POOLS_OBJECT_ID),o.object(tV.GLOBAL_CONFIG_OBJECT_ID),o.object(eb),o.object(eA)]});return tK.transferOrDestroyZeroCoin(o,ey,n,e.accountAddress),{tx:o,coinOut:i}}async function rk(e,t){c(eT(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await eg({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,[n,i]=o.moveCall({target:`${tV.PACKAGE_ID}::moonbags::sell_returns`,typeArguments:[e.inCoinType],arguments:[o.object(tV.CONFIG_OBJECT_ID),a,o.pure.u64(e.minAmountOut),o.object(eA)]});return tK.transferOrDestroyZeroCoin(o,e.inCoinType,i,e.accountAddress),await rM(o,e,n)}rv.buildBuyTx=rL,rv.buildSellTx=rk,rv.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eT(t),"coinInType must be SUI for buy transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await tH.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0},u)).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rL({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eC(u,d,n,0);return(d=await eO({inheritTx:d,sender:n,feeAmount:_,suiInputAmount:e},u)).build({client:u})},rv.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eT(o),"coinOutType must be SUI for sell transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await tH.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0},u)).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rk({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eC(u,d,n,0);return(d=await eO({inheritTx:d,sender:n,feeAmount:_},u)).build({client:u})},(eG=tW||(tW={})).LAST_PACKAGE_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",eG.newHolder=function(e){return e.moveCall({target:`${eG.LAST_PACKAGE_ID}::oracle::new_holder`,typeArguments:[],arguments:[]})},eG.getPrice=function(e){let{txb:t,coinOracleId:o,holder:r,coinPriceId:a}=e;t.moveCall({target:`${eG.LAST_PACKAGE_ID}::pyth::get_price`,typeArguments:[],arguments:[t.object(o),r,t.object(a),t.object(u)]})},(eK=tz||(tz={})).PYTH_URLS=["https://hermes.pyth.network"],eK.WORMHOLE_STATE_ID="0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",eK.PYTH_STATE_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",eK.newPythConnections=function(e){return e||(e=eK.PYTH_URLS),e.map(e=>new e_(e,{timeout:3e3}))},eK.newPythClient=function(e){return e||(e=new ed({network:"mainnet",url:ep("mainnet")})),new em(e,eK.PYTH_STATE_ID,eK.WORMHOLE_STATE_ID)},eK.updatePythPriceIDs=async function(e){let{priceFeedIds:t,txb:o,pythConnections:r,pythClient:a}=e;if(0===t.length)return new Map;let n=null,i=null;for(let e of r)try{n=await e.getPriceFeedsUpdateData(t);break}catch(e){i=e,console.log("Error: ",e)}if(null==n)throw Error(`All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes. Detailed error: ${i?.message}`);let s=[];try{s=await a.updatePriceFeeds(o,n,t)}catch(e){throw Error(`All Pyth price nodes are unavailable. Cannot fetch price data. Please switch to or add new available Pyth nodes in the pythUrls parameter when initializing AggregatorClient, for example: new AggregatorClient({ pythUrls: ["https://your-pyth-node-url"] }). Detailed error: ${e}`)}let c=new Map;for(let e=0;e<t.length;e++)c.set(t[e],s[e]);return c};var rU=((eq={})[eq.UNKNOWN=1e3]="UNKNOWN",eq[eq.TIMEOUT=1001]="TIMEOUT",eq[eq.PROVIDER_NOT_FOUND=1002]="PROVIDER_NOT_FOUND",eq[eq.PROVIDER_NOT_SUPPORTED=1003]="PROVIDER_NOT_SUPPORTED",eq[eq.INVALID_QUOTE=1004]="INVALID_QUOTE",eq[eq.QUOTE_NOT_FOUND=1005]="QUOTE_NOT_FOUND",eq[eq.INVALID_SIGNER_ADDRESS=1006]="INVALID_SIGNER_ADDRESS",eq[eq.PROVIDER_NOT_SUPPORT_SWAP=1007]="PROVIDER_NOT_SUPPORT_SWAP",eq[eq.SIMULATION_FAILED=1008]="SIMULATION_FAILED",eq);class rN extends Error{code;details;constructor(e,t,o){super(e),this.name="MetaAgError",this.code=t??1e3,this.details=o}static assert(e,t,o,r){if(!e)throw new rN(t??"Assertion failed",o,r)}}class rj{options;kind="SEVENK";constructor(e,t){this.options=e,e.apiKey&&r.setApiKey(e.apiKey),r.setSuiClient(t)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tx.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tx.SUPPORTED_PROTOCOLS);let o=await n({tokenIn:e.coinTypeIn,tokenOut:e.coinTypeOut,amountIn:e.amountIn,sources:t,excludedPools:this.options.excludedPools,targetPools:this.options.targetPools});return rN.assert(!!o,"No quote found",rU.QUOTE_NOT_FOUND,{provider:this.kind}),{sourceRoute:"SEVENK",rawRoute:o,amountIn:o.swapAmountWithDecimal,amountOut:o.returnAmountWithDecimal,coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}let rG=tz.PYTH_URLS;class rK{options;kind="CETUS";cetusClient;constructor(e,t,o){this.options=e,this.cetusClient=new E({apiKey:e.apiKey,client:o,endpoint:e.api,env:B.Mainnet,pythUrls:t.hermesApi?t.hermesApi:rG})}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tv.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tv.SUPPORTED_PROTOCOLS);let o=await this.cetusClient.findRouters({amount:e.amountIn,byAmountIn:!0,from:e.coinTypeIn,target:e.coinTypeOut,providers:t,splitCount:this.options.splitCount,splitAlgorithm:this.options.splitAlgorithm,splitFactor:this.options.splitFactor,depth:this.options.depth,liquidityChanges:this.options.liquidityChanges});return rN.assert(!!o,"No quote found",rU.QUOTE_NOT_FOUND,{provider:this.kind}),{sourceRoute:"CETUS",rawRoute:o,amountIn:o.amountIn.toString()||"0",amountOut:o.amountOut.toString()||"0",coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}class rq{options;kind="FLOWX";quoter;constructor(e){this.options=e,this.quoter=new eo("mainnet",e.apiKey)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tL.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tL.SUPPORTED_PROTOCOLS);let o=await this.quoter.getRoutes({amountIn:e.amountIn,tokenIn:e.coinTypeIn,tokenOut:e.coinTypeOut,includeSources:t,excludePools:this.options.excludePools,excludeSources:this.options.excludeSources,maxHops:this.options.maxHops,splitDistributionPercent:this.options.splitDistributionPercent});return{sourceRoute:"FLOWX",rawRoute:o,amountIn:o.amountIn?.toString()??"0",amountOut:o.amountOut?.toString()??"0",coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}(e$=tQ||(tQ={})).POOL_REGISTRY_OBJ_ID="0xfcc774493db2c45c79f688f88d28023a3e7d98e4ee9f48bbf5c7990f651577ae",e$.PROTOCOL_FEE_VAULT_OBJ_ID="0xf194d9b1bcad972e45a7dd67dd49b3ee1e3357a00a50850c52cd51bb450e13b4",e$.TREASURY_OBJ_ID="0x28e499dff5e864a2eafe476269a4f5035f1c16f338da7be18b103499abf271ce",e$.INSURANCE_FUND_OBJ_ID="0xf0c40d67b078000e18032334c3325c47b9ec9f3d9ae4128be820d54663d14e3b",e$.REFERRAL_VAULT_OBJ_ID="0x35d35b0e5b177593d8c3a801462485572fc30861e6ce96a55af6dc4730709278",(eY=tZ||(tZ={})).LAST_PACKAGE_ID="0xf369250dc5a17e9d5a84a3b0cf5aea715c0682170e726dd601f03ade7ce4decb",eY.swap=function(e){c(e.protocol===ra.AFTERMATH_CPMM);let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,coinLpType:u,packageId:l}=e;t.moveCall({target:`${l??eY.LAST_PACKAGE_ID}::aftermath_cpmm_router::swap`,typeArguments:[i,s,u],arguments:[o,t.object(r),t.object(tQ.POOL_REGISTRY_OBJ_ID),t.object(tQ.PROTOCOL_FEE_VAULT_OBJ_ID),t.object(tQ.TREASURY_OBJ_ID),t.object(tQ.INSURANCE_FUND_OBJ_ID),t.object(tQ.REFERRAL_VAULT_OBJ_ID),t.pure.bool(a),t.pure.u64(n)]})},(eV=t0||(t0={})).STAKED_SUI_VAULT_OBJ_ID="0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d",eV.SAFE_TREASURY_OBJECT_ID="0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610",eV.REFERRAL_VAULT_OBJ_ID="0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef",eV.VALIDATOR_ADDRESS="0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2",(eJ=t1||(t1={})).LAST_PACKAGE_ID="0x148c4e7ff5b308b2d520e050e6a21d986dd3eb203e0aa3eaaba28000977aebf1",eJ.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,packageId:n}=e;if(!r)throw Error("AFSUI not support bToA swap");t.moveCall({target:`${n??eJ.LAST_PACKAGE_ID}::aftermath_lsd_router::swap`,arguments:[o,t.object(t0.STAKED_SUI_VAULT_OBJ_ID),t.object(t0.SAFE_TREASURY_OBJECT_ID),t.object(l),t.object(t0.REFERRAL_VAULT_OBJ_ID),t.pure.address(t0.VALIDATOR_ADDRESS),t.pure.bool(r),t.pure.u64(a)]})},(eH=t4||(t4={})).LAST_PACKAGE_ID="0x108d5d07cf873dec0bc8034db862db55d38e495c1f3ee0e124cf4861af834f25",eH.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??eH.LAST_PACKAGE_ID}::alphafi_lsd_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(l),t.pure.bool(n),t.pure.u64(a)]})},(eX=t6||(t6={})).MEMEZ_AV_OBJ_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",eX.MEMEZ_FUN_OBJ_ID="0x943948644f06942b8b660ca541b10a05f6a7be23ce4069944a3665e7e698930d",eX.IPX_TREASURY_STANDARD_OBJ_ID="0x051e11b667659192917db94e5175fa066909d4dfc04d2663528f499c4afc6999",(eW=t3||(t3={})).LAST_PACKAGE_ID="0x8b1e84ed9bc79d31160600254d65810f6bc6d2352f174a60ed041017d0a2a87a",eW.swap=function(e){c(e.protocol===ra.BLASTFUN,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??eW.LAST_PACKAGE_ID}::blastfun_router::swap`,typeArguments:[r,a],arguments:[o,t.object(t6.MEMEZ_FUN_OBJ_ID),t.object(t6.IPX_TREASURY_STANDARD_OBJ_ID),t.object(t6.MEMEZ_AV_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(t2||(t2={})).GLOBAL_CONFIG_OBJ_ID="0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",(ez=t5||(t5={})).LAST_PACKAGE_ID="0x9f8397124b6bdb55aeb7b5e43761e0e4dc94b9e22e94b1b25d8211d99df422d5",ez.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinAType:i,coinBType:s,packageId:c}=e;t.moveCall({target:`${c??ez.LAST_PACKAGE_ID}::bluefin_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(t2.GLOBAL_CONFIG_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(u)]})},(t8||(t8={})).DEX_INFO_OBJ_ID="0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92",(eQ=t9||(t9={})).LAST_PACKAGE_ID="0xf52bdd65ee347e8994170f8c331cf0c23a55281b3282467f14ccbb3e2a7f928f",eQ.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,coinAType:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??eQ.LAST_PACKAGE_ID}::bluemove_cpmm_router::swap`,typeArguments:[n,i],arguments:[o,t.object(t8.DEX_INFO_OBJ_ID),t.pure.bool(r),t.pure.u64(a)]})},(t7||(t7={})).ORACLE_OBJ_ID="0xfa3975b98f3d0e3df18ed88ae6e69db31836b3f4212df02fae144b1e5a89ca8e",(eZ=oe||(oe={})).LAST_PACKAGE_ID="0x2dd7b04509f332bdb93a8f228ab5c40b34baee4645b2ebe5e5fa2c3502b2c088",eZ.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??eZ.LAST_PACKAGE_ID}::bolt_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(t7.ORACLE_OBJ_ID),t.object(u),t.pure.u64(s),t.pure.bool(i)]})},(ot||(ot={})).GLOBAL_CONFIG="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",(e0=oo||(oo={})).LAST_PACKAGE_ID="0xb3dbb229464cb14b9f8cfa087e5b162623c8f485395dc9b975e263a5ee7051e4",e0.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??e0.LAST_PACKAGE_ID}::cetus_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(ot.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(e1=or||(or={})).GLOBAL_CONFIG_OBJ_ID="0xf31b605d117f959b9730e8c07b08b856cb05143c5e81d5751c90d2979e82f599",e1.VERSIONED_OBJ_ID="0x05370b2d656612dd5759cbe80463de301e3b94a921dfc72dd9daa2ecdeb2d0a8",(e4=oa||(oa={})).LAST_PACKAGE_ID="0x9ab3ba62b4327a7d90e4aed1c025b62736f035911ad7bab830c065ec84ef1ffa",e4.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinAType:i,coinBType:s,packageId:c}=e,l=[o,t.object(or.GLOBAL_CONFIG_OBJ_ID),t.object(or.VERSIONED_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(u)];t.moveCall({target:`${c??e4.LAST_PACKAGE_ID}::cetus_dlmm_router::swap`,typeArguments:[i,s],arguments:l})},(e6=on||(on={})).GLOBAL_CONFIG="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135",e6.DEEP_TYPE="0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",(e3=oi||(oi={})).LAST_PACKAGE_ID="0xff274b63c0f6e3a01f3dd0e923aefcb3146e05e2f6bef4ae339e2703b085f8ed",e3.swap=function(e){c(e.protocol===ra.DEEPBOOK_V3,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,deepFeeCoin:l,packageId:d}=e,p=l||t.moveCall({target:"0x2::coin::zero",typeArguments:[on.DEEP_TYPE]});t.moveCall({target:`${d??e3.LAST_PACKAGE_ID}::deepbook_v3_router::swap`,typeArguments:[r,a],arguments:[o,t.object(on.GLOBAL_CONFIG),t.object(n),t.pure.u64(s),t.pure.bool(i),p,t.object(u)]})},(os||(os={})).GLOBAL_OBJ_ID="0x935229a3c32399e9fb207ec8461a54f56c6af5744c64442435ac217ab28f0d59",(e2=oc||(oc={})).LAST_PACKAGE_ID="0xfd86c0308327eae31c04560460ee6190220e4ae1cdf5b999eef1110bf0b0f2b8",e2.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??e2.LAST_PACKAGE_ID}::dip_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(os.GLOBAL_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(ou||(ou={})).FERRA_GLOBAL_CONFIG_ID="0x2cd8382c19e6994f16df204e9b8cddd04bdc486c251de75ac66ac4e48e3e7081",(e5=ol||(ol={})).LAST_PACKAGE_ID="0x70c4318f67d88ebe4e83bacad15f9e2f5c8becd77695f63dc4bd9393730851cd",e5.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,packageId:c}=e;t.moveCall({target:`${c??e5.LAST_PACKAGE_ID}::ferra_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(ou.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object("0x6")]})},(od||(od={})).FERRA_GLOBAL_CONFIG_ID="0x5c9dacf5a678ea15b8569d65960330307e23d429289ca380e665b1aa175ebeca",(e8=op||(op={})).LAST_PACKAGE_ID="0x686e9eb19b04d46374c3fb82cb4ebb7b24ef8a9ae13f403915f4ae347e0f6593",e8.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,packageId:c}=e;t.moveCall({target:`${c??e8.LAST_PACKAGE_ID}::ferra_dlmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(od.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object(u)]})},(e9=o_||(o_={})).POOL_REGISTRY_OBJ_ID="0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc",e9.VERSIONED_OBJ_ID="0x67624a1533b5aff5d0dfcf5e598684350efd38134d2d245f475524c03a64e656",(e7=om||(om={})).LAST_PACKAGE_ID="0x350a752d3388165e578cc33a39655a6da83613cf4e58c8d9d0723711c2603e17",e7.swap=function(e){c(e.protocol===ra.FLOWX_CLMM);let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolFeeRate:n,amountIn:i,aToB:s,packageId:l}=e;t.moveCall({target:`${l??e7.LAST_PACKAGE_ID}::flowx_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(o_.POOL_REGISTRY_OBJ_ID),t.object(o_.VERSIONED_OBJ_ID),t.pure.u64(n),t.pure.u64(i),t.pure.bool(s),t.object(u)]})},(of||(of={})).CONTAINER_OBJ_ID="0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511",(te=og||(og={})).LAST_PACKAGE_ID="0xd95b440ad340bb6cbf571897d312e43d4b6de37b60c69ef714c94b9835cb8866",te.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??te.LAST_PACKAGE_ID}::flowx_cpmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(of.CONTAINER_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(tt=oA||(oA={})).GLOBAL_CONFIG_OBJ_ID="0xe93baa80cb570b3a494cbf0621b2ba96bc993926d34dc92508c9446f9a05d615",tt.REWARDER_VAULT_OBJ_ID="0xfb971d3a2fb98bde74e1c30ba15a3d8bef60a02789e59ae0b91660aeed3e64e1",tt.STATS_OBJ_ID="0x6822a33d1d971e040c32f7cc74507010d1fe786f7d06ab89135083ddb07d2dc2",tt.PRICE_PROVIDER_OBJ_ID="0x854b2d2c0381bb656ec962f8b443eb082654384cf97885359d1956c7d76e33c9",(to=ob||(ob={})).LAST_PACKAGE_ID="0xf0bf13b5baaf3d368f165e846b919294bed79a3ab3ab0c9bd1e75f23533e44a5",to.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??to.LAST_PACKAGE_ID}::fullsail_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(oA.GLOBAL_CONFIG_OBJ_ID),t.object(oA.REWARDER_VAULT_OBJ_ID),t.object(oA.STATS_OBJ_ID),t.object(oA.PRICE_PROVIDER_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(tr=oI||(oI={})).LAST_PACKAGE_ID="0x8969ed3e56c1dbdaf9df52f812d69c6c45fe5a4bab7093c88f5a8697a409398e",tr.swap=function(e){c(e.protocol===ra.HAEDAL_CPMM);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdA:l,pythPriceFeedIdB:d,pythInfoObjectIdMap:p,packageId:_}=e,m=p.get(l),f=p.get(d);c(m,"Not found priceInfoAId in pythObjectIdMap"),c(f,"Not found priceInfoBId in pythObjectIdMap"),t.moveCall({target:`${_??tr.LAST_PACKAGE_ID}::haedal_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(m),t.object(f),t.pure.u64(s),t.pure.bool(i),t.object(u)]})},(ta=oT||(oT={})).LAST_PACKAGE_ID="0x5d01f22e5471a5912a88e15d62fdcb922beba65b8e8dfe1a715aebf743194f4a",ta.swap=function(e){c(e.protocol===ra.HAEDAL_CPMM_V2);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdBase:l,pythInfoObjectIdMap:d,packageId:p}=e,_=d.get(l);c(_,"Not found pythPriceBaseId in pythObjectIdMap"),t.moveCall({target:`${p??ta.LAST_PACKAGE_ID}::haedal_cpmm_v2_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(_),t.pure.u64(s),t.pure.bool(i),t.object(u)]})},(tn=oC||(oC={})).LAST_PACKAGE_ID="0x1644956086caa5eb791eba152f3b69ba862b3a5382ef0e1d8a474ab158aafa1a",tn.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,poolId:n,packageId:i}=e;t.moveCall({target:`${i??tn.LAST_PACKAGE_ID}::haedal_lsd_router::swap`,arguments:[o,t.object(n),t.object(l),t.pure.bool(r),t.pure.u64(a)]})},(oO||(oO={})).STAKING_OBJ_ID="0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904",(oM||(oM={})).VALIDATOR_ID="0x7b3ba6de2ae58283f60d5b8dc04bb9e90e4796b3b2e0dea75569f491275242e7",(ti=oE||(oE={})).LAST_PACKAGE_ID="0x7be077dd73c85e788c2a49a51f0627066d81d3dc9982c268e3691265a81d544d",ti.swap=function(e){c(e.protocol===ra.HAEDAL_LSD_WAL),c(e.aToB,"HAEDAL_LSD_WAL does not support bToA swap");let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??ti.LAST_PACKAGE_ID}::haedal_wal_lsd_router::swap`,arguments:[o,t.object(oO.STAKING_OBJ_ID),t.object(r),t.pure.id(oM.VALIDATOR_ID),t.pure.bool(a),t.pure.u64(n)]})},(oy||(oy={})).VERSION_OBJ_ID="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78",(ts=oh||(oh={})).LAST_PACKAGE_ID="0xcf141e1d18ff609b2ac56532b391f7648fc55e28696efe354186f5109c0eff06",ts.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??ts.LAST_PACKAGE_ID}::kriya_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oy.VERSION_OBJ_ID),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(tc=oS||(oS={})).LAST_PACKAGE_ID="0x50d37f46df75ef125ce656d4ac91b31b2cf0c1195752a96558561d163e45c223",tc.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??tc.LAST_PACKAGE_ID}::kriya_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(tu=oF||(oF={})).FACTORY_OBJ_ID="0xedb456e93e423dd75a8ddebedd9974bb661195043027e32ce01649d6ccee74cf",tu.GLOBAL_CONFIG_OBJ_ID="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(tl=oP||(oP={})).LAST_PACKAGE_ID="0x950f94d33060c0575389c9f84fabab1e140776c6c84389d4237a0c2687a7adc9",tl.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??tl.LAST_PACKAGE_ID}::magma_almm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oF.FACTORY_OBJ_ID),t.object(oF.GLOBAL_CONFIG_OBJ_ID),t.pure.u64(s),t.pure.bool(i),t.object(u)]})},(oB||(oB={})).GLOBAL_CONFIG="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(td=ow||(ow={})).LAST_PACKAGE_ID="0xbe5f590339c55ca8ebbf93cedfb68aafd479d71e1c57043246f7dcf352745242",td.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??td.LAST_PACKAGE_ID}::magma_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oB.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(tp=ox||(ox={})).LATEST_PACKAGE_ID="0xfab91518218f10204b083dba1e62c8bfc23f14fb87742158043e5faec4670ec4",tp.swap=function(e){let t,o,r;c(e.protocol===ra.METASTABLE,"Invalid protocol");let{txb:a,swapContext:n,aToB:i,amountIn:s,coinAType:u,coinBType:l,poolId:d,metaCoin:p,packageId:_}=e,[m,f]=i?[u,l]:[l,u];m===p?(r="swap_from_meta_coin",t=[p,f],o=[tD.createCap({coinType:f,createCapFunc:"create_withdraw_cap",...e})]):f===p?(r="swap_to_meta_coin",t=[p,m],o=[tD.createCap({coinType:m,createCapFunc:"create_deposit_cap",...e})]):(r="swap",t=[p,m,f],o=[tD.createCap({coinType:m,createCapFunc:"create_deposit_cap",...e}),tD.createCap({coinType:f,createCapFunc:"create_withdraw_cap",...e})]),a.moveCall({target:`${_??tp.LATEST_PACKAGE_ID}::metastable_router::${r}`,typeArguments:t,arguments:[n,a.object(d),a.object(tD.VERSION_OBJ_ID),...o,a.pure.u64(s)]})},(oR||(oR={})).VERSION_OBJ_ID="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a",(t_=oD||(oD={})).LAST_PACKAGE_ID="0xba7ab4c8c39024fa0052bb4f00548a2e7b60742bb4ed0b87bc1d945fd8209102",t_.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??t_.LAST_PACKAGE_ID}::momentum_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(oR.VERSION_OBJ_ID),t.object(u)]})},(ov||(ov={})).CONFIGURATION_OBJ_ID="0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4",(tm=oL||(oL={})).LAST_PACKAGE_ID="0x5a259db4b1d17fafc09185c9a71bac36f25f9ee462e72894c8610e5a58b79f8f",tm.swap=function(e){c(e.protocol===ra.MOVEPUMP,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,expectedAmountOut:s,packageId:l}=e;t.moveCall({target:`${l??tm.LAST_PACKAGE_ID}::movepump_router::swap`,typeArguments:[n?a:r],arguments:[o,t.object(ov.CONFIGURATION_OBJ_ID),t.object(t8.DEX_INFO_OBJ_ID),t.object(u),t.pure.u64(s),t.pure.bool(n),t.pure.u64(i)]})},(ok||(ok={})).STATE_OBJ_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",(tf=oU||(oU={})).LAST_PACKAGE_ID="0xd615fed37d692280047068e80d3a6bb685aa9d574608054c9df881d6a7378fab",tf.swap=function(e){let t,o;c(e.protocol===ra.OBRIC);let{txb:r,swapContext:a,poolId:n,coinAType:i,coinBType:s,aToB:l,amountIn:d,pythInfoObjectIdMap:p,packageId:_}=e;"priceInfoObjIdA"in e?(t=e.priceInfoObjIdA,o=e.priceInfoObjIdB):(t=p.get(e.pythPriceFeedIdA),o=p.get(e.pythPriceFeedIdB),c(t,"Not found priceInfoAId in pythObjectIdMap"),c(o,"Not found priceInfoBId in pythObjectIdMap")),r.moveCall({target:`${_??tf.LAST_PACKAGE_ID}::obric_router::swap`,typeArguments:[i,s],arguments:[a,r.object(n),r.pure.u64(d),r.pure.bool(l),r.object(ok.STATE_OBJ_ID),r.object(t),r.object(o),r.object(u)]})},(tg=oN||(oN={})).VERSION_OBJ_ID="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",tg.MARKET_OBJ_ID="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",(tA=oj||(oj={})).LAST_PACKAGE_ID="0xea409bb08c8a09e4127f859d9c36b8b62ca609282aa1e443091db6b7a7409ee7",tA.swap=function(e){c(e.protocol===ra.SCALLOP);let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,scoinTreasury:s,packageId:l}=e;t.moveCall({target:`${l??tA.LAST_PACKAGE_ID}::scallop_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oN.VERSION_OBJ_ID),t.object(oN.MARKET_OBJ_ID),t.object(s),t.pure.u64(i),t.pure.bool(n),t.object(u)]})},(oG||(oG={})).ORACLE_HOLDER_OBJ_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",(tb=oK||(oK={})).LAST_PACKAGE_ID="0x918a30e2a05d24ea9451e2d2900d055f74e6752f2e10251fa50c7175831b1958",tb.swap=function(e){c(e.protocol===ra.SEVENK_CPMM,"Invalid protocol for sevenk_cpmm_router swap");let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,coinLpType:u,oracleConfigA:l,oracleConfigB:d,pythPriceFeedIdA:p,pythPriceFeedIdB:_,pythInfoObjectIdMap:m,packageId:f}=e,g=m.get(p),A=m.get(_);c(g,"Not found priceInfoAId in pythObjectIdMap"),c(A,"Not found priceInfoBId in pythObjectIdMap");let b=tW.newHolder(t);tW.getPrice({txb:t,coinPriceId:p,holder:b,coinOracleId:l}),tW.getPrice({txb:t,coinPriceId:_,holder:b,coinOracleId:d}),t.moveCall({target:`${f??tb.LAST_PACKAGE_ID}::sevenk_cpmm_router::swap`,typeArguments:[a,n,u],arguments:[o,t.object(r),t.object(oG.ORACLE_HOLDER_OBJ_ID),t.pure.bool(i),t.pure.u64(s)]})},(oq||(oq={})).CONFIGURATION_OBJ_ID="0xe79fff6c77d81f9a8efb729e25bf0037deec42518d40b978f274a4915d7e1ec9",(tI=o$||(o$={})).LAST_PACKAGE_ID="0x0a5dc665dc3c1c846a6d1e00811c84cae3510c839ab4dc0873f85dc8908d0606",tI.swap=function(e){c(e.protocol===ra.SEVENK_FUN,"Invalid protocol");let{txb:t,swapContext:o,aToB:r,amountIn:a,coinBType:n,packageId:i}=e;t.moveCall({target:`${i??tI.LAST_PACKAGE_ID}::sevenk_fun_router::swap`,typeArguments:[n],arguments:[o,t.object(oq.CONFIGURATION_OBJ_ID),t.object(of.CONTAINER_OBJ_ID),t.object(u),t.pure.bool(r),t.pure.u64(a)]})},(tT=oY||(oY={})).LAST_PACKAGE_ID="0xa6d129c0b314e85d1bc5aecf305d64212bdd5d466457531f4f624fef5f2e7751",tT.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??tT.LAST_PACKAGE_ID}::springsui_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(l),t.pure.u64(a),t.pure.bool(n)]})},(oV||(oV={})).CONFIG_OBJ_ID="0x881fd0a12ca4fa48991f5c27ba57d17f1ec147fa15f43b3cb760cc3bd7ba9402",(tC=oJ||(oJ={})).LAST_PACKAGE_ID="0xa314a64962ed4b91a6b4085de4dff2e631fd4c731dbca671a74489955df322ef",tC.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,packageId:c}=e,u=[o,t.object(r),t.object(oV.CONFIG_OBJ_ID),t.pure.bool(a),t.pure.u64(n),t.object("0x6")];t.moveCall({target:`${c??tC.LAST_PACKAGE_ID}::srm_cpmm_router::swap`,typeArguments:[i,s],arguments:u})},(tM=(tO=oH||(oH={})).Oracle||(tO.Oracle={})).PACKAGE_ID="0xe84b649199654d18c38e727212f5d8dacfc3cf78d60d0a7fc85fd589f280eb2b",tM.getPythPrice=function(e){let{txb:t,oracleRegistryId:o,priceInfoId:r,oracleIndex:a}=e;return t.moveCall({target:`${tM.PACKAGE_ID}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(o),t.object(r),t.pure.u64(a),t.object(u)]})};var r$=oX||(oX={});function rY(e,t){c(e.protocol===ra.STEAMM_OMM||e.protocol===ra.STEAMM_OMM_V2,"Invalid protocol for steamm _swapOmm swap");let{txb:o,swapContext:r,poolId:a,coinAType:n,coinBType:i,aToB:s,amountIn:l,bankAId:d,bankBId:p,lendingMarketId:_,lendingMarketType:m,bCoinAType:f,bCoinBType:g,lpBCoinType:A,pythPriceFeedIdA:b,pythPriceFeedIdB:I,pythInfoObjectIdMap:T,oracleRegistryId:C,oracleIndexA:O,oracleIndexB:M,packageId:E}=e,y=T.get(b),h=T.get(I);c(y,"Not found priceInfoAId in pythObjectIdMap"),c(h,"Not found priceInfoBId in pythObjectIdMap");let S=oH.Oracle.getPythPrice({txb:o,oracleRegistryId:C,priceInfoId:y,oracleIndex:O}),F=oH.Oracle.getPythPrice({txb:o,oracleRegistryId:C,priceInfoId:h,oracleIndex:M});o.moveCall({target:`${E??r$.LAST_PACKAGE_ID}::${rV(t)}::swap`,typeArguments:[m,n,i,f,g,A],arguments:[r,o.object(a),o.object(d),o.object(p),o.object(_),S,F,o.pure.bool(s),o.pure.u64(l),o.object(u)]})}function rV(e){switch(e){case 0:return"steamm_omm_router";case 1:return"steamm_omm_v2_router"}}function rJ(e){let{amountOut:t,aggregatorFeeBps:o,partnerFeeBps:r}=e,a=rH(t,o);return r&&(a=rH(a,r)),a}function rH(e,t){let o=BigInt(e)*BigInt(t)/BigInt(1e4);return(BigInt(e)-o).toString()}function rX(e){return Math.floor(100*e)}r$.LAST_PACKAGE_ID="0xd606880d67c399f349758111a91582d5515f31dd051632402653d872818f594e",r$.swapCpmm=function(e){c(e.protocol===ra.STEAMM_CPMM,"Invalid protocol for steamm_cpmm_router swap");let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,bankAId:l,bankBId:d,lendingMarketId:p,lendingMarketType:_,bCoinAType:m,bCoinBType:f,lpBCoinType:g}=e;t.moveCall({target:`${r$.LAST_PACKAGE_ID}::steamm_cpmm_router::swap`,typeArguments:[_,a,n,m,f,g],arguments:[o,t.object(r),t.object(l),t.object(d),t.object(p),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},r$.swapOmm=function(e){rY(e,0)},r$.swapOmmV2=function(e){rY(e,1)},r$.getOmmRouterModule=rV,(tE=oW||(oW={})).LAST_PACKAGE_ID="0x7a1cf89025a60161e84809784d772263231fad08a7cb76a88ca1ba69e0a656da",tE.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??tE.LAST_PACKAGE_ID}::suiswap_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(ty=oz||(oz={})).VERSIONED="0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676",ty.POOL_REGISTRY="0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd",(th=oQ||(oQ={})).LAST_PACKAGE_ID="0x79957062a7424ed9c2eb83932e4c4fcc3fee67ab3c8f6f874c54e417178bbb7a",th.swap=function(e){c(e.protocol===ra.TRADEPORT_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,poolFeeRate:s,packageId:l}=e;t.moveCall({target:`${l??th.LAST_PACKAGE_ID}::tradeport_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oz.POOL_REGISTRY),t.pure.u64(s),t.object(oz.VERSIONED),t.pure.bool(n),t.pure.u64(i),t.object(u)]})},(oZ||(oZ={})).POOL_VERSIONED="0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f",(tS=o0||(o0={})).LAST_PACKAGE_ID="0x512d63711ff38353fb167238b0529001b6871c1727c67ce3bf6ec23556b0f1da",tS.swap=function(e){c(e.protocol===ra.TURBOS_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,coinFeeType:n,poolId:i,aToB:s,amountIn:l,packageId:d}=e;t.moveCall({target:`${d??tS.LAST_PACKAGE_ID}::turbos_clmm_router::swap`,typeArguments:[r,a,n],arguments:[o,t.object(i),t.object(oZ.POOL_VERSIONED),t.pure.bool(s),t.pure.u64(l),t.object(u)]})},(o1||(o1={})).CONFIGURATION_OBJ_ID="0xd86685fc3c3d989385b9311ef55bfc01653105670209ac4276ebb6c83d7df928",(tF=o4||(o4={})).LAST_PACKAGE_ID="0x1fad13f09797aa87a4385d0b1efb2de963ba16742447b1ad5a3b0c5b1d1c588b",tF.swap=function(e){c(e.protocol===ra.TURBOS_FUN,"Invalid protocol");let{txb:t,swapContext:o,coinBType:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??tF.LAST_PACKAGE_ID}::turbos_fun_router::swap`,typeArguments:[r],arguments:[o,t.object(o1.CONFIGURATION_OBJ_ID),t.object(u),t.pure.bool(a),t.pure.u64(n)]})},(o6||(o6={})).VOLO_CERT_METADATA_ID="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",(tP=o3||(o3={})).LAST_PACKAGE_ID="0x7c8d95256342f904d5f251776903a17905d87c95f387b3a35cc2aecc23b3c042",tP.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??tP.LAST_PACKAGE_ID}::volo_router::swap`,arguments:[o,t.object(r),t.object(o6.VOLO_CERT_METADATA_ID),t.object(l),t.pure.bool(a),t.pure.u64(n)]})},(tB=o2||(o2={})).RouterSwapFunctionMap={[ra.AFTERMATH_CPMM]:tZ.swap,[ra.AFTERMATH_LSD]:t1.swap,[ra.ALPHAFI_LSD]:t4.swap,[ra.BLASTFUN]:t3.swap,[ra.BLUEFIN_CLMM]:t5.swap,[ra.BLUEMOVE_CPMM]:t9.swap,[ra.BOLT]:oe.swap,[ra.CETUS_CLMM]:oo.swap,[ra.CETUS_DLMM]:oa.swap,[ra.DEEPBOOK_V3]:oi.swap,[ra.DIP_CPMM]:oc.swap,[ra.FERRA_CLMM]:ol.swap,[ra.FERRA_DLMM]:op.swap,[ra.FLOWX_CPMM]:og.swap,[ra.FLOWX_CLMM]:om.swap,[ra.FULLSAIL_CLMM]:ob.swap,[ra.HAEDAL_CPMM]:oI.swap,[ra.HAEDAL_CPMM_V2]:oT.swap,[ra.HAEDAL_LSD]:oC.swap,[ra.HAEDAL_LSD_WAL]:oE.swap,[ra.KRIYA_CLMM]:oh.swap,[ra.KRIYA_CPMM]:oS.swap,[ra.MAGMA_ALMM]:oP.swap,[ra.MAGMA_CLMM]:ow.swap,[ra.METASTABLE]:ox.swap,[ra.MOMENTUM_CLMM]:oD.swap,[ra.MOVEPUMP]:oL.swap,[ra.OBRIC]:oU.swap,[ra.SCALLOP]:oj.swap,[ra.SEVENK_CPMM]:oK.swap,[ra.SEVENK_FUN]:o$.swap,[ra.SPRINGSUI]:oY.swap,[ra.SRM_CPMM]:oJ.swap,[ra.STEAMM_CPMM]:oX.swapCpmm,[ra.STEAMM_OMM]:oX.swapOmm,[ra.STEAMM_OMM_V2]:oX.swapOmmV2,[ra.SUISWAP_CPMM]:oW.swap,[ra.TRADEPORT_CLMM]:oQ.swap,[ra.TURBOS_CLMM]:o0.swap,[ra.TURBOS_FUN]:o4.swap,[ra.VOLO]:o3.swap},tB.swap=function(e){(0,tB.RouterSwapFunctionMap[e.protocol])(e)},(o5||(o5={})).buildAggregatorSwapTransaction=async function(e){let{tx:t,coinOutType:o,tradePaths:r,pythConnections:a,pythClient:n,packageIdMap:i}=e,s=tw.openSwap(e),c=await tz.updatePythPriceIDs({priceFeedIds:function(e){let t=new Set;for(let o of e)"pythPriceFeedIdA"in o&&t.add(o.pythPriceFeedIdA),"pythPriceFeedIdB"in o&&t.add(o.pythPriceFeedIdB),"pythPriceFeedIdBase"in o&&t.add(o.pythPriceFeedIdBase),"pythPriceFeedIdMeta"in o&&t.add(o.pythPriceFeedIdMeta),"pythPriceFeedIdEth"in o&&t.add(o.pythPriceFeedIdEth);return[...t]}(r),txb:t,pythClient:n,pythConnections:a});for(let e=0;e<r.length;e++){let o=r[e],[a,n]=o.aToB?[o.coinInType,o.coinOutType]:[o.coinOutType,o.coinInType];o2.swap({...o,txb:t,swapContext:s,amountIn:o.amountIn,coinAType:a,coinBType:n,packageId:i?.get(o.protocol),pythInfoObjectIdMap:c})}return tw.closeSwap({tx:t,coinOutType:o,swapSession:s})};let rW=tz.newPythConnections(),rz=tz.newPythClient();var rQ=o8||(o8={});function rZ(e){var t,o;let r,a,{buildTxParam:n,rawRouteParam:i}=e;switch(i.sourceRoute){case"CETUS":r=tv.convert(i.rawRoute);break;case"FLOWX":r=tL.convert(i.rawRoute);break;case"SEVENK":r=tx.convert(i.rawRoute);break;default:throw Error("Unsupported source route")}let s=rX(n.aggregatorFeeRatePercent),c=n.partnerFeeRatePercent?rX(n.partnerFeeRatePercent):void 0,u=n.expectedAmountOut??rJ({amountOut:r.amountOut,aggregatorFeeBps:s,partnerFeeBps:c}),l=(o=(t=n.slippagePercent)?Math.floor(100*t):100,a=BigInt(u)*BigInt(o??100)/BigInt(1e4),(BigInt(u)-a).toString());return{...n,...r,expectedAmountOut:u,minAmountOut:l,aggregatorFeeBps:s,partnerFeeBps:c,pythConnections:n.pythConnections??rW,pythClient:n.pythClient??rz}}rQ.toMetaAggregatorBuildTxParams=rZ,rQ.buildTx=function(e){let t=rZ(e);return o5.buildAggregatorSwapTransaction(t)};let r0=async(e,t,o)=>t<=0?e():new Promise((r,a)=>{let n=setTimeout(()=>a(new rN(`Timeout ${o??"operation"}`,rU.TIMEOUT,{timeout:t})),t);e().then(r).catch(a).finally(()=>clearTimeout(n))}),r1=(e,t,o,r=0)=>{if(t>1e4)throw Error("Slippage must be less than 100%");if(o>1e4)throw Error("Commission must be less than 100%");if(r>1e4)throw Error("Tip must be less than 100%");let a=BigInt(e),n=a*BigInt(r||0)/10000n,i=(a-n)*BigInt(o)/10000n,s=a-n-i;return{tipAmount:n,minAmount:s*BigInt(1e4-t)/10000n,commissionAmount:i,expectedAmount:s.toString(10)}},r4={SEVENK:{},FLOWX:{},CETUS:{}};class r6{client;jsonRpcClient;providers={};options;constructor(e){this.options={providers:{...r4,...e?.providers},clients:e.clients,slippageBps:e?.slippageBps??100,hermesApi:e?.hermesApi??tz.PYTH_URLS,partner:e?.partner??eM,partnerCommissionBps:e?.partnerCommissionBps??0,tipBps:e?.tipBps??0},this.client=e.clients.grpc,this.jsonRpcClient=e.clients.jsonRpc}async getQuoteClient(e){let t=this.providers[e];if(t)return t;let o=this.options.providers[e];switch(rN.assert(!!o,`Provider not found: ${e}`,rU.PROVIDER_NOT_FOUND,{provider:e}),e){case"SEVENK":{let{Bluefin7kClient:e}=await Promise.resolve(o9).catch(r3("SEVENK"));this.providers.SEVENK=new e(o,this.client);break}case"FLOWX":{let{FlowxClient:e}=await Promise.resolve(re).catch(r3("FLOWX"));this.providers.FLOWX=new e(o);break}case"CETUS":{let{CetusClient:e}=await Promise.resolve(o7).catch(r3("CETUS"));this.providers.CETUS=new e(o,this.options,this.client);break}default:throw new rN(`Provider not supported: ${e}`,rU.PROVIDER_NOT_SUPPORTED,{provider:e})}return this.providers[e]}async getQuoteByClient(e,t){return await r0(async()=>{let o=await e.quote(t);return o?(o.amountOut=rJ({amountOut:o.amountOut,partnerFeeBps:this.options.partnerCommissionBps,aggregatorFeeBps:this.options.tipBps}),o):null},t.timeout??2e3,`quote for ${e.kind} provider from ${t.coinTypeIn} to ${t.coinTypeOut}`)}async getQuote(e){let t={...e,coinTypeIn:_(e.coinTypeIn),coinTypeOut:_(e.coinTypeOut)};return(await Promise.allSettled(Object.entries(this.options.providers).filter(([e,t])=>!t.disabled).map(async([e])=>{let o=await this.getQuoteClient(e);return this.getQuoteByClient(o,t)}))).map(e=>"fulfilled"===e.status?e.value:(console.warn(e.reason),null)).filter(e=>null!==e)}async swap(e){let{quote:t,signer:o,tx:r,coinIn:a,slippageBps:n}=e,i=m(o);rN.assert(p(i),`Invalid signer address: ${o}`,rU.INVALID_SIGNER_ADDRESS,{signer:o}),r.setSender(i);let s=(n??this.options.slippageBps)/1e4,c=this.options.partner&&this.options.partner!==eM?this.options.partner:void 0,u=c&&this.options.partnerCommissionBps>0?this.options.partnerCommissionBps/1e4:void 0;return o8.buildTx({buildTxParam:{tx:r,inputCoin:a,expectedAmountOut:t.amountOut,slippagePercent:s,aggregatorFeeRatePercent:this.options.tipBps/1e4,aggregatorFeeRecipient:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff",partnerFeeRatePercent:u,partnerFeeRecipient:c,pythConnections:tz.newPythConnections(this.options.hermesApi),pythClient:tz.newPythClient(this.jsonRpcClient)},rawRouteParam:{...t}})}}let r3=e=>t=>{throw console.warn(`Please install ${{CETUS:"@cetusprotocol/aggregator-sdk",FLOWX:"@flowx-finance/sdk",SEVENK:"@bluefin-exchange/bluefin7k-aggregator-sdk"}[e]} to use ${e} provider`),t},r2=new Set([rf.SEVENK,rf.CETUS,rf.FLOWX]);function r5(e){let t=Object.values(rf);return e?t.filter(e=>r2.has(e)):t}class r8{sdk;_astrosAggregator;_aftermathAggregator;_sevenkAggregator;_cetusAggregator;_flowXAggregator;constructor(e){this.sdk=e,this._astrosAggregator=new r_({defaultTradeFee:e.options.tradeFee,astrosApiKey:e.options.astrosApiKey},e.suiJsonRpcClient),this._aftermathAggregator=new ru({defaultTradeFee:e.options.tradeFee,aftermathApiKey:e.options.aftermathApiKey,aftermathApiEndpoint:e.options.aftermathApiEndpoint},e.suiJsonRpcClient),this._sevenkAggregator=new ri({defaultTradeFee:e.options.tradeFee,sevenKApiKey:e.options.sevenKApiKey},e.suiClient),this._cetusAggregator=new rm({defaultTradeFee:e.options.tradeFee,cetusApiKey:e.options.cetusApiKey,cetusApiEndpoint:e.options.cetusApiEndpoint,cetusPartnerId:e.options.cetusPartnerId},e.suiClient),this._flowXAggregator=new rg({defaultTradeFee:e.options.tradeFee,flowxApiKey:e.options.flowxApiKey},e.suiClient)}get astrosAggregator(){return this._astrosAggregator}get aftermathAggregator(){return this._aftermathAggregator}get sevenkAggregator(){return this._sevenkAggregator}get cetusAggregator(){return this._cetusAggregator}get flowXAggregator(){return this._flowXAggregator}async getTradeRoute(e,t){let o;switch(e){case rf.ASTROS:{let e,r=await this._astrosAggregator.getTradeRoute(t);if(!r)return null;let a=r_.toCommonTradeRoutes(r,t.coinInType,t.coinOutType);if(!a)return null;e=t.tradeFee?t.tradeFee.tradeFeePercent:this.sdk.options.tradeFee.tradeFeePercent,a.amountOut=BigInt(new s(r.amount_out).multipliedBy(1-e).toFixed(0,3)),o={route:a,aggregatorRoute:r};break}case rf.AFTERMATH:{let e=await this._aftermathAggregator.getTradeRoute(t);if(!e)return null;let r=ru.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rf.SEVENK:{let e=await this._sevenkAggregator.getTradeRoute(t);if(!e)return null;let r=ri.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rf.CETUS:{let e=await this._cetusAggregator.getTradeRoute(t);if(!e)return null;let r=rm.toCommonTradeRoutes(e,t.coinInType,t.coinOutType);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rf.FLOWX:{let e=await this._flowXAggregator.getTradeRoute(t);if(!e)return null;let r=rg.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e}}}return o}async getTransactionByRoute(e,t){switch(e){case rf.ASTROS:return this._astrosAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rf.AFTERMATH:return this._aftermathAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage});case rf.SEVENK:return this._sevenkAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});case rf.CETUS:return this._cetusAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});case rf.FLOWX:return this._flowXAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator})}}async getTradeTransaction(e,t){let o=await this.getTradeRoute(e,{coinInAmount:t.coinInAmount,coinInType:t.coinInType,coinOutType:t.coinOutType,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});if(!o)return null;let r=await this.getTransactionByRoute(e,{walletAddress:t.walletAddress,completeRoute:o.aggregatorRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});return{route:o.route,aggregatorRoute:o.aggregatorRoute,transaction:r}}async getTradeTransactionWithBestRate(e){let t=r5(e.metaAggregator),o=await Promise.all(t.map(async t=>{try{return await this.getTradeRoute(t,e)}catch{return null}})),r=null,a=null;for(let e=0;e<o.length;e++){let n=o[e],i=t[e];if(n&&(!r||n.route.amountOut>r.route.amountOut)){r=n,a=i;continue}}if(!r||!a)return null;let n=await this.getTransactionByRoute(a,{walletAddress:e.walletAddress,completeRoute:r.aggregatorRoute,slippage:e.slippage,tradeFee:e.tradeFee,metaAggregator:e.metaAggregator});return{route:r.route,aggregatorRoute:r.aggregatorRoute,transaction:n}}async getAmountOut(e,t){let o=await this.getTradeRoute(e,t);return o?o.route.amountOut:null}async getBestAmountOut(e){let t=r5(e.metaAggregator),o=null,r=null;for(let a of t){let t=await this.getAmountOut(a,e);null!==t&&(null===o||t>o)&&(o=t,r=a)}return null===o||null===r?null:{amountOut:o,aggregator:r}}}class r9{sdk;constructor(e){this.sdk=e}async getEstimatedAmountOut(e,t){let{coinInType:o,coinOutType:r}=t;c(o!==r,"coinInType and coinOutType must be different"),c(eT(o)||eT(r),"One of coinInType or coinOutType must be SUI");let a=eT(o);switch(e){case rD.MOONBAGS:if(a)return await tH.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);return await tH.getSuiAmountAfterSell({poolId:t.poolId,curveAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);case rD.BLAST_FUN:if(a)return await t$.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});return await t$.getSuiAmountAfterSell({poolId:t.poolId,curveAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});default:throw Error(`Unsupported bonding curve platform: ${e}`)}}async getTradeTransaction(e,t){let o,{coinInType:r,coinOutType:a}=t;c(r!==a,"coinInType and coinOutType must be different"),c(eT(r)||eT(a),"One of coinInType or coinOutType must be SUI");let n=eT(r);switch(e){case rD.MOONBAGS:o=n?await tX.getBuyTransaction(t,this.sdk.suiClient):await tX.getSellTransaction(t,this.sdk.suiClient);break;case rD.BLAST_FUN:o=n?await tY.getBuyTransaction(t,this.sdk.suiClient):await tY.getSellTransaction(t,this.sdk.suiClient);break;default:throw Error(`Unsupported bonding curve platform: ${e}`)}return o}}let r7={tradeFeePercent:.01,tradeFeeRecipientAddress:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff"};class ae{network;env;options;_suiGrpcClient;_suiJsonRpcClient;aggregatorModule;curveModule;constructor(e,t="mainnet",o="prod"){this.options=e,this.network=t,this.env=o,this._suiGrpcClient=e.clients.grpc,this._suiJsonRpcClient=e.clients.jsonRpc,this.aggregatorModule=new r8(this),this.curveModule=new r9(this)}get suiClient(){return this._suiGrpcClient}get suiJsonRpcClient(){return this._suiJsonRpcClient}}class at{suiClient;constructor(e){this.suiClient=e}validatePrivateKey(e,t){c(e?.trim(),"Private key is required");let o=el.fromSecretKey(e),r=o.getPublicKey().toSuiAddress();if(r!==t)throw Error(`Private key mismatch. Expected: ${t}, Got: ${r}`);return o}async createDraft(e,t,o){c(e?.trim(),"Sender address is required"),c(t?.trim(),"Recipient address is required"),c(e!==t,"Sender and recipient cannot be the same"),c(o>0n,"Transfer amount must be at least 1 MIST");try{let r=new i,[a]=r.splitCoins(r.gas,[o]);r.transferObjects([a],t),r.setSender(e);let{referenceGasPrice:n}=await this.suiClient.getReferenceGasPrice();r.setGasPrice(n);let s=await eC(this.suiClient,r,e,.1);r=await eO({inheritTx:r,sender:e,feeAmount:s,suiInputAmount:o},this.suiClient);let c=await r.build({client:this.suiClient}),u=Buffer.from(c).toString("base64"),l=await r.getDigest();return{sender:e,recipient:t,amountMIST:o,txDraftBase64:u,txDigest:l}}catch(e){throw Error(`Failed to create draft transaction: ${e instanceof Error?e.message:"Unknown error"}`)}}async execute(e,t){try{c(e,"Draft transaction is required"),c(e.txDraftBase64?.trim(),"Transaction data is required");let o=this.validatePrivateKey(t,e.sender),r=d(e.txDraftBase64),{signature:a}=await o.signTransaction(r),n=await this.suiClient.executeTransaction({transaction:r,signatures:[a],include:{effects:!0}}),i="Transaction"===n.$kind?n.Transaction:n.FailedTransaction,{status:s}=i;return{success:s.success,txDigest:i.digest,effects:i.effects,error:s.success?void 0:s.error.message}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Unknown error occurred"}}}async getTransactionStatus(e){c(e?.trim(),"Transaction digest is required");try{let t=await this.suiClient.getTransaction({digest:e,include:{effects:!0}}),o="Transaction"===t.$kind?t.Transaction:t.FailedTransaction;if(!o.effects?.status)return"pending";return o.effects.status.success?"success":"failure"}catch(e){if(e instanceof Error&&(e.message.includes("not found")||e.message.includes("Could not find")))return"pending";return"failure"}}}var ao=1e4;export{ADMIN_CAP_ID,BOOSTING_PACKAGE_ID,BoostingModule,CLOCK_OBJECT_ID,CONFIG_ID,NATIVE_USDC_TOKEN_TYPE,NoodlesPaySdk,SUBSCRIPTION_CONFIG,SUI_ADDRESS_ZERO,SUI_FULL_TYPE,SUI_METADATA_OBJECT_ID,SUI_TYPE,SubscriptionModule,USDC_TOKEN_TYPE,addGasFee,getAmountAfterFee,getCoinObjectIdsByAmount,getNeededGasFee,getSplitCoinForTx,getSplitCoinsAfterFee,isSuiCoinType}from"./832.js";export{SuiGrpcClient}from"@mysten/sui/grpc";export{r8 as AggregatorModule,rC as BLUEFIN_PACKAGE_ID,r9 as CurveModule,r7 as DEFAULT_TRADE_FEE,at as DraftTransferTx,rN as MetaAgError,r6 as MetaClient,ae as NoodlesSdk,ed as SuiJsonRpcClient,ri as SevenKAggregator,ru as AftermathAggregator,tQ as AftermathCpmm,t0 as AftermathLsd,o8 as AggregatorConverter,r_ as AstrosAggregator,t6 as Blastfun,rj as Bluefin7kClient,tK as BluefinTx,t2 as BluefinClmm,t8 as BluemoveCpmm,t7 as Bolt,tH as MoonbagsCalculation,rm as CetusAggregator,tv as CetusAggregatorConverter,rK as CetusClient,ot as CetusClmm,or as CetusDlmm,rr as checkIsSui,rf as SupportedAggregator,tk as BlastFunConstants,tV as MoonbagsConstants,tG as BlastFunCustomCalculation,tq as BlastFunCustomTransaction,on as DeepbookV3,ro as denormalizeTokenType,os as DipCpmm,rU as MetaAgErrorCode,ao as BASE_BPS,ou as FerraClmm,od as FerraDlmm,rg as FlowXAggregator,tL as FlowXAggregatorConverter,rq as FlowxClient,of as FlowxCpmm,oA as FullsailClmm,r1 as getExpectedReturn,rh as getGrpcFullnodeUrl,rS as getJsonRpcFullnodeUrl,rB as getMemezPumpSDK,rb as getMoveObject,rA as getMoveObjectContent,rF as getTransactionResultDigest,oM as HaedalLsdWal,oy as KriyaClmm,oF as MagmaAlmm,oB as MagmaClmm,o5 as MetaAggregator,tD as Metastable,oR as MomentumClmm,ov as Movepump,rt as normalizeTokenType,ok as Obric,tj as BlastFunPackage,tN as Bps,tU as MathUtils,tJ as MoonbagsPackage,tW as PythPrice,tz as PythUtils,oN as Scallop,t$ as BlastFunSDKCalculation,tY as BlastFunSDKTransaction,tx as SevenKAggregatorConverter,oG as SevenkCpmm,oq as SevenkFun,rO as splitSuiCoinAfterFeeFromBuyTx,rM as splitSuiCoinAfterFeeFromSellTx,oV as SrmCpmm,oH as Steamm,oz as TradeportClmm,tX as MoonbagsTransaction,oZ as TurbosClmm,o1 as TurbosFun,ra as AggregatorProtocol,rD as SupportedBondingCurve,tR as TradeFeeOptions,o2 as RouterUtils,r0 as timeout,o6 as Volo,oO as Walrus};
|