@minswap/noodles-sdk 0.0.64 → 0.0.65-beta.1
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/0~rslib-runtime.js +1 -0
- package/dist/832.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +46 -46
- package/dist/index.js +1 -1
- package/dist/pay.cjs +1 -1
- package/dist/pay.d.ts +2 -2
- package/package.json +19 -18
- package/dist/rslib-runtime.js +0 -1
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__webpack_require__ as e}from"./rslib-runtime.js";import{BluefinXTx as t,Config as o,buildTx as r,getQuote as a}from"@bluefin-exchange/bluefin7k-aggregator-sdk";import{Transaction as n}from"@mysten/sui/transactions";import i from"bignumber.js";import s from"@minswap/tiny-invariant";import{SUI_CLOCK_OBJECT_ID as c,SUI_SYSTEM_STATE_OBJECT_ID as u,fromBase64 as l,isValidSuiAddress as d,normalizeStructTag as p,normalizeSuiAddress as _,parseStructTag as m,toHex as f}from"@mysten/sui/utils";import{Aftermath as g,Helpers as A}from"aftermath-ts-sdk";import{buildSwapPTBFromQuote as b,getCoins as I,getQuote as T}from"@naviprotocol/astros-aggregator-sdk";import{AFSUI as C,AFTERMATH as O,ALPHAFI as M,AggregatorClient as E,BLUEFIN as h,BLUEMOVE as y,CETUS as S,CETUSDLMM as P,DEEPBOOKV3 as F,Env as B,FERRACLMM as D,FERRADLMM as w,FLOWXV2 as x,FLOWXV3 as R,FULLSAIL as L,HAEDAL as v,HAEDALHMMV2 as k,HAEDALPMM as U,HAWAL as N,KRIYA as K,KRIYAV3 as G,MAGMA as j,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{MemezPumpSDK as ec}from"@interest-protocol/memez-fun-sdk";import{Network as eu}from"@interest-protocol/sui-core-sdk";import{SuiClient as el,getFullnodeUrl as ed}from"@mysten/sui/client";import{SuiPriceServiceConnection as ep,SuiPythClient as e_}from"@pythnetwork/pyth-sui-js";import{Ed25519Keypair as em}from"@mysten/sui/keypairs/ed25519";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 eh}from"./832.js";var ey,eS,eP,eF,eB,eD,ew,ex,eR,eL,ev,ek,eU,eN,eK,eG,ej,eq,e$,eY,eV,eJ,eH,eX,eW,ez,eQ,eZ,e0,e1,e6,e4,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,th,ty,tS,tP,tF,tB,tD,tw,tx,tR,tL,tv,tk,tU,tN,tK,tG,tj,tq,t$,tY,tV,tJ,tH,tX,tW,tz,tQ,tZ,t0,t1,t6,t4,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,oh,oy,oS,oP,oF,oB,oD,ow,ox,oR,oL,ov,ok,oU,oN,oK,oG,oj,oq,o$,oY,oV,oJ,oH,oX,oW,oz,oQ,oZ,o0,o1,o6,o4,o3,o2,o5,o8,o9,o7,re,rt={};e.r(rt),e.d(rt,{Bluefin7kClient:()=>rk});var ro={};e.r(ro),e.d(ro,{CetusClient:()=>rN});var rr={};function ra(e){return e===eI?eh:e}function rn(e){return e===eh?eI:e}function ri(e){return e===eh||e===eI}e.r(rr),e.d(rr,{FlowxClient:()=>rK}),(ey=tR||(tR={})).MAX_AMOUNT_IN="18446744073709551615",ey.LAST_PACKAGE_ID="0x7e57926855b32baa3b3cabed89380b8d415606fdedadc18e58bd1ef1e60aee48",ey.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:`${ey.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},ey.closeSwap=function(e){let{tx:t,coinOutType:o,swapSession:r}=e,[a]=t.moveCall({target:`${ey.LAST_PACKAGE_ID}::aggregator::close_swap`,typeArguments:[o],arguments:[r]});return a};var rs=((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(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=>{s(e.extra?.poolStructTag,"Aftermath protocol requires poolStructTag");let[t]=i(e.extra.poolStructTag);return{...n(e),protocol:rs.AFTERMATH_CPMM,coinLpType:t}},flowx_v3:e=>{s(e.extra?.swapFeeRate,"flowx_v3 protocol requires swapFeeRate");let t=e.extra.swapFeeRate;return{...n(e),protocol:rs.FLOWX_CLMM,poolFeeRate:t}},turbos:e=>{s(e.extra?.poolStructTag,"turbos protocol requires poolStructTag");let[t,o,r]=i(e.extra.poolStructTag);return{...n(e),protocol:rs.TURBOS_CLMM,coinFeeType:r}},obric:e=>(s(e.extra?.oracles,"obric protocol requires oracles"),{...n(e),protocol:rs.OBRIC,pythPriceFeedIdA:c(e.extra.oracles[0]),pythPriceFeedIdB:c(e.extra.oracles[1])}),haedal_pmm:e=>(s(e.extra.oracles,"haedal_pmm protocol requires oracles"),{...n(e),protocol:rs.HAEDAL_CPMM,pythPriceFeedIdA:c(e.extra.oracles[0]),pythPriceFeedIdB:c(e.extra.oracles[1])}),sevenk_v1:e=>{s(e.extra?.poolStructTag,"sevenk_v1 protocol requires poolStructTag"),s(e.extra?.oracleConfigX,"sevenk_v1 protocol requires oracleConfigX"),s(e.extra?.oracleConfigY,"sevenk_v1 protocol requires oracleConfigY");let t=e.extra.oracles?.[0]?.Pyth?.bytes,o=e.extra.oracles?.[1]?.Pyth?.bytes;s(t,"sevenk_v1 protocol requires pythPriceFeedIdA"),s(o,"sevenk_v1 protocol requires pythPriceFeedIdB");let[r,a,c]=i(e.extra.poolStructTag);return{...n(e),protocol:rs.SEVENK_CPMM,coinLpType:c,pythPriceFeedIdA:t,pythPriceFeedIdB:o,oracleConfigA:e.extra.oracleConfigX,oracleConfigB:e.extra.oracleConfigY}},steamm:e=>{s(e.extra?.poolStructTag,"steamm protocol requires poolStructTag"),s(e.extra?.bankAStructTag,"steamm protocol requires bankAStructTag"),s(e.extra?.lendingMarketA,"steamm protocol requires lendingMarketA"),s(e.extra?.bankA,"steamm protocol requires bankA"),s(e.extra?.bankB,"steamm protocol requires bankB");let[t,o,r,a]=i(e.extra.poolStructTag),[c,u,l]=i(e.extra.bankAStructTag);return{...n(e),protocol:rs.STEAMM_CPMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:c,bCoinAType:t,bCoinBType:o,lpBCoinType:a}},steamm_oracle_quoter:e=>{s(e.extra?.poolStructTag,"steamm_oracle_quoter protocol requires poolStructTag"),s(e.extra?.bankAStructTag,"steamm_oracle_quoter protocol requires bankAStructTag"),s(e.extra?.lendingMarketA,"steamm_oracle_quoter protocol requires lendingMarketA"),s(e.extra?.oracleRegistry,"steamm_oracle_quoter protocol requires oracleRegistry"),s(e.extra?.bankA,"steamm_oracle_quoter protocol requires bankA"),s(e.extra?.bankB,"steamm_oracle_quoter protocol requires bankB"),s(e.extra?.oracleIndexes,"steamm_oracle_quoter protocol requires oracleIndexes"),s(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:rs.STEAMM_OMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:u,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:c(e.extra.oracles[0]),pythPriceFeedIdB:c(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:p,oracleIndexB:_}},steamm_oracle_quoter_v2:e=>{s(e.extra?.poolStructTag,"steamm_oracle_quoter_v2 protocol requires poolStructTag"),s(e.extra?.bankAStructTag,"steamm_oracle_quoter_v2 protocol requires bankAStructTag"),s(e.extra?.lendingMarketA,"steamm_oracle_quoter_v2 protocol requires lendingMarketA"),s(e.extra?.oracleRegistry,"steamm_oracle_quoter_v2 protocol requires oracleRegistry"),s(e.extra?.bankA,"steamm_oracle_quoter_v2 protocol requires bankA"),s(e.extra?.bankB,"steamm_oracle_quoter_v2 protocol requires bankB"),s(e.extra?.oracleIndexes,"steamm_oracle_quoter_v2 protocol requires oracleIndexes"),s(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:rs.STEAMM_OMM_V2,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:u,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:c(e.extra.oracles[0]),pythPriceFeedIdB:c(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:p,oracleIndexB:_}},cetus:e=>({...n(e),protocol:rs.CETUS_CLMM}),bluemove:e=>({...n(e),protocol:rs.BLUEMOVE_CPMM}),kriya:e=>({...n(e),protocol:rs.KRIYA_CPMM}),kriya_v3:e=>({...n(e),protocol:rs.KRIYA_CLMM}),deepbook_v3:e=>({...n(e),protocol:rs.DEEPBOOK_V3}),flowx:e=>({...n(e),protocol:rs.FLOWX_CPMM}),bluefin:e=>({...n(e),protocol:rs.BLUEFIN_CLMM}),springsui:e=>({...n(e),protocol:rs.SPRINGSUI}),magma:e=>({...n(e),protocol:rs.MAGMA_CLMM}),momentum:e=>({...n(e),protocol:rs.MOMENTUM_CLMM}),fullsail:e=>({...n(e),protocol:rs.FULLSAIL_CLMM}),stsui:e=>({...n(e),protocol:rs.ALPHAFI_LSD}),suiswap:e=>({...n(e),protocol:rs.SUISWAP_CPMM}),cetus_dlmm:e=>({...n(e),protocol:rs.CETUS_DLMM}),ferra_dlmm:e=>({...n(e),protocol:rs.FERRA_DLMM}),ferra_clmm:e=>({...n(e),protocol:rs.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=tR.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 m(e||"").typeParams.map(p)}function c(e){let t=e?.Pyth?.bytes||e?.Pyth?.price_identifier?.bytes;return s(t,"Pyth price feed id is not found"),"0x"+f(Uint8Array.from(t))}e.toMetaAggregatorPath=r,e.toMetaAggregatorPaths=a,e.convert=function(e){var t,o,r;let n;s(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),c=a((o=e.swaps,r=i,o.map(e=>{let t=r[e.poolId],o=rn(e.assetIn),a=rn(e.assetOut),n={type:rn(t?.allTokens?.[0]?.address),decimals:t?.allTokens?.[0]?.decimal},i={type:rn(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:c}}}(tL||(tL={}));class rc{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:r,tradeFee:n,metaAggregator:i,supportedProtocols:s}){try{this._config.sevenKApiKey&&o.setApiKey(this._config.sevenKApiKey);let c=n?n.tradeFeePercent:this._config.defaultTradeFee.tradeFeePercent,u=s??(i?tL.SUPPORTED_PROTOCOLS:void 0);return await a({tokenIn:t,tokenOut:r,amountIn:e.toString(),commissionBps:1e4*c,sources:u})}catch(e){return null}}async getTransaction({walletAddress:e,completeRoute:o,slippage:a,tradeFee:i}){let s,c;i?(s=i.tradeFeePercent,c=i.tradeFeeRecipientAddress):(s=this._config.defaultTradeFee.tradeFeePercent,c=this._config.defaultTradeFee.tradeFeeRecipientAddress);let u=await r({quoteResponse:o,slippage:a,accountAddress:e,commission:{partner:c,commissionBps:1e4*s}});return u.tx instanceof t?n.from(u.tx.txBytes).build({client:this._suiClient}):(u.tx.setSender(e),u.tx.build({client:this._suiClient}))}}(rc||(rc={})).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 i(t.tokenInAmount).multipliedBy(10**o).toFixed(0,3)),s=BigInt(new i(t.tokenOutAmount).multipliedBy(10**a).toFixed(0,3));e.push({poolAddress:t.poolId,coinIn:t.tokenIn,coinOut:t.tokenOut,amountIn:n,amountOut:s})}if(0===e.length)continue;let a=r[o.tokenIn]??0,n=r[o.tokenOut]??0,s=BigInt(new i(o.tokenInAmount).multipliedBy(10**a).toFixed(0,3)),c=BigInt(new i(o.tokenOutAmount).multipliedBy(10**n).toFixed(0,3));t.push({paths:e,coinIn:o.tokenIn,coinOut:o.tokenOut,amountIn:s,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;if(this._config.aftermathApiEndpoint?this._aftermathClient=new g(this._config.aftermathApiEndpoint):this._aftermathClient=new g("MAINNET"),await this._aftermathClient.init(),this._config.aftermathApiKey){let e=A.keypairFromPrivateKey(this._config.aftermathApiKey);await this._aftermathClient.Auth().init({async signMessageCallback({message:t}){let{signature:o}=await e.signPersonalMessage(t);return{signature:o}},walletAddress:e.toSuiAddress()})}return this._aftermathClient}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 null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o}){let r=await this.aftermathClient(),a=await r.Router().getTransactionForCompleteTradeRoute({completeRoute:e,walletAddress:t,slippage:o,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}};class rl{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r}){try{let a;return a=r?{fee:1e4*r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:1e4*this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress},await T(t,o,e,this._config.astrosApiKey,{byAmountIn:!0,serviceFee:a})}catch(e){return 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 s,c;s=r?{fee:r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let u=new i(e.amount_out).multipliedBy(1-o-s.fee).toNumber(),l=new n;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 I(this._suiClient,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 d=await b(t,l,u,c,e,void 0,!1,this._config.astrosApiKey,{serviceFee:s});return l.transferObjects([d],t),l.setSender(t),l.build({client:this._suiClient})}}(rl||(rl={})).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}},(tv||(tv={})).equals=function(e,t){return e.tradeFeePercent===t.tradeFeePercent&&e.tradeFeeRecipientAddress===t.tradeFeeRecipientAddress},(eP=tk||(tk={})).UNIVERSAL_META_VAULT_INTEGRATION_PACKAGE_ID="0xfd12517a9fc87c6a1f2357ad13b3421fb27a8bd7ca07d5fd5934ac35733baa47",(eF=eP.MetaCoinType||(eP.MetaCoinType={})).SUPER_SUI="0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI",eF.MUSD="0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD",eF.METH="0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH",eP.VERSION_OBJ_ID="0x4696559327b35ff2ab26904e7426a1646312e9c836d5c6cff6709a5ccc30915c",eP.createCap=function(e){let t,{txb:o,coinType:r,metaCoin:a,createCapAllTypeParams:n,whitelistedAppId:i,poolId:u,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(u),o.object(e.registryId)];break;case"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD":{let r=l.get(e.pythPriceFeedIdMeta);s(r,"Not found priceMetaId in pythObjectIdMap"),t=[o.object(i),o.object(u),o.object(r),o.object(c)];break}case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":{let r=l.get(e.pythPriceFeedIdMeta);s(r,"Not found priceId in pythObjectIdMap");let a=l.get(e.pythPriceFeedIdEth);s(a,"Not found priceEthFeedId in pythObjectIdMap"),t=[o.object(i),o.object(u),o.object(r),o.object(a),o.object(c)];break}default:throw Error("Invalid MetaCoin: "+a.toString())}return o.moveCall({target:`${d}::${p}::${_}`,typeArguments:m,arguments:t})},eP.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)}},eP.isMetaCoinType=function(e){return Object.values(eP.MetaCoinType).map(e=>e.toString()).includes(e)},eP.getCreateCapAllTypeParams=function(e,t){switch(e){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":return t===eP.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,K,x,R,G,Z,O,v,ee,C,y,F,V,Q,h,U,M,H,X,q,Y,N,W,$,z,j,J,k,L,P,w,D];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=tR.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;s(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 tk.MetaCoinType.SUPER_SUI:return s(o.metastable_registry_id,`METASTABLE_SUPER_SUI protocol requires 'metastable_registry_id' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:rs.METASTABLE,metaCoin:a,registryId:o.metastable_registry_id};case tk.MetaCoinType.MUSD:return s(o.metastable_price_seed,`METASTABLE_MUSD protocol requires 'metastable_price_seed' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:rs.METASTABLE,metaCoin:a,pythPriceFeedIdMeta:o.metastable_price_seed};case tk.MetaCoinType.METH:return s(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:rs.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.`)}},[F]:e=>({...r(e),protocol:rs.DEEPBOOK_V3}),[O]:e=>{let t=e.extendedDetails;return s(t?.aftermath_lp_supply_type,`AFTERMATH_CPMM protocol requires 'aftermath_lp_type' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rs.AFTERMATH_CPMM,coinLpType:t.aftermath_lp_supply_type}},[R]:e=>({...r(e),protocol:rs.FLOWX_CLMM,poolFeeRate:String(1e6*e.feeRate)}),[U]:e=>{let t=e.extendedDetails;return s(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:rs.HAEDAL_CPMM,pythPriceFeedIdA:t.haedal_pmm_base_price_seed,pythPriceFeedIdB:t.haedal_pmm_quote_price_seed}},[k]:e=>{let t=e.extendedDetails;return s(t?.haedalhmmv2_base_price_seed,`HAEDAL_CPMM_V2 protocol requires 'haedal_pyth_price_base_id' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rs.HAEDAL_CPMM_V2,pythPriceFeedIdBase:t.haedalhmmv2_base_price_seed}},[V]:e=>(s(e.extendedDetails?.scallop_scoin_treasury,`SCALLOP protocol requires 'scallop_scoin_treasury' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rs.SCALLOP,scoinTreasury:e.extendedDetails.scallop_scoin_treasury}),[X]:e=>{let t=e.extendedDetails;return s(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:rs.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 s(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:rs.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 s(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:rs.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:rs.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:rs.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 s(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:rs.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=>(s(e.extendedDetails?.turbos_fee_type,`TURBOS_CLMM protocol requires 'coinFeeType' parameter for pool ${e.id}. Provide it via the parametersMap argument.`),{...r(e),protocol:rs.TURBOS_CLMM,coinFeeType:e.extendedDetails.turbos_fee_type}),[C]:e=>({...r(e),protocol:rs.AFTERMATH_LSD}),[M]:e=>({...r(e),protocol:rs.ALPHAFI_LSD}),[h]:e=>({...r(e),protocol:rs.BLUEFIN_CLMM}),[y]:e=>({...r(e),protocol:rs.BLUEMOVE_CPMM}),[S]:e=>({...r(e),protocol:rs.CETUS_CLMM}),[P]:e=>({...r(e),protocol:rs.CETUS_DLMM}),[D]:e=>({...r(e),protocol:rs.FERRA_CLMM}),[w]:e=>({...r(e),protocol:rs.FERRA_DLMM}),[x]:e=>({...r(e),protocol:rs.FLOWX_CPMM}),[L]:e=>({...r(e),protocol:rs.FULLSAIL_CLMM}),[v]:e=>({...r(e),protocol:rs.HAEDAL_LSD}),[N]:e=>({...r(e),protocol:rs.HAEDAL_LSD_WAL}),[K]:e=>({...r(e),protocol:rs.KRIYA_CPMM}),[G]:e=>({...r(e),protocol:rs.KRIYA_CLMM}),[j]:e=>({...r(e),protocol:rs.MAGMA_CLMM}),[$]:e=>({...r(e),protocol:rs.MOMENTUM_CLMM}),[Q]:e=>({...r(e),protocol:rs.SPRINGSUI}),[H]:e=>({...r(e),protocol:rs.SPRINGSUI}),[ee]:e=>({...r(e),protocol:rs.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)}}}(tU||(tU={}));class rd{_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&&!tv.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?tU.SUPPORTED_PROTOCOLS:void 0);return await i.findRouters({from:t,target:o,amount:new et(e.toString()),byAmountIn:!0,providers:s})}catch(e){return null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o,tradeFee:r}){let a=this.cetusClient(t,r),i=new n;return i.setSender(t),await a.fastRouterSwap({router:e,txb:i,slippage:o}),i.build({client:this._suiClient})}}(rd||(rd={})).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 rp=((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:rs.FLOWX_CPMM}),[ei.FLOWX_V3]:t=>(s(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.FLOWX_CLMM,poolFeeRate:t.poolFee.toString()}),[ei.CETUS]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.CETUS_CLMM}),[ei.CETUS_DLMM]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.CETUS_DLMM}),[ei.AFTERMATH]:t=>(s(t.lpCoinType,`AFTERMATH protocol requires lpCoinType for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rs.AFTERMATH_CPMM,coinLpType:t.lpCoinType}),[ei.AFTERMATH_LSD]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rs.AFTERMATH_LSD}),[ei.ALPHA_FI]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rs.ALPHAFI_LSD}),[ei.BLUEFIN]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.BLUEFIN_CLMM}),[ei.BLUEMOVE]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rs.BLUEMOVE_CPMM}),[ei.DEEPBOOK_V3]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.DEEPBOOK_V3}),[ei.FERRA_CLMM]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.FERRA_CLMM}),[ei.FERRA_DLMM]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.FERRA_DLMM}),[ei.FULL_SAIL]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.FULLSAIL_CLMM}),[ei.HAEDAL]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rs.HAEDAL_LSD}),[ei.HAEDAL_PMM]:t=>{let o=t.oracles;return s(o&&o.length>=2,`HAEDAL_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.HAEDAL_CPMM,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId}},[ei.KRIYA_DEX]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.KRIYA_CPMM}),[ei.KRIYA_V3]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.KRIYA_CLMM}),[ei.MAGMA_FINANCE]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.MAGMA_CLMM}),[ei.MAGMA_ALMM]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.MAGMA_ALMM}),[ei.MOMENTUM_FINANCE]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.MOMENTUM_CLMM}),[ei.OBRIC]:t=>(s(t.xPriceId&&t.yPriceId,`OBRIC protocol requires price feeds for pool ${t.pool.id}`),s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.OBRIC,priceInfoObjIdA:t.xPriceId,priceInfoObjIdB:t.yPriceId}),[ei.SPRING_SUI]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rs.SPRINGSUI}),[ei.STEAMM]:t=>{s(void 0!==t.bankXInfo&&void 0!==t.bankYInfo,`STEAMM protocol requires bank info for pool ${t.pool.id}`),s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),s(void 0!==t.quoterType,`quoterType is required for pool ${t.pool.id}`),s(void 0!==t.poolInfo,`poolInfo is required for pool ${t.pool.id}`),s(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),a=t.xForY;switch(t.quoterType){case"constant_product":return{...r,aToB:a,protocol:rs.STEAMM_CPMM,bankAId:a?t.bankXInfo.bankId:t.bankYInfo.bankId,bankBId:a?t.bankYInfo.bankId:t.bankXInfo.bankId,lendingMarketId:t.bankXInfo.lendingMarketId,lendingMarketType:t.bankXInfo.lendingMarketType,bCoinAType:a?t.bankXInfo.bTokenType:t.bankYInfo.bTokenType,bCoinBType:a?t.bankYInfo.bTokenType:t.bankXInfo.bTokenType,lpBCoinType:t.poolInfo.lpTokenType};case"oracle":case"oracle_v2":{s(void 0!==o&&o.length>=2,`STEAMM_OMM protocol requires oracle price feeds for pool ${t.pool.id}.`);let e=o[0],n=o[1];return s(void 0!==e.oracleId&&void 0!==n.oracleId&&void 0!==e.oracleIndex&&void 0!==n.oracleIndex,`STEAMM_OMM protocol requires oracle ids for pool ${t.pool.id}.`),{...r,aToB:a,protocol:rs.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:n.priceId,oracleRegistryId:t.protocolConfig.oracleRegistryId,oracleIndexA:e.oracleIndex.toString(),oracleIndexB:n.oracleIndex.toString()}}default:throw Error(`Unsupported quoter type: ${t.quoterType} for pool ${t.pool.id}`)}},[ei.SEVENK_V1]:t=>{let o=t.oracles;return s(o&&o.length>=2,`SEVENK_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),s(t.poolStructTag,`SEVENK_V1 protocol requires poolStructTag for pool ${t.pool.id}`),s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.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=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.SRM_CPMM}),[ei.TURBOS_FIANCE]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.TURBOS_CLMM,coinFeeType:t.poolStructTag?t.poolStructTag.split("<")[1].split(",")[2].trim().replace(">",""):""}),[ei.VOLO_LSD]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rs.VOLO}),[ei.TRADEPORT]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),s(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,poolFeeRate:t.poolFee.toString(),protocol:rs.TRADEPORT_CLMM}),[ei.TURBOS_FUN]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.TURBOS_FUN}),[ei.BLUEMOVE_FUN]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,expectedAmountOut:t.amountOut.toString(),protocol:rs.MOVEPUMP}),[ei.SEVEN_K_FUN]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.SEVENK_FUN}),[ei.DIPCOIN]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.DIP_CPMM}),[ei.BOLT]:t=>(s(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rs.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(e.toMetaAggregatorPath);for(let e of r.values())a[e].amountIn=tR.MAX_AMOUNT_IN;return a}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)}}}(tN||(tN={}));class r_{_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?tN.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 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 rm(e,t){return(await rf(e,t)).fields}async function rf(e,t){let o=await e.getObject({id:t,options:{showContent:!0}}),r=o.data?.content;return s(r,"Pool object not found or has no content"),s("moveObject"===r.dataType,"Object is not a Move object"),r}(r_||(r_={})).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}},(eD=tK||(tK={})).PACKAGE_ID_V4="0x7e6aa6e179466ab2814425a780b122575296d011119fa69d27f289f5a28814bd",eD.MEMEZ_AV_OBJECT_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",((ew=tG||(tG={})).U64||(ew.U64={})).mulDivUp=function(e,t,o){let r=BigInt(0);return e*t%o>BigInt(0)&&(r=BigInt(1)),e*t/o+r};var rg=tj||(tj={});function rA(e){return s(BigInt(e)<=BigInt(1e4),"Bps overflow"),BigInt(e)}rg.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},rg.sub=function(e,t){return s(BigInt(e.pos0)>=BigInt(t.pos0),"Bps underflow"),{pos0:(BigInt(e.pos0)-BigInt(t.pos0)).toString()}},rg.value=function(e){return BigInt(e.pos0)},rg.new_=function(e){return{pos0:rA(e).toString()}},rg.assertOverflow=rA,((ex=tq||(tq={})).MemezFun||(ex.MemezFun={})).isSniperProtectedMemezFun=async function(e,t){return(await rm(e,t)).public_key.length>0},(eR=ex.MemezFees||(ex.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=tj.calcUp(tj.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")},eR.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 tj.calcUp(tj.sub(r,t),o)}throw Error("Unknown fee variant")},(ex.MemezBurner||(ex.MemezBurner={})).calculate=function(e,t){if(tj.value(e.fee.fields)===BigInt(0)||t===BigInt(0)||t>=BigInt(e.target_liquidity))return tj.new_(0);let o=BigInt(1e4);return tj.new_(tG.U64.mulDivUp(tj.value(e.fee.fields),tG.U64.mulDivUp(t,o,BigInt(e.target_liquidity)),o))},(eL=ex.MemezPump||(ex.MemezPump={})).getPumpState=async function(e,t){return await rm(e,t.inner_state)},eL.pump=function(e,t){let o=e.constant_product.fields,r=ex.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=ex.MemezFees.takeWithDiscount(o.meme_swap_fee,s,o.meme_referrer_fee.fields);return s-c},eL.dump=function(e,t){let o=e.constant_product.fields,r=ex.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=ex.MemezBurner.calculate(o.burner.fields,i),u=tj.calcUp(c,a),l=a-(tj.value(c)!==BigInt(0)?u:BigInt(0)),d=(s+i)*l/(n+l);d>i&&(d=i);let p=ex.MemezFees.takeWithDiscount(o.quote_swap_fee,d,o.quote_referrer_fee.fields);return d-p},(ev=t$||(t$={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,n=await rm(t,r),i=await tq.MemezPump.getPumpState(t,n);return o=ef(o,a),tq.MemezPump.pump(i,o)},ev.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,n=await rm(t,r),i=await tq.MemezPump.getPumpState(t,n);return ef(tq.MemezPump.dump(i,o),a)};let rb="0x62412b7268c35f3808336aee57a52836501f40b8ba5d936f8ad275e672befd04";async function rI(e,t){let o,r,{inputAmount:a,accountAddress:i,frontendFee:c,frontendFeeRecipient:u,extendTx:l,isSponsored:d}=e;s(e.inCoinType===eh||e.inCoinType===eI,"Input must be SUI");let{tx:p,coinIn:_}=l||{},m=eE(a,c||"0"),f=p||new n;if(_)o=f.splitCoins(_,m),tY.transferOrDestroyZeroCoin(f,eh,_,i);else{let{coinData:e}=await eg({account:i,amount:a,splits:m,coinType:eh,inheritTx:f,isSponsored:d||!1},t);o=e}if(c&&u){let[e,t]=o;r=e,f.transferObjects([t],f.pure.address(u||i))}else[r]=o;return{tx:f,coinOut:r}}async function rT(e,t,o){if(s(t.outCoinType===eh||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:`${rb}::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}}(tY||(tY={})).transferOrDestroyZeroCoin=function(e,t,o,r){e.moveCall({target:`${rb}::utils::transfer_or_destroy`,typeArguments:[t],arguments:[o,e.pure.address(r)]})};var rC=tV||(tV={});async function rO(e){let t=e||new n;return t.moveCall({target:`${tK.PACKAGE_ID_V4}::memez_allowed_versions::get_allowed_versions`,arguments:[t.object(tK.MEMEZ_AV_OBJECT_ID)],typeArguments:[]})}rC.getAllowedVersions=rO,rC.buildBuyTx=async function(e,t){s(!await tq.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 rI(e,t);s(r,"Coin out is required");let a=o.moveCall({target:`${tK.PACKAGE_ID_V4}::memez_pump::pump`,typeArguments:[e.outCoinType,eh],arguments:[o.object(e.poolId),r,o.pure.vector("address",[]),o.pure.vector("vector<u8>",[]),o.pure.u64(e.minAmountOut),await rO(o)]});return{tx:o,coinOut:a}},rC.buildSellTx=async function(e,t){s(e.outCoinType===eh||e.outCoinType===eI,"Output must be SUI");let o=await rm(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 rO(r)]});return await rT(r,e,i)};let rM=new ec({network:eu.MAINNET,fullNodeUrl:ed("mainnet")});function rE(){return rM}(ek=tJ||(tJ={})).getCurveAmountAfterBuy=async function(e){let{suiAmount:t,poolId:o,frontendFee:r}=e;t=ef(t,r);let{memeAmountOut:a}=await rE().quotePump({pool:o,amount:t});return a},ek.getSuiAmountAfterSell=async function(e){let{curveAmount:t,poolId:o,frontendFee:r}=e,{quoteAmountOut:a}=await rE().quoteDump({pool:o,amount:t});return ef(a,r)};var rh=tH||(tH={});async function ry(e,t){let{tx:o,coinOut:r}=await rI(e,t);s(r,"Coin out is required");let{memeCoin:a,tx:n}=await rE().pump({pool:e.poolId,quoteCoin:r,minAmountOut:e.minAmountOut,tx:o});return{tx:n,coinOut:a}}async function rS(e,t){s(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 rE().dump({pool:e.poolId,memeCoin:a,tx:o,minAmountOut:e.minAmountOut});return await rT(i,e,n)}rh.buildBuyTx=ry,rh.buildSellTx=rS,rh.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:c},u){s(eT(t),"coinInType must be SUI for buy transaction"),s(o!==t,"coinOutType must be different from coinInType"),s(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),s(e>0,"coinInAmount must be greater than 0");let l=BigInt(new i((await tJ.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:c?c.tradeFeePercent:void 0})).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await ry({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:c?c.tradeFeePercent:void 0,frontendFeeRecipient:c?c.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);s(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})},rh.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:c},u){s(eT(o),"coinOutType must be SUI for sell transaction"),s(o!==t,"coinOutType must be different from coinInType"),s(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),s(e>0,"coinInAmount must be greater than 0");let l=BigInt(new i((await tJ.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:c?c.tradeFeePercent:void 0})).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rS({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:c?c.tradeFeePercent:void 0,frontendFeeRecipient:c?c.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);s(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 rP=((eU={}).BLAST_FUN="BLAST_FUN",eU.MOONBAGS="MOONBAGS",eU);(eN=tX||(tX={})).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),(eG=(eK=tW||(tW={})).Curves||(eK.Curves={})).calculateAddLiquidityCost=function(e,t,o){return e*t/(t-o)-e},eG.calculateRemoveLiquidityReturn=function(e,t,o){return t-e*t/(e+o)},eG.calculateTokenAmountReceived=function(e,t,o){return t-e*t/(e+o)},(ej=eK.Moonbags||(eK.Moonbags={})).getDynamicVirtualTokenReserves=async function(e,t){let o=await e.getDynamicFieldObject({parentId:t,name:{type:"vector<u8>",value:"virtual_token_reserves"}});if(o.data)return BigInt(o.data.content.fields.value)},ej.buyExactInReturnsWithLock=function(e){let{inputAmount:t,amountIn:o,pool:r,config:a,dynamicVirtualTokenReserves:n}=e,i=BigInt(r.virtual_sui_reserves),c=BigInt(r.virtual_token_reserves),u=BigInt(r.remain_token_reserves.fields.balance),l=eK.Curves.calculateRemoveLiquidityReturn(i,c,o),d=c-(n||u),p=l,_=o;l>d&&(p=d,_=eK.Curves.calculateAddLiquidityCost(i,c,d)+BigInt(1));let m=_*BigInt(a.platform_fee)/tX.FEE_DENOMINATOR;return s(t>=_+m,"Input amount is less than used SUI + fee"),{receivedCurve:p,receivedSui:t-_-m}},ej.sellReturns=function(e){let{amountIn:t,pool:o,config:r}=e,a=BigInt(o.virtual_sui_reserves),n=BigInt(o.virtual_token_reserves),i=BigInt(o.real_sui_reserves.fields.balance),s=eK.Curves.calculateRemoveLiquidityReturn(n,a,t);s>i&&(s=i);let c=s*BigInt(r.platform_fee)/tX.FEE_DENOMINATOR,u=s-c;return{receivedCurve:BigInt(0),receivedSui:u}},(eq=tz||(tz={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,[n,i,s]=await Promise.all([rm(t,r),rm(t,tX.CONFIG_OBJECT_ID),tW.Moonbags.getDynamicVirtualTokenReserves(t,r)]);void 0!==a&&(o=ef(o,a));let c=o*tX.FEE_DENOMINATOR/(tX.FEE_DENOMINATOR+BigInt(i.platform_fee)),{receivedCurve:u}=tW.Moonbags.buyExactInReturnsWithLock({inputAmount:o,amountIn:c,pool:n,config:i,dynamicVirtualTokenReserves:s});return u},eq.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,[n,i]=await Promise.all([rm(t,r),rm(t,tX.CONFIG_OBJECT_ID)]),{receivedSui:s}=tW.Moonbags.sellReturns({amountIn:o,pool:n,config:i});return void 0!==a?ef(s,a):s},eq.getUsedSuiForTx=async function(e,t){let{suiAmount:o,frontendFee:r}=e,a=await rm(t,tX.CONFIG_OBJECT_ID);return void 0!==r&&(o=ef(o,r)),o*tX.FEE_DENOMINATOR/(tX.FEE_DENOMINATOR+BigInt(a.platform_fee))};var rF=tQ||(tQ={});async function rB(e,t){let{tx:o,coinOut:r}=await rI(e,t);s(r,"Coin out is required");let a=await tz.getUsedSuiForTx({suiAmount:BigInt(e.inputAmount),frontendFee:e.frontendFee},t),[n,i]=o.moveCall({target:`${tX.PACKAGE_ID}::moonbags::buy_exact_in_returns_with_lock`,typeArguments:[e.outCoinType],arguments:[o.object(tX.CONFIG_OBJECT_ID),o.object(tX.LOCK_CONFIG_OBJECT_ID),r,o.pure.u64(a),o.pure.u64(e.minAmountOut),o.object(tX.BURN_MANAGER_OBJECT_ID),o.object(tX.POOLS_OBJECT_ID),o.object(tX.GLOBAL_CONFIG_OBJECT_ID),o.object(eb),o.object(eA)]});return tY.transferOrDestroyZeroCoin(o,eh,n,e.accountAddress),{tx:o,coinOut:i}}async function rD(e,t){s(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:`${tX.PACKAGE_ID}::moonbags::sell_returns`,typeArguments:[e.inCoinType],arguments:[o.object(tX.CONFIG_OBJECT_ID),a,o.pure.u64(e.minAmountOut),o.object(eA)]});return tY.transferOrDestroyZeroCoin(o,e.inCoinType,i,e.accountAddress),await rT(o,e,n)}function rw(e){return e}function rx(e){return e}function rR(e){return new Proxy(e,{get(e,t){let o=e[t];return"function"==typeof o?o.bind(e):o}})}rF.buildBuyTx=rB,rF.buildSellTx=rD,rF.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:c},u){s(eT(t),"coinInType must be SUI for buy transaction"),s(o!==t,"coinOutType must be different from coinInType"),s(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),s(e>0,"coinInAmount must be greater than 0");let l=BigInt(new i((await tz.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:c?c.tradeFeePercent:void 0},u)).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rB({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:c?c.tradeFeePercent:void 0,frontendFeeRecipient:c?c.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);s(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})},rF.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:c},u){s(eT(o),"coinOutType must be SUI for sell transaction"),s(o!==t,"coinOutType must be different from coinInType"),s(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),s(e>0,"coinInAmount must be greater than 0");let l=BigInt(new i((await tz.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:c?c.tradeFeePercent:void 0},u)).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rD({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:c?c.tradeFeePercent:void 0,frontendFeeRecipient:c?c.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);s(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})},(e$=tZ||(tZ={})).LAST_PACKAGE_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",e$.newHolder=function(e){return e.moveCall({target:`${e$.LAST_PACKAGE_ID}::oracle::new_holder`,typeArguments:[],arguments:[]})},e$.getPrice=function(e){let{txb:t,coinOracleId:o,holder:r,coinPriceId:a}=e;t.moveCall({target:`${e$.LAST_PACKAGE_ID}::pyth::get_price`,typeArguments:[],arguments:[t.object(o),r,t.object(a),t.object(c)]})},(eY=t0||(t0={})).PYTH_URLS=["https://hermes.pyth.network"],eY.WORMHOLE_STATE_ID="0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",eY.PYTH_STATE_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",eY.newPythConnections=function(e){return e||(e=eY.PYTH_URLS),e.map(e=>new ep(e,{timeout:3e3}))},eY.newPythClient=function(e){return e||(e=new el({url:"https://fullnode.mainnet.sui.io:443"})),new e_(e,eY.PYTH_STATE_ID,eY.WORMHOLE_STATE_ID)},eY.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 rL=((eV={})[eV.UNKNOWN=1e3]="UNKNOWN",eV[eV.TIMEOUT=1001]="TIMEOUT",eV[eV.PROVIDER_NOT_FOUND=1002]="PROVIDER_NOT_FOUND",eV[eV.PROVIDER_NOT_SUPPORTED=1003]="PROVIDER_NOT_SUPPORTED",eV[eV.INVALID_QUOTE=1004]="INVALID_QUOTE",eV[eV.QUOTE_NOT_FOUND=1005]="QUOTE_NOT_FOUND",eV[eV.INVALID_SIGNER_ADDRESS=1006]="INVALID_SIGNER_ADDRESS",eV[eV.PROVIDER_NOT_SUPPORT_SWAP=1007]="PROVIDER_NOT_SUPPORT_SWAP",eV[eV.SIMULATION_FAILED=1008]="SIMULATION_FAILED",eV);class rv 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 rv(t??"Assertion failed",o,r)}}class rk{options;kind="SEVENK";constructor(e,t){this.options=e,e.apiKey&&o.setApiKey(e.apiKey),o.setSuiClient(t)}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 a({tokenIn:e.coinTypeIn,tokenOut:e.coinTypeOut,amountIn:e.amountIn,sources:t,excludedPools:this.options.excludedPools,targetPools:this.options.targetPools});return rv.assert(!!o,"No quote found",rL.QUOTE_NOT_FOUND,{provider:this.kind}),{sourceRoute:"SEVENK",rawRoute:o,amountIn:o.swapAmountWithDecimal,amountOut:o.returnAmountWithDecimal,coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}let rU=t0.PYTH_URLS;class rN{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:rU})}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tU.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tU.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 rv.assert(!!o,"No quote found",rL.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 rK{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)tN.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tN.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}}}(eJ=t1||(t1={})).POOL_REGISTRY_OBJ_ID="0xfcc774493db2c45c79f688f88d28023a3e7d98e4ee9f48bbf5c7990f651577ae",eJ.PROTOCOL_FEE_VAULT_OBJ_ID="0xf194d9b1bcad972e45a7dd67dd49b3ee1e3357a00a50850c52cd51bb450e13b4",eJ.TREASURY_OBJ_ID="0x28e499dff5e864a2eafe476269a4f5035f1c16f338da7be18b103499abf271ce",eJ.INSURANCE_FUND_OBJ_ID="0xf0c40d67b078000e18032334c3325c47b9ec9f3d9ae4128be820d54663d14e3b",eJ.REFERRAL_VAULT_OBJ_ID="0x35d35b0e5b177593d8c3a801462485572fc30861e6ce96a55af6dc4730709278",(eH=t6||(t6={})).LAST_PACKAGE_ID="0xf369250dc5a17e9d5a84a3b0cf5aea715c0682170e726dd601f03ade7ce4decb",eH.swap=function(e){s(e.protocol===rs.AFTERMATH_CPMM);let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:c,coinLpType:u,packageId:l}=e;t.moveCall({target:`${l??eH.LAST_PACKAGE_ID}::aftermath_cpmm_router::swap`,typeArguments:[i,c,u],arguments:[o,t.object(r),t.object(t1.POOL_REGISTRY_OBJ_ID),t.object(t1.PROTOCOL_FEE_VAULT_OBJ_ID),t.object(t1.TREASURY_OBJ_ID),t.object(t1.INSURANCE_FUND_OBJ_ID),t.object(t1.REFERRAL_VAULT_OBJ_ID),t.pure.bool(a),t.pure.u64(n)]})},(eX=t4||(t4={})).STAKED_SUI_VAULT_OBJ_ID="0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d",eX.SAFE_TREASURY_OBJECT_ID="0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610",eX.REFERRAL_VAULT_OBJ_ID="0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef",eX.VALIDATOR_ADDRESS="0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2",(eW=t3||(t3={})).LAST_PACKAGE_ID="0x148c4e7ff5b308b2d520e050e6a21d986dd3eb203e0aa3eaaba28000977aebf1",eW.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??eW.LAST_PACKAGE_ID}::aftermath_lsd_router::swap`,arguments:[o,t.object(t4.STAKED_SUI_VAULT_OBJ_ID),t.object(t4.SAFE_TREASURY_OBJECT_ID),t.object(u),t.object(t4.REFERRAL_VAULT_OBJ_ID),t.pure.address(t4.VALIDATOR_ADDRESS),t.pure.bool(r),t.pure.u64(a)]})},(ez=t2||(t2={})).LAST_PACKAGE_ID="0x108d5d07cf873dec0bc8034db862db55d38e495c1f3ee0e124cf4861af834f25",ez.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??ez.LAST_PACKAGE_ID}::alphafi_lsd_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(u),t.pure.bool(n),t.pure.u64(a)]})},(eQ=t5||(t5={})).MEMEZ_AV_OBJ_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",eQ.MEMEZ_FUN_OBJ_ID="0x943948644f06942b8b660ca541b10a05f6a7be23ce4069944a3665e7e698930d",eQ.IPX_TREASURY_STANDARD_OBJ_ID="0x051e11b667659192917db94e5175fa066909d4dfc04d2663528f499c4afc6999",(eZ=t8||(t8={})).LAST_PACKAGE_ID="0x8b1e84ed9bc79d31160600254d65810f6bc6d2352f174a60ed041017d0a2a87a",eZ.swap=function(e){s(e.protocol===rs.BLASTFUN,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:c}=e;t.moveCall({target:`${c??eZ.LAST_PACKAGE_ID}::blastfun_router::swap`,typeArguments:[r,a],arguments:[o,t.object(t5.MEMEZ_FUN_OBJ_ID),t.object(t5.IPX_TREASURY_STANDARD_OBJ_ID),t.object(t5.MEMEZ_AV_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(t9||(t9={})).GLOBAL_CONFIG_OBJ_ID="0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",(e0=t7||(t7={})).LAST_PACKAGE_ID="0x9f8397124b6bdb55aeb7b5e43761e0e4dc94b9e22e94b1b25d8211d99df422d5",e0.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinAType:i,coinBType:s,packageId:u}=e;t.moveCall({target:`${u??e0.LAST_PACKAGE_ID}::bluefin_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(t9.GLOBAL_CONFIG_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(c)]})},(oe||(oe={})).DEX_INFO_OBJ_ID="0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92",(e1=ot||(ot={})).LAST_PACKAGE_ID="0xf52bdd65ee347e8994170f8c331cf0c23a55281b3282467f14ccbb3e2a7f928f",e1.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,coinAType:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??e1.LAST_PACKAGE_ID}::bluemove_cpmm_router::swap`,typeArguments:[n,i],arguments:[o,t.object(oe.DEX_INFO_OBJ_ID),t.pure.bool(r),t.pure.u64(a)]})},(oo||(oo={})).ORACLE_OBJ_ID="0xfa3975b98f3d0e3df18ed88ae6e69db31836b3f4212df02fae144b1e5a89ca8e",(e6=or||(or={})).LAST_PACKAGE_ID="0x2dd7b04509f332bdb93a8f228ab5c40b34baee4645b2ebe5e5fa2c3502b2c088",e6.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:u}=e;t.moveCall({target:`${u??e6.LAST_PACKAGE_ID}::bolt_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oo.ORACLE_OBJ_ID),t.object(c),t.pure.u64(s),t.pure.bool(i)]})},(oa||(oa={})).GLOBAL_CONFIG="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",(e4=on||(on={})).LAST_PACKAGE_ID="0xb3dbb229464cb14b9f8cfa087e5b162623c8f485395dc9b975e263a5ee7051e4",e4.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,packageId:u}=e;t.moveCall({target:`${u??e4.LAST_PACKAGE_ID}::cetus_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oa.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(c)]})},(e3=oi||(oi={})).GLOBAL_CONFIG_OBJ_ID="0xf31b605d117f959b9730e8c07b08b856cb05143c5e81d5751c90d2979e82f599",e3.VERSIONED_OBJ_ID="0x05370b2d656612dd5759cbe80463de301e3b94a921dfc72dd9daa2ecdeb2d0a8",(e2=os||(os={})).LAST_PACKAGE_ID="0x9ab3ba62b4327a7d90e4aed1c025b62736f035911ad7bab830c065ec84ef1ffa",e2.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinAType:i,coinBType:s,packageId:u}=e,l=[o,t.object(oi.GLOBAL_CONFIG_OBJ_ID),t.object(oi.VERSIONED_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(c)];t.moveCall({target:`${u??e2.LAST_PACKAGE_ID}::cetus_dlmm_router::swap`,typeArguments:[i,s],arguments:l})},(e5=oc||(oc={})).GLOBAL_CONFIG="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135",e5.DEEP_TYPE="0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",(e8=ou||(ou={})).LAST_PACKAGE_ID="0xff274b63c0f6e3a01f3dd0e923aefcb3146e05e2f6bef4ae339e2703b085f8ed",e8.swap=function(e){s(e.protocol===rs.DEEPBOOK_V3,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:u,deepFeeCoin:l,packageId:d}=e,p=l||t.moveCall({target:"0x2::coin::zero",typeArguments:[oc.DEEP_TYPE]});t.moveCall({target:`${d??e8.LAST_PACKAGE_ID}::deepbook_v3_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oc.GLOBAL_CONFIG),t.object(n),t.pure.u64(u),t.pure.bool(i),p,t.object(c)]})},(ol||(ol={})).GLOBAL_OBJ_ID="0x935229a3c32399e9fb207ec8461a54f56c6af5744c64442435ac217ab28f0d59",(e9=od||(od={})).LAST_PACKAGE_ID="0xfd86c0308327eae31c04560460ee6190220e4ae1cdf5b999eef1110bf0b0f2b8",e9.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??e9.LAST_PACKAGE_ID}::dip_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(ol.GLOBAL_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(op||(op={})).FERRA_GLOBAL_CONFIG_ID="0x2cd8382c19e6994f16df204e9b8cddd04bdc486c251de75ac66ac4e48e3e7081",(e7=o_||(o_={})).LAST_PACKAGE_ID="0x70c4318f67d88ebe4e83bacad15f9e2f5c8becd77695f63dc4bd9393730851cd",e7.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??e7.LAST_PACKAGE_ID}::ferra_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(op.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object("0x6")]})},(om||(om={})).FERRA_GLOBAL_CONFIG_ID="0x5c9dacf5a678ea15b8569d65960330307e23d429289ca380e665b1aa175ebeca",(te=of||(of={})).LAST_PACKAGE_ID="0x686e9eb19b04d46374c3fb82cb4ebb7b24ef8a9ae13f403915f4ae347e0f6593",te.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,packageId:u}=e;t.moveCall({target:`${u??te.LAST_PACKAGE_ID}::ferra_dlmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(om.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object(c)]})},(tt=og||(og={})).POOL_REGISTRY_OBJ_ID="0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc",tt.VERSIONED_OBJ_ID="0x67624a1533b5aff5d0dfcf5e598684350efd38134d2d245f475524c03a64e656",(to=oA||(oA={})).LAST_PACKAGE_ID="0x350a752d3388165e578cc33a39655a6da83613cf4e58c8d9d0723711c2603e17",to.swap=function(e){s(e.protocol===rs.FLOWX_CLMM);let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolFeeRate:n,amountIn:i,aToB:u,packageId:l}=e;t.moveCall({target:`${l??to.LAST_PACKAGE_ID}::flowx_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(og.POOL_REGISTRY_OBJ_ID),t.object(og.VERSIONED_OBJ_ID),t.pure.u64(n),t.pure.u64(i),t.pure.bool(u),t.object(c)]})},(ob||(ob={})).CONTAINER_OBJ_ID="0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511",(tr=oI||(oI={})).LAST_PACKAGE_ID="0xd95b440ad340bb6cbf571897d312e43d4b6de37b60c69ef714c94b9835cb8866",tr.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??tr.LAST_PACKAGE_ID}::flowx_cpmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(ob.CONTAINER_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(ta=oT||(oT={})).GLOBAL_CONFIG_OBJ_ID="0xe93baa80cb570b3a494cbf0621b2ba96bc993926d34dc92508c9446f9a05d615",ta.REWARDER_VAULT_OBJ_ID="0xfb971d3a2fb98bde74e1c30ba15a3d8bef60a02789e59ae0b91660aeed3e64e1",ta.STATS_OBJ_ID="0x6822a33d1d971e040c32f7cc74507010d1fe786f7d06ab89135083ddb07d2dc2",ta.PRICE_PROVIDER_OBJ_ID="0x854b2d2c0381bb656ec962f8b443eb082654384cf97885359d1956c7d76e33c9",(tn=oC||(oC={})).LAST_PACKAGE_ID="0xf0bf13b5baaf3d368f165e846b919294bed79a3ab3ab0c9bd1e75f23533e44a5",tn.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:u}=e;t.moveCall({target:`${u??tn.LAST_PACKAGE_ID}::fullsail_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(oT.GLOBAL_CONFIG_OBJ_ID),t.object(oT.REWARDER_VAULT_OBJ_ID),t.object(oT.STATS_OBJ_ID),t.object(oT.PRICE_PROVIDER_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(c)]})},(ti=oO||(oO={})).LAST_PACKAGE_ID="0x8969ed3e56c1dbdaf9df52f812d69c6c45fe5a4bab7093c88f5a8697a409398e",ti.swap=function(e){s(e.protocol===rs.HAEDAL_CPMM);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:u,pythPriceFeedIdA:l,pythPriceFeedIdB:d,pythInfoObjectIdMap:p,packageId:_}=e,m=p.get(l),f=p.get(d);s(m,"Not found priceInfoAId in pythObjectIdMap"),s(f,"Not found priceInfoBId in pythObjectIdMap"),t.moveCall({target:`${_??ti.LAST_PACKAGE_ID}::haedal_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(m),t.object(f),t.pure.u64(u),t.pure.bool(i),t.object(c)]})},(ts=oM||(oM={})).LAST_PACKAGE_ID="0x5d01f22e5471a5912a88e15d62fdcb922beba65b8e8dfe1a715aebf743194f4a",ts.swap=function(e){s(e.protocol===rs.HAEDAL_CPMM_V2);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:u,pythPriceFeedIdBase:l,pythInfoObjectIdMap:d,packageId:p}=e,_=d.get(l);s(_,"Not found pythPriceBaseId in pythObjectIdMap"),t.moveCall({target:`${p??ts.LAST_PACKAGE_ID}::haedal_cpmm_v2_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(_),t.pure.u64(u),t.pure.bool(i),t.object(c)]})},(tc=oE||(oE={})).LAST_PACKAGE_ID="0x1644956086caa5eb791eba152f3b69ba862b3a5382ef0e1d8a474ab158aafa1a",tc.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,poolId:n,packageId:i}=e;t.moveCall({target:`${i??tc.LAST_PACKAGE_ID}::haedal_lsd_router::swap`,arguments:[o,t.object(n),t.object(u),t.pure.bool(r),t.pure.u64(a)]})},(oh||(oh={})).STAKING_OBJ_ID="0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904",(oy||(oy={})).VALIDATOR_ID="0x7b3ba6de2ae58283f60d5b8dc04bb9e90e4796b3b2e0dea75569f491275242e7",(tu=oS||(oS={})).LAST_PACKAGE_ID="0x7be077dd73c85e788c2a49a51f0627066d81d3dc9982c268e3691265a81d544d",tu.swap=function(e){s(e.protocol===rs.HAEDAL_LSD_WAL),s(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??tu.LAST_PACKAGE_ID}::haedal_wal_lsd_router::swap`,arguments:[o,t.object(oh.STAKING_OBJ_ID),t.object(r),t.pure.id(oy.VALIDATOR_ID),t.pure.bool(a),t.pure.u64(n)]})},(oP||(oP={})).VERSION_OBJ_ID="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78",(tl=oF||(oF={})).LAST_PACKAGE_ID="0xcf141e1d18ff609b2ac56532b391f7648fc55e28696efe354186f5109c0eff06",tl.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:u}=e;t.moveCall({target:`${u??tl.LAST_PACKAGE_ID}::kriya_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oP.VERSION_OBJ_ID),t.pure.bool(i),t.pure.u64(s),t.object(c)]})},(td=oB||(oB={})).LAST_PACKAGE_ID="0x50d37f46df75ef125ce656d4ac91b31b2cf0c1195752a96558561d163e45c223",td.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??td.LAST_PACKAGE_ID}::kriya_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(tp=oD||(oD={})).FACTORY_OBJ_ID="0xedb456e93e423dd75a8ddebedd9974bb661195043027e32ce01649d6ccee74cf",tp.GLOBAL_CONFIG_OBJ_ID="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(t_=ow||(ow={})).LAST_PACKAGE_ID="0x950f94d33060c0575389c9f84fabab1e140776c6c84389d4237a0c2687a7adc9",t_.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:u}=e;t.moveCall({target:`${u??t_.LAST_PACKAGE_ID}::magma_almm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oD.FACTORY_OBJ_ID),t.object(oD.GLOBAL_CONFIG_OBJ_ID),t.pure.u64(s),t.pure.bool(i),t.object(c)]})},(ox||(ox={})).GLOBAL_CONFIG="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(tm=oR||(oR={})).LAST_PACKAGE_ID="0xbe5f590339c55ca8ebbf93cedfb68aafd479d71e1c57043246f7dcf352745242",tm.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,packageId:u}=e;t.moveCall({target:`${u??tm.LAST_PACKAGE_ID}::magma_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(ox.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(c)]})},(tf=oL||(oL={})).LATEST_PACKAGE_ID="0xfab91518218f10204b083dba1e62c8bfc23f14fb87742158043e5faec4670ec4",tf.swap=function(e){let t,o,r;s(e.protocol===rs.METASTABLE,"Invalid protocol");let{txb:a,swapContext:n,aToB:i,amountIn:c,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=[tk.createCap({coinType:f,createCapFunc:"create_withdraw_cap",...e})]):f===p?(r="swap_to_meta_coin",t=[p,m],o=[tk.createCap({coinType:m,createCapFunc:"create_deposit_cap",...e})]):(r="swap",t=[p,m,f],o=[tk.createCap({coinType:m,createCapFunc:"create_deposit_cap",...e}),tk.createCap({coinType:f,createCapFunc:"create_withdraw_cap",...e})]),a.moveCall({target:`${_??tf.LATEST_PACKAGE_ID}::metastable_router::${r}`,typeArguments:t,arguments:[n,a.object(d),a.object(tk.VERSION_OBJ_ID),...o,a.pure.u64(c)]})},(ov||(ov={})).VERSION_OBJ_ID="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a",(tg=ok||(ok={})).LAST_PACKAGE_ID="0xba7ab4c8c39024fa0052bb4f00548a2e7b60742bb4ed0b87bc1d945fd8209102",tg.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,packageId:u}=e;t.moveCall({target:`${u??tg.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(ov.VERSION_OBJ_ID),t.object(c)]})},(oU||(oU={})).CONFIGURATION_OBJ_ID="0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4",(tA=oN||(oN={})).LAST_PACKAGE_ID="0x5a259db4b1d17fafc09185c9a71bac36f25f9ee462e72894c8610e5a58b79f8f",tA.swap=function(e){s(e.protocol===rs.MOVEPUMP,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,expectedAmountOut:u,packageId:l}=e;t.moveCall({target:`${l??tA.LAST_PACKAGE_ID}::movepump_router::swap`,typeArguments:[n?a:r],arguments:[o,t.object(oU.CONFIGURATION_OBJ_ID),t.object(oe.DEX_INFO_OBJ_ID),t.object(c),t.pure.u64(u),t.pure.bool(n),t.pure.u64(i)]})},(oK||(oK={})).STATE_OBJ_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",(tb=oG||(oG={})).LAST_PACKAGE_ID="0xd615fed37d692280047068e80d3a6bb685aa9d574608054c9df881d6a7378fab",tb.swap=function(e){let t,o;s(e.protocol===rs.OBRIC);let{txb:r,swapContext:a,poolId:n,coinAType:i,coinBType:u,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),s(t,"Not found priceInfoAId in pythObjectIdMap"),s(o,"Not found priceInfoBId in pythObjectIdMap")),r.moveCall({target:`${_??tb.LAST_PACKAGE_ID}::obric_router::swap`,typeArguments:[i,u],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(c)]})},(tI=oj||(oj={})).VERSION_OBJ_ID="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",tI.MARKET_OBJ_ID="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",(tT=oq||(oq={})).LAST_PACKAGE_ID="0xea409bb08c8a09e4127f859d9c36b8b62ca609282aa1e443091db6b7a7409ee7",tT.swap=function(e){s(e.protocol===rs.SCALLOP);let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,scoinTreasury:u,packageId:l}=e;t.moveCall({target:`${l??tT.LAST_PACKAGE_ID}::scallop_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oj.VERSION_OBJ_ID),t.object(oj.MARKET_OBJ_ID),t.object(u),t.pure.u64(i),t.pure.bool(n),t.object(c)]})},(o$||(o$={})).ORACLE_HOLDER_OBJ_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",(tC=oY||(oY={})).LAST_PACKAGE_ID="0x918a30e2a05d24ea9451e2d2900d055f74e6752f2e10251fa50c7175831b1958",tC.swap=function(e){s(e.protocol===rs.SEVENK_CPMM,"Invalid protocol for sevenk_cpmm_router swap");let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:c,coinLpType:u,oracleConfigA:l,oracleConfigB:d,pythPriceFeedIdA:p,pythPriceFeedIdB:_,pythInfoObjectIdMap:m,packageId:f}=e,g=m.get(p),A=m.get(_);s(g,"Not found priceInfoAId in pythObjectIdMap"),s(A,"Not found priceInfoBId in pythObjectIdMap");let b=tZ.newHolder(t);tZ.getPrice({txb:t,coinPriceId:p,holder:b,coinOracleId:l}),tZ.getPrice({txb:t,coinPriceId:_,holder:b,coinOracleId:d}),t.moveCall({target:`${f??tC.LAST_PACKAGE_ID}::sevenk_cpmm_router::swap`,typeArguments:[a,n,u],arguments:[o,t.object(r),t.object(o$.ORACLE_HOLDER_OBJ_ID),t.pure.bool(i),t.pure.u64(c)]})},(oV||(oV={})).CONFIGURATION_OBJ_ID="0xe79fff6c77d81f9a8efb729e25bf0037deec42518d40b978f274a4915d7e1ec9",(tO=oJ||(oJ={})).LAST_PACKAGE_ID="0x0a5dc665dc3c1c846a6d1e00811c84cae3510c839ab4dc0873f85dc8908d0606",tO.swap=function(e){s(e.protocol===rs.SEVENK_FUN,"Invalid protocol");let{txb:t,swapContext:o,aToB:r,amountIn:a,coinBType:n,packageId:i}=e;t.moveCall({target:`${i??tO.LAST_PACKAGE_ID}::sevenk_fun_router::swap`,typeArguments:[n],arguments:[o,t.object(oV.CONFIGURATION_OBJ_ID),t.object(ob.CONTAINER_OBJ_ID),t.object(c),t.pure.bool(r),t.pure.u64(a)]})},(tM=oH||(oH={})).LAST_PACKAGE_ID="0xa6d129c0b314e85d1bc5aecf305d64212bdd5d466457531f4f624fef5f2e7751",tM.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??tM.LAST_PACKAGE_ID}::springsui_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(u),t.pure.u64(a),t.pure.bool(n)]})},(oX||(oX={})).CONFIG_OBJ_ID="0x881fd0a12ca4fa48991f5c27ba57d17f1ec147fa15f43b3cb760cc3bd7ba9402",(tE=oW||(oW={})).LAST_PACKAGE_ID="0xa314a64962ed4b91a6b4085de4dff2e631fd4c731dbca671a74489955df322ef",tE.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(oX.CONFIG_OBJ_ID),t.pure.bool(a),t.pure.u64(n),t.object("0x6")];t.moveCall({target:`${c??tE.LAST_PACKAGE_ID}::srm_cpmm_router::swap`,typeArguments:[i,s],arguments:u})},(ty=(th=oz||(oz={})).Oracle||(th.Oracle={})).PACKAGE_ID="0xe84b649199654d18c38e727212f5d8dacfc3cf78d60d0a7fc85fd589f280eb2b",ty.getPythPrice=function(e){let{txb:t,oracleRegistryId:o,priceInfoId:r,oracleIndex:a}=e;return t.moveCall({target:`${ty.PACKAGE_ID}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(o),t.object(r),t.pure.u64(a),t.object(c)]})};var rG=oQ||(oQ={});function rj(e,t){s(e.protocol===rs.STEAMM_OMM||e.protocol===rs.STEAMM_OMM_V2,"Invalid protocol for steamm _swapOmm swap");let{txb:o,swapContext:r,poolId:a,coinAType:n,coinBType:i,aToB:u,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,h=T.get(b),y=T.get(I);s(h,"Not found priceInfoAId in pythObjectIdMap"),s(y,"Not found priceInfoBId in pythObjectIdMap");let S=oz.Oracle.getPythPrice({txb:o,oracleRegistryId:C,priceInfoId:h,oracleIndex:O}),P=oz.Oracle.getPythPrice({txb:o,oracleRegistryId:C,priceInfoId:y,oracleIndex:M});o.moveCall({target:`${E??rG.LAST_PACKAGE_ID}::${rq(t)}::swap`,typeArguments:[m,n,i,f,g,A],arguments:[r,o.object(a),o.object(d),o.object(p),o.object(_),S,P,o.pure.bool(u),o.pure.u64(l),o.object(c)]})}function rq(e){switch(e){case 0:return"steamm_omm_router";case 1:return"steamm_omm_v2_router"}}function r$(e){let{amountOut:t,aggregatorFeeBps:o,partnerFeeBps:r}=e,a=rY(t,o);return r&&(a=rY(a,r)),a}function rY(e,t){let o=BigInt(e)*BigInt(t)/BigInt(1e4);return(BigInt(e)-o).toString()}function rV(e){return Math.floor(100*e)}rG.LAST_PACKAGE_ID="0xd606880d67c399f349758111a91582d5515f31dd051632402653d872818f594e",rG.swapCpmm=function(e){s(e.protocol===rs.STEAMM_CPMM,"Invalid protocol for steamm_cpmm_router swap");let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:u,bankAId:l,bankBId:d,lendingMarketId:p,lendingMarketType:_,bCoinAType:m,bCoinBType:f,lpBCoinType:g}=e;t.moveCall({target:`${rG.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(u),t.object(c)]})},rG.swapOmm=function(e){rj(e,0)},rG.swapOmmV2=function(e){rj(e,1)},rG.getOmmRouterModule=rq,(tS=oZ||(oZ={})).LAST_PACKAGE_ID="0x7a1cf89025a60161e84809784d772263231fad08a7cb76a88ca1ba69e0a656da",tS.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:u}=e;t.moveCall({target:`${u??tS.LAST_PACKAGE_ID}::suiswap_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(c)]})},(tP=o0||(o0={})).VERSIONED="0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676",tP.POOL_REGISTRY="0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd",(tF=o1||(o1={})).LAST_PACKAGE_ID="0x79957062a7424ed9c2eb83932e4c4fcc3fee67ab3c8f6f874c54e417178bbb7a",tF.swap=function(e){s(e.protocol===rs.TRADEPORT_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,poolFeeRate:u,packageId:l}=e;t.moveCall({target:`${l??tF.LAST_PACKAGE_ID}::tradeport_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(o0.POOL_REGISTRY),t.pure.u64(u),t.object(o0.VERSIONED),t.pure.bool(n),t.pure.u64(i),t.object(c)]})},(o6||(o6={})).POOL_VERSIONED="0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f",(tB=o4||(o4={})).LAST_PACKAGE_ID="0x512d63711ff38353fb167238b0529001b6871c1727c67ce3bf6ec23556b0f1da",tB.swap=function(e){s(e.protocol===rs.TURBOS_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,coinFeeType:n,poolId:i,aToB:u,amountIn:l,packageId:d}=e;t.moveCall({target:`${d??tB.LAST_PACKAGE_ID}::turbos_clmm_router::swap`,typeArguments:[r,a,n],arguments:[o,t.object(i),t.object(o6.POOL_VERSIONED),t.pure.bool(u),t.pure.u64(l),t.object(c)]})},(o3||(o3={})).CONFIGURATION_OBJ_ID="0xd86685fc3c3d989385b9311ef55bfc01653105670209ac4276ebb6c83d7df928",(tD=o2||(o2={})).LAST_PACKAGE_ID="0x1fad13f09797aa87a4385d0b1efb2de963ba16742447b1ad5a3b0c5b1d1c588b",tD.swap=function(e){s(e.protocol===rs.TURBOS_FUN,"Invalid protocol");let{txb:t,swapContext:o,coinBType:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??tD.LAST_PACKAGE_ID}::turbos_fun_router::swap`,typeArguments:[r],arguments:[o,t.object(o3.CONFIGURATION_OBJ_ID),t.object(c),t.pure.bool(a),t.pure.u64(n)]})},(o5||(o5={})).VOLO_CERT_METADATA_ID="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",(tw=o8||(o8={})).LAST_PACKAGE_ID="0x7c8d95256342f904d5f251776903a17905d87c95f387b3a35cc2aecc23b3c042",tw.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??tw.LAST_PACKAGE_ID}::volo_router::swap`,arguments:[o,t.object(r),t.object(o5.VOLO_CERT_METADATA_ID),t.object(u),t.pure.bool(a),t.pure.u64(n)]})},(tx=o9||(o9={})).RouterSwapFunctionMap={[rs.AFTERMATH_CPMM]:t6.swap,[rs.AFTERMATH_LSD]:t3.swap,[rs.ALPHAFI_LSD]:t2.swap,[rs.BLASTFUN]:t8.swap,[rs.BLUEFIN_CLMM]:t7.swap,[rs.BLUEMOVE_CPMM]:ot.swap,[rs.BOLT]:or.swap,[rs.CETUS_CLMM]:on.swap,[rs.CETUS_DLMM]:os.swap,[rs.DEEPBOOK_V3]:ou.swap,[rs.DIP_CPMM]:od.swap,[rs.FERRA_CLMM]:o_.swap,[rs.FERRA_DLMM]:of.swap,[rs.FLOWX_CPMM]:oI.swap,[rs.FLOWX_CLMM]:oA.swap,[rs.FULLSAIL_CLMM]:oC.swap,[rs.HAEDAL_CPMM]:oO.swap,[rs.HAEDAL_CPMM_V2]:oM.swap,[rs.HAEDAL_LSD]:oE.swap,[rs.HAEDAL_LSD_WAL]:oS.swap,[rs.KRIYA_CLMM]:oF.swap,[rs.KRIYA_CPMM]:oB.swap,[rs.MAGMA_ALMM]:ow.swap,[rs.MAGMA_CLMM]:oR.swap,[rs.METASTABLE]:oL.swap,[rs.MOMENTUM_CLMM]:ok.swap,[rs.MOVEPUMP]:oN.swap,[rs.OBRIC]:oG.swap,[rs.SCALLOP]:oq.swap,[rs.SEVENK_CPMM]:oY.swap,[rs.SEVENK_FUN]:oJ.swap,[rs.SPRINGSUI]:oH.swap,[rs.SRM_CPMM]:oW.swap,[rs.STEAMM_CPMM]:oQ.swapCpmm,[rs.STEAMM_OMM]:oQ.swapOmm,[rs.STEAMM_OMM_V2]:oQ.swapOmmV2,[rs.SUISWAP_CPMM]:oZ.swap,[rs.TRADEPORT_CLMM]:o1.swap,[rs.TURBOS_CLMM]:o4.swap,[rs.TURBOS_FUN]:o2.swap,[rs.VOLO]:o8.swap},tx.swap=function(e){(0,tx.RouterSwapFunctionMap[e.protocol])(e)},(o7||(o7={})).buildAggregatorSwapTransaction=async function(e){let{tx:t,coinOutType:o,tradePaths:r,pythConnections:a,pythClient:n,packageIdMap:i}=e,s=tR.openSwap(e),c=await t0.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];o9.swap({...o,txb:t,swapContext:s,amountIn:o.amountIn,coinAType:a,coinBType:n,packageId:i?.get(o.protocol),pythInfoObjectIdMap:c})}return tR.closeSwap({tx:t,coinOutType:o,swapSession:s})};let rJ=t0.newPythConnections(),rH=t0.newPythClient();var rX=re||(re={});function rW(e){var t,o;let r,a,{buildTxParam:n,rawRouteParam:i}=e;switch(i.sourceRoute){case"CETUS":r=tU.convert(i.rawRoute);break;case"FLOWX":r=tN.convert(i.rawRoute);break;case"SEVENK":r=tL.convert(i.rawRoute);break;default:throw Error("Unsupported source route")}let s=rV(n.aggregatorFeeRatePercent),c=n.partnerFeeRatePercent?rV(n.partnerFeeRatePercent):void 0,u=n.expectedAmountOut??r$({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??rJ,pythClient:n.pythClient??rH}}rX.toMetaAggregatorBuildTxParams=rW,rX.buildTx=function(e){let t=rW(e);return o7.buildAggregatorSwapTransaction(t)};let rz=async(e,t,o)=>t<=0?e():new Promise((r,a)=>{let n=setTimeout(()=>a(new rv(`Timeout ${o??"operation"}`,rL.TIMEOUT,{timeout:t})),t);e().then(r).catch(a).finally(()=>clearTimeout(n))}),rQ=(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)}},rZ={SEVENK:{},FLOWX:{},CETUS:{}};class r0{client;providers={};options;constructor(e){this.options={providers:{...rZ,...e?.providers},slippageBps:e?.slippageBps??100,fullnodeUrl:e?.fullnodeUrl??ed("mainnet"),hermesApi:e?.hermesApi??t0.PYTH_URLS,partner:e?.partner??eM,partnerCommissionBps:e?.partnerCommissionBps??0,tipBps:e?.tipBps??0},this.client=new el({url:this.options.fullnodeUrl})}async getQuoteClient(e){let t=this.providers[e];if(t)return t;let o=this.options.providers[e];switch(rv.assert(!!o,`Provider not found: ${e}`,rL.PROVIDER_NOT_FOUND,{provider:e}),e){case"SEVENK":{let{Bluefin7kClient:e}=await Promise.resolve(rt).catch(r1("SEVENK"));this.providers.SEVENK=new e(o,this.client);break}case"FLOWX":{let{FlowxClient:e}=await Promise.resolve(rr).catch(r1("FLOWX"));this.providers.FLOWX=new e(o);break}case"CETUS":{let{CetusClient:e}=await Promise.resolve(ro).catch(r1("CETUS"));this.providers.CETUS=new e(o,this.options,this.client);break}default:throw new rv(`Provider not supported: ${e}`,rL.PROVIDER_NOT_SUPPORTED,{provider:e})}return this.providers[e]}async getQuoteByClient(e,t){return await rz(async()=>{let o=await e.quote(t);return o?(o.amountOut=r$({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:p(e.coinTypeIn),coinTypeOut:p(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=_(o);rv.assert(d(i),`Invalid signer address: ${o}`,rL.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 re.buildTx({buildTxParam:{tx:r,inputCoin:a,expectedAmountOut:t.amountOut,slippagePercent:s,aggregatorFeeRatePercent:this.options.tipBps/1e4,aggregatorFeeRecipient:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff",partnerFeeRatePercent:u,partnerFeeRecipient:c,pythConnections:t0.newPythConnections(this.options.hermesApi),pythClient:t0.newPythClient(this.client)},rawRouteParam:{...t}})}}let r1=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};class r6{sdk;_astrosAggregator;_aftermathAggregator;_sevenkAggregator;_cetusAggregator;_flowXAggregator;constructor(e){this.sdk=e,this._astrosAggregator=new rl({defaultTradeFee:e.options.tradeFee,astrosApiKey:e.options.astrosApiKey},e.suiClient),this._aftermathAggregator=new ru({defaultTradeFee:e.options.tradeFee,aftermathApiKey:e.options.aftermathApiKey,aftermathApiEndpoint:e.options.aftermathApiEndpoint},e.suiClient),this._sevenkAggregator=new rc({defaultTradeFee:e.options.tradeFee,sevenKApiKey:e.options.sevenKApiKey},e.suiClient),this._cetusAggregator=new rd({defaultTradeFee:e.options.tradeFee,cetusApiKey:e.options.cetusApiKey,cetusApiEndpoint:e.options.cetusApiEndpoint,cetusPartnerId:e.options.cetusPartnerId},e.suiClient),this._flowXAggregator=new r_({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 rp.ASTROS:{let e,r=await this._astrosAggregator.getTradeRoute(t);if(!r)return null;let a=rl.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 i(r.amount_out).multipliedBy(1-e).toFixed(0,3)),o={route:a,aggregatorRoute:r};break}case rp.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 rp.SEVENK:{let e=await this._sevenkAggregator.getTradeRoute(t);if(!e)return null;let r=rc.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rp.CETUS:{let e=await this._cetusAggregator.getTradeRoute(t);if(!e)return null;let r=rd.toCommonTradeRoutes(e,t.coinInType,t.coinOutType);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rp.FLOWX:{let e=await this._flowXAggregator.getTradeRoute(t);if(!e)return null;let r=r_.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e}}}return o}async getTransactionByRoute(e,t){switch(e){case rp.ASTROS:return this._astrosAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rp.AFTERMATH:return this._aftermathAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage});case rp.SEVENK:return this._sevenkAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rp.CETUS:return this._cetusAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rp.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=Object.keys(rp),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=Object.keys(rp),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 r4{sdk;constructor(e){this.sdk=e}async getEstimatedAmountOut(e,t){let{coinInType:o,coinOutType:r}=t;s(o!==r,"coinInType and coinOutType must be different"),s(eT(o)||eT(r),"One of coinInType or coinOutType must be SUI");let a=eT(o);switch(e){case rP.MOONBAGS:if(a)return await tz.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);return await tz.getSuiAmountAfterSell({poolId:t.poolId,curveAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);case rP.BLAST_FUN:if(a)return await tJ.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});return await tJ.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;s(r!==a,"coinInType and coinOutType must be different"),s(eT(r)||eT(a),"One of coinInType or coinOutType must be SUI");let n=eT(r);switch(e){case rP.MOONBAGS:o=n?await tQ.getBuyTransaction(t,this.sdk.suiClient):await tQ.getSellTransaction(t,this.sdk.suiClient);break;case rP.BLAST_FUN:o=n?await tH.getBuyTransaction(t,this.sdk.suiClient):await tH.getSellTransaction(t,this.sdk.suiClient);break;default:throw Error(`Unsupported bonding curve platform: ${e}`)}return o}}let r3={tradeFeePercent:.01,tradeFeeRecipientAddress:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff"};class r2{network;env;options;_suiClient;aggregatorModule;curveModule;constructor(e,t="mainnet",o="prod"){this.options=e,this.network=t,this.env=o;let r=ed(t);this._suiClient=new el({url:r}),this.aggregatorModule=new r6(this),this.curveModule=new r4(this)}get suiClient(){return this._suiClient}}class r5{suiClient;constructor(e){this.suiClient=e}validatePrivateKey(e,t){s(e?.trim(),"Private key is required");let o=em.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){s(e?.trim(),"Sender address is required"),s(t?.trim(),"Recipient address is required"),s(e!==t,"Sender and recipient cannot be the same"),s(o>0n,"Transfer amount must be at least 1 MIST");try{let r=new n,[a]=r.splitCoins(r.gas,[o]);r.transferObjects([a],t),r.setSender(e);let i=await this.suiClient.getReferenceGasPrice();r.setGasPrice(i);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{s(e,"Draft transaction is required"),s(e.txDraftBase64?.trim(),"Transaction data is required");let o=this.validatePrivateKey(t,e.sender),r=l(e.txDraftBase64),{signature:a}=await o.signTransaction(r),n=await this.suiClient.executeTransactionBlock({transactionBlock:r,signature:a});return{success:!0,txDigest:n.digest,effects:n.effects}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Unknown error occurred"}}}async getTransactionStatus(e){s(e?.trim(),"Transaction digest is required");try{let t=await this.suiClient.getTransactionBlock({digest:e,options:{showEffects:!0}});if(!t?.effects?.status)return"pending";return"success"===t.effects.status.status?"success":"failure"}catch(e){if(e instanceof Error&&(e.message.includes("not found")||e.message.includes("Could not find")))return"pending";return"failure"}}}var r8=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{r6 as AggregatorModule,rb as BLUEFIN_PACKAGE_ID,r4 as CurveModule,r3 as DEFAULT_TRADE_FEE,r5 as DraftTransferTx,rv as MetaAgError,r0 as MetaClient,r2 as NoodlesSdk,rc as SevenKAggregator,rw as adaptSuiClient,rx as adaptTransaction,ru as AftermathAggregator,t1 as AftermathCpmm,t4 as AftermathLsd,re as AggregatorConverter,rl as AstrosAggregator,t5 as Blastfun,rk as Bluefin7kClient,tY as BluefinTx,t9 as BluefinClmm,oe as BluemoveCpmm,oo as Bolt,tz as MoonbagsCalculation,rd as CetusAggregator,tU as CetusAggregatorConverter,rN as CetusClient,oa as CetusClmm,oi as CetusDlmm,ri as checkIsSui,rp as SupportedAggregator,tK as BlastFunConstants,tX as MoonbagsConstants,rR as createCompatibleSuiClient,t$ as BlastFunCustomCalculation,tV as BlastFunCustomTransaction,oc as DeepbookV3,rn as denormalizeTokenType,ol as DipCpmm,rL as MetaAgErrorCode,r8 as BASE_BPS,op as FerraClmm,om as FerraDlmm,r_ as FlowXAggregator,tN as FlowXAggregatorConverter,rK as FlowxClient,ob as FlowxCpmm,oT as FullsailClmm,rQ as getExpectedReturn,rE as getMemezPumpSDK,rf as getMoveObject,rm as getMoveObjectContent,oy as HaedalLsdWal,oP as KriyaClmm,oD as MagmaAlmm,ox as MagmaClmm,o7 as MetaAggregator,tk as Metastable,ov as MomentumClmm,oU as Movepump,ra as normalizeTokenType,oK as Obric,tq as BlastFunPackage,tj as Bps,tG as MathUtils,tW as MoonbagsPackage,tZ as PythPrice,t0 as PythUtils,oj as Scallop,tJ as BlastFunSDKCalculation,tH as BlastFunSDKTransaction,tL as SevenKAggregatorConverter,o$ as SevenkCpmm,oV as SevenkFun,rI as splitSuiCoinAfterFeeFromBuyTx,rT as splitSuiCoinAfterFeeFromSellTx,oX as SrmCpmm,oz as Steamm,o0 as TradeportClmm,tQ as MoonbagsTransaction,o6 as TurbosClmm,o3 as TurbosFun,rs as AggregatorProtocol,rP as SupportedBondingCurve,tv as TradeFeeOptions,o9 as RouterUtils,rz as timeout,o5 as Volo,oh 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,Helpers as b}from"aftermath-ts-sdk";import{AFSUI as I,AFTERMATH as T,ALPHAFI as C,AggregatorClient as O,BLUEFIN as M,BLUEMOVE as E,CETUS as h,CETUSDLMM as y,DEEPBOOKV3 as S,Env as P,FERRACLMM as F,FERRADLMM as B,FLOWXV2 as w,FLOWXV3 as D,FULLSAIL as x,HAEDAL as R,HAEDALHMMV2 as L,HAEDALPMM as v,HAWAL as k,KRIYA as N,KRIYAV3 as U,MAGMA as K,METASTABLE as G,MOMENTUM as j,OBRIC as q,SCALLOP as $,SEVENK as Y,SPRINGSUI as V,STEAMM as J,STEAMM_OMM as H,STEAMM_OMM_V2 as X,SUILEND as W,TURBOS as z,VOLO as Q}from"@cetusprotocol/aggregator-sdk";import Z from"bn.js";import{AggregatorQuoter as ee,Coin as et,Commission as eo,CommissionType as er,Protocol as ea,TradeBuilder as en}from"@flowx-finance/sdk";import{Network as ei}from"@interest-protocol/sui-core-sdk";import{SuiJsonRpcClient as es,getJsonRpcFullnodeUrl as ec}from"@mysten/sui/jsonRpc";import{SuiPriceServiceConnection as eu,SuiPythClient as el}from"@pythnetwork/pyth-sui-js";import{Ed25519Keypair as ed}from"@mysten/sui/keypairs/ed25519";import{getAmountAfterFee as ep,getSplitCoinForTx as e_,CLOCK_OBJECT_ID as em,SUI_METADATA_OBJECT_ID as ef,SUI_TYPE as eg,isSuiCoinType as eA,getNeededGasFee as eb,addGasFee as eI,SUI_ADDRESS_ZERO as eT,getSplitCoinsAfterFee as eC,SUI_FULL_TYPE as eO}from"./832.js";var eM,eE,eh,ey,eS,eP,eF,eB,ew,eD,ex,eR,eL,ev,ek,eN,eU,eK,eG,ej,eq,e$,eY,eV,eJ,eH,eX,eW,ez,eQ,eZ,e0,e1,e6,e4,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,th,ty,tS,tP,tF,tB,tw,tD,tx,tR,tL,tv,tk,tN,tU,tK,tG,tj,tq,t$,tY,tV,tJ,tH,tX,tW,tz,tQ,tZ,t0,t1,t6,t4,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,oh,oy,oS,oP,oF,oB,ow,oD,ox,oR,oL,ov,ok,oN,oU,oK,oG,oj,oq,o$,oY,oV,oJ,oH,oX,oW,oz,oQ,oZ,o0,o1,o6,o4,o3,o2,o5,o8,o9={};t.r(o9),t.d(o9,{Bluefin7kClient:()=>rk});var o7={};t.r(o7),t.d(o7,{CetusClient:()=>rU});var re={};function rt(e){return e===eg?eO:e}function ro(e){return e===eO?eg:e}function rr(e){return e===eO||e===eg}t.r(re),t.d(re,{FlowxClient:()=>rK}),(eM=tw||(tw={})).MAX_AMOUNT_IN="18446744073709551615",eM.LAST_PACKAGE_ID="0x7e57926855b32baa3b3cabed89380b8d415606fdedadc18e58bd1ef1e60aee48",eM.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:`${eM.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},eM.closeSwap=function(e){let{tx:t,coinOutType:o,swapSession:r}=e,[a]=t.moveCall({target:`${eM.LAST_PACKAGE_ID}::aggregator::close_swap`,typeArguments:[o],arguments:[r]});return a};var ra=((eE={}).AFTERMATH_CPMM="aftermath_cpmm",eE.AFTERMATH_LSD="aftermath_lsd",eE.ALPHAFI_LSD="alphafi_lsd",eE.BLASTFUN="blastfun",eE.BLUEFIN_CLMM="bluefin_clmm",eE.BLUEMOVE_CPMM="bluemove_cpmm",eE.BOLT="bolt",eE.CETUS_CLMM="cetus_clmm",eE.CETUS_DLMM="cetus_dlmm",eE.DEEPBOOK_V3="deepbook_v3",eE.DIP_CPMM="dip_cpmm",eE.FLOWX_CPMM="flowx_cpmm",eE.FLOWX_CLMM="flowx_clmm",eE.FULLSAIL_CLMM="fullsail_clmm",eE.FERRA_CLMM="ferra_clmm",eE.FERRA_DLMM="ferra_dlmm",eE.HAEDAL_CPMM="haedal_cpmm",eE.HAEDAL_CPMM_V2="haedal_cpmm_v2",eE.HAEDAL_LSD="haedal_lsd",eE.HAEDAL_LSD_WAL="haedal_lsd_wal",eE.KRIYA_CLMM="kriya_clmm",eE.KRIYA_CPMM="kriya_cpmm",eE.MAGMA_ALMM="magma_almm",eE.MAGMA_CLMM="magma_clmm",eE.METASTABLE="metastable",eE.MOMENTUM_CLMM="momentum_clmm",eE.MOVEPUMP="movepump",eE.OBRIC="obric",eE.SCALLOP="scallop",eE.SEVENK_CPMM="sevenk_cpmm",eE.SEVENK_FUN="sevenk_fun",eE.SPRINGSUI="springsui",eE.SRM_CPMM="srm_cpmm",eE.STEAMM_CPMM="steamm_cpmm",eE.SUISWAP_CPMM="suiswap_cpmm",eE.STEAMM_OMM="steamm_omm",eE.STEAMM_OMM_V2="steamm_omm_v2",eE.TRADEPORT_CLMM="tradeport_clmm",eE.TURBOS_CLMM="turbos_clmm",eE.TURBOS_FUN="turbos_fun",eE.VOLO="volo",eE);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}}}(tD||(tD={}));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?tD.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;if(this._config.aftermathApiEndpoint?this._aftermathClient=new A(this._config.aftermathApiEndpoint):this._aftermathClient=new A("MAINNET"),await this._aftermathClient.init(),this._config.aftermathApiKey){let e=b.keypairFromPrivateKey(this._config.aftermathApiKey);await this._aftermathClient.Auth().init({async signMessageCallback({message:t}){let{signature:o}=await e.signPersonalMessage(t);return{signature:o}},walletAddress:e.toSuiAddress()})}return this._aftermathClient}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,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}};class rl{_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");return await n(t,o,e,this._config.astrosApiKey,{byAmountIn:!0,serviceFee:a})}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;n=r?{fee:r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};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");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(this._suiClient,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 _=await d(t,l,u,c,e,void 0,!1,this._config.astrosApiKey,{serviceFee:n});return l.transferObjects([_],t),l.setSender(t),l.build({client:this._suiClient})}}(rl||(rl={})).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}},(tx||(tx={})).equals=function(e,t){return e.tradeFeePercent===t.tradeFeePercent&&e.tradeFeeRecipientAddress===t.tradeFeeRecipientAddress},(eh=tR||(tR={})).UNIVERSAL_META_VAULT_INTEGRATION_PACKAGE_ID="0xfd12517a9fc87c6a1f2357ad13b3421fb27a8bd7ca07d5fd5934ac35733baa47",(ey=eh.MetaCoinType||(eh.MetaCoinType={})).SUPER_SUI="0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI",ey.MUSD="0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD",ey.METH="0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH",eh.VERSION_OBJ_ID="0x4696559327b35ff2ab26904e7426a1646312e9c836d5c6cff6709a5ccc30915c",eh.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})},eh.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)}},eh.isMetaCoinType=function(e){return Object.values(eh.MetaCoinType).map(e=>e.toString()).includes(e)},eh.getCreateCapAllTypeParams=function(e,t){switch(e){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":return t===eh.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=[h,N,w,D,U,z,T,R,Q,I,E,S,$,W,M,v,C,V,J,G,q,k,H,j,X,K,Y,L,x,y,B,F];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={[G]: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 tR.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 tR.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 tR.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.`)}},[S]:e=>({...r(e),protocol:ra.DEEPBOOK_V3}),[T]: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)}),[v]: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}},[L]: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}},[$]: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}),[J]: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}},[H]: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)}},[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&&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)}},[q]: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}.`)},[Y]: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}),[I]:e=>({...r(e),protocol:ra.AFTERMATH_LSD}),[C]:e=>({...r(e),protocol:ra.ALPHAFI_LSD}),[M]:e=>({...r(e),protocol:ra.BLUEFIN_CLMM}),[E]:e=>({...r(e),protocol:ra.BLUEMOVE_CPMM}),[h]:e=>({...r(e),protocol:ra.CETUS_CLMM}),[y]:e=>({...r(e),protocol:ra.CETUS_DLMM}),[F]:e=>({...r(e),protocol:ra.FERRA_CLMM}),[B]:e=>({...r(e),protocol:ra.FERRA_DLMM}),[w]:e=>({...r(e),protocol:ra.FLOWX_CPMM}),[x]:e=>({...r(e),protocol:ra.FULLSAIL_CLMM}),[R]:e=>({...r(e),protocol:ra.HAEDAL_LSD}),[k]:e=>({...r(e),protocol:ra.HAEDAL_LSD_WAL}),[N]:e=>({...r(e),protocol:ra.KRIYA_CPMM}),[U]:e=>({...r(e),protocol:ra.KRIYA_CLMM}),[K]:e=>({...r(e),protocol:ra.MAGMA_CLMM}),[j]:e=>({...r(e),protocol:ra.MOMENTUM_CLMM}),[W]:e=>({...r(e),protocol:ra.SPRINGSUI}),[V]:e=>({...r(e),protocol:ra.SPRINGSUI}),[Q]: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)}}}(tL||(tL={}));class rd{_config;_suiClient;_cetusClient;getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t,overlayFeeRate:o}){return{client:this._suiClient,overlayFeeReceiver:t,overlayFeeRate:o,env:P.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&&!tx.equals(t,this._config.defaultTradeFee)?new O(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t.tradeFeeRecipientAddress,overlayFeeRate:t.tradeFeePercent})):(this._cetusClient||(this._cetusClient=new O(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?tL.SUPPORTED_PROTOCOLS:void 0);return await i.findRouters({from:t,target:o,amount:new Z(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})}}(rd||(rd={})).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 rp=((eS={}).ASTROS="ASTROS",eS.AFTERMATH="AFTERMATH",eS.SEVENK="7K",eS.CETUS="CETUS",eS.FLOWX="FLOWX",eS);!function(e){let t=[ea.HOP_FUN,ea.FLOWX_PMM,ea.DEEPBOOK,ea.IPX_TIDE,ea.METASTABLE];e.SUPPORTED_PROTOCOLS=Object.values(ea).filter(e=>!t.includes(e));let o={[ea.FLOWX_V2]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:ra.FLOWX_CPMM}),[ea.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()}),[ea.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}),[ea.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}),[ea.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}),[ea.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}),[ea.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}),[ea.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}),[ea.BLUEMOVE]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:ra.BLUEMOVE_CPMM}),[ea.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}),[ea.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}),[ea.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}),[ea.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}),[ea.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}),[ea.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}},[ea.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}),[ea.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}),[ea.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}),[ea.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}),[ea.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}),[ea.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}),[ea.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}),[ea.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),a=t.xForY;switch(t.quoterType){case"constant_product":return{...r,aToB:a,protocol:ra.STEAMM_CPMM,bankAId:a?t.bankXInfo.bankId:t.bankYInfo.bankId,bankBId:a?t.bankYInfo.bankId:t.bankXInfo.bankId,lendingMarketId:t.bankXInfo.lendingMarketId,lendingMarketType:t.bankXInfo.lendingMarketType,bCoinAType:a?t.bankXInfo.bTokenType:t.bankYInfo.bTokenType,bCoinBType:a?t.bankYInfo.bTokenType:t.bankXInfo.bTokenType,lpBCoinType:t.poolInfo.lpTokenType};case"oracle":case"oracle_v2":{c(void 0!==o&&o.length>=2,`STEAMM_OMM protocol requires oracle price feeds for pool ${t.pool.id}.`);let e=o[0],n=o[1];return c(void 0!==e.oracleId&&void 0!==n.oracleId&&void 0!==e.oracleIndex&&void 0!==n.oracleIndex,`STEAMM_OMM protocol requires oracle ids for pool ${t.pool.id}.`),{...r,aToB:a,protocol: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:n.priceId,oracleRegistryId:t.protocolConfig.oracleRegistryId,oracleIndexA:e.oracleIndex.toString(),oracleIndexB:n.oracleIndex.toString()}}default:throw Error(`Unsupported quoter type: ${t.quoterType} for pool ${t.pool.id}`)}},[ea.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??""}},[ea.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}),[ea.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(">",""):""}),[ea.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}),[ea.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}),[ea.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}),[ea.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}),[ea.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}),[ea.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}),[ea.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(e.toMetaAggregatorPath);for(let e of r.values())a[e].amountIn=tw.MAX_AMOUNT_IN;return a}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)}}}(tv||(tv={}));class r_{_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 eo(r,new et(e),er.PERCENTAGE,1e6*o,!0)}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){let i=new ee("mainnet",this._config.flowxApiKey),s=n??(a?tv.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 en("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 rm(e,t){return(await rf(e,t)).fields}async function rf(e,t){let o=await e.getObject({id:t,options:{showContent:!0}}),r=o.data?.content;return c(r,"Pool object not found or has no content"),c("moveObject"===r.dataType,"Object is not a Move object"),r}(r_||(r_={})).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}},(eP=tk||(tk={})).PACKAGE_ID_V4="0x7e6aa6e179466ab2814425a780b122575296d011119fa69d27f289f5a28814bd",eP.MEMEZ_AV_OBJECT_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",((eF=tN||(tN={})).U64||(eF.U64={})).mulDivUp=function(e,t,o){let r=BigInt(0);return e*t%o>BigInt(0)&&(r=BigInt(1)),e*t/o+r};var rg=tU||(tU={});function rA(e){return c(BigInt(e)<=BigInt(1e4),"Bps overflow"),BigInt(e)}rg.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},rg.sub=function(e,t){return c(BigInt(e.pos0)>=BigInt(t.pos0),"Bps underflow"),{pos0:(BigInt(e.pos0)-BigInt(t.pos0)).toString()}},rg.value=function(e){return BigInt(e.pos0)},rg.new_=function(e){return{pos0:rA(e).toString()}},rg.assertOverflow=rA,((eB=tK||(tK={})).MemezFun||(eB.MemezFun={})).isSniperProtectedMemezFun=async function(e,t){return(await rm(e,t)).public_key.length>0},(ew=eB.MemezFees||(eB.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=tU.calcUp(tU.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")},ew.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 tU.calcUp(tU.sub(r,t),o)}throw Error("Unknown fee variant")},(eB.MemezBurner||(eB.MemezBurner={})).calculate=function(e,t){if(tU.value(e.fee.fields)===BigInt(0)||t===BigInt(0)||t>=BigInt(e.target_liquidity))return tU.new_(0);let o=BigInt(1e4);return tU.new_(tN.U64.mulDivUp(tU.value(e.fee.fields),tN.U64.mulDivUp(t,o,BigInt(e.target_liquidity)),o))},(eD=eB.MemezPump||(eB.MemezPump={})).getPumpState=async function(e,t){return await rm(e,t.inner_state)},eD.pump=function(e,t){let o=e.constant_product.fields,r=eB.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=eB.MemezFees.takeWithDiscount(o.meme_swap_fee,s,o.meme_referrer_fee.fields);return s-c},eD.dump=function(e,t){let o=e.constant_product.fields,r=eB.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=eB.MemezBurner.calculate(o.burner.fields,i),u=tU.calcUp(c,a),l=a-(tU.value(c)!==BigInt(0)?u:BigInt(0)),d=(s+i)*l/(n+l);d>i&&(d=i);let p=eB.MemezFees.takeWithDiscount(o.quote_swap_fee,d,o.quote_referrer_fee.fields);return d-p},(ex=tG||(tG={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,n=await rm(t,r),i=await tK.MemezPump.getPumpState(t,n);return o=ep(o,a),tK.MemezPump.pump(i,o)},ex.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,n=await rm(t,r),i=await tK.MemezPump.getPumpState(t,n);return ep(tK.MemezPump.dump(i,o),a)};let rb="0x62412b7268c35f3808336aee57a52836501f40b8ba5d936f8ad275e672befd04";async function rI(e,t){let o,r,{inputAmount:a,accountAddress:n,frontendFee:s,frontendFeeRecipient:u,extendTx:l,isSponsored:d}=e;c(e.inCoinType===eO||e.inCoinType===eg,"Input must be SUI");let{tx:p,coinIn:_}=l||{},m=eC(a,s||"0"),f=p||new i;if(_)o=f.splitCoins(_,m),tj.transferOrDestroyZeroCoin(f,eO,_,n);else{let{coinData:e}=await e_({account:n,amount:a,splits:m,coinType:eO,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 rT(e,t,o){if(c(t.outCoinType===eO||t.outCoinType===eg,"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:`${rb}::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}}(tj||(tj={})).transferOrDestroyZeroCoin=function(e,t,o,r){e.moveCall({target:`${rb}::utils::transfer_or_destroy`,typeArguments:[t],arguments:[o,e.pure.address(r)]})};var rC=tq||(tq={});async function rO(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:[]})}rC.getAllowedVersions=rO,rC.buildBuyTx=async function(e,t){c(!await tK.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 rI(e,t);c(r,"Coin out is required");let a=o.moveCall({target:`${tk.PACKAGE_ID_V4}::memez_pump::pump`,typeArguments:[e.outCoinType,eO],arguments:[o.object(e.poolId),r,o.pure.vector("address",[]),o.pure.vector("vector<u8>",[]),o.pure.u64(e.minAmountOut),await rO(o)]});return{tx:o,coinOut:a}},rC.buildSellTx=async function(e,t){c(e.outCoinType===eO||e.outCoinType===eg,"Output must be SUI");let o=await rm(t,e.poolId),{tx:r,coinData:a}=await e_({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 rO(r)]});return await rT(r,e,i)};let rM={network:ei.MAINNET,fullNodeUrl:ec("mainnet")};async function rE(){if(!e){let{MemezPumpSDK:t}=await import("@interest-protocol/memez-fun-sdk");e=new t(rM)}return e}(eR=t$||(t$={})).getCurveAmountAfterBuy=async function(e){let{suiAmount:t,poolId:o,frontendFee:r}=e;t=ep(t,r);let{memeAmountOut:a}=await (await rE()).quotePump({pool:o,amount:t});return a},eR.getSuiAmountAfterSell=async function(e){let{curveAmount:t,poolId:o,frontendFee:r}=e,{quoteAmountOut:a}=await (await rE()).quoteDump({pool:o,amount:t});return ep(a,r)};var rh=tY||(tY={});async function ry(e,t){let{tx:o,coinOut:r}=await rI(e,t);c(r,"Coin out is required");let{memeCoin:a,tx:n}=await (await rE()).pump({pool:e.poolId,quoteCoin:r,minAmountOut:e.minAmountOut,tx:o});return{tx:n,coinOut:a}}async function rS(e,t){c(eA(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await e_({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 rE()).dump({pool:e.poolId,memeCoin:a,tx:o,minAmountOut:e.minAmountOut});return await rT(i,e,n)}rh.buildBuyTx=ry,rh.buildSellTx=rS,rh.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eA(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 ry({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 eb(u,d,n,0);return(d=await eI({inheritTx:d,sender:n,feeAmount:_,suiInputAmount:e},u)).build({client:u})},rh.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eA(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 rS({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 eb(u,d,n,0);return(d=await eI({inheritTx:d,sender:n,feeAmount:_},u)).build({client:u})};var rP=((eL={}).BLAST_FUN="BLAST_FUN",eL.MOONBAGS="MOONBAGS",eL);(ev=tV||(tV={})).PACKAGE_ID="0xb8df325010942634a4afb3db3901ee215546af43a4ec4af781e7213b0bba7290",ev.CONFIG_OBJECT_ID="0x74aecf86067c6913960ba4925333aefd2b1f929cafca7e21fd55a8f244b70499",ev.LOCK_CONFIG_OBJECT_ID="0xfb09822d9808980abd04c51321adb850701f5f55535c6206658ef4d910c3e9be",ev.BURN_MANAGER_OBJECT_ID="0x1d94aa32518d0cb00f9de6ed60d450c9a2090761f326752ffad06b2e9404f845",ev.POOLS_OBJECT_ID="0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0",ev.GLOBAL_CONFIG_OBJECT_ID="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",ev.FEE_DENOMINATOR=BigInt(1e4),(eN=(ek=tJ||(tJ={})).Curves||(ek.Curves={})).calculateAddLiquidityCost=function(e,t,o){return e*t/(t-o)-e},eN.calculateRemoveLiquidityReturn=function(e,t,o){return t-e*t/(e+o)},eN.calculateTokenAmountReceived=function(e,t,o){return t-e*t/(e+o)},(eU=ek.Moonbags||(ek.Moonbags={})).getDynamicVirtualTokenReserves=async function(e,t){let o=await e.getDynamicFieldObject({parentId:t,name:{type:"vector<u8>",value:"virtual_token_reserves"}});if(o.data)return BigInt(o.data.content.fields.value)},eU.buyExactInReturnsWithLock=function(e){let{inputAmount:t,amountIn:o,pool:r,config:a,dynamicVirtualTokenReserves:n}=e,i=BigInt(r.virtual_sui_reserves),s=BigInt(r.virtual_token_reserves),u=BigInt(r.remain_token_reserves.fields.balance),l=ek.Curves.calculateRemoveLiquidityReturn(i,s,o),d=s-(n||u),p=l,_=o;l>d&&(p=d,_=ek.Curves.calculateAddLiquidityCost(i,s,d)+BigInt(1));let m=_*BigInt(a.platform_fee)/tV.FEE_DENOMINATOR;return c(t>=_+m,"Input amount is less than used SUI + fee"),{receivedCurve:p,receivedSui:t-_-m}},eU.sellReturns=function(e){let{amountIn:t,pool:o,config:r}=e,a=BigInt(o.virtual_sui_reserves),n=BigInt(o.virtual_token_reserves),i=BigInt(o.real_sui_reserves.fields.balance),s=ek.Curves.calculateRemoveLiquidityReturn(n,a,t);s>i&&(s=i);let c=s*BigInt(r.platform_fee)/tV.FEE_DENOMINATOR,u=s-c;return{receivedCurve:BigInt(0),receivedSui:u}},(eK=tH||(tH={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,[n,i,s]=await Promise.all([rm(t,r),rm(t,tV.CONFIG_OBJECT_ID),tJ.Moonbags.getDynamicVirtualTokenReserves(t,r)]);void 0!==a&&(o=ep(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},eK.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,[n,i]=await Promise.all([rm(t,r),rm(t,tV.CONFIG_OBJECT_ID)]),{receivedSui:s}=tJ.Moonbags.sellReturns({amountIn:o,pool:n,config:i});return void 0!==a?ep(s,a):s},eK.getUsedSuiForTx=async function(e,t){let{suiAmount:o,frontendFee:r}=e,a=await rm(t,tV.CONFIG_OBJECT_ID);return void 0!==r&&(o=ep(o,r)),o*tV.FEE_DENOMINATOR/(tV.FEE_DENOMINATOR+BigInt(a.platform_fee))};var rF=tX||(tX={});async function rB(e,t){let{tx:o,coinOut:r}=await rI(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(ef),o.object(em)]});return tj.transferOrDestroyZeroCoin(o,eO,n,e.accountAddress),{tx:o,coinOut:i}}async function rw(e,t){c(eA(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await e_({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(em)]});return tj.transferOrDestroyZeroCoin(o,e.inCoinType,i,e.accountAddress),await rT(o,e,n)}function rD(e){return e}function rx(e){return e}function rR(e){return new Proxy(e,{get(e,t){let o=e[t];return"function"==typeof o?o.bind(e):o}})}rF.buildBuyTx=rB,rF.buildSellTx=rw,rF.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eA(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 rB({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 eb(u,d,n,0);return(d=await eI({inheritTx:d,sender:n,feeAmount:_,suiInputAmount:e},u)).build({client:u})},rF.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eA(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 rw({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 eb(u,d,n,0);return(d=await eI({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)]})},(ej=tz||(tz={})).PYTH_URLS=["https://hermes.pyth.network"],ej.WORMHOLE_STATE_ID="0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",ej.PYTH_STATE_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",ej.newPythConnections=function(e){return e||(e=ej.PYTH_URLS),e.map(e=>new eu(e,{timeout:3e3}))},ej.newPythClient=function(e){return e||(e=new es({network:"mainnet",url:"https://fullnode.mainnet.sui.io:443"})),new el(e,ej.PYTH_STATE_ID,ej.WORMHOLE_STATE_ID)},ej.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 rL=((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 rv 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 rv(t??"Assertion failed",o,r)}}class rk{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)tD.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tD.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 rv.assert(!!o,"No quote found",rL.QUOTE_NOT_FOUND,{provider:this.kind}),{sourceRoute:"SEVENK",rawRoute:o,amountIn:o.swapAmountWithDecimal,amountOut:o.returnAmountWithDecimal,coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}let rN=tz.PYTH_URLS;class rU{options;kind="CETUS";cetusClient;constructor(e,t,o){this.options=e,this.cetusClient=new O({apiKey:e.apiKey,client:o,endpoint:e.api,env:P.Mainnet,pythUrls:t.hermesApi?t.hermesApi:rN})}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.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 rv.assert(!!o,"No quote found",rL.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 rK{options;kind="FLOWX";quoter;constructor(e){this.options=e,this.quoter=new ee("mainnet",e.apiKey)}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.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=t6||(t6={})).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=t4||(t4={})).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(t4.MEMEZ_FUN_OBJ_ID),t.object(t4.IPX_TREASURY_STANDARD_OBJ_ID),t.object(t4.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",(e6=oa||(oa={})).LAST_PACKAGE_ID="0x9ab3ba62b4327a7d90e4aed1c025b62736f035911ad7bab830c065ec84ef1ffa",e6.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??e6.LAST_PACKAGE_ID}::cetus_dlmm_router::swap`,typeArguments:[i,s],arguments:l})},(e4=on||(on={})).GLOBAL_CONFIG="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135",e4.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)]})},(oh||(oh={})).VERSION_OBJ_ID="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78",(ts=oy||(oy={})).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(oh.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=oP||(oP={})).FACTORY_OBJ_ID="0xedb456e93e423dd75a8ddebedd9974bb661195043027e32ce01649d6ccee74cf",tu.GLOBAL_CONFIG_OBJ_ID="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(tl=oF||(oF={})).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(oP.FACTORY_OBJ_ID),t.object(oP.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=oD||(oD={})).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=[tR.createCap({coinType:f,createCapFunc:"create_withdraw_cap",...e})]):f===p?(r="swap_to_meta_coin",t=[p,m],o=[tR.createCap({coinType:m,createCapFunc:"create_deposit_cap",...e})]):(r="swap",t=[p,m,f],o=[tR.createCap({coinType:m,createCapFunc:"create_deposit_cap",...e}),tR.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(tR.VERSION_OBJ_ID),...o,a.pure.u64(s)]})},(ox||(ox={})).VERSION_OBJ_ID="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a",(t_=oR||(oR={})).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(ox.VERSION_OBJ_ID),t.object(u)]})},(oL||(oL={})).CONFIGURATION_OBJ_ID="0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4",(tm=ov||(ov={})).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(oL.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=oN||(oN={})).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=oU||(oU={})).VERSION_OBJ_ID="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",tg.MARKET_OBJ_ID="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",(tA=oK||(oK={})).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(oU.VERSION_OBJ_ID),t.object(oU.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=oj||(oj={})).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 rG=oX||(oX={});function rj(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,h=T.get(b),y=T.get(I);c(h,"Not found priceInfoAId in pythObjectIdMap"),c(y,"Not found priceInfoBId in pythObjectIdMap");let S=oH.Oracle.getPythPrice({txb:o,oracleRegistryId:C,priceInfoId:h,oracleIndex:O}),P=oH.Oracle.getPythPrice({txb:o,oracleRegistryId:C,priceInfoId:y,oracleIndex:M});o.moveCall({target:`${E??rG.LAST_PACKAGE_ID}::${rq(t)}::swap`,typeArguments:[m,n,i,f,g,A],arguments:[r,o.object(a),o.object(d),o.object(p),o.object(_),S,P,o.pure.bool(s),o.pure.u64(l),o.object(u)]})}function rq(e){switch(e){case 0:return"steamm_omm_router";case 1:return"steamm_omm_v2_router"}}function r$(e){let{amountOut:t,aggregatorFeeBps:o,partnerFeeBps:r}=e,a=rY(t,o);return r&&(a=rY(a,r)),a}function rY(e,t){let o=BigInt(e)*BigInt(t)/BigInt(1e4);return(BigInt(e)-o).toString()}function rV(e){return Math.floor(100*e)}rG.LAST_PACKAGE_ID="0xd606880d67c399f349758111a91582d5515f31dd051632402653d872818f594e",rG.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:`${rG.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)]})},rG.swapOmm=function(e){rj(e,0)},rG.swapOmmV2=function(e){rj(e,1)},rG.getOmmRouterModule=rq,(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)]})},(th=oz||(oz={})).VERSIONED="0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676",th.POOL_REGISTRY="0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd",(ty=oQ||(oQ={})).LAST_PACKAGE_ID="0x79957062a7424ed9c2eb83932e4c4fcc3fee67ab3c8f6f874c54e417178bbb7a",ty.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??ty.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",(tP=o6||(o6={})).LAST_PACKAGE_ID="0x1fad13f09797aa87a4385d0b1efb2de963ba16742447b1ad5a3b0c5b1d1c588b",tP.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??tP.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)]})},(o4||(o4={})).VOLO_CERT_METADATA_ID="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",(tF=o3||(o3={})).LAST_PACKAGE_ID="0x7c8d95256342f904d5f251776903a17905d87c95f387b3a35cc2aecc23b3c042",tF.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??tF.LAST_PACKAGE_ID}::volo_router::swap`,arguments:[o,t.object(r),t.object(o4.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]:t6.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]:oy.swap,[ra.KRIYA_CPMM]:oS.swap,[ra.MAGMA_ALMM]:oF.swap,[ra.MAGMA_CLMM]:ow.swap,[ra.METASTABLE]:oD.swap,[ra.MOMENTUM_CLMM]:oR.swap,[ra.MOVEPUMP]:ov.swap,[ra.OBRIC]:oN.swap,[ra.SCALLOP]:oK.swap,[ra.SEVENK_CPMM]:oj.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]:o6.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 rJ=tz.newPythConnections(),rH=tz.newPythClient();var rX=o8||(o8={});function rW(e){var t,o;let r,a,{buildTxParam:n,rawRouteParam:i}=e;switch(i.sourceRoute){case"CETUS":r=tL.convert(i.rawRoute);break;case"FLOWX":r=tv.convert(i.rawRoute);break;case"SEVENK":r=tD.convert(i.rawRoute);break;default:throw Error("Unsupported source route")}let s=rV(n.aggregatorFeeRatePercent),c=n.partnerFeeRatePercent?rV(n.partnerFeeRatePercent):void 0,u=n.expectedAmountOut??r$({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??rJ,pythClient:n.pythClient??rH}}rX.toMetaAggregatorBuildTxParams=rW,rX.buildTx=function(e){let t=rW(e);return o5.buildAggregatorSwapTransaction(t)};let rz=async(e,t,o)=>t<=0?e():new Promise((r,a)=>{let n=setTimeout(()=>a(new rv(`Timeout ${o??"operation"}`,rL.TIMEOUT,{timeout:t})),t);e().then(r).catch(a).finally(()=>clearTimeout(n))}),rQ=(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)}},rZ={SEVENK:{},FLOWX:{},CETUS:{}};class r0{client;providers={};options;constructor(e){this.options={providers:{...rZ,...e?.providers},slippageBps:e?.slippageBps??100,fullnodeUrl:e?.fullnodeUrl??ec("mainnet"),hermesApi:e?.hermesApi??tz.PYTH_URLS,partner:e?.partner??eT,partnerCommissionBps:e?.partnerCommissionBps??0,tipBps:e?.tipBps??0},this.client=new es({network:"mainnet",url:this.options.fullnodeUrl})}async getQuoteClient(e){let t=this.providers[e];if(t)return t;let o=this.options.providers[e];switch(rv.assert(!!o,`Provider not found: ${e}`,rL.PROVIDER_NOT_FOUND,{provider:e}),e){case"SEVENK":{let{Bluefin7kClient:e}=await Promise.resolve(o9).catch(r1("SEVENK"));this.providers.SEVENK=new e(o,this.client);break}case"FLOWX":{let{FlowxClient:e}=await Promise.resolve(re).catch(r1("FLOWX"));this.providers.FLOWX=new e(o);break}case"CETUS":{let{CetusClient:e}=await Promise.resolve(o7).catch(r1("CETUS"));this.providers.CETUS=new e(o,this.options,this.client);break}default:throw new rv(`Provider not supported: ${e}`,rL.PROVIDER_NOT_SUPPORTED,{provider:e})}return this.providers[e]}async getQuoteByClient(e,t){return await rz(async()=>{let o=await e.quote(t);return o?(o.amountOut=r$({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);rv.assert(p(i),`Invalid signer address: ${o}`,rL.INVALID_SIGNER_ADDRESS,{signer:o}),r.setSender(i);let s=(n??this.options.slippageBps)/1e4,c=this.options.partner&&this.options.partner!==eT?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.client)},rawRouteParam:{...t}})}}let r1=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};class r6{sdk;_astrosAggregator;_aftermathAggregator;_sevenkAggregator;_cetusAggregator;_flowXAggregator;constructor(e){this.sdk=e,this._astrosAggregator=new rl({defaultTradeFee:e.options.tradeFee,astrosApiKey:e.options.astrosApiKey},e.suiClient),this._aftermathAggregator=new ru({defaultTradeFee:e.options.tradeFee,aftermathApiKey:e.options.aftermathApiKey,aftermathApiEndpoint:e.options.aftermathApiEndpoint},e.suiClient),this._sevenkAggregator=new ri({defaultTradeFee:e.options.tradeFee,sevenKApiKey:e.options.sevenKApiKey},e.suiClient),this._cetusAggregator=new rd({defaultTradeFee:e.options.tradeFee,cetusApiKey:e.options.cetusApiKey,cetusApiEndpoint:e.options.cetusApiEndpoint,cetusPartnerId:e.options.cetusPartnerId},e.suiClient),this._flowXAggregator=new r_({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 rp.ASTROS:{let e,r=await this._astrosAggregator.getTradeRoute(t);if(!r)return null;let a=rl.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 rp.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 rp.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 rp.CETUS:{let e=await this._cetusAggregator.getTradeRoute(t);if(!e)return null;let r=rd.toCommonTradeRoutes(e,t.coinInType,t.coinOutType);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rp.FLOWX:{let e=await this._flowXAggregator.getTradeRoute(t);if(!e)return null;let r=r_.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e}}}return o}async getTransactionByRoute(e,t){switch(e){case rp.ASTROS:return this._astrosAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rp.AFTERMATH:return this._aftermathAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage});case rp.SEVENK:return this._sevenkAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rp.CETUS:return this._cetusAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rp.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=Object.keys(rp),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=Object.keys(rp),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 r4{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(eA(o)||eA(r),"One of coinInType or coinOutType must be SUI");let a=eA(o);switch(e){case rP.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 rP.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(eA(r)||eA(a),"One of coinInType or coinOutType must be SUI");let n=eA(r);switch(e){case rP.MOONBAGS:o=n?await tX.getBuyTransaction(t,this.sdk.suiClient):await tX.getSellTransaction(t,this.sdk.suiClient);break;case rP.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 r3={tradeFeePercent:.01,tradeFeeRecipientAddress:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff"};class r2{network;env;options;_suiClient;aggregatorModule;curveModule;constructor(e,t="mainnet",o="prod"){this.options=e,this.network=t,this.env=o;let r=ec(t);this._suiClient=new es({network:t,url:r}),this.aggregatorModule=new r6(this),this.curveModule=new r4(this)}get suiClient(){return this._suiClient}}class r5{suiClient;constructor(e){this.suiClient=e}validatePrivateKey(e,t){c(e?.trim(),"Private key is required");let o=ed.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 n=await this.suiClient.getReferenceGasPrice();r.setGasPrice(n);let s=await eb(this.suiClient,r,e,.1);r=await eI({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.executeTransactionBlock({transactionBlock:r,signature:a});return{success:!0,txDigest:n.digest,effects:n.effects}}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.getTransactionBlock({digest:e,options:{showEffects:!0}});if(!t?.effects?.status)return"pending";return"success"===t.effects.status.status?"success":"failure"}catch(e){if(e instanceof Error&&(e.message.includes("not found")||e.message.includes("Could not find")))return"pending";return"failure"}}}var r8=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{r6 as AggregatorModule,rb as BLUEFIN_PACKAGE_ID,r4 as CurveModule,r3 as DEFAULT_TRADE_FEE,r5 as DraftTransferTx,rv as MetaAgError,r0 as MetaClient,r2 as NoodlesSdk,ri as SevenKAggregator,rD as adaptSuiClient,rx as adaptTransaction,ru as AftermathAggregator,tQ as AftermathCpmm,t0 as AftermathLsd,o8 as AggregatorConverter,rl as AstrosAggregator,t4 as Blastfun,rk as Bluefin7kClient,tj as BluefinTx,t2 as BluefinClmm,t8 as BluemoveCpmm,t7 as Bolt,tH as MoonbagsCalculation,rd as CetusAggregator,tL as CetusAggregatorConverter,rU as CetusClient,ot as CetusClmm,or as CetusDlmm,rr as checkIsSui,rp as SupportedAggregator,tk as BlastFunConstants,tV as MoonbagsConstants,rR as createCompatibleSuiClient,tG as BlastFunCustomCalculation,tq as BlastFunCustomTransaction,on as DeepbookV3,ro as denormalizeTokenType,os as DipCpmm,rL as MetaAgErrorCode,r8 as BASE_BPS,ou as FerraClmm,od as FerraDlmm,r_ as FlowXAggregator,tv as FlowXAggregatorConverter,rK as FlowxClient,of as FlowxCpmm,oA as FullsailClmm,rQ as getExpectedReturn,rE as getMemezPumpSDK,rf as getMoveObject,rm as getMoveObjectContent,oM as HaedalLsdWal,oh as KriyaClmm,oP as MagmaAlmm,oB as MagmaClmm,o5 as MetaAggregator,tR as Metastable,ox as MomentumClmm,oL as Movepump,rt as normalizeTokenType,ok as Obric,tK as BlastFunPackage,tU as Bps,tN as MathUtils,tJ as MoonbagsPackage,tW as PythPrice,tz as PythUtils,oU as Scallop,t$ as BlastFunSDKCalculation,tY as BlastFunSDKTransaction,tD as SevenKAggregatorConverter,oG as SevenkCpmm,oq as SevenkFun,rI as splitSuiCoinAfterFeeFromBuyTx,rT as splitSuiCoinAfterFeeFromSellTx,oV as SrmCpmm,oH as Steamm,oz as TradeportClmm,tX as MoonbagsTransaction,oZ as TurbosClmm,o1 as TurbosFun,ra as AggregatorProtocol,rP as SupportedBondingCurve,tx as TradeFeeOptions,o2 as RouterUtils,rz as timeout,o4 as Volo,oO as Walrus};
|
package/dist/pay.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ADMIN_CAP_ID:()=>ADMIN_CAP_ID,CONFIG_ID:()=>CONFIG_ID,SUBSCRIPTION_CONFIG:()=>SUBSCRIPTION_CONFIG,BOOSTING_PACKAGE_ID:()=>BOOSTING_PACKAGE_ID,BoostingModule:()=>BoostingModule,NoodlesPaySdk:()=>NoodlesPaySdk,SubscriptionModule:()=>SubscriptionModule});const tiny_invariant_namespaceObject=require("@minswap/tiny-invariant");var tiny_invariant_default=__webpack_require__.n(tiny_invariant_namespaceObject);const transactions_namespaceObject=require("@mysten/sui/transactions"),utils_namespaceObject=require("@mysten/sui/utils"),BASE_BPS=1e4;function getSplitCoinsAfterFee(e,t){let n=BigInt(e),i=BigInt(1e4*Number(t));if(i===BigInt(0))return[n.toString()];let a=n*i/BigInt(1e4);return[(n-a).toString(),a.toString()]}function getAmountAfterFee(e,t){if(!t||0>=Number(t))return BigInt(e);let n=BigInt(e),i=BigInt(1e4*Number(t));if(i===BigInt(0))return n;let a=n*i/BigInt(1e4);return n-a}async function getNeededGasFee(e,t,n,i){let{effects:{gasUsed:a,status:s}}=await e.devInspectTransactionBlock({sender:n,transactionBlock:t});if("success"!==s.status)throw Error(`Transaction failed during dev inspect: ${s.error??""}`);let r=BigInt(a.computationCost)+BigInt(a.storageCost)-BigInt(a.storageRebate),d=BigInt(1e4*Number(i));return r*(BigInt(1e4)+d)/BigInt(1e4)}const SUI_TYPE="0x2::sui::SUI",SUI_FULL_TYPE="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",USDC_TOKEN_TYPE="0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",NATIVE_USDC_TOKEN_TYPE="0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",SUI_METADATA_OBJECT_ID="0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",CLOCK_OBJECT_ID="0x0000000000000000000000000000000000000000000000000000000000000006",SUI_ADDRESS_ZERO="0x0000000000000000000000000000000000000000000000000000000000000000";function isSuiCoinType(e){return"0x2::sui::SUI"===e||e===SUI_FULL_TYPE}const orderByKey=(e,t,n)=>{let i;if(e?.length){do{i=!1;for(let a=0;a<e.length-1;a++){let s=BigInt(e[a][t]),r=BigInt(e[a+1][t]);if("desc"===n?s<r:s>r){let t=e[a];e[a]=e[a+1],e[a+1]=t,i=!0}}}while(i);return e}},getCoinObjectIdsByAmount=async(e,t,n,i)=>{let a,s=[],r=!0;for(;r;)try{let n=await e.getCoins({owner:t,coinType:i,cursor:a});s=[...s,...n.data],r=n.hasNextPage,a=n.nextCursor}catch(e){console.error("Error fetching data:",e),r=!1}let d=orderByKey(s.map(e=>({...e,balance:e.balance})),"balance","desc")??[],o="0",c=[],u=[];for(let e of d)if(o=(BigInt(e.balance)+BigInt(o)).toString(10),c.push(e.coinObjectId),u.push(e),BigInt(o)>=BigInt(n))break;return{objectIds:c,balance:o,objectCoins:u}};async function addGasFee(e,t){let{inheritTx:n,sender:i,feeAmount:a,suiInputAmount:s}=e,r=n||new transactions_namespaceObject.Transaction;a>BigInt(0)&&r.setGasBudget(a);let{objectCoins:d}=await getCoinObjectIdsByAmount(t,i,(BigInt(s||"0")+a).toString(),SUI_FULL_TYPE);return r.setGasPayment(d.map(e=>({objectId:e.coinObjectId,version:e.version,digest:e.digest}))),r}const BOOSTING_PACKAGE_ID="0x25fa0eb553dd69fa6a8028f73a38f1df7f289fa88a58ed3d7dc5a5360155bb19",CONFIG_ID="0x8b1a8ac6e34688cd8f8f8e5fefa9d5fb9e1ff74d2f132f8e208ae5ac9cc530bb",ADMIN_CAP_ID="0x13d101f44a0710a5475bec5f492a87b80e03d92d1cf540f26096f65850b23d26";class BoostingModule{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({id:CONFIG_ID,options:{showContent:!0}});tiny_invariant_default()(e.data?.content,"Config object not found or has no content"),tiny_invariant_default()(e.data?.content.dataType==="moveObject","Config object is not a Move object");let t=e.data.content.fields,n=t.id.id,i=t.fee_receiver,a=t.tiers.fields.contents,s={};for(let e of a){let t=e.fields.key,n=e.fields.value.fields.duration,i=e.fields.value.fields.amount,a=e.fields.value.fields.point,r=e.fields.value.fields.original_amount;s[t]={duration:BigInt(n),amount:BigInt(i),point:BigInt(a),originalAmount:BigInt(r)}}return{id:n,receiverAddress:i,tiers:s}}async buildPayBoostingTx({walletAddress:e,tierId:t,boostingCoinType:n,currentTx:i}){let a=await this.getConfig();tiny_invariant_default()(t in a.tiers,"Invalid tier ID");let s=a.tiers[t].amount,r=i||new transactions_namespaceObject.Transaction,d=r.splitCoins(r.gas,[r.pure.u64(s)]);r.moveCall({target:`${BOOSTING_PACKAGE_ID}::boosting::pay`,typeArguments:[(0,utils_namespaceObject.normalizeStructTag)(n)],arguments:[r.object(CONFIG_ID),r.pure.u64(t),d]}),r.setSender(e);let o=await getNeededGasFee(this.sdk.suiClient,r,e,0);return addGasFee({inheritTx:r,sender:e,feeAmount:o},this.sdk.suiClient)}async buildAddTierTx({adminAddress:e,tierId:t,duration:n,point:i,originalAmount:a,amount:s,currentTx:r}){let d=r||new transactions_namespaceObject.Transaction;d.moveCall({target:`${BOOSTING_PACKAGE_ID}::config::add_tier`,typeArguments:[],arguments:[d.object(CONFIG_ID),d.object(ADMIN_CAP_ID),d.pure.u64(t),d.pure.u64(i),d.pure.u64(n),d.pure.u64(a),d.pure.u64(s)]}),d.setSender(e);let o=await getNeededGasFee(this.sdk.suiClient,d,e,0);return addGasFee({inheritTx:d,sender:e,feeAmount:o},this.sdk.suiClient)}async buildUpdateTierTx({adminAddress:e,tierId:t,duration:n,amount:i,originalAmount:a,point:s,currentTx:r}){let d=r||new transactions_namespaceObject.Transaction;d.moveCall({target:`${BOOSTING_PACKAGE_ID}::config::update_tier`,typeArguments:[],arguments:[d.object(CONFIG_ID),d.object(ADMIN_CAP_ID),d.pure.u64(t),d.pure.u64(n),d.pure.u64(i),d.pure.u64(s),d.pure.u64(a)]}),d.setSender(e);let o=await getNeededGasFee(this.sdk.suiClient,d,e,0);return addGasFee({inheritTx:d,sender:e,feeAmount:o},this.sdk.suiClient)}async buildRemoveTierTx({adminAddress:e,tierId:t,currentTx:n}){let i=n||new transactions_namespaceObject.Transaction;i.moveCall({target:`${BOOSTING_PACKAGE_ID}::config::remove_tier`,typeArguments:[],arguments:[i.object(CONFIG_ID),i.object(ADMIN_CAP_ID),i.pure.u64(t)]}),i.setSender(e);let a=await getNeededGasFee(this.sdk.suiClient,i,e,0);return addGasFee({inheritTx:i,sender:e,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiver({adminAddress:e,newReceiverAddress:t,currentTx:n}){let i=n||new transactions_namespaceObject.Transaction;i.moveCall({target:`${BOOSTING_PACKAGE_ID}::config::update_fee_receiver`,typeArguments:[],arguments:[i.object(CONFIG_ID),i.object(ADMIN_CAP_ID),i.pure.address(t)]}),i.setSender(e);let a=await getNeededGasFee(this.sdk.suiClient,i,e,0);return addGasFee({inheritTx:i,sender:e,feeAmount:a},this.sdk.suiClient)}async buildPayBoostingWithAdminTx({walletAddress:e,tierId:t,customAmount:n,boostingCoinType:i,currentTx:a}){let s=a||new transactions_namespaceObject.Transaction,r=s.splitCoins(s.gas,[s.pure.u64(n)]);s.moveCall({target:`${BOOSTING_PACKAGE_ID}::boosting::pay_with_admin`,typeArguments:[(0,utils_namespaceObject.normalizeStructTag)(i)],arguments:[s.object(ADMIN_CAP_ID),s.object(CONFIG_ID),s.pure.u64(t),s.pure.u64(n),r]}),s.setSender(e);let d=await getNeededGasFee(this.sdk.suiClient,s,e,0);return addGasFee({inheritTx:s,sender:e,feeAmount:d},this.sdk.suiClient)}}async function getSplitCoinForTx(e,t){let{account:n,amount:i,splits:a,coinType:s,inheritTx:r,inspecTransaction:d,isSponsored:o=!1}=e,c=r??new transactions_namespaceObject.Transaction,{objectIds:u,balance:_}=await getCoinObjectIdsByAmount(t,n,i,s);if(BigInt(_)<BigInt(i))throw Error(`Insufficient balance for type ${s}. Required: ${i}, Available: ${_}`);if(0===u.length)throw Error(`No coins found for type ${s} with sufficient balance. Required: ${i}`);let l=u[0];if((0,utils_namespaceObject.normalizeStructTag)(s)===(0,utils_namespaceObject.normalizeStructTag)(SUI_FULL_TYPE)&&!o){let e;return d?(u.length>1&&c.mergeCoins(c.object(l),u.slice(1).map(e=>c.object(e))),e=c.splitCoins(c.object(l),a)):e=c.splitCoins(c.gas,a),{tx:c,coinData:e}}u.length>1&&c.mergeCoins(c.object(l),u.slice(1).map(e=>c.object(e)));let I=c.splitCoins(c.object(l),a);return{tx:c,coinData:I}}const SUBSCRIPTION_CONFIG={prod:{packageId:"0x3dd678c250a667f1551bc4b9e35fd070896f4775dd2900d5cb2910d2aea0b068",configId:"0x3eb7bd15f61b7cc1a9fd36151e9c3d05aa37bfadb0a58c3a26a6c02c2e99f3ca",adminCapId:"0xf375fcb3d95934143766cab2028ab49441fa04ef2ce27c08c01004c455bcbad4",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"},staging:{packageId:"0xa83cd093ce5142649adae10d21fe87d55fa2df4e52a4292c77ba039bb12bfe67",configId:"0x19fb8f91946e58c068fa4238bdd7a531216a0c4dcfaa279a8a02c60cb02f6711",adminCapId:"0xd8139544d054702dfab6de4e9c55f162c8a6f30465935af56cffed99c5e1c2bd",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"}};class SubscriptionModule{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({id:SUBSCRIPTION_CONFIG[this.sdk.env].configId,options:{showContent:!0}});tiny_invariant_default()(e.data,"Config object not found"),tiny_invariant_default()(e.data.content,"Config object has no content"),tiny_invariant_default()(e.data?.content.dataType==="moveObject","Config object is not a Move object");let t=e.data.content.fields,n=t.id.id,i=t.fee_receiver,a=t.paused,s=t.accepted_payment_type,r=t.plans.fields.contents,d={};for(let e of r){let t=e.fields.key,n=e.fields.value.fields.id,i=e.fields.value.fields.price,a=e.fields.value.fields.month_interval,s=e.fields.value.fields.ptype;d[t]={id:BigInt(n),price:BigInt(i),monthInterval:a,planType:s}}return{id:n,plans:d,feeReceiverWallet:i,paused:a,acceptedPaymentType:s}}async buildSubscribeCyclePlanTx({walletAddress:e,planId:t,reference:n,paymentCoinType:i=SUBSCRIPTION_CONFIG[this.sdk.env].paymentCoinType,currentTx:a}){let s=await this.getConfig();tiny_invariant_default()(!s.paused,"Contract is paused"),tiny_invariant_default()(t in s.plans,"Invalid plan ID");let r=s.plans[t],d=r.price*BigInt(r.monthInterval),{tx:o,coinData:c}=await getSplitCoinForTx({account:e,amount:d.toString(),splits:[d.toString()],coinType:i,inheritTx:a},this.sdk.suiClient);o.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::subscription::subscribe_cycle_plan`,typeArguments:[i],arguments:[o.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),o.pure.u64(t),o.pure.string(n),c]}),o.setSender(e);let u=await getNeededGasFee(this.sdk.suiClient,o,e,0);return addGasFee({inheritTx:o,sender:e,feeAmount:u},this.sdk.suiClient)}async buildBuyMoreCUPlanTx({walletAddress:e,planId:t,reference:n,paidAmount:i,paymentCoinType:a=SUBSCRIPTION_CONFIG[this.sdk.env].paymentCoinType,currentTx:s}){let r=await this.getConfig();tiny_invariant_default()(!r.paused,"Contract is paused"),tiny_invariant_default()(t in r.plans,"Invalid plan ID");let{tx:d,coinData:o}=await getSplitCoinForTx({account:e,amount:i.toString(),splits:[i.toString()],coinType:a,inheritTx:s},this.sdk.suiClient);d.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::subscription::buy_more_cu`,typeArguments:[a],arguments:[d.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),d.pure.u64(t),d.pure.string(n),d.pure.u64(i),o]}),d.setSender(e);let c=await getNeededGasFee(this.sdk.suiClient,d,e,0);return addGasFee({inheritTx:d,sender:e,feeAmount:c},this.sdk.suiClient)}async buildSubscribePlanWithAdminTx({walletAddress:e,planId:t,reference:n,customAmount:i,paymentCoinType:a=SUBSCRIPTION_CONFIG[this.sdk.env].paymentCoinType,currentTx:s}){let r=await this.getConfig();tiny_invariant_default()(!r.paused,"Contract is paused");let{tx:d,coinData:o}=await getSplitCoinForTx({account:e,amount:i.toString(),splits:[i.toString()],coinType:a,inheritTx:s},this.sdk.suiClient);d.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::subscription::subscribe_plan_with_admin`,typeArguments:[a],arguments:[d.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId),d.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),d.pure.u64(t),d.pure.string(n),d.pure.u64(i),o]}),d.setSender(e);let c=await getNeededGasFee(this.sdk.suiClient,d,e,0);return addGasFee({inheritTx:d,sender:e,feeAmount:c},this.sdk.suiClient)}async buildAddPlanTx({adminAddress:e,planId:t,planType:n,monthInterval:i,price:a,currentTx:s}){let r=s||new transactions_namespaceObject.Transaction;r.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::config::add_plan`,typeArguments:[],arguments:[r.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),r.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId),r.pure.u64(t),r.pure.u8(n),r.pure.u8(i),r.pure.u64(a)]}),r.setSender(e);let d=await getNeededGasFee(this.sdk.suiClient,r,e,0);return addGasFee({inheritTx:r,sender:e,feeAmount:d},this.sdk.suiClient)}async buildUpdatePlanTx({adminAddress:e,planId:t,planType:n,monthInterval:i,price:a,currentTx:s}){let r=s||new transactions_namespaceObject.Transaction;r.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::config::update_plan`,typeArguments:[],arguments:[r.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),r.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId),r.pure.u64(BigInt(t)),r.pure.u8(n),r.pure.u8(i),r.pure.u64(a)]}),r.setSender(e);let d=await getNeededGasFee(this.sdk.suiClient,r,e,0);return addGasFee({inheritTx:r,sender:e,feeAmount:d},this.sdk.suiClient)}async buildRemovePlanTx({adminAddress:e,planId:t,currentTx:n}){let i=n||new transactions_namespaceObject.Transaction;i.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::config::remove_plan`,typeArguments:[],arguments:[i.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),i.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId),i.pure.u64(BigInt(t))]}),i.setSender(e);let a=await getNeededGasFee(this.sdk.suiClient,i,e,0);return addGasFee({inheritTx:i,sender:e,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiverWalletTx({adminAddress:e,newFeeReceiverWallet:t,currentTx:n}){let i=n||new transactions_namespaceObject.Transaction;i.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::config::update_fee_receiver`,typeArguments:[],arguments:[i.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),i.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId),i.pure.address(t)]}),i.setSender(e);let a=await getNeededGasFee(this.sdk.suiClient,i,e,0);return addGasFee({inheritTx:i,sender:e,feeAmount:a},this.sdk.suiClient)}async buildSetPausedTx({adminAddress:e,paused:t,currentTx:n}){let i=n||new transactions_namespaceObject.Transaction;i.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::config::set_paused`,typeArguments:[],arguments:[i.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),i.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId),i.pure.bool(t)]}),i.setSender(e);let a=await getNeededGasFee(this.sdk.suiClient,i,e,0);return addGasFee({inheritTx:i,sender:e,feeAmount:a},this.sdk.suiClient)}async buildSetAcceptedPaymentTypeTx({adminAddress:e,paymentCoinType:t,currentTx:n}){let i=n||new transactions_namespaceObject.Transaction;i.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::config::set_accepted_payment_type`,typeArguments:[t],arguments:[i.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),i.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId)]}),i.setSender(e);let a=await getNeededGasFee(this.sdk.suiClient,i,e,0);return addGasFee({inheritTx:i,sender:e,feeAmount:a},this.sdk.suiClient)}}const client_namespaceObject=require("@mysten/sui/client");class NoodlesPaySdk{network;env;_suiClient;boostingModule;subscriptionModule;constructor(e="mainnet",t="prod"){this.network=e,this.env=t;const n=(0,client_namespaceObject.getFullnodeUrl)(e);this._suiClient=new client_namespaceObject.SuiClient({url:n}),this.subscriptionModule=new SubscriptionModule(this),this.boostingModule=new BoostingModule(this)}get suiClient(){return this._suiClient}}for(var __rspack_i in exports.ADMIN_CAP_ID=__webpack_exports__.ADMIN_CAP_ID,exports.BOOSTING_PACKAGE_ID=__webpack_exports__.BOOSTING_PACKAGE_ID,exports.BoostingModule=__webpack_exports__.BoostingModule,exports.CONFIG_ID=__webpack_exports__.CONFIG_ID,exports.NoodlesPaySdk=__webpack_exports__.NoodlesPaySdk,exports.SUBSCRIPTION_CONFIG=__webpack_exports__.SUBSCRIPTION_CONFIG,exports.SubscriptionModule=__webpack_exports__.SubscriptionModule,__webpack_exports__)-1===["ADMIN_CAP_ID","BOOSTING_PACKAGE_ID","BoostingModule","CONFIG_ID","NoodlesPaySdk","SUBSCRIPTION_CONFIG","SubscriptionModule"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
|
1
|
+
"use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ADMIN_CAP_ID:()=>ADMIN_CAP_ID,BOOSTING_PACKAGE_ID:()=>BOOSTING_PACKAGE_ID,BoostingModule:()=>BoostingModule,CONFIG_ID:()=>CONFIG_ID,NoodlesPaySdk:()=>NoodlesPaySdk,SUBSCRIPTION_CONFIG:()=>SUBSCRIPTION_CONFIG,SubscriptionModule:()=>SubscriptionModule});const tiny_invariant_namespaceObject=require("@minswap/tiny-invariant");var tiny_invariant_default=__webpack_require__.n(tiny_invariant_namespaceObject);const transactions_namespaceObject=require("@mysten/sui/transactions"),utils_namespaceObject=require("@mysten/sui/utils"),BASE_BPS=1e4;function getSplitCoinsAfterFee(e,t){let n=BigInt(e),i=BigInt(1e4*Number(t));if(i===BigInt(0))return[n.toString()];let a=n*i/BigInt(1e4);return[(n-a).toString(),a.toString()]}function getAmountAfterFee(e,t){if(!t||0>=Number(t))return BigInt(e);let n=BigInt(e),i=BigInt(1e4*Number(t));if(i===BigInt(0))return n;let a=n*i/BigInt(1e4);return n-a}async function getNeededGasFee(e,t,n,i){let{effects:{gasUsed:a,status:s}}=await e.devInspectTransactionBlock({sender:n,transactionBlock:t});if("success"!==s.status)throw Error(`Transaction failed during dev inspect: ${s.error??""}`);let r=BigInt(a.computationCost)+BigInt(a.storageCost)-BigInt(a.storageRebate),d=BigInt(1e4*Number(i));return r*(BigInt(1e4)+d)/BigInt(1e4)}const SUI_TYPE="0x2::sui::SUI",SUI_FULL_TYPE="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",USDC_TOKEN_TYPE="0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",NATIVE_USDC_TOKEN_TYPE="0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",SUI_METADATA_OBJECT_ID="0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",CLOCK_OBJECT_ID="0x0000000000000000000000000000000000000000000000000000000000000006",SUI_ADDRESS_ZERO="0x0000000000000000000000000000000000000000000000000000000000000000";function isSuiCoinType(e){return"0x2::sui::SUI"===e||e===SUI_FULL_TYPE}const orderByKey=(e,t,n)=>{let i;if(e?.length){do{i=!1;for(let a=0;a<e.length-1;a++){let s=BigInt(e[a][t]),r=BigInt(e[a+1][t]);if("desc"===n?s<r:s>r){let t=e[a];e[a]=e[a+1],e[a+1]=t,i=!0}}}while(i);return e}},getCoinObjectIdsByAmount=async(e,t,n,i)=>{let a,s=[],r=!0;for(;r;)try{let n=await e.getCoins({owner:t,coinType:i,cursor:a});s=[...s,...n.data],r=n.hasNextPage,a=n.nextCursor}catch(e){console.error("Error fetching data:",e),r=!1}let d=orderByKey(s.map(e=>({...e,balance:e.balance})),"balance","desc")??[],o="0",c=[],u=[];for(let e of d)if(o=(BigInt(e.balance)+BigInt(o)).toString(10),c.push(e.coinObjectId),u.push(e),BigInt(o)>=BigInt(n))break;return{objectIds:c,balance:o,objectCoins:u}};async function addGasFee(e,t){let{inheritTx:n,sender:i,feeAmount:a,suiInputAmount:s}=e,r=n||new transactions_namespaceObject.Transaction;a>BigInt(0)&&r.setGasBudget(a);let{objectCoins:d}=await getCoinObjectIdsByAmount(t,i,(BigInt(s||"0")+a).toString(),SUI_FULL_TYPE);return r.setGasPayment(d.map(e=>({objectId:e.coinObjectId,version:e.version,digest:e.digest}))),r}const BOOSTING_PACKAGE_ID="0x25fa0eb553dd69fa6a8028f73a38f1df7f289fa88a58ed3d7dc5a5360155bb19",CONFIG_ID="0x8b1a8ac6e34688cd8f8f8e5fefa9d5fb9e1ff74d2f132f8e208ae5ac9cc530bb",ADMIN_CAP_ID="0x13d101f44a0710a5475bec5f492a87b80e03d92d1cf540f26096f65850b23d26";class BoostingModule{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({id:CONFIG_ID,options:{showContent:!0}});tiny_invariant_default()(e.data?.content,"Config object not found or has no content"),tiny_invariant_default()(e.data?.content.dataType==="moveObject","Config object is not a Move object");let t=e.data.content.fields,n=t.id.id,i=t.fee_receiver,a=t.tiers.fields.contents,s={};for(let e of a){let t=e.fields.key,n=e.fields.value.fields.duration,i=e.fields.value.fields.amount,a=e.fields.value.fields.point,r=e.fields.value.fields.original_amount;s[t]={duration:BigInt(n),amount:BigInt(i),point:BigInt(a),originalAmount:BigInt(r)}}return{id:n,receiverAddress:i,tiers:s}}async buildPayBoostingTx({walletAddress:e,tierId:t,boostingCoinType:n,currentTx:i}){let a=await this.getConfig();tiny_invariant_default()(t in a.tiers,"Invalid tier ID");let s=a.tiers[t].amount,r=i||new transactions_namespaceObject.Transaction,d=r.splitCoins(r.gas,[r.pure.u64(s)]);r.moveCall({target:`${BOOSTING_PACKAGE_ID}::boosting::pay`,typeArguments:[(0,utils_namespaceObject.normalizeStructTag)(n)],arguments:[r.object(CONFIG_ID),r.pure.u64(t),d]}),r.setSender(e);let o=await getNeededGasFee(this.sdk.suiClient,r,e,0);return addGasFee({inheritTx:r,sender:e,feeAmount:o},this.sdk.suiClient)}async buildAddTierTx({adminAddress:e,tierId:t,duration:n,point:i,originalAmount:a,amount:s,currentTx:r}){let d=r||new transactions_namespaceObject.Transaction;d.moveCall({target:`${BOOSTING_PACKAGE_ID}::config::add_tier`,typeArguments:[],arguments:[d.object(CONFIG_ID),d.object(ADMIN_CAP_ID),d.pure.u64(t),d.pure.u64(i),d.pure.u64(n),d.pure.u64(a),d.pure.u64(s)]}),d.setSender(e);let o=await getNeededGasFee(this.sdk.suiClient,d,e,0);return addGasFee({inheritTx:d,sender:e,feeAmount:o},this.sdk.suiClient)}async buildUpdateTierTx({adminAddress:e,tierId:t,duration:n,amount:i,originalAmount:a,point:s,currentTx:r}){let d=r||new transactions_namespaceObject.Transaction;d.moveCall({target:`${BOOSTING_PACKAGE_ID}::config::update_tier`,typeArguments:[],arguments:[d.object(CONFIG_ID),d.object(ADMIN_CAP_ID),d.pure.u64(t),d.pure.u64(n),d.pure.u64(i),d.pure.u64(s),d.pure.u64(a)]}),d.setSender(e);let o=await getNeededGasFee(this.sdk.suiClient,d,e,0);return addGasFee({inheritTx:d,sender:e,feeAmount:o},this.sdk.suiClient)}async buildRemoveTierTx({adminAddress:e,tierId:t,currentTx:n}){let i=n||new transactions_namespaceObject.Transaction;i.moveCall({target:`${BOOSTING_PACKAGE_ID}::config::remove_tier`,typeArguments:[],arguments:[i.object(CONFIG_ID),i.object(ADMIN_CAP_ID),i.pure.u64(t)]}),i.setSender(e);let a=await getNeededGasFee(this.sdk.suiClient,i,e,0);return addGasFee({inheritTx:i,sender:e,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiver({adminAddress:e,newReceiverAddress:t,currentTx:n}){let i=n||new transactions_namespaceObject.Transaction;i.moveCall({target:`${BOOSTING_PACKAGE_ID}::config::update_fee_receiver`,typeArguments:[],arguments:[i.object(CONFIG_ID),i.object(ADMIN_CAP_ID),i.pure.address(t)]}),i.setSender(e);let a=await getNeededGasFee(this.sdk.suiClient,i,e,0);return addGasFee({inheritTx:i,sender:e,feeAmount:a},this.sdk.suiClient)}async buildPayBoostingWithAdminTx({walletAddress:e,tierId:t,customAmount:n,boostingCoinType:i,currentTx:a}){let s=a||new transactions_namespaceObject.Transaction,r=s.splitCoins(s.gas,[s.pure.u64(n)]);s.moveCall({target:`${BOOSTING_PACKAGE_ID}::boosting::pay_with_admin`,typeArguments:[(0,utils_namespaceObject.normalizeStructTag)(i)],arguments:[s.object(ADMIN_CAP_ID),s.object(CONFIG_ID),s.pure.u64(t),s.pure.u64(n),r]}),s.setSender(e);let d=await getNeededGasFee(this.sdk.suiClient,s,e,0);return addGasFee({inheritTx:s,sender:e,feeAmount:d},this.sdk.suiClient)}}async function getSplitCoinForTx(e,t){let{account:n,amount:i,splits:a,coinType:s,inheritTx:r,inspecTransaction:d,isSponsored:o=!1}=e,c=r??new transactions_namespaceObject.Transaction,{objectIds:u,balance:_}=await getCoinObjectIdsByAmount(t,n,i,s);if(BigInt(_)<BigInt(i))throw Error(`Insufficient balance for type ${s}. Required: ${i}, Available: ${_}`);if(0===u.length)throw Error(`No coins found for type ${s} with sufficient balance. Required: ${i}`);let l=u[0];if((0,utils_namespaceObject.normalizeStructTag)(s)===(0,utils_namespaceObject.normalizeStructTag)(SUI_FULL_TYPE)&&!o){let e;return d?(u.length>1&&c.mergeCoins(c.object(l),u.slice(1).map(e=>c.object(e))),e=c.splitCoins(c.object(l),a)):e=c.splitCoins(c.gas,a),{tx:c,coinData:e}}u.length>1&&c.mergeCoins(c.object(l),u.slice(1).map(e=>c.object(e)));let I=c.splitCoins(c.object(l),a);return{tx:c,coinData:I}}const SUBSCRIPTION_CONFIG={prod:{packageId:"0x3dd678c250a667f1551bc4b9e35fd070896f4775dd2900d5cb2910d2aea0b068",configId:"0x3eb7bd15f61b7cc1a9fd36151e9c3d05aa37bfadb0a58c3a26a6c02c2e99f3ca",adminCapId:"0xf375fcb3d95934143766cab2028ab49441fa04ef2ce27c08c01004c455bcbad4",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"},staging:{packageId:"0xa83cd093ce5142649adae10d21fe87d55fa2df4e52a4292c77ba039bb12bfe67",configId:"0x19fb8f91946e58c068fa4238bdd7a531216a0c4dcfaa279a8a02c60cb02f6711",adminCapId:"0xd8139544d054702dfab6de4e9c55f162c8a6f30465935af56cffed99c5e1c2bd",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"}};class SubscriptionModule{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({id:SUBSCRIPTION_CONFIG[this.sdk.env].configId,options:{showContent:!0}});tiny_invariant_default()(e.data,"Config object not found"),tiny_invariant_default()(e.data.content,"Config object has no content"),tiny_invariant_default()(e.data?.content.dataType==="moveObject","Config object is not a Move object");let t=e.data.content.fields,n=t.id.id,i=t.fee_receiver,a=t.paused,s=t.accepted_payment_type,r=t.plans.fields.contents,d={};for(let e of r){let t=e.fields.key,n=e.fields.value.fields.id,i=e.fields.value.fields.price,a=e.fields.value.fields.month_interval,s=e.fields.value.fields.ptype;d[t]={id:BigInt(n),price:BigInt(i),monthInterval:a,planType:s}}return{id:n,plans:d,feeReceiverWallet:i,paused:a,acceptedPaymentType:s}}async buildSubscribeCyclePlanTx({walletAddress:e,planId:t,reference:n,paymentCoinType:i=SUBSCRIPTION_CONFIG[this.sdk.env].paymentCoinType,currentTx:a}){let s=await this.getConfig();tiny_invariant_default()(!s.paused,"Contract is paused"),tiny_invariant_default()(t in s.plans,"Invalid plan ID");let r=s.plans[t],d=r.price*BigInt(r.monthInterval),{tx:o,coinData:c}=await getSplitCoinForTx({account:e,amount:d.toString(),splits:[d.toString()],coinType:i,inheritTx:a},this.sdk.suiClient);o.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::subscription::subscribe_cycle_plan`,typeArguments:[i],arguments:[o.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),o.pure.u64(t),o.pure.string(n),c]}),o.setSender(e);let u=await getNeededGasFee(this.sdk.suiClient,o,e,0);return addGasFee({inheritTx:o,sender:e,feeAmount:u},this.sdk.suiClient)}async buildBuyMoreCUPlanTx({walletAddress:e,planId:t,reference:n,paidAmount:i,paymentCoinType:a=SUBSCRIPTION_CONFIG[this.sdk.env].paymentCoinType,currentTx:s}){let r=await this.getConfig();tiny_invariant_default()(!r.paused,"Contract is paused"),tiny_invariant_default()(t in r.plans,"Invalid plan ID");let{tx:d,coinData:o}=await getSplitCoinForTx({account:e,amount:i.toString(),splits:[i.toString()],coinType:a,inheritTx:s},this.sdk.suiClient);d.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::subscription::buy_more_cu`,typeArguments:[a],arguments:[d.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),d.pure.u64(t),d.pure.string(n),d.pure.u64(i),o]}),d.setSender(e);let c=await getNeededGasFee(this.sdk.suiClient,d,e,0);return addGasFee({inheritTx:d,sender:e,feeAmount:c},this.sdk.suiClient)}async buildSubscribePlanWithAdminTx({walletAddress:e,planId:t,reference:n,customAmount:i,paymentCoinType:a=SUBSCRIPTION_CONFIG[this.sdk.env].paymentCoinType,currentTx:s}){let r=await this.getConfig();tiny_invariant_default()(!r.paused,"Contract is paused");let{tx:d,coinData:o}=await getSplitCoinForTx({account:e,amount:i.toString(),splits:[i.toString()],coinType:a,inheritTx:s},this.sdk.suiClient);d.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::subscription::subscribe_plan_with_admin`,typeArguments:[a],arguments:[d.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId),d.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),d.pure.u64(t),d.pure.string(n),d.pure.u64(i),o]}),d.setSender(e);let c=await getNeededGasFee(this.sdk.suiClient,d,e,0);return addGasFee({inheritTx:d,sender:e,feeAmount:c},this.sdk.suiClient)}async buildAddPlanTx({adminAddress:e,planId:t,planType:n,monthInterval:i,price:a,currentTx:s}){let r=s||new transactions_namespaceObject.Transaction;r.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::config::add_plan`,typeArguments:[],arguments:[r.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),r.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId),r.pure.u64(t),r.pure.u8(n),r.pure.u8(i),r.pure.u64(a)]}),r.setSender(e);let d=await getNeededGasFee(this.sdk.suiClient,r,e,0);return addGasFee({inheritTx:r,sender:e,feeAmount:d},this.sdk.suiClient)}async buildUpdatePlanTx({adminAddress:e,planId:t,planType:n,monthInterval:i,price:a,currentTx:s}){let r=s||new transactions_namespaceObject.Transaction;r.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::config::update_plan`,typeArguments:[],arguments:[r.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),r.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId),r.pure.u64(BigInt(t)),r.pure.u8(n),r.pure.u8(i),r.pure.u64(a)]}),r.setSender(e);let d=await getNeededGasFee(this.sdk.suiClient,r,e,0);return addGasFee({inheritTx:r,sender:e,feeAmount:d},this.sdk.suiClient)}async buildRemovePlanTx({adminAddress:e,planId:t,currentTx:n}){let i=n||new transactions_namespaceObject.Transaction;i.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::config::remove_plan`,typeArguments:[],arguments:[i.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),i.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId),i.pure.u64(BigInt(t))]}),i.setSender(e);let a=await getNeededGasFee(this.sdk.suiClient,i,e,0);return addGasFee({inheritTx:i,sender:e,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiverWalletTx({adminAddress:e,newFeeReceiverWallet:t,currentTx:n}){let i=n||new transactions_namespaceObject.Transaction;i.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::config::update_fee_receiver`,typeArguments:[],arguments:[i.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),i.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId),i.pure.address(t)]}),i.setSender(e);let a=await getNeededGasFee(this.sdk.suiClient,i,e,0);return addGasFee({inheritTx:i,sender:e,feeAmount:a},this.sdk.suiClient)}async buildSetPausedTx({adminAddress:e,paused:t,currentTx:n}){let i=n||new transactions_namespaceObject.Transaction;i.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::config::set_paused`,typeArguments:[],arguments:[i.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),i.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId),i.pure.bool(t)]}),i.setSender(e);let a=await getNeededGasFee(this.sdk.suiClient,i,e,0);return addGasFee({inheritTx:i,sender:e,feeAmount:a},this.sdk.suiClient)}async buildSetAcceptedPaymentTypeTx({adminAddress:e,paymentCoinType:t,currentTx:n}){let i=n||new transactions_namespaceObject.Transaction;i.moveCall({target:`${SUBSCRIPTION_CONFIG[this.sdk.env].packageId}::config::set_accepted_payment_type`,typeArguments:[t],arguments:[i.object(SUBSCRIPTION_CONFIG[this.sdk.env].configId),i.object(SUBSCRIPTION_CONFIG[this.sdk.env].adminCapId)]}),i.setSender(e);let a=await getNeededGasFee(this.sdk.suiClient,i,e,0);return addGasFee({inheritTx:i,sender:e,feeAmount:a},this.sdk.suiClient)}}const jsonRpc_namespaceObject=require("@mysten/sui/jsonRpc");class NoodlesPaySdk{network;env;_suiClient;boostingModule;subscriptionModule;constructor(e="mainnet",t="prod"){this.network=e,this.env=t;const n=(0,jsonRpc_namespaceObject.getJsonRpcFullnodeUrl)(e);this._suiClient=new jsonRpc_namespaceObject.SuiJsonRpcClient({network:e,url:n}),this.subscriptionModule=new SubscriptionModule(this),this.boostingModule=new BoostingModule(this)}get suiClient(){return this._suiClient}}for(var __rspack_i in exports.ADMIN_CAP_ID=__webpack_exports__.ADMIN_CAP_ID,exports.BOOSTING_PACKAGE_ID=__webpack_exports__.BOOSTING_PACKAGE_ID,exports.BoostingModule=__webpack_exports__.BoostingModule,exports.CONFIG_ID=__webpack_exports__.CONFIG_ID,exports.NoodlesPaySdk=__webpack_exports__.NoodlesPaySdk,exports.SUBSCRIPTION_CONFIG=__webpack_exports__.SUBSCRIPTION_CONFIG,exports.SubscriptionModule=__webpack_exports__.SubscriptionModule,__webpack_exports__)-1===["ADMIN_CAP_ID","BOOSTING_PACKAGE_ID","BoostingModule","CONFIG_ID","NoodlesPaySdk","SUBSCRIPTION_CONFIG","SubscriptionModule"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
|
package/dist/pay.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SuiJsonRpcClient } from '@mysten/sui/jsonRpc';
|
|
2
2
|
import { Transaction } from '@mysten/sui/transactions';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -181,7 +181,7 @@ export declare class NoodlesPaySdk {
|
|
|
181
181
|
readonly boostingModule: BoostingModule;
|
|
182
182
|
readonly subscriptionModule: SubscriptionModule;
|
|
183
183
|
constructor(network?: Network, env?: Environment);
|
|
184
|
-
get suiClient():
|
|
184
|
+
get suiClient(): SuiJsonRpcClient;
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
/**
|