@minswap/noodles-sdk 0.0.60 → 0.0.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs 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_modules__={"./src/constant/sui.ts"(e,t,o){o.d(t,{IC:()=>s,N3:()=>n,P9:()=>a,VV:()=>c,lM:()=>i,nD:()=>r,qb:()=>u,tC:()=>_});let r="0x2::sui::SUI",a="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",n="0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",i="0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",s="0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",c="0x0000000000000000000000000000000000000000000000000000000000000006",u="0x0000000000000000000000000000000000000000000000000000000000000000";function _(e){return e===r||e===a}},"./src/libs/pyth.ts"(e,t,o){o.d(t,{L:()=>n,j:()=>i});var r,a,n,i,s=o("@mysten/sui/client"),c=o("@mysten/sui/utils");let u=require("@pythnetwork/pyth-sui-js");(r=n||(n={})).LAST_PACKAGE_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",r.newHolder=function(e){return e.moveCall({target:`${r.LAST_PACKAGE_ID}::oracle::new_holder`,typeArguments:[],arguments:[]})},r.getPrice=function(e){let{txb:t,coinOracleId:o,holder:a,coinPriceId:n}=e;t.moveCall({target:`${r.LAST_PACKAGE_ID}::pyth::get_price`,typeArguments:[],arguments:[t.object(o),a,t.object(n),t.object(c.SUI_CLOCK_OBJECT_ID)]})},(a=i||(i={})).PYTH_URLS=["https://hermes.pyth.network"],a.WORMHOLE_STATE_ID="0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",a.PYTH_STATE_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",a.newPythConnections=function(e){return e||(e=a.PYTH_URLS),e.map(e=>new u.SuiPriceServiceConnection(e,{timeout:3e3}))},a.newPythClient=function(e){return e||(e=new s.SuiClient({url:"https://fullnode.mainnet.sui.io:443"})),new u.SuiPythClient(e,a.PYTH_STATE_ID,a.WORMHOLE_STATE_ID)},a.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}},"./src/libs/token-type.ts"(e,t,o){o.d(t,{YY:()=>i,eP:()=>n,nr:()=>a});var r=o("./src/constant/sui.ts");function a(e){return e===r.nD?r.P9:e}function n(e){return e===r.P9?r.nD:e}function i(e){return e===r.P9||e===r.nD}},"./src/meta-aggregator/aggregator/aggregator.ts"(e,t,o){var r,a;o.d(t,{u:()=>r}),(a=r||(r={})).MAX_AMOUNT_IN="18446744073709551615",a.LAST_PACKAGE_ID="0x7e57926855b32baa3b3cabed89380b8d415606fdedadc18e58bd1ef1e60aee48",a.openSwap=function(e){let{tx:t,expectedAmountOut:o,minAmountOut:r,coinInType:n,coinOutType:i,inputCoin:s,aggregatorFeeBps:c,aggregatorFeeRecipient:u,partnerFeeRecipient:_,partnerFeeBps:l}=e,[p]=t.moveCall({target:`${a.LAST_PACKAGE_ID}::aggregator::open_swap`,typeArguments:[n,i],arguments:[t.pure.u64(o),t.pure.u64(r),s,t.pure.u32(c),t.pure.address(u),t.pure.u32(l??0),t.pure.option("address",_)]});return p},a.closeSwap=function(e){let{tx:t,coinOutType:o,swapSession:r}=e,[n]=t.moveCall({target:`${a.LAST_PACKAGE_ID}::aggregator::close_swap`,typeArguments:[o],arguments:[r]});return n}},"./src/meta-aggregator/client/bluefin7k-client.ts"(e,t,o){o.r(t),o.d(t,{Bluefin7kClient:()=>i});var r=o("@bluefin-exchange/bluefin7k-aggregator-sdk"),a=o("./src/meta-aggregator/converter-route/sevenk-aggregator-converter.ts"),n=o("./src/meta-aggregator/client/error.ts");class i{options;kind="SEVENK";constructor(e,t){this.options=e,e.apiKey&&r.Config.setApiKey(e.apiKey),r.Config.setSuiClient(t)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)a.m.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...a.m.SUPPORTED_PROTOCOLS);let o=await (0,r.getQuote)({tokenIn:e.coinTypeIn,tokenOut:e.coinTypeOut,amountIn:e.amountIn,sources:t,excludedPools:this.options.excludedPools,targetPools:this.options.targetPools});return n.u.assert(!!o,"No quote found",n.j.QUOTE_NOT_FOUND,{provider:this.kind}),{sourceRoute:"SEVENK",rawRoute:o,amountIn:o.swapAmountWithDecimal,amountOut:o.returnAmountWithDecimal,coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}},"./src/meta-aggregator/client/cetus-client.ts"(e,t,o){o.r(t),o.d(t,{CetusClient:()=>c});var r=o("@cetusprotocol/aggregator-sdk"),a=o("./src/libs/pyth.ts"),n=o("./src/meta-aggregator/converter-route/cetus-aggregator-converter.ts"),i=o("./src/meta-aggregator/client/error.ts");let s=a.j.PYTH_URLS;class c{options;kind="CETUS";cetusClient;constructor(e,t,o){this.options=e,this.cetusClient=new r.AggregatorClient({apiKey:e.apiKey,client:o,endpoint:e.api,env:r.Env.Mainnet,pythUrls:t.hermesApi?t.hermesApi:s})}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)n.M.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...n.M.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 i.u.assert(!!o,"No quote found",i.j.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}}}},"./src/meta-aggregator/client/error.ts"(e,t,o){o.d(t,{j:()=>a,u:()=>n});var r,a=((r={})[r.UNKNOWN=1e3]="UNKNOWN",r[r.TIMEOUT=1001]="TIMEOUT",r[r.PROVIDER_NOT_FOUND=1002]="PROVIDER_NOT_FOUND",r[r.PROVIDER_NOT_SUPPORTED=1003]="PROVIDER_NOT_SUPPORTED",r[r.INVALID_QUOTE=1004]="INVALID_QUOTE",r[r.QUOTE_NOT_FOUND=1005]="QUOTE_NOT_FOUND",r[r.INVALID_SIGNER_ADDRESS=1006]="INVALID_SIGNER_ADDRESS",r[r.PROVIDER_NOT_SUPPORT_SWAP=1007]="PROVIDER_NOT_SUPPORT_SWAP",r[r.SIMULATION_FAILED=1008]="SIMULATION_FAILED",r);class n 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 n(t??"Assertion failed",o,r)}}},"./src/meta-aggregator/client/flowx-client.ts"(e,t,o){o.r(t),o.d(t,{FlowxClient:()=>n});var r=o("@flowx-finance/sdk"),a=o("./src/meta-aggregator/converter-route/flowx-aggregator-converter.ts");class n{options;kind="FLOWX";quoter;constructor(e){this.options=e,this.quoter=new r.AggregatorQuoter("mainnet",e.apiKey)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)a.m.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...a.m.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}}}},"./src/meta-aggregator/converter-route/cetus-aggregator-converter.ts"(e,t,o){o.d(t,{M:()=>r});var r,a=o("@cetusprotocol/aggregator-sdk"),n=o("@minswap/tiny-invariant"),i=o.n(n),s=o("./src/meta-aggregator/aggregator/aggregator.ts"),c=o("./src/meta-aggregator/external/metastable.ts"),u=o("./src/meta-aggregator/router/types.ts");!function(e){let t=[a.CETUS,a.KRIYA,a.FLOWXV2,a.FLOWXV3,a.KRIYAV3,a.TURBOS,a.AFTERMATH,a.HAEDAL,a.VOLO,a.AFSUI,a.BLUEMOVE,a.DEEPBOOKV3,a.SCALLOP,a.SUILEND,a.BLUEFIN,a.HAEDALPMM,a.ALPHAFI,a.SPRINGSUI,a.STEAMM,a.METASTABLE,a.OBRIC,a.HAWAL,a.STEAMM_OMM,a.MOMENTUM,a.STEAMM_OMM_V2,a.MAGMA,a.SEVENK,a.HAEDALHMMV2,a.FULLSAIL,a.CETUSDLMM,a.FERRADLMM,a.FERRACLMM];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 n(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 _(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 a=e.paths[r],i=n(a);t.get(a.from)===r&&(i.amountIn=s.u.MAX_AMOUNT_IN),o.push(i)}return o}e.TO_META_AGGREGATOR_PATH_FN_MAP={[a.METASTABLE]:e=>{let t=r(e),o=e.extendedDetails,a=e.direction?e.target:e.from;i()(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 c.b.MetaCoinType.SUPER_SUI:return i()(o.metastable_registry_id,`METASTABLE_SUPER_SUI protocol requires 'metastable_registry_id' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:u.S.METASTABLE,metaCoin:a,registryId:o.metastable_registry_id};case c.b.MetaCoinType.MUSD:return i()(o.metastable_price_seed,`METASTABLE_MUSD protocol requires 'metastable_price_seed' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:u.S.METASTABLE,metaCoin:a,pythPriceFeedIdMeta:o.metastable_price_seed};case c.b.MetaCoinType.METH:return i()(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:u.S.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.`)}},[a.DEEPBOOKV3]:e=>({...r(e),protocol:u.S.DEEPBOOK_V3}),[a.AFTERMATH]:e=>{let t=e.extendedDetails;return i()(t?.aftermath_lp_supply_type,`AFTERMATH_CPMM protocol requires 'aftermath_lp_type' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:u.S.AFTERMATH_CPMM,coinLpType:t.aftermath_lp_supply_type}},[a.FLOWXV3]:e=>({...r(e),protocol:u.S.FLOWX_CLMM,poolFeeRate:String(1e6*e.feeRate)}),[a.HAEDALPMM]:e=>{let t=e.extendedDetails;return i()(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:u.S.HAEDAL_CPMM,pythPriceFeedIdA:t.haedal_pmm_base_price_seed,pythPriceFeedIdB:t.haedal_pmm_quote_price_seed}},[a.HAEDALHMMV2]:e=>{let t=e.extendedDetails;return i()(t?.haedalhmmv2_base_price_seed,`HAEDAL_CPMM_V2 protocol requires 'haedal_pyth_price_base_id' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:u.S.HAEDAL_CPMM_V2,pythPriceFeedIdBase:t.haedalhmmv2_base_price_seed}},[a.SCALLOP]:e=>(i()(e.extendedDetails?.scallop_scoin_treasury,`SCALLOP protocol requires 'scallop_scoin_treasury' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:u.S.SCALLOP,scoinTreasury:e.extendedDetails.scallop_scoin_treasury}),[a.STEAMM]:e=>{let t=e.extendedDetails;return i()(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:u.S.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}},[a.STEAMM_OMM]:e=>{let t=e.extendedDetails;return i()(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:u.S.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)}},[a.STEAMM_OMM_V2]:e=>{let t=e.extendedDetails;return i()(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:u.S.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)}},[a.OBRIC]:e=>{let t=r(e);if(e.extendedDetails?.obric_coin_a_price_id&&e.extendedDetails?.obric_coin_b_price_id)return{...t,protocol:u.S.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:u.S.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}.`)},[a.SEVENK]:e=>{let t=e.extendedDetails;return i()(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:u.S.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}},[a.TURBOS]:e=>(i()(e.extendedDetails?.turbos_fee_type,`TURBOS_CLMM protocol requires 'coinFeeType' parameter for pool ${e.id}. Provide it via the parametersMap argument.`),{...r(e),protocol:u.S.TURBOS_CLMM,coinFeeType:e.extendedDetails.turbos_fee_type}),[a.AFSUI]:e=>({...r(e),protocol:u.S.AFTERMATH_LSD}),[a.ALPHAFI]:e=>({...r(e),protocol:u.S.ALPHAFI_LSD}),[a.BLUEFIN]:e=>({...r(e),protocol:u.S.BLUEFIN_CLMM}),[a.BLUEMOVE]:e=>({...r(e),protocol:u.S.BLUEMOVE_CPMM}),[a.CETUS]:e=>({...r(e),protocol:u.S.CETUS_CLMM}),[a.CETUSDLMM]:e=>({...r(e),protocol:u.S.CETUS_DLMM}),[a.FERRACLMM]:e=>({...r(e),protocol:u.S.FERRA_CLMM}),[a.FERRADLMM]:e=>({...r(e),protocol:u.S.FERRA_DLMM}),[a.FLOWXV2]:e=>({...r(e),protocol:u.S.FLOWX_CPMM}),[a.FULLSAIL]:e=>({...r(e),protocol:u.S.FULLSAIL_CLMM}),[a.HAEDAL]:e=>({...r(e),protocol:u.S.HAEDAL_LSD}),[a.HAWAL]:e=>({...r(e),protocol:u.S.HAEDAL_LSD_WAL}),[a.KRIYA]:e=>({...r(e),protocol:u.S.KRIYA_CPMM}),[a.KRIYAV3]:e=>({...r(e),protocol:u.S.KRIYA_CLMM}),[a.MAGMA]:e=>({...r(e),protocol:u.S.MAGMA_CLMM}),[a.MOMENTUM]:e=>({...r(e),protocol:u.S.MOMENTUM_CLMM}),[a.SUILEND]:e=>({...r(e),protocol:u.S.SPRINGSUI}),[a.SPRINGSUI]:e=>({...r(e),protocol:u.S.SPRINGSUI}),[a.VOLO]:e=>({...r(e),protocol:u.S.VOLO})},e.toMetaAggregatorPath=n,e.toMetaAggregatorPaths=_,e.convert=function(e){return{coinInType:e.paths[0].from,coinOutType:e.paths[e.paths.length-1].target,amountOut:e.amountOut.toString(),tradePaths:_(e)}}}(r||(r={}))},"./src/meta-aggregator/converter-route/flowx-aggregator-converter.ts"(e,t,o){o.d(t,{m:()=>r});var r,a=o("@flowx-finance/sdk"),n=o("@minswap/tiny-invariant"),i=o.n(n),s=o("./src/meta-aggregator/aggregator/aggregator.ts"),c=o("./src/meta-aggregator/router/types.ts");!function(e){let t=[a.Protocol.HOP_FUN,a.Protocol.FLOWX_PMM,a.Protocol.DEEPBOOK,a.Protocol.IPX_TIDE,a.Protocol.METASTABLE];e.SUPPORTED_PROTOCOLS=Object.values(a.Protocol).filter(e=>!t.includes(e));let o={[a.Protocol.FLOWX_V2]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:c.S.FLOWX_CPMM}),[a.Protocol.FLOWX_V3]:t=>(i()(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.FLOWX_CLMM,poolFeeRate:t.poolFee.toString()}),[a.Protocol.CETUS]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.CETUS_CLMM}),[a.Protocol.CETUS_DLMM]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.CETUS_DLMM}),[a.Protocol.AFTERMATH]:t=>(i()(t.lpCoinType,`AFTERMATH protocol requires lpCoinType for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:c.S.AFTERMATH_CPMM,coinLpType:t.lpCoinType}),[a.Protocol.AFTERMATH_LSD]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:c.S.AFTERMATH_LSD}),[a.Protocol.ALPHA_FI]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:c.S.ALPHAFI_LSD}),[a.Protocol.BLUEFIN]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.BLUEFIN_CLMM}),[a.Protocol.BLUEMOVE]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:c.S.BLUEMOVE_CPMM}),[a.Protocol.DEEPBOOK_V3]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.DEEPBOOK_V3}),[a.Protocol.FERRA_CLMM]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.FERRA_CLMM}),[a.Protocol.FERRA_DLMM]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.FERRA_DLMM}),[a.Protocol.FULL_SAIL]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.FULLSAIL_CLMM}),[a.Protocol.HAEDAL]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:c.S.HAEDAL_LSD}),[a.Protocol.HAEDAL_PMM]:t=>{let o=t.oracles;return i()(o&&o.length>=2,`HAEDAL_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.HAEDAL_CPMM,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId}},[a.Protocol.KRIYA_DEX]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.KRIYA_CPMM}),[a.Protocol.KRIYA_V3]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.KRIYA_CLMM}),[a.Protocol.MAGMA_FINANCE]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.MAGMA_CLMM}),[a.Protocol.MAGMA_ALMM]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.MAGMA_ALMM}),[a.Protocol.MOMENTUM_FINANCE]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.MOMENTUM_CLMM}),[a.Protocol.OBRIC]:t=>(i()(t.xPriceId&&t.yPriceId,`OBRIC protocol requires price feeds for pool ${t.pool.id}`),i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.OBRIC,priceInfoObjIdA:t.xPriceId,priceInfoObjIdB:t.yPriceId}),[a.Protocol.SPRING_SUI]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:c.S.SPRINGSUI}),[a.Protocol.STEAMM]:t=>{i()(void 0!==t.bankXInfo&&void 0!==t.bankYInfo,`STEAMM protocol requires bank info for pool ${t.pool.id}`),i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),i()(void 0!==t.quoterType,`quoterType is required for pool ${t.pool.id}`),i()(void 0!==t.poolInfo,`poolInfo is required for pool ${t.pool.id}`),i()(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:c.S.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":{i()(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 i()(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:c.S.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}`)}},[a.Protocol.SEVENK_V1]:t=>{let o=t.oracles;return i()(o&&o.length>=2,`SEVENK_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),i()(t.poolStructTag,`SEVENK_V1 protocol requires poolStructTag for pool ${t.pool.id}`),i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.SEVENK_CPMM,coinLpType:t.poolStructTag,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId,oracleConfigA:o[0].oracleId??"",oracleConfigB:o[1].oracleId??""}},[a.Protocol.SUI_REWARDS]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.SRM_CPMM}),[a.Protocol.TURBOS_FIANCE]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.TURBOS_CLMM,coinFeeType:t.poolStructTag?t.poolStructTag.split("<")[1].split(",")[2].trim().replace(">",""):""}),[a.Protocol.VOLO_LSD]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:c.S.VOLO}),[a.Protocol.TRADEPORT]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),i()(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,poolFeeRate:t.poolFee.toString(),protocol:c.S.TRADEPORT_CLMM}),[a.Protocol.TURBOS_FUN]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.TURBOS_FUN}),[a.Protocol.BLUEMOVE_FUN]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,expectedAmountOut:t.amountOut.toString(),protocol:c.S.MOVEPUMP}),[a.Protocol.SEVEN_K_FUN]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.SEVENK_FUN}),[a.Protocol.DIPCOIN]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.DIP_CPMM}),[a.Protocol.BOLT]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.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=s.u.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)}}}(r||(r={}))},"./src/meta-aggregator/converter-route/sevenk-aggregator-converter.ts"(e,t,o){o.d(t,{m:()=>r});var r,a=o("@minswap/tiny-invariant"),n=o.n(a),i=o("@mysten/sui/utils"),s=o("./src/libs/token-type.ts"),c=o("./src/meta-aggregator/aggregator/aggregator.ts"),u=o("./src/meta-aggregator/router/types.ts");!function(e){let t=new Set(["bluefinx"]);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=>{n()(e.extra?.poolStructTag,"Aftermath protocol requires poolStructTag");let[t]=l(e.extra.poolStructTag);return{..._(e),protocol:u.S.AFTERMATH_CPMM,coinLpType:t}},flowx_v3:e=>{n()(e.extra?.swapFeeRate,"flowx_v3 protocol requires swapFeeRate");let t=e.extra.swapFeeRate;return{..._(e),protocol:u.S.FLOWX_CLMM,poolFeeRate:t}},turbos:e=>{n()(e.extra?.poolStructTag,"turbos protocol requires poolStructTag");let[t,o,r]=l(e.extra.poolStructTag);return{..._(e),protocol:u.S.TURBOS_CLMM,coinFeeType:r}},obric:e=>(n()(e.extra?.oracles,"obric protocol requires oracles"),{..._(e),protocol:u.S.OBRIC,pythPriceFeedIdA:p(e.extra.oracles[0]),pythPriceFeedIdB:p(e.extra.oracles[1])}),haedal_pmm:e=>(n()(e.extra.oracles,"haedal_pmm protocol requires oracles"),{..._(e),protocol:u.S.HAEDAL_CPMM,pythPriceFeedIdA:p(e.extra.oracles[0]),pythPriceFeedIdB:p(e.extra.oracles[1])}),sevenk_v1:e=>{n()(e.extra?.poolStructTag,"sevenk_v1 protocol requires poolStructTag"),n()(e.extra?.oracleConfigX,"sevenk_v1 protocol requires oracleConfigX"),n()(e.extra?.oracleConfigY,"sevenk_v1 protocol requires oracleConfigY");let t=e.extra.oracles?.[0]?.Pyth?.bytes,o=e.extra.oracles?.[1]?.Pyth?.bytes;n()(t,"sevenk_v1 protocol requires pythPriceFeedIdA"),n()(o,"sevenk_v1 protocol requires pythPriceFeedIdB");let[r,a,i]=l(e.extra.poolStructTag);return{..._(e),protocol:u.S.SEVENK_CPMM,coinLpType:i,pythPriceFeedIdA:t,pythPriceFeedIdB:o,oracleConfigA:e.extra.oracleConfigX,oracleConfigB:e.extra.oracleConfigY}},steamm:e=>{n()(e.extra?.poolStructTag,"steamm protocol requires poolStructTag"),n()(e.extra?.bankAStructTag,"steamm protocol requires bankAStructTag"),n()(e.extra?.lendingMarketA,"steamm protocol requires lendingMarketA"),n()(e.extra?.bankA,"steamm protocol requires bankA"),n()(e.extra?.bankB,"steamm protocol requires bankB");let[t,o,r,a]=l(e.extra.poolStructTag),[i,s,c]=l(e.extra.bankAStructTag);return{..._(e),protocol:u.S.STEAMM_CPMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:i,bCoinAType:t,bCoinBType:o,lpBCoinType:a}},steamm_oracle_quoter:e=>{n()(e.extra?.poolStructTag,"steamm_oracle_quoter protocol requires poolStructTag"),n()(e.extra?.bankAStructTag,"steamm_oracle_quoter protocol requires bankAStructTag"),n()(e.extra?.lendingMarketA,"steamm_oracle_quoter protocol requires lendingMarketA"),n()(e.extra?.oracleRegistry,"steamm_oracle_quoter protocol requires oracleRegistry"),n()(e.extra?.bankA,"steamm_oracle_quoter protocol requires bankA"),n()(e.extra?.bankB,"steamm_oracle_quoter protocol requires bankB"),n()(e.extra?.oracleIndexes,"steamm_oracle_quoter protocol requires oracleIndexes"),n()(e.extra?.oracles,"steamm_oracle_quoter protocol requires oracles");let[t,o,r,a]=l(e.extra?.poolStructTag),[i,s,c]=l(e.extra.bankAStructTag),[d,g]=e.extra.oracleIndexes;return{..._(e),protocol:u.S.STEAMM_OMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:i,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:p(e.extra.oracles[0]),pythPriceFeedIdB:p(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:d,oracleIndexB:g}},steamm_oracle_quoter_v2:e=>{n()(e.extra?.poolStructTag,"steamm_oracle_quoter_v2 protocol requires poolStructTag"),n()(e.extra?.bankAStructTag,"steamm_oracle_quoter_v2 protocol requires bankAStructTag"),n()(e.extra?.lendingMarketA,"steamm_oracle_quoter_v2 protocol requires lendingMarketA"),n()(e.extra?.oracleRegistry,"steamm_oracle_quoter_v2 protocol requires oracleRegistry"),n()(e.extra?.bankA,"steamm_oracle_quoter_v2 protocol requires bankA"),n()(e.extra?.bankB,"steamm_oracle_quoter_v2 protocol requires bankB"),n()(e.extra?.oracleIndexes,"steamm_oracle_quoter_v2 protocol requires oracleIndexes"),n()(e.extra?.oracles,"steamm_oracle_quoter_v2 protocol requires oracles");let[t,o,r,a]=l(e.extra?.poolStructTag),[i,s,c]=l(e.extra.bankAStructTag),[d,g]=e.extra.oracleIndexes;return{..._(e),protocol:u.S.STEAMM_OMM_V2,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:i,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:p(e.extra.oracles[0]),pythPriceFeedIdB:p(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:d,oracleIndexB:g}},cetus:e=>({..._(e),protocol:u.S.CETUS_CLMM}),bluemove:e=>({..._(e),protocol:u.S.BLUEMOVE_CPMM}),kriya:e=>({..._(e),protocol:u.S.KRIYA_CPMM}),kriya_v3:e=>({..._(e),protocol:u.S.KRIYA_CLMM}),deepbook_v3:e=>({..._(e),protocol:u.S.DEEPBOOK_V3}),flowx:e=>({..._(e),protocol:u.S.FLOWX_CPMM}),bluefin:e=>({..._(e),protocol:u.S.BLUEFIN_CLMM}),springsui:e=>({..._(e),protocol:u.S.SPRINGSUI}),magma:e=>({..._(e),protocol:u.S.MAGMA_CLMM}),momentum:e=>({..._(e),protocol:u.S.MOMENTUM_CLMM}),fullsail:e=>({..._(e),protocol:u.S.FULLSAIL_CLMM}),stsui:e=>({..._(e),protocol:u.S.ALPHAFI_LSD}),suiswap:e=>({..._(e),protocol:u.S.SUISWAP_CPMM}),cetus_dlmm:e=>({..._(e),protocol:u.S.CETUS_DLMM}),ferra_dlmm:e=>({..._(e),protocol:u.S.FERRA_DLMM}),ferra_clmm:e=>({..._(e),protocol:u.S.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=c.u.MAX_AMOUNT_IN;return o}function _(e){return{poolId:e.poolId,coinInType:e.assetIn,coinOutType:e.assetOut,amountIn:e.amount,aToB:e.swapXtoY}}function l(e){return(0,i.parseStructTag)(e||"").typeParams.map(i.normalizeStructTag)}function p(e){let t=e?.Pyth?.bytes||e?.Pyth?.price_identifier?.bytes;return n()(t,"Pyth price feed id is not found"),"0x"+(0,i.toHex)(Uint8Array.from(t))}e.toMetaAggregatorPath=r,e.toMetaAggregatorPaths=a,e.convert=function(e){var t,o,r;let i;n()(e.routes,"Invalid raw route: routes is missing");let c=(t=e.routes,i={},t.forEach(e=>{e.hops.forEach(e=>{i[e.poolId]=e.pool})}),i),u=a((o=e.swaps,r=c,o.map(e=>{let t=r[e.poolId],o=(0,s.eP)(e.assetIn),a=(0,s.eP)(e.assetOut),n={type:(0,s.eP)(t?.allTokens?.[0]?.address),decimals:t?.allTokens?.[0]?.decimal},i={type:(0,s.eP)(t?.allTokens?.[1]?.address),decimals:t?.allTokens?.[0]?.decimal},c=o===n.type;return{...e,pool:t,assetIn:o,assetOut:a,coinX:n,coinY:i,swapXtoY:c}})));return{coinInType:e.tokenIn,coinOutType:e.tokenOut,amountOut:e.returnAmountWithDecimal,tradePaths:u}}}(r||(r={}))},"./src/meta-aggregator/external/metastable.ts"(e,t,o){o.d(t,{b:()=>n});var r,a,n,i=o("@minswap/tiny-invariant"),s=o.n(i),c=o("@mysten/sui/utils");(r=n||(n={})).UNIVERSAL_META_VAULT_INTEGRATION_PACKAGE_ID="0xfd12517a9fc87c6a1f2357ad13b3421fb27a8bd7ca07d5fd5934ac35733baa47",(a=r.MetaCoinType||(r.MetaCoinType={})).SUPER_SUI="0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI",a.MUSD="0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD",a.METH="0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH",r.VERSION_OBJ_ID="0x4696559327b35ff2ab26904e7426a1646312e9c836d5c6cff6709a5ccc30915c",r.createCap=function(e){let t,{txb:o,coinType:r,metaCoin:a,createCapAllTypeParams:n,whitelistedAppId:i,poolId:u,pythInfoObjectIdMap:_,createCapPackageId:l,createCapModule:p,createCapFunc:d}=e,g=[a.toString()];switch(n&&g.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=_.get(e.pythPriceFeedIdMeta);s()(r,"Not found priceMetaId in pythObjectIdMap"),t=[o.object(i),o.object(u),o.object(r),o.object(c.SUI_CLOCK_OBJECT_ID)];break}case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":{let r=_.get(e.pythPriceFeedIdMeta);s()(r,"Not found priceId in pythObjectIdMap");let a=_.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.SUI_CLOCK_OBJECT_ID)];break}default:throw Error("Invalid MetaCoin: "+a.toString())}return o.moveCall({target:`${l}::${p}::${d}`,typeArguments:g,arguments:t})},r.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)}},r.isMetaCoinType=function(e){return Object.values(r.MetaCoinType).map(e=>e.toString()).includes(e)},r.getCreateCapAllTypeParams=function(e,t){switch(e){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":return t===r.UNIVERSAL_META_VAULT_INTEGRATION_PACKAGE_ID;case"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD":case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":return!0;default:throw Error("Invalid MetaCoin: "+e)}}},"./src/meta-aggregator/router/types.ts"(e,t,o){o.d(t,{S:()=>a});var r,a=((r={}).AFTERMATH_CPMM="aftermath_cpmm",r.AFTERMATH_LSD="aftermath_lsd",r.ALPHAFI_LSD="alphafi_lsd",r.BLASTFUN="blastfun",r.BLUEFIN_CLMM="bluefin_clmm",r.BLUEMOVE_CPMM="bluemove_cpmm",r.BOLT="bolt",r.CETUS_CLMM="cetus_clmm",r.CETUS_DLMM="cetus_dlmm",r.DEEPBOOK_V3="deepbook_v3",r.DIP_CPMM="dip_cpmm",r.FLOWX_CPMM="flowx_cpmm",r.FLOWX_CLMM="flowx_clmm",r.FULLSAIL_CLMM="fullsail_clmm",r.FERRA_CLMM="ferra_clmm",r.FERRA_DLMM="ferra_dlmm",r.HAEDAL_CPMM="haedal_cpmm",r.HAEDAL_CPMM_V2="haedal_cpmm_v2",r.HAEDAL_LSD="haedal_lsd",r.HAEDAL_LSD_WAL="haedal_lsd_wal",r.KRIYA_CLMM="kriya_clmm",r.KRIYA_CPMM="kriya_cpmm",r.MAGMA_ALMM="magma_almm",r.MAGMA_CLMM="magma_clmm",r.METASTABLE="metastable",r.MOMENTUM_CLMM="momentum_clmm",r.MOVEPUMP="movepump",r.OBRIC="obric",r.SCALLOP="scallop",r.SEVENK_CPMM="sevenk_cpmm",r.SEVENK_FUN="sevenk_fun",r.SPRINGSUI="springsui",r.SRM_CPMM="srm_cpmm",r.STEAMM_CPMM="steamm_cpmm",r.SUISWAP_CPMM="suiswap_cpmm",r.STEAMM_OMM="steamm_omm",r.STEAMM_OMM_V2="steamm_omm_v2",r.TRADEPORT_CLMM="tradeport_clmm",r.TURBOS_CLMM="turbos_clmm",r.TURBOS_FUN="turbos_fun",r.VOLO="volo",r)},"@bluefin-exchange/bluefin7k-aggregator-sdk"(e){e.exports=require("@bluefin-exchange/bluefin7k-aggregator-sdk")},"@cetusprotocol/aggregator-sdk"(e){e.exports=require("@cetusprotocol/aggregator-sdk")},"@flowx-finance/sdk"(e){e.exports=require("@flowx-finance/sdk")},"@minswap/tiny-invariant"(e){e.exports=require("@minswap/tiny-invariant")},"@mysten/sui/client"(e){e.exports=require("@mysten/sui/client")},"@mysten/sui/utils"(e){e.exports=require("@mysten/sui/utils")}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var o=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](o,o.exports,__webpack_require__),o.exports}__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 o in t)__webpack_require__.o(t,o)&&!__webpack_require__.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},__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__={};for(var __rspack_i in(()=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{MagmaAlmm:()=>tt,denormalizeTokenType:()=>ox.eP,KriyaClmm:()=>e8,TradeFeeOptions:()=>el,addGasFee:()=>og,getMemezPumpSDK:()=>od,DeepbookV3:()=>eG,BlastFunSDKCalculation:()=>eI,AftermathLsd:()=>eh,DraftTransferTx:()=>o8,MoonbagsConstants:()=>eT,NoodlesPaySdk:()=>o4,Bps:()=>eg,ADMIN_CAP_ID:()=>oQ,CetusClient:()=>oy.CetusClient,DipCpmm:()=>eV,SevenKAggregatorConverter:()=>tN.m,getMoveObject:()=>t4,MomentumClmm:()=>ti,CetusAggregatorConverter:()=>tH.M,MoonbagsCalculation:()=>eO,Steamm:()=>tT,FlowxClient:()=>oP.FlowxClient,Metastable:()=>ok.b,getSplitCoinsAfterFee:()=>t3,splitSuiCoinAfterFeeFromBuyTx:()=>oa,AftermathCpmm:()=>eE,BluemoveCpmm:()=>eD,AstrosAggregator:()=>tV,BlastFunSDKTransaction:()=>eC,CONFIG_ID:()=>oz,AftermathAggregator:()=>tG,CetusClmm:()=>eU,FlowXAggregator:()=>tZ,SevenkCpmm:()=>tg,adaptSuiClient:()=>oO,AggregatorModule:()=>oW,adaptTransaction:()=>oM,Obric:()=>t_,getNeededGasFee:()=>t5,createCompatibleSuiClient:()=>oE,FlowxCpmm:()=>eQ,FullsailClmm:()=>e0,SupportedAggregator:()=>tX,NATIVE_USDC_TOKEN_TYPE:()=>t7.lM,BOOSTING_PACKAGE_ID:()=>oX,SUI_TYPE:()=>t7.nD,USDC_TOKEN_TYPE:()=>t7.N3,isSuiCoinType:()=>t7.tC,normalizeTokenType:()=>ox.nr,SevenkFun:()=>tf,MetaAgErrorCode:()=>ow.j,MoonbagsPackage:()=>eS,SUI_FULL_TYPE:()=>t7.P9,AggregatorConverter:()=>tD,getCoinObjectIdsByAmount:()=>ot,Bluefin7kClient:()=>oh.Bluefin7kClient,splitSuiCoinAfterFeeFromSellTx:()=>on,getAmountAfterFee:()=>t2,Blastfun:()=>eP,timeout:()=>oV,PythPrice:()=>oS.L,MetaAggregator:()=>tk,TurbosFun:()=>ty,BLUEFIN_PACKAGE_ID:()=>or,SubscriptionModule:()=>o1,getExpectedReturn:()=>oY,checkIsSui:()=>ox.YY,MathUtils:()=>ed,CLOCK_OBJECT_ID:()=>t7.VV,CurveModule:()=>o0,DEFAULT_TRADE_FEE:()=>o3,BlastFunPackage:()=>em,CetusAggregator:()=>tW,MoonbagsTransaction:()=>eM,BlastFunCustomTransaction:()=>eA,NoodlesSdk:()=>o2,BoostingModule:()=>oZ,MetaAgError:()=>ow.u,PythUtils:()=>oS.j,AggregatorProtocol:()=>oF.S,FlowXAggregatorConverter:()=>tQ.m,HaedalLsdWal:()=>e5,FerraClmm:()=>e$,BluefinClmm:()=>eF,MagmaClmm:()=>tr,RouterUtils:()=>tF,SUBSCRIPTION_CONFIG:()=>o6,SrmCpmm:()=>tI,BlastFunCustomCalculation:()=>ef,FerraDlmm:()=>eH,MetaClient:()=>oJ,Movepump:()=>tc,BASE_BPS:()=>1e4,SupportedBondingCurve:()=>oA,Volo:()=>tP,BluefinTx:()=>eb,Scallop:()=>tp,getMoveObjectContent:()=>t1,CetusDlmm:()=>ej,getSplitCoinForTx:()=>oo,SUI_METADATA_OBJECT_ID:()=>t7.IC,TurbosClmm:()=>tx,Walrus:()=>e2,SUI_ADDRESS_ZERO:()=>t7.qb,SevenKAggregator:()=>tj,Bolt:()=>eL,BlastFunConstants:()=>ep,TradeportClmm:()=>tM});var e,t,o,r,a,n,i,s,c,u,_,l,p,d,g,m,f,b,A,I,C,T,S,O,M,E,x,h,y,w,P,B,F,k,D,v,L,R,U,N,j,K,G,q,V,Y,$,J,H,W,X,z,Q,Z,ee,et,eo,er,ea,en,ei,es,ec,eu,e_,el,ep,ed,eg,em,ef,eb,eA,eI,eC,eT,eS,eO,eM,eE,ex,eh,ey,ew,eP,eB,eF,ek,eD,ev,eL,eR,eU,eN,ej,eK,eG,eq,eV,eY,e$,eJ,eH,eW,eX,ez,eQ,eZ,e0,e6,e1,e4,e3,e2,e5,e9,e8,e7,te,tt,to,tr,ta,tn,ti,ts,tc,tu,t_,tl,tp,td,tg,tm,tf,tb,tA,tI,tC,tT,tS,tO,tM,tE,tx,th,ty,tw,tP,tB,tF,tk,tD,tv=__webpack_require__("@bluefin-exchange/bluefin7k-aggregator-sdk");let tL=require("@mysten/sui/transactions"),tR=require("bignumber.js");var tU=__webpack_require__.n(tR),tN=__webpack_require__("./src/meta-aggregator/converter-route/sevenk-aggregator-converter.ts");class tj{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){try{this._config.sevenKApiKey&&tv.Config.setApiKey(this._config.sevenKApiKey);let i=r?r.tradeFeePercent:this._config.defaultTradeFee.tradeFeePercent,s=n??(a?tN.m.SUPPORTED_PROTOCOLS:void 0);return await (0,tv.getQuote)({tokenIn:t,tokenOut:o,amountIn:e.toString(),commissionBps:1e4*i,sources:s})}catch(e){return null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:o,tradeFee:r}){let a,n;r?(a=r.tradeFeePercent,n=r.tradeFeeRecipientAddress):(a=this._config.defaultTradeFee.tradeFeePercent,n=this._config.defaultTradeFee.tradeFeeRecipientAddress);let i=await (0,tv.buildTx)({quoteResponse:t,slippage:o,accountAddress:e,commission:{partner:n,commissionBps:1e4*a}});return i.tx instanceof tv.BluefinXTx?tL.Transaction.from(i.tx.txBytes).build({client:this._suiClient}):(i.tx.setSender(e),i.tx.build({client:this._suiClient}))}}(tj||(tj={})).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(tU())(t.tokenInAmount).multipliedBy(10**o).toFixed(0,3)),i=BigInt(new(tU())(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(tU())(o.tokenInAmount).multipliedBy(10**a).toFixed(0,3)),s=BigInt(new(tU())(o.tokenOutAmount).multipliedBy(10**n).toFixed(0,3));t.push({paths:e,coinIn:o.tokenIn,coinOut:o.tokenOut,amountIn:i,amountOut:s})}return 0===t.length?null:{coinIn:e.tokenIn,coinOut:e.tokenOut,amountIn:BigInt(e.swapAmountWithDecimal),amountOut:BigInt(e.returnAmountAfterCommissionWithDecimal),routes:t}};let tK=require("aftermath-ts-sdk");class tG{_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 tK.Aftermath(this._config.aftermathApiEndpoint):this._aftermathClient=new tK.Aftermath("MAINNET"),await this._aftermathClient.init(),this._config.aftermathApiKey){let e=tK.Helpers.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})}}(tG||(tG={})).toCommonTradeRoutes=function(e){if(0===e.routes.length)return null;let t=[];for(let o of e.routes){let e=[];for(let t of o.paths)e.push({poolAddress:t.poolId,coinIn:t.coinIn.type,coinOut:t.coinOut.type,amountIn:BigInt(t.coinIn.amount),amountOut:BigInt(t.coinOut.amount)});0!==e.length&&t.push({paths:e,coinIn:o.coinIn.type,coinOut:o.coinOut.type,amountIn:o.coinIn.amount,amountOut:o.coinOut.amount})}return 0===t.length?null:{coinIn:e.coinIn.type,coinOut:e.coinOut.type,amountIn:e.coinIn.amount,amountOut:e.coinOut.amount,routes:t}};let tq=require("@naviprotocol/astros-aggregator-sdk");class tV{_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 (0,tq.getQuote)(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 n,i;n=r?{fee:r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let s=new(tU())(e.amount_out).multipliedBy(1-o-n.fee).toNumber(),c=new tL.Transaction;if("0x2::sui::SUI"===(a=e.from)||"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"===a)i=c.splitCoins(c.gas,[c.pure.u64(e.amount_in)]);else{let o=await (0,tq.getCoins)(this._suiClient,t,e.from),r=this.returnMergedCoins(c,o.data,Number.parseFloat(e.amount_in));i=c.splitCoins(r,[c.pure.u64(e.amount_in)])}let u=await (0,tq.buildSwapPTBFromQuote)(t,c,s,i,e,void 0,!1,this._config.astrosApiKey,{serviceFee:n});return c.transferObjects([u],t),c.setSender(t),c.build({client:this._suiClient})}}(tV||(tV={})).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}};var tY=__webpack_require__("@cetusprotocol/aggregator-sdk");let t$=require("bn.js");var tJ=__webpack_require__.n(t$);(el||(el={})).equals=function(e,t){return e.tradeFeePercent===t.tradeFeePercent&&e.tradeFeeRecipientAddress===t.tradeFeeRecipientAddress};var tH=__webpack_require__("./src/meta-aggregator/converter-route/cetus-aggregator-converter.ts");class tW{_config;_suiClient;_cetusClient;getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t,overlayFeeRate:o}){return{client:this._suiClient,overlayFeeReceiver:t,overlayFeeRate:o,env:tY.Env.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&&!el.equals(t,this._config.defaultTradeFee)?new tY.AggregatorClient(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t.tradeFeeRecipientAddress,overlayFeeRate:t.tradeFeePercent})):(this._cetusClient||(this._cetusClient=new tY.AggregatorClient(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?tH.M.SUPPORTED_PROTOCOLS:void 0);return await i.findRouters({from:t,target:o,amount:new(tJ())(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),n=new tL.Transaction;return n.setSender(t),await a.fastRouterSwap({router:e,txb:n,slippage:o}),n.build({client:this._suiClient})}}(tW||(tW={})).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 tX=((e={}).ASTROS="ASTROS",e.AFTERMATH="AFTERMATH",e.SEVENK="7K",e.CETUS="CETUS",e.FLOWX="FLOWX",e),tz=__webpack_require__("@flowx-finance/sdk"),tQ=__webpack_require__("./src/meta-aggregator/converter-route/flowx-aggregator-converter.ts");class tZ{_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 tz.Commission(r,new tz.Coin(e),tz.CommissionType.PERCENTAGE,1e6*o,!0)}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){let i=new tz.AggregatorQuoter("mainnet",this._config.flowxApiKey),s=n??(a?tQ.m.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 tz.TradeBuilder("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})))}}(tZ||(tZ={})).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}},(t=ep||(ep={})).PACKAGE_ID_V4="0x7e6aa6e179466ab2814425a780b122575296d011119fa69d27f289f5a28814bd",t.MEMEZ_AV_OBJECT_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0";var t0=__webpack_require__("@minswap/tiny-invariant"),t6=__webpack_require__.n(t0);async function t1(e,t){return(await t4(e,t)).fields}async function t4(e,t){let o=await e.getObject({id:t,options:{showContent:!0}}),r=o.data?.content;return t6()(r,"Pool object not found or has no content"),t6()("moveObject"===r.dataType,"Object is not a Move object"),r}function t3(e,t){let o=BigInt(e),r=BigInt(1e4*Number(t));if(r===BigInt(0))return[o.toString()];let a=o*r/BigInt(1e4);return[(o-a).toString(),a.toString()]}function t2(e,t){if(!t||0>=Number(t))return BigInt(e);let o=BigInt(e),r=BigInt(1e4*Number(t));if(r===BigInt(0))return o;let a=o*r/BigInt(1e4);return o-a}async function t5(e,t,o,r){let{effects:{gasUsed:a,status:n}}=await e.devInspectTransactionBlock({sender:o,transactionBlock:t});if("success"!==n.status)throw Error(`Transaction failed during dev inspect: ${n.error??""}`);let i=BigInt(a.computationCost)+BigInt(a.storageCost)-BigInt(a.storageRebate),s=BigInt(1e4*Number(r));return i*(BigInt(1e4)+s)/BigInt(1e4)}((o=ed||(ed={})).U64||(o.U64={})).mulDivUp=function(e,t,o){let r=BigInt(0);return e*t%o>BigInt(0)&&(r=BigInt(1)),e*t/o+r};var t9=eg||(eg={});function t8(e){return t6()(BigInt(e)<=BigInt(1e4),"Bps overflow"),BigInt(e)}t9.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},t9.sub=function(e,t){return t6()(BigInt(e.pos0)>=BigInt(t.pos0),"Bps underflow"),{pos0:(BigInt(e.pos0)-BigInt(t.pos0)).toString()}},t9.value=function(e){return BigInt(e.pos0)},t9.new_=function(e){return{pos0:t8(e).toString()}},t9.assertOverflow=t8,((r=em||(em={})).MemezFun||(r.MemezFun={})).isSniperProtectedMemezFun=async function(e,t){return(await t1(e,t)).public_key.length>0},(a=r.MemezFees||(r.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=eg.calcUp(eg.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")},a.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 eg.calcUp(eg.sub(r,t),o)}throw Error("Unknown fee variant")},(r.MemezBurner||(r.MemezBurner={})).calculate=function(e,t){if(eg.value(e.fee.fields)===BigInt(0)||t===BigInt(0)||t>=BigInt(e.target_liquidity))return eg.new_(0);let o=BigInt(1e4);return eg.new_(ed.U64.mulDivUp(eg.value(e.fee.fields),ed.U64.mulDivUp(t,o,BigInt(e.target_liquidity)),o))},(n=r.MemezPump||(r.MemezPump={})).getPumpState=async function(e,t){return await t1(e,t.inner_state)},n.pump=function(e,t){let o=e.constant_product.fields,a=r.MemezFees.takeWithDiscount(o.quote_swap_fee,t,o.quote_referrer_fee.fields),n=t-a,i=BigInt(o.meme_balance),s=BigInt(o.quote_balance),c=i*n/(BigInt(o.virtual_liquidity)+s+n),u=r.MemezFees.takeWithDiscount(o.meme_swap_fee,c,o.meme_referrer_fee.fields);return c-u},n.dump=function(e,t){let o=e.constant_product.fields,a=r.MemezFees.takeWithDiscount(o.meme_swap_fee,t,o.meme_referrer_fee.fields),n=t-a,i=BigInt(o.meme_balance),s=BigInt(o.quote_balance),c=BigInt(o.virtual_liquidity),u=r.MemezBurner.calculate(o.burner.fields,s),_=eg.calcUp(u,n),l=n-(eg.value(u)!==BigInt(0)?_:BigInt(0)),p=(c+s)*l/(i+l);p>s&&(p=s);let d=r.MemezFees.takeWithDiscount(o.quote_swap_fee,p,o.quote_referrer_fee.fields);return p-d},(i=ef||(ef={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,n=await t1(t,r),i=await em.MemezPump.getPumpState(t,n);return o=t2(o,a),em.MemezPump.pump(i,o)},i.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,n=await t1(t,r),i=await em.MemezPump.getPumpState(t,n);return t2(em.MemezPump.dump(i,o),a)};var t7=__webpack_require__("./src/constant/sui.ts"),oe=__webpack_require__("@mysten/sui/utils");let ot=async(e,t,o,r)=>{let a,n=[],i=!0;for(;i;)try{let o=await e.getCoins({owner:t,coinType:r,cursor:a});n=[...n,...o.data],i=o.hasNextPage,a=o.nextCursor}catch(e){console.error("Error fetching data:",e),i=!1}let s=((e,t,o)=>{let r;if(e?.length){do{r=!1;for(let a=0;a<e.length-1;a++){let n=BigInt(e[a][t]),i=BigInt(e[a+1][t]);if("desc"===o?n<i:n>i){let t=e[a];e[a]=e[a+1],e[a+1]=t,r=!0}}}while(r);return e}})(n.map(e=>({...e,balance:e.balance})),"balance","desc")??[],c="0",u=[],_=[];for(let e of s)if(c=(BigInt(e.balance)+BigInt(c)).toString(10),u.push(e.coinObjectId),_.push(e),BigInt(c)>=BigInt(o))break;return{objectIds:u,balance:c,objectCoins:_}};async function oo(e,t){let{account:o,amount:r,splits:a,coinType:n,inheritTx:i,inspecTransaction:s,isSponsored:c=!1}=e,u=i??new tL.Transaction,{objectIds:_,balance:l}=await ot(t,o,r,n);if(BigInt(l)<BigInt(r))throw Error(`Insufficient balance for type ${n}. Required: ${r}, Available: ${l}`);if(0===_.length)throw Error(`No coins found for type ${n} with sufficient balance. Required: ${r}`);let p=_[0];if((0,oe.normalizeStructTag)(n)===(0,oe.normalizeStructTag)(t7.P9)&&!c){let e;return s?(_.length>1&&u.mergeCoins(u.object(p),_.slice(1).map(e=>u.object(e))),e=u.splitCoins(u.object(p),a)):e=u.splitCoins(u.gas,a),{tx:u,coinData:e}}_.length>1&&u.mergeCoins(u.object(p),_.slice(1).map(e=>u.object(e)));let d=u.splitCoins(u.object(p),a);return{tx:u,coinData:d}}let or="0x62412b7268c35f3808336aee57a52836501f40b8ba5d936f8ad275e672befd04";async function oa(e,t){let o,r,{inputAmount:a,accountAddress:n,frontendFee:i,frontendFeeRecipient:s,extendTx:c,isSponsored:u}=e;t6()(e.inCoinType===t7.P9||e.inCoinType===t7.nD,"Input must be SUI");let{tx:_,coinIn:l}=c||{},p=t3(a,i||"0"),d=_||new tL.Transaction;if(l)o=d.splitCoins(l,p),eb.transferOrDestroyZeroCoin(d,t7.P9,l,n);else{let{coinData:e}=await oo({account:n,amount:a,splits:p,coinType:t7.P9,inheritTx:d,isSponsored:u||!1},t);o=e}if(i&&s){let[e,t]=o;r=e,d.transferObjects([t],d.pure.address(s||n))}else[r]=o;return{tx:d,coinOut:r}}async function on(e,t,o){if(t6()(t.outCoinType===t7.P9||t.outCoinType===t7.nD,"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:`${or}::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}}(eb||(eb={})).transferOrDestroyZeroCoin=function(e,t,o,r){e.moveCall({target:`${or}::utils::transfer_or_destroy`,typeArguments:[t],arguments:[o,e.pure.address(r)]})};var oi=eA||(eA={});async function os(e){let t=e||new tL.Transaction;return t.moveCall({target:`${ep.PACKAGE_ID_V4}::memez_allowed_versions::get_allowed_versions`,arguments:[t.object(ep.MEMEZ_AV_OBJECT_ID)],typeArguments:[]})}oi.getAllowedVersions=os,oi.buildBuyTx=async function(e,t){t6()(!await em.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 oa(e,t);t6()(r,"Coin out is required");let a=o.moveCall({target:`${ep.PACKAGE_ID_V4}::memez_pump::pump`,typeArguments:[e.outCoinType,t7.P9],arguments:[o.object(e.poolId),r,o.pure.vector("address",[]),o.pure.vector("vector<u8>",[]),o.pure.u64(e.minAmountOut),await os(o)]});return{tx:o,coinOut:a}},oi.buildSellTx=async function(e,t){t6()(e.outCoinType===t7.P9||e.outCoinType===t7.nD,"Output must be SUI");let o=await t1(t,e.poolId),{tx:r,coinData:a}=await oo({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[n]=a,[i]=r.moveCall({target:`${ep.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 os(r)]});return await on(r,e,i)};let oc=require("@interest-protocol/memez-fun-sdk"),ou=require("@interest-protocol/sui-core-sdk");var o_=__webpack_require__("@mysten/sui/client");let ol={network:ou.Network.MAINNET,fullNodeUrl:(0,o_.getFullnodeUrl)("mainnet")},op=new oc.MemezPumpSDK(ol);function od(){return op}async function og(e,t){let{inheritTx:o,sender:r,feeAmount:a,suiInputAmount:n}=e,i=o||new tL.Transaction;a>BigInt(0)&&i.setGasBudget(a);let{objectCoins:s}=await ot(t,r,(BigInt(n||"0")+a).toString(),t7.P9);return i.setGasPayment(s.map(e=>({objectId:e.coinObjectId,version:e.version,digest:e.digest}))),i}(s=eI||(eI={})).getCurveAmountAfterBuy=async function(e){let{suiAmount:t,poolId:o,frontendFee:r}=e;t=t2(t,r);let{memeAmountOut:a}=await op.quotePump({pool:o,amount:t});return a},s.getSuiAmountAfterSell=async function(e){let{curveAmount:t,poolId:o,frontendFee:r}=e,{quoteAmountOut:a}=await op.quoteDump({pool:o,amount:t});return t2(a,r)};var om=eC||(eC={});async function of(e,t){let{tx:o,coinOut:r}=await oa(e,t);t6()(r,"Coin out is required");let{memeCoin:a,tx:n}=await op.pump({pool:e.poolId,quoteCoin:r,minAmountOut:e.minAmountOut,tx:o});return{tx:n,coinOut:a}}async function ob(e,t){t6()((0,t7.tC)(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await oo({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,{quoteCoin:n,tx:i}=await op.dump({pool:e.poolId,memeCoin:a,tx:o,minAmountOut:e.minAmountOut});return await on(i,e,n)}om.buildBuyTx=of,om.buildSellTx=ob,om.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,t7.tC)(t),"coinInType must be SUI for buy transaction"),t6()(o!==t,"coinOutType must be different from coinInType"),t6()(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),t6()(e>0,"coinInAmount must be greater than 0");let c=await eI.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0}),u=BigInt(new(tU())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:_,coinOut:l}=await of({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},s);t6()(l,"Coin out is required"),_.transferObjects([l],_.pure.address(n)),_.setSender(n);let p=await t5(s,_,n,0);return(_=await og({inheritTx:_,sender:n,feeAmount:p,suiInputAmount:e},s)).build({client:s})},om.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,t7.tC)(o),"coinOutType must be SUI for sell transaction"),t6()(o!==t,"coinOutType must be different from coinInType"),t6()(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),t6()(e>0,"coinInAmount must be greater than 0");let c=await eI.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0}),u=BigInt(new(tU())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:_,coinOut:l}=await ob({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},s);t6()(l,"Coin out is required"),_.transferObjects([l],_.pure.address(n)),_.setSender(n);let p=await t5(s,_,n,0);return(_=await og({inheritTx:_,sender:n,feeAmount:p},s)).build({client:s})};var oA=((c={}).BLAST_FUN="BLAST_FUN",c.MOONBAGS="MOONBAGS",c);(u=eT||(eT={})).PACKAGE_ID="0xb8df325010942634a4afb3db3901ee215546af43a4ec4af781e7213b0bba7290",u.CONFIG_OBJECT_ID="0x74aecf86067c6913960ba4925333aefd2b1f929cafca7e21fd55a8f244b70499",u.LOCK_CONFIG_OBJECT_ID="0xfb09822d9808980abd04c51321adb850701f5f55535c6206658ef4d910c3e9be",u.BURN_MANAGER_OBJECT_ID="0x1d94aa32518d0cb00f9de6ed60d450c9a2090761f326752ffad06b2e9404f845",u.POOLS_OBJECT_ID="0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0",u.GLOBAL_CONFIG_OBJECT_ID="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",u.FEE_DENOMINATOR=BigInt(1e4),(l=(_=eS||(eS={})).Curves||(_.Curves={})).calculateAddLiquidityCost=function(e,t,o){return e*t/(t-o)-e},l.calculateRemoveLiquidityReturn=function(e,t,o){return t-e*t/(e+o)},l.calculateTokenAmountReceived=function(e,t,o){return t-e*t/(e+o)},(p=_.Moonbags||(_.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)},p.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),c=BigInt(r.remain_token_reserves.fields.balance),u=_.Curves.calculateRemoveLiquidityReturn(i,s,o),l=s-(n||c),p=u,d=o;u>l&&(p=l,d=_.Curves.calculateAddLiquidityCost(i,s,l)+BigInt(1));let g=d*BigInt(a.platform_fee)/eT.FEE_DENOMINATOR;return t6()(t>=d+g,"Input amount is less than used SUI + fee"),{receivedCurve:p,receivedSui:t-d-g}},p.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=_.Curves.calculateRemoveLiquidityReturn(n,a,t);s>i&&(s=i);let c=s*BigInt(r.platform_fee)/eT.FEE_DENOMINATOR,u=s-c;return{receivedCurve:BigInt(0),receivedSui:u}},(d=eO||(eO={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,[n,i,s]=await Promise.all([t1(t,r),t1(t,eT.CONFIG_OBJECT_ID),eS.Moonbags.getDynamicVirtualTokenReserves(t,r)]);void 0!==a&&(o=t2(o,a));let c=o*eT.FEE_DENOMINATOR/(eT.FEE_DENOMINATOR+BigInt(i.platform_fee)),{receivedCurve:u}=eS.Moonbags.buyExactInReturnsWithLock({inputAmount:o,amountIn:c,pool:n,config:i,dynamicVirtualTokenReserves:s});return u},d.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,[n,i]=await Promise.all([t1(t,r),t1(t,eT.CONFIG_OBJECT_ID)]),{receivedSui:s}=eS.Moonbags.sellReturns({amountIn:o,pool:n,config:i});return void 0!==a?t2(s,a):s},d.getUsedSuiForTx=async function(e,t){let{suiAmount:o,frontendFee:r}=e,a=await t1(t,eT.CONFIG_OBJECT_ID);return void 0!==r&&(o=t2(o,r)),o*eT.FEE_DENOMINATOR/(eT.FEE_DENOMINATOR+BigInt(a.platform_fee))};var oI=eM||(eM={});async function oC(e,t){let{tx:o,coinOut:r}=await oa(e,t);t6()(r,"Coin out is required");let a=await eO.getUsedSuiForTx({suiAmount:BigInt(e.inputAmount),frontendFee:e.frontendFee},t),[n,i]=o.moveCall({target:`${eT.PACKAGE_ID}::moonbags::buy_exact_in_returns_with_lock`,typeArguments:[e.outCoinType],arguments:[o.object(eT.CONFIG_OBJECT_ID),o.object(eT.LOCK_CONFIG_OBJECT_ID),r,o.pure.u64(a),o.pure.u64(e.minAmountOut),o.object(eT.BURN_MANAGER_OBJECT_ID),o.object(eT.POOLS_OBJECT_ID),o.object(eT.GLOBAL_CONFIG_OBJECT_ID),o.object(t7.IC),o.object(t7.VV)]});return eb.transferOrDestroyZeroCoin(o,t7.P9,n,e.accountAddress),{tx:o,coinOut:i}}async function oT(e,t){t6()((0,t7.tC)(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await oo({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,[n,i]=o.moveCall({target:`${eT.PACKAGE_ID}::moonbags::sell_returns`,typeArguments:[e.inCoinType],arguments:[o.object(eT.CONFIG_OBJECT_ID),a,o.pure.u64(e.minAmountOut),o.object(t7.VV)]});return eb.transferOrDestroyZeroCoin(o,e.inCoinType,i,e.accountAddress),await on(o,e,n)}oI.buildBuyTx=oC,oI.buildSellTx=oT,oI.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,t7.tC)(t),"coinInType must be SUI for buy transaction"),t6()(o!==t,"coinOutType must be different from coinInType"),t6()(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),t6()(e>0,"coinInAmount must be greater than 0");let c=await eO.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0},s),u=BigInt(new(tU())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:_,coinOut:l}=await oC({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},s);t6()(l,"Coin out is required"),_.transferObjects([l],_.pure.address(n)),_.setSender(n);let p=await t5(s,_,n,0);return(_=await og({inheritTx:_,sender:n,feeAmount:p,suiInputAmount:e},s)).build({client:s})},oI.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,t7.tC)(o),"coinOutType must be SUI for sell transaction"),t6()(o!==t,"coinOutType must be different from coinInType"),t6()(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),t6()(e>0,"coinInAmount must be greater than 0");let c=await eO.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0},s),u=BigInt(new(tU())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:_,coinOut:l}=await oT({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},s);t6()(l,"Coin out is required"),_.transferObjects([l],_.pure.address(n)),_.setSender(n);let p=await t5(s,_,n,0);return(_=await og({inheritTx:_,sender:n,feeAmount:p},s)).build({client:s})};var oS=__webpack_require__("./src/libs/pyth.ts");function oO(e){return e}function oM(e){return e}function oE(e){return new Proxy(e,{get(e,t){let o=e[t];return"function"==typeof o?o.bind(e):o}})}var ox=__webpack_require__("./src/libs/token-type.ts"),oh=__webpack_require__("./src/meta-aggregator/client/bluefin7k-client.ts"),oy=__webpack_require__("./src/meta-aggregator/client/cetus-client.ts"),ow=__webpack_require__("./src/meta-aggregator/client/error.ts"),oP=__webpack_require__("./src/meta-aggregator/client/flowx-client.ts"),oB=__webpack_require__("./src/meta-aggregator/aggregator/aggregator.ts");(g=eE||(eE={})).POOL_REGISTRY_OBJ_ID="0xfcc774493db2c45c79f688f88d28023a3e7d98e4ee9f48bbf5c7990f651577ae",g.PROTOCOL_FEE_VAULT_OBJ_ID="0xf194d9b1bcad972e45a7dd67dd49b3ee1e3357a00a50850c52cd51bb450e13b4",g.TREASURY_OBJ_ID="0x28e499dff5e864a2eafe476269a4f5035f1c16f338da7be18b103499abf271ce",g.INSURANCE_FUND_OBJ_ID="0xf0c40d67b078000e18032334c3325c47b9ec9f3d9ae4128be820d54663d14e3b",g.REFERRAL_VAULT_OBJ_ID="0x35d35b0e5b177593d8c3a801462485572fc30861e6ce96a55af6dc4730709278";var oF=__webpack_require__("./src/meta-aggregator/router/types.ts");(m=ex||(ex={})).LAST_PACKAGE_ID="0xf369250dc5a17e9d5a84a3b0cf5aea715c0682170e726dd601f03ade7ce4decb",m.swap=function(e){t6()(e.protocol===oF.S.AFTERMATH_CPMM);let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,coinLpType:c,packageId:u}=e;t.moveCall({target:`${u??m.LAST_PACKAGE_ID}::aftermath_cpmm_router::swap`,typeArguments:[i,s,c],arguments:[o,t.object(r),t.object(eE.POOL_REGISTRY_OBJ_ID),t.object(eE.PROTOCOL_FEE_VAULT_OBJ_ID),t.object(eE.TREASURY_OBJ_ID),t.object(eE.INSURANCE_FUND_OBJ_ID),t.object(eE.REFERRAL_VAULT_OBJ_ID),t.pure.bool(a),t.pure.u64(n)]})},(f=eh||(eh={})).STAKED_SUI_VAULT_OBJ_ID="0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d",f.SAFE_TREASURY_OBJECT_ID="0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610",f.REFERRAL_VAULT_OBJ_ID="0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef",f.VALIDATOR_ADDRESS="0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2",(b=ey||(ey={})).LAST_PACKAGE_ID="0x148c4e7ff5b308b2d520e050e6a21d986dd3eb203e0aa3eaaba28000977aebf1",b.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??b.LAST_PACKAGE_ID}::aftermath_lsd_router::swap`,arguments:[o,t.object(eh.STAKED_SUI_VAULT_OBJ_ID),t.object(eh.SAFE_TREASURY_OBJECT_ID),t.object(oe.SUI_SYSTEM_STATE_OBJECT_ID),t.object(eh.REFERRAL_VAULT_OBJ_ID),t.pure.address(eh.VALIDATOR_ADDRESS),t.pure.bool(r),t.pure.u64(a)]})},(A=ew||(ew={})).LAST_PACKAGE_ID="0x108d5d07cf873dec0bc8034db862db55d38e495c1f3ee0e124cf4861af834f25",A.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??A.LAST_PACKAGE_ID}::alphafi_lsd_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(oe.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.bool(n),t.pure.u64(a)]})},(I=eP||(eP={})).MEMEZ_AV_OBJ_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",I.MEMEZ_FUN_OBJ_ID="0x943948644f06942b8b660ca541b10a05f6a7be23ce4069944a3665e7e698930d",I.IPX_TREASURY_STANDARD_OBJ_ID="0x051e11b667659192917db94e5175fa066909d4dfc04d2663528f499c4afc6999",(C=eB||(eB={})).LAST_PACKAGE_ID="0x8b1e84ed9bc79d31160600254d65810f6bc6d2352f174a60ed041017d0a2a87a",C.swap=function(e){t6()(e.protocol===oF.S.BLASTFUN,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??C.LAST_PACKAGE_ID}::blastfun_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eP.MEMEZ_FUN_OBJ_ID),t.object(eP.IPX_TREASURY_STANDARD_OBJ_ID),t.object(eP.MEMEZ_AV_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(eF||(eF={})).GLOBAL_CONFIG_OBJ_ID="0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",(T=ek||(ek={})).LAST_PACKAGE_ID="0x9f8397124b6bdb55aeb7b5e43761e0e4dc94b9e22e94b1b25d8211d99df422d5",T.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??T.LAST_PACKAGE_ID}::bluefin_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(eF.GLOBAL_CONFIG_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(eD||(eD={})).DEX_INFO_OBJ_ID="0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92",(S=ev||(ev={})).LAST_PACKAGE_ID="0xf52bdd65ee347e8994170f8c331cf0c23a55281b3282467f14ccbb3e2a7f928f",S.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,coinAType:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??S.LAST_PACKAGE_ID}::bluemove_cpmm_router::swap`,typeArguments:[n,i],arguments:[o,t.object(eD.DEX_INFO_OBJ_ID),t.pure.bool(r),t.pure.u64(a)]})},(eL||(eL={})).ORACLE_OBJ_ID="0xfa3975b98f3d0e3df18ed88ae6e69db31836b3f4212df02fae144b1e5a89ca8e",(O=eR||(eR={})).LAST_PACKAGE_ID="0xfb4f0f6fe3ddc4253e05d0e147556ea7941300c7db4262d1a5993eb20a6cbdb3",O.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??O.LAST_PACKAGE_ID}::bolt_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(eL.ORACLE_OBJ_ID),t.object(oe.SUI_CLOCK_OBJECT_ID),t.pure.u64(s),t.pure.bool(i)]})},(eU||(eU={})).GLOBAL_CONFIG="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",(M=eN||(eN={})).LAST_PACKAGE_ID="0xb3dbb229464cb14b9f8cfa087e5b162623c8f485395dc9b975e263a5ee7051e4",M.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??M.LAST_PACKAGE_ID}::cetus_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eU.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(E=ej||(ej={})).GLOBAL_CONFIG_OBJ_ID="0xf31b605d117f959b9730e8c07b08b856cb05143c5e81d5751c90d2979e82f599",E.VERSIONED_OBJ_ID="0x05370b2d656612dd5759cbe80463de301e3b94a921dfc72dd9daa2ecdeb2d0a8",(x=eK||(eK={})).LAST_PACKAGE_ID="0x9ab3ba62b4327a7d90e4aed1c025b62736f035911ad7bab830c065ec84ef1ffa",x.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinAType:i,coinBType:s,packageId:c}=e,u=[o,t.object(ej.GLOBAL_CONFIG_OBJ_ID),t.object(ej.VERSIONED_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(oe.SUI_CLOCK_OBJECT_ID)];t.moveCall({target:`${c??x.LAST_PACKAGE_ID}::cetus_dlmm_router::swap`,typeArguments:[i,s],arguments:u})},(h=eG||(eG={})).GLOBAL_CONFIG="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135",h.DEEP_TYPE="0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",(y=eq||(eq={})).LAST_PACKAGE_ID="0xbc23dacd6f66386e4a512eef1f3b0ccaad8e7d24eac7432d67737b22f661a810",y.swap=function(e){t6()(e.protocol===oF.S.DEEPBOOK_V3,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,deepFeeCoin:c,packageId:u}=e,_=c||t.moveCall({target:"0x2::coin::zero",typeArguments:[eG.DEEP_TYPE]});t.moveCall({target:`${u??y.LAST_PACKAGE_ID}::deepbook_v3_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eG.GLOBAL_CONFIG),t.object(n),t.pure.u64(s),t.pure.bool(i),_,t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(eV||(eV={})).GLOBAL_OBJ_ID="0x935229a3c32399e9fb207ec8461a54f56c6af5744c64442435ac217ab28f0d59",(w=eY||(eY={})).LAST_PACKAGE_ID="0xfd86c0308327eae31c04560460ee6190220e4ae1cdf5b999eef1110bf0b0f2b8",w.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??w.LAST_PACKAGE_ID}::dip_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(eV.GLOBAL_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(e$||(e$={})).FERRA_GLOBAL_CONFIG_ID="0x2cd8382c19e6994f16df204e9b8cddd04bdc486c251de75ac66ac4e48e3e7081",(P=eJ||(eJ={})).LAST_PACKAGE_ID="0x70c4318f67d88ebe4e83bacad15f9e2f5c8becd77695f63dc4bd9393730851cd",P.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??P.LAST_PACKAGE_ID}::ferra_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(e$.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object("0x6")]})},(eH||(eH={})).FERRA_GLOBAL_CONFIG_ID="0x5c9dacf5a678ea15b8569d65960330307e23d429289ca380e665b1aa175ebeca",(B=eW||(eW={})).LAST_PACKAGE_ID="0x686e9eb19b04d46374c3fb82cb4ebb7b24ef8a9ae13f403915f4ae347e0f6593",B.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??B.LAST_PACKAGE_ID}::ferra_dlmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(eH.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(F=eX||(eX={})).POOL_REGISTRY_OBJ_ID="0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc",F.VERSIONED_OBJ_ID="0x67624a1533b5aff5d0dfcf5e598684350efd38134d2d245f475524c03a64e656",(k=ez||(ez={})).LAST_PACKAGE_ID="0x350a752d3388165e578cc33a39655a6da83613cf4e58c8d9d0723711c2603e17",k.swap=function(e){t6()(e.protocol===oF.S.FLOWX_CLMM);let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolFeeRate:n,amountIn:i,aToB:s,packageId:c}=e;t.moveCall({target:`${c??k.LAST_PACKAGE_ID}::flowx_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eX.POOL_REGISTRY_OBJ_ID),t.object(eX.VERSIONED_OBJ_ID),t.pure.u64(n),t.pure.u64(i),t.pure.bool(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(eQ||(eQ={})).CONTAINER_OBJ_ID="0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511",(D=eZ||(eZ={})).LAST_PACKAGE_ID="0xd95b440ad340bb6cbf571897d312e43d4b6de37b60c69ef714c94b9835cb8866",D.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??D.LAST_PACKAGE_ID}::flowx_cpmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eQ.CONTAINER_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(v=e0||(e0={})).GLOBAL_CONFIG_OBJ_ID="0xe93baa80cb570b3a494cbf0621b2ba96bc993926d34dc92508c9446f9a05d615",v.REWARDER_VAULT_OBJ_ID="0xfb971d3a2fb98bde74e1c30ba15a3d8bef60a02789e59ae0b91660aeed3e64e1",v.STATS_OBJ_ID="0x6822a33d1d971e040c32f7cc74507010d1fe786f7d06ab89135083ddb07d2dc2",v.PRICE_PROVIDER_OBJ_ID="0x854b2d2c0381bb656ec962f8b443eb082654384cf97885359d1956c7d76e33c9",(L=e6||(e6={})).LAST_PACKAGE_ID="0xf0bf13b5baaf3d368f165e846b919294bed79a3ab3ab0c9bd1e75f23533e44a5",L.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??L.LAST_PACKAGE_ID}::fullsail_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(e0.GLOBAL_CONFIG_OBJ_ID),t.object(e0.REWARDER_VAULT_OBJ_ID),t.object(e0.STATS_OBJ_ID),t.object(e0.PRICE_PROVIDER_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(R=e1||(e1={})).LAST_PACKAGE_ID="0x8969ed3e56c1dbdaf9df52f812d69c6c45fe5a4bab7093c88f5a8697a409398e",R.swap=function(e){t6()(e.protocol===oF.S.HAEDAL_CPMM);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdA:c,pythPriceFeedIdB:u,pythInfoObjectIdMap:_,packageId:l}=e,p=_.get(c),d=_.get(u);t6()(p,"Not found priceInfoAId in pythObjectIdMap"),t6()(d,"Not found priceInfoBId in pythObjectIdMap"),t.moveCall({target:`${l??R.LAST_PACKAGE_ID}::haedal_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(p),t.object(d),t.pure.u64(s),t.pure.bool(i),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(U=e4||(e4={})).LAST_PACKAGE_ID="0x5d01f22e5471a5912a88e15d62fdcb922beba65b8e8dfe1a715aebf743194f4a",U.swap=function(e){t6()(e.protocol===oF.S.HAEDAL_CPMM_V2);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdBase:c,pythInfoObjectIdMap:u,packageId:_}=e,l=u.get(c);t6()(l,"Not found pythPriceBaseId in pythObjectIdMap"),t.moveCall({target:`${_??U.LAST_PACKAGE_ID}::haedal_cpmm_v2_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(l),t.pure.u64(s),t.pure.bool(i),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(N=e3||(e3={})).LAST_PACKAGE_ID="0x1644956086caa5eb791eba152f3b69ba862b3a5382ef0e1d8a474ab158aafa1a",N.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,poolId:n,packageId:i}=e;t.moveCall({target:`${i??N.LAST_PACKAGE_ID}::haedal_lsd_router::swap`,arguments:[o,t.object(n),t.object(oe.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.bool(r),t.pure.u64(a)]})},(e2||(e2={})).STAKING_OBJ_ID="0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904",(e5||(e5={})).VALIDATOR_ID="0x7b3ba6de2ae58283f60d5b8dc04bb9e90e4796b3b2e0dea75569f491275242e7",(j=e9||(e9={})).LAST_PACKAGE_ID="0x7be077dd73c85e788c2a49a51f0627066d81d3dc9982c268e3691265a81d544d",j.swap=function(e){t6()(e.protocol===oF.S.HAEDAL_LSD_WAL),t6()(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??j.LAST_PACKAGE_ID}::haedal_wal_lsd_router::swap`,arguments:[o,t.object(e2.STAKING_OBJ_ID),t.object(r),t.pure.id(e5.VALIDATOR_ID),t.pure.bool(a),t.pure.u64(n)]})},(e8||(e8={})).VERSION_OBJ_ID="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78",(K=e7||(e7={})).LAST_PACKAGE_ID="0xcf141e1d18ff609b2ac56532b391f7648fc55e28696efe354186f5109c0eff06",K.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??K.LAST_PACKAGE_ID}::kriya_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(e8.VERSION_OBJ_ID),t.pure.bool(i),t.pure.u64(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(G=te||(te={})).LAST_PACKAGE_ID="0x50d37f46df75ef125ce656d4ac91b31b2cf0c1195752a96558561d163e45c223",G.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??G.LAST_PACKAGE_ID}::kriya_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(q=tt||(tt={})).FACTORY_OBJ_ID="0xedb456e93e423dd75a8ddebedd9974bb661195043027e32ce01649d6ccee74cf",q.GLOBAL_CONFIG_OBJ_ID="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(V=to||(to={})).LAST_PACKAGE_ID="0x950f94d33060c0575389c9f84fabab1e140776c6c84389d4237a0c2687a7adc9",V.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??V.LAST_PACKAGE_ID}::magma_almm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(tt.FACTORY_OBJ_ID),t.object(tt.GLOBAL_CONFIG_OBJ_ID),t.pure.u64(s),t.pure.bool(i),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(tr||(tr={})).GLOBAL_CONFIG="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(Y=ta||(ta={})).LAST_PACKAGE_ID="0xbe5f590339c55ca8ebbf93cedfb68aafd479d71e1c57043246f7dcf352745242",Y.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??Y.LAST_PACKAGE_ID}::magma_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(tr.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})};var ok=__webpack_require__("./src/meta-aggregator/external/metastable.ts");($=tn||(tn={})).LATEST_PACKAGE_ID="0xfab91518218f10204b083dba1e62c8bfc23f14fb87742158043e5faec4670ec4",$.swap=function(e){let t,o,r;t6()(e.protocol===oF.S.METASTABLE,"Invalid protocol");let{txb:a,swapContext:n,aToB:i,amountIn:s,coinAType:c,coinBType:u,poolId:_,metaCoin:l,packageId:p}=e,[d,g]=i?[c,u]:[u,c];d===l?(r="swap_from_meta_coin",t=[l,g],o=[ok.b.createCap({coinType:g,createCapFunc:"create_withdraw_cap",...e})]):g===l?(r="swap_to_meta_coin",t=[l,d],o=[ok.b.createCap({coinType:d,createCapFunc:"create_deposit_cap",...e})]):(r="swap",t=[l,d,g],o=[ok.b.createCap({coinType:d,createCapFunc:"create_deposit_cap",...e}),ok.b.createCap({coinType:g,createCapFunc:"create_withdraw_cap",...e})]),a.moveCall({target:`${p??$.LATEST_PACKAGE_ID}::metastable_router::${r}`,typeArguments:t,arguments:[n,a.object(_),a.object(ok.b.VERSION_OBJ_ID),...o,a.pure.u64(s)]})},(ti||(ti={})).VERSION_OBJ_ID="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a",(J=ts||(ts={})).LAST_PACKAGE_ID="0xba7ab4c8c39024fa0052bb4f00548a2e7b60742bb4ed0b87bc1d945fd8209102",J.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??J.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(ti.VERSION_OBJ_ID),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(tc||(tc={})).CONFIGURATION_OBJ_ID="0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4",(H=tu||(tu={})).LAST_PACKAGE_ID="0x5a259db4b1d17fafc09185c9a71bac36f25f9ee462e72894c8610e5a58b79f8f",H.swap=function(e){t6()(e.protocol===oF.S.MOVEPUMP,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,expectedAmountOut:s,packageId:c}=e;t.moveCall({target:`${c??H.LAST_PACKAGE_ID}::movepump_router::swap`,typeArguments:[n?a:r],arguments:[o,t.object(tc.CONFIGURATION_OBJ_ID),t.object(eD.DEX_INFO_OBJ_ID),t.object(oe.SUI_CLOCK_OBJECT_ID),t.pure.u64(s),t.pure.bool(n),t.pure.u64(i)]})},(t_||(t_={})).STATE_OBJ_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",(W=tl||(tl={})).LAST_PACKAGE_ID="0xd615fed37d692280047068e80d3a6bb685aa9d574608054c9df881d6a7378fab",W.swap=function(e){let t,o;t6()(e.protocol===oF.S.OBRIC);let{txb:r,swapContext:a,poolId:n,coinAType:i,coinBType:s,aToB:c,amountIn:u,pythInfoObjectIdMap:_,packageId:l}=e;"priceInfoObjIdA"in e?(t=e.priceInfoObjIdA,o=e.priceInfoObjIdB):(t=_.get(e.pythPriceFeedIdA),o=_.get(e.pythPriceFeedIdB),t6()(t,"Not found priceInfoAId in pythObjectIdMap"),t6()(o,"Not found priceInfoBId in pythObjectIdMap")),r.moveCall({target:`${l??W.LAST_PACKAGE_ID}::obric_router::swap`,typeArguments:[i,s],arguments:[a,r.object(n),r.pure.u64(u),r.pure.bool(c),r.object(t_.STATE_OBJ_ID),r.object(t),r.object(o),r.object(oe.SUI_CLOCK_OBJECT_ID)]})},(X=tp||(tp={})).VERSION_OBJ_ID="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",X.MARKET_OBJ_ID="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",(z=td||(td={})).LAST_PACKAGE_ID="0xea409bb08c8a09e4127f859d9c36b8b62ca609282aa1e443091db6b7a7409ee7",z.swap=function(e){t6()(e.protocol===oF.S.SCALLOP);let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,scoinTreasury:s,packageId:c}=e;t.moveCall({target:`${c??z.LAST_PACKAGE_ID}::scallop_router::swap`,typeArguments:[r,a],arguments:[o,t.object(tp.VERSION_OBJ_ID),t.object(tp.MARKET_OBJ_ID),t.object(s),t.pure.u64(i),t.pure.bool(n),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(tg||(tg={})).ORACLE_HOLDER_OBJ_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",(Q=tm||(tm={})).LAST_PACKAGE_ID="0x918a30e2a05d24ea9451e2d2900d055f74e6752f2e10251fa50c7175831b1958",Q.swap=function(e){t6()(e.protocol===oF.S.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:c,oracleConfigA:u,oracleConfigB:_,pythPriceFeedIdA:l,pythPriceFeedIdB:p,pythInfoObjectIdMap:d,packageId:g}=e,m=d.get(l),f=d.get(p);t6()(m,"Not found priceInfoAId in pythObjectIdMap"),t6()(f,"Not found priceInfoBId in pythObjectIdMap");let b=oS.L.newHolder(t);oS.L.getPrice({txb:t,coinPriceId:l,holder:b,coinOracleId:u}),oS.L.getPrice({txb:t,coinPriceId:p,holder:b,coinOracleId:_}),t.moveCall({target:`${g??Q.LAST_PACKAGE_ID}::sevenk_cpmm_router::swap`,typeArguments:[a,n,c],arguments:[o,t.object(r),t.object(tg.ORACLE_HOLDER_OBJ_ID),t.pure.bool(i),t.pure.u64(s)]})},(tf||(tf={})).CONFIGURATION_OBJ_ID="0xe79fff6c77d81f9a8efb729e25bf0037deec42518d40b978f274a4915d7e1ec9",(Z=tb||(tb={})).LAST_PACKAGE_ID="0x0a5dc665dc3c1c846a6d1e00811c84cae3510c839ab4dc0873f85dc8908d0606",Z.swap=function(e){t6()(e.protocol===oF.S.SEVENK_FUN,"Invalid protocol");let{txb:t,swapContext:o,aToB:r,amountIn:a,coinBType:n,packageId:i}=e;t.moveCall({target:`${i??Z.LAST_PACKAGE_ID}::sevenk_fun_router::swap`,typeArguments:[n],arguments:[o,t.object(tf.CONFIGURATION_OBJ_ID),t.object(eQ.CONTAINER_OBJ_ID),t.object(oe.SUI_CLOCK_OBJECT_ID),t.pure.bool(r),t.pure.u64(a)]})},(ee=tA||(tA={})).LAST_PACKAGE_ID="0xa6d129c0b314e85d1bc5aecf305d64212bdd5d466457531f4f624fef5f2e7751",ee.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??ee.LAST_PACKAGE_ID}::springsui_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(oe.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.u64(a),t.pure.bool(n)]})},(tI||(tI={})).CONFIG_OBJ_ID="0x881fd0a12ca4fa48991f5c27ba57d17f1ec147fa15f43b3cb760cc3bd7ba9402",(et=tC||(tC={})).LAST_PACKAGE_ID="0xa314a64962ed4b91a6b4085de4dff2e631fd4c731dbca671a74489955df322ef",et.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(tI.CONFIG_OBJ_ID),t.pure.bool(a),t.pure.u64(n),t.object("0x6")];t.moveCall({target:`${c??et.LAST_PACKAGE_ID}::srm_cpmm_router::swap`,typeArguments:[i,s],arguments:u})},(er=(eo=tT||(tT={})).Oracle||(eo.Oracle={})).PACKAGE_ID="0xe84b649199654d18c38e727212f5d8dacfc3cf78d60d0a7fc85fd589f280eb2b",er.getPythPrice=function(e){let{txb:t,oracleRegistryId:o,priceInfoId:r,oracleIndex:a}=e;return t.moveCall({target:`${er.PACKAGE_ID}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(o),t.object(r),t.pure.u64(a),t.object(oe.SUI_CLOCK_OBJECT_ID)]})};var oD=tS||(tS={});function ov(e,t){t6()(e.protocol===oF.S.STEAMM_OMM||e.protocol===oF.S.STEAMM_OMM_V2,"Invalid protocol for steamm _swapOmm swap");let{txb:o,swapContext:r,poolId:a,coinAType:n,coinBType:i,aToB:s,amountIn:c,bankAId:u,bankBId:_,lendingMarketId:l,lendingMarketType:p,bCoinAType:d,bCoinBType:g,lpBCoinType:m,pythPriceFeedIdA:f,pythPriceFeedIdB:b,pythInfoObjectIdMap:A,oracleRegistryId:I,oracleIndexA:C,oracleIndexB:T,packageId:S}=e,O=A.get(f),M=A.get(b);t6()(O,"Not found priceInfoAId in pythObjectIdMap"),t6()(M,"Not found priceInfoBId in pythObjectIdMap");let E=tT.Oracle.getPythPrice({txb:o,oracleRegistryId:I,priceInfoId:O,oracleIndex:C}),x=tT.Oracle.getPythPrice({txb:o,oracleRegistryId:I,priceInfoId:M,oracleIndex:T});o.moveCall({target:`${S??oD.LAST_PACKAGE_ID}::${oL(t)}::swap`,typeArguments:[p,n,i,d,g,m],arguments:[r,o.object(a),o.object(u),o.object(_),o.object(l),E,x,o.pure.bool(s),o.pure.u64(c),o.object(oe.SUI_CLOCK_OBJECT_ID)]})}function oL(e){switch(e){case 0:return"steamm_omm_router";case 1:return"steamm_omm_v2_router"}}function oR(e){let{amountOut:t,aggregatorFeeBps:o,partnerFeeBps:r}=e,a=oU(t,o);return r&&(a=oU(a,r)),a}function oU(e,t){let o=BigInt(e)*BigInt(t)/BigInt(1e4);return(BigInt(e)-o).toString()}function oN(e){return Math.floor(100*e)}oD.LAST_PACKAGE_ID="0xd7430ec87be03b22e29ad95e811d8146fb0ece72037cf546618297def842b57e",oD.swapCpmm=function(e){t6()(e.protocol===oF.S.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:c,bankBId:u,lendingMarketId:_,lendingMarketType:l,bCoinAType:p,bCoinBType:d,lpBCoinType:g}=e;t.moveCall({target:`${oD.LAST_PACKAGE_ID}::steamm_cpmm_router::swap`,typeArguments:[l,a,n,p,d,g],arguments:[o,t.object(r),t.object(c),t.object(u),t.object(_),t.pure.bool(i),t.pure.u64(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},oD.swapOmm=function(e){ov(e,0)},oD.swapOmmV2=function(e){ov(e,1)},oD.getOmmRouterModule=oL,(ea=tO||(tO={})).LAST_PACKAGE_ID="0x7a1cf89025a60161e84809784d772263231fad08a7cb76a88ca1ba69e0a656da",ea.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??ea.LAST_PACKAGE_ID}::suiswap_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(en=tM||(tM={})).VERSIONED="0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676",en.POOL_REGISTRY="0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd",(ei=tE||(tE={})).LAST_PACKAGE_ID="0x79957062a7424ed9c2eb83932e4c4fcc3fee67ab3c8f6f874c54e417178bbb7a",ei.swap=function(e){t6()(e.protocol===oF.S.TRADEPORT_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,poolFeeRate:s,packageId:c}=e;t.moveCall({target:`${c??ei.LAST_PACKAGE_ID}::tradeport_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(tM.POOL_REGISTRY),t.pure.u64(s),t.object(tM.VERSIONED),t.pure.bool(n),t.pure.u64(i),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(tx||(tx={})).POOL_VERSIONED="0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f",(es=th||(th={})).LAST_PACKAGE_ID="0x512d63711ff38353fb167238b0529001b6871c1727c67ce3bf6ec23556b0f1da",es.swap=function(e){t6()(e.protocol===oF.S.TURBOS_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,coinFeeType:n,poolId:i,aToB:s,amountIn:c,packageId:u}=e;t.moveCall({target:`${u??es.LAST_PACKAGE_ID}::turbos_clmm_router::swap`,typeArguments:[r,a,n],arguments:[o,t.object(i),t.object(tx.POOL_VERSIONED),t.pure.bool(s),t.pure.u64(c),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(ty||(ty={})).CONFIGURATION_OBJ_ID="0xd86685fc3c3d989385b9311ef55bfc01653105670209ac4276ebb6c83d7df928",(ec=tw||(tw={})).LAST_PACKAGE_ID="0x1fad13f09797aa87a4385d0b1efb2de963ba16742447b1ad5a3b0c5b1d1c588b",ec.swap=function(e){t6()(e.protocol===oF.S.TURBOS_FUN,"Invalid protocol");let{txb:t,swapContext:o,coinBType:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??ec.LAST_PACKAGE_ID}::turbos_fun_router::swap`,typeArguments:[r],arguments:[o,t.object(ty.CONFIGURATION_OBJ_ID),t.object(oe.SUI_CLOCK_OBJECT_ID),t.pure.bool(a),t.pure.u64(n)]})},(tP||(tP={})).VOLO_CERT_METADATA_ID="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",(eu=tB||(tB={})).LAST_PACKAGE_ID="0x7c8d95256342f904d5f251776903a17905d87c95f387b3a35cc2aecc23b3c042",eu.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??eu.LAST_PACKAGE_ID}::volo_router::swap`,arguments:[o,t.object(r),t.object(tP.VOLO_CERT_METADATA_ID),t.object(oe.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.bool(a),t.pure.u64(n)]})},(e_=tF||(tF={})).RouterSwapFunctionMap={[oF.S.AFTERMATH_CPMM]:ex.swap,[oF.S.AFTERMATH_LSD]:ey.swap,[oF.S.ALPHAFI_LSD]:ew.swap,[oF.S.BLASTFUN]:eB.swap,[oF.S.BLUEFIN_CLMM]:ek.swap,[oF.S.BLUEMOVE_CPMM]:ev.swap,[oF.S.BOLT]:eR.swap,[oF.S.CETUS_CLMM]:eN.swap,[oF.S.CETUS_DLMM]:eK.swap,[oF.S.DEEPBOOK_V3]:eq.swap,[oF.S.DIP_CPMM]:eY.swap,[oF.S.FERRA_CLMM]:eJ.swap,[oF.S.FERRA_DLMM]:eW.swap,[oF.S.FLOWX_CPMM]:eZ.swap,[oF.S.FLOWX_CLMM]:ez.swap,[oF.S.FULLSAIL_CLMM]:e6.swap,[oF.S.HAEDAL_CPMM]:e1.swap,[oF.S.HAEDAL_CPMM_V2]:e4.swap,[oF.S.HAEDAL_LSD]:e3.swap,[oF.S.HAEDAL_LSD_WAL]:e9.swap,[oF.S.KRIYA_CLMM]:e7.swap,[oF.S.KRIYA_CPMM]:te.swap,[oF.S.MAGMA_ALMM]:to.swap,[oF.S.MAGMA_CLMM]:ta.swap,[oF.S.METASTABLE]:tn.swap,[oF.S.MOMENTUM_CLMM]:ts.swap,[oF.S.MOVEPUMP]:tu.swap,[oF.S.OBRIC]:tl.swap,[oF.S.SCALLOP]:td.swap,[oF.S.SEVENK_CPMM]:tm.swap,[oF.S.SEVENK_FUN]:tb.swap,[oF.S.SPRINGSUI]:tA.swap,[oF.S.SRM_CPMM]:tC.swap,[oF.S.STEAMM_CPMM]:tS.swapCpmm,[oF.S.STEAMM_OMM]:tS.swapOmm,[oF.S.STEAMM_OMM_V2]:tS.swapOmmV2,[oF.S.SUISWAP_CPMM]:tO.swap,[oF.S.TRADEPORT_CLMM]:tE.swap,[oF.S.TURBOS_CLMM]:th.swap,[oF.S.TURBOS_FUN]:tw.swap,[oF.S.VOLO]:tB.swap},e_.swap=function(e){(0,e_.RouterSwapFunctionMap[e.protocol])(e)},(tk||(tk={})).buildAggregatorSwapTransaction=async function(e){let{tx:t,coinOutType:o,tradePaths:r,pythConnections:a,pythClient:n,packageIdMap:i}=e,s=oB.u.openSwap(e),c=await oS.j.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];tF.swap({...o,txb:t,swapContext:s,amountIn:o.amountIn,coinAType:a,coinBType:n,packageId:i?.get(o.protocol),pythInfoObjectIdMap:c})}return oB.u.closeSwap({tx:t,coinOutType:o,swapSession:s})};let oj=oS.j.newPythConnections(),oK=oS.j.newPythClient();var oG=tD||(tD={});function oq(e){var t,o,r;let a,n,{buildTxParam:i,rawRouteParam:s}=e;switch(s.sourceRoute){case"CETUS":a=tH.M.convert(s.rawRoute);break;case"FLOWX":a=tQ.m.convert(s.rawRoute);break;case"SEVENK":a=tN.m.convert(s.rawRoute);break;default:throw Error("Unsupported source route")}let c=oN(i.aggregatorFeeRatePercent),u=i.partnerFeeRatePercent?oN(i.partnerFeeRatePercent):void 0,_=i.expectedAmountOut??oR({amountOut:a.amountOut,aggregatorFeeBps:c,partnerFeeBps:u}),l=(o=_,r=(t=i.slippagePercent)?Math.floor(100*t):100,n=BigInt(o)*BigInt(r??100)/BigInt(1e4),(BigInt(o)-n).toString());return{...i,...a,expectedAmountOut:_,minAmountOut:l,aggregatorFeeBps:c,partnerFeeBps:u,pythConnections:i.pythConnections??oj,pythClient:i.pythClient??oK}}oG.toMetaAggregatorBuildTxParams=oq,oG.buildTx=function(e){let t=oq(e);return tk.buildAggregatorSwapTransaction(t)};let oV=async(e,t,o)=>t<=0?e():new Promise((r,a)=>{let n=setTimeout(()=>a(new ow.u(`Timeout ${o??"operation"}`,ow.j.TIMEOUT,{timeout:t})),t);e().then(r).catch(a).finally(()=>clearTimeout(n))}),oY=(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)}},o$={SEVENK:{},FLOWX:{},CETUS:{}};class oJ{client;providers={};options;constructor(e){this.options={providers:{...o$,...e?.providers},slippageBps:e?.slippageBps??100,fullnodeUrl:e?.fullnodeUrl??(0,o_.getFullnodeUrl)("mainnet"),hermesApi:e?.hermesApi??oS.j.PYTH_URLS,partner:e?.partner??t7.qb,partnerCommissionBps:e?.partnerCommissionBps??0,tipBps:e?.tipBps??0},this.client=new o_.SuiClient({url:this.options.fullnodeUrl})}async getQuoteClient(e){let t=this.providers[e];if(t)return t;let o=this.options.providers[e];switch(ow.u.assert(!!o,`Provider not found: ${e}`,ow.j.PROVIDER_NOT_FOUND,{provider:e}),e){case"SEVENK":{let{Bluefin7kClient:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,"./src/meta-aggregator/client/bluefin7k-client.ts")).catch(oH("SEVENK"));this.providers.SEVENK=new e(o,this.client);break}case"FLOWX":{let{FlowxClient:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,"./src/meta-aggregator/client/flowx-client.ts")).catch(oH("FLOWX"));this.providers.FLOWX=new e(o);break}case"CETUS":{let{CetusClient:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,"./src/meta-aggregator/client/cetus-client.ts")).catch(oH("CETUS"));this.providers.CETUS=new e(o,this.options,this.client);break}default:throw new ow.u(`Provider not supported: ${e}`,ow.j.PROVIDER_NOT_SUPPORTED,{provider:e})}return this.providers[e]}async getQuoteByClient(e,t){return await oV(async()=>{let o=await e.quote(t);return o?(o.amountOut=oR({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:(0,oe.normalizeStructTag)(e.coinTypeIn),coinTypeOut:(0,oe.normalizeStructTag)(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=(0,oe.normalizeSuiAddress)(o);ow.u.assert((0,oe.isValidSuiAddress)(i),`Invalid signer address: ${o}`,ow.j.INVALID_SIGNER_ADDRESS,{signer:o}),r.setSender(i);let s=(n??this.options.slippageBps)/1e4,c=this.options.partner&&this.options.partner!==t7.qb?this.options.partner:void 0,u=c&&this.options.partnerCommissionBps>0?this.options.partnerCommissionBps/1e4:void 0;return tD.buildTx({buildTxParam:{tx:r,inputCoin:a,expectedAmountOut:t.amountOut,slippagePercent:s,aggregatorFeeRatePercent:this.options.tipBps/1e4,aggregatorFeeRecipient:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff",partnerFeeRatePercent:u,partnerFeeRecipient:c,pythConnections:oS.j.newPythConnections(this.options.hermesApi),pythClient:oS.j.newPythClient(this.client)},rawRouteParam:{...t}})}}let oH=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 oW{sdk;_astrosAggregator;_aftermathAggregator;_sevenkAggregator;_cetusAggregator;_flowXAggregator;constructor(e){this.sdk=e,this._astrosAggregator=new tV({defaultTradeFee:e.options.tradeFee,astrosApiKey:e.options.astrosApiKey},e.suiClient),this._aftermathAggregator=new tG({defaultTradeFee:e.options.tradeFee,aftermathApiKey:e.options.aftermathApiKey,aftermathApiEndpoint:e.options.aftermathApiEndpoint},e.suiClient),this._sevenkAggregator=new tj({defaultTradeFee:e.options.tradeFee,sevenKApiKey:e.options.sevenKApiKey},e.suiClient),this._cetusAggregator=new tW({defaultTradeFee:e.options.tradeFee,cetusApiKey:e.options.cetusApiKey,cetusApiEndpoint:e.options.cetusApiEndpoint,cetusPartnerId:e.options.cetusPartnerId},e.suiClient),this._flowXAggregator=new tZ({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 tX.ASTROS:{let e,r=await this._astrosAggregator.getTradeRoute(t);if(!r)return null;let a=tV.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(tU())(r.amount_out).multipliedBy(1-e).toFixed(0,3)),o={route:a,aggregatorRoute:r};break}case tX.AFTERMATH:{let e=await this._aftermathAggregator.getTradeRoute(t);if(!e)return null;let r=tG.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case tX.SEVENK:{let e=await this._sevenkAggregator.getTradeRoute(t);if(!e)return null;let r=tj.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case tX.CETUS:{let e=await this._cetusAggregator.getTradeRoute(t);if(!e)return null;let r=tW.toCommonTradeRoutes(e,t.coinInType,t.coinOutType);if(!r)return null;o={route:r,aggregatorRoute:e};break}case tX.FLOWX:{let e=await this._flowXAggregator.getTradeRoute(t);if(!e)return null;let r=tZ.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e}}}return o}async getTransactionByRoute(e,t){switch(e){case tX.ASTROS:return this._astrosAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case tX.AFTERMATH:return this._aftermathAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage});case tX.SEVENK:return this._sevenkAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case tX.CETUS:return this._cetusAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case tX.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(tX),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(tX),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}}}let oX="0x25fa0eb553dd69fa6a8028f73a38f1df7f289fa88a58ed3d7dc5a5360155bb19",oz="0x8b1a8ac6e34688cd8f8f8e5fefa9d5fb9e1ff74d2f132f8e208ae5ac9cc530bb",oQ="0x13d101f44a0710a5475bec5f492a87b80e03d92d1cf540f26096f65850b23d26";class oZ{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({id:oz,options:{showContent:!0}});t6()(e.data?.content,"Config object not found or has no content"),t6()(e.data?.content.dataType==="moveObject","Config object is not a Move object");let t=e.data.content.fields,o=t.id.id,r=t.fee_receiver,a=t.tiers.fields.contents,n={};for(let e of a){let t=e.fields.key,o=e.fields.value.fields.duration,r=e.fields.value.fields.amount,a=e.fields.value.fields.point,i=e.fields.value.fields.original_amount;n[t]={duration:BigInt(o),amount:BigInt(r),point:BigInt(a),originalAmount:BigInt(i)}}return{id:o,receiverAddress:r,tiers:n}}async buildPayBoostingTx({walletAddress:e,tierId:t,boostingCoinType:o,currentTx:r}){let a=await this.getConfig();t6()(t in a.tiers,"Invalid tier ID");let n=a.tiers[t].amount,i=r||new tL.Transaction,s=i.splitCoins(i.gas,[i.pure.u64(n)]);i.moveCall({target:`${oX}::boosting::pay`,typeArguments:[(0,oe.normalizeStructTag)(o)],arguments:[i.object(oz),i.pure.u64(t),s]}),i.setSender(e);let c=await t5(this.sdk.suiClient,i,e,0);return og({inheritTx:i,sender:e,feeAmount:c},this.sdk.suiClient)}async buildAddTierTx({adminAddress:e,tierId:t,duration:o,point:r,originalAmount:a,amount:n,currentTx:i}){let s=i||new tL.Transaction;s.moveCall({target:`${oX}::config::add_tier`,typeArguments:[],arguments:[s.object(oz),s.object(oQ),s.pure.u64(t),s.pure.u64(r),s.pure.u64(o),s.pure.u64(a),s.pure.u64(n)]}),s.setSender(e);let c=await t5(this.sdk.suiClient,s,e,0);return og({inheritTx:s,sender:e,feeAmount:c},this.sdk.suiClient)}async buildUpdateTierTx({adminAddress:e,tierId:t,duration:o,amount:r,originalAmount:a,point:n,currentTx:i}){let s=i||new tL.Transaction;s.moveCall({target:`${oX}::config::update_tier`,typeArguments:[],arguments:[s.object(oz),s.object(oQ),s.pure.u64(t),s.pure.u64(o),s.pure.u64(r),s.pure.u64(n),s.pure.u64(a)]}),s.setSender(e);let c=await t5(this.sdk.suiClient,s,e,0);return og({inheritTx:s,sender:e,feeAmount:c},this.sdk.suiClient)}async buildRemoveTierTx({adminAddress:e,tierId:t,currentTx:o}){let r=o||new tL.Transaction;r.moveCall({target:`${oX}::config::remove_tier`,typeArguments:[],arguments:[r.object(oz),r.object(oQ),r.pure.u64(t)]}),r.setSender(e);let a=await t5(this.sdk.suiClient,r,e,0);return og({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiver({adminAddress:e,newReceiverAddress:t,currentTx:o}){let r=o||new tL.Transaction;r.moveCall({target:`${oX}::config::update_fee_receiver`,typeArguments:[],arguments:[r.object(oz),r.object(oQ),r.pure.address(t)]}),r.setSender(e);let a=await t5(this.sdk.suiClient,r,e,0);return og({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildPayBoostingWithAdminTx({walletAddress:e,tierId:t,customAmount:o,boostingCoinType:r,currentTx:a}){let n=a||new tL.Transaction,i=n.splitCoins(n.gas,[n.pure.u64(o)]);n.moveCall({target:`${oX}::boosting::pay_with_admin`,typeArguments:[(0,oe.normalizeStructTag)(r)],arguments:[n.object(oQ),n.object(oz),n.pure.u64(t),n.pure.u64(o),i]}),n.setSender(e);let s=await t5(this.sdk.suiClient,n,e,0);return og({inheritTx:n,sender:e,feeAmount:s},this.sdk.suiClient)}}class o0{sdk;constructor(e){this.sdk=e}async getEstimatedAmountOut(e,t){let{coinInType:o,coinOutType:r}=t;t6()(o!==r,"coinInType and coinOutType must be different"),t6()((0,t7.tC)(o)||(0,t7.tC)(r),"One of coinInType or coinOutType must be SUI");let a=(0,t7.tC)(o);switch(e){case oA.MOONBAGS:if(a)return await eO.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);return await eO.getSuiAmountAfterSell({poolId:t.poolId,curveAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);case oA.BLAST_FUN:if(a)return await eI.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});return await eI.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;t6()(r!==a,"coinInType and coinOutType must be different"),t6()((0,t7.tC)(r)||(0,t7.tC)(a),"One of coinInType or coinOutType must be SUI");let n=(0,t7.tC)(r);switch(e){case oA.MOONBAGS:o=n?await eM.getBuyTransaction(t,this.sdk.suiClient):await eM.getSellTransaction(t,this.sdk.suiClient);break;case oA.BLAST_FUN:o=n?await eC.getBuyTransaction(t,this.sdk.suiClient):await eC.getSellTransaction(t,this.sdk.suiClient);break;default:throw Error(`Unsupported bonding curve platform: ${e}`)}return o}}let o6={prod:{packageId:"0x3dd678c250a667f1551bc4b9e35fd070896f4775dd2900d5cb2910d2aea0b068",configId:"0x3eb7bd15f61b7cc1a9fd36151e9c3d05aa37bfadb0a58c3a26a6c02c2e99f3ca",adminCapId:"0xf375fcb3d95934143766cab2028ab49441fa04ef2ce27c08c01004c455bcbad4",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"},staging:{packageId:"0xa83cd093ce5142649adae10d21fe87d55fa2df4e52a4292c77ba039bb12bfe67",configId:"0x19fb8f91946e58c068fa4238bdd7a531216a0c4dcfaa279a8a02c60cb02f6711",adminCapId:"0xd8139544d054702dfab6de4e9c55f162c8a6f30465935af56cffed99c5e1c2bd",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"}};class o1{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({id:o6[this.sdk.env].configId,options:{showContent:!0}});t6()(e.data,"Config object not found"),t6()(e.data.content,"Config object has no content"),t6()(e.data?.content.dataType==="moveObject","Config object is not a Move object");let t=e.data.content.fields,o=t.id.id,r=t.fee_receiver,a=t.paused,n=t.accepted_payment_type,i=t.plans.fields.contents,s={};for(let e of i){let t=e.fields.key,o=e.fields.value.fields.id,r=e.fields.value.fields.price,a=e.fields.value.fields.month_interval,n=e.fields.value.fields.ptype;s[t]={id:BigInt(o),price:BigInt(r),monthInterval:a,planType:n}}return{id:o,plans:s,feeReceiverWallet:r,paused:a,acceptedPaymentType:n}}async buildSubscribeCyclePlanTx({walletAddress:e,planId:t,reference:o,paymentCoinType:r=o6[this.sdk.env].paymentCoinType,currentTx:a}){let n=await this.getConfig();t6()(!n.paused,"Contract is paused"),t6()(t in n.plans,"Invalid plan ID");let i=n.plans[t],s=i.price*BigInt(i.monthInterval),{tx:c,coinData:u}=await oo({account:e,amount:s.toString(),splits:[s.toString()],coinType:r,inheritTx:a},this.sdk.suiClient);c.moveCall({target:`${o6[this.sdk.env].packageId}::subscription::subscribe_cycle_plan`,typeArguments:[r],arguments:[c.object(o6[this.sdk.env].configId),c.pure.u64(t),c.pure.string(o),u]}),c.setSender(e);let _=await t5(this.sdk.suiClient,c,e,0);return og({inheritTx:c,sender:e,feeAmount:_},this.sdk.suiClient)}async buildBuyMoreCUPlanTx({walletAddress:e,planId:t,reference:o,paidAmount:r,paymentCoinType:a=o6[this.sdk.env].paymentCoinType,currentTx:n}){let i=await this.getConfig();t6()(!i.paused,"Contract is paused"),t6()(t in i.plans,"Invalid plan ID");let{tx:s,coinData:c}=await oo({account:e,amount:r.toString(),splits:[r.toString()],coinType:a,inheritTx:n},this.sdk.suiClient);s.moveCall({target:`${o6[this.sdk.env].packageId}::subscription::buy_more_cu`,typeArguments:[a],arguments:[s.object(o6[this.sdk.env].configId),s.pure.u64(t),s.pure.string(o),s.pure.u64(r),c]}),s.setSender(e);let u=await t5(this.sdk.suiClient,s,e,0);return og({inheritTx:s,sender:e,feeAmount:u},this.sdk.suiClient)}async buildSubscribePlanWithAdminTx({walletAddress:e,planId:t,reference:o,customAmount:r,paymentCoinType:a=o6[this.sdk.env].paymentCoinType,currentTx:n}){let i=await this.getConfig();t6()(!i.paused,"Contract is paused");let{tx:s,coinData:c}=await oo({account:e,amount:r.toString(),splits:[r.toString()],coinType:a,inheritTx:n},this.sdk.suiClient);s.moveCall({target:`${o6[this.sdk.env].packageId}::subscription::subscribe_plan_with_admin`,typeArguments:[a],arguments:[s.object(o6[this.sdk.env].adminCapId),s.object(o6[this.sdk.env].configId),s.pure.u64(t),s.pure.string(o),s.pure.u64(r),c]}),s.setSender(e);let u=await t5(this.sdk.suiClient,s,e,0);return og({inheritTx:s,sender:e,feeAmount:u},this.sdk.suiClient)}async buildAddPlanTx({adminAddress:e,planId:t,planType:o,monthInterval:r,price:a,currentTx:n}){let i=n||new tL.Transaction;i.moveCall({target:`${o6[this.sdk.env].packageId}::config::add_plan`,typeArguments:[],arguments:[i.object(o6[this.sdk.env].configId),i.object(o6[this.sdk.env].adminCapId),i.pure.u64(t),i.pure.u8(o),i.pure.u8(r),i.pure.u64(a)]}),i.setSender(e);let s=await t5(this.sdk.suiClient,i,e,0);return og({inheritTx:i,sender:e,feeAmount:s},this.sdk.suiClient)}async buildUpdatePlanTx({adminAddress:e,planId:t,planType:o,monthInterval:r,price:a,currentTx:n}){let i=n||new tL.Transaction;i.moveCall({target:`${o6[this.sdk.env].packageId}::config::update_plan`,typeArguments:[],arguments:[i.object(o6[this.sdk.env].configId),i.object(o6[this.sdk.env].adminCapId),i.pure.u64(BigInt(t)),i.pure.u8(o),i.pure.u8(r),i.pure.u64(a)]}),i.setSender(e);let s=await t5(this.sdk.suiClient,i,e,0);return og({inheritTx:i,sender:e,feeAmount:s},this.sdk.suiClient)}async buildRemovePlanTx({adminAddress:e,planId:t,currentTx:o}){let r=o||new tL.Transaction;r.moveCall({target:`${o6[this.sdk.env].packageId}::config::remove_plan`,typeArguments:[],arguments:[r.object(o6[this.sdk.env].configId),r.object(o6[this.sdk.env].adminCapId),r.pure.u64(BigInt(t))]}),r.setSender(e);let a=await t5(this.sdk.suiClient,r,e,0);return og({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiverWalletTx({adminAddress:e,newFeeReceiverWallet:t,currentTx:o}){let r=o||new tL.Transaction;r.moveCall({target:`${o6[this.sdk.env].packageId}::config::update_fee_receiver`,typeArguments:[],arguments:[r.object(o6[this.sdk.env].configId),r.object(o6[this.sdk.env].adminCapId),r.pure.address(t)]}),r.setSender(e);let a=await t5(this.sdk.suiClient,r,e,0);return og({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildSetPausedTx({adminAddress:e,paused:t,currentTx:o}){let r=o||new tL.Transaction;r.moveCall({target:`${o6[this.sdk.env].packageId}::config::set_paused`,typeArguments:[],arguments:[r.object(o6[this.sdk.env].configId),r.object(o6[this.sdk.env].adminCapId),r.pure.bool(t)]}),r.setSender(e);let a=await t5(this.sdk.suiClient,r,e,0);return og({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildSetAcceptedPaymentTypeTx({adminAddress:e,paymentCoinType:t,currentTx:o}){let r=o||new tL.Transaction;r.moveCall({target:`${o6[this.sdk.env].packageId}::config::set_accepted_payment_type`,typeArguments:[t],arguments:[r.object(o6[this.sdk.env].configId),r.object(o6[this.sdk.env].adminCapId)]}),r.setSender(e);let a=await t5(this.sdk.suiClient,r,e,0);return og({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}}class o4{network;env;_suiClient;boostingModule;subscriptionModule;constructor(e="mainnet",t="prod"){this.network=e,this.env=t;const o=(0,o_.getFullnodeUrl)(e);this._suiClient=new o_.SuiClient({url:o}),this.subscriptionModule=new o1(this),this.boostingModule=new oZ(this)}get suiClient(){return this._suiClient}}let o3={tradeFeePercent:.01,tradeFeeRecipientAddress:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff"};class o2{network;env;options;_suiClient;aggregatorModule;curveModule;constructor(e,t="mainnet",o="prod"){this.options=e,this.network=t,this.env=o;const r=(0,o_.getFullnodeUrl)(t);this._suiClient=new o_.SuiClient({url:r}),this.aggregatorModule=new oW(this),this.curveModule=new o0(this)}get suiClient(){return this._suiClient}}let o5=require("@mysten/sui/keypairs/ed25519"),o9=.1;class o8{suiClient;constructor(e){this.suiClient=e}validatePrivateKey(e,t){t6()(e?.trim(),"Private key is required");let o=o5.Ed25519Keypair.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){t6()(e?.trim(),"Sender address is required"),t6()(t?.trim(),"Recipient address is required"),t6()(e!==t,"Sender and recipient cannot be the same"),t6()(o>0n,"Transfer amount must be at least 1 MIST");try{let r=new tL.Transaction,[a]=r.splitCoins(r.gas,[o]);r.transferObjects([a],t),r.setSender(e);let n=await this.suiClient.getReferenceGasPrice();r.setGasPrice(n);let i=await t5(this.suiClient,r,e,o9);r=await og({inheritTx:r,sender:e,feeAmount:i,suiInputAmount:o},this.suiClient);let s=await r.build({client:this.suiClient}),c=Buffer.from(s).toString("base64"),u=await r.getDigest();return{sender:e,recipient:t,amountMIST:o,txDraftBase64:c,txDigest:u}}catch(e){throw Error(`Failed to create draft transaction: ${e instanceof Error?e.message:"Unknown error"}`)}}async execute(e,t){try{t6()(e,"Draft transaction is required"),t6()(e.txDraftBase64?.trim(),"Transaction data is required");let o=this.validatePrivateKey(t,e.sender),r=(0,oe.fromBase64)(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){t6()(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"}}}})(),exports.ADMIN_CAP_ID=__webpack_exports__.ADMIN_CAP_ID,exports.AftermathAggregator=__webpack_exports__.AftermathAggregator,exports.AftermathCpmm=__webpack_exports__.AftermathCpmm,exports.AftermathLsd=__webpack_exports__.AftermathLsd,exports.AggregatorConverter=__webpack_exports__.AggregatorConverter,exports.AggregatorModule=__webpack_exports__.AggregatorModule,exports.AggregatorProtocol=__webpack_exports__.AggregatorProtocol,exports.AstrosAggregator=__webpack_exports__.AstrosAggregator,exports.BASE_BPS=__webpack_exports__.BASE_BPS,exports.BLUEFIN_PACKAGE_ID=__webpack_exports__.BLUEFIN_PACKAGE_ID,exports.BOOSTING_PACKAGE_ID=__webpack_exports__.BOOSTING_PACKAGE_ID,exports.BlastFunConstants=__webpack_exports__.BlastFunConstants,exports.BlastFunCustomCalculation=__webpack_exports__.BlastFunCustomCalculation,exports.BlastFunCustomTransaction=__webpack_exports__.BlastFunCustomTransaction,exports.BlastFunPackage=__webpack_exports__.BlastFunPackage,exports.BlastFunSDKCalculation=__webpack_exports__.BlastFunSDKCalculation,exports.BlastFunSDKTransaction=__webpack_exports__.BlastFunSDKTransaction,exports.Blastfun=__webpack_exports__.Blastfun,exports.Bluefin7kClient=__webpack_exports__.Bluefin7kClient,exports.BluefinClmm=__webpack_exports__.BluefinClmm,exports.BluefinTx=__webpack_exports__.BluefinTx,exports.BluemoveCpmm=__webpack_exports__.BluemoveCpmm,exports.Bolt=__webpack_exports__.Bolt,exports.BoostingModule=__webpack_exports__.BoostingModule,exports.Bps=__webpack_exports__.Bps,exports.CLOCK_OBJECT_ID=__webpack_exports__.CLOCK_OBJECT_ID,exports.CONFIG_ID=__webpack_exports__.CONFIG_ID,exports.CetusAggregator=__webpack_exports__.CetusAggregator,exports.CetusAggregatorConverter=__webpack_exports__.CetusAggregatorConverter,exports.CetusClient=__webpack_exports__.CetusClient,exports.CetusClmm=__webpack_exports__.CetusClmm,exports.CetusDlmm=__webpack_exports__.CetusDlmm,exports.CurveModule=__webpack_exports__.CurveModule,exports.DEFAULT_TRADE_FEE=__webpack_exports__.DEFAULT_TRADE_FEE,exports.DeepbookV3=__webpack_exports__.DeepbookV3,exports.DipCpmm=__webpack_exports__.DipCpmm,exports.DraftTransferTx=__webpack_exports__.DraftTransferTx,exports.FerraClmm=__webpack_exports__.FerraClmm,exports.FerraDlmm=__webpack_exports__.FerraDlmm,exports.FlowXAggregator=__webpack_exports__.FlowXAggregator,exports.FlowXAggregatorConverter=__webpack_exports__.FlowXAggregatorConverter,exports.FlowxClient=__webpack_exports__.FlowxClient,exports.FlowxCpmm=__webpack_exports__.FlowxCpmm,exports.FullsailClmm=__webpack_exports__.FullsailClmm,exports.HaedalLsdWal=__webpack_exports__.HaedalLsdWal,exports.KriyaClmm=__webpack_exports__.KriyaClmm,exports.MagmaAlmm=__webpack_exports__.MagmaAlmm,exports.MagmaClmm=__webpack_exports__.MagmaClmm,exports.MathUtils=__webpack_exports__.MathUtils,exports.MetaAgError=__webpack_exports__.MetaAgError,exports.MetaAgErrorCode=__webpack_exports__.MetaAgErrorCode,exports.MetaAggregator=__webpack_exports__.MetaAggregator,exports.MetaClient=__webpack_exports__.MetaClient,exports.Metastable=__webpack_exports__.Metastable,exports.MomentumClmm=__webpack_exports__.MomentumClmm,exports.MoonbagsCalculation=__webpack_exports__.MoonbagsCalculation,exports.MoonbagsConstants=__webpack_exports__.MoonbagsConstants,exports.MoonbagsPackage=__webpack_exports__.MoonbagsPackage,exports.MoonbagsTransaction=__webpack_exports__.MoonbagsTransaction,exports.Movepump=__webpack_exports__.Movepump,exports.NATIVE_USDC_TOKEN_TYPE=__webpack_exports__.NATIVE_USDC_TOKEN_TYPE,exports.NoodlesPaySdk=__webpack_exports__.NoodlesPaySdk,exports.NoodlesSdk=__webpack_exports__.NoodlesSdk,exports.Obric=__webpack_exports__.Obric,exports.PythPrice=__webpack_exports__.PythPrice,exports.PythUtils=__webpack_exports__.PythUtils,exports.RouterUtils=__webpack_exports__.RouterUtils,exports.SUBSCRIPTION_CONFIG=__webpack_exports__.SUBSCRIPTION_CONFIG,exports.SUI_ADDRESS_ZERO=__webpack_exports__.SUI_ADDRESS_ZERO,exports.SUI_FULL_TYPE=__webpack_exports__.SUI_FULL_TYPE,exports.SUI_METADATA_OBJECT_ID=__webpack_exports__.SUI_METADATA_OBJECT_ID,exports.SUI_TYPE=__webpack_exports__.SUI_TYPE,exports.Scallop=__webpack_exports__.Scallop,exports.SevenKAggregator=__webpack_exports__.SevenKAggregator,exports.SevenKAggregatorConverter=__webpack_exports__.SevenKAggregatorConverter,exports.SevenkCpmm=__webpack_exports__.SevenkCpmm,exports.SevenkFun=__webpack_exports__.SevenkFun,exports.SrmCpmm=__webpack_exports__.SrmCpmm,exports.Steamm=__webpack_exports__.Steamm,exports.SubscriptionModule=__webpack_exports__.SubscriptionModule,exports.SupportedAggregator=__webpack_exports__.SupportedAggregator,exports.SupportedBondingCurve=__webpack_exports__.SupportedBondingCurve,exports.TradeFeeOptions=__webpack_exports__.TradeFeeOptions,exports.TradeportClmm=__webpack_exports__.TradeportClmm,exports.TurbosClmm=__webpack_exports__.TurbosClmm,exports.TurbosFun=__webpack_exports__.TurbosFun,exports.USDC_TOKEN_TYPE=__webpack_exports__.USDC_TOKEN_TYPE,exports.Volo=__webpack_exports__.Volo,exports.Walrus=__webpack_exports__.Walrus,exports.adaptSuiClient=__webpack_exports__.adaptSuiClient,exports.adaptTransaction=__webpack_exports__.adaptTransaction,exports.addGasFee=__webpack_exports__.addGasFee,exports.checkIsSui=__webpack_exports__.checkIsSui,exports.createCompatibleSuiClient=__webpack_exports__.createCompatibleSuiClient,exports.denormalizeTokenType=__webpack_exports__.denormalizeTokenType,exports.getAmountAfterFee=__webpack_exports__.getAmountAfterFee,exports.getCoinObjectIdsByAmount=__webpack_exports__.getCoinObjectIdsByAmount,exports.getExpectedReturn=__webpack_exports__.getExpectedReturn,exports.getMemezPumpSDK=__webpack_exports__.getMemezPumpSDK,exports.getMoveObject=__webpack_exports__.getMoveObject,exports.getMoveObjectContent=__webpack_exports__.getMoveObjectContent,exports.getNeededGasFee=__webpack_exports__.getNeededGasFee,exports.getSplitCoinForTx=__webpack_exports__.getSplitCoinForTx,exports.getSplitCoinsAfterFee=__webpack_exports__.getSplitCoinsAfterFee,exports.isSuiCoinType=__webpack_exports__.isSuiCoinType,exports.normalizeTokenType=__webpack_exports__.normalizeTokenType,exports.splitSuiCoinAfterFeeFromBuyTx=__webpack_exports__.splitSuiCoinAfterFeeFromBuyTx,exports.splitSuiCoinAfterFeeFromSellTx=__webpack_exports__.splitSuiCoinAfterFeeFromSellTx,exports.timeout=__webpack_exports__.timeout,__webpack_exports__)-1===["ADMIN_CAP_ID","AftermathAggregator","AftermathCpmm","AftermathLsd","AggregatorConverter","AggregatorModule","AggregatorProtocol","AstrosAggregator","BASE_BPS","BLUEFIN_PACKAGE_ID","BOOSTING_PACKAGE_ID","BlastFunConstants","BlastFunCustomCalculation","BlastFunCustomTransaction","BlastFunPackage","BlastFunSDKCalculation","BlastFunSDKTransaction","Blastfun","Bluefin7kClient","BluefinClmm","BluefinTx","BluemoveCpmm","Bolt","BoostingModule","Bps","CLOCK_OBJECT_ID","CONFIG_ID","CetusAggregator","CetusAggregatorConverter","CetusClient","CetusClmm","CetusDlmm","CurveModule","DEFAULT_TRADE_FEE","DeepbookV3","DipCpmm","DraftTransferTx","FerraClmm","FerraDlmm","FlowXAggregator","FlowXAggregatorConverter","FlowxClient","FlowxCpmm","FullsailClmm","HaedalLsdWal","KriyaClmm","MagmaAlmm","MagmaClmm","MathUtils","MetaAgError","MetaAgErrorCode","MetaAggregator","MetaClient","Metastable","MomentumClmm","MoonbagsCalculation","MoonbagsConstants","MoonbagsPackage","MoonbagsTransaction","Movepump","NATIVE_USDC_TOKEN_TYPE","NoodlesPaySdk","NoodlesSdk","Obric","PythPrice","PythUtils","RouterUtils","SUBSCRIPTION_CONFIG","SUI_ADDRESS_ZERO","SUI_FULL_TYPE","SUI_METADATA_OBJECT_ID","SUI_TYPE","Scallop","SevenKAggregator","SevenKAggregatorConverter","SevenkCpmm","SevenkFun","SrmCpmm","Steamm","SubscriptionModule","SupportedAggregator","SupportedBondingCurve","TradeFeeOptions","TradeportClmm","TurbosClmm","TurbosFun","USDC_TOKEN_TYPE","Volo","Walrus","adaptSuiClient","adaptTransaction","addGasFee","checkIsSui","createCompatibleSuiClient","denormalizeTokenType","getAmountAfterFee","getCoinObjectIdsByAmount","getExpectedReturn","getMemezPumpSDK","getMoveObject","getMoveObjectContent","getNeededGasFee","getSplitCoinForTx","getSplitCoinsAfterFee","isSuiCoinType","normalizeTokenType","splitSuiCoinAfterFeeFromBuyTx","splitSuiCoinAfterFeeFromSellTx","timeout"].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_modules__={"./src/constant/sui.ts"(e,t,o){o.d(t,{IC:()=>s,N3:()=>n,P9:()=>a,VV:()=>c,lM:()=>i,nD:()=>r,qb:()=>u,tC:()=>_});let r="0x2::sui::SUI",a="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",n="0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",i="0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",s="0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",c="0x0000000000000000000000000000000000000000000000000000000000000006",u="0x0000000000000000000000000000000000000000000000000000000000000000";function _(e){return e===r||e===a}},"./src/libs/pyth.ts"(e,t,o){o.d(t,{L:()=>n,j:()=>i});var r,a,n,i,s=o("@mysten/sui/client"),c=o("@mysten/sui/utils");let u=require("@pythnetwork/pyth-sui-js");(r=n||(n={})).LAST_PACKAGE_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",r.newHolder=function(e){return e.moveCall({target:`${r.LAST_PACKAGE_ID}::oracle::new_holder`,typeArguments:[],arguments:[]})},r.getPrice=function(e){let{txb:t,coinOracleId:o,holder:a,coinPriceId:n}=e;t.moveCall({target:`${r.LAST_PACKAGE_ID}::pyth::get_price`,typeArguments:[],arguments:[t.object(o),a,t.object(n),t.object(c.SUI_CLOCK_OBJECT_ID)]})},(a=i||(i={})).PYTH_URLS=["https://hermes.pyth.network"],a.WORMHOLE_STATE_ID="0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",a.PYTH_STATE_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",a.newPythConnections=function(e){return e||(e=a.PYTH_URLS),e.map(e=>new u.SuiPriceServiceConnection(e,{timeout:3e3}))},a.newPythClient=function(e){return e||(e=new s.SuiClient({url:"https://fullnode.mainnet.sui.io:443"})),new u.SuiPythClient(e,a.PYTH_STATE_ID,a.WORMHOLE_STATE_ID)},a.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}},"./src/libs/token-type.ts"(e,t,o){o.d(t,{YY:()=>i,eP:()=>n,nr:()=>a});var r=o("./src/constant/sui.ts");function a(e){return e===r.nD?r.P9:e}function n(e){return e===r.P9?r.nD:e}function i(e){return e===r.P9||e===r.nD}},"./src/meta-aggregator/aggregator/aggregator.ts"(e,t,o){var r,a;o.d(t,{u:()=>r}),(a=r||(r={})).MAX_AMOUNT_IN="18446744073709551615",a.LAST_PACKAGE_ID="0x7e57926855b32baa3b3cabed89380b8d415606fdedadc18e58bd1ef1e60aee48",a.openSwap=function(e){let{tx:t,expectedAmountOut:o,minAmountOut:r,coinInType:n,coinOutType:i,inputCoin:s,aggregatorFeeBps:c,aggregatorFeeRecipient:u,partnerFeeRecipient:_,partnerFeeBps:l}=e,[p]=t.moveCall({target:`${a.LAST_PACKAGE_ID}::aggregator::open_swap`,typeArguments:[n,i],arguments:[t.pure.u64(o),t.pure.u64(r),s,t.pure.u32(c),t.pure.address(u),t.pure.u32(l??0),t.pure.option("address",_)]});return p},a.closeSwap=function(e){let{tx:t,coinOutType:o,swapSession:r}=e,[n]=t.moveCall({target:`${a.LAST_PACKAGE_ID}::aggregator::close_swap`,typeArguments:[o],arguments:[r]});return n}},"./src/meta-aggregator/client/bluefin7k-client.ts"(e,t,o){o.r(t),o.d(t,{Bluefin7kClient:()=>i});var r=o("@bluefin-exchange/bluefin7k-aggregator-sdk"),a=o("./src/meta-aggregator/converter-route/sevenk-aggregator-converter.ts"),n=o("./src/meta-aggregator/client/error.ts");class i{options;kind="SEVENK";constructor(e,t){this.options=e,e.apiKey&&r.Config.setApiKey(e.apiKey),r.Config.setSuiClient(t)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)a.m.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...a.m.SUPPORTED_PROTOCOLS);let o=await (0,r.getQuote)({tokenIn:e.coinTypeIn,tokenOut:e.coinTypeOut,amountIn:e.amountIn,sources:t,excludedPools:this.options.excludedPools,targetPools:this.options.targetPools});return n.u.assert(!!o,"No quote found",n.j.QUOTE_NOT_FOUND,{provider:this.kind}),{sourceRoute:"SEVENK",rawRoute:o,amountIn:o.swapAmountWithDecimal,amountOut:o.returnAmountWithDecimal,coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}},"./src/meta-aggregator/client/cetus-client.ts"(e,t,o){o.r(t),o.d(t,{CetusClient:()=>c});var r=o("@cetusprotocol/aggregator-sdk"),a=o("./src/libs/pyth.ts"),n=o("./src/meta-aggregator/converter-route/cetus-aggregator-converter.ts"),i=o("./src/meta-aggregator/client/error.ts");let s=a.j.PYTH_URLS;class c{options;kind="CETUS";cetusClient;constructor(e,t,o){this.options=e,this.cetusClient=new r.AggregatorClient({apiKey:e.apiKey,client:o,endpoint:e.api,env:r.Env.Mainnet,pythUrls:t.hermesApi?t.hermesApi:s})}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)n.M.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...n.M.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 i.u.assert(!!o,"No quote found",i.j.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}}}},"./src/meta-aggregator/client/error.ts"(e,t,o){o.d(t,{j:()=>a,u:()=>n});var r,a=((r={})[r.UNKNOWN=1e3]="UNKNOWN",r[r.TIMEOUT=1001]="TIMEOUT",r[r.PROVIDER_NOT_FOUND=1002]="PROVIDER_NOT_FOUND",r[r.PROVIDER_NOT_SUPPORTED=1003]="PROVIDER_NOT_SUPPORTED",r[r.INVALID_QUOTE=1004]="INVALID_QUOTE",r[r.QUOTE_NOT_FOUND=1005]="QUOTE_NOT_FOUND",r[r.INVALID_SIGNER_ADDRESS=1006]="INVALID_SIGNER_ADDRESS",r[r.PROVIDER_NOT_SUPPORT_SWAP=1007]="PROVIDER_NOT_SUPPORT_SWAP",r[r.SIMULATION_FAILED=1008]="SIMULATION_FAILED",r);class n 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 n(t??"Assertion failed",o,r)}}},"./src/meta-aggregator/client/flowx-client.ts"(e,t,o){o.r(t),o.d(t,{FlowxClient:()=>n});var r=o("@flowx-finance/sdk"),a=o("./src/meta-aggregator/converter-route/flowx-aggregator-converter.ts");class n{options;kind="FLOWX";quoter;constructor(e){this.options=e,this.quoter=new r.AggregatorQuoter("mainnet",e.apiKey)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)a.m.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...a.m.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}}}},"./src/meta-aggregator/converter-route/cetus-aggregator-converter.ts"(e,t,o){o.d(t,{M:()=>r});var r,a=o("@cetusprotocol/aggregator-sdk"),n=o("@minswap/tiny-invariant"),i=o.n(n),s=o("./src/meta-aggregator/aggregator/aggregator.ts"),c=o("./src/meta-aggregator/external/metastable.ts"),u=o("./src/meta-aggregator/router/types.ts");!function(e){let t=[a.CETUS,a.KRIYA,a.FLOWXV2,a.FLOWXV3,a.KRIYAV3,a.TURBOS,a.AFTERMATH,a.HAEDAL,a.VOLO,a.AFSUI,a.BLUEMOVE,a.DEEPBOOKV3,a.SCALLOP,a.SUILEND,a.BLUEFIN,a.HAEDALPMM,a.ALPHAFI,a.SPRINGSUI,a.STEAMM,a.METASTABLE,a.OBRIC,a.HAWAL,a.STEAMM_OMM,a.MOMENTUM,a.STEAMM_OMM_V2,a.MAGMA,a.SEVENK,a.HAEDALHMMV2,a.FULLSAIL,a.CETUSDLMM,a.FERRADLMM,a.FERRACLMM];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 n(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 _(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 a=e.paths[r],i=n(a);t.get(a.from)===r&&(i.amountIn=s.u.MAX_AMOUNT_IN),o.push(i)}return o}e.TO_META_AGGREGATOR_PATH_FN_MAP={[a.METASTABLE]:e=>{let t=r(e),o=e.extendedDetails,a=e.direction?e.target:e.from;i()(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 c.b.MetaCoinType.SUPER_SUI:return i()(o.metastable_registry_id,`METASTABLE_SUPER_SUI protocol requires 'metastable_registry_id' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:u.S.METASTABLE,metaCoin:a,registryId:o.metastable_registry_id};case c.b.MetaCoinType.MUSD:return i()(o.metastable_price_seed,`METASTABLE_MUSD protocol requires 'metastable_price_seed' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:u.S.METASTABLE,metaCoin:a,pythPriceFeedIdMeta:o.metastable_price_seed};case c.b.MetaCoinType.METH:return i()(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:u.S.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.`)}},[a.DEEPBOOKV3]:e=>({...r(e),protocol:u.S.DEEPBOOK_V3}),[a.AFTERMATH]:e=>{let t=e.extendedDetails;return i()(t?.aftermath_lp_supply_type,`AFTERMATH_CPMM protocol requires 'aftermath_lp_type' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:u.S.AFTERMATH_CPMM,coinLpType:t.aftermath_lp_supply_type}},[a.FLOWXV3]:e=>({...r(e),protocol:u.S.FLOWX_CLMM,poolFeeRate:String(1e6*e.feeRate)}),[a.HAEDALPMM]:e=>{let t=e.extendedDetails;return i()(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:u.S.HAEDAL_CPMM,pythPriceFeedIdA:t.haedal_pmm_base_price_seed,pythPriceFeedIdB:t.haedal_pmm_quote_price_seed}},[a.HAEDALHMMV2]:e=>{let t=e.extendedDetails;return i()(t?.haedalhmmv2_base_price_seed,`HAEDAL_CPMM_V2 protocol requires 'haedal_pyth_price_base_id' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:u.S.HAEDAL_CPMM_V2,pythPriceFeedIdBase:t.haedalhmmv2_base_price_seed}},[a.SCALLOP]:e=>(i()(e.extendedDetails?.scallop_scoin_treasury,`SCALLOP protocol requires 'scallop_scoin_treasury' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:u.S.SCALLOP,scoinTreasury:e.extendedDetails.scallop_scoin_treasury}),[a.STEAMM]:e=>{let t=e.extendedDetails;return i()(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:u.S.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}},[a.STEAMM_OMM]:e=>{let t=e.extendedDetails;return i()(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:u.S.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)}},[a.STEAMM_OMM_V2]:e=>{let t=e.extendedDetails;return i()(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:u.S.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)}},[a.OBRIC]:e=>{let t=r(e);if(e.extendedDetails?.obric_coin_a_price_id&&e.extendedDetails?.obric_coin_b_price_id)return{...t,protocol:u.S.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:u.S.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}.`)},[a.SEVENK]:e=>{let t=e.extendedDetails;return i()(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:u.S.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}},[a.TURBOS]:e=>(i()(e.extendedDetails?.turbos_fee_type,`TURBOS_CLMM protocol requires 'coinFeeType' parameter for pool ${e.id}. Provide it via the parametersMap argument.`),{...r(e),protocol:u.S.TURBOS_CLMM,coinFeeType:e.extendedDetails.turbos_fee_type}),[a.AFSUI]:e=>({...r(e),protocol:u.S.AFTERMATH_LSD}),[a.ALPHAFI]:e=>({...r(e),protocol:u.S.ALPHAFI_LSD}),[a.BLUEFIN]:e=>({...r(e),protocol:u.S.BLUEFIN_CLMM}),[a.BLUEMOVE]:e=>({...r(e),protocol:u.S.BLUEMOVE_CPMM}),[a.CETUS]:e=>({...r(e),protocol:u.S.CETUS_CLMM}),[a.CETUSDLMM]:e=>({...r(e),protocol:u.S.CETUS_DLMM}),[a.FERRACLMM]:e=>({...r(e),protocol:u.S.FERRA_CLMM}),[a.FERRADLMM]:e=>({...r(e),protocol:u.S.FERRA_DLMM}),[a.FLOWXV2]:e=>({...r(e),protocol:u.S.FLOWX_CPMM}),[a.FULLSAIL]:e=>({...r(e),protocol:u.S.FULLSAIL_CLMM}),[a.HAEDAL]:e=>({...r(e),protocol:u.S.HAEDAL_LSD}),[a.HAWAL]:e=>({...r(e),protocol:u.S.HAEDAL_LSD_WAL}),[a.KRIYA]:e=>({...r(e),protocol:u.S.KRIYA_CPMM}),[a.KRIYAV3]:e=>({...r(e),protocol:u.S.KRIYA_CLMM}),[a.MAGMA]:e=>({...r(e),protocol:u.S.MAGMA_CLMM}),[a.MOMENTUM]:e=>({...r(e),protocol:u.S.MOMENTUM_CLMM}),[a.SUILEND]:e=>({...r(e),protocol:u.S.SPRINGSUI}),[a.SPRINGSUI]:e=>({...r(e),protocol:u.S.SPRINGSUI}),[a.VOLO]:e=>({...r(e),protocol:u.S.VOLO})},e.toMetaAggregatorPath=n,e.toMetaAggregatorPaths=_,e.convert=function(e){return{coinInType:e.paths[0].from,coinOutType:e.paths[e.paths.length-1].target,amountOut:e.amountOut.toString(),tradePaths:_(e)}}}(r||(r={}))},"./src/meta-aggregator/converter-route/flowx-aggregator-converter.ts"(e,t,o){o.d(t,{m:()=>r});var r,a=o("@flowx-finance/sdk"),n=o("@minswap/tiny-invariant"),i=o.n(n),s=o("./src/meta-aggregator/aggregator/aggregator.ts"),c=o("./src/meta-aggregator/router/types.ts");!function(e){let t=[a.Protocol.HOP_FUN,a.Protocol.FLOWX_PMM,a.Protocol.DEEPBOOK,a.Protocol.IPX_TIDE,a.Protocol.METASTABLE];e.SUPPORTED_PROTOCOLS=Object.values(a.Protocol).filter(e=>!t.includes(e));let o={[a.Protocol.FLOWX_V2]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:c.S.FLOWX_CPMM}),[a.Protocol.FLOWX_V3]:t=>(i()(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.FLOWX_CLMM,poolFeeRate:t.poolFee.toString()}),[a.Protocol.CETUS]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.CETUS_CLMM}),[a.Protocol.CETUS_DLMM]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.CETUS_DLMM}),[a.Protocol.AFTERMATH]:t=>(i()(t.lpCoinType,`AFTERMATH protocol requires lpCoinType for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:c.S.AFTERMATH_CPMM,coinLpType:t.lpCoinType}),[a.Protocol.AFTERMATH_LSD]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:c.S.AFTERMATH_LSD}),[a.Protocol.ALPHA_FI]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:c.S.ALPHAFI_LSD}),[a.Protocol.BLUEFIN]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.BLUEFIN_CLMM}),[a.Protocol.BLUEMOVE]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:c.S.BLUEMOVE_CPMM}),[a.Protocol.DEEPBOOK_V3]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.DEEPBOOK_V3}),[a.Protocol.FERRA_CLMM]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.FERRA_CLMM}),[a.Protocol.FERRA_DLMM]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.FERRA_DLMM}),[a.Protocol.FULL_SAIL]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.FULLSAIL_CLMM}),[a.Protocol.HAEDAL]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:c.S.HAEDAL_LSD}),[a.Protocol.HAEDAL_PMM]:t=>{let o=t.oracles;return i()(o&&o.length>=2,`HAEDAL_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.HAEDAL_CPMM,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId}},[a.Protocol.KRIYA_DEX]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.KRIYA_CPMM}),[a.Protocol.KRIYA_V3]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.KRIYA_CLMM}),[a.Protocol.MAGMA_FINANCE]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.MAGMA_CLMM}),[a.Protocol.MAGMA_ALMM]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.MAGMA_ALMM}),[a.Protocol.MOMENTUM_FINANCE]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.MOMENTUM_CLMM}),[a.Protocol.OBRIC]:t=>(i()(t.xPriceId&&t.yPriceId,`OBRIC protocol requires price feeds for pool ${t.pool.id}`),i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.OBRIC,priceInfoObjIdA:t.xPriceId,priceInfoObjIdB:t.yPriceId}),[a.Protocol.SPRING_SUI]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:c.S.SPRINGSUI}),[a.Protocol.STEAMM]:t=>{i()(void 0!==t.bankXInfo&&void 0!==t.bankYInfo,`STEAMM protocol requires bank info for pool ${t.pool.id}`),i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),i()(void 0!==t.quoterType,`quoterType is required for pool ${t.pool.id}`),i()(void 0!==t.poolInfo,`poolInfo is required for pool ${t.pool.id}`),i()(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:c.S.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":{i()(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 i()(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:c.S.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}`)}},[a.Protocol.SEVENK_V1]:t=>{let o=t.oracles;return i()(o&&o.length>=2,`SEVENK_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),i()(t.poolStructTag,`SEVENK_V1 protocol requires poolStructTag for pool ${t.pool.id}`),i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.SEVENK_CPMM,coinLpType:t.poolStructTag,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId,oracleConfigA:o[0].oracleId??"",oracleConfigB:o[1].oracleId??""}},[a.Protocol.SUI_REWARDS]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.SRM_CPMM}),[a.Protocol.TURBOS_FIANCE]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.TURBOS_CLMM,coinFeeType:t.poolStructTag?t.poolStructTag.split("<")[1].split(",")[2].trim().replace(">",""):""}),[a.Protocol.VOLO_LSD]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:c.S.VOLO}),[a.Protocol.TRADEPORT]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),i()(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,poolFeeRate:t.poolFee.toString(),protocol:c.S.TRADEPORT_CLMM}),[a.Protocol.TURBOS_FUN]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.TURBOS_FUN}),[a.Protocol.BLUEMOVE_FUN]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,expectedAmountOut:t.amountOut.toString(),protocol:c.S.MOVEPUMP}),[a.Protocol.SEVEN_K_FUN]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.SEVENK_FUN}),[a.Protocol.DIPCOIN]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.DIP_CPMM}),[a.Protocol.BOLT]:t=>(i()(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:c.S.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=s.u.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)}}}(r||(r={}))},"./src/meta-aggregator/converter-route/sevenk-aggregator-converter.ts"(e,t,o){o.d(t,{m:()=>r});var r,a=o("@minswap/tiny-invariant"),n=o.n(a),i=o("@mysten/sui/utils"),s=o("./src/libs/token-type.ts"),c=o("./src/meta-aggregator/aggregator/aggregator.ts"),u=o("./src/meta-aggregator/router/types.ts");!function(e){let t=new Set(["bluefinx"]);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=>{n()(e.extra?.poolStructTag,"Aftermath protocol requires poolStructTag");let[t]=l(e.extra.poolStructTag);return{..._(e),protocol:u.S.AFTERMATH_CPMM,coinLpType:t}},flowx_v3:e=>{n()(e.extra?.swapFeeRate,"flowx_v3 protocol requires swapFeeRate");let t=e.extra.swapFeeRate;return{..._(e),protocol:u.S.FLOWX_CLMM,poolFeeRate:t}},turbos:e=>{n()(e.extra?.poolStructTag,"turbos protocol requires poolStructTag");let[t,o,r]=l(e.extra.poolStructTag);return{..._(e),protocol:u.S.TURBOS_CLMM,coinFeeType:r}},obric:e=>(n()(e.extra?.oracles,"obric protocol requires oracles"),{..._(e),protocol:u.S.OBRIC,pythPriceFeedIdA:p(e.extra.oracles[0]),pythPriceFeedIdB:p(e.extra.oracles[1])}),haedal_pmm:e=>(n()(e.extra.oracles,"haedal_pmm protocol requires oracles"),{..._(e),protocol:u.S.HAEDAL_CPMM,pythPriceFeedIdA:p(e.extra.oracles[0]),pythPriceFeedIdB:p(e.extra.oracles[1])}),sevenk_v1:e=>{n()(e.extra?.poolStructTag,"sevenk_v1 protocol requires poolStructTag"),n()(e.extra?.oracleConfigX,"sevenk_v1 protocol requires oracleConfigX"),n()(e.extra?.oracleConfigY,"sevenk_v1 protocol requires oracleConfigY");let t=e.extra.oracles?.[0]?.Pyth?.bytes,o=e.extra.oracles?.[1]?.Pyth?.bytes;n()(t,"sevenk_v1 protocol requires pythPriceFeedIdA"),n()(o,"sevenk_v1 protocol requires pythPriceFeedIdB");let[r,a,i]=l(e.extra.poolStructTag);return{..._(e),protocol:u.S.SEVENK_CPMM,coinLpType:i,pythPriceFeedIdA:t,pythPriceFeedIdB:o,oracleConfigA:e.extra.oracleConfigX,oracleConfigB:e.extra.oracleConfigY}},steamm:e=>{n()(e.extra?.poolStructTag,"steamm protocol requires poolStructTag"),n()(e.extra?.bankAStructTag,"steamm protocol requires bankAStructTag"),n()(e.extra?.lendingMarketA,"steamm protocol requires lendingMarketA"),n()(e.extra?.bankA,"steamm protocol requires bankA"),n()(e.extra?.bankB,"steamm protocol requires bankB");let[t,o,r,a]=l(e.extra.poolStructTag),[i,s,c]=l(e.extra.bankAStructTag);return{..._(e),protocol:u.S.STEAMM_CPMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:i,bCoinAType:t,bCoinBType:o,lpBCoinType:a}},steamm_oracle_quoter:e=>{n()(e.extra?.poolStructTag,"steamm_oracle_quoter protocol requires poolStructTag"),n()(e.extra?.bankAStructTag,"steamm_oracle_quoter protocol requires bankAStructTag"),n()(e.extra?.lendingMarketA,"steamm_oracle_quoter protocol requires lendingMarketA"),n()(e.extra?.oracleRegistry,"steamm_oracle_quoter protocol requires oracleRegistry"),n()(e.extra?.bankA,"steamm_oracle_quoter protocol requires bankA"),n()(e.extra?.bankB,"steamm_oracle_quoter protocol requires bankB"),n()(e.extra?.oracleIndexes,"steamm_oracle_quoter protocol requires oracleIndexes"),n()(e.extra?.oracles,"steamm_oracle_quoter protocol requires oracles");let[t,o,r,a]=l(e.extra?.poolStructTag),[i,s,c]=l(e.extra.bankAStructTag),[d,g]=e.extra.oracleIndexes;return{..._(e),protocol:u.S.STEAMM_OMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:i,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:p(e.extra.oracles[0]),pythPriceFeedIdB:p(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:d,oracleIndexB:g}},steamm_oracle_quoter_v2:e=>{n()(e.extra?.poolStructTag,"steamm_oracle_quoter_v2 protocol requires poolStructTag"),n()(e.extra?.bankAStructTag,"steamm_oracle_quoter_v2 protocol requires bankAStructTag"),n()(e.extra?.lendingMarketA,"steamm_oracle_quoter_v2 protocol requires lendingMarketA"),n()(e.extra?.oracleRegistry,"steamm_oracle_quoter_v2 protocol requires oracleRegistry"),n()(e.extra?.bankA,"steamm_oracle_quoter_v2 protocol requires bankA"),n()(e.extra?.bankB,"steamm_oracle_quoter_v2 protocol requires bankB"),n()(e.extra?.oracleIndexes,"steamm_oracle_quoter_v2 protocol requires oracleIndexes"),n()(e.extra?.oracles,"steamm_oracle_quoter_v2 protocol requires oracles");let[t,o,r,a]=l(e.extra?.poolStructTag),[i,s,c]=l(e.extra.bankAStructTag),[d,g]=e.extra.oracleIndexes;return{..._(e),protocol:u.S.STEAMM_OMM_V2,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:i,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:p(e.extra.oracles[0]),pythPriceFeedIdB:p(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:d,oracleIndexB:g}},cetus:e=>({..._(e),protocol:u.S.CETUS_CLMM}),bluemove:e=>({..._(e),protocol:u.S.BLUEMOVE_CPMM}),kriya:e=>({..._(e),protocol:u.S.KRIYA_CPMM}),kriya_v3:e=>({..._(e),protocol:u.S.KRIYA_CLMM}),deepbook_v3:e=>({..._(e),protocol:u.S.DEEPBOOK_V3}),flowx:e=>({..._(e),protocol:u.S.FLOWX_CPMM}),bluefin:e=>({..._(e),protocol:u.S.BLUEFIN_CLMM}),springsui:e=>({..._(e),protocol:u.S.SPRINGSUI}),magma:e=>({..._(e),protocol:u.S.MAGMA_CLMM}),momentum:e=>({..._(e),protocol:u.S.MOMENTUM_CLMM}),fullsail:e=>({..._(e),protocol:u.S.FULLSAIL_CLMM}),stsui:e=>({..._(e),protocol:u.S.ALPHAFI_LSD}),suiswap:e=>({..._(e),protocol:u.S.SUISWAP_CPMM}),cetus_dlmm:e=>({..._(e),protocol:u.S.CETUS_DLMM}),ferra_dlmm:e=>({..._(e),protocol:u.S.FERRA_DLMM}),ferra_clmm:e=>({..._(e),protocol:u.S.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=c.u.MAX_AMOUNT_IN;return o}function _(e){return{poolId:e.poolId,coinInType:e.assetIn,coinOutType:e.assetOut,amountIn:e.amount,aToB:e.swapXtoY}}function l(e){return(0,i.parseStructTag)(e||"").typeParams.map(i.normalizeStructTag)}function p(e){let t=e?.Pyth?.bytes||e?.Pyth?.price_identifier?.bytes;return n()(t,"Pyth price feed id is not found"),"0x"+(0,i.toHex)(Uint8Array.from(t))}e.toMetaAggregatorPath=r,e.toMetaAggregatorPaths=a,e.convert=function(e){var t,o,r;let i;n()(e.routes,"Invalid raw route: routes is missing");let c=(t=e.routes,i={},t.forEach(e=>{e.hops.forEach(e=>{i[e.poolId]=e.pool})}),i),u=a((o=e.swaps,r=c,o.map(e=>{let t=r[e.poolId],o=(0,s.eP)(e.assetIn),a=(0,s.eP)(e.assetOut),n={type:(0,s.eP)(t?.allTokens?.[0]?.address),decimals:t?.allTokens?.[0]?.decimal},i={type:(0,s.eP)(t?.allTokens?.[1]?.address),decimals:t?.allTokens?.[0]?.decimal},c=o===n.type;return{...e,pool:t,assetIn:o,assetOut:a,coinX:n,coinY:i,swapXtoY:c}})));return{coinInType:e.tokenIn,coinOutType:e.tokenOut,amountOut:e.returnAmountWithDecimal,tradePaths:u}}}(r||(r={}))},"./src/meta-aggregator/external/metastable.ts"(e,t,o){o.d(t,{b:()=>n});var r,a,n,i=o("@minswap/tiny-invariant"),s=o.n(i),c=o("@mysten/sui/utils");(r=n||(n={})).UNIVERSAL_META_VAULT_INTEGRATION_PACKAGE_ID="0xfd12517a9fc87c6a1f2357ad13b3421fb27a8bd7ca07d5fd5934ac35733baa47",(a=r.MetaCoinType||(r.MetaCoinType={})).SUPER_SUI="0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI",a.MUSD="0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD",a.METH="0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH",r.VERSION_OBJ_ID="0x4696559327b35ff2ab26904e7426a1646312e9c836d5c6cff6709a5ccc30915c",r.createCap=function(e){let t,{txb:o,coinType:r,metaCoin:a,createCapAllTypeParams:n,whitelistedAppId:i,poolId:u,pythInfoObjectIdMap:_,createCapPackageId:l,createCapModule:p,createCapFunc:d}=e,g=[a.toString()];switch(n&&g.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=_.get(e.pythPriceFeedIdMeta);s()(r,"Not found priceMetaId in pythObjectIdMap"),t=[o.object(i),o.object(u),o.object(r),o.object(c.SUI_CLOCK_OBJECT_ID)];break}case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":{let r=_.get(e.pythPriceFeedIdMeta);s()(r,"Not found priceId in pythObjectIdMap");let a=_.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.SUI_CLOCK_OBJECT_ID)];break}default:throw Error("Invalid MetaCoin: "+a.toString())}return o.moveCall({target:`${l}::${p}::${d}`,typeArguments:g,arguments:t})},r.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)}},r.isMetaCoinType=function(e){return Object.values(r.MetaCoinType).map(e=>e.toString()).includes(e)},r.getCreateCapAllTypeParams=function(e,t){switch(e){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":return t===r.UNIVERSAL_META_VAULT_INTEGRATION_PACKAGE_ID;case"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD":case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":return!0;default:throw Error("Invalid MetaCoin: "+e)}}},"./src/meta-aggregator/router/types.ts"(e,t,o){o.d(t,{S:()=>a});var r,a=((r={}).AFTERMATH_CPMM="aftermath_cpmm",r.AFTERMATH_LSD="aftermath_lsd",r.ALPHAFI_LSD="alphafi_lsd",r.BLASTFUN="blastfun",r.BLUEFIN_CLMM="bluefin_clmm",r.BLUEMOVE_CPMM="bluemove_cpmm",r.BOLT="bolt",r.CETUS_CLMM="cetus_clmm",r.CETUS_DLMM="cetus_dlmm",r.DEEPBOOK_V3="deepbook_v3",r.DIP_CPMM="dip_cpmm",r.FLOWX_CPMM="flowx_cpmm",r.FLOWX_CLMM="flowx_clmm",r.FULLSAIL_CLMM="fullsail_clmm",r.FERRA_CLMM="ferra_clmm",r.FERRA_DLMM="ferra_dlmm",r.HAEDAL_CPMM="haedal_cpmm",r.HAEDAL_CPMM_V2="haedal_cpmm_v2",r.HAEDAL_LSD="haedal_lsd",r.HAEDAL_LSD_WAL="haedal_lsd_wal",r.KRIYA_CLMM="kriya_clmm",r.KRIYA_CPMM="kriya_cpmm",r.MAGMA_ALMM="magma_almm",r.MAGMA_CLMM="magma_clmm",r.METASTABLE="metastable",r.MOMENTUM_CLMM="momentum_clmm",r.MOVEPUMP="movepump",r.OBRIC="obric",r.SCALLOP="scallop",r.SEVENK_CPMM="sevenk_cpmm",r.SEVENK_FUN="sevenk_fun",r.SPRINGSUI="springsui",r.SRM_CPMM="srm_cpmm",r.STEAMM_CPMM="steamm_cpmm",r.SUISWAP_CPMM="suiswap_cpmm",r.STEAMM_OMM="steamm_omm",r.STEAMM_OMM_V2="steamm_omm_v2",r.TRADEPORT_CLMM="tradeport_clmm",r.TURBOS_CLMM="turbos_clmm",r.TURBOS_FUN="turbos_fun",r.VOLO="volo",r)},"@bluefin-exchange/bluefin7k-aggregator-sdk"(e){e.exports=require("@bluefin-exchange/bluefin7k-aggregator-sdk")},"@cetusprotocol/aggregator-sdk"(e){e.exports=require("@cetusprotocol/aggregator-sdk")},"@flowx-finance/sdk"(e){e.exports=require("@flowx-finance/sdk")},"@minswap/tiny-invariant"(e){e.exports=require("@minswap/tiny-invariant")},"@mysten/sui/client"(e){e.exports=require("@mysten/sui/client")},"@mysten/sui/utils"(e){e.exports=require("@mysten/sui/utils")}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var o=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](o,o.exports,__webpack_require__),o.exports}__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 o in t)__webpack_require__.o(t,o)&&!__webpack_require__.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},__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__={};for(var __rspack_i in(()=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{MagmaAlmm:()=>tt,denormalizeTokenType:()=>ox.eP,KriyaClmm:()=>e9,TradeFeeOptions:()=>el,addGasFee:()=>og,getMemezPumpSDK:()=>od,DeepbookV3:()=>eG,BlastFunSDKCalculation:()=>eI,AftermathLsd:()=>eh,DraftTransferTx:()=>o9,MoonbagsConstants:()=>eT,NoodlesPaySdk:()=>o4,Bps:()=>eg,ADMIN_CAP_ID:()=>oQ,CetusClient:()=>oy.CetusClient,DipCpmm:()=>eV,SevenKAggregatorConverter:()=>tN.m,getMoveObject:()=>t4,MomentumClmm:()=>ti,CetusAggregatorConverter:()=>tH.M,MoonbagsCalculation:()=>eO,Steamm:()=>tT,FlowxClient:()=>oP.FlowxClient,Metastable:()=>ok.b,getSplitCoinsAfterFee:()=>t3,splitSuiCoinAfterFeeFromBuyTx:()=>oa,AftermathCpmm:()=>eE,BluemoveCpmm:()=>eD,AstrosAggregator:()=>tV,BlastFunSDKTransaction:()=>eC,CONFIG_ID:()=>oz,AftermathAggregator:()=>tG,CetusClmm:()=>eU,FlowXAggregator:()=>tZ,SevenkCpmm:()=>tg,adaptSuiClient:()=>oO,AggregatorModule:()=>oW,adaptTransaction:()=>oM,Obric:()=>t_,getNeededGasFee:()=>t5,createCompatibleSuiClient:()=>oE,FlowxCpmm:()=>eQ,FullsailClmm:()=>e0,SupportedAggregator:()=>tX,NATIVE_USDC_TOKEN_TYPE:()=>t7.lM,BOOSTING_PACKAGE_ID:()=>oX,SUI_TYPE:()=>t7.nD,USDC_TOKEN_TYPE:()=>t7.N3,isSuiCoinType:()=>t7.tC,normalizeTokenType:()=>ox.nr,SevenkFun:()=>tf,MetaAgErrorCode:()=>ow.j,MoonbagsPackage:()=>eS,SUI_FULL_TYPE:()=>t7.P9,AggregatorConverter:()=>tD,getCoinObjectIdsByAmount:()=>ot,Bluefin7kClient:()=>oh.Bluefin7kClient,timeout:()=>oV,getAmountAfterFee:()=>t2,Blastfun:()=>eP,PythPrice:()=>oS.L,MetaAggregator:()=>tk,TurbosFun:()=>ty,BLUEFIN_PACKAGE_ID:()=>or,SubscriptionModule:()=>o1,getExpectedReturn:()=>oY,splitSuiCoinAfterFeeFromSellTx:()=>on,checkIsSui:()=>ox.YY,MathUtils:()=>ed,CLOCK_OBJECT_ID:()=>t7.VV,CurveModule:()=>o0,DEFAULT_TRADE_FEE:()=>o3,BlastFunPackage:()=>em,CetusAggregator:()=>tW,MoonbagsTransaction:()=>eM,BlastFunCustomTransaction:()=>eA,NoodlesSdk:()=>o2,BoostingModule:()=>oZ,MetaAgError:()=>ow.u,PythUtils:()=>oS.j,AggregatorProtocol:()=>oF.S,FlowXAggregatorConverter:()=>tQ.m,HaedalLsdWal:()=>e5,FerraClmm:()=>e$,BluefinClmm:()=>eF,MagmaClmm:()=>tr,RouterUtils:()=>tF,SUBSCRIPTION_CONFIG:()=>o6,SrmCpmm:()=>tI,BlastFunCustomCalculation:()=>ef,FerraDlmm:()=>eH,MetaClient:()=>oJ,Movepump:()=>tc,BASE_BPS:()=>1e4,SupportedBondingCurve:()=>oA,Volo:()=>tP,BluefinTx:()=>eb,Scallop:()=>tp,getSplitCoinForTx:()=>oo,CetusDlmm:()=>ej,getMoveObjectContent:()=>t1,SUI_METADATA_OBJECT_ID:()=>t7.IC,TurbosClmm:()=>tx,Walrus:()=>e2,SUI_ADDRESS_ZERO:()=>t7.qb,SevenKAggregator:()=>tj,Bolt:()=>eL,BlastFunConstants:()=>ep,TradeportClmm:()=>tM});var e,t,o,r,a,n,i,s,c,u,_,l,p,d,g,m,f,b,A,I,C,T,S,O,M,E,x,h,y,w,P,B,F,k,D,v,L,R,U,N,j,K,G,q,V,Y,$,J,H,W,X,z,Q,Z,ee,et,eo,er,ea,en,ei,es,ec,eu,e_,el,ep,ed,eg,em,ef,eb,eA,eI,eC,eT,eS,eO,eM,eE,ex,eh,ey,ew,eP,eB,eF,ek,eD,ev,eL,eR,eU,eN,ej,eK,eG,eq,eV,eY,e$,eJ,eH,eW,eX,ez,eQ,eZ,e0,e6,e1,e4,e3,e2,e5,e8,e9,e7,te,tt,to,tr,ta,tn,ti,ts,tc,tu,t_,tl,tp,td,tg,tm,tf,tb,tA,tI,tC,tT,tS,tO,tM,tE,tx,th,ty,tw,tP,tB,tF,tk,tD,tv=__webpack_require__("@bluefin-exchange/bluefin7k-aggregator-sdk");let tL=require("@mysten/sui/transactions"),tR=require("bignumber.js");var tU=__webpack_require__.n(tR),tN=__webpack_require__("./src/meta-aggregator/converter-route/sevenk-aggregator-converter.ts");class tj{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){try{this._config.sevenKApiKey&&tv.Config.setApiKey(this._config.sevenKApiKey);let i=r?r.tradeFeePercent:this._config.defaultTradeFee.tradeFeePercent,s=n??(a?tN.m.SUPPORTED_PROTOCOLS:void 0);return await (0,tv.getQuote)({tokenIn:t,tokenOut:o,amountIn:e.toString(),commissionBps:1e4*i,sources:s})}catch(e){return null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:o,tradeFee:r}){let a,n;r?(a=r.tradeFeePercent,n=r.tradeFeeRecipientAddress):(a=this._config.defaultTradeFee.tradeFeePercent,n=this._config.defaultTradeFee.tradeFeeRecipientAddress);let i=await (0,tv.buildTx)({quoteResponse:t,slippage:o,accountAddress:e,commission:{partner:n,commissionBps:1e4*a}});return i.tx instanceof tv.BluefinXTx?tL.Transaction.from(i.tx.txBytes).build({client:this._suiClient}):(i.tx.setSender(e),i.tx.build({client:this._suiClient}))}}(tj||(tj={})).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(tU())(t.tokenInAmount).multipliedBy(10**o).toFixed(0,3)),i=BigInt(new(tU())(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(tU())(o.tokenInAmount).multipliedBy(10**a).toFixed(0,3)),s=BigInt(new(tU())(o.tokenOutAmount).multipliedBy(10**n).toFixed(0,3));t.push({paths:e,coinIn:o.tokenIn,coinOut:o.tokenOut,amountIn:i,amountOut:s})}return 0===t.length?null:{coinIn:e.tokenIn,coinOut:e.tokenOut,amountIn:BigInt(e.swapAmountWithDecimal),amountOut:BigInt(e.returnAmountAfterCommissionWithDecimal),routes:t}};let tK=require("aftermath-ts-sdk");class tG{_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 tK.Aftermath(this._config.aftermathApiEndpoint):this._aftermathClient=new tK.Aftermath("MAINNET"),await this._aftermathClient.init(),this._config.aftermathApiKey){let e=tK.Helpers.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})}}(tG||(tG={})).toCommonTradeRoutes=function(e){if(0===e.routes.length)return null;let t=[];for(let o of e.routes){let e=[];for(let t of o.paths)e.push({poolAddress:t.poolId,coinIn:t.coinIn.type,coinOut:t.coinOut.type,amountIn:BigInt(t.coinIn.amount),amountOut:BigInt(t.coinOut.amount)});0!==e.length&&t.push({paths:e,coinIn:o.coinIn.type,coinOut:o.coinOut.type,amountIn:o.coinIn.amount,amountOut:o.coinOut.amount})}return 0===t.length?null:{coinIn:e.coinIn.type,coinOut:e.coinOut.type,amountIn:e.coinIn.amount,amountOut:e.coinOut.amount,routes:t}};let tq=require("@naviprotocol/astros-aggregator-sdk");class tV{_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 (0,tq.getQuote)(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 n,i;n=r?{fee:r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let s=new(tU())(e.amount_out).multipliedBy(1-o-n.fee).toNumber(),c=new tL.Transaction;if("0x2::sui::SUI"===(a=e.from)||"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"===a)i=c.splitCoins(c.gas,[c.pure.u64(e.amount_in)]);else{let o=await (0,tq.getCoins)(this._suiClient,t,e.from),r=this.returnMergedCoins(c,o.data,Number.parseFloat(e.amount_in));i=c.splitCoins(r,[c.pure.u64(e.amount_in)])}let u=await (0,tq.buildSwapPTBFromQuote)(t,c,s,i,e,void 0,!1,this._config.astrosApiKey,{serviceFee:n});return c.transferObjects([u],t),c.setSender(t),c.build({client:this._suiClient})}}(tV||(tV={})).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}};var tY=__webpack_require__("@cetusprotocol/aggregator-sdk");let t$=require("bn.js");var tJ=__webpack_require__.n(t$);(el||(el={})).equals=function(e,t){return e.tradeFeePercent===t.tradeFeePercent&&e.tradeFeeRecipientAddress===t.tradeFeeRecipientAddress};var tH=__webpack_require__("./src/meta-aggregator/converter-route/cetus-aggregator-converter.ts");class tW{_config;_suiClient;_cetusClient;getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t,overlayFeeRate:o}){return{client:this._suiClient,overlayFeeReceiver:t,overlayFeeRate:o,env:tY.Env.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&&!el.equals(t,this._config.defaultTradeFee)?new tY.AggregatorClient(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t.tradeFeeRecipientAddress,overlayFeeRate:t.tradeFeePercent})):(this._cetusClient||(this._cetusClient=new tY.AggregatorClient(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?tH.M.SUPPORTED_PROTOCOLS:void 0);return await i.findRouters({from:t,target:o,amount:new(tJ())(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),n=new tL.Transaction;return n.setSender(t),await a.fastRouterSwap({router:e,txb:n,slippage:o}),n.build({client:this._suiClient})}}(tW||(tW={})).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 tX=((e={}).ASTROS="ASTROS",e.AFTERMATH="AFTERMATH",e.SEVENK="7K",e.CETUS="CETUS",e.FLOWX="FLOWX",e),tz=__webpack_require__("@flowx-finance/sdk"),tQ=__webpack_require__("./src/meta-aggregator/converter-route/flowx-aggregator-converter.ts");class tZ{_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 tz.Commission(r,new tz.Coin(e),tz.CommissionType.PERCENTAGE,1e6*o,!0)}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){let i=new tz.AggregatorQuoter("mainnet",this._config.flowxApiKey),s=n??(a?tQ.m.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 tz.TradeBuilder("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})))}}(tZ||(tZ={})).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}},(t=ep||(ep={})).PACKAGE_ID_V4="0x7e6aa6e179466ab2814425a780b122575296d011119fa69d27f289f5a28814bd",t.MEMEZ_AV_OBJECT_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0";var t0=__webpack_require__("@minswap/tiny-invariant"),t6=__webpack_require__.n(t0);async function t1(e,t){return(await t4(e,t)).fields}async function t4(e,t){let o=await e.getObject({id:t,options:{showContent:!0}}),r=o.data?.content;return t6()(r,"Pool object not found or has no content"),t6()("moveObject"===r.dataType,"Object is not a Move object"),r}function t3(e,t){let o=BigInt(e),r=BigInt(1e4*Number(t));if(r===BigInt(0))return[o.toString()];let a=o*r/BigInt(1e4);return[(o-a).toString(),a.toString()]}function t2(e,t){if(!t||0>=Number(t))return BigInt(e);let o=BigInt(e),r=BigInt(1e4*Number(t));if(r===BigInt(0))return o;let a=o*r/BigInt(1e4);return o-a}async function t5(e,t,o,r){let{effects:{gasUsed:a,status:n}}=await e.devInspectTransactionBlock({sender:o,transactionBlock:t});if("success"!==n.status)throw Error(`Transaction failed during dev inspect: ${n.error??""}`);let i=BigInt(a.computationCost)+BigInt(a.storageCost)-BigInt(a.storageRebate),s=BigInt(1e4*Number(r));return i*(BigInt(1e4)+s)/BigInt(1e4)}((o=ed||(ed={})).U64||(o.U64={})).mulDivUp=function(e,t,o){let r=BigInt(0);return e*t%o>BigInt(0)&&(r=BigInt(1)),e*t/o+r};var t8=eg||(eg={});function t9(e){return t6()(BigInt(e)<=BigInt(1e4),"Bps overflow"),BigInt(e)}t8.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},t8.sub=function(e,t){return t6()(BigInt(e.pos0)>=BigInt(t.pos0),"Bps underflow"),{pos0:(BigInt(e.pos0)-BigInt(t.pos0)).toString()}},t8.value=function(e){return BigInt(e.pos0)},t8.new_=function(e){return{pos0:t9(e).toString()}},t8.assertOverflow=t9,((r=em||(em={})).MemezFun||(r.MemezFun={})).isSniperProtectedMemezFun=async function(e,t){return(await t1(e,t)).public_key.length>0},(a=r.MemezFees||(r.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=eg.calcUp(eg.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")},a.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 eg.calcUp(eg.sub(r,t),o)}throw Error("Unknown fee variant")},(r.MemezBurner||(r.MemezBurner={})).calculate=function(e,t){if(eg.value(e.fee.fields)===BigInt(0)||t===BigInt(0)||t>=BigInt(e.target_liquidity))return eg.new_(0);let o=BigInt(1e4);return eg.new_(ed.U64.mulDivUp(eg.value(e.fee.fields),ed.U64.mulDivUp(t,o,BigInt(e.target_liquidity)),o))},(n=r.MemezPump||(r.MemezPump={})).getPumpState=async function(e,t){return await t1(e,t.inner_state)},n.pump=function(e,t){let o=e.constant_product.fields,a=r.MemezFees.takeWithDiscount(o.quote_swap_fee,t,o.quote_referrer_fee.fields),n=t-a,i=BigInt(o.meme_balance),s=BigInt(o.quote_balance),c=i*n/(BigInt(o.virtual_liquidity)+s+n),u=r.MemezFees.takeWithDiscount(o.meme_swap_fee,c,o.meme_referrer_fee.fields);return c-u},n.dump=function(e,t){let o=e.constant_product.fields,a=r.MemezFees.takeWithDiscount(o.meme_swap_fee,t,o.meme_referrer_fee.fields),n=t-a,i=BigInt(o.meme_balance),s=BigInt(o.quote_balance),c=BigInt(o.virtual_liquidity),u=r.MemezBurner.calculate(o.burner.fields,s),_=eg.calcUp(u,n),l=n-(eg.value(u)!==BigInt(0)?_:BigInt(0)),p=(c+s)*l/(i+l);p>s&&(p=s);let d=r.MemezFees.takeWithDiscount(o.quote_swap_fee,p,o.quote_referrer_fee.fields);return p-d},(i=ef||(ef={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,n=await t1(t,r),i=await em.MemezPump.getPumpState(t,n);return o=t2(o,a),em.MemezPump.pump(i,o)},i.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,n=await t1(t,r),i=await em.MemezPump.getPumpState(t,n);return t2(em.MemezPump.dump(i,o),a)};var t7=__webpack_require__("./src/constant/sui.ts"),oe=__webpack_require__("@mysten/sui/utils");let ot=async(e,t,o,r)=>{let a,n=[],i=!0;for(;i;)try{let o=await e.getCoins({owner:t,coinType:r,cursor:a});n=[...n,...o.data],i=o.hasNextPage,a=o.nextCursor}catch(e){console.error("Error fetching data:",e),i=!1}let s=((e,t,o)=>{let r;if(e?.length){do{r=!1;for(let a=0;a<e.length-1;a++){let n=BigInt(e[a][t]),i=BigInt(e[a+1][t]);if("desc"===o?n<i:n>i){let t=e[a];e[a]=e[a+1],e[a+1]=t,r=!0}}}while(r);return e}})(n.map(e=>({...e,balance:e.balance})),"balance","desc")??[],c="0",u=[],_=[];for(let e of s)if(c=(BigInt(e.balance)+BigInt(c)).toString(10),u.push(e.coinObjectId),_.push(e),BigInt(c)>=BigInt(o))break;return{objectIds:u,balance:c,objectCoins:_}};async function oo(e,t){let{account:o,amount:r,splits:a,coinType:n,inheritTx:i,inspecTransaction:s,isSponsored:c=!1}=e,u=i??new tL.Transaction,{objectIds:_,balance:l}=await ot(t,o,r,n);if(BigInt(l)<BigInt(r))throw Error(`Insufficient balance for type ${n}. Required: ${r}, Available: ${l}`);if(0===_.length)throw Error(`No coins found for type ${n} with sufficient balance. Required: ${r}`);let p=_[0];if((0,oe.normalizeStructTag)(n)===(0,oe.normalizeStructTag)(t7.P9)&&!c){let e;return s?(_.length>1&&u.mergeCoins(u.object(p),_.slice(1).map(e=>u.object(e))),e=u.splitCoins(u.object(p),a)):e=u.splitCoins(u.gas,a),{tx:u,coinData:e}}_.length>1&&u.mergeCoins(u.object(p),_.slice(1).map(e=>u.object(e)));let d=u.splitCoins(u.object(p),a);return{tx:u,coinData:d}}let or="0x62412b7268c35f3808336aee57a52836501f40b8ba5d936f8ad275e672befd04";async function oa(e,t){let o,r,{inputAmount:a,accountAddress:n,frontendFee:i,frontendFeeRecipient:s,extendTx:c,isSponsored:u}=e;t6()(e.inCoinType===t7.P9||e.inCoinType===t7.nD,"Input must be SUI");let{tx:_,coinIn:l}=c||{},p=t3(a,i||"0"),d=_||new tL.Transaction;if(l)o=d.splitCoins(l,p),eb.transferOrDestroyZeroCoin(d,t7.P9,l,n);else{let{coinData:e}=await oo({account:n,amount:a,splits:p,coinType:t7.P9,inheritTx:d,isSponsored:u||!1},t);o=e}if(i&&s){let[e,t]=o;r=e,d.transferObjects([t],d.pure.address(s||n))}else[r]=o;return{tx:d,coinOut:r}}async function on(e,t,o){if(t6()(t.outCoinType===t7.P9||t.outCoinType===t7.nD,"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:`${or}::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}}(eb||(eb={})).transferOrDestroyZeroCoin=function(e,t,o,r){e.moveCall({target:`${or}::utils::transfer_or_destroy`,typeArguments:[t],arguments:[o,e.pure.address(r)]})};var oi=eA||(eA={});async function os(e){let t=e||new tL.Transaction;return t.moveCall({target:`${ep.PACKAGE_ID_V4}::memez_allowed_versions::get_allowed_versions`,arguments:[t.object(ep.MEMEZ_AV_OBJECT_ID)],typeArguments:[]})}oi.getAllowedVersions=os,oi.buildBuyTx=async function(e,t){t6()(!await em.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 oa(e,t);t6()(r,"Coin out is required");let a=o.moveCall({target:`${ep.PACKAGE_ID_V4}::memez_pump::pump`,typeArguments:[e.outCoinType,t7.P9],arguments:[o.object(e.poolId),r,o.pure.vector("address",[]),o.pure.vector("vector<u8>",[]),o.pure.u64(e.minAmountOut),await os(o)]});return{tx:o,coinOut:a}},oi.buildSellTx=async function(e,t){t6()(e.outCoinType===t7.P9||e.outCoinType===t7.nD,"Output must be SUI");let o=await t1(t,e.poolId),{tx:r,coinData:a}=await oo({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[n]=a,[i]=r.moveCall({target:`${ep.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 os(r)]});return await on(r,e,i)};let oc=require("@interest-protocol/memez-fun-sdk"),ou=require("@interest-protocol/sui-core-sdk");var o_=__webpack_require__("@mysten/sui/client");let ol={network:ou.Network.MAINNET,fullNodeUrl:(0,o_.getFullnodeUrl)("mainnet")},op=new oc.MemezPumpSDK(ol);function od(){return op}async function og(e,t){let{inheritTx:o,sender:r,feeAmount:a,suiInputAmount:n}=e,i=o||new tL.Transaction;a>BigInt(0)&&i.setGasBudget(a);let{objectCoins:s}=await ot(t,r,(BigInt(n||"0")+a).toString(),t7.P9);return i.setGasPayment(s.map(e=>({objectId:e.coinObjectId,version:e.version,digest:e.digest}))),i}(s=eI||(eI={})).getCurveAmountAfterBuy=async function(e){let{suiAmount:t,poolId:o,frontendFee:r}=e;t=t2(t,r);let{memeAmountOut:a}=await op.quotePump({pool:o,amount:t});return a},s.getSuiAmountAfterSell=async function(e){let{curveAmount:t,poolId:o,frontendFee:r}=e,{quoteAmountOut:a}=await op.quoteDump({pool:o,amount:t});return t2(a,r)};var om=eC||(eC={});async function of(e,t){let{tx:o,coinOut:r}=await oa(e,t);t6()(r,"Coin out is required");let{memeCoin:a,tx:n}=await op.pump({pool:e.poolId,quoteCoin:r,minAmountOut:e.minAmountOut,tx:o});return{tx:n,coinOut:a}}async function ob(e,t){t6()((0,t7.tC)(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await oo({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,{quoteCoin:n,tx:i}=await op.dump({pool:e.poolId,memeCoin:a,tx:o,minAmountOut:e.minAmountOut});return await on(i,e,n)}om.buildBuyTx=of,om.buildSellTx=ob,om.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,t7.tC)(t),"coinInType must be SUI for buy transaction"),t6()(o!==t,"coinOutType must be different from coinInType"),t6()(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),t6()(e>0,"coinInAmount must be greater than 0");let c=await eI.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0}),u=BigInt(new(tU())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:_,coinOut:l}=await of({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},s);t6()(l,"Coin out is required"),_.transferObjects([l],_.pure.address(n)),_.setSender(n);let p=await t5(s,_,n,0);return(_=await og({inheritTx:_,sender:n,feeAmount:p,suiInputAmount:e},s)).build({client:s})},om.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,t7.tC)(o),"coinOutType must be SUI for sell transaction"),t6()(o!==t,"coinOutType must be different from coinInType"),t6()(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),t6()(e>0,"coinInAmount must be greater than 0");let c=await eI.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0}),u=BigInt(new(tU())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:_,coinOut:l}=await ob({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},s);t6()(l,"Coin out is required"),_.transferObjects([l],_.pure.address(n)),_.setSender(n);let p=await t5(s,_,n,0);return(_=await og({inheritTx:_,sender:n,feeAmount:p},s)).build({client:s})};var oA=((c={}).BLAST_FUN="BLAST_FUN",c.MOONBAGS="MOONBAGS",c);(u=eT||(eT={})).PACKAGE_ID="0xb8df325010942634a4afb3db3901ee215546af43a4ec4af781e7213b0bba7290",u.CONFIG_OBJECT_ID="0x74aecf86067c6913960ba4925333aefd2b1f929cafca7e21fd55a8f244b70499",u.LOCK_CONFIG_OBJECT_ID="0xfb09822d9808980abd04c51321adb850701f5f55535c6206658ef4d910c3e9be",u.BURN_MANAGER_OBJECT_ID="0x1d94aa32518d0cb00f9de6ed60d450c9a2090761f326752ffad06b2e9404f845",u.POOLS_OBJECT_ID="0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0",u.GLOBAL_CONFIG_OBJECT_ID="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",u.FEE_DENOMINATOR=BigInt(1e4),(l=(_=eS||(eS={})).Curves||(_.Curves={})).calculateAddLiquidityCost=function(e,t,o){return e*t/(t-o)-e},l.calculateRemoveLiquidityReturn=function(e,t,o){return t-e*t/(e+o)},l.calculateTokenAmountReceived=function(e,t,o){return t-e*t/(e+o)},(p=_.Moonbags||(_.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)},p.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),c=BigInt(r.remain_token_reserves.fields.balance),u=_.Curves.calculateRemoveLiquidityReturn(i,s,o),l=s-(n||c),p=u,d=o;u>l&&(p=l,d=_.Curves.calculateAddLiquidityCost(i,s,l)+BigInt(1));let g=d*BigInt(a.platform_fee)/eT.FEE_DENOMINATOR;return t6()(t>=d+g,"Input amount is less than used SUI + fee"),{receivedCurve:p,receivedSui:t-d-g}},p.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=_.Curves.calculateRemoveLiquidityReturn(n,a,t);s>i&&(s=i);let c=s*BigInt(r.platform_fee)/eT.FEE_DENOMINATOR,u=s-c;return{receivedCurve:BigInt(0),receivedSui:u}},(d=eO||(eO={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,[n,i,s]=await Promise.all([t1(t,r),t1(t,eT.CONFIG_OBJECT_ID),eS.Moonbags.getDynamicVirtualTokenReserves(t,r)]);void 0!==a&&(o=t2(o,a));let c=o*eT.FEE_DENOMINATOR/(eT.FEE_DENOMINATOR+BigInt(i.platform_fee)),{receivedCurve:u}=eS.Moonbags.buyExactInReturnsWithLock({inputAmount:o,amountIn:c,pool:n,config:i,dynamicVirtualTokenReserves:s});return u},d.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,[n,i]=await Promise.all([t1(t,r),t1(t,eT.CONFIG_OBJECT_ID)]),{receivedSui:s}=eS.Moonbags.sellReturns({amountIn:o,pool:n,config:i});return void 0!==a?t2(s,a):s},d.getUsedSuiForTx=async function(e,t){let{suiAmount:o,frontendFee:r}=e,a=await t1(t,eT.CONFIG_OBJECT_ID);return void 0!==r&&(o=t2(o,r)),o*eT.FEE_DENOMINATOR/(eT.FEE_DENOMINATOR+BigInt(a.platform_fee))};var oI=eM||(eM={});async function oC(e,t){let{tx:o,coinOut:r}=await oa(e,t);t6()(r,"Coin out is required");let a=await eO.getUsedSuiForTx({suiAmount:BigInt(e.inputAmount),frontendFee:e.frontendFee},t),[n,i]=o.moveCall({target:`${eT.PACKAGE_ID}::moonbags::buy_exact_in_returns_with_lock`,typeArguments:[e.outCoinType],arguments:[o.object(eT.CONFIG_OBJECT_ID),o.object(eT.LOCK_CONFIG_OBJECT_ID),r,o.pure.u64(a),o.pure.u64(e.minAmountOut),o.object(eT.BURN_MANAGER_OBJECT_ID),o.object(eT.POOLS_OBJECT_ID),o.object(eT.GLOBAL_CONFIG_OBJECT_ID),o.object(t7.IC),o.object(t7.VV)]});return eb.transferOrDestroyZeroCoin(o,t7.P9,n,e.accountAddress),{tx:o,coinOut:i}}async function oT(e,t){t6()((0,t7.tC)(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await oo({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,[n,i]=o.moveCall({target:`${eT.PACKAGE_ID}::moonbags::sell_returns`,typeArguments:[e.inCoinType],arguments:[o.object(eT.CONFIG_OBJECT_ID),a,o.pure.u64(e.minAmountOut),o.object(t7.VV)]});return eb.transferOrDestroyZeroCoin(o,e.inCoinType,i,e.accountAddress),await on(o,e,n)}oI.buildBuyTx=oC,oI.buildSellTx=oT,oI.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,t7.tC)(t),"coinInType must be SUI for buy transaction"),t6()(o!==t,"coinOutType must be different from coinInType"),t6()(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),t6()(e>0,"coinInAmount must be greater than 0");let c=await eO.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0},s),u=BigInt(new(tU())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:_,coinOut:l}=await oC({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},s);t6()(l,"Coin out is required"),_.transferObjects([l],_.pure.address(n)),_.setSender(n);let p=await t5(s,_,n,0);return(_=await og({inheritTx:_,sender:n,feeAmount:p,suiInputAmount:e},s)).build({client:s})},oI.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,t7.tC)(o),"coinOutType must be SUI for sell transaction"),t6()(o!==t,"coinOutType must be different from coinInType"),t6()(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),t6()(e>0,"coinInAmount must be greater than 0");let c=await eO.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0},s),u=BigInt(new(tU())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:_,coinOut:l}=await oT({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},s);t6()(l,"Coin out is required"),_.transferObjects([l],_.pure.address(n)),_.setSender(n);let p=await t5(s,_,n,0);return(_=await og({inheritTx:_,sender:n,feeAmount:p},s)).build({client:s})};var oS=__webpack_require__("./src/libs/pyth.ts");function oO(e){return e}function oM(e){return e}function oE(e){return new Proxy(e,{get(e,t){let o=e[t];return"function"==typeof o?o.bind(e):o}})}var ox=__webpack_require__("./src/libs/token-type.ts"),oh=__webpack_require__("./src/meta-aggregator/client/bluefin7k-client.ts"),oy=__webpack_require__("./src/meta-aggregator/client/cetus-client.ts"),ow=__webpack_require__("./src/meta-aggregator/client/error.ts"),oP=__webpack_require__("./src/meta-aggregator/client/flowx-client.ts"),oB=__webpack_require__("./src/meta-aggregator/aggregator/aggregator.ts");(g=eE||(eE={})).POOL_REGISTRY_OBJ_ID="0xfcc774493db2c45c79f688f88d28023a3e7d98e4ee9f48bbf5c7990f651577ae",g.PROTOCOL_FEE_VAULT_OBJ_ID="0xf194d9b1bcad972e45a7dd67dd49b3ee1e3357a00a50850c52cd51bb450e13b4",g.TREASURY_OBJ_ID="0x28e499dff5e864a2eafe476269a4f5035f1c16f338da7be18b103499abf271ce",g.INSURANCE_FUND_OBJ_ID="0xf0c40d67b078000e18032334c3325c47b9ec9f3d9ae4128be820d54663d14e3b",g.REFERRAL_VAULT_OBJ_ID="0x35d35b0e5b177593d8c3a801462485572fc30861e6ce96a55af6dc4730709278";var oF=__webpack_require__("./src/meta-aggregator/router/types.ts");(m=ex||(ex={})).LAST_PACKAGE_ID="0xf369250dc5a17e9d5a84a3b0cf5aea715c0682170e726dd601f03ade7ce4decb",m.swap=function(e){t6()(e.protocol===oF.S.AFTERMATH_CPMM);let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,coinLpType:c,packageId:u}=e;t.moveCall({target:`${u??m.LAST_PACKAGE_ID}::aftermath_cpmm_router::swap`,typeArguments:[i,s,c],arguments:[o,t.object(r),t.object(eE.POOL_REGISTRY_OBJ_ID),t.object(eE.PROTOCOL_FEE_VAULT_OBJ_ID),t.object(eE.TREASURY_OBJ_ID),t.object(eE.INSURANCE_FUND_OBJ_ID),t.object(eE.REFERRAL_VAULT_OBJ_ID),t.pure.bool(a),t.pure.u64(n)]})},(f=eh||(eh={})).STAKED_SUI_VAULT_OBJ_ID="0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d",f.SAFE_TREASURY_OBJECT_ID="0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610",f.REFERRAL_VAULT_OBJ_ID="0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef",f.VALIDATOR_ADDRESS="0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2",(b=ey||(ey={})).LAST_PACKAGE_ID="0x148c4e7ff5b308b2d520e050e6a21d986dd3eb203e0aa3eaaba28000977aebf1",b.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??b.LAST_PACKAGE_ID}::aftermath_lsd_router::swap`,arguments:[o,t.object(eh.STAKED_SUI_VAULT_OBJ_ID),t.object(eh.SAFE_TREASURY_OBJECT_ID),t.object(oe.SUI_SYSTEM_STATE_OBJECT_ID),t.object(eh.REFERRAL_VAULT_OBJ_ID),t.pure.address(eh.VALIDATOR_ADDRESS),t.pure.bool(r),t.pure.u64(a)]})},(A=ew||(ew={})).LAST_PACKAGE_ID="0x108d5d07cf873dec0bc8034db862db55d38e495c1f3ee0e124cf4861af834f25",A.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??A.LAST_PACKAGE_ID}::alphafi_lsd_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(oe.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.bool(n),t.pure.u64(a)]})},(I=eP||(eP={})).MEMEZ_AV_OBJ_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",I.MEMEZ_FUN_OBJ_ID="0x943948644f06942b8b660ca541b10a05f6a7be23ce4069944a3665e7e698930d",I.IPX_TREASURY_STANDARD_OBJ_ID="0x051e11b667659192917db94e5175fa066909d4dfc04d2663528f499c4afc6999",(C=eB||(eB={})).LAST_PACKAGE_ID="0x8b1e84ed9bc79d31160600254d65810f6bc6d2352f174a60ed041017d0a2a87a",C.swap=function(e){t6()(e.protocol===oF.S.BLASTFUN,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??C.LAST_PACKAGE_ID}::blastfun_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eP.MEMEZ_FUN_OBJ_ID),t.object(eP.IPX_TREASURY_STANDARD_OBJ_ID),t.object(eP.MEMEZ_AV_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(eF||(eF={})).GLOBAL_CONFIG_OBJ_ID="0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",(T=ek||(ek={})).LAST_PACKAGE_ID="0x9f8397124b6bdb55aeb7b5e43761e0e4dc94b9e22e94b1b25d8211d99df422d5",T.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??T.LAST_PACKAGE_ID}::bluefin_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(eF.GLOBAL_CONFIG_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(eD||(eD={})).DEX_INFO_OBJ_ID="0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92",(S=ev||(ev={})).LAST_PACKAGE_ID="0xf52bdd65ee347e8994170f8c331cf0c23a55281b3282467f14ccbb3e2a7f928f",S.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,coinAType:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??S.LAST_PACKAGE_ID}::bluemove_cpmm_router::swap`,typeArguments:[n,i],arguments:[o,t.object(eD.DEX_INFO_OBJ_ID),t.pure.bool(r),t.pure.u64(a)]})},(eL||(eL={})).ORACLE_OBJ_ID="0xfa3975b98f3d0e3df18ed88ae6e69db31836b3f4212df02fae144b1e5a89ca8e",(O=eR||(eR={})).LAST_PACKAGE_ID="0x2dd7b04509f332bdb93a8f228ab5c40b34baee4645b2ebe5e5fa2c3502b2c088",O.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??O.LAST_PACKAGE_ID}::bolt_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(eL.ORACLE_OBJ_ID),t.object(oe.SUI_CLOCK_OBJECT_ID),t.pure.u64(s),t.pure.bool(i)]})},(eU||(eU={})).GLOBAL_CONFIG="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",(M=eN||(eN={})).LAST_PACKAGE_ID="0xb3dbb229464cb14b9f8cfa087e5b162623c8f485395dc9b975e263a5ee7051e4",M.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??M.LAST_PACKAGE_ID}::cetus_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eU.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(E=ej||(ej={})).GLOBAL_CONFIG_OBJ_ID="0xf31b605d117f959b9730e8c07b08b856cb05143c5e81d5751c90d2979e82f599",E.VERSIONED_OBJ_ID="0x05370b2d656612dd5759cbe80463de301e3b94a921dfc72dd9daa2ecdeb2d0a8",(x=eK||(eK={})).LAST_PACKAGE_ID="0x9ab3ba62b4327a7d90e4aed1c025b62736f035911ad7bab830c065ec84ef1ffa",x.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinAType:i,coinBType:s,packageId:c}=e,u=[o,t.object(ej.GLOBAL_CONFIG_OBJ_ID),t.object(ej.VERSIONED_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(oe.SUI_CLOCK_OBJECT_ID)];t.moveCall({target:`${c??x.LAST_PACKAGE_ID}::cetus_dlmm_router::swap`,typeArguments:[i,s],arguments:u})},(h=eG||(eG={})).GLOBAL_CONFIG="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135",h.DEEP_TYPE="0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",(y=eq||(eq={})).LAST_PACKAGE_ID="0xff274b63c0f6e3a01f3dd0e923aefcb3146e05e2f6bef4ae339e2703b085f8ed",y.swap=function(e){t6()(e.protocol===oF.S.DEEPBOOK_V3,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,deepFeeCoin:c,packageId:u}=e,_=c||t.moveCall({target:"0x2::coin::zero",typeArguments:[eG.DEEP_TYPE]});t.moveCall({target:`${u??y.LAST_PACKAGE_ID}::deepbook_v3_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eG.GLOBAL_CONFIG),t.object(n),t.pure.u64(s),t.pure.bool(i),_,t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(eV||(eV={})).GLOBAL_OBJ_ID="0x935229a3c32399e9fb207ec8461a54f56c6af5744c64442435ac217ab28f0d59",(w=eY||(eY={})).LAST_PACKAGE_ID="0xfd86c0308327eae31c04560460ee6190220e4ae1cdf5b999eef1110bf0b0f2b8",w.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??w.LAST_PACKAGE_ID}::dip_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(eV.GLOBAL_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(e$||(e$={})).FERRA_GLOBAL_CONFIG_ID="0x2cd8382c19e6994f16df204e9b8cddd04bdc486c251de75ac66ac4e48e3e7081",(P=eJ||(eJ={})).LAST_PACKAGE_ID="0x70c4318f67d88ebe4e83bacad15f9e2f5c8becd77695f63dc4bd9393730851cd",P.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??P.LAST_PACKAGE_ID}::ferra_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(e$.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object("0x6")]})},(eH||(eH={})).FERRA_GLOBAL_CONFIG_ID="0x5c9dacf5a678ea15b8569d65960330307e23d429289ca380e665b1aa175ebeca",(B=eW||(eW={})).LAST_PACKAGE_ID="0x686e9eb19b04d46374c3fb82cb4ebb7b24ef8a9ae13f403915f4ae347e0f6593",B.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??B.LAST_PACKAGE_ID}::ferra_dlmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(eH.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(F=eX||(eX={})).POOL_REGISTRY_OBJ_ID="0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc",F.VERSIONED_OBJ_ID="0x67624a1533b5aff5d0dfcf5e598684350efd38134d2d245f475524c03a64e656",(k=ez||(ez={})).LAST_PACKAGE_ID="0x350a752d3388165e578cc33a39655a6da83613cf4e58c8d9d0723711c2603e17",k.swap=function(e){t6()(e.protocol===oF.S.FLOWX_CLMM);let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolFeeRate:n,amountIn:i,aToB:s,packageId:c}=e;t.moveCall({target:`${c??k.LAST_PACKAGE_ID}::flowx_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eX.POOL_REGISTRY_OBJ_ID),t.object(eX.VERSIONED_OBJ_ID),t.pure.u64(n),t.pure.u64(i),t.pure.bool(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(eQ||(eQ={})).CONTAINER_OBJ_ID="0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511",(D=eZ||(eZ={})).LAST_PACKAGE_ID="0xd95b440ad340bb6cbf571897d312e43d4b6de37b60c69ef714c94b9835cb8866",D.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??D.LAST_PACKAGE_ID}::flowx_cpmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eQ.CONTAINER_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(v=e0||(e0={})).GLOBAL_CONFIG_OBJ_ID="0xe93baa80cb570b3a494cbf0621b2ba96bc993926d34dc92508c9446f9a05d615",v.REWARDER_VAULT_OBJ_ID="0xfb971d3a2fb98bde74e1c30ba15a3d8bef60a02789e59ae0b91660aeed3e64e1",v.STATS_OBJ_ID="0x6822a33d1d971e040c32f7cc74507010d1fe786f7d06ab89135083ddb07d2dc2",v.PRICE_PROVIDER_OBJ_ID="0x854b2d2c0381bb656ec962f8b443eb082654384cf97885359d1956c7d76e33c9",(L=e6||(e6={})).LAST_PACKAGE_ID="0xf0bf13b5baaf3d368f165e846b919294bed79a3ab3ab0c9bd1e75f23533e44a5",L.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??L.LAST_PACKAGE_ID}::fullsail_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(e0.GLOBAL_CONFIG_OBJ_ID),t.object(e0.REWARDER_VAULT_OBJ_ID),t.object(e0.STATS_OBJ_ID),t.object(e0.PRICE_PROVIDER_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(R=e1||(e1={})).LAST_PACKAGE_ID="0x8969ed3e56c1dbdaf9df52f812d69c6c45fe5a4bab7093c88f5a8697a409398e",R.swap=function(e){t6()(e.protocol===oF.S.HAEDAL_CPMM);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdA:c,pythPriceFeedIdB:u,pythInfoObjectIdMap:_,packageId:l}=e,p=_.get(c),d=_.get(u);t6()(p,"Not found priceInfoAId in pythObjectIdMap"),t6()(d,"Not found priceInfoBId in pythObjectIdMap"),t.moveCall({target:`${l??R.LAST_PACKAGE_ID}::haedal_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(p),t.object(d),t.pure.u64(s),t.pure.bool(i),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(U=e4||(e4={})).LAST_PACKAGE_ID="0x5d01f22e5471a5912a88e15d62fdcb922beba65b8e8dfe1a715aebf743194f4a",U.swap=function(e){t6()(e.protocol===oF.S.HAEDAL_CPMM_V2);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdBase:c,pythInfoObjectIdMap:u,packageId:_}=e,l=u.get(c);t6()(l,"Not found pythPriceBaseId in pythObjectIdMap"),t.moveCall({target:`${_??U.LAST_PACKAGE_ID}::haedal_cpmm_v2_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(l),t.pure.u64(s),t.pure.bool(i),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(N=e3||(e3={})).LAST_PACKAGE_ID="0x1644956086caa5eb791eba152f3b69ba862b3a5382ef0e1d8a474ab158aafa1a",N.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,poolId:n,packageId:i}=e;t.moveCall({target:`${i??N.LAST_PACKAGE_ID}::haedal_lsd_router::swap`,arguments:[o,t.object(n),t.object(oe.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.bool(r),t.pure.u64(a)]})},(e2||(e2={})).STAKING_OBJ_ID="0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904",(e5||(e5={})).VALIDATOR_ID="0x7b3ba6de2ae58283f60d5b8dc04bb9e90e4796b3b2e0dea75569f491275242e7",(j=e8||(e8={})).LAST_PACKAGE_ID="0x7be077dd73c85e788c2a49a51f0627066d81d3dc9982c268e3691265a81d544d",j.swap=function(e){t6()(e.protocol===oF.S.HAEDAL_LSD_WAL),t6()(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??j.LAST_PACKAGE_ID}::haedal_wal_lsd_router::swap`,arguments:[o,t.object(e2.STAKING_OBJ_ID),t.object(r),t.pure.id(e5.VALIDATOR_ID),t.pure.bool(a),t.pure.u64(n)]})},(e9||(e9={})).VERSION_OBJ_ID="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78",(K=e7||(e7={})).LAST_PACKAGE_ID="0xcf141e1d18ff609b2ac56532b391f7648fc55e28696efe354186f5109c0eff06",K.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??K.LAST_PACKAGE_ID}::kriya_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(e9.VERSION_OBJ_ID),t.pure.bool(i),t.pure.u64(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(G=te||(te={})).LAST_PACKAGE_ID="0x50d37f46df75ef125ce656d4ac91b31b2cf0c1195752a96558561d163e45c223",G.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??G.LAST_PACKAGE_ID}::kriya_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(q=tt||(tt={})).FACTORY_OBJ_ID="0xedb456e93e423dd75a8ddebedd9974bb661195043027e32ce01649d6ccee74cf",q.GLOBAL_CONFIG_OBJ_ID="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(V=to||(to={})).LAST_PACKAGE_ID="0x950f94d33060c0575389c9f84fabab1e140776c6c84389d4237a0c2687a7adc9",V.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??V.LAST_PACKAGE_ID}::magma_almm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(tt.FACTORY_OBJ_ID),t.object(tt.GLOBAL_CONFIG_OBJ_ID),t.pure.u64(s),t.pure.bool(i),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(tr||(tr={})).GLOBAL_CONFIG="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(Y=ta||(ta={})).LAST_PACKAGE_ID="0xbe5f590339c55ca8ebbf93cedfb68aafd479d71e1c57043246f7dcf352745242",Y.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??Y.LAST_PACKAGE_ID}::magma_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(tr.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})};var ok=__webpack_require__("./src/meta-aggregator/external/metastable.ts");($=tn||(tn={})).LATEST_PACKAGE_ID="0xfab91518218f10204b083dba1e62c8bfc23f14fb87742158043e5faec4670ec4",$.swap=function(e){let t,o,r;t6()(e.protocol===oF.S.METASTABLE,"Invalid protocol");let{txb:a,swapContext:n,aToB:i,amountIn:s,coinAType:c,coinBType:u,poolId:_,metaCoin:l,packageId:p}=e,[d,g]=i?[c,u]:[u,c];d===l?(r="swap_from_meta_coin",t=[l,g],o=[ok.b.createCap({coinType:g,createCapFunc:"create_withdraw_cap",...e})]):g===l?(r="swap_to_meta_coin",t=[l,d],o=[ok.b.createCap({coinType:d,createCapFunc:"create_deposit_cap",...e})]):(r="swap",t=[l,d,g],o=[ok.b.createCap({coinType:d,createCapFunc:"create_deposit_cap",...e}),ok.b.createCap({coinType:g,createCapFunc:"create_withdraw_cap",...e})]),a.moveCall({target:`${p??$.LATEST_PACKAGE_ID}::metastable_router::${r}`,typeArguments:t,arguments:[n,a.object(_),a.object(ok.b.VERSION_OBJ_ID),...o,a.pure.u64(s)]})},(ti||(ti={})).VERSION_OBJ_ID="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a",(J=ts||(ts={})).LAST_PACKAGE_ID="0xba7ab4c8c39024fa0052bb4f00548a2e7b60742bb4ed0b87bc1d945fd8209102",J.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??J.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(ti.VERSION_OBJ_ID),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(tc||(tc={})).CONFIGURATION_OBJ_ID="0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4",(H=tu||(tu={})).LAST_PACKAGE_ID="0x5a259db4b1d17fafc09185c9a71bac36f25f9ee462e72894c8610e5a58b79f8f",H.swap=function(e){t6()(e.protocol===oF.S.MOVEPUMP,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,expectedAmountOut:s,packageId:c}=e;t.moveCall({target:`${c??H.LAST_PACKAGE_ID}::movepump_router::swap`,typeArguments:[n?a:r],arguments:[o,t.object(tc.CONFIGURATION_OBJ_ID),t.object(eD.DEX_INFO_OBJ_ID),t.object(oe.SUI_CLOCK_OBJECT_ID),t.pure.u64(s),t.pure.bool(n),t.pure.u64(i)]})},(t_||(t_={})).STATE_OBJ_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",(W=tl||(tl={})).LAST_PACKAGE_ID="0xd615fed37d692280047068e80d3a6bb685aa9d574608054c9df881d6a7378fab",W.swap=function(e){let t,o;t6()(e.protocol===oF.S.OBRIC);let{txb:r,swapContext:a,poolId:n,coinAType:i,coinBType:s,aToB:c,amountIn:u,pythInfoObjectIdMap:_,packageId:l}=e;"priceInfoObjIdA"in e?(t=e.priceInfoObjIdA,o=e.priceInfoObjIdB):(t=_.get(e.pythPriceFeedIdA),o=_.get(e.pythPriceFeedIdB),t6()(t,"Not found priceInfoAId in pythObjectIdMap"),t6()(o,"Not found priceInfoBId in pythObjectIdMap")),r.moveCall({target:`${l??W.LAST_PACKAGE_ID}::obric_router::swap`,typeArguments:[i,s],arguments:[a,r.object(n),r.pure.u64(u),r.pure.bool(c),r.object(t_.STATE_OBJ_ID),r.object(t),r.object(o),r.object(oe.SUI_CLOCK_OBJECT_ID)]})},(X=tp||(tp={})).VERSION_OBJ_ID="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",X.MARKET_OBJ_ID="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",(z=td||(td={})).LAST_PACKAGE_ID="0xea409bb08c8a09e4127f859d9c36b8b62ca609282aa1e443091db6b7a7409ee7",z.swap=function(e){t6()(e.protocol===oF.S.SCALLOP);let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,scoinTreasury:s,packageId:c}=e;t.moveCall({target:`${c??z.LAST_PACKAGE_ID}::scallop_router::swap`,typeArguments:[r,a],arguments:[o,t.object(tp.VERSION_OBJ_ID),t.object(tp.MARKET_OBJ_ID),t.object(s),t.pure.u64(i),t.pure.bool(n),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(tg||(tg={})).ORACLE_HOLDER_OBJ_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",(Q=tm||(tm={})).LAST_PACKAGE_ID="0x918a30e2a05d24ea9451e2d2900d055f74e6752f2e10251fa50c7175831b1958",Q.swap=function(e){t6()(e.protocol===oF.S.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:c,oracleConfigA:u,oracleConfigB:_,pythPriceFeedIdA:l,pythPriceFeedIdB:p,pythInfoObjectIdMap:d,packageId:g}=e,m=d.get(l),f=d.get(p);t6()(m,"Not found priceInfoAId in pythObjectIdMap"),t6()(f,"Not found priceInfoBId in pythObjectIdMap");let b=oS.L.newHolder(t);oS.L.getPrice({txb:t,coinPriceId:l,holder:b,coinOracleId:u}),oS.L.getPrice({txb:t,coinPriceId:p,holder:b,coinOracleId:_}),t.moveCall({target:`${g??Q.LAST_PACKAGE_ID}::sevenk_cpmm_router::swap`,typeArguments:[a,n,c],arguments:[o,t.object(r),t.object(tg.ORACLE_HOLDER_OBJ_ID),t.pure.bool(i),t.pure.u64(s)]})},(tf||(tf={})).CONFIGURATION_OBJ_ID="0xe79fff6c77d81f9a8efb729e25bf0037deec42518d40b978f274a4915d7e1ec9",(Z=tb||(tb={})).LAST_PACKAGE_ID="0x0a5dc665dc3c1c846a6d1e00811c84cae3510c839ab4dc0873f85dc8908d0606",Z.swap=function(e){t6()(e.protocol===oF.S.SEVENK_FUN,"Invalid protocol");let{txb:t,swapContext:o,aToB:r,amountIn:a,coinBType:n,packageId:i}=e;t.moveCall({target:`${i??Z.LAST_PACKAGE_ID}::sevenk_fun_router::swap`,typeArguments:[n],arguments:[o,t.object(tf.CONFIGURATION_OBJ_ID),t.object(eQ.CONTAINER_OBJ_ID),t.object(oe.SUI_CLOCK_OBJECT_ID),t.pure.bool(r),t.pure.u64(a)]})},(ee=tA||(tA={})).LAST_PACKAGE_ID="0xa6d129c0b314e85d1bc5aecf305d64212bdd5d466457531f4f624fef5f2e7751",ee.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??ee.LAST_PACKAGE_ID}::springsui_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(oe.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.u64(a),t.pure.bool(n)]})},(tI||(tI={})).CONFIG_OBJ_ID="0x881fd0a12ca4fa48991f5c27ba57d17f1ec147fa15f43b3cb760cc3bd7ba9402",(et=tC||(tC={})).LAST_PACKAGE_ID="0xa314a64962ed4b91a6b4085de4dff2e631fd4c731dbca671a74489955df322ef",et.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(tI.CONFIG_OBJ_ID),t.pure.bool(a),t.pure.u64(n),t.object("0x6")];t.moveCall({target:`${c??et.LAST_PACKAGE_ID}::srm_cpmm_router::swap`,typeArguments:[i,s],arguments:u})},(er=(eo=tT||(tT={})).Oracle||(eo.Oracle={})).PACKAGE_ID="0xe84b649199654d18c38e727212f5d8dacfc3cf78d60d0a7fc85fd589f280eb2b",er.getPythPrice=function(e){let{txb:t,oracleRegistryId:o,priceInfoId:r,oracleIndex:a}=e;return t.moveCall({target:`${er.PACKAGE_ID}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(o),t.object(r),t.pure.u64(a),t.object(oe.SUI_CLOCK_OBJECT_ID)]})};var oD=tS||(tS={});function ov(e,t){t6()(e.protocol===oF.S.STEAMM_OMM||e.protocol===oF.S.STEAMM_OMM_V2,"Invalid protocol for steamm _swapOmm swap");let{txb:o,swapContext:r,poolId:a,coinAType:n,coinBType:i,aToB:s,amountIn:c,bankAId:u,bankBId:_,lendingMarketId:l,lendingMarketType:p,bCoinAType:d,bCoinBType:g,lpBCoinType:m,pythPriceFeedIdA:f,pythPriceFeedIdB:b,pythInfoObjectIdMap:A,oracleRegistryId:I,oracleIndexA:C,oracleIndexB:T,packageId:S}=e,O=A.get(f),M=A.get(b);t6()(O,"Not found priceInfoAId in pythObjectIdMap"),t6()(M,"Not found priceInfoBId in pythObjectIdMap");let E=tT.Oracle.getPythPrice({txb:o,oracleRegistryId:I,priceInfoId:O,oracleIndex:C}),x=tT.Oracle.getPythPrice({txb:o,oracleRegistryId:I,priceInfoId:M,oracleIndex:T});o.moveCall({target:`${S??oD.LAST_PACKAGE_ID}::${oL(t)}::swap`,typeArguments:[p,n,i,d,g,m],arguments:[r,o.object(a),o.object(u),o.object(_),o.object(l),E,x,o.pure.bool(s),o.pure.u64(c),o.object(oe.SUI_CLOCK_OBJECT_ID)]})}function oL(e){switch(e){case 0:return"steamm_omm_router";case 1:return"steamm_omm_v2_router"}}function oR(e){let{amountOut:t,aggregatorFeeBps:o,partnerFeeBps:r}=e,a=oU(t,o);return r&&(a=oU(a,r)),a}function oU(e,t){let o=BigInt(e)*BigInt(t)/BigInt(1e4);return(BigInt(e)-o).toString()}function oN(e){return Math.floor(100*e)}oD.LAST_PACKAGE_ID="0xd606880d67c399f349758111a91582d5515f31dd051632402653d872818f594e",oD.swapCpmm=function(e){t6()(e.protocol===oF.S.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:c,bankBId:u,lendingMarketId:_,lendingMarketType:l,bCoinAType:p,bCoinBType:d,lpBCoinType:g}=e;t.moveCall({target:`${oD.LAST_PACKAGE_ID}::steamm_cpmm_router::swap`,typeArguments:[l,a,n,p,d,g],arguments:[o,t.object(r),t.object(c),t.object(u),t.object(_),t.pure.bool(i),t.pure.u64(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},oD.swapOmm=function(e){ov(e,0)},oD.swapOmmV2=function(e){ov(e,1)},oD.getOmmRouterModule=oL,(ea=tO||(tO={})).LAST_PACKAGE_ID="0x7a1cf89025a60161e84809784d772263231fad08a7cb76a88ca1ba69e0a656da",ea.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??ea.LAST_PACKAGE_ID}::suiswap_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(en=tM||(tM={})).VERSIONED="0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676",en.POOL_REGISTRY="0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd",(ei=tE||(tE={})).LAST_PACKAGE_ID="0x79957062a7424ed9c2eb83932e4c4fcc3fee67ab3c8f6f874c54e417178bbb7a",ei.swap=function(e){t6()(e.protocol===oF.S.TRADEPORT_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,poolFeeRate:s,packageId:c}=e;t.moveCall({target:`${c??ei.LAST_PACKAGE_ID}::tradeport_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(tM.POOL_REGISTRY),t.pure.u64(s),t.object(tM.VERSIONED),t.pure.bool(n),t.pure.u64(i),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(tx||(tx={})).POOL_VERSIONED="0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f",(es=th||(th={})).LAST_PACKAGE_ID="0x512d63711ff38353fb167238b0529001b6871c1727c67ce3bf6ec23556b0f1da",es.swap=function(e){t6()(e.protocol===oF.S.TURBOS_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,coinFeeType:n,poolId:i,aToB:s,amountIn:c,packageId:u}=e;t.moveCall({target:`${u??es.LAST_PACKAGE_ID}::turbos_clmm_router::swap`,typeArguments:[r,a,n],arguments:[o,t.object(i),t.object(tx.POOL_VERSIONED),t.pure.bool(s),t.pure.u64(c),t.object(oe.SUI_CLOCK_OBJECT_ID)]})},(ty||(ty={})).CONFIGURATION_OBJ_ID="0xd86685fc3c3d989385b9311ef55bfc01653105670209ac4276ebb6c83d7df928",(ec=tw||(tw={})).LAST_PACKAGE_ID="0x1fad13f09797aa87a4385d0b1efb2de963ba16742447b1ad5a3b0c5b1d1c588b",ec.swap=function(e){t6()(e.protocol===oF.S.TURBOS_FUN,"Invalid protocol");let{txb:t,swapContext:o,coinBType:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??ec.LAST_PACKAGE_ID}::turbos_fun_router::swap`,typeArguments:[r],arguments:[o,t.object(ty.CONFIGURATION_OBJ_ID),t.object(oe.SUI_CLOCK_OBJECT_ID),t.pure.bool(a),t.pure.u64(n)]})},(tP||(tP={})).VOLO_CERT_METADATA_ID="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",(eu=tB||(tB={})).LAST_PACKAGE_ID="0x7c8d95256342f904d5f251776903a17905d87c95f387b3a35cc2aecc23b3c042",eu.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??eu.LAST_PACKAGE_ID}::volo_router::swap`,arguments:[o,t.object(r),t.object(tP.VOLO_CERT_METADATA_ID),t.object(oe.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.bool(a),t.pure.u64(n)]})},(e_=tF||(tF={})).RouterSwapFunctionMap={[oF.S.AFTERMATH_CPMM]:ex.swap,[oF.S.AFTERMATH_LSD]:ey.swap,[oF.S.ALPHAFI_LSD]:ew.swap,[oF.S.BLASTFUN]:eB.swap,[oF.S.BLUEFIN_CLMM]:ek.swap,[oF.S.BLUEMOVE_CPMM]:ev.swap,[oF.S.BOLT]:eR.swap,[oF.S.CETUS_CLMM]:eN.swap,[oF.S.CETUS_DLMM]:eK.swap,[oF.S.DEEPBOOK_V3]:eq.swap,[oF.S.DIP_CPMM]:eY.swap,[oF.S.FERRA_CLMM]:eJ.swap,[oF.S.FERRA_DLMM]:eW.swap,[oF.S.FLOWX_CPMM]:eZ.swap,[oF.S.FLOWX_CLMM]:ez.swap,[oF.S.FULLSAIL_CLMM]:e6.swap,[oF.S.HAEDAL_CPMM]:e1.swap,[oF.S.HAEDAL_CPMM_V2]:e4.swap,[oF.S.HAEDAL_LSD]:e3.swap,[oF.S.HAEDAL_LSD_WAL]:e8.swap,[oF.S.KRIYA_CLMM]:e7.swap,[oF.S.KRIYA_CPMM]:te.swap,[oF.S.MAGMA_ALMM]:to.swap,[oF.S.MAGMA_CLMM]:ta.swap,[oF.S.METASTABLE]:tn.swap,[oF.S.MOMENTUM_CLMM]:ts.swap,[oF.S.MOVEPUMP]:tu.swap,[oF.S.OBRIC]:tl.swap,[oF.S.SCALLOP]:td.swap,[oF.S.SEVENK_CPMM]:tm.swap,[oF.S.SEVENK_FUN]:tb.swap,[oF.S.SPRINGSUI]:tA.swap,[oF.S.SRM_CPMM]:tC.swap,[oF.S.STEAMM_CPMM]:tS.swapCpmm,[oF.S.STEAMM_OMM]:tS.swapOmm,[oF.S.STEAMM_OMM_V2]:tS.swapOmmV2,[oF.S.SUISWAP_CPMM]:tO.swap,[oF.S.TRADEPORT_CLMM]:tE.swap,[oF.S.TURBOS_CLMM]:th.swap,[oF.S.TURBOS_FUN]:tw.swap,[oF.S.VOLO]:tB.swap},e_.swap=function(e){(0,e_.RouterSwapFunctionMap[e.protocol])(e)},(tk||(tk={})).buildAggregatorSwapTransaction=async function(e){let{tx:t,coinOutType:o,tradePaths:r,pythConnections:a,pythClient:n,packageIdMap:i}=e,s=oB.u.openSwap(e),c=await oS.j.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];tF.swap({...o,txb:t,swapContext:s,amountIn:o.amountIn,coinAType:a,coinBType:n,packageId:i?.get(o.protocol),pythInfoObjectIdMap:c})}return oB.u.closeSwap({tx:t,coinOutType:o,swapSession:s})};let oj=oS.j.newPythConnections(),oK=oS.j.newPythClient();var oG=tD||(tD={});function oq(e){var t,o,r;let a,n,{buildTxParam:i,rawRouteParam:s}=e;switch(s.sourceRoute){case"CETUS":a=tH.M.convert(s.rawRoute);break;case"FLOWX":a=tQ.m.convert(s.rawRoute);break;case"SEVENK":a=tN.m.convert(s.rawRoute);break;default:throw Error("Unsupported source route")}let c=oN(i.aggregatorFeeRatePercent),u=i.partnerFeeRatePercent?oN(i.partnerFeeRatePercent):void 0,_=i.expectedAmountOut??oR({amountOut:a.amountOut,aggregatorFeeBps:c,partnerFeeBps:u}),l=(o=_,r=(t=i.slippagePercent)?Math.floor(100*t):100,n=BigInt(o)*BigInt(r??100)/BigInt(1e4),(BigInt(o)-n).toString());return{...i,...a,expectedAmountOut:_,minAmountOut:l,aggregatorFeeBps:c,partnerFeeBps:u,pythConnections:i.pythConnections??oj,pythClient:i.pythClient??oK}}oG.toMetaAggregatorBuildTxParams=oq,oG.buildTx=function(e){let t=oq(e);return tk.buildAggregatorSwapTransaction(t)};let oV=async(e,t,o)=>t<=0?e():new Promise((r,a)=>{let n=setTimeout(()=>a(new ow.u(`Timeout ${o??"operation"}`,ow.j.TIMEOUT,{timeout:t})),t);e().then(r).catch(a).finally(()=>clearTimeout(n))}),oY=(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)}},o$={SEVENK:{},FLOWX:{},CETUS:{}};class oJ{client;providers={};options;constructor(e){this.options={providers:{...o$,...e?.providers},slippageBps:e?.slippageBps??100,fullnodeUrl:e?.fullnodeUrl??(0,o_.getFullnodeUrl)("mainnet"),hermesApi:e?.hermesApi??oS.j.PYTH_URLS,partner:e?.partner??t7.qb,partnerCommissionBps:e?.partnerCommissionBps??0,tipBps:e?.tipBps??0},this.client=new o_.SuiClient({url:this.options.fullnodeUrl})}async getQuoteClient(e){let t=this.providers[e];if(t)return t;let o=this.options.providers[e];switch(ow.u.assert(!!o,`Provider not found: ${e}`,ow.j.PROVIDER_NOT_FOUND,{provider:e}),e){case"SEVENK":{let{Bluefin7kClient:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,"./src/meta-aggregator/client/bluefin7k-client.ts")).catch(oH("SEVENK"));this.providers.SEVENK=new e(o,this.client);break}case"FLOWX":{let{FlowxClient:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,"./src/meta-aggregator/client/flowx-client.ts")).catch(oH("FLOWX"));this.providers.FLOWX=new e(o);break}case"CETUS":{let{CetusClient:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,"./src/meta-aggregator/client/cetus-client.ts")).catch(oH("CETUS"));this.providers.CETUS=new e(o,this.options,this.client);break}default:throw new ow.u(`Provider not supported: ${e}`,ow.j.PROVIDER_NOT_SUPPORTED,{provider:e})}return this.providers[e]}async getQuoteByClient(e,t){return await oV(async()=>{let o=await e.quote(t);return o?(o.amountOut=oR({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:(0,oe.normalizeStructTag)(e.coinTypeIn),coinTypeOut:(0,oe.normalizeStructTag)(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=(0,oe.normalizeSuiAddress)(o);ow.u.assert((0,oe.isValidSuiAddress)(i),`Invalid signer address: ${o}`,ow.j.INVALID_SIGNER_ADDRESS,{signer:o}),r.setSender(i);let s=(n??this.options.slippageBps)/1e4,c=this.options.partner&&this.options.partner!==t7.qb?this.options.partner:void 0,u=c&&this.options.partnerCommissionBps>0?this.options.partnerCommissionBps/1e4:void 0;return tD.buildTx({buildTxParam:{tx:r,inputCoin:a,expectedAmountOut:t.amountOut,slippagePercent:s,aggregatorFeeRatePercent:this.options.tipBps/1e4,aggregatorFeeRecipient:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff",partnerFeeRatePercent:u,partnerFeeRecipient:c,pythConnections:oS.j.newPythConnections(this.options.hermesApi),pythClient:oS.j.newPythClient(this.client)},rawRouteParam:{...t}})}}let oH=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 oW{sdk;_astrosAggregator;_aftermathAggregator;_sevenkAggregator;_cetusAggregator;_flowXAggregator;constructor(e){this.sdk=e,this._astrosAggregator=new tV({defaultTradeFee:e.options.tradeFee,astrosApiKey:e.options.astrosApiKey},e.suiClient),this._aftermathAggregator=new tG({defaultTradeFee:e.options.tradeFee,aftermathApiKey:e.options.aftermathApiKey,aftermathApiEndpoint:e.options.aftermathApiEndpoint},e.suiClient),this._sevenkAggregator=new tj({defaultTradeFee:e.options.tradeFee,sevenKApiKey:e.options.sevenKApiKey},e.suiClient),this._cetusAggregator=new tW({defaultTradeFee:e.options.tradeFee,cetusApiKey:e.options.cetusApiKey,cetusApiEndpoint:e.options.cetusApiEndpoint,cetusPartnerId:e.options.cetusPartnerId},e.suiClient),this._flowXAggregator=new tZ({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 tX.ASTROS:{let e,r=await this._astrosAggregator.getTradeRoute(t);if(!r)return null;let a=tV.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(tU())(r.amount_out).multipliedBy(1-e).toFixed(0,3)),o={route:a,aggregatorRoute:r};break}case tX.AFTERMATH:{let e=await this._aftermathAggregator.getTradeRoute(t);if(!e)return null;let r=tG.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case tX.SEVENK:{let e=await this._sevenkAggregator.getTradeRoute(t);if(!e)return null;let r=tj.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case tX.CETUS:{let e=await this._cetusAggregator.getTradeRoute(t);if(!e)return null;let r=tW.toCommonTradeRoutes(e,t.coinInType,t.coinOutType);if(!r)return null;o={route:r,aggregatorRoute:e};break}case tX.FLOWX:{let e=await this._flowXAggregator.getTradeRoute(t);if(!e)return null;let r=tZ.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e}}}return o}async getTransactionByRoute(e,t){switch(e){case tX.ASTROS:return this._astrosAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case tX.AFTERMATH:return this._aftermathAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage});case tX.SEVENK:return this._sevenkAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case tX.CETUS:return this._cetusAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case tX.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(tX),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(tX),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}}}let oX="0x25fa0eb553dd69fa6a8028f73a38f1df7f289fa88a58ed3d7dc5a5360155bb19",oz="0x8b1a8ac6e34688cd8f8f8e5fefa9d5fb9e1ff74d2f132f8e208ae5ac9cc530bb",oQ="0x13d101f44a0710a5475bec5f492a87b80e03d92d1cf540f26096f65850b23d26";class oZ{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({id:oz,options:{showContent:!0}});t6()(e.data?.content,"Config object not found or has no content"),t6()(e.data?.content.dataType==="moveObject","Config object is not a Move object");let t=e.data.content.fields,o=t.id.id,r=t.fee_receiver,a=t.tiers.fields.contents,n={};for(let e of a){let t=e.fields.key,o=e.fields.value.fields.duration,r=e.fields.value.fields.amount,a=e.fields.value.fields.point,i=e.fields.value.fields.original_amount;n[t]={duration:BigInt(o),amount:BigInt(r),point:BigInt(a),originalAmount:BigInt(i)}}return{id:o,receiverAddress:r,tiers:n}}async buildPayBoostingTx({walletAddress:e,tierId:t,boostingCoinType:o,currentTx:r}){let a=await this.getConfig();t6()(t in a.tiers,"Invalid tier ID");let n=a.tiers[t].amount,i=r||new tL.Transaction,s=i.splitCoins(i.gas,[i.pure.u64(n)]);i.moveCall({target:`${oX}::boosting::pay`,typeArguments:[(0,oe.normalizeStructTag)(o)],arguments:[i.object(oz),i.pure.u64(t),s]}),i.setSender(e);let c=await t5(this.sdk.suiClient,i,e,0);return og({inheritTx:i,sender:e,feeAmount:c},this.sdk.suiClient)}async buildAddTierTx({adminAddress:e,tierId:t,duration:o,point:r,originalAmount:a,amount:n,currentTx:i}){let s=i||new tL.Transaction;s.moveCall({target:`${oX}::config::add_tier`,typeArguments:[],arguments:[s.object(oz),s.object(oQ),s.pure.u64(t),s.pure.u64(r),s.pure.u64(o),s.pure.u64(a),s.pure.u64(n)]}),s.setSender(e);let c=await t5(this.sdk.suiClient,s,e,0);return og({inheritTx:s,sender:e,feeAmount:c},this.sdk.suiClient)}async buildUpdateTierTx({adminAddress:e,tierId:t,duration:o,amount:r,originalAmount:a,point:n,currentTx:i}){let s=i||new tL.Transaction;s.moveCall({target:`${oX}::config::update_tier`,typeArguments:[],arguments:[s.object(oz),s.object(oQ),s.pure.u64(t),s.pure.u64(o),s.pure.u64(r),s.pure.u64(n),s.pure.u64(a)]}),s.setSender(e);let c=await t5(this.sdk.suiClient,s,e,0);return og({inheritTx:s,sender:e,feeAmount:c},this.sdk.suiClient)}async buildRemoveTierTx({adminAddress:e,tierId:t,currentTx:o}){let r=o||new tL.Transaction;r.moveCall({target:`${oX}::config::remove_tier`,typeArguments:[],arguments:[r.object(oz),r.object(oQ),r.pure.u64(t)]}),r.setSender(e);let a=await t5(this.sdk.suiClient,r,e,0);return og({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiver({adminAddress:e,newReceiverAddress:t,currentTx:o}){let r=o||new tL.Transaction;r.moveCall({target:`${oX}::config::update_fee_receiver`,typeArguments:[],arguments:[r.object(oz),r.object(oQ),r.pure.address(t)]}),r.setSender(e);let a=await t5(this.sdk.suiClient,r,e,0);return og({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildPayBoostingWithAdminTx({walletAddress:e,tierId:t,customAmount:o,boostingCoinType:r,currentTx:a}){let n=a||new tL.Transaction,i=n.splitCoins(n.gas,[n.pure.u64(o)]);n.moveCall({target:`${oX}::boosting::pay_with_admin`,typeArguments:[(0,oe.normalizeStructTag)(r)],arguments:[n.object(oQ),n.object(oz),n.pure.u64(t),n.pure.u64(o),i]}),n.setSender(e);let s=await t5(this.sdk.suiClient,n,e,0);return og({inheritTx:n,sender:e,feeAmount:s},this.sdk.suiClient)}}class o0{sdk;constructor(e){this.sdk=e}async getEstimatedAmountOut(e,t){let{coinInType:o,coinOutType:r}=t;t6()(o!==r,"coinInType and coinOutType must be different"),t6()((0,t7.tC)(o)||(0,t7.tC)(r),"One of coinInType or coinOutType must be SUI");let a=(0,t7.tC)(o);switch(e){case oA.MOONBAGS:if(a)return await eO.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);return await eO.getSuiAmountAfterSell({poolId:t.poolId,curveAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);case oA.BLAST_FUN:if(a)return await eI.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});return await eI.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;t6()(r!==a,"coinInType and coinOutType must be different"),t6()((0,t7.tC)(r)||(0,t7.tC)(a),"One of coinInType or coinOutType must be SUI");let n=(0,t7.tC)(r);switch(e){case oA.MOONBAGS:o=n?await eM.getBuyTransaction(t,this.sdk.suiClient):await eM.getSellTransaction(t,this.sdk.suiClient);break;case oA.BLAST_FUN:o=n?await eC.getBuyTransaction(t,this.sdk.suiClient):await eC.getSellTransaction(t,this.sdk.suiClient);break;default:throw Error(`Unsupported bonding curve platform: ${e}`)}return o}}let o6={prod:{packageId:"0x3dd678c250a667f1551bc4b9e35fd070896f4775dd2900d5cb2910d2aea0b068",configId:"0x3eb7bd15f61b7cc1a9fd36151e9c3d05aa37bfadb0a58c3a26a6c02c2e99f3ca",adminCapId:"0xf375fcb3d95934143766cab2028ab49441fa04ef2ce27c08c01004c455bcbad4",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"},staging:{packageId:"0xa83cd093ce5142649adae10d21fe87d55fa2df4e52a4292c77ba039bb12bfe67",configId:"0x19fb8f91946e58c068fa4238bdd7a531216a0c4dcfaa279a8a02c60cb02f6711",adminCapId:"0xd8139544d054702dfab6de4e9c55f162c8a6f30465935af56cffed99c5e1c2bd",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"}};class o1{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({id:o6[this.sdk.env].configId,options:{showContent:!0}});t6()(e.data,"Config object not found"),t6()(e.data.content,"Config object has no content"),t6()(e.data?.content.dataType==="moveObject","Config object is not a Move object");let t=e.data.content.fields,o=t.id.id,r=t.fee_receiver,a=t.paused,n=t.accepted_payment_type,i=t.plans.fields.contents,s={};for(let e of i){let t=e.fields.key,o=e.fields.value.fields.id,r=e.fields.value.fields.price,a=e.fields.value.fields.month_interval,n=e.fields.value.fields.ptype;s[t]={id:BigInt(o),price:BigInt(r),monthInterval:a,planType:n}}return{id:o,plans:s,feeReceiverWallet:r,paused:a,acceptedPaymentType:n}}async buildSubscribeCyclePlanTx({walletAddress:e,planId:t,reference:o,paymentCoinType:r=o6[this.sdk.env].paymentCoinType,currentTx:a}){let n=await this.getConfig();t6()(!n.paused,"Contract is paused"),t6()(t in n.plans,"Invalid plan ID");let i=n.plans[t],s=i.price*BigInt(i.monthInterval),{tx:c,coinData:u}=await oo({account:e,amount:s.toString(),splits:[s.toString()],coinType:r,inheritTx:a},this.sdk.suiClient);c.moveCall({target:`${o6[this.sdk.env].packageId}::subscription::subscribe_cycle_plan`,typeArguments:[r],arguments:[c.object(o6[this.sdk.env].configId),c.pure.u64(t),c.pure.string(o),u]}),c.setSender(e);let _=await t5(this.sdk.suiClient,c,e,0);return og({inheritTx:c,sender:e,feeAmount:_},this.sdk.suiClient)}async buildBuyMoreCUPlanTx({walletAddress:e,planId:t,reference:o,paidAmount:r,paymentCoinType:a=o6[this.sdk.env].paymentCoinType,currentTx:n}){let i=await this.getConfig();t6()(!i.paused,"Contract is paused"),t6()(t in i.plans,"Invalid plan ID");let{tx:s,coinData:c}=await oo({account:e,amount:r.toString(),splits:[r.toString()],coinType:a,inheritTx:n},this.sdk.suiClient);s.moveCall({target:`${o6[this.sdk.env].packageId}::subscription::buy_more_cu`,typeArguments:[a],arguments:[s.object(o6[this.sdk.env].configId),s.pure.u64(t),s.pure.string(o),s.pure.u64(r),c]}),s.setSender(e);let u=await t5(this.sdk.suiClient,s,e,0);return og({inheritTx:s,sender:e,feeAmount:u},this.sdk.suiClient)}async buildSubscribePlanWithAdminTx({walletAddress:e,planId:t,reference:o,customAmount:r,paymentCoinType:a=o6[this.sdk.env].paymentCoinType,currentTx:n}){let i=await this.getConfig();t6()(!i.paused,"Contract is paused");let{tx:s,coinData:c}=await oo({account:e,amount:r.toString(),splits:[r.toString()],coinType:a,inheritTx:n},this.sdk.suiClient);s.moveCall({target:`${o6[this.sdk.env].packageId}::subscription::subscribe_plan_with_admin`,typeArguments:[a],arguments:[s.object(o6[this.sdk.env].adminCapId),s.object(o6[this.sdk.env].configId),s.pure.u64(t),s.pure.string(o),s.pure.u64(r),c]}),s.setSender(e);let u=await t5(this.sdk.suiClient,s,e,0);return og({inheritTx:s,sender:e,feeAmount:u},this.sdk.suiClient)}async buildAddPlanTx({adminAddress:e,planId:t,planType:o,monthInterval:r,price:a,currentTx:n}){let i=n||new tL.Transaction;i.moveCall({target:`${o6[this.sdk.env].packageId}::config::add_plan`,typeArguments:[],arguments:[i.object(o6[this.sdk.env].configId),i.object(o6[this.sdk.env].adminCapId),i.pure.u64(t),i.pure.u8(o),i.pure.u8(r),i.pure.u64(a)]}),i.setSender(e);let s=await t5(this.sdk.suiClient,i,e,0);return og({inheritTx:i,sender:e,feeAmount:s},this.sdk.suiClient)}async buildUpdatePlanTx({adminAddress:e,planId:t,planType:o,monthInterval:r,price:a,currentTx:n}){let i=n||new tL.Transaction;i.moveCall({target:`${o6[this.sdk.env].packageId}::config::update_plan`,typeArguments:[],arguments:[i.object(o6[this.sdk.env].configId),i.object(o6[this.sdk.env].adminCapId),i.pure.u64(BigInt(t)),i.pure.u8(o),i.pure.u8(r),i.pure.u64(a)]}),i.setSender(e);let s=await t5(this.sdk.suiClient,i,e,0);return og({inheritTx:i,sender:e,feeAmount:s},this.sdk.suiClient)}async buildRemovePlanTx({adminAddress:e,planId:t,currentTx:o}){let r=o||new tL.Transaction;r.moveCall({target:`${o6[this.sdk.env].packageId}::config::remove_plan`,typeArguments:[],arguments:[r.object(o6[this.sdk.env].configId),r.object(o6[this.sdk.env].adminCapId),r.pure.u64(BigInt(t))]}),r.setSender(e);let a=await t5(this.sdk.suiClient,r,e,0);return og({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiverWalletTx({adminAddress:e,newFeeReceiverWallet:t,currentTx:o}){let r=o||new tL.Transaction;r.moveCall({target:`${o6[this.sdk.env].packageId}::config::update_fee_receiver`,typeArguments:[],arguments:[r.object(o6[this.sdk.env].configId),r.object(o6[this.sdk.env].adminCapId),r.pure.address(t)]}),r.setSender(e);let a=await t5(this.sdk.suiClient,r,e,0);return og({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildSetPausedTx({adminAddress:e,paused:t,currentTx:o}){let r=o||new tL.Transaction;r.moveCall({target:`${o6[this.sdk.env].packageId}::config::set_paused`,typeArguments:[],arguments:[r.object(o6[this.sdk.env].configId),r.object(o6[this.sdk.env].adminCapId),r.pure.bool(t)]}),r.setSender(e);let a=await t5(this.sdk.suiClient,r,e,0);return og({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildSetAcceptedPaymentTypeTx({adminAddress:e,paymentCoinType:t,currentTx:o}){let r=o||new tL.Transaction;r.moveCall({target:`${o6[this.sdk.env].packageId}::config::set_accepted_payment_type`,typeArguments:[t],arguments:[r.object(o6[this.sdk.env].configId),r.object(o6[this.sdk.env].adminCapId)]}),r.setSender(e);let a=await t5(this.sdk.suiClient,r,e,0);return og({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}}class o4{network;env;_suiClient;boostingModule;subscriptionModule;constructor(e="mainnet",t="prod"){this.network=e,this.env=t;const o=(0,o_.getFullnodeUrl)(e);this._suiClient=new o_.SuiClient({url:o}),this.subscriptionModule=new o1(this),this.boostingModule=new oZ(this)}get suiClient(){return this._suiClient}}let o3={tradeFeePercent:.01,tradeFeeRecipientAddress:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff"};class o2{network;env;options;_suiClient;aggregatorModule;curveModule;constructor(e,t="mainnet",o="prod"){this.options=e,this.network=t,this.env=o;const r=(0,o_.getFullnodeUrl)(t);this._suiClient=new o_.SuiClient({url:r}),this.aggregatorModule=new oW(this),this.curveModule=new o0(this)}get suiClient(){return this._suiClient}}let o5=require("@mysten/sui/keypairs/ed25519"),o8=.1;class o9{suiClient;constructor(e){this.suiClient=e}validatePrivateKey(e,t){t6()(e?.trim(),"Private key is required");let o=o5.Ed25519Keypair.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){t6()(e?.trim(),"Sender address is required"),t6()(t?.trim(),"Recipient address is required"),t6()(e!==t,"Sender and recipient cannot be the same"),t6()(o>0n,"Transfer amount must be at least 1 MIST");try{let r=new tL.Transaction,[a]=r.splitCoins(r.gas,[o]);r.transferObjects([a],t),r.setSender(e);let n=await this.suiClient.getReferenceGasPrice();r.setGasPrice(n);let i=await t5(this.suiClient,r,e,o8);r=await og({inheritTx:r,sender:e,feeAmount:i,suiInputAmount:o},this.suiClient);let s=await r.build({client:this.suiClient}),c=Buffer.from(s).toString("base64"),u=await r.getDigest();return{sender:e,recipient:t,amountMIST:o,txDraftBase64:c,txDigest:u}}catch(e){throw Error(`Failed to create draft transaction: ${e instanceof Error?e.message:"Unknown error"}`)}}async execute(e,t){try{t6()(e,"Draft transaction is required"),t6()(e.txDraftBase64?.trim(),"Transaction data is required");let o=this.validatePrivateKey(t,e.sender),r=(0,oe.fromBase64)(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){t6()(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"}}}})(),exports.ADMIN_CAP_ID=__webpack_exports__.ADMIN_CAP_ID,exports.AftermathAggregator=__webpack_exports__.AftermathAggregator,exports.AftermathCpmm=__webpack_exports__.AftermathCpmm,exports.AftermathLsd=__webpack_exports__.AftermathLsd,exports.AggregatorConverter=__webpack_exports__.AggregatorConverter,exports.AggregatorModule=__webpack_exports__.AggregatorModule,exports.AggregatorProtocol=__webpack_exports__.AggregatorProtocol,exports.AstrosAggregator=__webpack_exports__.AstrosAggregator,exports.BASE_BPS=__webpack_exports__.BASE_BPS,exports.BLUEFIN_PACKAGE_ID=__webpack_exports__.BLUEFIN_PACKAGE_ID,exports.BOOSTING_PACKAGE_ID=__webpack_exports__.BOOSTING_PACKAGE_ID,exports.BlastFunConstants=__webpack_exports__.BlastFunConstants,exports.BlastFunCustomCalculation=__webpack_exports__.BlastFunCustomCalculation,exports.BlastFunCustomTransaction=__webpack_exports__.BlastFunCustomTransaction,exports.BlastFunPackage=__webpack_exports__.BlastFunPackage,exports.BlastFunSDKCalculation=__webpack_exports__.BlastFunSDKCalculation,exports.BlastFunSDKTransaction=__webpack_exports__.BlastFunSDKTransaction,exports.Blastfun=__webpack_exports__.Blastfun,exports.Bluefin7kClient=__webpack_exports__.Bluefin7kClient,exports.BluefinClmm=__webpack_exports__.BluefinClmm,exports.BluefinTx=__webpack_exports__.BluefinTx,exports.BluemoveCpmm=__webpack_exports__.BluemoveCpmm,exports.Bolt=__webpack_exports__.Bolt,exports.BoostingModule=__webpack_exports__.BoostingModule,exports.Bps=__webpack_exports__.Bps,exports.CLOCK_OBJECT_ID=__webpack_exports__.CLOCK_OBJECT_ID,exports.CONFIG_ID=__webpack_exports__.CONFIG_ID,exports.CetusAggregator=__webpack_exports__.CetusAggregator,exports.CetusAggregatorConverter=__webpack_exports__.CetusAggregatorConverter,exports.CetusClient=__webpack_exports__.CetusClient,exports.CetusClmm=__webpack_exports__.CetusClmm,exports.CetusDlmm=__webpack_exports__.CetusDlmm,exports.CurveModule=__webpack_exports__.CurveModule,exports.DEFAULT_TRADE_FEE=__webpack_exports__.DEFAULT_TRADE_FEE,exports.DeepbookV3=__webpack_exports__.DeepbookV3,exports.DipCpmm=__webpack_exports__.DipCpmm,exports.DraftTransferTx=__webpack_exports__.DraftTransferTx,exports.FerraClmm=__webpack_exports__.FerraClmm,exports.FerraDlmm=__webpack_exports__.FerraDlmm,exports.FlowXAggregator=__webpack_exports__.FlowXAggregator,exports.FlowXAggregatorConverter=__webpack_exports__.FlowXAggregatorConverter,exports.FlowxClient=__webpack_exports__.FlowxClient,exports.FlowxCpmm=__webpack_exports__.FlowxCpmm,exports.FullsailClmm=__webpack_exports__.FullsailClmm,exports.HaedalLsdWal=__webpack_exports__.HaedalLsdWal,exports.KriyaClmm=__webpack_exports__.KriyaClmm,exports.MagmaAlmm=__webpack_exports__.MagmaAlmm,exports.MagmaClmm=__webpack_exports__.MagmaClmm,exports.MathUtils=__webpack_exports__.MathUtils,exports.MetaAgError=__webpack_exports__.MetaAgError,exports.MetaAgErrorCode=__webpack_exports__.MetaAgErrorCode,exports.MetaAggregator=__webpack_exports__.MetaAggregator,exports.MetaClient=__webpack_exports__.MetaClient,exports.Metastable=__webpack_exports__.Metastable,exports.MomentumClmm=__webpack_exports__.MomentumClmm,exports.MoonbagsCalculation=__webpack_exports__.MoonbagsCalculation,exports.MoonbagsConstants=__webpack_exports__.MoonbagsConstants,exports.MoonbagsPackage=__webpack_exports__.MoonbagsPackage,exports.MoonbagsTransaction=__webpack_exports__.MoonbagsTransaction,exports.Movepump=__webpack_exports__.Movepump,exports.NATIVE_USDC_TOKEN_TYPE=__webpack_exports__.NATIVE_USDC_TOKEN_TYPE,exports.NoodlesPaySdk=__webpack_exports__.NoodlesPaySdk,exports.NoodlesSdk=__webpack_exports__.NoodlesSdk,exports.Obric=__webpack_exports__.Obric,exports.PythPrice=__webpack_exports__.PythPrice,exports.PythUtils=__webpack_exports__.PythUtils,exports.RouterUtils=__webpack_exports__.RouterUtils,exports.SUBSCRIPTION_CONFIG=__webpack_exports__.SUBSCRIPTION_CONFIG,exports.SUI_ADDRESS_ZERO=__webpack_exports__.SUI_ADDRESS_ZERO,exports.SUI_FULL_TYPE=__webpack_exports__.SUI_FULL_TYPE,exports.SUI_METADATA_OBJECT_ID=__webpack_exports__.SUI_METADATA_OBJECT_ID,exports.SUI_TYPE=__webpack_exports__.SUI_TYPE,exports.Scallop=__webpack_exports__.Scallop,exports.SevenKAggregator=__webpack_exports__.SevenKAggregator,exports.SevenKAggregatorConverter=__webpack_exports__.SevenKAggregatorConverter,exports.SevenkCpmm=__webpack_exports__.SevenkCpmm,exports.SevenkFun=__webpack_exports__.SevenkFun,exports.SrmCpmm=__webpack_exports__.SrmCpmm,exports.Steamm=__webpack_exports__.Steamm,exports.SubscriptionModule=__webpack_exports__.SubscriptionModule,exports.SupportedAggregator=__webpack_exports__.SupportedAggregator,exports.SupportedBondingCurve=__webpack_exports__.SupportedBondingCurve,exports.TradeFeeOptions=__webpack_exports__.TradeFeeOptions,exports.TradeportClmm=__webpack_exports__.TradeportClmm,exports.TurbosClmm=__webpack_exports__.TurbosClmm,exports.TurbosFun=__webpack_exports__.TurbosFun,exports.USDC_TOKEN_TYPE=__webpack_exports__.USDC_TOKEN_TYPE,exports.Volo=__webpack_exports__.Volo,exports.Walrus=__webpack_exports__.Walrus,exports.adaptSuiClient=__webpack_exports__.adaptSuiClient,exports.adaptTransaction=__webpack_exports__.adaptTransaction,exports.addGasFee=__webpack_exports__.addGasFee,exports.checkIsSui=__webpack_exports__.checkIsSui,exports.createCompatibleSuiClient=__webpack_exports__.createCompatibleSuiClient,exports.denormalizeTokenType=__webpack_exports__.denormalizeTokenType,exports.getAmountAfterFee=__webpack_exports__.getAmountAfterFee,exports.getCoinObjectIdsByAmount=__webpack_exports__.getCoinObjectIdsByAmount,exports.getExpectedReturn=__webpack_exports__.getExpectedReturn,exports.getMemezPumpSDK=__webpack_exports__.getMemezPumpSDK,exports.getMoveObject=__webpack_exports__.getMoveObject,exports.getMoveObjectContent=__webpack_exports__.getMoveObjectContent,exports.getNeededGasFee=__webpack_exports__.getNeededGasFee,exports.getSplitCoinForTx=__webpack_exports__.getSplitCoinForTx,exports.getSplitCoinsAfterFee=__webpack_exports__.getSplitCoinsAfterFee,exports.isSuiCoinType=__webpack_exports__.isSuiCoinType,exports.normalizeTokenType=__webpack_exports__.normalizeTokenType,exports.splitSuiCoinAfterFeeFromBuyTx=__webpack_exports__.splitSuiCoinAfterFeeFromBuyTx,exports.splitSuiCoinAfterFeeFromSellTx=__webpack_exports__.splitSuiCoinAfterFeeFromSellTx,exports.timeout=__webpack_exports__.timeout,__webpack_exports__)-1===["ADMIN_CAP_ID","AftermathAggregator","AftermathCpmm","AftermathLsd","AggregatorConverter","AggregatorModule","AggregatorProtocol","AstrosAggregator","BASE_BPS","BLUEFIN_PACKAGE_ID","BOOSTING_PACKAGE_ID","BlastFunConstants","BlastFunCustomCalculation","BlastFunCustomTransaction","BlastFunPackage","BlastFunSDKCalculation","BlastFunSDKTransaction","Blastfun","Bluefin7kClient","BluefinClmm","BluefinTx","BluemoveCpmm","Bolt","BoostingModule","Bps","CLOCK_OBJECT_ID","CONFIG_ID","CetusAggregator","CetusAggregatorConverter","CetusClient","CetusClmm","CetusDlmm","CurveModule","DEFAULT_TRADE_FEE","DeepbookV3","DipCpmm","DraftTransferTx","FerraClmm","FerraDlmm","FlowXAggregator","FlowXAggregatorConverter","FlowxClient","FlowxCpmm","FullsailClmm","HaedalLsdWal","KriyaClmm","MagmaAlmm","MagmaClmm","MathUtils","MetaAgError","MetaAgErrorCode","MetaAggregator","MetaClient","Metastable","MomentumClmm","MoonbagsCalculation","MoonbagsConstants","MoonbagsPackage","MoonbagsTransaction","Movepump","NATIVE_USDC_TOKEN_TYPE","NoodlesPaySdk","NoodlesSdk","Obric","PythPrice","PythUtils","RouterUtils","SUBSCRIPTION_CONFIG","SUI_ADDRESS_ZERO","SUI_FULL_TYPE","SUI_METADATA_OBJECT_ID","SUI_TYPE","Scallop","SevenKAggregator","SevenKAggregatorConverter","SevenkCpmm","SevenkFun","SrmCpmm","Steamm","SubscriptionModule","SupportedAggregator","SupportedBondingCurve","TradeFeeOptions","TradeportClmm","TurbosClmm","TurbosFun","USDC_TOKEN_TYPE","Volo","Walrus","adaptSuiClient","adaptTransaction","addGasFee","checkIsSui","createCompatibleSuiClient","denormalizeTokenType","getAmountAfterFee","getCoinObjectIdsByAmount","getExpectedReturn","getMemezPumpSDK","getMoveObject","getMoveObjectContent","getNeededGasFee","getSplitCoinForTx","getSplitCoinsAfterFee","isSuiCoinType","normalizeTokenType","splitSuiCoinAfterFeeFromBuyTx","splitSuiCoinAfterFeeFromSellTx","timeout"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{BluefinXTx as e,Config as t,buildTx as o,getQuote as r}from"@bluefin-exchange/bluefin7k-aggregator-sdk";import a from"bignumber.js";import{Aftermath as n,Helpers as i}from"aftermath-ts-sdk";import{buildSwapPTBFromQuote as s,getCoins as c,getQuote as u}from"@naviprotocol/astros-aggregator-sdk";import{AFSUI as l,AFTERMATH as d,ALPHAFI as p,AggregatorClient as _,BLUEFIN as m,BLUEMOVE as f,CETUS as g,CETUSDLMM as A,DEEPBOOKV3 as b,Env as I,FERRACLMM as T,FERRADLMM as C,FLOWXV2 as O,FLOWXV3 as M,FULLSAIL as E,HAEDAL as h,HAEDALHMMV2 as y,HAEDALPMM as S,HAWAL as P,KRIYA as F,KRIYAV3 as B,MAGMA as D,METASTABLE as w,MOMENTUM as x,OBRIC as R,SCALLOP as L,SEVENK as v,SPRINGSUI as k,STEAMM as U,STEAMM_OMM as N,STEAMM_OMM_V2 as K,SUILEND as G,TURBOS as j,VOLO as q}from"@cetusprotocol/aggregator-sdk";import $ from"bn.js";import{AggregatorQuoter as Y,Coin as V,Commission as J,CommissionType as H,Protocol as X,TradeBuilder as W}from"@flowx-finance/sdk";import{MemezPumpSDK as z}from"@interest-protocol/memez-fun-sdk";import{Network as Q}from"@interest-protocol/sui-core-sdk";import{SuiPriceServiceConnection as Z,SuiPythClient as ee}from"@pythnetwork/pyth-sui-js";import{Ed25519Keypair as et}from"@mysten/sui/keypairs/ed25519";import{SUI_SYSTEM_STATE_OBJECT_ID as eo,toHex as er,getAmountAfterFee as ea,SUI_CLOCK_OBJECT_ID as en,getSplitCoinForTx as ei,getNeededGasFee as es,addGasFee as ec,normalizeStructTag as eu,parseStructTag as el,Transaction as ed,isValidSuiAddress as ep,SuiClient as e_,CLOCK_OBJECT_ID as em,SUI_METADATA_OBJECT_ID as ef,SUI_TYPE as eg,isSuiCoinType as eA,normalizeSuiAddress as eb,getFullnodeUrl as eI,SUI_ADDRESS_ZERO as eT,SUI_FULL_TYPE as eC,fromBase64 as eO,getSplitCoinsAfterFee as eM,tiny_invariant as eE}from"./982.js";function eh(e){return e===eg?eC:e}function ey(e){return e===eC?eg:e}function eS(e){return e===eC||e===eg}(tR=tv||(tv={})).MAX_AMOUNT_IN="18446744073709551615",tR.LAST_PACKAGE_ID="0x7e57926855b32baa3b3cabed89380b8d415606fdedadc18e58bd1ef1e60aee48",tR.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:`${tR.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},tR.closeSwap=function(e){let{tx:t,coinOutType:o,swapSession:r}=e,[a]=t.moveCall({target:`${tR.LAST_PACKAGE_ID}::aggregator::close_swap`,typeArguments:[o],arguments:[r]});return a};var 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,e2,e3,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,t2,t3,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,o2,o3,o5,o8,o9,o7,re,rt,ro,rr=((tL={}).AFTERMATH_CPMM="aftermath_cpmm",tL.AFTERMATH_LSD="aftermath_lsd",tL.ALPHAFI_LSD="alphafi_lsd",tL.BLASTFUN="blastfun",tL.BLUEFIN_CLMM="bluefin_clmm",tL.BLUEMOVE_CPMM="bluemove_cpmm",tL.BOLT="bolt",tL.CETUS_CLMM="cetus_clmm",tL.CETUS_DLMM="cetus_dlmm",tL.DEEPBOOK_V3="deepbook_v3",tL.DIP_CPMM="dip_cpmm",tL.FLOWX_CPMM="flowx_cpmm",tL.FLOWX_CLMM="flowx_clmm",tL.FULLSAIL_CLMM="fullsail_clmm",tL.FERRA_CLMM="ferra_clmm",tL.FERRA_DLMM="ferra_dlmm",tL.HAEDAL_CPMM="haedal_cpmm",tL.HAEDAL_CPMM_V2="haedal_cpmm_v2",tL.HAEDAL_LSD="haedal_lsd",tL.HAEDAL_LSD_WAL="haedal_lsd_wal",tL.KRIYA_CLMM="kriya_clmm",tL.KRIYA_CPMM="kriya_cpmm",tL.MAGMA_ALMM="magma_almm",tL.MAGMA_CLMM="magma_clmm",tL.METASTABLE="metastable",tL.MOMENTUM_CLMM="momentum_clmm",tL.MOVEPUMP="movepump",tL.OBRIC="obric",tL.SCALLOP="scallop",tL.SEVENK_CPMM="sevenk_cpmm",tL.SEVENK_FUN="sevenk_fun",tL.SPRINGSUI="springsui",tL.SRM_CPMM="srm_cpmm",tL.STEAMM_CPMM="steamm_cpmm",tL.SUISWAP_CPMM="suiswap_cpmm",tL.STEAMM_OMM="steamm_omm",tL.STEAMM_OMM_V2="steamm_omm_v2",tL.TRADEPORT_CLMM="tradeport_clmm",tL.TURBOS_CLMM="turbos_clmm",tL.TURBOS_FUN="turbos_fun",tL.VOLO="volo",tL);!function(e){let t=new Set(["bluefinx"]);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=>{eE(e.extra?.poolStructTag,"Aftermath protocol requires poolStructTag");let[t]=i(e.extra.poolStructTag);return{...n(e),protocol:rr.AFTERMATH_CPMM,coinLpType:t}},flowx_v3:e=>{eE(e.extra?.swapFeeRate,"flowx_v3 protocol requires swapFeeRate");let t=e.extra.swapFeeRate;return{...n(e),protocol:rr.FLOWX_CLMM,poolFeeRate:t}},turbos:e=>{eE(e.extra?.poolStructTag,"turbos protocol requires poolStructTag");let[t,o,r]=i(e.extra.poolStructTag);return{...n(e),protocol:rr.TURBOS_CLMM,coinFeeType:r}},obric:e=>(eE(e.extra?.oracles,"obric protocol requires oracles"),{...n(e),protocol:rr.OBRIC,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1])}),haedal_pmm:e=>(eE(e.extra.oracles,"haedal_pmm protocol requires oracles"),{...n(e),protocol:rr.HAEDAL_CPMM,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1])}),sevenk_v1:e=>{eE(e.extra?.poolStructTag,"sevenk_v1 protocol requires poolStructTag"),eE(e.extra?.oracleConfigX,"sevenk_v1 protocol requires oracleConfigX"),eE(e.extra?.oracleConfigY,"sevenk_v1 protocol requires oracleConfigY");let t=e.extra.oracles?.[0]?.Pyth?.bytes,o=e.extra.oracles?.[1]?.Pyth?.bytes;eE(t,"sevenk_v1 protocol requires pythPriceFeedIdA"),eE(o,"sevenk_v1 protocol requires pythPriceFeedIdB");let[r,a,s]=i(e.extra.poolStructTag);return{...n(e),protocol:rr.SEVENK_CPMM,coinLpType:s,pythPriceFeedIdA:t,pythPriceFeedIdB:o,oracleConfigA:e.extra.oracleConfigX,oracleConfigB:e.extra.oracleConfigY}},steamm:e=>{eE(e.extra?.poolStructTag,"steamm protocol requires poolStructTag"),eE(e.extra?.bankAStructTag,"steamm protocol requires bankAStructTag"),eE(e.extra?.lendingMarketA,"steamm protocol requires lendingMarketA"),eE(e.extra?.bankA,"steamm protocol requires bankA"),eE(e.extra?.bankB,"steamm protocol requires bankB");let[t,o,r,a]=i(e.extra.poolStructTag),[s,c,u]=i(e.extra.bankAStructTag);return{...n(e),protocol:rr.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=>{eE(e.extra?.poolStructTag,"steamm_oracle_quoter protocol requires poolStructTag"),eE(e.extra?.bankAStructTag,"steamm_oracle_quoter protocol requires bankAStructTag"),eE(e.extra?.lendingMarketA,"steamm_oracle_quoter protocol requires lendingMarketA"),eE(e.extra?.oracleRegistry,"steamm_oracle_quoter protocol requires oracleRegistry"),eE(e.extra?.bankA,"steamm_oracle_quoter protocol requires bankA"),eE(e.extra?.bankB,"steamm_oracle_quoter protocol requires bankB"),eE(e.extra?.oracleIndexes,"steamm_oracle_quoter protocol requires oracleIndexes"),eE(e.extra?.oracles,"steamm_oracle_quoter protocol requires oracles");let[t,o,r,a]=i(e.extra?.poolStructTag),[c,u,l]=i(e.extra.bankAStructTag),[d,p]=e.extra.oracleIndexes;return{...n(e),protocol:rr.STEAMM_OMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:c,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:d,oracleIndexB:p}},steamm_oracle_quoter_v2:e=>{eE(e.extra?.poolStructTag,"steamm_oracle_quoter_v2 protocol requires poolStructTag"),eE(e.extra?.bankAStructTag,"steamm_oracle_quoter_v2 protocol requires bankAStructTag"),eE(e.extra?.lendingMarketA,"steamm_oracle_quoter_v2 protocol requires lendingMarketA"),eE(e.extra?.oracleRegistry,"steamm_oracle_quoter_v2 protocol requires oracleRegistry"),eE(e.extra?.bankA,"steamm_oracle_quoter_v2 protocol requires bankA"),eE(e.extra?.bankB,"steamm_oracle_quoter_v2 protocol requires bankB"),eE(e.extra?.oracleIndexes,"steamm_oracle_quoter_v2 protocol requires oracleIndexes"),eE(e.extra?.oracles,"steamm_oracle_quoter_v2 protocol requires oracles");let[t,o,r,a]=i(e.extra?.poolStructTag),[c,u,l]=i(e.extra.bankAStructTag),[d,p]=e.extra.oracleIndexes;return{...n(e),protocol:rr.STEAMM_OMM_V2,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:c,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:d,oracleIndexB:p}},cetus:e=>({...n(e),protocol:rr.CETUS_CLMM}),bluemove:e=>({...n(e),protocol:rr.BLUEMOVE_CPMM}),kriya:e=>({...n(e),protocol:rr.KRIYA_CPMM}),kriya_v3:e=>({...n(e),protocol:rr.KRIYA_CLMM}),deepbook_v3:e=>({...n(e),protocol:rr.DEEPBOOK_V3}),flowx:e=>({...n(e),protocol:rr.FLOWX_CPMM}),bluefin:e=>({...n(e),protocol:rr.BLUEFIN_CLMM}),springsui:e=>({...n(e),protocol:rr.SPRINGSUI}),magma:e=>({...n(e),protocol:rr.MAGMA_CLMM}),momentum:e=>({...n(e),protocol:rr.MOMENTUM_CLMM}),fullsail:e=>({...n(e),protocol:rr.FULLSAIL_CLMM}),stsui:e=>({...n(e),protocol:rr.ALPHAFI_LSD}),suiswap:e=>({...n(e),protocol:rr.SUISWAP_CPMM}),cetus_dlmm:e=>({...n(e),protocol:rr.CETUS_DLMM}),ferra_dlmm:e=>({...n(e),protocol:rr.FERRA_DLMM}),ferra_clmm:e=>({...n(e),protocol:rr.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=tv.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 el(e||"").typeParams.map(eu)}function s(e){let t=e?.Pyth?.bytes||e?.Pyth?.price_identifier?.bytes;return eE(t,"Pyth price feed id is not found"),"0x"+er(Uint8Array.from(t))}e.toMetaAggregatorPath=r,e.toMetaAggregatorPaths=a,e.convert=function(e){var t,o,r;let n;eE(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=ey(e.assetIn),a=ey(e.assetOut),n={type:ey(t?.allTokens?.[0]?.address),decimals:t?.allTokens?.[0]?.decimal},i={type:ey(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}}}(tk||(tk={}));class ra{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:o,coinOutType:a,tradeFee:n,metaAggregator:i,supportedProtocols:s}){try{this._config.sevenKApiKey&&t.setApiKey(this._config.sevenKApiKey);let c=n?n.tradeFeePercent:this._config.defaultTradeFee.tradeFeePercent,u=s??(i?tk.SUPPORTED_PROTOCOLS:void 0);return await r({tokenIn:o,tokenOut:a,amountIn:e.toString(),commissionBps:1e4*c,sources:u})}catch(e){return null}}async getTransaction({walletAddress:t,completeRoute:r,slippage:a,tradeFee:n}){let i,s;n?(i=n.tradeFeePercent,s=n.tradeFeeRecipientAddress):(i=this._config.defaultTradeFee.tradeFeePercent,s=this._config.defaultTradeFee.tradeFeeRecipientAddress);let c=await o({quoteResponse:r,slippage:a,accountAddress:t,commission:{partner:s,commissionBps:1e4*i}});return c.tx instanceof e?ed.from(c.tx.txBytes).build({client:this._suiClient}):(c.tx.setSender(t),c.tx.build({client:this._suiClient}))}}(ra||(ra={})).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,n=r[t.tokenOut]??0,i=BigInt(new a(t.tokenInAmount).multipliedBy(10**o).toFixed(0,3)),s=BigInt(new a(t.tokenOutAmount).multipliedBy(10**n).toFixed(0,3));e.push({poolAddress:t.poolId,coinIn:t.tokenIn,coinOut:t.tokenOut,amountIn:i,amountOut:s})}if(0===e.length)continue;let n=r[o.tokenIn]??0,i=r[o.tokenOut]??0,s=BigInt(new a(o.tokenInAmount).multipliedBy(10**n).toFixed(0,3)),c=BigInt(new a(o.tokenOutAmount).multipliedBy(10**i).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 rn{_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 n(this._config.aftermathApiEndpoint):this._aftermathClient=new n("MAINNET"),await this._aftermathClient.init(),this._config.aftermathApiKey){let e=i.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})}}(rn||(rn={})).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 ri{_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 u(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 n;let i,u;i=r?{fee:r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let l=new a(e.amount_out).multipliedBy(1-o-i.fee).toNumber(),d=new ed;if("0x2::sui::SUI"===(n=e.from)||"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"===n)u=d.splitCoins(d.gas,[d.pure.u64(e.amount_in)]);else{let o=await c(this._suiClient,t,e.from),r=this.returnMergedCoins(d,o.data,Number.parseFloat(e.amount_in));u=d.splitCoins(r,[d.pure.u64(e.amount_in)])}let p=await s(t,d,l,u,e,void 0,!1,this._config.astrosApiKey,{serviceFee:i});return d.transferObjects([p],t),d.setSender(t),d.build({client:this._suiClient})}}(ri||(ri={})).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}},(tU||(tU={})).equals=function(e,t){return e.tradeFeePercent===t.tradeFeePercent&&e.tradeFeeRecipientAddress===t.tradeFeeRecipientAddress},(eP=tN||(tN={})).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:s,pythInfoObjectIdMap:c,createCapPackageId:u,createCapModule:l,createCapFunc:d}=e,p=[a.toString()];switch(n&&p.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=c.get(e.pythPriceFeedIdMeta);eE(r,"Not found priceMetaId in pythObjectIdMap"),t=[o.object(i),o.object(s),o.object(r),o.object(en)];break}case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":{let r=c.get(e.pythPriceFeedIdMeta);eE(r,"Not found priceId in pythObjectIdMap");let a=c.get(e.pythPriceFeedIdEth);eE(a,"Not found priceEthFeedId in pythObjectIdMap"),t=[o.object(i),o.object(s),o.object(r),o.object(a),o.object(en)];break}default:throw Error("Invalid MetaCoin: "+a.toString())}return o.moveCall({target:`${u}::${l}::${d}`,typeArguments:p,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=[g,F,O,M,B,j,d,h,q,l,f,b,L,G,m,S,p,k,U,w,R,P,N,x,K,D,v,y,E,A,C,T];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=tv.MAX_AMOUNT_IN),o.push(i)}return o}e.TO_META_AGGREGATOR_PATH_FN_MAP={[w]:e=>{let t=r(e),o=e.extendedDetails,a=e.direction?e.target:e.from;eE(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 tN.MetaCoinType.SUPER_SUI:return eE(o.metastable_registry_id,`METASTABLE_SUPER_SUI protocol requires 'metastable_registry_id' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:rr.METASTABLE,metaCoin:a,registryId:o.metastable_registry_id};case tN.MetaCoinType.MUSD:return eE(o.metastable_price_seed,`METASTABLE_MUSD protocol requires 'metastable_price_seed' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:rr.METASTABLE,metaCoin:a,pythPriceFeedIdMeta:o.metastable_price_seed};case tN.MetaCoinType.METH:return eE(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:rr.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.`)}},[b]:e=>({...r(e),protocol:rr.DEEPBOOK_V3}),[d]:e=>{let t=e.extendedDetails;return eE(t?.aftermath_lp_supply_type,`AFTERMATH_CPMM protocol requires 'aftermath_lp_type' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rr.AFTERMATH_CPMM,coinLpType:t.aftermath_lp_supply_type}},[M]:e=>({...r(e),protocol:rr.FLOWX_CLMM,poolFeeRate:String(1e6*e.feeRate)}),[S]:e=>{let t=e.extendedDetails;return eE(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:rr.HAEDAL_CPMM,pythPriceFeedIdA:t.haedal_pmm_base_price_seed,pythPriceFeedIdB:t.haedal_pmm_quote_price_seed}},[y]:e=>{let t=e.extendedDetails;return eE(t?.haedalhmmv2_base_price_seed,`HAEDAL_CPMM_V2 protocol requires 'haedal_pyth_price_base_id' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rr.HAEDAL_CPMM_V2,pythPriceFeedIdBase:t.haedalhmmv2_base_price_seed}},[L]:e=>(eE(e.extendedDetails?.scallop_scoin_treasury,`SCALLOP protocol requires 'scallop_scoin_treasury' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rr.SCALLOP,scoinTreasury:e.extendedDetails.scallop_scoin_treasury}),[U]:e=>{let t=e.extendedDetails;return eE(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:rr.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}},[N]:e=>{let t=e.extendedDetails;return eE(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:rr.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)}},[K]:e=>{let t=e.extendedDetails;return eE(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:rr.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)}},[R]:e=>{let t=r(e);if(e.extendedDetails?.obric_coin_a_price_id&&e.extendedDetails?.obric_coin_b_price_id)return{...t,protocol:rr.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:rr.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}.`)},[v]:e=>{let t=e.extendedDetails;return eE(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:rr.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}},[j]:e=>(eE(e.extendedDetails?.turbos_fee_type,`TURBOS_CLMM protocol requires 'coinFeeType' parameter for pool ${e.id}. Provide it via the parametersMap argument.`),{...r(e),protocol:rr.TURBOS_CLMM,coinFeeType:e.extendedDetails.turbos_fee_type}),[l]:e=>({...r(e),protocol:rr.AFTERMATH_LSD}),[p]:e=>({...r(e),protocol:rr.ALPHAFI_LSD}),[m]:e=>({...r(e),protocol:rr.BLUEFIN_CLMM}),[f]:e=>({...r(e),protocol:rr.BLUEMOVE_CPMM}),[g]:e=>({...r(e),protocol:rr.CETUS_CLMM}),[A]:e=>({...r(e),protocol:rr.CETUS_DLMM}),[T]:e=>({...r(e),protocol:rr.FERRA_CLMM}),[C]:e=>({...r(e),protocol:rr.FERRA_DLMM}),[O]:e=>({...r(e),protocol:rr.FLOWX_CPMM}),[E]:e=>({...r(e),protocol:rr.FULLSAIL_CLMM}),[h]:e=>({...r(e),protocol:rr.HAEDAL_LSD}),[P]:e=>({...r(e),protocol:rr.HAEDAL_LSD_WAL}),[F]:e=>({...r(e),protocol:rr.KRIYA_CPMM}),[B]:e=>({...r(e),protocol:rr.KRIYA_CLMM}),[D]:e=>({...r(e),protocol:rr.MAGMA_CLMM}),[x]:e=>({...r(e),protocol:rr.MOMENTUM_CLMM}),[G]:e=>({...r(e),protocol:rr.SPRINGSUI}),[k]:e=>({...r(e),protocol:rr.SPRINGSUI}),[q]:e=>({...r(e),protocol:rr.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)}}}(tK||(tK={}));class rs{_config;_suiClient;_cetusClient;getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t,overlayFeeRate:o}){return{client:this._suiClient,overlayFeeReceiver:t,overlayFeeRate:o,env:I.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&&!tU.equals(t,this._config.defaultTradeFee)?new _(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t.tradeFeeRecipientAddress,overlayFeeRate:t.tradeFeePercent})):(this._cetusClient||(this._cetusClient=new _(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?tK.SUPPORTED_PROTOCOLS:void 0);return await i.findRouters({from:t,target:o,amount:new $(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),n=new ed;return n.setSender(t),await a.fastRouterSwap({router:e,txb:n,slippage:o}),n.build({client:this._suiClient})}}(rs||(rs={})).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 rc=((eB={}).ASTROS="ASTROS",eB.AFTERMATH="AFTERMATH",eB.SEVENK="7K",eB.CETUS="CETUS",eB.FLOWX="FLOWX",eB);!function(e){let t=[X.HOP_FUN,X.FLOWX_PMM,X.DEEPBOOK,X.IPX_TIDE,X.METASTABLE];e.SUPPORTED_PROTOCOLS=Object.values(X).filter(e=>!t.includes(e));let o={[X.FLOWX_V2]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rr.FLOWX_CPMM}),[X.FLOWX_V3]:t=>(eE(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FLOWX_CLMM,poolFeeRate:t.poolFee.toString()}),[X.CETUS]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.CETUS_CLMM}),[X.CETUS_DLMM]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.CETUS_DLMM}),[X.AFTERMATH]:t=>(eE(t.lpCoinType,`AFTERMATH protocol requires lpCoinType for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rr.AFTERMATH_CPMM,coinLpType:t.lpCoinType}),[X.AFTERMATH_LSD]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.AFTERMATH_LSD}),[X.ALPHA_FI]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.ALPHAFI_LSD}),[X.BLUEFIN]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.BLUEFIN_CLMM}),[X.BLUEMOVE]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rr.BLUEMOVE_CPMM}),[X.DEEPBOOK_V3]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.DEEPBOOK_V3}),[X.FERRA_CLMM]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FERRA_CLMM}),[X.FERRA_DLMM]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FERRA_DLMM}),[X.FULL_SAIL]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FULLSAIL_CLMM}),[X.HAEDAL]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.HAEDAL_LSD}),[X.HAEDAL_PMM]:t=>{let o=t.oracles;return eE(o&&o.length>=2,`HAEDAL_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.HAEDAL_CPMM,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId}},[X.KRIYA_DEX]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.KRIYA_CPMM}),[X.KRIYA_V3]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.KRIYA_CLMM}),[X.MAGMA_FINANCE]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.MAGMA_CLMM}),[X.MAGMA_ALMM]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.MAGMA_ALMM}),[X.MOMENTUM_FINANCE]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.MOMENTUM_CLMM}),[X.OBRIC]:t=>(eE(t.xPriceId&&t.yPriceId,`OBRIC protocol requires price feeds for pool ${t.pool.id}`),eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.OBRIC,priceInfoObjIdA:t.xPriceId,priceInfoObjIdB:t.yPriceId}),[X.SPRING_SUI]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.SPRINGSUI}),[X.STEAMM]:t=>{eE(void 0!==t.bankXInfo&&void 0!==t.bankYInfo,`STEAMM protocol requires bank info for pool ${t.pool.id}`),eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),eE(void 0!==t.quoterType,`quoterType is required for pool ${t.pool.id}`),eE(void 0!==t.poolInfo,`poolInfo is required for pool ${t.pool.id}`),eE(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:rr.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":{eE(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 eE(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:rr.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}`)}},[X.SEVENK_V1]:t=>{let o=t.oracles;return eE(o&&o.length>=2,`SEVENK_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),eE(t.poolStructTag,`SEVENK_V1 protocol requires poolStructTag for pool ${t.pool.id}`),eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.SEVENK_CPMM,coinLpType:t.poolStructTag,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId,oracleConfigA:o[0].oracleId??"",oracleConfigB:o[1].oracleId??""}},[X.SUI_REWARDS]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.SRM_CPMM}),[X.TURBOS_FIANCE]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.TURBOS_CLMM,coinFeeType:t.poolStructTag?t.poolStructTag.split("<")[1].split(",")[2].trim().replace(">",""):""}),[X.VOLO_LSD]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.VOLO}),[X.TRADEPORT]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),eE(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,poolFeeRate:t.poolFee.toString(),protocol:rr.TRADEPORT_CLMM}),[X.TURBOS_FUN]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.TURBOS_FUN}),[X.BLUEMOVE_FUN]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,expectedAmountOut:t.amountOut.toString(),protocol:rr.MOVEPUMP}),[X.SEVEN_K_FUN]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.SEVENK_FUN}),[X.DIPCOIN]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.DIP_CPMM}),[X.BOLT]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.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=tv.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)}}}(tG||(tG={}));class ru{_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 J(r,new V(e),H.PERCENTAGE,1e6*o,!0)}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){let i=new Y("mainnet",this._config.flowxApiKey),s=n??(a?tG.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 W("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 rl(e,t){return(await rd(e,t)).fields}async function rd(e,t){let o=await e.getObject({id:t,options:{showContent:!0}}),r=o.data?.content;return eE(r,"Pool object not found or has no content"),eE("moveObject"===r.dataType,"Object is not a Move object"),r}(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({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=tj||(tj={})).PACKAGE_ID_V4="0x7e6aa6e179466ab2814425a780b122575296d011119fa69d27f289f5a28814bd",eD.MEMEZ_AV_OBJECT_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",((ew=tq||(tq={})).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 rp=t$||(t$={});function r_(e){return eE(BigInt(e)<=BigInt(1e4),"Bps overflow"),BigInt(e)}rp.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},rp.sub=function(e,t){return eE(BigInt(e.pos0)>=BigInt(t.pos0),"Bps underflow"),{pos0:(BigInt(e.pos0)-BigInt(t.pos0)).toString()}},rp.value=function(e){return BigInt(e.pos0)},rp.new_=function(e){return{pos0:r_(e).toString()}},rp.assertOverflow=r_,((ex=tY||(tY={})).MemezFun||(ex.MemezFun={})).isSniperProtectedMemezFun=async function(e,t){return(await rl(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=t$.calcUp(t$.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 t$.calcUp(t$.sub(r,t),o)}throw Error("Unknown fee variant")},(ex.MemezBurner||(ex.MemezBurner={})).calculate=function(e,t){if(t$.value(e.fee.fields)===BigInt(0)||t===BigInt(0)||t>=BigInt(e.target_liquidity))return t$.new_(0);let o=BigInt(1e4);return t$.new_(tq.U64.mulDivUp(t$.value(e.fee.fields),tq.U64.mulDivUp(t,o,BigInt(e.target_liquidity)),o))},(eL=ex.MemezPump||(ex.MemezPump={})).getPumpState=async function(e,t){return await rl(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=t$.calcUp(c,a),l=a-(t$.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=tV||(tV={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,n=await rl(t,r),i=await tY.MemezPump.getPumpState(t,n);return o=ea(o,a),tY.MemezPump.pump(i,o)},ev.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,n=await rl(t,r),i=await tY.MemezPump.getPumpState(t,n);return ea(tY.MemezPump.dump(i,o),a)};let rm="0x62412b7268c35f3808336aee57a52836501f40b8ba5d936f8ad275e672befd04";async function rf(e,t){let o,r,{inputAmount:a,accountAddress:n,frontendFee:i,frontendFeeRecipient:s,extendTx:c,isSponsored:u}=e;eE(e.inCoinType===eC||e.inCoinType===eg,"Input must be SUI");let{tx:l,coinIn:d}=c||{},p=eM(a,i||"0"),_=l||new ed;if(d)o=_.splitCoins(d,p),tJ.transferOrDestroyZeroCoin(_,eC,d,n);else{let{coinData:e}=await ei({account:n,amount:a,splits:p,coinType:eC,inheritTx:_,isSponsored:u||!1},t);o=e}if(i&&s){let[e,t]=o;r=e,_.transferObjects([t],_.pure.address(s||n))}else[r]=o;return{tx:_,coinOut:r}}async function rg(e,t,o){if(eE(t.outCoinType===eC||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:`${rm}::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:`${rm}::utils::transfer_or_destroy`,typeArguments:[t],arguments:[o,e.pure.address(r)]})};var rA=tH||(tH={});async function rb(e){let t=e||new ed;return t.moveCall({target:`${tj.PACKAGE_ID_V4}::memez_allowed_versions::get_allowed_versions`,arguments:[t.object(tj.MEMEZ_AV_OBJECT_ID)],typeArguments:[]})}rA.getAllowedVersions=rb,rA.buildBuyTx=async function(e,t){eE(!await tY.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 rf(e,t);eE(r,"Coin out is required");let a=o.moveCall({target:`${tj.PACKAGE_ID_V4}::memez_pump::pump`,typeArguments:[e.outCoinType,eC],arguments:[o.object(e.poolId),r,o.pure.vector("address",[]),o.pure.vector("vector<u8>",[]),o.pure.u64(e.minAmountOut),await rb(o)]});return{tx:o,coinOut:a}},rA.buildSellTx=async function(e,t){eE(e.outCoinType===eC||e.outCoinType===eg,"Output must be SUI");let o=await rl(t,e.poolId),{tx:r,coinData:a}=await ei({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[n]=a,[i]=r.moveCall({target:`${tj.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 rb(r)]});return await rg(r,e,i)};let rI=new z({network:Q.MAINNET,fullNodeUrl:eI("mainnet")});function rT(){return rI}(ek=tX||(tX={})).getCurveAmountAfterBuy=async function(e){let{suiAmount:t,poolId:o,frontendFee:r}=e;t=ea(t,r);let{memeAmountOut:a}=await rT().quotePump({pool:o,amount:t});return a},ek.getSuiAmountAfterSell=async function(e){let{curveAmount:t,poolId:o,frontendFee:r}=e,{quoteAmountOut:a}=await rT().quoteDump({pool:o,amount:t});return ea(a,r)};var rC=tW||(tW={});async function rO(e,t){let{tx:o,coinOut:r}=await rf(e,t);eE(r,"Coin out is required");let{memeCoin:a,tx:n}=await rT().pump({pool:e.poolId,quoteCoin:r,minAmountOut:e.minAmountOut,tx:o});return{tx:n,coinOut:a}}async function rM(e,t){eE(eA(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await ei({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,{quoteCoin:n,tx:i}=await rT().dump({pool:e.poolId,memeCoin:a,tx:o,minAmountOut:e.minAmountOut});return await rg(i,e,n)}rC.buildBuyTx=rO,rC.buildSellTx=rM,rC.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:n,walletAddress:i,tradeFee:s},c){eE(eA(t),"coinInType must be SUI for buy transaction"),eE(o!==t,"coinOutType must be different from coinInType"),eE(n>=0&&n<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),eE(e>0,"coinInAmount must be greater than 0");let u=BigInt(new a((await tX.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:s?s.tradeFeePercent:void 0})).toString()).multipliedBy(1-n).toFixed(0,3)),{tx:l,coinOut:d}=await rO({accountAddress:i,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:s?s.tradeFeePercent:void 0,frontendFeeRecipient:s?s.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},c);eE(d,"Coin out is required"),l.transferObjects([d],l.pure.address(i)),l.setSender(i);let p=await es(c,l,i,0);return(l=await ec({inheritTx:l,sender:i,feeAmount:p,suiInputAmount:e},c)).build({client:c})},rC.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:n,walletAddress:i,tradeFee:s},c){eE(eA(o),"coinOutType must be SUI for sell transaction"),eE(o!==t,"coinOutType must be different from coinInType"),eE(n>=0&&n<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),eE(e>0,"coinInAmount must be greater than 0");let u=BigInt(new a((await tX.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:s?s.tradeFeePercent:void 0})).toString()).multipliedBy(1-n).toFixed(0,3)),{tx:l,coinOut:d}=await rM({accountAddress:i,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:s?s.tradeFeePercent:void 0,frontendFeeRecipient:s?s.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},c);eE(d,"Coin out is required"),l.transferObjects([d],l.pure.address(i)),l.setSender(i);let p=await es(c,l,i,0);return(l=await ec({inheritTx:l,sender:i,feeAmount:p},c)).build({client:c})};var rE=((eU={}).BLAST_FUN="BLAST_FUN",eU.MOONBAGS="MOONBAGS",eU);(eN=tz||(tz={})).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=tQ||(tQ={})).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),s=BigInt(r.virtual_token_reserves),c=BigInt(r.remain_token_reserves.fields.balance),u=eK.Curves.calculateRemoveLiquidityReturn(i,s,o),l=s-(n||c),d=u,p=o;u>l&&(d=l,p=eK.Curves.calculateAddLiquidityCost(i,s,l)+BigInt(1));let _=p*BigInt(a.platform_fee)/tz.FEE_DENOMINATOR;return eE(t>=p+_,"Input amount is less than used SUI + fee"),{receivedCurve:d,receivedSui:t-p-_}},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)/tz.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([rl(t,r),rl(t,tz.CONFIG_OBJECT_ID),tQ.Moonbags.getDynamicVirtualTokenReserves(t,r)]);void 0!==a&&(o=ea(o,a));let c=o*tz.FEE_DENOMINATOR/(tz.FEE_DENOMINATOR+BigInt(i.platform_fee)),{receivedCurve:u}=tQ.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([rl(t,r),rl(t,tz.CONFIG_OBJECT_ID)]),{receivedSui:s}=tQ.Moonbags.sellReturns({amountIn:o,pool:n,config:i});return void 0!==a?ea(s,a):s},eq.getUsedSuiForTx=async function(e,t){let{suiAmount:o,frontendFee:r}=e,a=await rl(t,tz.CONFIG_OBJECT_ID);return void 0!==r&&(o=ea(o,r)),o*tz.FEE_DENOMINATOR/(tz.FEE_DENOMINATOR+BigInt(a.platform_fee))};var rh=t0||(t0={});async function ry(e,t){let{tx:o,coinOut:r}=await rf(e,t);eE(r,"Coin out is required");let a=await tZ.getUsedSuiForTx({suiAmount:BigInt(e.inputAmount),frontendFee:e.frontendFee},t),[n,i]=o.moveCall({target:`${tz.PACKAGE_ID}::moonbags::buy_exact_in_returns_with_lock`,typeArguments:[e.outCoinType],arguments:[o.object(tz.CONFIG_OBJECT_ID),o.object(tz.LOCK_CONFIG_OBJECT_ID),r,o.pure.u64(a),o.pure.u64(e.minAmountOut),o.object(tz.BURN_MANAGER_OBJECT_ID),o.object(tz.POOLS_OBJECT_ID),o.object(tz.GLOBAL_CONFIG_OBJECT_ID),o.object(ef),o.object(em)]});return tJ.transferOrDestroyZeroCoin(o,eC,n,e.accountAddress),{tx:o,coinOut:i}}async function rS(e,t){eE(eA(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await ei({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,[n,i]=o.moveCall({target:`${tz.PACKAGE_ID}::moonbags::sell_returns`,typeArguments:[e.inCoinType],arguments:[o.object(tz.CONFIG_OBJECT_ID),a,o.pure.u64(e.minAmountOut),o.object(em)]});return tJ.transferOrDestroyZeroCoin(o,e.inCoinType,i,e.accountAddress),await rg(o,e,n)}function rP(e){return e}function rF(e){return e}function rB(e){return new Proxy(e,{get(e,t){let o=e[t];return"function"==typeof o?o.bind(e):o}})}rh.buildBuyTx=ry,rh.buildSellTx=rS,rh.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:n,walletAddress:i,tradeFee:s},c){eE(eA(t),"coinInType must be SUI for buy transaction"),eE(o!==t,"coinOutType must be different from coinInType"),eE(n>=0&&n<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),eE(e>0,"coinInAmount must be greater than 0");let u=BigInt(new a((await tZ.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:s?s.tradeFeePercent:void 0},c)).toString()).multipliedBy(1-n).toFixed(0,3)),{tx:l,coinOut:d}=await ry({accountAddress:i,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:s?s.tradeFeePercent:void 0,frontendFeeRecipient:s?s.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},c);eE(d,"Coin out is required"),l.transferObjects([d],l.pure.address(i)),l.setSender(i);let p=await es(c,l,i,0);return(l=await ec({inheritTx:l,sender:i,feeAmount:p,suiInputAmount:e},c)).build({client:c})},rh.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:n,walletAddress:i,tradeFee:s},c){eE(eA(o),"coinOutType must be SUI for sell transaction"),eE(o!==t,"coinOutType must be different from coinInType"),eE(n>=0&&n<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),eE(e>0,"coinInAmount must be greater than 0");let u=BigInt(new a((await tZ.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:s?s.tradeFeePercent:void 0},c)).toString()).multipliedBy(1-n).toFixed(0,3)),{tx:l,coinOut:d}=await rS({accountAddress:i,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:s?s.tradeFeePercent:void 0,frontendFeeRecipient:s?s.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},c);eE(d,"Coin out is required"),l.transferObjects([d],l.pure.address(i)),l.setSender(i);let p=await es(c,l,i,0);return(l=await ec({inheritTx:l,sender:i,feeAmount:p},c)).build({client:c})},(e$=t1||(t1={})).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(en)]})},(eY=t6||(t6={})).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 Z(e,{timeout:3e3}))},eY.newPythClient=function(e){return e||(e=new e_({url:"https://fullnode.mainnet.sui.io:443"})),new ee(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 rD=((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 rw 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 rw(t??"Assertion failed",o,r)}}class rx{options;kind="SEVENK";constructor(e,o){this.options=e,e.apiKey&&t.setApiKey(e.apiKey),t.setSuiClient(o)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tk.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tk.SUPPORTED_PROTOCOLS);let o=await r({tokenIn:e.coinTypeIn,tokenOut:e.coinTypeOut,amountIn:e.amountIn,sources:t,excludedPools:this.options.excludedPools,targetPools:this.options.targetPools});return rw.assert(!!o,"No quote found",rD.QUOTE_NOT_FOUND,{provider:this.kind}),{sourceRoute:"SEVENK",rawRoute:o,amountIn:o.swapAmountWithDecimal,amountOut:o.returnAmountWithDecimal,coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}let rR=t6.PYTH_URLS;class rL{options;kind="CETUS";cetusClient;constructor(e,t,o){this.options=e,this.cetusClient=new _({apiKey:e.apiKey,client:o,endpoint:e.api,env:I.Mainnet,pythUrls:t.hermesApi?t.hermesApi:rR})}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tK.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tK.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 rw.assert(!!o,"No quote found",rD.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 rv{options;kind="FLOWX";quoter;constructor(e){this.options=e,this.quoter=new Y("mainnet",e.apiKey)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tG.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tG.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=t4||(t4={})).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=t2||(t2={})).LAST_PACKAGE_ID="0xf369250dc5a17e9d5a84a3b0cf5aea715c0682170e726dd601f03ade7ce4decb",eH.swap=function(e){eE(e.protocol===rr.AFTERMATH_CPMM);let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,coinLpType:c,packageId:u}=e;t.moveCall({target:`${u??eH.LAST_PACKAGE_ID}::aftermath_cpmm_router::swap`,typeArguments:[i,s,c],arguments:[o,t.object(r),t.object(t4.POOL_REGISTRY_OBJ_ID),t.object(t4.PROTOCOL_FEE_VAULT_OBJ_ID),t.object(t4.TREASURY_OBJ_ID),t.object(t4.INSURANCE_FUND_OBJ_ID),t.object(t4.REFERRAL_VAULT_OBJ_ID),t.pure.bool(a),t.pure.u64(n)]})},(eX=t3||(t3={})).STAKED_SUI_VAULT_OBJ_ID="0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d",eX.SAFE_TREASURY_OBJECT_ID="0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610",eX.REFERRAL_VAULT_OBJ_ID="0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef",eX.VALIDATOR_ADDRESS="0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2",(eW=t5||(t5={})).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(t3.STAKED_SUI_VAULT_OBJ_ID),t.object(t3.SAFE_TREASURY_OBJECT_ID),t.object(eo),t.object(t3.REFERRAL_VAULT_OBJ_ID),t.pure.address(t3.VALIDATOR_ADDRESS),t.pure.bool(r),t.pure.u64(a)]})},(ez=t8||(t8={})).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(eo),t.pure.bool(n),t.pure.u64(a)]})},(eQ=t9||(t9={})).MEMEZ_AV_OBJ_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",eQ.MEMEZ_FUN_OBJ_ID="0x943948644f06942b8b660ca541b10a05f6a7be23ce4069944a3665e7e698930d",eQ.IPX_TREASURY_STANDARD_OBJ_ID="0x051e11b667659192917db94e5175fa066909d4dfc04d2663528f499c4afc6999",(eZ=t7||(t7={})).LAST_PACKAGE_ID="0x8b1e84ed9bc79d31160600254d65810f6bc6d2352f174a60ed041017d0a2a87a",eZ.swap=function(e){eE(e.protocol===rr.BLASTFUN,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??eZ.LAST_PACKAGE_ID}::blastfun_router::swap`,typeArguments:[r,a],arguments:[o,t.object(t9.MEMEZ_FUN_OBJ_ID),t.object(t9.IPX_TREASURY_STANDARD_OBJ_ID),t.object(t9.MEMEZ_AV_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(oe||(oe={})).GLOBAL_CONFIG_OBJ_ID="0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",(e0=ot||(ot={})).LAST_PACKAGE_ID="0x9f8397124b6bdb55aeb7b5e43761e0e4dc94b9e22e94b1b25d8211d99df422d5",e0.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??e0.LAST_PACKAGE_ID}::bluefin_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(oe.GLOBAL_CONFIG_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(en)]})},(oo||(oo={})).DEX_INFO_OBJ_ID="0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92",(e1=or||(or={})).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(oo.DEX_INFO_OBJ_ID),t.pure.bool(r),t.pure.u64(a)]})},(oa||(oa={})).ORACLE_OBJ_ID="0xfa3975b98f3d0e3df18ed88ae6e69db31836b3f4212df02fae144b1e5a89ca8e",(e6=on||(on={})).LAST_PACKAGE_ID="0xfb4f0f6fe3ddc4253e05d0e147556ea7941300c7db4262d1a5993eb20a6cbdb3",e6.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??e6.LAST_PACKAGE_ID}::bolt_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oa.ORACLE_OBJ_ID),t.object(en),t.pure.u64(s),t.pure.bool(i)]})},(oi||(oi={})).GLOBAL_CONFIG="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",(e4=os||(os={})).LAST_PACKAGE_ID="0xb3dbb229464cb14b9f8cfa087e5b162623c8f485395dc9b975e263a5ee7051e4",e4.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??e4.LAST_PACKAGE_ID}::cetus_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oi.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(en)]})},(e2=oc||(oc={})).GLOBAL_CONFIG_OBJ_ID="0xf31b605d117f959b9730e8c07b08b856cb05143c5e81d5751c90d2979e82f599",e2.VERSIONED_OBJ_ID="0x05370b2d656612dd5759cbe80463de301e3b94a921dfc72dd9daa2ecdeb2d0a8",(e3=ou||(ou={})).LAST_PACKAGE_ID="0x9ab3ba62b4327a7d90e4aed1c025b62736f035911ad7bab830c065ec84ef1ffa",e3.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinAType:i,coinBType:s,packageId:c}=e,u=[o,t.object(oc.GLOBAL_CONFIG_OBJ_ID),t.object(oc.VERSIONED_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(en)];t.moveCall({target:`${c??e3.LAST_PACKAGE_ID}::cetus_dlmm_router::swap`,typeArguments:[i,s],arguments:u})},(e5=ol||(ol={})).GLOBAL_CONFIG="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135",e5.DEEP_TYPE="0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",(e8=od||(od={})).LAST_PACKAGE_ID="0xbc23dacd6f66386e4a512eef1f3b0ccaad8e7d24eac7432d67737b22f661a810",e8.swap=function(e){eE(e.protocol===rr.DEEPBOOK_V3,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,deepFeeCoin:c,packageId:u}=e,l=c||t.moveCall({target:"0x2::coin::zero",typeArguments:[ol.DEEP_TYPE]});t.moveCall({target:`${u??e8.LAST_PACKAGE_ID}::deepbook_v3_router::swap`,typeArguments:[r,a],arguments:[o,t.object(ol.GLOBAL_CONFIG),t.object(n),t.pure.u64(s),t.pure.bool(i),l,t.object(en)]})},(op||(op={})).GLOBAL_OBJ_ID="0x935229a3c32399e9fb207ec8461a54f56c6af5744c64442435ac217ab28f0d59",(e9=o_||(o_={})).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(op.GLOBAL_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(om||(om={})).FERRA_GLOBAL_CONFIG_ID="0x2cd8382c19e6994f16df204e9b8cddd04bdc486c251de75ac66ac4e48e3e7081",(e7=of||(of={})).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(om.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object("0x6")]})},(og||(og={})).FERRA_GLOBAL_CONFIG_ID="0x5c9dacf5a678ea15b8569d65960330307e23d429289ca380e665b1aa175ebeca",(te=oA||(oA={})).LAST_PACKAGE_ID="0x686e9eb19b04d46374c3fb82cb4ebb7b24ef8a9ae13f403915f4ae347e0f6593",te.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??te.LAST_PACKAGE_ID}::ferra_dlmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(og.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object(en)]})},(tt=ob||(ob={})).POOL_REGISTRY_OBJ_ID="0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc",tt.VERSIONED_OBJ_ID="0x67624a1533b5aff5d0dfcf5e598684350efd38134d2d245f475524c03a64e656",(to=oI||(oI={})).LAST_PACKAGE_ID="0x350a752d3388165e578cc33a39655a6da83613cf4e58c8d9d0723711c2603e17",to.swap=function(e){eE(e.protocol===rr.FLOWX_CLMM);let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolFeeRate:n,amountIn:i,aToB:s,packageId:c}=e;t.moveCall({target:`${c??to.LAST_PACKAGE_ID}::flowx_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(ob.POOL_REGISTRY_OBJ_ID),t.object(ob.VERSIONED_OBJ_ID),t.pure.u64(n),t.pure.u64(i),t.pure.bool(s),t.object(en)]})},(oT||(oT={})).CONTAINER_OBJ_ID="0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511",(tr=oC||(oC={})).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(oT.CONTAINER_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(ta=oO||(oO={})).GLOBAL_CONFIG_OBJ_ID="0xe93baa80cb570b3a494cbf0621b2ba96bc993926d34dc92508c9446f9a05d615",ta.REWARDER_VAULT_OBJ_ID="0xfb971d3a2fb98bde74e1c30ba15a3d8bef60a02789e59ae0b91660aeed3e64e1",ta.STATS_OBJ_ID="0x6822a33d1d971e040c32f7cc74507010d1fe786f7d06ab89135083ddb07d2dc2",ta.PRICE_PROVIDER_OBJ_ID="0x854b2d2c0381bb656ec962f8b443eb082654384cf97885359d1956c7d76e33c9",(tn=oM||(oM={})).LAST_PACKAGE_ID="0xf0bf13b5baaf3d368f165e846b919294bed79a3ab3ab0c9bd1e75f23533e44a5",tn.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??tn.LAST_PACKAGE_ID}::fullsail_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(oO.GLOBAL_CONFIG_OBJ_ID),t.object(oO.REWARDER_VAULT_OBJ_ID),t.object(oO.STATS_OBJ_ID),t.object(oO.PRICE_PROVIDER_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(en)]})},(ti=oE||(oE={})).LAST_PACKAGE_ID="0x8969ed3e56c1dbdaf9df52f812d69c6c45fe5a4bab7093c88f5a8697a409398e",ti.swap=function(e){eE(e.protocol===rr.HAEDAL_CPMM);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdA:c,pythPriceFeedIdB:u,pythInfoObjectIdMap:l,packageId:d}=e,p=l.get(c),_=l.get(u);eE(p,"Not found priceInfoAId in pythObjectIdMap"),eE(_,"Not found priceInfoBId in pythObjectIdMap"),t.moveCall({target:`${d??ti.LAST_PACKAGE_ID}::haedal_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(p),t.object(_),t.pure.u64(s),t.pure.bool(i),t.object(en)]})},(ts=oh||(oh={})).LAST_PACKAGE_ID="0x5d01f22e5471a5912a88e15d62fdcb922beba65b8e8dfe1a715aebf743194f4a",ts.swap=function(e){eE(e.protocol===rr.HAEDAL_CPMM_V2);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdBase:c,pythInfoObjectIdMap:u,packageId:l}=e,d=u.get(c);eE(d,"Not found pythPriceBaseId in pythObjectIdMap"),t.moveCall({target:`${l??ts.LAST_PACKAGE_ID}::haedal_cpmm_v2_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(d),t.pure.u64(s),t.pure.bool(i),t.object(en)]})},(tc=oy||(oy={})).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(eo),t.pure.bool(r),t.pure.u64(a)]})},(oS||(oS={})).STAKING_OBJ_ID="0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904",(oP||(oP={})).VALIDATOR_ID="0x7b3ba6de2ae58283f60d5b8dc04bb9e90e4796b3b2e0dea75569f491275242e7",(tu=oF||(oF={})).LAST_PACKAGE_ID="0x7be077dd73c85e788c2a49a51f0627066d81d3dc9982c268e3691265a81d544d",tu.swap=function(e){eE(e.protocol===rr.HAEDAL_LSD_WAL),eE(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(oS.STAKING_OBJ_ID),t.object(r),t.pure.id(oP.VALIDATOR_ID),t.pure.bool(a),t.pure.u64(n)]})},(oB||(oB={})).VERSION_OBJ_ID="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78",(tl=oD||(oD={})).LAST_PACKAGE_ID="0xcf141e1d18ff609b2ac56532b391f7648fc55e28696efe354186f5109c0eff06",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}::kriya_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oB.VERSION_OBJ_ID),t.pure.bool(i),t.pure.u64(s),t.object(en)]})},(td=ow||(ow={})).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=ox||(ox={})).FACTORY_OBJ_ID="0xedb456e93e423dd75a8ddebedd9974bb661195043027e32ce01649d6ccee74cf",tp.GLOBAL_CONFIG_OBJ_ID="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(t_=oR||(oR={})).LAST_PACKAGE_ID="0x950f94d33060c0575389c9f84fabab1e140776c6c84389d4237a0c2687a7adc9",t_.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??t_.LAST_PACKAGE_ID}::magma_almm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(ox.FACTORY_OBJ_ID),t.object(ox.GLOBAL_CONFIG_OBJ_ID),t.pure.u64(s),t.pure.bool(i),t.object(en)]})},(oL||(oL={})).GLOBAL_CONFIG="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(tm=ov||(ov={})).LAST_PACKAGE_ID="0xbe5f590339c55ca8ebbf93cedfb68aafd479d71e1c57043246f7dcf352745242",tm.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??tm.LAST_PACKAGE_ID}::magma_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oL.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(en)]})},(tf=ok||(ok={})).LATEST_PACKAGE_ID="0xfab91518218f10204b083dba1e62c8bfc23f14fb87742158043e5faec4670ec4",tf.swap=function(e){let t,o,r;eE(e.protocol===rr.METASTABLE,"Invalid protocol");let{txb:a,swapContext:n,aToB:i,amountIn:s,coinAType:c,coinBType:u,poolId:l,metaCoin:d,packageId:p}=e,[_,m]=i?[c,u]:[u,c];_===d?(r="swap_from_meta_coin",t=[d,m],o=[tN.createCap({coinType:m,createCapFunc:"create_withdraw_cap",...e})]):m===d?(r="swap_to_meta_coin",t=[d,_],o=[tN.createCap({coinType:_,createCapFunc:"create_deposit_cap",...e})]):(r="swap",t=[d,_,m],o=[tN.createCap({coinType:_,createCapFunc:"create_deposit_cap",...e}),tN.createCap({coinType:m,createCapFunc:"create_withdraw_cap",...e})]),a.moveCall({target:`${p??tf.LATEST_PACKAGE_ID}::metastable_router::${r}`,typeArguments:t,arguments:[n,a.object(l),a.object(tN.VERSION_OBJ_ID),...o,a.pure.u64(s)]})},(oU||(oU={})).VERSION_OBJ_ID="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a",(tg=oN||(oN={})).LAST_PACKAGE_ID="0xba7ab4c8c39024fa0052bb4f00548a2e7b60742bb4ed0b87bc1d945fd8209102",tg.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??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(oU.VERSION_OBJ_ID),t.object(en)]})},(oK||(oK={})).CONFIGURATION_OBJ_ID="0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4",(tA=oG||(oG={})).LAST_PACKAGE_ID="0x5a259db4b1d17fafc09185c9a71bac36f25f9ee462e72894c8610e5a58b79f8f",tA.swap=function(e){eE(e.protocol===rr.MOVEPUMP,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,expectedAmountOut:s,packageId:c}=e;t.moveCall({target:`${c??tA.LAST_PACKAGE_ID}::movepump_router::swap`,typeArguments:[n?a:r],arguments:[o,t.object(oK.CONFIGURATION_OBJ_ID),t.object(oo.DEX_INFO_OBJ_ID),t.object(en),t.pure.u64(s),t.pure.bool(n),t.pure.u64(i)]})},(oj||(oj={})).STATE_OBJ_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",(tb=oq||(oq={})).LAST_PACKAGE_ID="0xd615fed37d692280047068e80d3a6bb685aa9d574608054c9df881d6a7378fab",tb.swap=function(e){let t,o;eE(e.protocol===rr.OBRIC);let{txb:r,swapContext:a,poolId:n,coinAType:i,coinBType:s,aToB:c,amountIn:u,pythInfoObjectIdMap:l,packageId:d}=e;"priceInfoObjIdA"in e?(t=e.priceInfoObjIdA,o=e.priceInfoObjIdB):(t=l.get(e.pythPriceFeedIdA),o=l.get(e.pythPriceFeedIdB),eE(t,"Not found priceInfoAId in pythObjectIdMap"),eE(o,"Not found priceInfoBId in pythObjectIdMap")),r.moveCall({target:`${d??tb.LAST_PACKAGE_ID}::obric_router::swap`,typeArguments:[i,s],arguments:[a,r.object(n),r.pure.u64(u),r.pure.bool(c),r.object(oj.STATE_OBJ_ID),r.object(t),r.object(o),r.object(en)]})},(tI=o$||(o$={})).VERSION_OBJ_ID="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",tI.MARKET_OBJ_ID="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",(tT=oY||(oY={})).LAST_PACKAGE_ID="0xea409bb08c8a09e4127f859d9c36b8b62ca609282aa1e443091db6b7a7409ee7",tT.swap=function(e){eE(e.protocol===rr.SCALLOP);let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,scoinTreasury:s,packageId:c}=e;t.moveCall({target:`${c??tT.LAST_PACKAGE_ID}::scallop_router::swap`,typeArguments:[r,a],arguments:[o,t.object(o$.VERSION_OBJ_ID),t.object(o$.MARKET_OBJ_ID),t.object(s),t.pure.u64(i),t.pure.bool(n),t.object(en)]})},(oV||(oV={})).ORACLE_HOLDER_OBJ_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",(tC=oJ||(oJ={})).LAST_PACKAGE_ID="0x918a30e2a05d24ea9451e2d2900d055f74e6752f2e10251fa50c7175831b1958",tC.swap=function(e){eE(e.protocol===rr.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:c,oracleConfigA:u,oracleConfigB:l,pythPriceFeedIdA:d,pythPriceFeedIdB:p,pythInfoObjectIdMap:_,packageId:m}=e,f=_.get(d),g=_.get(p);eE(f,"Not found priceInfoAId in pythObjectIdMap"),eE(g,"Not found priceInfoBId in pythObjectIdMap");let A=t1.newHolder(t);t1.getPrice({txb:t,coinPriceId:d,holder:A,coinOracleId:u}),t1.getPrice({txb:t,coinPriceId:p,holder:A,coinOracleId:l}),t.moveCall({target:`${m??tC.LAST_PACKAGE_ID}::sevenk_cpmm_router::swap`,typeArguments:[a,n,c],arguments:[o,t.object(r),t.object(oV.ORACLE_HOLDER_OBJ_ID),t.pure.bool(i),t.pure.u64(s)]})},(oH||(oH={})).CONFIGURATION_OBJ_ID="0xe79fff6c77d81f9a8efb729e25bf0037deec42518d40b978f274a4915d7e1ec9",(tO=oX||(oX={})).LAST_PACKAGE_ID="0x0a5dc665dc3c1c846a6d1e00811c84cae3510c839ab4dc0873f85dc8908d0606",tO.swap=function(e){eE(e.protocol===rr.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(oH.CONFIGURATION_OBJ_ID),t.object(oT.CONTAINER_OBJ_ID),t.object(en),t.pure.bool(r),t.pure.u64(a)]})},(tM=oW||(oW={})).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(eo),t.pure.u64(a),t.pure.bool(n)]})},(oz||(oz={})).CONFIG_OBJ_ID="0x881fd0a12ca4fa48991f5c27ba57d17f1ec147fa15f43b3cb760cc3bd7ba9402",(tE=oQ||(oQ={})).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(oz.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(en)]})};var rk=o0||(o0={});function rU(e,t){eE(e.protocol===rr.STEAMM_OMM||e.protocol===rr.STEAMM_OMM_V2,"Invalid protocol for steamm _swapOmm swap");let{txb:o,swapContext:r,poolId:a,coinAType:n,coinBType:i,aToB:s,amountIn:c,bankAId:u,bankBId:l,lendingMarketId:d,lendingMarketType:p,bCoinAType:_,bCoinBType:m,lpBCoinType:f,pythPriceFeedIdA:g,pythPriceFeedIdB:A,pythInfoObjectIdMap:b,oracleRegistryId:I,oracleIndexA:T,oracleIndexB:C,packageId:O}=e,M=b.get(g),E=b.get(A);eE(M,"Not found priceInfoAId in pythObjectIdMap"),eE(E,"Not found priceInfoBId in pythObjectIdMap");let h=oZ.Oracle.getPythPrice({txb:o,oracleRegistryId:I,priceInfoId:M,oracleIndex:T}),y=oZ.Oracle.getPythPrice({txb:o,oracleRegistryId:I,priceInfoId:E,oracleIndex:C});o.moveCall({target:`${O??rk.LAST_PACKAGE_ID}::${rN(t)}::swap`,typeArguments:[p,n,i,_,m,f],arguments:[r,o.object(a),o.object(u),o.object(l),o.object(d),h,y,o.pure.bool(s),o.pure.u64(c),o.object(en)]})}function rN(e){switch(e){case 0:return"steamm_omm_router";case 1:return"steamm_omm_v2_router"}}function rK(e){let{amountOut:t,aggregatorFeeBps:o,partnerFeeBps:r}=e,a=rG(t,o);return r&&(a=rG(a,r)),a}function rG(e,t){let o=BigInt(e)*BigInt(t)/BigInt(1e4);return(BigInt(e)-o).toString()}function rj(e){return Math.floor(100*e)}rk.LAST_PACKAGE_ID="0xd7430ec87be03b22e29ad95e811d8146fb0ece72037cf546618297def842b57e",rk.swapCpmm=function(e){eE(e.protocol===rr.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:c,bankBId:u,lendingMarketId:l,lendingMarketType:d,bCoinAType:p,bCoinBType:_,lpBCoinType:m}=e;t.moveCall({target:`${rk.LAST_PACKAGE_ID}::steamm_cpmm_router::swap`,typeArguments:[d,a,n,p,_,m],arguments:[o,t.object(r),t.object(c),t.object(u),t.object(l),t.pure.bool(i),t.pure.u64(s),t.object(en)]})},rk.swapOmm=function(e){rU(e,0)},rk.swapOmmV2=function(e){rU(e,1)},rk.getOmmRouterModule=rN,(tS=o1||(o1={})).LAST_PACKAGE_ID="0x7a1cf89025a60161e84809784d772263231fad08a7cb76a88ca1ba69e0a656da",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}::suiswap_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(en)]})},(tP=o6||(o6={})).VERSIONED="0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676",tP.POOL_REGISTRY="0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd",(tF=o4||(o4={})).LAST_PACKAGE_ID="0x79957062a7424ed9c2eb83932e4c4fcc3fee67ab3c8f6f874c54e417178bbb7a",tF.swap=function(e){eE(e.protocol===rr.TRADEPORT_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,poolFeeRate:s,packageId:c}=e;t.moveCall({target:`${c??tF.LAST_PACKAGE_ID}::tradeport_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(o6.POOL_REGISTRY),t.pure.u64(s),t.object(o6.VERSIONED),t.pure.bool(n),t.pure.u64(i),t.object(en)]})},(o2||(o2={})).POOL_VERSIONED="0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f",(tB=o3||(o3={})).LAST_PACKAGE_ID="0x512d63711ff38353fb167238b0529001b6871c1727c67ce3bf6ec23556b0f1da",tB.swap=function(e){eE(e.protocol===rr.TURBOS_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,coinFeeType:n,poolId:i,aToB:s,amountIn:c,packageId:u}=e;t.moveCall({target:`${u??tB.LAST_PACKAGE_ID}::turbos_clmm_router::swap`,typeArguments:[r,a,n],arguments:[o,t.object(i),t.object(o2.POOL_VERSIONED),t.pure.bool(s),t.pure.u64(c),t.object(en)]})},(o5||(o5={})).CONFIGURATION_OBJ_ID="0xd86685fc3c3d989385b9311ef55bfc01653105670209ac4276ebb6c83d7df928",(tD=o8||(o8={})).LAST_PACKAGE_ID="0x1fad13f09797aa87a4385d0b1efb2de963ba16742447b1ad5a3b0c5b1d1c588b",tD.swap=function(e){eE(e.protocol===rr.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(o5.CONFIGURATION_OBJ_ID),t.object(en),t.pure.bool(a),t.pure.u64(n)]})},(o9||(o9={})).VOLO_CERT_METADATA_ID="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",(tw=o7||(o7={})).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(o9.VOLO_CERT_METADATA_ID),t.object(eo),t.pure.bool(a),t.pure.u64(n)]})},(tx=re||(re={})).RouterSwapFunctionMap={[rr.AFTERMATH_CPMM]:t2.swap,[rr.AFTERMATH_LSD]:t5.swap,[rr.ALPHAFI_LSD]:t8.swap,[rr.BLASTFUN]:t7.swap,[rr.BLUEFIN_CLMM]:ot.swap,[rr.BLUEMOVE_CPMM]:or.swap,[rr.BOLT]:on.swap,[rr.CETUS_CLMM]:os.swap,[rr.CETUS_DLMM]:ou.swap,[rr.DEEPBOOK_V3]:od.swap,[rr.DIP_CPMM]:o_.swap,[rr.FERRA_CLMM]:of.swap,[rr.FERRA_DLMM]:oA.swap,[rr.FLOWX_CPMM]:oC.swap,[rr.FLOWX_CLMM]:oI.swap,[rr.FULLSAIL_CLMM]:oM.swap,[rr.HAEDAL_CPMM]:oE.swap,[rr.HAEDAL_CPMM_V2]:oh.swap,[rr.HAEDAL_LSD]:oy.swap,[rr.HAEDAL_LSD_WAL]:oF.swap,[rr.KRIYA_CLMM]:oD.swap,[rr.KRIYA_CPMM]:ow.swap,[rr.MAGMA_ALMM]:oR.swap,[rr.MAGMA_CLMM]:ov.swap,[rr.METASTABLE]:ok.swap,[rr.MOMENTUM_CLMM]:oN.swap,[rr.MOVEPUMP]:oG.swap,[rr.OBRIC]:oq.swap,[rr.SCALLOP]:oY.swap,[rr.SEVENK_CPMM]:oJ.swap,[rr.SEVENK_FUN]:oX.swap,[rr.SPRINGSUI]:oW.swap,[rr.SRM_CPMM]:oQ.swap,[rr.STEAMM_CPMM]:o0.swapCpmm,[rr.STEAMM_OMM]:o0.swapOmm,[rr.STEAMM_OMM_V2]:o0.swapOmmV2,[rr.SUISWAP_CPMM]:o1.swap,[rr.TRADEPORT_CLMM]:o4.swap,[rr.TURBOS_CLMM]:o3.swap,[rr.TURBOS_FUN]:o8.swap,[rr.VOLO]:o7.swap},tx.swap=function(e){(0,tx.RouterSwapFunctionMap[e.protocol])(e)},(rt||(rt={})).buildAggregatorSwapTransaction=async function(e){let{tx:t,coinOutType:o,tradePaths:r,pythConnections:a,pythClient:n,packageIdMap:i}=e,s=tv.openSwap(e),c=await t6.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];re.swap({...o,txb:t,swapContext:s,amountIn:o.amountIn,coinAType:a,coinBType:n,packageId:i?.get(o.protocol),pythInfoObjectIdMap:c})}return tv.closeSwap({tx:t,coinOutType:o,swapSession:s})};let rq=t6.newPythConnections(),r$=t6.newPythClient();var rY=ro||(ro={});function rV(e){var t,o;let r,a,{buildTxParam:n,rawRouteParam:i}=e;switch(i.sourceRoute){case"CETUS":r=tK.convert(i.rawRoute);break;case"FLOWX":r=tG.convert(i.rawRoute);break;case"SEVENK":r=tk.convert(i.rawRoute);break;default:throw Error("Unsupported source route")}let s=rj(n.aggregatorFeeRatePercent),c=n.partnerFeeRatePercent?rj(n.partnerFeeRatePercent):void 0,u=n.expectedAmountOut??rK({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??rq,pythClient:n.pythClient??r$}}rY.toMetaAggregatorBuildTxParams=rV,rY.buildTx=function(e){let t=rV(e);return rt.buildAggregatorSwapTransaction(t)};let rJ=async(e,t,o)=>t<=0?e():new Promise((r,a)=>{let n=setTimeout(()=>a(new rw(`Timeout ${o??"operation"}`,rD.TIMEOUT,{timeout:t})),t);e().then(r).catch(a).finally(()=>clearTimeout(n))}),rH=(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)}},rX={SEVENK:{},FLOWX:{},CETUS:{}};class rW{client;providers={};options;constructor(e){this.options={providers:{...rX,...e?.providers},slippageBps:e?.slippageBps??100,fullnodeUrl:e?.fullnodeUrl??eI("mainnet"),hermesApi:e?.hermesApi??t6.PYTH_URLS,partner:e?.partner??eT,partnerCommissionBps:e?.partnerCommissionBps??0,tipBps:e?.tipBps??0},this.client=new e_({url:this.options.fullnodeUrl})}async getQuoteClient(e){let t=this.providers[e];if(t)return t;let o=this.options.providers[e];switch(rw.assert(!!o,`Provider not found: ${e}`,rD.PROVIDER_NOT_FOUND,{provider:e}),e){case"SEVENK":{let{Bluefin7kClient:e}=await Promise.resolve().then(()=>({Bluefin7kClient:rx})).catch(rz("SEVENK"));this.providers.SEVENK=new e(o,this.client);break}case"FLOWX":{let{FlowxClient:e}=await Promise.resolve().then(()=>({FlowxClient:rv})).catch(rz("FLOWX"));this.providers.FLOWX=new e(o);break}case"CETUS":{let{CetusClient:e}=await Promise.resolve().then(()=>({CetusClient:rL})).catch(rz("CETUS"));this.providers.CETUS=new e(o,this.options,this.client);break}default:throw new rw(`Provider not supported: ${e}`,rD.PROVIDER_NOT_SUPPORTED,{provider:e})}return this.providers[e]}async getQuoteByClient(e,t){return await rJ(async()=>{let o=await e.quote(t);return o?(o.amountOut=rK({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:eu(e.coinTypeIn),coinTypeOut:eu(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=eb(o);rw.assert(ep(i),`Invalid signer address: ${o}`,rD.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 ro.buildTx({buildTxParam:{tx:r,inputCoin:a,expectedAmountOut:t.amountOut,slippagePercent:s,aggregatorFeeRatePercent:this.options.tipBps/1e4,aggregatorFeeRecipient:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff",partnerFeeRatePercent:u,partnerFeeRecipient:c,pythConnections:t6.newPythConnections(this.options.hermesApi),pythClient:t6.newPythClient(this.client)},rawRouteParam:{...t}})}}let rz=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 rQ{sdk;_astrosAggregator;_aftermathAggregator;_sevenkAggregator;_cetusAggregator;_flowXAggregator;constructor(e){this.sdk=e,this._astrosAggregator=new ri({defaultTradeFee:e.options.tradeFee,astrosApiKey:e.options.astrosApiKey},e.suiClient),this._aftermathAggregator=new rn({defaultTradeFee:e.options.tradeFee,aftermathApiKey:e.options.aftermathApiKey,aftermathApiEndpoint:e.options.aftermathApiEndpoint},e.suiClient),this._sevenkAggregator=new ra({defaultTradeFee:e.options.tradeFee,sevenKApiKey:e.options.sevenKApiKey},e.suiClient),this._cetusAggregator=new rs({defaultTradeFee:e.options.tradeFee,cetusApiKey:e.options.cetusApiKey,cetusApiEndpoint:e.options.cetusApiEndpoint,cetusPartnerId:e.options.cetusPartnerId},e.suiClient),this._flowXAggregator=new ru({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 rc.ASTROS:{let e,r=await this._astrosAggregator.getTradeRoute(t);if(!r)return null;let n=ri.toCommonTradeRoutes(r,t.coinInType,t.coinOutType);if(!n)return null;e=t.tradeFee?t.tradeFee.tradeFeePercent:this.sdk.options.tradeFee.tradeFeePercent,n.amountOut=BigInt(new a(r.amount_out).multipliedBy(1-e).toFixed(0,3)),o={route:n,aggregatorRoute:r};break}case rc.AFTERMATH:{let e=await this._aftermathAggregator.getTradeRoute(t);if(!e)return null;let r=rn.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rc.SEVENK:{let e=await this._sevenkAggregator.getTradeRoute(t);if(!e)return null;let r=ra.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rc.CETUS:{let e=await this._cetusAggregator.getTradeRoute(t);if(!e)return null;let r=rs.toCommonTradeRoutes(e,t.coinInType,t.coinOutType);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rc.FLOWX:{let e=await this._flowXAggregator.getTradeRoute(t);if(!e)return null;let r=ru.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e}}}return o}async getTransactionByRoute(e,t){switch(e){case rc.ASTROS:return this._astrosAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rc.AFTERMATH:return this._aftermathAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage});case rc.SEVENK:return this._sevenkAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rc.CETUS:return this._cetusAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rc.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(rc),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(rc),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 rZ{sdk;constructor(e){this.sdk=e}async getEstimatedAmountOut(e,t){let{coinInType:o,coinOutType:r}=t;eE(o!==r,"coinInType and coinOutType must be different"),eE(eA(o)||eA(r),"One of coinInType or coinOutType must be SUI");let a=eA(o);switch(e){case rE.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 rE.BLAST_FUN:if(a)return await tX.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});return await tX.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;eE(r!==a,"coinInType and coinOutType must be different"),eE(eA(r)||eA(a),"One of coinInType or coinOutType must be SUI");let n=eA(r);switch(e){case rE.MOONBAGS:o=n?await t0.getBuyTransaction(t,this.sdk.suiClient):await t0.getSellTransaction(t,this.sdk.suiClient);break;case rE.BLAST_FUN:o=n?await tW.getBuyTransaction(t,this.sdk.suiClient):await tW.getSellTransaction(t,this.sdk.suiClient);break;default:throw Error(`Unsupported bonding curve platform: ${e}`)}return o}}let r0={tradeFeePercent:.01,tradeFeeRecipientAddress:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff"};class r1{network;env;options;_suiClient;aggregatorModule;curveModule;constructor(e,t="mainnet",o="prod"){this.options=e,this.network=t,this.env=o;let r=eI(t);this._suiClient=new e_({url:r}),this.aggregatorModule=new rQ(this),this.curveModule=new rZ(this)}get suiClient(){return this._suiClient}}class r6{suiClient;constructor(e){this.suiClient=e}validatePrivateKey(e,t){eE(e?.trim(),"Private key is required");let o=et.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){eE(e?.trim(),"Sender address is required"),eE(t?.trim(),"Recipient address is required"),eE(e!==t,"Sender and recipient cannot be the same"),eE(o>0n,"Transfer amount must be at least 1 MIST");try{let r=new ed,[a]=r.splitCoins(r.gas,[o]);r.transferObjects([a],t),r.setSender(e);let n=await this.suiClient.getReferenceGasPrice();r.setGasPrice(n);let i=await es(this.suiClient,r,e,.1);r=await ec({inheritTx:r,sender:e,feeAmount:i,suiInputAmount:o},this.suiClient);let s=await r.build({client:this.suiClient}),c=Buffer.from(s).toString("base64"),u=await r.getDigest();return{sender:e,recipient:t,amountMIST:o,txDraftBase64:c,txDigest:u}}catch(e){throw Error(`Failed to create draft transaction: ${e instanceof Error?e.message:"Unknown error"}`)}}async execute(e,t){try{eE(e,"Draft transaction is required"),eE(e.txDraftBase64?.trim(),"Transaction data is required");let o=this.validatePrivateKey(t,e.sender),r=eO(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){eE(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 r4=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"./982.js";export{rQ as AggregatorModule,rm as BLUEFIN_PACKAGE_ID,rZ as CurveModule,r0 as DEFAULT_TRADE_FEE,r6 as DraftTransferTx,rw as MetaAgError,rW as MetaClient,r1 as NoodlesSdk,ra as SevenKAggregator,rP as adaptSuiClient,rF as adaptTransaction,rn as AftermathAggregator,t4 as AftermathCpmm,t3 as AftermathLsd,ro as AggregatorConverter,ri as AstrosAggregator,t9 as Blastfun,rx as Bluefin7kClient,tJ as BluefinTx,oe as BluefinClmm,oo as BluemoveCpmm,oa as Bolt,tZ as MoonbagsCalculation,rs as CetusAggregator,tK as CetusAggregatorConverter,rL as CetusClient,oi as CetusClmm,oc as CetusDlmm,eS as checkIsSui,rc as SupportedAggregator,tj as BlastFunConstants,tz as MoonbagsConstants,rB as createCompatibleSuiClient,tV as BlastFunCustomCalculation,tH as BlastFunCustomTransaction,ol as DeepbookV3,ey as denormalizeTokenType,op as DipCpmm,rD as MetaAgErrorCode,r4 as BASE_BPS,om as FerraClmm,og as FerraDlmm,ru as FlowXAggregator,tG as FlowXAggregatorConverter,rv as FlowxClient,oT as FlowxCpmm,oO as FullsailClmm,rH as getExpectedReturn,rT as getMemezPumpSDK,rd as getMoveObject,rl as getMoveObjectContent,oP as HaedalLsdWal,oB as KriyaClmm,ox as MagmaAlmm,oL as MagmaClmm,rt as MetaAggregator,tN as Metastable,oU as MomentumClmm,oK as Movepump,eh as normalizeTokenType,oj as Obric,tY as BlastFunPackage,t$ as Bps,tq as MathUtils,tQ as MoonbagsPackage,t1 as PythPrice,t6 as PythUtils,o$ as Scallop,tX as BlastFunSDKCalculation,tW as BlastFunSDKTransaction,tk as SevenKAggregatorConverter,oV as SevenkCpmm,oH as SevenkFun,rf as splitSuiCoinAfterFeeFromBuyTx,rg as splitSuiCoinAfterFeeFromSellTx,oz as SrmCpmm,oZ as Steamm,o6 as TradeportClmm,t0 as MoonbagsTransaction,o2 as TurbosClmm,o5 as TurbosFun,rr as AggregatorProtocol,rE as SupportedBondingCurve,tU as TradeFeeOptions,re as RouterUtils,rJ as timeout,o9 as Volo,oS as Walrus};
1
+ import{BluefinXTx as e,Config as t,buildTx as o,getQuote as r}from"@bluefin-exchange/bluefin7k-aggregator-sdk";import a from"bignumber.js";import{Aftermath as n,Helpers as i}from"aftermath-ts-sdk";import{buildSwapPTBFromQuote as s,getCoins as c,getQuote as u}from"@naviprotocol/astros-aggregator-sdk";import{AFSUI as l,AFTERMATH as d,ALPHAFI as p,AggregatorClient as _,BLUEFIN as m,BLUEMOVE as f,CETUS as g,CETUSDLMM as A,DEEPBOOKV3 as b,Env as I,FERRACLMM as T,FERRADLMM as C,FLOWXV2 as O,FLOWXV3 as M,FULLSAIL as E,HAEDAL as h,HAEDALHMMV2 as y,HAEDALPMM as S,HAWAL as P,KRIYA as F,KRIYAV3 as B,MAGMA as D,METASTABLE as w,MOMENTUM as x,OBRIC as R,SCALLOP as L,SEVENK as v,SPRINGSUI as k,STEAMM as U,STEAMM_OMM as N,STEAMM_OMM_V2 as K,SUILEND as G,TURBOS as j,VOLO as q}from"@cetusprotocol/aggregator-sdk";import $ from"bn.js";import{AggregatorQuoter as Y,Coin as V,Commission as J,CommissionType as H,Protocol as X,TradeBuilder as W}from"@flowx-finance/sdk";import{MemezPumpSDK as z}from"@interest-protocol/memez-fun-sdk";import{Network as Q}from"@interest-protocol/sui-core-sdk";import{SuiPriceServiceConnection as Z,SuiPythClient as ee}from"@pythnetwork/pyth-sui-js";import{Ed25519Keypair as et}from"@mysten/sui/keypairs/ed25519";import{SUI_SYSTEM_STATE_OBJECT_ID as eo,toHex as er,getAmountAfterFee as ea,SUI_CLOCK_OBJECT_ID as en,getSplitCoinForTx as ei,getNeededGasFee as es,addGasFee as ec,normalizeStructTag as eu,parseStructTag as el,Transaction as ed,isValidSuiAddress as ep,SuiClient as e_,CLOCK_OBJECT_ID as em,SUI_METADATA_OBJECT_ID as ef,SUI_TYPE as eg,isSuiCoinType as eA,normalizeSuiAddress as eb,getFullnodeUrl as eI,SUI_ADDRESS_ZERO as eT,SUI_FULL_TYPE as eC,fromBase64 as eO,getSplitCoinsAfterFee as eM,tiny_invariant as eE}from"./982.js";function eh(e){return e===eg?eC:e}function ey(e){return e===eC?eg:e}function eS(e){return e===eC||e===eg}(tR=tv||(tv={})).MAX_AMOUNT_IN="18446744073709551615",tR.LAST_PACKAGE_ID="0x7e57926855b32baa3b3cabed89380b8d415606fdedadc18e58bd1ef1e60aee48",tR.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:`${tR.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},tR.closeSwap=function(e){let{tx:t,coinOutType:o,swapSession:r}=e,[a]=t.moveCall({target:`${tR.LAST_PACKAGE_ID}::aggregator::close_swap`,typeArguments:[o],arguments:[r]});return a};var 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,ro,rr=((tL={}).AFTERMATH_CPMM="aftermath_cpmm",tL.AFTERMATH_LSD="aftermath_lsd",tL.ALPHAFI_LSD="alphafi_lsd",tL.BLASTFUN="blastfun",tL.BLUEFIN_CLMM="bluefin_clmm",tL.BLUEMOVE_CPMM="bluemove_cpmm",tL.BOLT="bolt",tL.CETUS_CLMM="cetus_clmm",tL.CETUS_DLMM="cetus_dlmm",tL.DEEPBOOK_V3="deepbook_v3",tL.DIP_CPMM="dip_cpmm",tL.FLOWX_CPMM="flowx_cpmm",tL.FLOWX_CLMM="flowx_clmm",tL.FULLSAIL_CLMM="fullsail_clmm",tL.FERRA_CLMM="ferra_clmm",tL.FERRA_DLMM="ferra_dlmm",tL.HAEDAL_CPMM="haedal_cpmm",tL.HAEDAL_CPMM_V2="haedal_cpmm_v2",tL.HAEDAL_LSD="haedal_lsd",tL.HAEDAL_LSD_WAL="haedal_lsd_wal",tL.KRIYA_CLMM="kriya_clmm",tL.KRIYA_CPMM="kriya_cpmm",tL.MAGMA_ALMM="magma_almm",tL.MAGMA_CLMM="magma_clmm",tL.METASTABLE="metastable",tL.MOMENTUM_CLMM="momentum_clmm",tL.MOVEPUMP="movepump",tL.OBRIC="obric",tL.SCALLOP="scallop",tL.SEVENK_CPMM="sevenk_cpmm",tL.SEVENK_FUN="sevenk_fun",tL.SPRINGSUI="springsui",tL.SRM_CPMM="srm_cpmm",tL.STEAMM_CPMM="steamm_cpmm",tL.SUISWAP_CPMM="suiswap_cpmm",tL.STEAMM_OMM="steamm_omm",tL.STEAMM_OMM_V2="steamm_omm_v2",tL.TRADEPORT_CLMM="tradeport_clmm",tL.TURBOS_CLMM="turbos_clmm",tL.TURBOS_FUN="turbos_fun",tL.VOLO="volo",tL);!function(e){let t=new Set(["bluefinx"]);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=>{eE(e.extra?.poolStructTag,"Aftermath protocol requires poolStructTag");let[t]=i(e.extra.poolStructTag);return{...n(e),protocol:rr.AFTERMATH_CPMM,coinLpType:t}},flowx_v3:e=>{eE(e.extra?.swapFeeRate,"flowx_v3 protocol requires swapFeeRate");let t=e.extra.swapFeeRate;return{...n(e),protocol:rr.FLOWX_CLMM,poolFeeRate:t}},turbos:e=>{eE(e.extra?.poolStructTag,"turbos protocol requires poolStructTag");let[t,o,r]=i(e.extra.poolStructTag);return{...n(e),protocol:rr.TURBOS_CLMM,coinFeeType:r}},obric:e=>(eE(e.extra?.oracles,"obric protocol requires oracles"),{...n(e),protocol:rr.OBRIC,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1])}),haedal_pmm:e=>(eE(e.extra.oracles,"haedal_pmm protocol requires oracles"),{...n(e),protocol:rr.HAEDAL_CPMM,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1])}),sevenk_v1:e=>{eE(e.extra?.poolStructTag,"sevenk_v1 protocol requires poolStructTag"),eE(e.extra?.oracleConfigX,"sevenk_v1 protocol requires oracleConfigX"),eE(e.extra?.oracleConfigY,"sevenk_v1 protocol requires oracleConfigY");let t=e.extra.oracles?.[0]?.Pyth?.bytes,o=e.extra.oracles?.[1]?.Pyth?.bytes;eE(t,"sevenk_v1 protocol requires pythPriceFeedIdA"),eE(o,"sevenk_v1 protocol requires pythPriceFeedIdB");let[r,a,s]=i(e.extra.poolStructTag);return{...n(e),protocol:rr.SEVENK_CPMM,coinLpType:s,pythPriceFeedIdA:t,pythPriceFeedIdB:o,oracleConfigA:e.extra.oracleConfigX,oracleConfigB:e.extra.oracleConfigY}},steamm:e=>{eE(e.extra?.poolStructTag,"steamm protocol requires poolStructTag"),eE(e.extra?.bankAStructTag,"steamm protocol requires bankAStructTag"),eE(e.extra?.lendingMarketA,"steamm protocol requires lendingMarketA"),eE(e.extra?.bankA,"steamm protocol requires bankA"),eE(e.extra?.bankB,"steamm protocol requires bankB");let[t,o,r,a]=i(e.extra.poolStructTag),[s,c,u]=i(e.extra.bankAStructTag);return{...n(e),protocol:rr.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=>{eE(e.extra?.poolStructTag,"steamm_oracle_quoter protocol requires poolStructTag"),eE(e.extra?.bankAStructTag,"steamm_oracle_quoter protocol requires bankAStructTag"),eE(e.extra?.lendingMarketA,"steamm_oracle_quoter protocol requires lendingMarketA"),eE(e.extra?.oracleRegistry,"steamm_oracle_quoter protocol requires oracleRegistry"),eE(e.extra?.bankA,"steamm_oracle_quoter protocol requires bankA"),eE(e.extra?.bankB,"steamm_oracle_quoter protocol requires bankB"),eE(e.extra?.oracleIndexes,"steamm_oracle_quoter protocol requires oracleIndexes"),eE(e.extra?.oracles,"steamm_oracle_quoter protocol requires oracles");let[t,o,r,a]=i(e.extra?.poolStructTag),[c,u,l]=i(e.extra.bankAStructTag),[d,p]=e.extra.oracleIndexes;return{...n(e),protocol:rr.STEAMM_OMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:c,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:d,oracleIndexB:p}},steamm_oracle_quoter_v2:e=>{eE(e.extra?.poolStructTag,"steamm_oracle_quoter_v2 protocol requires poolStructTag"),eE(e.extra?.bankAStructTag,"steamm_oracle_quoter_v2 protocol requires bankAStructTag"),eE(e.extra?.lendingMarketA,"steamm_oracle_quoter_v2 protocol requires lendingMarketA"),eE(e.extra?.oracleRegistry,"steamm_oracle_quoter_v2 protocol requires oracleRegistry"),eE(e.extra?.bankA,"steamm_oracle_quoter_v2 protocol requires bankA"),eE(e.extra?.bankB,"steamm_oracle_quoter_v2 protocol requires bankB"),eE(e.extra?.oracleIndexes,"steamm_oracle_quoter_v2 protocol requires oracleIndexes"),eE(e.extra?.oracles,"steamm_oracle_quoter_v2 protocol requires oracles");let[t,o,r,a]=i(e.extra?.poolStructTag),[c,u,l]=i(e.extra.bankAStructTag),[d,p]=e.extra.oracleIndexes;return{...n(e),protocol:rr.STEAMM_OMM_V2,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:c,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:d,oracleIndexB:p}},cetus:e=>({...n(e),protocol:rr.CETUS_CLMM}),bluemove:e=>({...n(e),protocol:rr.BLUEMOVE_CPMM}),kriya:e=>({...n(e),protocol:rr.KRIYA_CPMM}),kriya_v3:e=>({...n(e),protocol:rr.KRIYA_CLMM}),deepbook_v3:e=>({...n(e),protocol:rr.DEEPBOOK_V3}),flowx:e=>({...n(e),protocol:rr.FLOWX_CPMM}),bluefin:e=>({...n(e),protocol:rr.BLUEFIN_CLMM}),springsui:e=>({...n(e),protocol:rr.SPRINGSUI}),magma:e=>({...n(e),protocol:rr.MAGMA_CLMM}),momentum:e=>({...n(e),protocol:rr.MOMENTUM_CLMM}),fullsail:e=>({...n(e),protocol:rr.FULLSAIL_CLMM}),stsui:e=>({...n(e),protocol:rr.ALPHAFI_LSD}),suiswap:e=>({...n(e),protocol:rr.SUISWAP_CPMM}),cetus_dlmm:e=>({...n(e),protocol:rr.CETUS_DLMM}),ferra_dlmm:e=>({...n(e),protocol:rr.FERRA_DLMM}),ferra_clmm:e=>({...n(e),protocol:rr.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=tv.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 el(e||"").typeParams.map(eu)}function s(e){let t=e?.Pyth?.bytes||e?.Pyth?.price_identifier?.bytes;return eE(t,"Pyth price feed id is not found"),"0x"+er(Uint8Array.from(t))}e.toMetaAggregatorPath=r,e.toMetaAggregatorPaths=a,e.convert=function(e){var t,o,r;let n;eE(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=ey(e.assetIn),a=ey(e.assetOut),n={type:ey(t?.allTokens?.[0]?.address),decimals:t?.allTokens?.[0]?.decimal},i={type:ey(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}}}(tk||(tk={}));class ra{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:o,coinOutType:a,tradeFee:n,metaAggregator:i,supportedProtocols:s}){try{this._config.sevenKApiKey&&t.setApiKey(this._config.sevenKApiKey);let c=n?n.tradeFeePercent:this._config.defaultTradeFee.tradeFeePercent,u=s??(i?tk.SUPPORTED_PROTOCOLS:void 0);return await r({tokenIn:o,tokenOut:a,amountIn:e.toString(),commissionBps:1e4*c,sources:u})}catch(e){return null}}async getTransaction({walletAddress:t,completeRoute:r,slippage:a,tradeFee:n}){let i,s;n?(i=n.tradeFeePercent,s=n.tradeFeeRecipientAddress):(i=this._config.defaultTradeFee.tradeFeePercent,s=this._config.defaultTradeFee.tradeFeeRecipientAddress);let c=await o({quoteResponse:r,slippage:a,accountAddress:t,commission:{partner:s,commissionBps:1e4*i}});return c.tx instanceof e?ed.from(c.tx.txBytes).build({client:this._suiClient}):(c.tx.setSender(t),c.tx.build({client:this._suiClient}))}}(ra||(ra={})).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,n=r[t.tokenOut]??0,i=BigInt(new a(t.tokenInAmount).multipliedBy(10**o).toFixed(0,3)),s=BigInt(new a(t.tokenOutAmount).multipliedBy(10**n).toFixed(0,3));e.push({poolAddress:t.poolId,coinIn:t.tokenIn,coinOut:t.tokenOut,amountIn:i,amountOut:s})}if(0===e.length)continue;let n=r[o.tokenIn]??0,i=r[o.tokenOut]??0,s=BigInt(new a(o.tokenInAmount).multipliedBy(10**n).toFixed(0,3)),c=BigInt(new a(o.tokenOutAmount).multipliedBy(10**i).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 rn{_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 n(this._config.aftermathApiEndpoint):this._aftermathClient=new n("MAINNET"),await this._aftermathClient.init(),this._config.aftermathApiKey){let e=i.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})}}(rn||(rn={})).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 ri{_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 u(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 n;let i,u;i=r?{fee:r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let l=new a(e.amount_out).multipliedBy(1-o-i.fee).toNumber(),d=new ed;if("0x2::sui::SUI"===(n=e.from)||"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"===n)u=d.splitCoins(d.gas,[d.pure.u64(e.amount_in)]);else{let o=await c(this._suiClient,t,e.from),r=this.returnMergedCoins(d,o.data,Number.parseFloat(e.amount_in));u=d.splitCoins(r,[d.pure.u64(e.amount_in)])}let p=await s(t,d,l,u,e,void 0,!1,this._config.astrosApiKey,{serviceFee:i});return d.transferObjects([p],t),d.setSender(t),d.build({client:this._suiClient})}}(ri||(ri={})).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}},(tU||(tU={})).equals=function(e,t){return e.tradeFeePercent===t.tradeFeePercent&&e.tradeFeeRecipientAddress===t.tradeFeeRecipientAddress},(eP=tN||(tN={})).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:s,pythInfoObjectIdMap:c,createCapPackageId:u,createCapModule:l,createCapFunc:d}=e,p=[a.toString()];switch(n&&p.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=c.get(e.pythPriceFeedIdMeta);eE(r,"Not found priceMetaId in pythObjectIdMap"),t=[o.object(i),o.object(s),o.object(r),o.object(en)];break}case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":{let r=c.get(e.pythPriceFeedIdMeta);eE(r,"Not found priceId in pythObjectIdMap");let a=c.get(e.pythPriceFeedIdEth);eE(a,"Not found priceEthFeedId in pythObjectIdMap"),t=[o.object(i),o.object(s),o.object(r),o.object(a),o.object(en)];break}default:throw Error("Invalid MetaCoin: "+a.toString())}return o.moveCall({target:`${u}::${l}::${d}`,typeArguments:p,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=[g,F,O,M,B,j,d,h,q,l,f,b,L,G,m,S,p,k,U,w,R,P,N,x,K,D,v,y,E,A,C,T];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=tv.MAX_AMOUNT_IN),o.push(i)}return o}e.TO_META_AGGREGATOR_PATH_FN_MAP={[w]:e=>{let t=r(e),o=e.extendedDetails,a=e.direction?e.target:e.from;eE(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 tN.MetaCoinType.SUPER_SUI:return eE(o.metastable_registry_id,`METASTABLE_SUPER_SUI protocol requires 'metastable_registry_id' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:rr.METASTABLE,metaCoin:a,registryId:o.metastable_registry_id};case tN.MetaCoinType.MUSD:return eE(o.metastable_price_seed,`METASTABLE_MUSD protocol requires 'metastable_price_seed' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:rr.METASTABLE,metaCoin:a,pythPriceFeedIdMeta:o.metastable_price_seed};case tN.MetaCoinType.METH:return eE(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:rr.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.`)}},[b]:e=>({...r(e),protocol:rr.DEEPBOOK_V3}),[d]:e=>{let t=e.extendedDetails;return eE(t?.aftermath_lp_supply_type,`AFTERMATH_CPMM protocol requires 'aftermath_lp_type' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rr.AFTERMATH_CPMM,coinLpType:t.aftermath_lp_supply_type}},[M]:e=>({...r(e),protocol:rr.FLOWX_CLMM,poolFeeRate:String(1e6*e.feeRate)}),[S]:e=>{let t=e.extendedDetails;return eE(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:rr.HAEDAL_CPMM,pythPriceFeedIdA:t.haedal_pmm_base_price_seed,pythPriceFeedIdB:t.haedal_pmm_quote_price_seed}},[y]:e=>{let t=e.extendedDetails;return eE(t?.haedalhmmv2_base_price_seed,`HAEDAL_CPMM_V2 protocol requires 'haedal_pyth_price_base_id' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rr.HAEDAL_CPMM_V2,pythPriceFeedIdBase:t.haedalhmmv2_base_price_seed}},[L]:e=>(eE(e.extendedDetails?.scallop_scoin_treasury,`SCALLOP protocol requires 'scallop_scoin_treasury' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rr.SCALLOP,scoinTreasury:e.extendedDetails.scallop_scoin_treasury}),[U]:e=>{let t=e.extendedDetails;return eE(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:rr.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}},[N]:e=>{let t=e.extendedDetails;return eE(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:rr.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)}},[K]:e=>{let t=e.extendedDetails;return eE(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:rr.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)}},[R]:e=>{let t=r(e);if(e.extendedDetails?.obric_coin_a_price_id&&e.extendedDetails?.obric_coin_b_price_id)return{...t,protocol:rr.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:rr.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}.`)},[v]:e=>{let t=e.extendedDetails;return eE(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:rr.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}},[j]:e=>(eE(e.extendedDetails?.turbos_fee_type,`TURBOS_CLMM protocol requires 'coinFeeType' parameter for pool ${e.id}. Provide it via the parametersMap argument.`),{...r(e),protocol:rr.TURBOS_CLMM,coinFeeType:e.extendedDetails.turbos_fee_type}),[l]:e=>({...r(e),protocol:rr.AFTERMATH_LSD}),[p]:e=>({...r(e),protocol:rr.ALPHAFI_LSD}),[m]:e=>({...r(e),protocol:rr.BLUEFIN_CLMM}),[f]:e=>({...r(e),protocol:rr.BLUEMOVE_CPMM}),[g]:e=>({...r(e),protocol:rr.CETUS_CLMM}),[A]:e=>({...r(e),protocol:rr.CETUS_DLMM}),[T]:e=>({...r(e),protocol:rr.FERRA_CLMM}),[C]:e=>({...r(e),protocol:rr.FERRA_DLMM}),[O]:e=>({...r(e),protocol:rr.FLOWX_CPMM}),[E]:e=>({...r(e),protocol:rr.FULLSAIL_CLMM}),[h]:e=>({...r(e),protocol:rr.HAEDAL_LSD}),[P]:e=>({...r(e),protocol:rr.HAEDAL_LSD_WAL}),[F]:e=>({...r(e),protocol:rr.KRIYA_CPMM}),[B]:e=>({...r(e),protocol:rr.KRIYA_CLMM}),[D]:e=>({...r(e),protocol:rr.MAGMA_CLMM}),[x]:e=>({...r(e),protocol:rr.MOMENTUM_CLMM}),[G]:e=>({...r(e),protocol:rr.SPRINGSUI}),[k]:e=>({...r(e),protocol:rr.SPRINGSUI}),[q]:e=>({...r(e),protocol:rr.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)}}}(tK||(tK={}));class rs{_config;_suiClient;_cetusClient;getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t,overlayFeeRate:o}){return{client:this._suiClient,overlayFeeReceiver:t,overlayFeeRate:o,env:I.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&&!tU.equals(t,this._config.defaultTradeFee)?new _(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t.tradeFeeRecipientAddress,overlayFeeRate:t.tradeFeePercent})):(this._cetusClient||(this._cetusClient=new _(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?tK.SUPPORTED_PROTOCOLS:void 0);return await i.findRouters({from:t,target:o,amount:new $(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),n=new ed;return n.setSender(t),await a.fastRouterSwap({router:e,txb:n,slippage:o}),n.build({client:this._suiClient})}}(rs||(rs={})).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 rc=((eB={}).ASTROS="ASTROS",eB.AFTERMATH="AFTERMATH",eB.SEVENK="7K",eB.CETUS="CETUS",eB.FLOWX="FLOWX",eB);!function(e){let t=[X.HOP_FUN,X.FLOWX_PMM,X.DEEPBOOK,X.IPX_TIDE,X.METASTABLE];e.SUPPORTED_PROTOCOLS=Object.values(X).filter(e=>!t.includes(e));let o={[X.FLOWX_V2]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rr.FLOWX_CPMM}),[X.FLOWX_V3]:t=>(eE(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FLOWX_CLMM,poolFeeRate:t.poolFee.toString()}),[X.CETUS]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.CETUS_CLMM}),[X.CETUS_DLMM]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.CETUS_DLMM}),[X.AFTERMATH]:t=>(eE(t.lpCoinType,`AFTERMATH protocol requires lpCoinType for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rr.AFTERMATH_CPMM,coinLpType:t.lpCoinType}),[X.AFTERMATH_LSD]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.AFTERMATH_LSD}),[X.ALPHA_FI]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.ALPHAFI_LSD}),[X.BLUEFIN]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.BLUEFIN_CLMM}),[X.BLUEMOVE]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rr.BLUEMOVE_CPMM}),[X.DEEPBOOK_V3]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.DEEPBOOK_V3}),[X.FERRA_CLMM]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FERRA_CLMM}),[X.FERRA_DLMM]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FERRA_DLMM}),[X.FULL_SAIL]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FULLSAIL_CLMM}),[X.HAEDAL]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.HAEDAL_LSD}),[X.HAEDAL_PMM]:t=>{let o=t.oracles;return eE(o&&o.length>=2,`HAEDAL_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.HAEDAL_CPMM,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId}},[X.KRIYA_DEX]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.KRIYA_CPMM}),[X.KRIYA_V3]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.KRIYA_CLMM}),[X.MAGMA_FINANCE]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.MAGMA_CLMM}),[X.MAGMA_ALMM]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.MAGMA_ALMM}),[X.MOMENTUM_FINANCE]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.MOMENTUM_CLMM}),[X.OBRIC]:t=>(eE(t.xPriceId&&t.yPriceId,`OBRIC protocol requires price feeds for pool ${t.pool.id}`),eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.OBRIC,priceInfoObjIdA:t.xPriceId,priceInfoObjIdB:t.yPriceId}),[X.SPRING_SUI]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.SPRINGSUI}),[X.STEAMM]:t=>{eE(void 0!==t.bankXInfo&&void 0!==t.bankYInfo,`STEAMM protocol requires bank info for pool ${t.pool.id}`),eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),eE(void 0!==t.quoterType,`quoterType is required for pool ${t.pool.id}`),eE(void 0!==t.poolInfo,`poolInfo is required for pool ${t.pool.id}`),eE(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:rr.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":{eE(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 eE(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:rr.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}`)}},[X.SEVENK_V1]:t=>{let o=t.oracles;return eE(o&&o.length>=2,`SEVENK_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),eE(t.poolStructTag,`SEVENK_V1 protocol requires poolStructTag for pool ${t.pool.id}`),eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.SEVENK_CPMM,coinLpType:t.poolStructTag,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId,oracleConfigA:o[0].oracleId??"",oracleConfigB:o[1].oracleId??""}},[X.SUI_REWARDS]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.SRM_CPMM}),[X.TURBOS_FIANCE]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.TURBOS_CLMM,coinFeeType:t.poolStructTag?t.poolStructTag.split("<")[1].split(",")[2].trim().replace(">",""):""}),[X.VOLO_LSD]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.VOLO}),[X.TRADEPORT]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),eE(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,poolFeeRate:t.poolFee.toString(),protocol:rr.TRADEPORT_CLMM}),[X.TURBOS_FUN]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.TURBOS_FUN}),[X.BLUEMOVE_FUN]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,expectedAmountOut:t.amountOut.toString(),protocol:rr.MOVEPUMP}),[X.SEVEN_K_FUN]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.SEVENK_FUN}),[X.DIPCOIN]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.DIP_CPMM}),[X.BOLT]:t=>(eE(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.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=tv.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)}}}(tG||(tG={}));class ru{_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 J(r,new V(e),H.PERCENTAGE,1e6*o,!0)}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){let i=new Y("mainnet",this._config.flowxApiKey),s=n??(a?tG.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 W("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 rl(e,t){return(await rd(e,t)).fields}async function rd(e,t){let o=await e.getObject({id:t,options:{showContent:!0}}),r=o.data?.content;return eE(r,"Pool object not found or has no content"),eE("moveObject"===r.dataType,"Object is not a Move object"),r}(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({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=tj||(tj={})).PACKAGE_ID_V4="0x7e6aa6e179466ab2814425a780b122575296d011119fa69d27f289f5a28814bd",eD.MEMEZ_AV_OBJECT_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",((ew=tq||(tq={})).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 rp=t$||(t$={});function r_(e){return eE(BigInt(e)<=BigInt(1e4),"Bps overflow"),BigInt(e)}rp.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},rp.sub=function(e,t){return eE(BigInt(e.pos0)>=BigInt(t.pos0),"Bps underflow"),{pos0:(BigInt(e.pos0)-BigInt(t.pos0)).toString()}},rp.value=function(e){return BigInt(e.pos0)},rp.new_=function(e){return{pos0:r_(e).toString()}},rp.assertOverflow=r_,((ex=tY||(tY={})).MemezFun||(ex.MemezFun={})).isSniperProtectedMemezFun=async function(e,t){return(await rl(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=t$.calcUp(t$.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 t$.calcUp(t$.sub(r,t),o)}throw Error("Unknown fee variant")},(ex.MemezBurner||(ex.MemezBurner={})).calculate=function(e,t){if(t$.value(e.fee.fields)===BigInt(0)||t===BigInt(0)||t>=BigInt(e.target_liquidity))return t$.new_(0);let o=BigInt(1e4);return t$.new_(tq.U64.mulDivUp(t$.value(e.fee.fields),tq.U64.mulDivUp(t,o,BigInt(e.target_liquidity)),o))},(eL=ex.MemezPump||(ex.MemezPump={})).getPumpState=async function(e,t){return await rl(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=t$.calcUp(c,a),l=a-(t$.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=tV||(tV={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,n=await rl(t,r),i=await tY.MemezPump.getPumpState(t,n);return o=ea(o,a),tY.MemezPump.pump(i,o)},ev.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,n=await rl(t,r),i=await tY.MemezPump.getPumpState(t,n);return ea(tY.MemezPump.dump(i,o),a)};let rm="0x62412b7268c35f3808336aee57a52836501f40b8ba5d936f8ad275e672befd04";async function rf(e,t){let o,r,{inputAmount:a,accountAddress:n,frontendFee:i,frontendFeeRecipient:s,extendTx:c,isSponsored:u}=e;eE(e.inCoinType===eC||e.inCoinType===eg,"Input must be SUI");let{tx:l,coinIn:d}=c||{},p=eM(a,i||"0"),_=l||new ed;if(d)o=_.splitCoins(d,p),tJ.transferOrDestroyZeroCoin(_,eC,d,n);else{let{coinData:e}=await ei({account:n,amount:a,splits:p,coinType:eC,inheritTx:_,isSponsored:u||!1},t);o=e}if(i&&s){let[e,t]=o;r=e,_.transferObjects([t],_.pure.address(s||n))}else[r]=o;return{tx:_,coinOut:r}}async function rg(e,t,o){if(eE(t.outCoinType===eC||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:`${rm}::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:`${rm}::utils::transfer_or_destroy`,typeArguments:[t],arguments:[o,e.pure.address(r)]})};var rA=tH||(tH={});async function rb(e){let t=e||new ed;return t.moveCall({target:`${tj.PACKAGE_ID_V4}::memez_allowed_versions::get_allowed_versions`,arguments:[t.object(tj.MEMEZ_AV_OBJECT_ID)],typeArguments:[]})}rA.getAllowedVersions=rb,rA.buildBuyTx=async function(e,t){eE(!await tY.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 rf(e,t);eE(r,"Coin out is required");let a=o.moveCall({target:`${tj.PACKAGE_ID_V4}::memez_pump::pump`,typeArguments:[e.outCoinType,eC],arguments:[o.object(e.poolId),r,o.pure.vector("address",[]),o.pure.vector("vector<u8>",[]),o.pure.u64(e.minAmountOut),await rb(o)]});return{tx:o,coinOut:a}},rA.buildSellTx=async function(e,t){eE(e.outCoinType===eC||e.outCoinType===eg,"Output must be SUI");let o=await rl(t,e.poolId),{tx:r,coinData:a}=await ei({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[n]=a,[i]=r.moveCall({target:`${tj.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 rb(r)]});return await rg(r,e,i)};let rI=new z({network:Q.MAINNET,fullNodeUrl:eI("mainnet")});function rT(){return rI}(ek=tX||(tX={})).getCurveAmountAfterBuy=async function(e){let{suiAmount:t,poolId:o,frontendFee:r}=e;t=ea(t,r);let{memeAmountOut:a}=await rT().quotePump({pool:o,amount:t});return a},ek.getSuiAmountAfterSell=async function(e){let{curveAmount:t,poolId:o,frontendFee:r}=e,{quoteAmountOut:a}=await rT().quoteDump({pool:o,amount:t});return ea(a,r)};var rC=tW||(tW={});async function rO(e,t){let{tx:o,coinOut:r}=await rf(e,t);eE(r,"Coin out is required");let{memeCoin:a,tx:n}=await rT().pump({pool:e.poolId,quoteCoin:r,minAmountOut:e.minAmountOut,tx:o});return{tx:n,coinOut:a}}async function rM(e,t){eE(eA(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await ei({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,{quoteCoin:n,tx:i}=await rT().dump({pool:e.poolId,memeCoin:a,tx:o,minAmountOut:e.minAmountOut});return await rg(i,e,n)}rC.buildBuyTx=rO,rC.buildSellTx=rM,rC.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:n,walletAddress:i,tradeFee:s},c){eE(eA(t),"coinInType must be SUI for buy transaction"),eE(o!==t,"coinOutType must be different from coinInType"),eE(n>=0&&n<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),eE(e>0,"coinInAmount must be greater than 0");let u=BigInt(new a((await tX.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:s?s.tradeFeePercent:void 0})).toString()).multipliedBy(1-n).toFixed(0,3)),{tx:l,coinOut:d}=await rO({accountAddress:i,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:s?s.tradeFeePercent:void 0,frontendFeeRecipient:s?s.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},c);eE(d,"Coin out is required"),l.transferObjects([d],l.pure.address(i)),l.setSender(i);let p=await es(c,l,i,0);return(l=await ec({inheritTx:l,sender:i,feeAmount:p,suiInputAmount:e},c)).build({client:c})},rC.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:n,walletAddress:i,tradeFee:s},c){eE(eA(o),"coinOutType must be SUI for sell transaction"),eE(o!==t,"coinOutType must be different from coinInType"),eE(n>=0&&n<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),eE(e>0,"coinInAmount must be greater than 0");let u=BigInt(new a((await tX.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:s?s.tradeFeePercent:void 0})).toString()).multipliedBy(1-n).toFixed(0,3)),{tx:l,coinOut:d}=await rM({accountAddress:i,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:s?s.tradeFeePercent:void 0,frontendFeeRecipient:s?s.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},c);eE(d,"Coin out is required"),l.transferObjects([d],l.pure.address(i)),l.setSender(i);let p=await es(c,l,i,0);return(l=await ec({inheritTx:l,sender:i,feeAmount:p},c)).build({client:c})};var rE=((eU={}).BLAST_FUN="BLAST_FUN",eU.MOONBAGS="MOONBAGS",eU);(eN=tz||(tz={})).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=tQ||(tQ={})).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),s=BigInt(r.virtual_token_reserves),c=BigInt(r.remain_token_reserves.fields.balance),u=eK.Curves.calculateRemoveLiquidityReturn(i,s,o),l=s-(n||c),d=u,p=o;u>l&&(d=l,p=eK.Curves.calculateAddLiquidityCost(i,s,l)+BigInt(1));let _=p*BigInt(a.platform_fee)/tz.FEE_DENOMINATOR;return eE(t>=p+_,"Input amount is less than used SUI + fee"),{receivedCurve:d,receivedSui:t-p-_}},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)/tz.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([rl(t,r),rl(t,tz.CONFIG_OBJECT_ID),tQ.Moonbags.getDynamicVirtualTokenReserves(t,r)]);void 0!==a&&(o=ea(o,a));let c=o*tz.FEE_DENOMINATOR/(tz.FEE_DENOMINATOR+BigInt(i.platform_fee)),{receivedCurve:u}=tQ.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([rl(t,r),rl(t,tz.CONFIG_OBJECT_ID)]),{receivedSui:s}=tQ.Moonbags.sellReturns({amountIn:o,pool:n,config:i});return void 0!==a?ea(s,a):s},eq.getUsedSuiForTx=async function(e,t){let{suiAmount:o,frontendFee:r}=e,a=await rl(t,tz.CONFIG_OBJECT_ID);return void 0!==r&&(o=ea(o,r)),o*tz.FEE_DENOMINATOR/(tz.FEE_DENOMINATOR+BigInt(a.platform_fee))};var rh=t0||(t0={});async function ry(e,t){let{tx:o,coinOut:r}=await rf(e,t);eE(r,"Coin out is required");let a=await tZ.getUsedSuiForTx({suiAmount:BigInt(e.inputAmount),frontendFee:e.frontendFee},t),[n,i]=o.moveCall({target:`${tz.PACKAGE_ID}::moonbags::buy_exact_in_returns_with_lock`,typeArguments:[e.outCoinType],arguments:[o.object(tz.CONFIG_OBJECT_ID),o.object(tz.LOCK_CONFIG_OBJECT_ID),r,o.pure.u64(a),o.pure.u64(e.minAmountOut),o.object(tz.BURN_MANAGER_OBJECT_ID),o.object(tz.POOLS_OBJECT_ID),o.object(tz.GLOBAL_CONFIG_OBJECT_ID),o.object(ef),o.object(em)]});return tJ.transferOrDestroyZeroCoin(o,eC,n,e.accountAddress),{tx:o,coinOut:i}}async function rS(e,t){eE(eA(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await ei({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,[n,i]=o.moveCall({target:`${tz.PACKAGE_ID}::moonbags::sell_returns`,typeArguments:[e.inCoinType],arguments:[o.object(tz.CONFIG_OBJECT_ID),a,o.pure.u64(e.minAmountOut),o.object(em)]});return tJ.transferOrDestroyZeroCoin(o,e.inCoinType,i,e.accountAddress),await rg(o,e,n)}function rP(e){return e}function rF(e){return e}function rB(e){return new Proxy(e,{get(e,t){let o=e[t];return"function"==typeof o?o.bind(e):o}})}rh.buildBuyTx=ry,rh.buildSellTx=rS,rh.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:n,walletAddress:i,tradeFee:s},c){eE(eA(t),"coinInType must be SUI for buy transaction"),eE(o!==t,"coinOutType must be different from coinInType"),eE(n>=0&&n<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),eE(e>0,"coinInAmount must be greater than 0");let u=BigInt(new a((await tZ.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:s?s.tradeFeePercent:void 0},c)).toString()).multipliedBy(1-n).toFixed(0,3)),{tx:l,coinOut:d}=await ry({accountAddress:i,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:s?s.tradeFeePercent:void 0,frontendFeeRecipient:s?s.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},c);eE(d,"Coin out is required"),l.transferObjects([d],l.pure.address(i)),l.setSender(i);let p=await es(c,l,i,0);return(l=await ec({inheritTx:l,sender:i,feeAmount:p,suiInputAmount:e},c)).build({client:c})},rh.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:n,walletAddress:i,tradeFee:s},c){eE(eA(o),"coinOutType must be SUI for sell transaction"),eE(o!==t,"coinOutType must be different from coinInType"),eE(n>=0&&n<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),eE(e>0,"coinInAmount must be greater than 0");let u=BigInt(new a((await tZ.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:s?s.tradeFeePercent:void 0},c)).toString()).multipliedBy(1-n).toFixed(0,3)),{tx:l,coinOut:d}=await rS({accountAddress:i,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:u.toString(),poolId:r,frontendFee:s?s.tradeFeePercent:void 0,frontendFeeRecipient:s?s.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},c);eE(d,"Coin out is required"),l.transferObjects([d],l.pure.address(i)),l.setSender(i);let p=await es(c,l,i,0);return(l=await ec({inheritTx:l,sender:i,feeAmount:p},c)).build({client:c})},(e$=t1||(t1={})).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(en)]})},(eY=t6||(t6={})).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 Z(e,{timeout:3e3}))},eY.newPythClient=function(e){return e||(e=new e_({url:"https://fullnode.mainnet.sui.io:443"})),new ee(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 rD=((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 rw 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 rw(t??"Assertion failed",o,r)}}class rx{options;kind="SEVENK";constructor(e,o){this.options=e,e.apiKey&&t.setApiKey(e.apiKey),t.setSuiClient(o)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tk.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tk.SUPPORTED_PROTOCOLS);let o=await r({tokenIn:e.coinTypeIn,tokenOut:e.coinTypeOut,amountIn:e.amountIn,sources:t,excludedPools:this.options.excludedPools,targetPools:this.options.targetPools});return rw.assert(!!o,"No quote found",rD.QUOTE_NOT_FOUND,{provider:this.kind}),{sourceRoute:"SEVENK",rawRoute:o,amountIn:o.swapAmountWithDecimal,amountOut:o.returnAmountWithDecimal,coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}let rR=t6.PYTH_URLS;class rL{options;kind="CETUS";cetusClient;constructor(e,t,o){this.options=e,this.cetusClient=new _({apiKey:e.apiKey,client:o,endpoint:e.api,env:I.Mainnet,pythUrls:t.hermesApi?t.hermesApi:rR})}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tK.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tK.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 rw.assert(!!o,"No quote found",rD.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 rv{options;kind="FLOWX";quoter;constructor(e){this.options=e,this.quoter=new Y("mainnet",e.apiKey)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tG.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tG.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=t4||(t4={})).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=t3||(t3={})).LAST_PACKAGE_ID="0xf369250dc5a17e9d5a84a3b0cf5aea715c0682170e726dd601f03ade7ce4decb",eH.swap=function(e){eE(e.protocol===rr.AFTERMATH_CPMM);let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,coinLpType:c,packageId:u}=e;t.moveCall({target:`${u??eH.LAST_PACKAGE_ID}::aftermath_cpmm_router::swap`,typeArguments:[i,s,c],arguments:[o,t.object(r),t.object(t4.POOL_REGISTRY_OBJ_ID),t.object(t4.PROTOCOL_FEE_VAULT_OBJ_ID),t.object(t4.TREASURY_OBJ_ID),t.object(t4.INSURANCE_FUND_OBJ_ID),t.object(t4.REFERRAL_VAULT_OBJ_ID),t.pure.bool(a),t.pure.u64(n)]})},(eX=t2||(t2={})).STAKED_SUI_VAULT_OBJ_ID="0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d",eX.SAFE_TREASURY_OBJECT_ID="0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610",eX.REFERRAL_VAULT_OBJ_ID="0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef",eX.VALIDATOR_ADDRESS="0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2",(eW=t5||(t5={})).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(t2.STAKED_SUI_VAULT_OBJ_ID),t.object(t2.SAFE_TREASURY_OBJECT_ID),t.object(eo),t.object(t2.REFERRAL_VAULT_OBJ_ID),t.pure.address(t2.VALIDATOR_ADDRESS),t.pure.bool(r),t.pure.u64(a)]})},(ez=t8||(t8={})).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(eo),t.pure.bool(n),t.pure.u64(a)]})},(eQ=t9||(t9={})).MEMEZ_AV_OBJ_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",eQ.MEMEZ_FUN_OBJ_ID="0x943948644f06942b8b660ca541b10a05f6a7be23ce4069944a3665e7e698930d",eQ.IPX_TREASURY_STANDARD_OBJ_ID="0x051e11b667659192917db94e5175fa066909d4dfc04d2663528f499c4afc6999",(eZ=t7||(t7={})).LAST_PACKAGE_ID="0x8b1e84ed9bc79d31160600254d65810f6bc6d2352f174a60ed041017d0a2a87a",eZ.swap=function(e){eE(e.protocol===rr.BLASTFUN,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??eZ.LAST_PACKAGE_ID}::blastfun_router::swap`,typeArguments:[r,a],arguments:[o,t.object(t9.MEMEZ_FUN_OBJ_ID),t.object(t9.IPX_TREASURY_STANDARD_OBJ_ID),t.object(t9.MEMEZ_AV_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(oe||(oe={})).GLOBAL_CONFIG_OBJ_ID="0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",(e0=ot||(ot={})).LAST_PACKAGE_ID="0x9f8397124b6bdb55aeb7b5e43761e0e4dc94b9e22e94b1b25d8211d99df422d5",e0.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??e0.LAST_PACKAGE_ID}::bluefin_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(oe.GLOBAL_CONFIG_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(en)]})},(oo||(oo={})).DEX_INFO_OBJ_ID="0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92",(e1=or||(or={})).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(oo.DEX_INFO_OBJ_ID),t.pure.bool(r),t.pure.u64(a)]})},(oa||(oa={})).ORACLE_OBJ_ID="0xfa3975b98f3d0e3df18ed88ae6e69db31836b3f4212df02fae144b1e5a89ca8e",(e6=on||(on={})).LAST_PACKAGE_ID="0x2dd7b04509f332bdb93a8f228ab5c40b34baee4645b2ebe5e5fa2c3502b2c088",e6.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??e6.LAST_PACKAGE_ID}::bolt_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oa.ORACLE_OBJ_ID),t.object(en),t.pure.u64(s),t.pure.bool(i)]})},(oi||(oi={})).GLOBAL_CONFIG="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",(e4=os||(os={})).LAST_PACKAGE_ID="0xb3dbb229464cb14b9f8cfa087e5b162623c8f485395dc9b975e263a5ee7051e4",e4.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??e4.LAST_PACKAGE_ID}::cetus_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oi.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(en)]})},(e3=oc||(oc={})).GLOBAL_CONFIG_OBJ_ID="0xf31b605d117f959b9730e8c07b08b856cb05143c5e81d5751c90d2979e82f599",e3.VERSIONED_OBJ_ID="0x05370b2d656612dd5759cbe80463de301e3b94a921dfc72dd9daa2ecdeb2d0a8",(e2=ou||(ou={})).LAST_PACKAGE_ID="0x9ab3ba62b4327a7d90e4aed1c025b62736f035911ad7bab830c065ec84ef1ffa",e2.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinAType:i,coinBType:s,packageId:c}=e,u=[o,t.object(oc.GLOBAL_CONFIG_OBJ_ID),t.object(oc.VERSIONED_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(en)];t.moveCall({target:`${c??e2.LAST_PACKAGE_ID}::cetus_dlmm_router::swap`,typeArguments:[i,s],arguments:u})},(e5=ol||(ol={})).GLOBAL_CONFIG="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135",e5.DEEP_TYPE="0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",(e8=od||(od={})).LAST_PACKAGE_ID="0xff274b63c0f6e3a01f3dd0e923aefcb3146e05e2f6bef4ae339e2703b085f8ed",e8.swap=function(e){eE(e.protocol===rr.DEEPBOOK_V3,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,deepFeeCoin:c,packageId:u}=e,l=c||t.moveCall({target:"0x2::coin::zero",typeArguments:[ol.DEEP_TYPE]});t.moveCall({target:`${u??e8.LAST_PACKAGE_ID}::deepbook_v3_router::swap`,typeArguments:[r,a],arguments:[o,t.object(ol.GLOBAL_CONFIG),t.object(n),t.pure.u64(s),t.pure.bool(i),l,t.object(en)]})},(op||(op={})).GLOBAL_OBJ_ID="0x935229a3c32399e9fb207ec8461a54f56c6af5744c64442435ac217ab28f0d59",(e9=o_||(o_={})).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(op.GLOBAL_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(om||(om={})).FERRA_GLOBAL_CONFIG_ID="0x2cd8382c19e6994f16df204e9b8cddd04bdc486c251de75ac66ac4e48e3e7081",(e7=of||(of={})).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(om.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object("0x6")]})},(og||(og={})).FERRA_GLOBAL_CONFIG_ID="0x5c9dacf5a678ea15b8569d65960330307e23d429289ca380e665b1aa175ebeca",(te=oA||(oA={})).LAST_PACKAGE_ID="0x686e9eb19b04d46374c3fb82cb4ebb7b24ef8a9ae13f403915f4ae347e0f6593",te.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??te.LAST_PACKAGE_ID}::ferra_dlmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(og.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object(en)]})},(tt=ob||(ob={})).POOL_REGISTRY_OBJ_ID="0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc",tt.VERSIONED_OBJ_ID="0x67624a1533b5aff5d0dfcf5e598684350efd38134d2d245f475524c03a64e656",(to=oI||(oI={})).LAST_PACKAGE_ID="0x350a752d3388165e578cc33a39655a6da83613cf4e58c8d9d0723711c2603e17",to.swap=function(e){eE(e.protocol===rr.FLOWX_CLMM);let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolFeeRate:n,amountIn:i,aToB:s,packageId:c}=e;t.moveCall({target:`${c??to.LAST_PACKAGE_ID}::flowx_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(ob.POOL_REGISTRY_OBJ_ID),t.object(ob.VERSIONED_OBJ_ID),t.pure.u64(n),t.pure.u64(i),t.pure.bool(s),t.object(en)]})},(oT||(oT={})).CONTAINER_OBJ_ID="0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511",(tr=oC||(oC={})).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(oT.CONTAINER_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(ta=oO||(oO={})).GLOBAL_CONFIG_OBJ_ID="0xe93baa80cb570b3a494cbf0621b2ba96bc993926d34dc92508c9446f9a05d615",ta.REWARDER_VAULT_OBJ_ID="0xfb971d3a2fb98bde74e1c30ba15a3d8bef60a02789e59ae0b91660aeed3e64e1",ta.STATS_OBJ_ID="0x6822a33d1d971e040c32f7cc74507010d1fe786f7d06ab89135083ddb07d2dc2",ta.PRICE_PROVIDER_OBJ_ID="0x854b2d2c0381bb656ec962f8b443eb082654384cf97885359d1956c7d76e33c9",(tn=oM||(oM={})).LAST_PACKAGE_ID="0xf0bf13b5baaf3d368f165e846b919294bed79a3ab3ab0c9bd1e75f23533e44a5",tn.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??tn.LAST_PACKAGE_ID}::fullsail_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(oO.GLOBAL_CONFIG_OBJ_ID),t.object(oO.REWARDER_VAULT_OBJ_ID),t.object(oO.STATS_OBJ_ID),t.object(oO.PRICE_PROVIDER_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(en)]})},(ti=oE||(oE={})).LAST_PACKAGE_ID="0x8969ed3e56c1dbdaf9df52f812d69c6c45fe5a4bab7093c88f5a8697a409398e",ti.swap=function(e){eE(e.protocol===rr.HAEDAL_CPMM);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdA:c,pythPriceFeedIdB:u,pythInfoObjectIdMap:l,packageId:d}=e,p=l.get(c),_=l.get(u);eE(p,"Not found priceInfoAId in pythObjectIdMap"),eE(_,"Not found priceInfoBId in pythObjectIdMap"),t.moveCall({target:`${d??ti.LAST_PACKAGE_ID}::haedal_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(p),t.object(_),t.pure.u64(s),t.pure.bool(i),t.object(en)]})},(ts=oh||(oh={})).LAST_PACKAGE_ID="0x5d01f22e5471a5912a88e15d62fdcb922beba65b8e8dfe1a715aebf743194f4a",ts.swap=function(e){eE(e.protocol===rr.HAEDAL_CPMM_V2);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdBase:c,pythInfoObjectIdMap:u,packageId:l}=e,d=u.get(c);eE(d,"Not found pythPriceBaseId in pythObjectIdMap"),t.moveCall({target:`${l??ts.LAST_PACKAGE_ID}::haedal_cpmm_v2_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(d),t.pure.u64(s),t.pure.bool(i),t.object(en)]})},(tc=oy||(oy={})).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(eo),t.pure.bool(r),t.pure.u64(a)]})},(oS||(oS={})).STAKING_OBJ_ID="0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904",(oP||(oP={})).VALIDATOR_ID="0x7b3ba6de2ae58283f60d5b8dc04bb9e90e4796b3b2e0dea75569f491275242e7",(tu=oF||(oF={})).LAST_PACKAGE_ID="0x7be077dd73c85e788c2a49a51f0627066d81d3dc9982c268e3691265a81d544d",tu.swap=function(e){eE(e.protocol===rr.HAEDAL_LSD_WAL),eE(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(oS.STAKING_OBJ_ID),t.object(r),t.pure.id(oP.VALIDATOR_ID),t.pure.bool(a),t.pure.u64(n)]})},(oB||(oB={})).VERSION_OBJ_ID="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78",(tl=oD||(oD={})).LAST_PACKAGE_ID="0xcf141e1d18ff609b2ac56532b391f7648fc55e28696efe354186f5109c0eff06",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}::kriya_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oB.VERSION_OBJ_ID),t.pure.bool(i),t.pure.u64(s),t.object(en)]})},(td=ow||(ow={})).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=ox||(ox={})).FACTORY_OBJ_ID="0xedb456e93e423dd75a8ddebedd9974bb661195043027e32ce01649d6ccee74cf",tp.GLOBAL_CONFIG_OBJ_ID="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(t_=oR||(oR={})).LAST_PACKAGE_ID="0x950f94d33060c0575389c9f84fabab1e140776c6c84389d4237a0c2687a7adc9",t_.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??t_.LAST_PACKAGE_ID}::magma_almm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(ox.FACTORY_OBJ_ID),t.object(ox.GLOBAL_CONFIG_OBJ_ID),t.pure.u64(s),t.pure.bool(i),t.object(en)]})},(oL||(oL={})).GLOBAL_CONFIG="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(tm=ov||(ov={})).LAST_PACKAGE_ID="0xbe5f590339c55ca8ebbf93cedfb68aafd479d71e1c57043246f7dcf352745242",tm.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??tm.LAST_PACKAGE_ID}::magma_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oL.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(en)]})},(tf=ok||(ok={})).LATEST_PACKAGE_ID="0xfab91518218f10204b083dba1e62c8bfc23f14fb87742158043e5faec4670ec4",tf.swap=function(e){let t,o,r;eE(e.protocol===rr.METASTABLE,"Invalid protocol");let{txb:a,swapContext:n,aToB:i,amountIn:s,coinAType:c,coinBType:u,poolId:l,metaCoin:d,packageId:p}=e,[_,m]=i?[c,u]:[u,c];_===d?(r="swap_from_meta_coin",t=[d,m],o=[tN.createCap({coinType:m,createCapFunc:"create_withdraw_cap",...e})]):m===d?(r="swap_to_meta_coin",t=[d,_],o=[tN.createCap({coinType:_,createCapFunc:"create_deposit_cap",...e})]):(r="swap",t=[d,_,m],o=[tN.createCap({coinType:_,createCapFunc:"create_deposit_cap",...e}),tN.createCap({coinType:m,createCapFunc:"create_withdraw_cap",...e})]),a.moveCall({target:`${p??tf.LATEST_PACKAGE_ID}::metastable_router::${r}`,typeArguments:t,arguments:[n,a.object(l),a.object(tN.VERSION_OBJ_ID),...o,a.pure.u64(s)]})},(oU||(oU={})).VERSION_OBJ_ID="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a",(tg=oN||(oN={})).LAST_PACKAGE_ID="0xba7ab4c8c39024fa0052bb4f00548a2e7b60742bb4ed0b87bc1d945fd8209102",tg.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??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(oU.VERSION_OBJ_ID),t.object(en)]})},(oK||(oK={})).CONFIGURATION_OBJ_ID="0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4",(tA=oG||(oG={})).LAST_PACKAGE_ID="0x5a259db4b1d17fafc09185c9a71bac36f25f9ee462e72894c8610e5a58b79f8f",tA.swap=function(e){eE(e.protocol===rr.MOVEPUMP,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,expectedAmountOut:s,packageId:c}=e;t.moveCall({target:`${c??tA.LAST_PACKAGE_ID}::movepump_router::swap`,typeArguments:[n?a:r],arguments:[o,t.object(oK.CONFIGURATION_OBJ_ID),t.object(oo.DEX_INFO_OBJ_ID),t.object(en),t.pure.u64(s),t.pure.bool(n),t.pure.u64(i)]})},(oj||(oj={})).STATE_OBJ_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",(tb=oq||(oq={})).LAST_PACKAGE_ID="0xd615fed37d692280047068e80d3a6bb685aa9d574608054c9df881d6a7378fab",tb.swap=function(e){let t,o;eE(e.protocol===rr.OBRIC);let{txb:r,swapContext:a,poolId:n,coinAType:i,coinBType:s,aToB:c,amountIn:u,pythInfoObjectIdMap:l,packageId:d}=e;"priceInfoObjIdA"in e?(t=e.priceInfoObjIdA,o=e.priceInfoObjIdB):(t=l.get(e.pythPriceFeedIdA),o=l.get(e.pythPriceFeedIdB),eE(t,"Not found priceInfoAId in pythObjectIdMap"),eE(o,"Not found priceInfoBId in pythObjectIdMap")),r.moveCall({target:`${d??tb.LAST_PACKAGE_ID}::obric_router::swap`,typeArguments:[i,s],arguments:[a,r.object(n),r.pure.u64(u),r.pure.bool(c),r.object(oj.STATE_OBJ_ID),r.object(t),r.object(o),r.object(en)]})},(tI=o$||(o$={})).VERSION_OBJ_ID="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",tI.MARKET_OBJ_ID="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",(tT=oY||(oY={})).LAST_PACKAGE_ID="0xea409bb08c8a09e4127f859d9c36b8b62ca609282aa1e443091db6b7a7409ee7",tT.swap=function(e){eE(e.protocol===rr.SCALLOP);let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,scoinTreasury:s,packageId:c}=e;t.moveCall({target:`${c??tT.LAST_PACKAGE_ID}::scallop_router::swap`,typeArguments:[r,a],arguments:[o,t.object(o$.VERSION_OBJ_ID),t.object(o$.MARKET_OBJ_ID),t.object(s),t.pure.u64(i),t.pure.bool(n),t.object(en)]})},(oV||(oV={})).ORACLE_HOLDER_OBJ_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",(tC=oJ||(oJ={})).LAST_PACKAGE_ID="0x918a30e2a05d24ea9451e2d2900d055f74e6752f2e10251fa50c7175831b1958",tC.swap=function(e){eE(e.protocol===rr.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:c,oracleConfigA:u,oracleConfigB:l,pythPriceFeedIdA:d,pythPriceFeedIdB:p,pythInfoObjectIdMap:_,packageId:m}=e,f=_.get(d),g=_.get(p);eE(f,"Not found priceInfoAId in pythObjectIdMap"),eE(g,"Not found priceInfoBId in pythObjectIdMap");let A=t1.newHolder(t);t1.getPrice({txb:t,coinPriceId:d,holder:A,coinOracleId:u}),t1.getPrice({txb:t,coinPriceId:p,holder:A,coinOracleId:l}),t.moveCall({target:`${m??tC.LAST_PACKAGE_ID}::sevenk_cpmm_router::swap`,typeArguments:[a,n,c],arguments:[o,t.object(r),t.object(oV.ORACLE_HOLDER_OBJ_ID),t.pure.bool(i),t.pure.u64(s)]})},(oH||(oH={})).CONFIGURATION_OBJ_ID="0xe79fff6c77d81f9a8efb729e25bf0037deec42518d40b978f274a4915d7e1ec9",(tO=oX||(oX={})).LAST_PACKAGE_ID="0x0a5dc665dc3c1c846a6d1e00811c84cae3510c839ab4dc0873f85dc8908d0606",tO.swap=function(e){eE(e.protocol===rr.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(oH.CONFIGURATION_OBJ_ID),t.object(oT.CONTAINER_OBJ_ID),t.object(en),t.pure.bool(r),t.pure.u64(a)]})},(tM=oW||(oW={})).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(eo),t.pure.u64(a),t.pure.bool(n)]})},(oz||(oz={})).CONFIG_OBJ_ID="0x881fd0a12ca4fa48991f5c27ba57d17f1ec147fa15f43b3cb760cc3bd7ba9402",(tE=oQ||(oQ={})).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(oz.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(en)]})};var rk=o0||(o0={});function rU(e,t){eE(e.protocol===rr.STEAMM_OMM||e.protocol===rr.STEAMM_OMM_V2,"Invalid protocol for steamm _swapOmm swap");let{txb:o,swapContext:r,poolId:a,coinAType:n,coinBType:i,aToB:s,amountIn:c,bankAId:u,bankBId:l,lendingMarketId:d,lendingMarketType:p,bCoinAType:_,bCoinBType:m,lpBCoinType:f,pythPriceFeedIdA:g,pythPriceFeedIdB:A,pythInfoObjectIdMap:b,oracleRegistryId:I,oracleIndexA:T,oracleIndexB:C,packageId:O}=e,M=b.get(g),E=b.get(A);eE(M,"Not found priceInfoAId in pythObjectIdMap"),eE(E,"Not found priceInfoBId in pythObjectIdMap");let h=oZ.Oracle.getPythPrice({txb:o,oracleRegistryId:I,priceInfoId:M,oracleIndex:T}),y=oZ.Oracle.getPythPrice({txb:o,oracleRegistryId:I,priceInfoId:E,oracleIndex:C});o.moveCall({target:`${O??rk.LAST_PACKAGE_ID}::${rN(t)}::swap`,typeArguments:[p,n,i,_,m,f],arguments:[r,o.object(a),o.object(u),o.object(l),o.object(d),h,y,o.pure.bool(s),o.pure.u64(c),o.object(en)]})}function rN(e){switch(e){case 0:return"steamm_omm_router";case 1:return"steamm_omm_v2_router"}}function rK(e){let{amountOut:t,aggregatorFeeBps:o,partnerFeeBps:r}=e,a=rG(t,o);return r&&(a=rG(a,r)),a}function rG(e,t){let o=BigInt(e)*BigInt(t)/BigInt(1e4);return(BigInt(e)-o).toString()}function rj(e){return Math.floor(100*e)}rk.LAST_PACKAGE_ID="0xd606880d67c399f349758111a91582d5515f31dd051632402653d872818f594e",rk.swapCpmm=function(e){eE(e.protocol===rr.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:c,bankBId:u,lendingMarketId:l,lendingMarketType:d,bCoinAType:p,bCoinBType:_,lpBCoinType:m}=e;t.moveCall({target:`${rk.LAST_PACKAGE_ID}::steamm_cpmm_router::swap`,typeArguments:[d,a,n,p,_,m],arguments:[o,t.object(r),t.object(c),t.object(u),t.object(l),t.pure.bool(i),t.pure.u64(s),t.object(en)]})},rk.swapOmm=function(e){rU(e,0)},rk.swapOmmV2=function(e){rU(e,1)},rk.getOmmRouterModule=rN,(tS=o1||(o1={})).LAST_PACKAGE_ID="0x7a1cf89025a60161e84809784d772263231fad08a7cb76a88ca1ba69e0a656da",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}::suiswap_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(en)]})},(tP=o6||(o6={})).VERSIONED="0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676",tP.POOL_REGISTRY="0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd",(tF=o4||(o4={})).LAST_PACKAGE_ID="0x79957062a7424ed9c2eb83932e4c4fcc3fee67ab3c8f6f874c54e417178bbb7a",tF.swap=function(e){eE(e.protocol===rr.TRADEPORT_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,poolFeeRate:s,packageId:c}=e;t.moveCall({target:`${c??tF.LAST_PACKAGE_ID}::tradeport_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(o6.POOL_REGISTRY),t.pure.u64(s),t.object(o6.VERSIONED),t.pure.bool(n),t.pure.u64(i),t.object(en)]})},(o3||(o3={})).POOL_VERSIONED="0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f",(tB=o2||(o2={})).LAST_PACKAGE_ID="0x512d63711ff38353fb167238b0529001b6871c1727c67ce3bf6ec23556b0f1da",tB.swap=function(e){eE(e.protocol===rr.TURBOS_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,coinFeeType:n,poolId:i,aToB:s,amountIn:c,packageId:u}=e;t.moveCall({target:`${u??tB.LAST_PACKAGE_ID}::turbos_clmm_router::swap`,typeArguments:[r,a,n],arguments:[o,t.object(i),t.object(o3.POOL_VERSIONED),t.pure.bool(s),t.pure.u64(c),t.object(en)]})},(o5||(o5={})).CONFIGURATION_OBJ_ID="0xd86685fc3c3d989385b9311ef55bfc01653105670209ac4276ebb6c83d7df928",(tD=o8||(o8={})).LAST_PACKAGE_ID="0x1fad13f09797aa87a4385d0b1efb2de963ba16742447b1ad5a3b0c5b1d1c588b",tD.swap=function(e){eE(e.protocol===rr.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(o5.CONFIGURATION_OBJ_ID),t.object(en),t.pure.bool(a),t.pure.u64(n)]})},(o9||(o9={})).VOLO_CERT_METADATA_ID="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",(tw=o7||(o7={})).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(o9.VOLO_CERT_METADATA_ID),t.object(eo),t.pure.bool(a),t.pure.u64(n)]})},(tx=re||(re={})).RouterSwapFunctionMap={[rr.AFTERMATH_CPMM]:t3.swap,[rr.AFTERMATH_LSD]:t5.swap,[rr.ALPHAFI_LSD]:t8.swap,[rr.BLASTFUN]:t7.swap,[rr.BLUEFIN_CLMM]:ot.swap,[rr.BLUEMOVE_CPMM]:or.swap,[rr.BOLT]:on.swap,[rr.CETUS_CLMM]:os.swap,[rr.CETUS_DLMM]:ou.swap,[rr.DEEPBOOK_V3]:od.swap,[rr.DIP_CPMM]:o_.swap,[rr.FERRA_CLMM]:of.swap,[rr.FERRA_DLMM]:oA.swap,[rr.FLOWX_CPMM]:oC.swap,[rr.FLOWX_CLMM]:oI.swap,[rr.FULLSAIL_CLMM]:oM.swap,[rr.HAEDAL_CPMM]:oE.swap,[rr.HAEDAL_CPMM_V2]:oh.swap,[rr.HAEDAL_LSD]:oy.swap,[rr.HAEDAL_LSD_WAL]:oF.swap,[rr.KRIYA_CLMM]:oD.swap,[rr.KRIYA_CPMM]:ow.swap,[rr.MAGMA_ALMM]:oR.swap,[rr.MAGMA_CLMM]:ov.swap,[rr.METASTABLE]:ok.swap,[rr.MOMENTUM_CLMM]:oN.swap,[rr.MOVEPUMP]:oG.swap,[rr.OBRIC]:oq.swap,[rr.SCALLOP]:oY.swap,[rr.SEVENK_CPMM]:oJ.swap,[rr.SEVENK_FUN]:oX.swap,[rr.SPRINGSUI]:oW.swap,[rr.SRM_CPMM]:oQ.swap,[rr.STEAMM_CPMM]:o0.swapCpmm,[rr.STEAMM_OMM]:o0.swapOmm,[rr.STEAMM_OMM_V2]:o0.swapOmmV2,[rr.SUISWAP_CPMM]:o1.swap,[rr.TRADEPORT_CLMM]:o4.swap,[rr.TURBOS_CLMM]:o2.swap,[rr.TURBOS_FUN]:o8.swap,[rr.VOLO]:o7.swap},tx.swap=function(e){(0,tx.RouterSwapFunctionMap[e.protocol])(e)},(rt||(rt={})).buildAggregatorSwapTransaction=async function(e){let{tx:t,coinOutType:o,tradePaths:r,pythConnections:a,pythClient:n,packageIdMap:i}=e,s=tv.openSwap(e),c=await t6.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];re.swap({...o,txb:t,swapContext:s,amountIn:o.amountIn,coinAType:a,coinBType:n,packageId:i?.get(o.protocol),pythInfoObjectIdMap:c})}return tv.closeSwap({tx:t,coinOutType:o,swapSession:s})};let rq=t6.newPythConnections(),r$=t6.newPythClient();var rY=ro||(ro={});function rV(e){var t,o;let r,a,{buildTxParam:n,rawRouteParam:i}=e;switch(i.sourceRoute){case"CETUS":r=tK.convert(i.rawRoute);break;case"FLOWX":r=tG.convert(i.rawRoute);break;case"SEVENK":r=tk.convert(i.rawRoute);break;default:throw Error("Unsupported source route")}let s=rj(n.aggregatorFeeRatePercent),c=n.partnerFeeRatePercent?rj(n.partnerFeeRatePercent):void 0,u=n.expectedAmountOut??rK({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??rq,pythClient:n.pythClient??r$}}rY.toMetaAggregatorBuildTxParams=rV,rY.buildTx=function(e){let t=rV(e);return rt.buildAggregatorSwapTransaction(t)};let rJ=async(e,t,o)=>t<=0?e():new Promise((r,a)=>{let n=setTimeout(()=>a(new rw(`Timeout ${o??"operation"}`,rD.TIMEOUT,{timeout:t})),t);e().then(r).catch(a).finally(()=>clearTimeout(n))}),rH=(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)}},rX={SEVENK:{},FLOWX:{},CETUS:{}};class rW{client;providers={};options;constructor(e){this.options={providers:{...rX,...e?.providers},slippageBps:e?.slippageBps??100,fullnodeUrl:e?.fullnodeUrl??eI("mainnet"),hermesApi:e?.hermesApi??t6.PYTH_URLS,partner:e?.partner??eT,partnerCommissionBps:e?.partnerCommissionBps??0,tipBps:e?.tipBps??0},this.client=new e_({url:this.options.fullnodeUrl})}async getQuoteClient(e){let t=this.providers[e];if(t)return t;let o=this.options.providers[e];switch(rw.assert(!!o,`Provider not found: ${e}`,rD.PROVIDER_NOT_FOUND,{provider:e}),e){case"SEVENK":{let{Bluefin7kClient:e}=await Promise.resolve().then(()=>({Bluefin7kClient:rx})).catch(rz("SEVENK"));this.providers.SEVENK=new e(o,this.client);break}case"FLOWX":{let{FlowxClient:e}=await Promise.resolve().then(()=>({FlowxClient:rv})).catch(rz("FLOWX"));this.providers.FLOWX=new e(o);break}case"CETUS":{let{CetusClient:e}=await Promise.resolve().then(()=>({CetusClient:rL})).catch(rz("CETUS"));this.providers.CETUS=new e(o,this.options,this.client);break}default:throw new rw(`Provider not supported: ${e}`,rD.PROVIDER_NOT_SUPPORTED,{provider:e})}return this.providers[e]}async getQuoteByClient(e,t){return await rJ(async()=>{let o=await e.quote(t);return o?(o.amountOut=rK({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:eu(e.coinTypeIn),coinTypeOut:eu(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=eb(o);rw.assert(ep(i),`Invalid signer address: ${o}`,rD.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 ro.buildTx({buildTxParam:{tx:r,inputCoin:a,expectedAmountOut:t.amountOut,slippagePercent:s,aggregatorFeeRatePercent:this.options.tipBps/1e4,aggregatorFeeRecipient:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff",partnerFeeRatePercent:u,partnerFeeRecipient:c,pythConnections:t6.newPythConnections(this.options.hermesApi),pythClient:t6.newPythClient(this.client)},rawRouteParam:{...t}})}}let rz=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 rQ{sdk;_astrosAggregator;_aftermathAggregator;_sevenkAggregator;_cetusAggregator;_flowXAggregator;constructor(e){this.sdk=e,this._astrosAggregator=new ri({defaultTradeFee:e.options.tradeFee,astrosApiKey:e.options.astrosApiKey},e.suiClient),this._aftermathAggregator=new rn({defaultTradeFee:e.options.tradeFee,aftermathApiKey:e.options.aftermathApiKey,aftermathApiEndpoint:e.options.aftermathApiEndpoint},e.suiClient),this._sevenkAggregator=new ra({defaultTradeFee:e.options.tradeFee,sevenKApiKey:e.options.sevenKApiKey},e.suiClient),this._cetusAggregator=new rs({defaultTradeFee:e.options.tradeFee,cetusApiKey:e.options.cetusApiKey,cetusApiEndpoint:e.options.cetusApiEndpoint,cetusPartnerId:e.options.cetusPartnerId},e.suiClient),this._flowXAggregator=new ru({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 rc.ASTROS:{let e,r=await this._astrosAggregator.getTradeRoute(t);if(!r)return null;let n=ri.toCommonTradeRoutes(r,t.coinInType,t.coinOutType);if(!n)return null;e=t.tradeFee?t.tradeFee.tradeFeePercent:this.sdk.options.tradeFee.tradeFeePercent,n.amountOut=BigInt(new a(r.amount_out).multipliedBy(1-e).toFixed(0,3)),o={route:n,aggregatorRoute:r};break}case rc.AFTERMATH:{let e=await this._aftermathAggregator.getTradeRoute(t);if(!e)return null;let r=rn.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rc.SEVENK:{let e=await this._sevenkAggregator.getTradeRoute(t);if(!e)return null;let r=ra.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rc.CETUS:{let e=await this._cetusAggregator.getTradeRoute(t);if(!e)return null;let r=rs.toCommonTradeRoutes(e,t.coinInType,t.coinOutType);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rc.FLOWX:{let e=await this._flowXAggregator.getTradeRoute(t);if(!e)return null;let r=ru.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e}}}return o}async getTransactionByRoute(e,t){switch(e){case rc.ASTROS:return this._astrosAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rc.AFTERMATH:return this._aftermathAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage});case rc.SEVENK:return this._sevenkAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rc.CETUS:return this._cetusAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rc.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(rc),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(rc),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 rZ{sdk;constructor(e){this.sdk=e}async getEstimatedAmountOut(e,t){let{coinInType:o,coinOutType:r}=t;eE(o!==r,"coinInType and coinOutType must be different"),eE(eA(o)||eA(r),"One of coinInType or coinOutType must be SUI");let a=eA(o);switch(e){case rE.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 rE.BLAST_FUN:if(a)return await tX.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});return await tX.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;eE(r!==a,"coinInType and coinOutType must be different"),eE(eA(r)||eA(a),"One of coinInType or coinOutType must be SUI");let n=eA(r);switch(e){case rE.MOONBAGS:o=n?await t0.getBuyTransaction(t,this.sdk.suiClient):await t0.getSellTransaction(t,this.sdk.suiClient);break;case rE.BLAST_FUN:o=n?await tW.getBuyTransaction(t,this.sdk.suiClient):await tW.getSellTransaction(t,this.sdk.suiClient);break;default:throw Error(`Unsupported bonding curve platform: ${e}`)}return o}}let r0={tradeFeePercent:.01,tradeFeeRecipientAddress:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff"};class r1{network;env;options;_suiClient;aggregatorModule;curveModule;constructor(e,t="mainnet",o="prod"){this.options=e,this.network=t,this.env=o;let r=eI(t);this._suiClient=new e_({url:r}),this.aggregatorModule=new rQ(this),this.curveModule=new rZ(this)}get suiClient(){return this._suiClient}}class r6{suiClient;constructor(e){this.suiClient=e}validatePrivateKey(e,t){eE(e?.trim(),"Private key is required");let o=et.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){eE(e?.trim(),"Sender address is required"),eE(t?.trim(),"Recipient address is required"),eE(e!==t,"Sender and recipient cannot be the same"),eE(o>0n,"Transfer amount must be at least 1 MIST");try{let r=new ed,[a]=r.splitCoins(r.gas,[o]);r.transferObjects([a],t),r.setSender(e);let n=await this.suiClient.getReferenceGasPrice();r.setGasPrice(n);let i=await es(this.suiClient,r,e,.1);r=await ec({inheritTx:r,sender:e,feeAmount:i,suiInputAmount:o},this.suiClient);let s=await r.build({client:this.suiClient}),c=Buffer.from(s).toString("base64"),u=await r.getDigest();return{sender:e,recipient:t,amountMIST:o,txDraftBase64:c,txDigest:u}}catch(e){throw Error(`Failed to create draft transaction: ${e instanceof Error?e.message:"Unknown error"}`)}}async execute(e,t){try{eE(e,"Draft transaction is required"),eE(e.txDraftBase64?.trim(),"Transaction data is required");let o=this.validatePrivateKey(t,e.sender),r=eO(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){eE(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 r4=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"./982.js";export{rQ as AggregatorModule,rm as BLUEFIN_PACKAGE_ID,rZ as CurveModule,r0 as DEFAULT_TRADE_FEE,r6 as DraftTransferTx,rw as MetaAgError,rW as MetaClient,r1 as NoodlesSdk,ra as SevenKAggregator,rP as adaptSuiClient,rF as adaptTransaction,rn as AftermathAggregator,t4 as AftermathCpmm,t2 as AftermathLsd,ro as AggregatorConverter,ri as AstrosAggregator,t9 as Blastfun,rx as Bluefin7kClient,tJ as BluefinTx,oe as BluefinClmm,oo as BluemoveCpmm,oa as Bolt,tZ as MoonbagsCalculation,rs as CetusAggregator,tK as CetusAggregatorConverter,rL as CetusClient,oi as CetusClmm,oc as CetusDlmm,eS as checkIsSui,rc as SupportedAggregator,tj as BlastFunConstants,tz as MoonbagsConstants,rB as createCompatibleSuiClient,tV as BlastFunCustomCalculation,tH as BlastFunCustomTransaction,ol as DeepbookV3,ey as denormalizeTokenType,op as DipCpmm,rD as MetaAgErrorCode,r4 as BASE_BPS,om as FerraClmm,og as FerraDlmm,ru as FlowXAggregator,tG as FlowXAggregatorConverter,rv as FlowxClient,oT as FlowxCpmm,oO as FullsailClmm,rH as getExpectedReturn,rT as getMemezPumpSDK,rd as getMoveObject,rl as getMoveObjectContent,oP as HaedalLsdWal,oB as KriyaClmm,ox as MagmaAlmm,oL as MagmaClmm,rt as MetaAggregator,tN as Metastable,oU as MomentumClmm,oK as Movepump,eh as normalizeTokenType,oj as Obric,tY as BlastFunPackage,t$ as Bps,tq as MathUtils,tQ as MoonbagsPackage,t1 as PythPrice,t6 as PythUtils,o$ as Scallop,tX as BlastFunSDKCalculation,tW as BlastFunSDKTransaction,tk as SevenKAggregatorConverter,oV as SevenkCpmm,oH as SevenkFun,rf as splitSuiCoinAfterFeeFromBuyTx,rg as splitSuiCoinAfterFeeFromSellTx,oz as SrmCpmm,oZ as Steamm,o6 as TradeportClmm,t0 as MoonbagsTransaction,o3 as TurbosClmm,o5 as TurbosFun,rr as AggregatorProtocol,rE as SupportedBondingCurve,tU as TradeFeeOptions,re as RouterUtils,rJ as timeout,o9 as Volo,oS as Walrus};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minswap/noodles-sdk",
3
- "version": "0.0.60",
3
+ "version": "0.0.61",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {