@minswap/noodles-sdk 0.1.0-beta.1 → 0.1.0

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:()=>l});let r="0x2::sui::SUI",a="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",n="0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",i="0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",s="0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",c="0x0000000000000000000000000000000000000000000000000000000000000006",u="0x0000000000000000000000000000000000000000000000000000000000000000";function l(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/jsonRpc"),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.SuiJsonRpcClient({network:"mainnet",url:(0,s.getJsonRpcFullnodeUrl)("mainnet")})),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:l,partnerFeeBps:_}=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(_??0),t.pure.option("address",l)]});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 l(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=l,e.convert=function(e){return{coinInType:e.paths[0].from,coinOutType:e.paths[e.paths.length-1].target,amountOut:e.amountOut.toString(),tradePaths:l(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":{(void 0===o||o.length<2)&&console.error("[FlowXAggregatorConverter][STEAMM_OMM] Missing oracle price feeds",{reason:"oracles is undefined or has less than 2 entries",...n(t)}),i()(void 0!==o&&o.length>=2,`STEAMM_OMM protocol requires oracle price feeds for pool ${t.pool.id}.`);let e=o[0],s=o[1],u=[void 0===e.oracleId?"oracles[0].oracleId":void 0,void 0===s.oracleId?"oracles[1].oracleId":void 0,void 0===e.oracleIndex?"oracles[0].oracleIndex":void 0,void 0===s.oracleIndex?"oracles[1].oracleIndex":void 0].filter(e=>void 0!==e);return u.length>0&&console.error("[FlowXAggregatorConverter][STEAMM_OMM] Missing oracle ids",{reason:"STEAMM OMM requires oracleId and oracleIndex for both oracle entries",missingFields:u,...n(t)}),i()(void 0!==e.oracleId&&void 0!==s.oracleId&&void 0!==e.oracleIndex&&void 0!==s.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:s.priceId,oracleRegistryId:t.protocolConfig.oracleRegistryId,oracleIndexA:e.oracleIndex.toString(),oracleIndexB:s.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((t,r)=>{try{return e.toMetaAggregatorPath(t)}catch(e){throw console.error("[FlowXAggregatorConverter] Failed to convert FlowX swap route",{routeIndex:r,routeCount:o.length,poolId:t.pool.id,protocol:t.protocol(),coinInType:t.input.coinType,coinOutType:t.output.coinType,amountIn:t.amountIn.toString(),amountOut:t.amountOut.toString(),error:e}),e}});for(let e of r.values())a[e].amountIn=s.u.MAX_AMOUNT_IN;return a}function n(e){return{poolId:e.pool.id,quoterType:e.quoterType,xForY:e.xForY,coinInType:e.input.coinType,coinOutType:e.output.coinType,amountIn:e.amountIn.toString(),amountOut:e.amountOut.toString(),oracleCount:e.oracles?.length??0,oracles:e.oracles?.map((e,t)=>({index:t,priceId:e.priceId,oracleId:e.oracleId,oracleIndex:e.oracleIndex,hasPriceId:void 0!==e.priceId&&""!==e.priceId,hasOracleId:void 0!==e.oracleId&&""!==e.oracleId,hasOracleIndex:void 0!==e.oracleIndex})),protocolConfig:{oracleRegistryId:e.protocolConfig?.oracleRegistryId,hasOracleRegistryId:e.protocolConfig?.oracleRegistryId!==void 0},bankXInfo:e.bankXInfo,bankYInfo:e.bankYInfo,poolInfo:e.poolInfo,poolStructTag:e.poolStructTag}}e.toMetaAggregatorBasePath=e=>({poolId:e.pool.id,coinInType:e.input.coinType,coinOutType:e.output.coinType,amountIn:e.amountIn.toString()}),e.toMetaAggregatorPath=e=>{let r=e.protocol();if(t.includes(r))throw Error(`Unsupported protocol: ${r}`);return(0,o[r])(e)},e.toMetaAggregatorPaths=r,e.convert=function(e){return{coinInType:e.coinIn.coinType,coinOutType:e.coinOut.coinType,amountOut:e.amountOut.toString(),tradePaths:r(e.routes)}}}(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","RFQ"]);e.SUPPORTED_PROTOCOLS=["suiswap","turbos","cetus","bluemove","kriya","kriya_v3","aftermath","deepbook_v3","flowx","flowx_v3","bluefin","springsui","obric","stsui","steamm","steamm_oracle_quoter","steamm_oracle_quoter_v2","magma","haedal_pmm","momentum","sevenk_v1","fullsail","cetus_dlmm","ferra_dlmm","ferra_clmm"];let o={aftermath:e=>{n()(e.extra?.poolStructTag,"Aftermath protocol requires poolStructTag");let[t]=_(e.extra.poolStructTag);return{...l(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{...l(e),protocol:u.S.FLOWX_CLMM,poolFeeRate:t}},turbos:e=>{n()(e.extra?.poolStructTag,"turbos protocol requires poolStructTag");let[t,o,r]=_(e.extra.poolStructTag);return{...l(e),protocol:u.S.TURBOS_CLMM,coinFeeType:r}},obric:e=>(n()(e.extra?.oracles,"obric protocol requires oracles"),{...l(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"),{...l(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]=_(e.extra.poolStructTag);return{...l(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]=_(e.extra.poolStructTag),[i,s,c]=_(e.extra.bankAStructTag);return{...l(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]=_(e.extra?.poolStructTag),[i,s,c]=_(e.extra.bankAStructTag),[d,g]=e.extra.oracleIndexes;return{...l(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]=_(e.extra?.poolStructTag),[i,s,c]=_(e.extra.bankAStructTag),[d,g]=e.extra.oracleIndexes;return{...l(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=>({...l(e),protocol:u.S.CETUS_CLMM}),bluemove:e=>({...l(e),protocol:u.S.BLUEMOVE_CPMM}),kriya:e=>({...l(e),protocol:u.S.KRIYA_CPMM}),kriya_v3:e=>({...l(e),protocol:u.S.KRIYA_CLMM}),deepbook_v3:e=>({...l(e),protocol:u.S.DEEPBOOK_V3}),flowx:e=>({...l(e),protocol:u.S.FLOWX_CPMM}),bluefin:e=>({...l(e),protocol:u.S.BLUEFIN_CLMM}),springsui:e=>({...l(e),protocol:u.S.SPRINGSUI}),magma:e=>({...l(e),protocol:u.S.MAGMA_CLMM}),momentum:e=>({...l(e),protocol:u.S.MOMENTUM_CLMM}),fullsail:e=>({...l(e),protocol:u.S.FULLSAIL_CLMM}),stsui:e=>({...l(e),protocol:u.S.ALPHAFI_LSD}),suiswap:e=>({...l(e),protocol:u.S.SUISWAP_CPMM}),cetus_dlmm:e=>({...l(e),protocol:u.S.CETUS_DLMM}),ferra_dlmm:e=>({...l(e),protocol:u.S.FERRA_DLMM}),ferra_clmm:e=>({...l(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 l(e){return{poolId:e.poolId,coinInType:e.assetIn,coinOutType:e.assetOut,amountIn:e.amount,aToB:e.swapXtoY}}function _(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:l,createCapPackageId:_,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=l.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=l.get(e.pythPriceFeedIdMeta);s()(r,"Not found priceId in pythObjectIdMap");let a=l.get(e.pythPriceFeedIdEth);s()(a,"Not found priceEthFeedId in pythObjectIdMap"),t=[o.object(i),o.object(u),o.object(r),o.object(a),o.object(c.SUI_CLOCK_OBJECT_ID)];break}default:throw Error("Invalid MetaCoin: "+a.toString())}return o.moveCall({target:`${_}::${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/jsonRpc"(e){e.exports=require("@mysten/sui/jsonRpc")},"@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(()=>{let e;__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ADMIN_CAP_ID:()=>o0,AftermathAggregator:()=>tq,AftermathCpmm:()=>eO,AftermathLsd:()=>ex,AggregatorConverter:()=>tB,AggregatorModule:()=>oz,AggregatorProtocol:()=>oB.S,AstrosAggregator:()=>t$,BASE_BPS:()=>1e4,BLUEFIN_PACKAGE_ID:()=>oa,BOOSTING_PACKAGE_ID:()=>oQ,BlastFunConstants:()=>el,BlastFunCustomCalculation:()=>eg,BlastFunCustomTransaction:()=>ef,BlastFunPackage:()=>ed,BlastFunSDKCalculation:()=>eb,BlastFunSDKTransaction:()=>eA,Blastfun:()=>ey,Bluefin7kClient:()=>oh.Bluefin7kClient,BluefinClmm:()=>eP,BluefinTx:()=>em,BluemoveCpmm:()=>eB,Bolt:()=>ev,BoostingModule:()=>o6,Bps:()=>ep,CLOCK_OBJECT_ID:()=>oe.VV,CONFIG_ID:()=>oZ,CetusAggregator:()=>tX,CetusAggregatorConverter:()=>tH.M,CetusClient:()=>oy.CetusClient,CetusClmm:()=>eR,CetusDlmm:()=>eU,CurveModule:()=>o1,DEFAULT_TRADE_FEE:()=>o5,DeepbookV3:()=>ej,DipCpmm:()=>eG,DraftTransferTx:()=>re,FerraClmm:()=>e$,FerraDlmm:()=>eY,FlowXAggregator:()=>tZ,FlowXAggregatorConverter:()=>tQ.m,FlowxClient:()=>oP.FlowxClient,FlowxCpmm:()=>eW,FullsailClmm:()=>eQ,HaedalLsdWal:()=>e3,KriyaClmm:()=>e5,MagmaAlmm:()=>e7,MagmaClmm:()=>tt,MathUtils:()=>e_,MetaAgError:()=>ow.u,MetaAgErrorCode:()=>ow.j,MetaAggregator:()=>tF,MetaClient:()=>oJ,Metastable:()=>ok.b,MomentumClmm:()=>ta,MoonbagsCalculation:()=>eT,MoonbagsConstants:()=>eI,MoonbagsPackage:()=>eC,MoonbagsTransaction:()=>eS,Movepump:()=>ti,NATIVE_USDC_TOKEN_TYPE:()=>oe.lM,NoodlesPaySdk:()=>o2,NoodlesSdk:()=>o8,Obric:()=>tc,PythPrice:()=>ox.L,PythUtils:()=>ox.j,RouterUtils:()=>tP,SUBSCRIPTION_CONFIG:()=>o4,SUI_ADDRESS_ZERO:()=>oe.qb,SUI_FULL_TYPE:()=>oe.P9,SUI_METADATA_OBJECT_ID:()=>oe.IC,SUI_TYPE:()=>oe.nD,Scallop:()=>tl,SevenKAggregator:()=>tN,SevenKAggregatorConverter:()=>tL.m,SevenkCpmm:()=>tp,SevenkFun:()=>tg,SrmCpmm:()=>tb,Steamm:()=>tI,SubscriptionModule:()=>o3,SuiGrpcClient:()=>ol.SuiGrpcClient,SuiJsonRpcClient:()=>o_.SuiJsonRpcClient,SupportedAggregator:()=>tW,SupportedBondingCurve:()=>oT,TradeFeeOptions:()=>eu,TradeportClmm:()=>tS,TurbosClmm:()=>tM,TurbosFun:()=>tE,USDC_TOKEN_TYPE:()=>oe.N3,Volo:()=>ty,Walrus:()=>e4,addGasFee:()=>ob,checkIsSui:()=>oE.YY,denormalizeTokenType:()=>oE.eP,getAmountAfterFee:()=>t5,getCoinObjectIdsByAmount:()=>oo,getExpectedReturn:()=>oV,getGrpcFullnodeUrl:()=>op,getJsonRpcFullnodeUrl:()=>od,getMemezPumpSDK:()=>of,getMoveObject:()=>t3,getMoveObjectContent:()=>t4,getNeededGasFee:()=>t8,getSplitCoinForTx:()=>or,getSplitCoinsAfterFee:()=>t2,getTransactionResultDigest:()=>og,isSuiCoinType:()=>oe.tC,normalizeTokenType:()=>oE.nr,splitSuiCoinAfterFeeFromBuyTx:()=>on,splitSuiCoinAfterFeeFromSellTx:()=>oi,timeout:()=>o$});var t,o,r,a,n,i,s,c,u,l,_,p,d,g,m,f,b,A,I,C,T,S,O,M,x,E,h,y,w,P,F,B,k,v,D,R,L,U,N,j,K,G,q,$,V,Y,J,H,X,W,z,Q,Z,ee,et,eo,er,ea,en,ei,es,ec,eu,el,e_,ep,ed,eg,em,ef,eb,eA,eI,eC,eT,eS,eO,eM,ex,eE,eh,ey,ew,eP,eF,eB,ek,ev,eD,eR,eL,eU,eN,ej,eK,eG,eq,e$,eV,eY,eJ,eH,eX,eW,ez,eQ,eZ,e0,e6,e1,e4,e3,e2,e5,e8,e9,e7,te,tt,to,tr,ta,tn,ti,ts,tc,tu,tl,t_,tp,td,tg,tm,tf,tb,tA,tI,tC,tT,tS,tO,tM,tx,tE,th,ty,tw,tP,tF,tB,tk=__webpack_require__("@bluefin-exchange/bluefin7k-aggregator-sdk");let tv=require("@mysten/sui/transactions"),tD=require("bignumber.js");var tR=__webpack_require__.n(tD),tL=__webpack_require__("./src/meta-aggregator/converter-route/sevenk-aggregator-converter.ts");function tU(e,t){console.error(`NOODLES_SDK_AGGREGATOR_ROUTE_ERROR aggregator=${e} error=${function(e){if(e instanceof Error)return`${e.name}: ${e.message}`;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}(t)}`)}class tN{_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&&tk.Config.setApiKey(this._config.sevenKApiKey);let i=a?0:r?r.tradeFeePercent:this._config.defaultTradeFee.tradeFeePercent,s=n??(a?tL.m.SUPPORTED_PROTOCOLS:void 0);return await (0,tk.getQuote)({tokenIn:t,tokenOut:o,amountIn:e.toString(),commissionBps:1e4*i,sources:s})}catch(e){return tU("sevenk",e),null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:o,tradeFee:r,metaAggregator:a}){let n,i;a?(n=0,i=this._config.defaultTradeFee.tradeFeeRecipientAddress):r?(n=r.tradeFeePercent,i=r.tradeFeeRecipientAddress):(n=this._config.defaultTradeFee.tradeFeePercent,i=this._config.defaultTradeFee.tradeFeeRecipientAddress);let s=await (0,tk.buildTx)({quoteResponse:t,slippage:o,accountAddress:e,commission:{partner:i,commissionBps:1e4*n}});return s.tx instanceof tk.BluefinXTx?tv.Transaction.from(s.tx.txBytes).build({client:this._suiClient}):(s.tx.setSender(e),s.tx.build({client:this._suiClient}))}}(tN||(tN={})).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(tR())(t.tokenInAmount).multipliedBy(10**o).toFixed(0,3)),i=BigInt(new(tR())(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(tR())(o.tokenInAmount).multipliedBy(10**a).toFixed(0,3)),s=BigInt(new(tR())(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 tj=require("aftermath-ts-sdk");function tK(e){return"bigint"==typeof e?e:"string"==typeof e&&/^\d+$/.test(e)?BigInt(e):e}function tG(e){return{...e,coinIn:e.coinIn?{...e.coinIn,amount:tK(e.coinIn.amount),tradeFee:tK(e.coinIn.tradeFee)}:e.coinIn,coinOut:e.coinOut?{...e.coinOut,amount:tK(e.coinOut.amount),tradeFee:tK(e.coinOut.tradeFee)}:e.coinOut}}class tq{_config;_aftermathClient;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async aftermathClient(){if(this._aftermathClient)return this._aftermathClient;let e=await tj.Aftermath.create({network:"MAINNET",baseUrl:this._config.aftermathApiEndpoint}),t=await e.getAddresses(),o=await tj.Aftermath.create({network:"MAINNET",baseUrl:this._config.aftermathApiEndpoint,api:new tj.AftermathApi(this._suiClient,t)});if(this._config.aftermathApiKey){let e=tj.Helpers.keypairFromPrivateKey(this._config.aftermathApiKey);await o.Auth().init({async signMessageCallback({message:t}){let{signature:o}=await e.signPersonalMessage(t);return{signature:o}},walletAddress:e.toSuiAddress()})}return this._aftermathClient=o,o}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r}){try{let a;a=r?{recipient:r.tradeFeeRecipientAddress,feePercentage:r.tradeFeePercent}:{recipient:this._config.defaultTradeFee.tradeFeeRecipientAddress,feePercentage:this._config.defaultTradeFee.tradeFeePercent};let n=await this.aftermathClient();return await n.Router().getCompleteTradeRouteGivenAmountIn({coinInAmount:e,coinInType:t,coinOutType:o,externalFee:a})}catch(e){return tU("aftermath",e),null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o}){let r=await this.aftermathClient(),a=await r.Router().getTransactionForCompleteTradeRoute({completeRoute:function(e){if("object"!=typeof e||null===e)return e;let t=tG(e);return{...t,routes:Array.isArray(t.routes)?t.routes.map(e=>{let t=tG(e);return{...t,portion:tK(t.portion),paths:Array.isArray(t.paths)?t.paths.map(e=>tG(e)):t.paths}}):t.routes,feeBreakdown:Array.isArray(t.feeBreakdown)?t.feeBreakdown.map(e=>({...e,amount:tK(e.amount)})):t.feeBreakdown}}(e),walletAddress:t,slippage:o+(e.netTradeFeePercentage??0),isSponsoredTx:!1});return a.setSender(t),a.build({client:this._suiClient})}}(tq||(tq={})).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 t${_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r}){try{let a;a=r?{fee:1e4*r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:1e4*this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let{getQuote:n}=await import("@naviprotocol/astros-aggregator-sdk");return await n(t,o,e,this._config.astrosApiKey,{byAmountIn:!0,serviceFee:a})}catch(e){return tU("astros",e),null}}returnMergedCoins(e,t,o){if(t.length<2)return e.object(t[0].coinObjectId);let r=0,a=[];t.sort((e,t)=>Number(t.balance)-Number(e.balance)).slice(1).forEach(e=>{r>=o||(r+=Number(e.balance),a.push(e.coinObjectId))});let n=t[0].coinObjectId;return e.mergeCoins(n,a),e.object(n)}async getTransaction({completeRoute:e,walletAddress:t,slippage:o,tradeFee:r}){var a;let n,i;n=r?{fee:r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let s=new(tR())(e.amount_out).multipliedBy(1-o-n.fee).toNumber(),c=new tv.Transaction,{buildSwapPTBFromQuote:u,getCoins:l}=await import("@naviprotocol/astros-aggregator-sdk"),_=this._suiClient;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 l(_,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 p=await u(t,c,s,i,e,void 0,!1,this._config.astrosApiKey,{serviceFee:n});return c.transferObjects([p],t),c.setSender(t),c.build({client:this._suiClient})}}(t$||(t$={})).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 tV=__webpack_require__("@cetusprotocol/aggregator-sdk");let tY=require("bn.js");var tJ=__webpack_require__.n(tY);(eu||(eu={})).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 tX{_config;_suiClient;_cetusClient;getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t,overlayFeeRate:o}){return{client:this._suiClient,overlayFeeReceiver:t,overlayFeeRate:o,env:tV.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,o){return o?new tV.AggregatorClient(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:void 0,overlayFeeRate:void 0})):t&&!eu.equals(t,this._config.defaultTradeFee)?new tV.AggregatorClient(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t.tradeFeeRecipientAddress,overlayFeeRate:t.tradeFeePercent})):(this._cetusClient||(this._cetusClient=new tV.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,a),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 tU("cetus",e),null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o,tradeFee:r,metaAggregator:a}){let n=this.cetusClient(t,r,a),i=new tv.Transaction;return i.setSender(t),await n.fastRouterSwap({router:e,txb:i,slippage:o}),i.build({client:this._suiClient})}}(tX||(tX={})).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 tW=((t={}).ASTROS="ASTROS",t.AFTERMATH="AFTERMATH",t.SEVENK="7K",t.CETUS="CETUS",t.FLOWX="FLOWX",t),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,o){let r,a;if(!o)return t?(r=t.tradeFeePercent,a=t.tradeFeeRecipientAddress):(r=this._config.defaultTradeFee.tradeFeePercent,a=this._config.defaultTradeFee.tradeFeeRecipientAddress),new tz.Commission(a,new tz.Coin(e),tz.CommissionType.PERCENTAGE,1e6*r,!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,a),includeSources:s})}catch(e){return tU("flowx",e),null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:o,tradeFee:r,metaAggregator:a}){let n=new tz.TradeBuilder("mainnet",t.routes).sender(e).slippage(1e6*o),i=this.getCommission(t.coinIn.coinType,r,a);return i&&(n=n.commission(i)),n.build().buildTransaction({client:this._suiClient}).then(t=>(t.setSender(e),t.build({client:this._suiClient})))}}(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}},(o=el||(el={})).PACKAGE_ID_V4="0x7e6aa6e179466ab2814425a780b122575296d011119fa69d27f289f5a28814bd",o.MEMEZ_AV_OBJECT_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0";var t0=__webpack_require__("@minswap/tiny-invariant"),t6=__webpack_require__.n(t0);let t1=require("@mysten/sui/bcs");async function t4(e,t){return(await t3(e,t)).fields}async function t3(e,t){let o=(await e.getObject({objectId:t,include:{json:!0,objectBcs:!0}})).object;t6()(o,"Pool object not found or has no content"),t6()(o.json,"Pool object not found or has no content"),t6()(o.objectBcs,"Pool object not found or has no content");let r=t1.bcs.Object.parse(o.objectBcs);return t6()("Move"===r.data.$kind,"Pool object is not a Move object"),{dataType:"moveObject",fields:o.json,hasPublicTransfer:r.data.Move.hasPublicTransfer,type:o.type}}function t2(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 t5(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 t8(e,t,o,r){t.setSenderIfNotSet(o);let a=await e.simulateTransaction({transaction:t,include:{effects:!0},checksEnabled:!1}),{gasUsed:n,status:i}=("Transaction"===a.$kind?a.Transaction:a.FailedTransaction).effects;if(!i.success)throw Error(`Transaction failed during simulation: ${i.error?.message??""}`);let s=BigInt(n.computationCost)+BigInt(n.storageCost)-BigInt(n.storageRebate),c=BigInt(1e4*Number(r));return s*(BigInt(1e4)+c)/BigInt(1e4)}((r=e_||(e_={})).U64||(r.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=ep||(ep={});function t7(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:t7(e).toString()}},t9.assertOverflow=t7,((a=ed||(ed={})).MemezFun||(a.MemezFun={})).isSniperProtectedMemezFun=async function(e,t){return(await t4(e,t)).public_key.length>0},(n=a.MemezFees||(a.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=ep.calcUp(ep.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")},n.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 ep.calcUp(ep.sub(r,t),o)}throw Error("Unknown fee variant")},(a.MemezBurner||(a.MemezBurner={})).calculate=function(e,t){if(ep.value(e.fee.fields)===BigInt(0)||t===BigInt(0)||t>=BigInt(e.target_liquidity))return ep.new_(0);let o=BigInt(1e4);return ep.new_(e_.U64.mulDivUp(ep.value(e.fee.fields),e_.U64.mulDivUp(t,o,BigInt(e.target_liquidity)),o))},(i=a.MemezPump||(a.MemezPump={})).getPumpState=async function(e,t){return await t4(e,t.inner_state)},i.pump=function(e,t){let o=e.constant_product.fields,r=a.MemezFees.takeWithDiscount(o.quote_swap_fee,t,o.quote_referrer_fee.fields),n=t-r,i=BigInt(o.meme_balance),s=BigInt(o.quote_balance),c=i*n/(BigInt(o.virtual_liquidity)+s+n),u=a.MemezFees.takeWithDiscount(o.meme_swap_fee,c,o.meme_referrer_fee.fields);return c-u},i.dump=function(e,t){let o=e.constant_product.fields,r=a.MemezFees.takeWithDiscount(o.meme_swap_fee,t,o.meme_referrer_fee.fields),n=t-r,i=BigInt(o.meme_balance),s=BigInt(o.quote_balance),c=BigInt(o.virtual_liquidity),u=a.MemezBurner.calculate(o.burner.fields,s),l=ep.calcUp(u,n),_=n-(ep.value(u)!==BigInt(0)?l:BigInt(0)),p=(c+s)*_/(i+_);p>s&&(p=s);let d=a.MemezFees.takeWithDiscount(o.quote_swap_fee,p,o.quote_referrer_fee.fields);return p-d},(s=eg||(eg={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,n=await t4(t,r),i=await ed.MemezPump.getPumpState(t,n);return o=t5(o,a),ed.MemezPump.pump(i,o)},s.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,n=await t4(t,r),i=await ed.MemezPump.getPumpState(t,n);return t5(ed.MemezPump.dump(i,o),a)};var oe=__webpack_require__("./src/constant/sui.ts"),ot=__webpack_require__("@mysten/sui/utils");let oo=async(e,t,o,r)=>{let a,n=[],i=!0;for(;i;)try{let o=await e.listCoins({owner:t,coinType:r,cursor:a});n=[...n,...o.objects.map(e=>({coinObjectId:e.objectId,version:e.version,digest:e.digest,balance:e.balance}))],i=o.hasNextPage,a=o.cursor}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=[],l=[];for(let e of s)if(c=(BigInt(e.balance)+BigInt(c)).toString(10),u.push(e.coinObjectId),l.push(e),BigInt(c)>=BigInt(o))break;return{objectIds:u,balance:c,objectCoins:l}};async function or(e,t){let{account:o,amount:r,splits:a,coinType:n,inheritTx:i,inspecTransaction:s,isSponsored:c=!1}=e,u=i??new tv.Transaction,{objectIds:l,balance:_}=await oo(t,o,r,n);if(BigInt(_)<BigInt(r))throw Error(`Insufficient balance for type ${n}. Required: ${r}, Available: ${_}`);if(0===l.length)throw Error(`No coins found for type ${n} with sufficient balance. Required: ${r}`);let p=l[0];if((0,ot.normalizeStructTag)(n)===(0,ot.normalizeStructTag)(oe.P9)&&!c){let e;return s?(l.length>1&&u.mergeCoins(u.object(p),l.slice(1).map(e=>u.object(e))),e=u.splitCoins(u.object(p),a)):e=u.splitCoins(u.gas,a),{tx:u,coinData:e}}l.length>1&&u.mergeCoins(u.object(p),l.slice(1).map(e=>u.object(e)));let d=u.splitCoins(u.object(p),a);return{tx:u,coinData:d}}let oa="0x62412b7268c35f3808336aee57a52836501f40b8ba5d936f8ad275e672befd04";async function on(e,t){let o,r,{inputAmount:a,accountAddress:n,frontendFee:i,frontendFeeRecipient:s,extendTx:c,isSponsored:u}=e;t6()(e.inCoinType===oe.P9||e.inCoinType===oe.nD,"Input must be SUI");let{tx:l,coinIn:_}=c||{},p=t2(a,i||"0"),d=l||new tv.Transaction;if(_)o=d.splitCoins(_,p),em.transferOrDestroyZeroCoin(d,oe.P9,_,n);else{let{coinData:e}=await or({account:n,amount:a,splits:p,coinType:oe.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 oi(e,t,o){if(t6()(t.outCoinType===oe.P9||t.outCoinType===oe.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:`${oa}::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}}(em||(em={})).transferOrDestroyZeroCoin=function(e,t,o,r){e.moveCall({target:`${oa}::utils::transfer_or_destroy`,typeArguments:[t],arguments:[o,e.pure.address(r)]})};var os=ef||(ef={});async function oc(e){let t=e||new tv.Transaction;return t.moveCall({target:`${el.PACKAGE_ID_V4}::memez_allowed_versions::get_allowed_versions`,arguments:[t.object(el.MEMEZ_AV_OBJECT_ID)],typeArguments:[]})}os.getAllowedVersions=oc,os.buildBuyTx=async function(e,t){t6()(!await ed.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 on(e,t);t6()(r,"Coin out is required");let a=o.moveCall({target:`${el.PACKAGE_ID_V4}::memez_pump::pump`,typeArguments:[e.outCoinType,oe.P9],arguments:[o.object(e.poolId),r,o.pure.vector("address",[]),o.pure.vector("vector<u8>",[]),o.pure.u64(e.minAmountOut),await oc(o)]});return{tx:o,coinOut:a}},os.buildSellTx=async function(e,t){t6()(e.outCoinType===oe.P9||e.outCoinType===oe.nD,"Output must be SUI");let o=await t4(t,e.poolId),{tx:r,coinData:a}=await or({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[n]=a,[i]=r.moveCall({target:`${el.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 oc(r)]});return await oi(r,e,i)};let ou=require("@interest-protocol/sui-core-sdk"),ol=require("@mysten/sui/grpc");var o_=__webpack_require__("@mysten/sui/jsonRpc");function op(e){switch(e){case"mainnet":return"https://fullnode.mainnet.sui.io:443";case"testnet":return"https://fullnode.testnet.sui.io:443";case"devnet":return"https://fullnode.devnet.sui.io:443";case"localnet":return"http://127.0.0.1:9000";default:throw Error(`Unknown network: ${e}`)}}function od(e){return op(e)}function og(e){return"Transaction"===e.$kind?e.Transaction.digest:e.FailedTransaction.digest}let om={network:ou.Network.MAINNET,fullNodeUrl:op("mainnet")};async function of(){if(!e){let{MemezPumpSDK:t}=await import("@interest-protocol/memez-fun-sdk");e=new t(om)}return e}async function ob(e,t){let{inheritTx:o,sender:r,feeAmount:a,suiInputAmount:n}=e,i=o||new tv.Transaction;a>BigInt(0)&&i.setGasBudget(a);let{objectCoins:s}=await oo(t,r,(BigInt(n||"0")+a).toString(),oe.P9);return i.setGasPayment(s.map(e=>({objectId:e.coinObjectId,version:e.version,digest:e.digest}))),i}(c=eb||(eb={})).getCurveAmountAfterBuy=async function(e){let{suiAmount:t,poolId:o,frontendFee:r}=e;t=t5(t,r);let{memeAmountOut:a}=await (await of()).quotePump({pool:o,amount:t});return a},c.getSuiAmountAfterSell=async function(e){let{curveAmount:t,poolId:o,frontendFee:r}=e,{quoteAmountOut:a}=await (await of()).quoteDump({pool:o,amount:t});return t5(a,r)};var oA=eA||(eA={});async function oI(e,t){let{tx:o,coinOut:r}=await on(e,t);t6()(r,"Coin out is required");let{memeCoin:a,tx:n}=await (await of()).pump({pool:e.poolId,quoteCoin:r,minAmountOut:e.minAmountOut,tx:o});return{tx:n,coinOut:a}}async function oC(e,t){t6()((0,oe.tC)(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await or({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,{quoteCoin:n,tx:i}=await (await of()).dump({pool:e.poolId,memeCoin:a,tx:o,minAmountOut:e.minAmountOut});return await oi(i,e,n)}oA.buildBuyTx=oI,oA.buildSellTx=oC,oA.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,oe.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 eb.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0}),u=BigInt(new(tR())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:l,coinOut:_}=await oI({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()(_,"Coin out is required"),l.transferObjects([_],l.pure.address(n)),l.setSender(n);let p=await t8(s,l,n,0);return(l=await ob({inheritTx:l,sender:n,feeAmount:p,suiInputAmount:e},s)).build({client:s})},oA.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,oe.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 eb.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0}),u=BigInt(new(tR())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:l,coinOut:_}=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()(_,"Coin out is required"),l.transferObjects([_],l.pure.address(n)),l.setSender(n);let p=await t8(s,l,n,0);return(l=await ob({inheritTx:l,sender:n,feeAmount:p},s)).build({client:s})};var oT=((u={}).BLAST_FUN="BLAST_FUN",u.MOONBAGS="MOONBAGS",u);(l=eI||(eI={})).PACKAGE_ID="0xb8df325010942634a4afb3db3901ee215546af43a4ec4af781e7213b0bba7290",l.CONFIG_OBJECT_ID="0x74aecf86067c6913960ba4925333aefd2b1f929cafca7e21fd55a8f244b70499",l.LOCK_CONFIG_OBJECT_ID="0xfb09822d9808980abd04c51321adb850701f5f55535c6206658ef4d910c3e9be",l.BURN_MANAGER_OBJECT_ID="0x1d94aa32518d0cb00f9de6ed60d450c9a2090761f326752ffad06b2e9404f845",l.POOLS_OBJECT_ID="0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0",l.GLOBAL_CONFIG_OBJECT_ID="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",l.FEE_DENOMINATOR=BigInt(1e4),function(e){(t=e.Curves||(e.Curves={})).calculateAddLiquidityCost=function(e,t,o){return e*t/(t-o)-e},t.calculateRemoveLiquidityReturn=function(e,t,o){return t-e*t/(e+o)},t.calculateTokenAmountReceived=function(e,t,o){return t-e*t/(e+o)};var t,o=e.Moonbags||(e.Moonbags={});function r(e){return"fields"in e?e.fields.balance:e.balance}o.getDynamicVirtualTokenReserves=async function(e,t){try{let o=await e.getDynamicField({parentId:t,name:{type:"vector<u8>",bcs:t1.bcs.byteVector().serialize(new TextEncoder().encode("virtual_token_reserves")).toBytes()}});if(!o.dynamicField?.value)return;return BigInt(t1.bcs.u64().parse(o.dynamicField.value.bcs))}catch(e){if("object"==typeof e&&null!==e&&"code"in e&&"dynamicFieldNotFound"===e.code)return;throw e}},o.buyExactInReturnsWithLock=function(t){let{inputAmount:o,amountIn:a,pool:n,config:i,dynamicVirtualTokenReserves:s}=t,c=BigInt(n.virtual_sui_reserves),u=BigInt(n.virtual_token_reserves),l=BigInt(r(n.remain_token_reserves)),_=e.Curves.calculateRemoveLiquidityReturn(c,u,a),p=u-(s||l),d=_,g=a;_>p&&(d=p,g=e.Curves.calculateAddLiquidityCost(c,u,p)+BigInt(1));let m=g*BigInt(i.platform_fee)/eI.FEE_DENOMINATOR;return t6()(o>=g+m,"Input amount is less than used SUI + fee"),{receivedCurve:d,receivedSui:o-g-m}},o.sellReturns=function(t){let{amountIn:o,pool:a,config:n}=t,i=BigInt(a.virtual_sui_reserves),s=BigInt(a.virtual_token_reserves),c=BigInt(r(a.real_sui_reserves)),u=e.Curves.calculateRemoveLiquidityReturn(s,i,o);u>c&&(u=c);let l=u*BigInt(n.platform_fee)/eI.FEE_DENOMINATOR,_=u-l;return{receivedCurve:BigInt(0),receivedSui:_}}}(eC||(eC={})),(_=eT||(eT={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,[n,i,s]=await Promise.all([t4(t,r),t4(t,eI.CONFIG_OBJECT_ID),eC.Moonbags.getDynamicVirtualTokenReserves(t,r)]);void 0!==a&&(o=t5(o,a));let c=o*eI.FEE_DENOMINATOR/(eI.FEE_DENOMINATOR+BigInt(i.platform_fee)),{receivedCurve:u}=eC.Moonbags.buyExactInReturnsWithLock({inputAmount:o,amountIn:c,pool:n,config:i,dynamicVirtualTokenReserves:s});return u},_.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,[n,i]=await Promise.all([t4(t,r),t4(t,eI.CONFIG_OBJECT_ID)]),{receivedSui:s}=eC.Moonbags.sellReturns({amountIn:o,pool:n,config:i});return void 0!==a?t5(s,a):s},_.getUsedSuiForTx=async function(e,t){let{suiAmount:o,frontendFee:r}=e,a=await t4(t,eI.CONFIG_OBJECT_ID);return void 0!==r&&(o=t5(o,r)),o*eI.FEE_DENOMINATOR/(eI.FEE_DENOMINATOR+BigInt(a.platform_fee))};var oS=eS||(eS={});async function oO(e,t){let{tx:o,coinOut:r}=await on(e,t);t6()(r,"Coin out is required");let a=await eT.getUsedSuiForTx({suiAmount:BigInt(e.inputAmount),frontendFee:e.frontendFee},t),[n,i]=o.moveCall({target:`${eI.PACKAGE_ID}::moonbags::buy_exact_in_returns_with_lock`,typeArguments:[e.outCoinType],arguments:[o.object(eI.CONFIG_OBJECT_ID),o.object(eI.LOCK_CONFIG_OBJECT_ID),r,o.pure.u64(a),o.pure.u64(e.minAmountOut),o.object(eI.BURN_MANAGER_OBJECT_ID),o.object(eI.POOLS_OBJECT_ID),o.object(eI.GLOBAL_CONFIG_OBJECT_ID),o.object(oe.IC),o.object(oe.VV)]});return em.transferOrDestroyZeroCoin(o,oe.P9,n,e.accountAddress),{tx:o,coinOut:i}}async function oM(e,t){t6()((0,oe.tC)(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await or({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,[n,i]=o.moveCall({target:`${eI.PACKAGE_ID}::moonbags::sell_returns`,typeArguments:[e.inCoinType],arguments:[o.object(eI.CONFIG_OBJECT_ID),a,o.pure.u64(e.minAmountOut),o.object(oe.VV)]});return em.transferOrDestroyZeroCoin(o,e.inCoinType,i,e.accountAddress),await oi(o,e,n)}oS.buildBuyTx=oO,oS.buildSellTx=oM,oS.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,oe.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 eT.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0},s),u=BigInt(new(tR())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:l,coinOut:_}=await oO({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()(_,"Coin out is required"),l.transferObjects([_],l.pure.address(n)),l.setSender(n);let p=await t8(s,l,n,0);return(l=await ob({inheritTx:l,sender:n,feeAmount:p,suiInputAmount:e},s)).build({client:s})},oS.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,oe.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 eT.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0},s),u=BigInt(new(tR())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:l,coinOut:_}=await oM({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()(_,"Coin out is required"),l.transferObjects([_],l.pure.address(n)),l.setSender(n);let p=await t8(s,l,n,0);return(l=await ob({inheritTx:l,sender:n,feeAmount:p},s)).build({client:s})};var ox=__webpack_require__("./src/libs/pyth.ts"),oE=__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"),oF=__webpack_require__("./src/meta-aggregator/aggregator/aggregator.ts");(p=eO||(eO={})).POOL_REGISTRY_OBJ_ID="0xfcc774493db2c45c79f688f88d28023a3e7d98e4ee9f48bbf5c7990f651577ae",p.PROTOCOL_FEE_VAULT_OBJ_ID="0xf194d9b1bcad972e45a7dd67dd49b3ee1e3357a00a50850c52cd51bb450e13b4",p.TREASURY_OBJ_ID="0x28e499dff5e864a2eafe476269a4f5035f1c16f338da7be18b103499abf271ce",p.INSURANCE_FUND_OBJ_ID="0xf0c40d67b078000e18032334c3325c47b9ec9f3d9ae4128be820d54663d14e3b",p.REFERRAL_VAULT_OBJ_ID="0x35d35b0e5b177593d8c3a801462485572fc30861e6ce96a55af6dc4730709278";var oB=__webpack_require__("./src/meta-aggregator/router/types.ts");(d=eM||(eM={})).LAST_PACKAGE_ID="0xf369250dc5a17e9d5a84a3b0cf5aea715c0682170e726dd601f03ade7ce4decb",d.swap=function(e){t6()(e.protocol===oB.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??d.LAST_PACKAGE_ID}::aftermath_cpmm_router::swap`,typeArguments:[i,s,c],arguments:[o,t.object(r),t.object(eO.POOL_REGISTRY_OBJ_ID),t.object(eO.PROTOCOL_FEE_VAULT_OBJ_ID),t.object(eO.TREASURY_OBJ_ID),t.object(eO.INSURANCE_FUND_OBJ_ID),t.object(eO.REFERRAL_VAULT_OBJ_ID),t.pure.bool(a),t.pure.u64(n)]})},(g=ex||(ex={})).STAKED_SUI_VAULT_OBJ_ID="0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d",g.SAFE_TREASURY_OBJECT_ID="0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610",g.REFERRAL_VAULT_OBJ_ID="0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef",g.VALIDATOR_ADDRESS="0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2",(m=eE||(eE={})).LAST_PACKAGE_ID="0x148c4e7ff5b308b2d520e050e6a21d986dd3eb203e0aa3eaaba28000977aebf1",m.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??m.LAST_PACKAGE_ID}::aftermath_lsd_router::swap`,arguments:[o,t.object(ex.STAKED_SUI_VAULT_OBJ_ID),t.object(ex.SAFE_TREASURY_OBJECT_ID),t.object(ot.SUI_SYSTEM_STATE_OBJECT_ID),t.object(ex.REFERRAL_VAULT_OBJ_ID),t.pure.address(ex.VALIDATOR_ADDRESS),t.pure.bool(r),t.pure.u64(a)]})},(f=eh||(eh={})).LAST_PACKAGE_ID="0x108d5d07cf873dec0bc8034db862db55d38e495c1f3ee0e124cf4861af834f25",f.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??f.LAST_PACKAGE_ID}::alphafi_lsd_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(ot.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.bool(n),t.pure.u64(a)]})},(b=ey||(ey={})).MEMEZ_AV_OBJ_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",b.MEMEZ_FUN_OBJ_ID="0x943948644f06942b8b660ca541b10a05f6a7be23ce4069944a3665e7e698930d",b.IPX_TREASURY_STANDARD_OBJ_ID="0x051e11b667659192917db94e5175fa066909d4dfc04d2663528f499c4afc6999",(A=ew||(ew={})).LAST_PACKAGE_ID="0x8b1e84ed9bc79d31160600254d65810f6bc6d2352f174a60ed041017d0a2a87a",A.swap=function(e){t6()(e.protocol===oB.S.BLASTFUN,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??A.LAST_PACKAGE_ID}::blastfun_router::swap`,typeArguments:[r,a],arguments:[o,t.object(ey.MEMEZ_FUN_OBJ_ID),t.object(ey.IPX_TREASURY_STANDARD_OBJ_ID),t.object(ey.MEMEZ_AV_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(eP||(eP={})).GLOBAL_CONFIG_OBJ_ID="0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",(I=eF||(eF={})).LAST_PACKAGE_ID="0x9f8397124b6bdb55aeb7b5e43761e0e4dc94b9e22e94b1b25d8211d99df422d5",I.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??I.LAST_PACKAGE_ID}::bluefin_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(eP.GLOBAL_CONFIG_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(eB||(eB={})).DEX_INFO_OBJ_ID="0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92",(C=ek||(ek={})).LAST_PACKAGE_ID="0xf52bdd65ee347e8994170f8c331cf0c23a55281b3282467f14ccbb3e2a7f928f",C.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,coinAType:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??C.LAST_PACKAGE_ID}::bluemove_cpmm_router::swap`,typeArguments:[n,i],arguments:[o,t.object(eB.DEX_INFO_OBJ_ID),t.pure.bool(r),t.pure.u64(a)]})},(ev||(ev={})).ORACLE_OBJ_ID="0xfa3975b98f3d0e3df18ed88ae6e69db31836b3f4212df02fae144b1e5a89ca8e",(T=eD||(eD={})).LAST_PACKAGE_ID="0x2dd7b04509f332bdb93a8f228ab5c40b34baee4645b2ebe5e5fa2c3502b2c088",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}::bolt_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(ev.ORACLE_OBJ_ID),t.object(ot.SUI_CLOCK_OBJECT_ID),t.pure.u64(s),t.pure.bool(i)]})},(eR||(eR={})).GLOBAL_CONFIG="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",(S=eL||(eL={})).LAST_PACKAGE_ID="0xb3dbb229464cb14b9f8cfa087e5b162623c8f485395dc9b975e263a5ee7051e4",S.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??S.LAST_PACKAGE_ID}::cetus_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eR.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(O=eU||(eU={})).GLOBAL_CONFIG_OBJ_ID="0xf31b605d117f959b9730e8c07b08b856cb05143c5e81d5751c90d2979e82f599",O.VERSIONED_OBJ_ID="0x05370b2d656612dd5759cbe80463de301e3b94a921dfc72dd9daa2ecdeb2d0a8",(M=eN||(eN={})).LAST_PACKAGE_ID="0x9ab3ba62b4327a7d90e4aed1c025b62736f035911ad7bab830c065ec84ef1ffa",M.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(eU.GLOBAL_CONFIG_OBJ_ID),t.object(eU.VERSIONED_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(ot.SUI_CLOCK_OBJECT_ID)];t.moveCall({target:`${c??M.LAST_PACKAGE_ID}::cetus_dlmm_router::swap`,typeArguments:[i,s],arguments:u})},(x=ej||(ej={})).GLOBAL_CONFIG="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135",x.DEEP_TYPE="0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",(E=eK||(eK={})).LAST_PACKAGE_ID="0xff274b63c0f6e3a01f3dd0e923aefcb3146e05e2f6bef4ae339e2703b085f8ed",E.swap=function(e){t6()(e.protocol===oB.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,l=c||t.moveCall({target:"0x2::coin::zero",typeArguments:[ej.DEEP_TYPE]});t.moveCall({target:`${u??E.LAST_PACKAGE_ID}::deepbook_v3_router::swap`,typeArguments:[r,a],arguments:[o,t.object(ej.GLOBAL_CONFIG),t.object(n),t.pure.u64(s),t.pure.bool(i),l,t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(eG||(eG={})).GLOBAL_OBJ_ID="0x935229a3c32399e9fb207ec8461a54f56c6af5744c64442435ac217ab28f0d59",(h=eq||(eq={})).LAST_PACKAGE_ID="0xfd86c0308327eae31c04560460ee6190220e4ae1cdf5b999eef1110bf0b0f2b8",h.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??h.LAST_PACKAGE_ID}::dip_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(eG.GLOBAL_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(e$||(e$={})).FERRA_GLOBAL_CONFIG_ID="0x2cd8382c19e6994f16df204e9b8cddd04bdc486c251de75ac66ac4e48e3e7081",(y=eV||(eV={})).LAST_PACKAGE_ID="0x70c4318f67d88ebe4e83bacad15f9e2f5c8becd77695f63dc4bd9393730851cd",y.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??y.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")]})},(eY||(eY={})).FERRA_GLOBAL_CONFIG_ID="0x5c9dacf5a678ea15b8569d65960330307e23d429289ca380e665b1aa175ebeca",(w=eJ||(eJ={})).LAST_PACKAGE_ID="0x686e9eb19b04d46374c3fb82cb4ebb7b24ef8a9ae13f403915f4ae347e0f6593",w.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??w.LAST_PACKAGE_ID}::ferra_dlmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(eY.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(P=eH||(eH={})).POOL_REGISTRY_OBJ_ID="0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc",P.VERSIONED_OBJ_ID="0x67624a1533b5aff5d0dfcf5e598684350efd38134d2d245f475524c03a64e656",(F=eX||(eX={})).LAST_PACKAGE_ID="0x350a752d3388165e578cc33a39655a6da83613cf4e58c8d9d0723711c2603e17",F.swap=function(e){t6()(e.protocol===oB.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??F.LAST_PACKAGE_ID}::flowx_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eH.POOL_REGISTRY_OBJ_ID),t.object(eH.VERSIONED_OBJ_ID),t.pure.u64(n),t.pure.u64(i),t.pure.bool(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(eW||(eW={})).CONTAINER_OBJ_ID="0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511",(B=ez||(ez={})).LAST_PACKAGE_ID="0xd95b440ad340bb6cbf571897d312e43d4b6de37b60c69ef714c94b9835cb8866",B.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??B.LAST_PACKAGE_ID}::flowx_cpmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eW.CONTAINER_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(k=eQ||(eQ={})).GLOBAL_CONFIG_OBJ_ID="0xe93baa80cb570b3a494cbf0621b2ba96bc993926d34dc92508c9446f9a05d615",k.REWARDER_VAULT_OBJ_ID="0xfb971d3a2fb98bde74e1c30ba15a3d8bef60a02789e59ae0b91660aeed3e64e1",k.STATS_OBJ_ID="0x6822a33d1d971e040c32f7cc74507010d1fe786f7d06ab89135083ddb07d2dc2",k.PRICE_PROVIDER_OBJ_ID="0x854b2d2c0381bb656ec962f8b443eb082654384cf97885359d1956c7d76e33c9",(v=eZ||(eZ={})).LAST_PACKAGE_ID="0xf0bf13b5baaf3d368f165e846b919294bed79a3ab3ab0c9bd1e75f23533e44a5",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}::fullsail_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(eQ.GLOBAL_CONFIG_OBJ_ID),t.object(eQ.REWARDER_VAULT_OBJ_ID),t.object(eQ.STATS_OBJ_ID),t.object(eQ.PRICE_PROVIDER_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(D=e0||(e0={})).LAST_PACKAGE_ID="0x8969ed3e56c1dbdaf9df52f812d69c6c45fe5a4bab7093c88f5a8697a409398e",D.swap=function(e){t6()(e.protocol===oB.S.HAEDAL_CPMM);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdA:c,pythPriceFeedIdB:u,pythInfoObjectIdMap:l,packageId:_}=e,p=l.get(c),d=l.get(u);t6()(p,"Not found priceInfoAId in pythObjectIdMap"),t6()(d,"Not found priceInfoBId in pythObjectIdMap"),t.moveCall({target:`${_??D.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(ot.SUI_CLOCK_OBJECT_ID)]})},(R=e6||(e6={})).LAST_PACKAGE_ID="0x5d01f22e5471a5912a88e15d62fdcb922beba65b8e8dfe1a715aebf743194f4a",R.swap=function(e){t6()(e.protocol===oB.S.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,_=u.get(c);t6()(_,"Not found pythPriceBaseId in pythObjectIdMap"),t.moveCall({target:`${l??R.LAST_PACKAGE_ID}::haedal_cpmm_v2_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(_),t.pure.u64(s),t.pure.bool(i),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(L=e1||(e1={})).LAST_PACKAGE_ID="0x1644956086caa5eb791eba152f3b69ba862b3a5382ef0e1d8a474ab158aafa1a",L.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,poolId:n,packageId:i}=e;t.moveCall({target:`${i??L.LAST_PACKAGE_ID}::haedal_lsd_router::swap`,arguments:[o,t.object(n),t.object(ot.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.bool(r),t.pure.u64(a)]})},(e4||(e4={})).STAKING_OBJ_ID="0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904",(e3||(e3={})).VALIDATOR_ID="0x7b3ba6de2ae58283f60d5b8dc04bb9e90e4796b3b2e0dea75569f491275242e7",(U=e2||(e2={})).LAST_PACKAGE_ID="0x7be077dd73c85e788c2a49a51f0627066d81d3dc9982c268e3691265a81d544d",U.swap=function(e){t6()(e.protocol===oB.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??U.LAST_PACKAGE_ID}::haedal_wal_lsd_router::swap`,arguments:[o,t.object(e4.STAKING_OBJ_ID),t.object(r),t.pure.id(e3.VALIDATOR_ID),t.pure.bool(a),t.pure.u64(n)]})},(e5||(e5={})).VERSION_OBJ_ID="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78",(N=e8||(e8={})).LAST_PACKAGE_ID="0xcf141e1d18ff609b2ac56532b391f7648fc55e28696efe354186f5109c0eff06",N.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??N.LAST_PACKAGE_ID}::kriya_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(e5.VERSION_OBJ_ID),t.pure.bool(i),t.pure.u64(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(j=e9||(e9={})).LAST_PACKAGE_ID="0x50d37f46df75ef125ce656d4ac91b31b2cf0c1195752a96558561d163e45c223",j.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??j.LAST_PACKAGE_ID}::kriya_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(K=e7||(e7={})).FACTORY_OBJ_ID="0xedb456e93e423dd75a8ddebedd9974bb661195043027e32ce01649d6ccee74cf",K.GLOBAL_CONFIG_OBJ_ID="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(G=te||(te={})).LAST_PACKAGE_ID="0x950f94d33060c0575389c9f84fabab1e140776c6c84389d4237a0c2687a7adc9",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}::magma_almm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(e7.FACTORY_OBJ_ID),t.object(e7.GLOBAL_CONFIG_OBJ_ID),t.pure.u64(s),t.pure.bool(i),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(tt||(tt={})).GLOBAL_CONFIG="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(q=to||(to={})).LAST_PACKAGE_ID="0xbe5f590339c55ca8ebbf93cedfb68aafd479d71e1c57043246f7dcf352745242",q.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??q.LAST_PACKAGE_ID}::magma_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(tt.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})};var ok=__webpack_require__("./src/meta-aggregator/external/metastable.ts");($=tr||(tr={})).LATEST_PACKAGE_ID="0xfab91518218f10204b083dba1e62c8bfc23f14fb87742158043e5faec4670ec4",$.swap=function(e){let t,o,r;t6()(e.protocol===oB.S.METASTABLE,"Invalid protocol");let{txb:a,swapContext:n,aToB:i,amountIn:s,coinAType:c,coinBType:u,poolId:l,metaCoin:_,packageId:p}=e,[d,g]=i?[c,u]:[u,c];d===_?(r="swap_from_meta_coin",t=[_,g],o=[ok.b.createCap({coinType:g,createCapFunc:"create_withdraw_cap",...e})]):g===_?(r="swap_to_meta_coin",t=[_,d],o=[ok.b.createCap({coinType:d,createCapFunc:"create_deposit_cap",...e})]):(r="swap",t=[_,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(l),a.object(ok.b.VERSION_OBJ_ID),...o,a.pure.u64(s)]})},(ta||(ta={})).VERSION_OBJ_ID="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a",(V=tn||(tn={})).LAST_PACKAGE_ID="0xba7ab4c8c39024fa0052bb4f00548a2e7b60742bb4ed0b87bc1d945fd8209102",V.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??V.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(ta.VERSION_OBJ_ID),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(ti||(ti={})).CONFIGURATION_OBJ_ID="0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4",(Y=ts||(ts={})).LAST_PACKAGE_ID="0x5a259db4b1d17fafc09185c9a71bac36f25f9ee462e72894c8610e5a58b79f8f",Y.swap=function(e){t6()(e.protocol===oB.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??Y.LAST_PACKAGE_ID}::movepump_router::swap`,typeArguments:[n?a:r],arguments:[o,t.object(ti.CONFIGURATION_OBJ_ID),t.object(eB.DEX_INFO_OBJ_ID),t.object(ot.SUI_CLOCK_OBJECT_ID),t.pure.u64(s),t.pure.bool(n),t.pure.u64(i)]})},(tc||(tc={})).STATE_OBJ_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",(J=tu||(tu={})).LAST_PACKAGE_ID="0xd615fed37d692280047068e80d3a6bb685aa9d574608054c9df881d6a7378fab",J.swap=function(e){let t,o;t6()(e.protocol===oB.S.OBRIC);let{txb:r,swapContext:a,poolId:n,coinAType:i,coinBType:s,aToB:c,amountIn:u,pythInfoObjectIdMap:l,packageId:_}=e;"priceInfoObjIdA"in e?(t=e.priceInfoObjIdA,o=e.priceInfoObjIdB):(t=l.get(e.pythPriceFeedIdA),o=l.get(e.pythPriceFeedIdB),t6()(t,"Not found priceInfoAId in pythObjectIdMap"),t6()(o,"Not found priceInfoBId in pythObjectIdMap")),r.moveCall({target:`${_??J.LAST_PACKAGE_ID}::obric_router::swap`,typeArguments:[i,s],arguments:[a,r.object(n),r.pure.u64(u),r.pure.bool(c),r.object(tc.STATE_OBJ_ID),r.object(t),r.object(o),r.object(ot.SUI_CLOCK_OBJECT_ID)]})},(H=tl||(tl={})).VERSION_OBJ_ID="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",H.MARKET_OBJ_ID="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",(X=t_||(t_={})).LAST_PACKAGE_ID="0xea409bb08c8a09e4127f859d9c36b8b62ca609282aa1e443091db6b7a7409ee7",X.swap=function(e){t6()(e.protocol===oB.S.SCALLOP);let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,scoinTreasury:s,packageId:c}=e;t.moveCall({target:`${c??X.LAST_PACKAGE_ID}::scallop_router::swap`,typeArguments:[r,a],arguments:[o,t.object(tl.VERSION_OBJ_ID),t.object(tl.MARKET_OBJ_ID),t.object(s),t.pure.u64(i),t.pure.bool(n),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(tp||(tp={})).ORACLE_HOLDER_OBJ_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",(W=td||(td={})).LAST_PACKAGE_ID="0x918a30e2a05d24ea9451e2d2900d055f74e6752f2e10251fa50c7175831b1958",W.swap=function(e){t6()(e.protocol===oB.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:l,pythPriceFeedIdA:_,pythPriceFeedIdB:p,pythInfoObjectIdMap:d,packageId:g}=e,m=d.get(_),f=d.get(p);t6()(m,"Not found priceInfoAId in pythObjectIdMap"),t6()(f,"Not found priceInfoBId in pythObjectIdMap");let b=ox.L.newHolder(t);ox.L.getPrice({txb:t,coinPriceId:_,holder:b,coinOracleId:u}),ox.L.getPrice({txb:t,coinPriceId:p,holder:b,coinOracleId:l}),t.moveCall({target:`${g??W.LAST_PACKAGE_ID}::sevenk_cpmm_router::swap`,typeArguments:[a,n,c],arguments:[o,t.object(r),t.object(tp.ORACLE_HOLDER_OBJ_ID),t.pure.bool(i),t.pure.u64(s)]})},(tg||(tg={})).CONFIGURATION_OBJ_ID="0xe79fff6c77d81f9a8efb729e25bf0037deec42518d40b978f274a4915d7e1ec9",(z=tm||(tm={})).LAST_PACKAGE_ID="0x0a5dc665dc3c1c846a6d1e00811c84cae3510c839ab4dc0873f85dc8908d0606",z.swap=function(e){t6()(e.protocol===oB.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(tg.CONFIGURATION_OBJ_ID),t.object(eW.CONTAINER_OBJ_ID),t.object(ot.SUI_CLOCK_OBJECT_ID),t.pure.bool(r),t.pure.u64(a)]})},(Q=tf||(tf={})).LAST_PACKAGE_ID="0xa6d129c0b314e85d1bc5aecf305d64212bdd5d466457531f4f624fef5f2e7751",Q.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??Q.LAST_PACKAGE_ID}::springsui_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(ot.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.u64(a),t.pure.bool(n)]})},(tb||(tb={})).CONFIG_OBJ_ID="0x881fd0a12ca4fa48991f5c27ba57d17f1ec147fa15f43b3cb760cc3bd7ba9402",(Z=tA||(tA={})).LAST_PACKAGE_ID="0xa314a64962ed4b91a6b4085de4dff2e631fd4c731dbca671a74489955df322ef",Z.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(tb.CONFIG_OBJ_ID),t.pure.bool(a),t.pure.u64(n),t.object("0x6")];t.moveCall({target:`${c??Z.LAST_PACKAGE_ID}::srm_cpmm_router::swap`,typeArguments:[i,s],arguments:u})},(et=(ee=tI||(tI={})).Oracle||(ee.Oracle={})).PACKAGE_ID="0xe84b649199654d18c38e727212f5d8dacfc3cf78d60d0a7fc85fd589f280eb2b",et.getPythPrice=function(e){let{txb:t,oracleRegistryId:o,priceInfoId:r,oracleIndex:a}=e;return t.moveCall({target:`${et.PACKAGE_ID}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(o),t.object(r),t.pure.u64(a),t.object(ot.SUI_CLOCK_OBJECT_ID)]})};var ov=tC||(tC={});function oD(e,t){t6()(e.protocol===oB.S.STEAMM_OMM||e.protocol===oB.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:l,lendingMarketId:_,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 x=tI.Oracle.getPythPrice({txb:o,oracleRegistryId:I,priceInfoId:O,oracleIndex:C}),E=tI.Oracle.getPythPrice({txb:o,oracleRegistryId:I,priceInfoId:M,oracleIndex:T});o.moveCall({target:`${S??ov.LAST_PACKAGE_ID}::${oR(t)}::swap`,typeArguments:[p,n,i,d,g,m],arguments:[r,o.object(a),o.object(u),o.object(l),o.object(_),x,E,o.pure.bool(s),o.pure.u64(c),o.object(ot.SUI_CLOCK_OBJECT_ID)]})}function oR(e){switch(e){case 0:return"steamm_omm_router";case 1:return"steamm_omm_v2_router"}}function oL(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)}ov.LAST_PACKAGE_ID="0xd606880d67c399f349758111a91582d5515f31dd051632402653d872818f594e",ov.swapCpmm=function(e){t6()(e.protocol===oB.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:l,lendingMarketType:_,bCoinAType:p,bCoinBType:d,lpBCoinType:g}=e;t.moveCall({target:`${ov.LAST_PACKAGE_ID}::steamm_cpmm_router::swap`,typeArguments:[_,a,n,p,d,g],arguments:[o,t.object(r),t.object(c),t.object(u),t.object(l),t.pure.bool(i),t.pure.u64(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},ov.swapOmm=function(e){oD(e,0)},ov.swapOmmV2=function(e){oD(e,1)},ov.getOmmRouterModule=oR,(eo=tT||(tT={})).LAST_PACKAGE_ID="0x7a1cf89025a60161e84809784d772263231fad08a7cb76a88ca1ba69e0a656da",eo.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??eo.LAST_PACKAGE_ID}::suiswap_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(er=tS||(tS={})).VERSIONED="0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676",er.POOL_REGISTRY="0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd",(ea=tO||(tO={})).LAST_PACKAGE_ID="0x79957062a7424ed9c2eb83932e4c4fcc3fee67ab3c8f6f874c54e417178bbb7a",ea.swap=function(e){t6()(e.protocol===oB.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??ea.LAST_PACKAGE_ID}::tradeport_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(tS.POOL_REGISTRY),t.pure.u64(s),t.object(tS.VERSIONED),t.pure.bool(n),t.pure.u64(i),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(tM||(tM={})).POOL_VERSIONED="0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f",(en=tx||(tx={})).LAST_PACKAGE_ID="0x512d63711ff38353fb167238b0529001b6871c1727c67ce3bf6ec23556b0f1da",en.swap=function(e){t6()(e.protocol===oB.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??en.LAST_PACKAGE_ID}::turbos_clmm_router::swap`,typeArguments:[r,a,n],arguments:[o,t.object(i),t.object(tM.POOL_VERSIONED),t.pure.bool(s),t.pure.u64(c),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(tE||(tE={})).CONFIGURATION_OBJ_ID="0xd86685fc3c3d989385b9311ef55bfc01653105670209ac4276ebb6c83d7df928",(ei=th||(th={})).LAST_PACKAGE_ID="0x1fad13f09797aa87a4385d0b1efb2de963ba16742447b1ad5a3b0c5b1d1c588b",ei.swap=function(e){t6()(e.protocol===oB.S.TURBOS_FUN,"Invalid protocol");let{txb:t,swapContext:o,coinBType:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??ei.LAST_PACKAGE_ID}::turbos_fun_router::swap`,typeArguments:[r],arguments:[o,t.object(tE.CONFIGURATION_OBJ_ID),t.object(ot.SUI_CLOCK_OBJECT_ID),t.pure.bool(a),t.pure.u64(n)]})},(ty||(ty={})).VOLO_CERT_METADATA_ID="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",(es=tw||(tw={})).LAST_PACKAGE_ID="0x7c8d95256342f904d5f251776903a17905d87c95f387b3a35cc2aecc23b3c042",es.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??es.LAST_PACKAGE_ID}::volo_router::swap`,arguments:[o,t.object(r),t.object(ty.VOLO_CERT_METADATA_ID),t.object(ot.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.bool(a),t.pure.u64(n)]})},(ec=tP||(tP={})).RouterSwapFunctionMap={[oB.S.AFTERMATH_CPMM]:eM.swap,[oB.S.AFTERMATH_LSD]:eE.swap,[oB.S.ALPHAFI_LSD]:eh.swap,[oB.S.BLASTFUN]:ew.swap,[oB.S.BLUEFIN_CLMM]:eF.swap,[oB.S.BLUEMOVE_CPMM]:ek.swap,[oB.S.BOLT]:eD.swap,[oB.S.CETUS_CLMM]:eL.swap,[oB.S.CETUS_DLMM]:eN.swap,[oB.S.DEEPBOOK_V3]:eK.swap,[oB.S.DIP_CPMM]:eq.swap,[oB.S.FERRA_CLMM]:eV.swap,[oB.S.FERRA_DLMM]:eJ.swap,[oB.S.FLOWX_CPMM]:ez.swap,[oB.S.FLOWX_CLMM]:eX.swap,[oB.S.FULLSAIL_CLMM]:eZ.swap,[oB.S.HAEDAL_CPMM]:e0.swap,[oB.S.HAEDAL_CPMM_V2]:e6.swap,[oB.S.HAEDAL_LSD]:e1.swap,[oB.S.HAEDAL_LSD_WAL]:e2.swap,[oB.S.KRIYA_CLMM]:e8.swap,[oB.S.KRIYA_CPMM]:e9.swap,[oB.S.MAGMA_ALMM]:te.swap,[oB.S.MAGMA_CLMM]:to.swap,[oB.S.METASTABLE]:tr.swap,[oB.S.MOMENTUM_CLMM]:tn.swap,[oB.S.MOVEPUMP]:ts.swap,[oB.S.OBRIC]:tu.swap,[oB.S.SCALLOP]:t_.swap,[oB.S.SEVENK_CPMM]:td.swap,[oB.S.SEVENK_FUN]:tm.swap,[oB.S.SPRINGSUI]:tf.swap,[oB.S.SRM_CPMM]:tA.swap,[oB.S.STEAMM_CPMM]:tC.swapCpmm,[oB.S.STEAMM_OMM]:tC.swapOmm,[oB.S.STEAMM_OMM_V2]:tC.swapOmmV2,[oB.S.SUISWAP_CPMM]:tT.swap,[oB.S.TRADEPORT_CLMM]:tO.swap,[oB.S.TURBOS_CLMM]:tx.swap,[oB.S.TURBOS_FUN]:th.swap,[oB.S.VOLO]:tw.swap},ec.swap=function(e){(0,ec.RouterSwapFunctionMap[e.protocol])(e)},(tF||(tF={})).buildAggregatorSwapTransaction=async function(e){let{tx:t,coinOutType:o,tradePaths:r,pythConnections:a,pythClient:n,packageIdMap:i}=e,s=oF.u.openSwap(e),c=await ox.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];tP.swap({...o,txb:t,swapContext:s,amountIn:o.amountIn,coinAType:a,coinBType:n,packageId:i?.get(o.protocol),pythInfoObjectIdMap:c})}return oF.u.closeSwap({tx:t,coinOutType:o,swapSession:s})};let oj=ox.j.newPythConnections(),oK=ox.j.newPythClient();var oG=tB||(tB={});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=tL.m.convert(s.rawRoute);break;default:throw Error("Unsupported source route")}let c=oN(i.aggregatorFeeRatePercent),u=i.partnerFeeRatePercent?oN(i.partnerFeeRatePercent):void 0,l=i.expectedAmountOut??oL({amountOut:a.amountOut,aggregatorFeeBps:c,partnerFeeBps:u}),_=(o=l,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:l,minAmountOut:_,aggregatorFeeBps:c,partnerFeeBps:u,pythConnections:i.pythConnections??oj,pythClient:i.pythClient??oK}}oG.toMetaAggregatorBuildTxParams=oq,oG.buildTx=function(e){let t=oq(e);return tF.buildAggregatorSwapTransaction(t)};let o$=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))}),oV=(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)}},oY={SEVENK:{},FLOWX:{},CETUS:{}};class oJ{client;jsonRpcClient;providers={};options;constructor(e){this.options={providers:{...oY,...e?.providers},clients:e.clients,slippageBps:e?.slippageBps??100,hermesApi:e?.hermesApi??ox.j.PYTH_URLS,partner:e?.partner??oe.qb,partnerCommissionBps:e?.partnerCommissionBps??0,tipBps:e?.tipBps??0},this.client=e.clients.grpc,this.jsonRpcClient=e.clients.jsonRpc}async getQuoteClient(e){let t=this.providers[e];if(t)return t;let o=this.options.providers[e];switch(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 o$(async()=>{let o=await e.quote(t);return o?(o.amountOut=oL({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,ot.normalizeStructTag)(e.coinTypeIn),coinTypeOut:(0,ot.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,ot.normalizeSuiAddress)(o);ow.u.assert((0,ot.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!==oe.qb?this.options.partner:void 0,u=c&&this.options.partnerCommissionBps>0?this.options.partnerCommissionBps/1e4:void 0;return tB.buildTx({buildTxParam:{tx:r,inputCoin:a,expectedAmountOut:t.amountOut,slippagePercent:s,aggregatorFeeRatePercent:this.options.tipBps/1e4,aggregatorFeeRecipient:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff",partnerFeeRatePercent:u,partnerFeeRecipient:c,pythConnections:ox.j.newPythConnections(this.options.hermesApi),pythClient:ox.j.newPythClient(this.jsonRpcClient)},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},oX=new Set([tW.SEVENK,tW.CETUS,tW.FLOWX]);function oW(e){let t=Object.values(tW);return e?t.filter(e=>oX.has(e)):t}class oz{sdk;_astrosAggregator;_aftermathAggregator;_sevenkAggregator;_cetusAggregator;_flowXAggregator;constructor(e){this.sdk=e,this._astrosAggregator=new t$({defaultTradeFee:e.options.tradeFee,astrosApiKey:e.options.astrosApiKey},e.suiJsonRpcClient),this._aftermathAggregator=new tq({defaultTradeFee:e.options.tradeFee,aftermathApiKey:e.options.aftermathApiKey,aftermathApiEndpoint:e.options.aftermathApiEndpoint},e.suiJsonRpcClient),this._sevenkAggregator=new tN({defaultTradeFee:e.options.tradeFee,sevenKApiKey:e.options.sevenKApiKey},e.suiClient),this._cetusAggregator=new tX({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 tW.ASTROS:{let e,r=await this._astrosAggregator.getTradeRoute(t);if(!r)return null;let a=t$.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(tR())(r.amount_out).multipliedBy(1-e).toFixed(0,3)),o={route:a,aggregatorRoute:r};break}case tW.AFTERMATH:{let e=await this._aftermathAggregator.getTradeRoute(t);if(!e)return null;let r=tq.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case tW.SEVENK:{let e=await this._sevenkAggregator.getTradeRoute(t);if(!e)return null;let r=tN.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case tW.CETUS:{let e=await this._cetusAggregator.getTradeRoute(t);if(!e)return null;let r=tX.toCommonTradeRoutes(e,t.coinInType,t.coinOutType);if(!r)return null;o={route:r,aggregatorRoute:e};break}case tW.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 tW.ASTROS:return this._astrosAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case tW.AFTERMATH:return this._aftermathAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage});case tW.SEVENK:return this._sevenkAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});case tW.CETUS:return this._cetusAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});case tW.FLOWX:return this._flowXAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator})}}async getTradeTransaction(e,t){let o=await this.getTradeRoute(e,{coinInAmount:t.coinInAmount,coinInType:t.coinInType,coinOutType:t.coinOutType,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});if(!o)return null;let r=await this.getTransactionByRoute(e,{walletAddress:t.walletAddress,completeRoute:o.aggregatorRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});return{route:o.route,aggregatorRoute:o.aggregatorRoute,transaction:r}}async getTradeTransactionWithBestRate(e){let t=oW(e.metaAggregator),o=await Promise.all(t.map(async t=>{try{return await this.getTradeRoute(t,e)}catch{return null}})),r=null,a=null;for(let e=0;e<o.length;e++){let n=o[e],i=t[e];if(n&&(!r||n.route.amountOut>r.route.amountOut)){r=n,a=i;continue}}if(!r||!a)return null;let n=await this.getTransactionByRoute(a,{walletAddress:e.walletAddress,completeRoute:r.aggregatorRoute,slippage:e.slippage,tradeFee:e.tradeFee,metaAggregator:e.metaAggregator});return{route:r.route,aggregatorRoute:r.aggregatorRoute,transaction:n}}async getAmountOut(e,t){let o=await this.getTradeRoute(e,t);return o?o.route.amountOut:null}async getBestAmountOut(e){let t=oW(e.metaAggregator),o=null,r=null;for(let a of t){let t=await this.getAmountOut(a,e);null!==t&&(null===o||t>o)&&(o=t,r=a)}return null===o||null===r?null:{amountOut:o,aggregator:r}}}let oQ="0x25fa0eb553dd69fa6a8028f73a38f1df7f289fa88a58ed3d7dc5a5360155bb19",oZ="0x8b1a8ac6e34688cd8f8f8e5fefa9d5fb9e1ff74d2f132f8e208ae5ac9cc530bb",o0="0x13d101f44a0710a5475bec5f492a87b80e03d92d1cf540f26096f65850b23d26";class o6{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({objectId:oZ,include:{json:!0}});t6()(e.object,"Config object not found"),t6()(e.object.json,"Config object has no content");let t=e.object.json,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 tv.Transaction,s=i.splitCoins(i.gas,[i.pure.u64(n)]);i.moveCall({target:`${oQ}::boosting::pay`,typeArguments:[(0,ot.normalizeStructTag)(o)],arguments:[i.object(oZ),i.pure.u64(t),s]}),i.setSender(e);let c=await t8(this.sdk.suiClient,i,e,0);return ob({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 tv.Transaction;s.moveCall({target:`${oQ}::config::add_tier`,typeArguments:[],arguments:[s.object(oZ),s.object(o0),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 t8(this.sdk.suiClient,s,e,0);return ob({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 tv.Transaction;s.moveCall({target:`${oQ}::config::update_tier`,typeArguments:[],arguments:[s.object(oZ),s.object(o0),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 t8(this.sdk.suiClient,s,e,0);return ob({inheritTx:s,sender:e,feeAmount:c},this.sdk.suiClient)}async buildRemoveTierTx({adminAddress:e,tierId:t,currentTx:o}){let r=o||new tv.Transaction;r.moveCall({target:`${oQ}::config::remove_tier`,typeArguments:[],arguments:[r.object(oZ),r.object(o0),r.pure.u64(t)]}),r.setSender(e);let a=await t8(this.sdk.suiClient,r,e,0);return ob({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiver({adminAddress:e,newReceiverAddress:t,currentTx:o}){let r=o||new tv.Transaction;r.moveCall({target:`${oQ}::config::update_fee_receiver`,typeArguments:[],arguments:[r.object(oZ),r.object(o0),r.pure.address(t)]}),r.setSender(e);let a=await t8(this.sdk.suiClient,r,e,0);return ob({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 tv.Transaction,i=n.splitCoins(n.gas,[n.pure.u64(o)]);n.moveCall({target:`${oQ}::boosting::pay_with_admin`,typeArguments:[(0,ot.normalizeStructTag)(r)],arguments:[n.object(o0),n.object(oZ),n.pure.u64(t),n.pure.u64(o),i]}),n.setSender(e);let s=await t8(this.sdk.suiClient,n,e,0);return ob({inheritTx:n,sender:e,feeAmount:s},this.sdk.suiClient)}}class o1{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,oe.tC)(o)||(0,oe.tC)(r),"One of coinInType or coinOutType must be SUI");let a=(0,oe.tC)(o);switch(e){case oT.MOONBAGS:if(a)return await eT.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);return await eT.getSuiAmountAfterSell({poolId:t.poolId,curveAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);case oT.BLAST_FUN:if(a)return await eb.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});return await eb.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,oe.tC)(r)||(0,oe.tC)(a),"One of coinInType or coinOutType must be SUI");let n=(0,oe.tC)(r);switch(e){case oT.MOONBAGS:o=n?await eS.getBuyTransaction(t,this.sdk.suiClient):await eS.getSellTransaction(t,this.sdk.suiClient);break;case oT.BLAST_FUN:o=n?await eA.getBuyTransaction(t,this.sdk.suiClient):await eA.getSellTransaction(t,this.sdk.suiClient);break;default:throw Error(`Unsupported bonding curve platform: ${e}`)}return o}}let o4={prod:{packageId:"0x3dd678c250a667f1551bc4b9e35fd070896f4775dd2900d5cb2910d2aea0b068",configId:"0x3eb7bd15f61b7cc1a9fd36151e9c3d05aa37bfadb0a58c3a26a6c02c2e99f3ca",adminCapId:"0xf375fcb3d95934143766cab2028ab49441fa04ef2ce27c08c01004c455bcbad4",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"},staging:{packageId:"0xa83cd093ce5142649adae10d21fe87d55fa2df4e52a4292c77ba039bb12bfe67",configId:"0x19fb8f91946e58c068fa4238bdd7a531216a0c4dcfaa279a8a02c60cb02f6711",adminCapId:"0xd8139544d054702dfab6de4e9c55f162c8a6f30465935af56cffed99c5e1c2bd",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"}};class o3{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({objectId:o4[this.sdk.env].configId,include:{json:!0}});t6()(e.object,"Config object not found"),t6()(e.object.json,"Config object has no content");let t=e.object.json,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=o4[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 or({account:e,amount:s.toString(),splits:[s.toString()],coinType:r,inheritTx:a},this.sdk.suiClient);c.moveCall({target:`${o4[this.sdk.env].packageId}::subscription::subscribe_cycle_plan`,typeArguments:[r],arguments:[c.object(o4[this.sdk.env].configId),c.pure.u64(t),c.pure.string(o),u]}),c.setSender(e);let l=await t8(this.sdk.suiClient,c,e,0);return ob({inheritTx:c,sender:e,feeAmount:l},this.sdk.suiClient)}async buildBuyMoreCUPlanTx({walletAddress:e,planId:t,reference:o,paidAmount:r,paymentCoinType:a=o4[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 or({account:e,amount:r.toString(),splits:[r.toString()],coinType:a,inheritTx:n},this.sdk.suiClient);s.moveCall({target:`${o4[this.sdk.env].packageId}::subscription::buy_more_cu`,typeArguments:[a],arguments:[s.object(o4[this.sdk.env].configId),s.pure.u64(t),s.pure.string(o),s.pure.u64(r),c]}),s.setSender(e);let u=await t8(this.sdk.suiClient,s,e,0);return ob({inheritTx:s,sender:e,feeAmount:u},this.sdk.suiClient)}async buildSubscribePlanWithAdminTx({walletAddress:e,planId:t,reference:o,customAmount:r,paymentCoinType:a=o4[this.sdk.env].paymentCoinType,currentTx:n}){let i=await this.getConfig();t6()(!i.paused,"Contract is paused");let{tx:s,coinData:c}=await or({account:e,amount:r.toString(),splits:[r.toString()],coinType:a,inheritTx:n},this.sdk.suiClient);s.moveCall({target:`${o4[this.sdk.env].packageId}::subscription::subscribe_plan_with_admin`,typeArguments:[a],arguments:[s.object(o4[this.sdk.env].adminCapId),s.object(o4[this.sdk.env].configId),s.pure.u64(t),s.pure.string(o),s.pure.u64(r),c]}),s.setSender(e);let u=await t8(this.sdk.suiClient,s,e,0);return ob({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 tv.Transaction;i.moveCall({target:`${o4[this.sdk.env].packageId}::config::add_plan`,typeArguments:[],arguments:[i.object(o4[this.sdk.env].configId),i.object(o4[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 t8(this.sdk.suiClient,i,e,0);return ob({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 tv.Transaction;i.moveCall({target:`${o4[this.sdk.env].packageId}::config::update_plan`,typeArguments:[],arguments:[i.object(o4[this.sdk.env].configId),i.object(o4[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 t8(this.sdk.suiClient,i,e,0);return ob({inheritTx:i,sender:e,feeAmount:s},this.sdk.suiClient)}async buildRemovePlanTx({adminAddress:e,planId:t,currentTx:o}){let r=o||new tv.Transaction;r.moveCall({target:`${o4[this.sdk.env].packageId}::config::remove_plan`,typeArguments:[],arguments:[r.object(o4[this.sdk.env].configId),r.object(o4[this.sdk.env].adminCapId),r.pure.u64(BigInt(t))]}),r.setSender(e);let a=await t8(this.sdk.suiClient,r,e,0);return ob({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiverWalletTx({adminAddress:e,newFeeReceiverWallet:t,currentTx:o}){let r=o||new tv.Transaction;r.moveCall({target:`${o4[this.sdk.env].packageId}::config::update_fee_receiver`,typeArguments:[],arguments:[r.object(o4[this.sdk.env].configId),r.object(o4[this.sdk.env].adminCapId),r.pure.address(t)]}),r.setSender(e);let a=await t8(this.sdk.suiClient,r,e,0);return ob({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildSetPausedTx({adminAddress:e,paused:t,currentTx:o}){let r=o||new tv.Transaction;r.moveCall({target:`${o4[this.sdk.env].packageId}::config::set_paused`,typeArguments:[],arguments:[r.object(o4[this.sdk.env].configId),r.object(o4[this.sdk.env].adminCapId),r.pure.bool(t)]}),r.setSender(e);let a=await t8(this.sdk.suiClient,r,e,0);return ob({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildSetAcceptedPaymentTypeTx({adminAddress:e,paymentCoinType:t,currentTx:o}){let r=o||new tv.Transaction;r.moveCall({target:`${o4[this.sdk.env].packageId}::config::set_accepted_payment_type`,typeArguments:[t],arguments:[r.object(o4[this.sdk.env].configId),r.object(o4[this.sdk.env].adminCapId)]}),r.setSender(e);let a=await t8(this.sdk.suiClient,r,e,0);return ob({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}}class o2{network;env;_suiClient;boostingModule;subscriptionModule;constructor(e,t="mainnet",o="prod"){this.network=t,this.env=o,this._suiClient=e,this.subscriptionModule=new o3(this),this.boostingModule=new o6(this)}get suiClient(){return this._suiClient}}let o5={tradeFeePercent:.01,tradeFeeRecipientAddress:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff"};class o8{network;env;options;_suiGrpcClient;_suiJsonRpcClient;aggregatorModule;curveModule;constructor(e,t="mainnet",o="prod"){this.options=e,this.network=t,this.env=o,this._suiGrpcClient=e.clients.grpc,this._suiJsonRpcClient=e.clients.jsonRpc,this.aggregatorModule=new oz(this),this.curveModule=new o1(this)}get suiClient(){return this._suiGrpcClient}get suiJsonRpcClient(){return this._suiJsonRpcClient}}let o9=require("@mysten/sui/keypairs/ed25519"),o7=.1;class re{suiClient;constructor(e){this.suiClient=e}validatePrivateKey(e,t){t6()(e?.trim(),"Private key is required");let o=o9.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 tv.Transaction,[a]=r.splitCoins(r.gas,[o]);r.transferObjects([a],t),r.setSender(e);let{referenceGasPrice:n}=await this.suiClient.getReferenceGasPrice();r.setGasPrice(n);let i=await t8(this.suiClient,r,e,o7);r=await ob({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,ot.fromBase64)(e.txDraftBase64),{signature:a}=await o.signTransaction(r),n=await this.suiClient.executeTransaction({transaction:r,signatures:[a],include:{effects:!0}}),i="Transaction"===n.$kind?n.Transaction:n.FailedTransaction,{status:s}=i;return{success:s.success,txDigest:i.digest,effects:i.effects,error:s.success?void 0:s.error.message}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Unknown error occurred"}}}async getTransactionStatus(e){t6()(e?.trim(),"Transaction digest is required");try{let t=await this.suiClient.getTransaction({digest:e,include:{effects:!0}}),o="Transaction"===t.$kind?t.Transaction:t.FailedTransaction;if(!o.effects?.status)return"pending";return o.effects.status.success?"success":"failure"}catch(e){if(e instanceof Error&&(e.message.includes("not found")||e.message.includes("Could not find")))return"pending";return"failure"}}}})(),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.SuiGrpcClient=__webpack_exports__.SuiGrpcClient,exports.SuiJsonRpcClient=__webpack_exports__.SuiJsonRpcClient,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.addGasFee=__webpack_exports__.addGasFee,exports.checkIsSui=__webpack_exports__.checkIsSui,exports.denormalizeTokenType=__webpack_exports__.denormalizeTokenType,exports.getAmountAfterFee=__webpack_exports__.getAmountAfterFee,exports.getCoinObjectIdsByAmount=__webpack_exports__.getCoinObjectIdsByAmount,exports.getExpectedReturn=__webpack_exports__.getExpectedReturn,exports.getGrpcFullnodeUrl=__webpack_exports__.getGrpcFullnodeUrl,exports.getJsonRpcFullnodeUrl=__webpack_exports__.getJsonRpcFullnodeUrl,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.getTransactionResultDigest=__webpack_exports__.getTransactionResultDigest,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","SuiGrpcClient","SuiJsonRpcClient","SupportedAggregator","SupportedBondingCurve","TradeFeeOptions","TradeportClmm","TurbosClmm","TurbosFun","USDC_TOKEN_TYPE","Volo","Walrus","addGasFee","checkIsSui","denormalizeTokenType","getAmountAfterFee","getCoinObjectIdsByAmount","getExpectedReturn","getGrpcFullnodeUrl","getJsonRpcFullnodeUrl","getMemezPumpSDK","getMoveObject","getMoveObjectContent","getNeededGasFee","getSplitCoinForTx","getSplitCoinsAfterFee","getTransactionResultDigest","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:()=>l});let r="0x2::sui::SUI",a="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",n="0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",i="0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",s="0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",c="0x0000000000000000000000000000000000000000000000000000000000000006",u="0x0000000000000000000000000000000000000000000000000000000000000000";function l(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/jsonRpc"),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.SuiJsonRpcClient({network:"mainnet",url:(0,s.getJsonRpcFullnodeUrl)("mainnet")})),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:l,partnerFeeBps:_}=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(_??0),t.pure.option("address",l)]});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 l(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=l,e.convert=function(e){return{coinInType:e.paths[0].from,coinOutType:e.paths[e.paths.length-1].target,amountOut:e.amountOut.toString(),tradePaths:l(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":{(void 0===o||o.length<2)&&console.error("[FlowXAggregatorConverter][STEAMM_OMM] Missing oracle price feeds",{reason:"oracles is undefined or has less than 2 entries",...n(t)}),i()(void 0!==o&&o.length>=2,`STEAMM_OMM protocol requires oracle price feeds for pool ${t.pool.id}.`);let e=o[0],s=o[1],u=[void 0===e.oracleIndex?"oracles[0].oracleIndex":void 0,void 0===s.oracleIndex?"oracles[1].oracleIndex":void 0].filter(e=>void 0!==e);return u.length>0&&console.error("[FlowXAggregatorConverter][STEAMM_OMM] Missing oracle indexes",{reason:"STEAMM OMM requires oracleIndex for both oracle entries",missingFields:u,...n(t)}),i()(void 0!==e.oracleIndex&&void 0!==s.oracleIndex,`STEAMM_OMM protocol requires oracle indexes for pool ${t.pool.id}.`),{...r,aToB:a,protocol:"oracle_v2"===t.quoterType?c.S.STEAMM_OMM_V2: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:s.priceId,oracleRegistryId:t.protocolConfig.oracleRegistryId,oracleIndexA:e.oracleIndex.toString(),oracleIndexB:s.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((t,r)=>{try{return e.toMetaAggregatorPath(t)}catch(e){throw console.error("[FlowXAggregatorConverter] Failed to convert FlowX swap route",{routeIndex:r,routeCount:o.length,poolId:t.pool.id,protocol:t.protocol(),coinInType:t.input.coinType,coinOutType:t.output.coinType,amountIn:t.amountIn.toString(),amountOut:t.amountOut.toString(),error:e}),e}});for(let e of r.values())a[e].amountIn=s.u.MAX_AMOUNT_IN;return a}function n(e){return{poolId:e.pool.id,quoterType:e.quoterType,xForY:e.xForY,coinInType:e.input.coinType,coinOutType:e.output.coinType,amountIn:e.amountIn.toString(),amountOut:e.amountOut.toString(),oracleCount:e.oracles?.length??0,oracles:e.oracles?.map((e,t)=>({index:t,priceId:e.priceId,oracleId:e.oracleId,oracleIndex:e.oracleIndex,hasPriceId:void 0!==e.priceId&&""!==e.priceId,hasOracleId:void 0!==e.oracleId&&""!==e.oracleId,hasOracleIndex:void 0!==e.oracleIndex})),protocolConfig:{oracleRegistryId:e.protocolConfig?.oracleRegistryId,hasOracleRegistryId:e.protocolConfig?.oracleRegistryId!==void 0},bankXInfo:e.bankXInfo,bankYInfo:e.bankYInfo,poolInfo:e.poolInfo,poolStructTag:e.poolStructTag}}e.toMetaAggregatorBasePath=e=>({poolId:e.pool.id,coinInType:e.input.coinType,coinOutType:e.output.coinType,amountIn:e.amountIn.toString()}),e.toMetaAggregatorPath=e=>{let r=e.protocol();if(t.includes(r))throw Error(`Unsupported protocol: ${r}`);return(0,o[r])(e)},e.toMetaAggregatorPaths=r,e.convert=function(e){return{coinInType:e.coinIn.coinType,coinOutType:e.coinOut.coinType,amountOut:e.amountOut.toString(),tradePaths:r(e.routes)}}}(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","RFQ"]);e.SUPPORTED_PROTOCOLS=["suiswap","turbos","cetus","bluemove","kriya","kriya_v3","aftermath","deepbook_v3","flowx","flowx_v3","bluefin","springsui","obric","stsui","steamm","steamm_oracle_quoter","steamm_oracle_quoter_v2","magma","haedal_pmm","momentum","sevenk_v1","fullsail","cetus_dlmm","ferra_dlmm","ferra_clmm"];let o={aftermath:e=>{n()(e.extra?.poolStructTag,"Aftermath protocol requires poolStructTag");let[t]=_(e.extra.poolStructTag);return{...l(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{...l(e),protocol:u.S.FLOWX_CLMM,poolFeeRate:t}},turbos:e=>{n()(e.extra?.poolStructTag,"turbos protocol requires poolStructTag");let[t,o,r]=_(e.extra.poolStructTag);return{...l(e),protocol:u.S.TURBOS_CLMM,coinFeeType:r}},obric:e=>(n()(e.extra?.oracles,"obric protocol requires oracles"),{...l(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"),{...l(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]=_(e.extra.poolStructTag);return{...l(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]=_(e.extra.poolStructTag),[i,s,c]=_(e.extra.bankAStructTag);return{...l(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]=_(e.extra?.poolStructTag),[i,s,c]=_(e.extra.bankAStructTag),[d,g]=e.extra.oracleIndexes;return{...l(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]=_(e.extra?.poolStructTag),[i,s,c]=_(e.extra.bankAStructTag),[d,g]=e.extra.oracleIndexes;return{...l(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=>({...l(e),protocol:u.S.CETUS_CLMM}),bluemove:e=>({...l(e),protocol:u.S.BLUEMOVE_CPMM}),kriya:e=>({...l(e),protocol:u.S.KRIYA_CPMM}),kriya_v3:e=>({...l(e),protocol:u.S.KRIYA_CLMM}),deepbook_v3:e=>({...l(e),protocol:u.S.DEEPBOOK_V3}),flowx:e=>({...l(e),protocol:u.S.FLOWX_CPMM}),bluefin:e=>({...l(e),protocol:u.S.BLUEFIN_CLMM}),springsui:e=>({...l(e),protocol:u.S.SPRINGSUI}),magma:e=>({...l(e),protocol:u.S.MAGMA_CLMM}),momentum:e=>({...l(e),protocol:u.S.MOMENTUM_CLMM}),fullsail:e=>({...l(e),protocol:u.S.FULLSAIL_CLMM}),stsui:e=>({...l(e),protocol:u.S.ALPHAFI_LSD}),suiswap:e=>({...l(e),protocol:u.S.SUISWAP_CPMM}),cetus_dlmm:e=>({...l(e),protocol:u.S.CETUS_DLMM}),ferra_dlmm:e=>({...l(e),protocol:u.S.FERRA_DLMM}),ferra_clmm:e=>({...l(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 l(e){return{poolId:e.poolId,coinInType:e.assetIn,coinOutType:e.assetOut,amountIn:e.amount,aToB:e.swapXtoY}}function _(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:l,createCapPackageId:_,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=l.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=l.get(e.pythPriceFeedIdMeta);s()(r,"Not found priceId in pythObjectIdMap");let a=l.get(e.pythPriceFeedIdEth);s()(a,"Not found priceEthFeedId in pythObjectIdMap"),t=[o.object(i),o.object(u),o.object(r),o.object(a),o.object(c.SUI_CLOCK_OBJECT_ID)];break}default:throw Error("Invalid MetaCoin: "+a.toString())}return o.moveCall({target:`${_}::${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/jsonRpc"(e){e.exports=require("@mysten/sui/jsonRpc")},"@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(()=>{let e;__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ADMIN_CAP_ID:()=>o0,AftermathAggregator:()=>tq,AftermathCpmm:()=>eO,AftermathLsd:()=>ex,AggregatorConverter:()=>tB,AggregatorModule:()=>oz,AggregatorProtocol:()=>oB.S,AstrosAggregator:()=>tV,BASE_BPS:()=>1e4,BLUEFIN_PACKAGE_ID:()=>oa,BOOSTING_PACKAGE_ID:()=>oQ,BlastFunConstants:()=>el,BlastFunCustomCalculation:()=>eg,BlastFunCustomTransaction:()=>ef,BlastFunPackage:()=>ed,BlastFunSDKCalculation:()=>eb,BlastFunSDKTransaction:()=>eA,Blastfun:()=>ey,Bluefin7kClient:()=>oh.Bluefin7kClient,BluefinClmm:()=>eP,BluefinTx:()=>em,BluemoveCpmm:()=>eB,Bolt:()=>ev,BoostingModule:()=>o6,Bps:()=>ep,CLOCK_OBJECT_ID:()=>oe.VV,CONFIG_ID:()=>oZ,CetusAggregator:()=>tX,CetusAggregatorConverter:()=>tH.M,CetusClient:()=>oy.CetusClient,CetusClmm:()=>eR,CetusDlmm:()=>eU,CurveModule:()=>o1,DEFAULT_TRADE_FEE:()=>o5,DeepbookV3:()=>ej,DipCpmm:()=>eG,DraftTransferTx:()=>re,FerraClmm:()=>eV,FerraDlmm:()=>eY,FlowXAggregator:()=>tZ,FlowXAggregatorConverter:()=>tQ.m,FlowxClient:()=>oP.FlowxClient,FlowxCpmm:()=>eW,FullsailClmm:()=>eQ,HaedalLsdWal:()=>e3,KriyaClmm:()=>e5,MagmaAlmm:()=>e7,MagmaClmm:()=>tt,MathUtils:()=>e_,MetaAgError:()=>ow.u,MetaAgErrorCode:()=>ow.j,MetaAggregator:()=>tF,MetaClient:()=>oJ,Metastable:()=>ok.b,MomentumClmm:()=>ta,MoonbagsCalculation:()=>eT,MoonbagsConstants:()=>eI,MoonbagsPackage:()=>eC,MoonbagsTransaction:()=>eS,Movepump:()=>ti,NATIVE_USDC_TOKEN_TYPE:()=>oe.lM,NoodlesPaySdk:()=>o2,NoodlesSdk:()=>o8,Obric:()=>tc,PythPrice:()=>ox.L,PythUtils:()=>ox.j,RouterUtils:()=>tP,SUBSCRIPTION_CONFIG:()=>o4,SUI_ADDRESS_ZERO:()=>oe.qb,SUI_FULL_TYPE:()=>oe.P9,SUI_METADATA_OBJECT_ID:()=>oe.IC,SUI_TYPE:()=>oe.nD,Scallop:()=>tl,SevenKAggregator:()=>tN,SevenKAggregatorConverter:()=>tL.m,SevenkCpmm:()=>tp,SevenkFun:()=>tg,SrmCpmm:()=>tb,Steamm:()=>tI,SubscriptionModule:()=>o3,SuiGrpcClient:()=>ol.SuiGrpcClient,SuiJsonRpcClient:()=>o_.SuiJsonRpcClient,SupportedAggregator:()=>tW,SupportedBondingCurve:()=>oT,TradeFeeOptions:()=>eu,TradeportClmm:()=>tS,TurbosClmm:()=>tM,TurbosFun:()=>tE,USDC_TOKEN_TYPE:()=>oe.N3,Volo:()=>ty,Walrus:()=>e4,addGasFee:()=>ob,checkIsSui:()=>oE.YY,denormalizeTokenType:()=>oE.eP,getAmountAfterFee:()=>t5,getCoinObjectIdsByAmount:()=>oo,getExpectedReturn:()=>o$,getGrpcFullnodeUrl:()=>op,getJsonRpcFullnodeUrl:()=>od,getMemezPumpSDK:()=>of,getMoveObject:()=>t3,getMoveObjectContent:()=>t4,getNeededGasFee:()=>t8,getSplitCoinForTx:()=>or,getSplitCoinsAfterFee:()=>t2,getTransactionResultDigest:()=>og,isSuiCoinType:()=>oe.tC,normalizeTokenType:()=>oE.nr,splitSuiCoinAfterFeeFromBuyTx:()=>on,splitSuiCoinAfterFeeFromSellTx:()=>oi,timeout:()=>oV});var t,o,r,a,n,i,s,c,u,l,_,p,d,g,m,f,b,A,I,C,T,S,O,M,x,E,h,y,w,P,F,B,k,v,D,R,L,U,N,j,K,G,q,V,$,Y,J,H,X,W,z,Q,Z,ee,et,eo,er,ea,en,ei,es,ec,eu,el,e_,ep,ed,eg,em,ef,eb,eA,eI,eC,eT,eS,eO,eM,ex,eE,eh,ey,ew,eP,eF,eB,ek,ev,eD,eR,eL,eU,eN,ej,eK,eG,eq,eV,e$,eY,eJ,eH,eX,eW,ez,eQ,eZ,e0,e6,e1,e4,e3,e2,e5,e8,e9,e7,te,tt,to,tr,ta,tn,ti,ts,tc,tu,tl,t_,tp,td,tg,tm,tf,tb,tA,tI,tC,tT,tS,tO,tM,tx,tE,th,ty,tw,tP,tF,tB,tk=__webpack_require__("@bluefin-exchange/bluefin7k-aggregator-sdk");let tv=require("@mysten/sui/transactions"),tD=require("bignumber.js");var tR=__webpack_require__.n(tD),tL=__webpack_require__("./src/meta-aggregator/converter-route/sevenk-aggregator-converter.ts");function tU(e,t){console.error(`NOODLES_SDK_AGGREGATOR_ROUTE_ERROR aggregator=${e} error=${function(e){if(e instanceof Error)return`${e.name}: ${e.message}`;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}(t)}`)}class tN{_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&&tk.Config.setApiKey(this._config.sevenKApiKey);let i=a?0:r?r.tradeFeePercent:this._config.defaultTradeFee.tradeFeePercent,s=n??(a?tL.m.SUPPORTED_PROTOCOLS:void 0);return await (0,tk.getQuote)({tokenIn:t,tokenOut:o,amountIn:e.toString(),commissionBps:1e4*i,sources:s})}catch(e){return tU("sevenk",e),null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:o,tradeFee:r,metaAggregator:a}){let n,i;a?(n=0,i=this._config.defaultTradeFee.tradeFeeRecipientAddress):r?(n=r.tradeFeePercent,i=r.tradeFeeRecipientAddress):(n=this._config.defaultTradeFee.tradeFeePercent,i=this._config.defaultTradeFee.tradeFeeRecipientAddress);let s=await (0,tk.buildTx)({quoteResponse:t,slippage:o,accountAddress:e,commission:{partner:i,commissionBps:1e4*n}});return s.tx instanceof tk.BluefinXTx?tv.Transaction.from(s.tx.txBytes).build({client:this._suiClient}):(s.tx.setSender(e),s.tx.build({client:this._suiClient}))}}(tN||(tN={})).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(tR())(t.tokenInAmount).multipliedBy(10**o).toFixed(0,3)),i=BigInt(new(tR())(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(tR())(o.tokenInAmount).multipliedBy(10**a).toFixed(0,3)),s=BigInt(new(tR())(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 tj=require("aftermath-ts-sdk");function tK(e){return"bigint"==typeof e?e:"string"==typeof e&&/^\d+$/.test(e)?BigInt(e):e}function tG(e){return{...e,coinIn:e.coinIn?{...e.coinIn,amount:tK(e.coinIn.amount),tradeFee:tK(e.coinIn.tradeFee)}:e.coinIn,coinOut:e.coinOut?{...e.coinOut,amount:tK(e.coinOut.amount),tradeFee:tK(e.coinOut.tradeFee)}:e.coinOut}}class tq{_config;_aftermathClient;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async aftermathClient(){if(this._aftermathClient)return this._aftermathClient;let e=await tj.Aftermath.create({network:"MAINNET",baseUrl:this._config.aftermathApiEndpoint}),t=await e.getAddresses(),o=await tj.Aftermath.create({network:"MAINNET",baseUrl:this._config.aftermathApiEndpoint,api:new tj.AftermathApi(this._suiClient,t)});if(this._config.aftermathApiKey){let e=tj.Helpers.keypairFromPrivateKey(this._config.aftermathApiKey);await o.Auth().init({async signMessageCallback({message:t}){let{signature:o}=await e.signPersonalMessage(t);return{signature:o}},walletAddress:e.toSuiAddress()})}return this._aftermathClient=o,o}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r}){try{let a;a=r?{recipient:r.tradeFeeRecipientAddress,feePercentage:r.tradeFeePercent}:{recipient:this._config.defaultTradeFee.tradeFeeRecipientAddress,feePercentage:this._config.defaultTradeFee.tradeFeePercent};let n=await this.aftermathClient();return await n.Router().getCompleteTradeRouteGivenAmountIn({coinInAmount:e,coinInType:t,coinOutType:o,externalFee:a})}catch(e){return tU("aftermath",e),null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o}){let r=await this.aftermathClient(),a=await r.Router().getTransactionForCompleteTradeRoute({completeRoute:function(e){if("object"!=typeof e||null===e)return e;let t=tG(e);return{...t,routes:Array.isArray(t.routes)?t.routes.map(e=>{let t=tG(e);return{...t,portion:tK(t.portion),paths:Array.isArray(t.paths)?t.paths.map(e=>tG(e)):t.paths}}):t.routes,feeBreakdown:Array.isArray(t.feeBreakdown)?t.feeBreakdown.map(e=>({...e,amount:tK(e.amount)})):t.feeBreakdown}}(e),walletAddress:t,slippage:o+(e.netTradeFeePercentage??0),isSponsoredTx:!1});return a.setSender(t),a.build({client:this._suiClient})}}(tq||(tq={})).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 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;a=r?{fee:1e4*r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:1e4*this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let{getQuote:n}=await import("@naviprotocol/astros-aggregator-sdk");return await n(t,o,e,this._config.astrosApiKey,{byAmountIn:!0,serviceFee:a})}catch(e){return tU("astros",e),null}}returnMergedCoins(e,t,o){if(t.length<2)return e.object(t[0].coinObjectId);let r=0,a=[];t.sort((e,t)=>Number(t.balance)-Number(e.balance)).slice(1).forEach(e=>{r>=o||(r+=Number(e.balance),a.push(e.coinObjectId))});let n=t[0].coinObjectId;return e.mergeCoins(n,a),e.object(n)}async getTransaction({completeRoute:e,walletAddress:t,slippage:o,tradeFee:r}){var a;let n,i;n=r?{fee:r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let s=new(tR())(e.amount_out).multipliedBy(1-o-n.fee).toNumber(),c=new tv.Transaction,{buildSwapPTBFromQuote:u,getCoins:l}=await import("@naviprotocol/astros-aggregator-sdk"),_=this._suiClient;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 l(_,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 p=await u(t,c,s,i,e,void 0,!1,this._config.astrosApiKey,{serviceFee:n});return c.transferObjects([p],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 t$=__webpack_require__("@cetusprotocol/aggregator-sdk");let tY=require("bn.js");var tJ=__webpack_require__.n(tY);(eu||(eu={})).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 tX{_config;_suiClient;_cetusClient;getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t,overlayFeeRate:o}){return{client:this._suiClient,overlayFeeReceiver:t,overlayFeeRate:o,env:t$.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,o){return o?new t$.AggregatorClient(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:void 0,overlayFeeRate:void 0})):t&&!eu.equals(t,this._config.defaultTradeFee)?new t$.AggregatorClient(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t.tradeFeeRecipientAddress,overlayFeeRate:t.tradeFeePercent})):(this._cetusClient||(this._cetusClient=new t$.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,a),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 tU("cetus",e),null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o,tradeFee:r,metaAggregator:a}){let n=this.cetusClient(t,r,a),i=new tv.Transaction;return i.setSender(t),await n.fastRouterSwap({router:e,txb:i,slippage:o}),i.build({client:this._suiClient})}}(tX||(tX={})).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 tW=((t={}).ASTROS="ASTROS",t.AFTERMATH="AFTERMATH",t.SEVENK="7K",t.CETUS="CETUS",t.FLOWX="FLOWX",t),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,o){let r,a;if(!o)return t?(r=t.tradeFeePercent,a=t.tradeFeeRecipientAddress):(r=this._config.defaultTradeFee.tradeFeePercent,a=this._config.defaultTradeFee.tradeFeeRecipientAddress),new tz.Commission(a,new tz.Coin(e),tz.CommissionType.PERCENTAGE,1e6*r,!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,a),includeSources:s})}catch(e){return tU("flowx",e),null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:o,tradeFee:r,metaAggregator:a}){let n=new tz.TradeBuilder("mainnet",t.routes).sender(e).slippage(1e6*o),i=this.getCommission(t.coinIn.coinType,r,a);return i&&(n=n.commission(i)),n.build().buildTransaction({client:this._suiClient}).then(t=>(t.setSender(e),t.build({client:this._suiClient})))}}(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}},(o=el||(el={})).PACKAGE_ID_V4="0x7e6aa6e179466ab2814425a780b122575296d011119fa69d27f289f5a28814bd",o.MEMEZ_AV_OBJECT_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0";var t0=__webpack_require__("@minswap/tiny-invariant"),t6=__webpack_require__.n(t0);let t1=require("@mysten/sui/bcs");async function t4(e,t){return(await t3(e,t)).fields}async function t3(e,t){let o=(await e.getObject({objectId:t,include:{json:!0,objectBcs:!0}})).object;t6()(o,"Pool object not found or has no content"),t6()(o.json,"Pool object not found or has no content"),t6()(o.objectBcs,"Pool object not found or has no content");let r=t1.bcs.Object.parse(o.objectBcs);return t6()("Move"===r.data.$kind,"Pool object is not a Move object"),{dataType:"moveObject",fields:o.json,hasPublicTransfer:r.data.Move.hasPublicTransfer,type:o.type}}function t2(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 t5(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 t8(e,t,o,r){t.setSenderIfNotSet(o);let a=await e.simulateTransaction({transaction:t,include:{effects:!0},checksEnabled:!1}),{gasUsed:n,status:i}=("Transaction"===a.$kind?a.Transaction:a.FailedTransaction).effects;if(!i.success)throw Error(`Transaction failed during simulation: ${i.error?.message??""}`);let s=BigInt(n.computationCost)+BigInt(n.storageCost)-BigInt(n.storageRebate),c=BigInt(1e4*Number(r));return s*(BigInt(1e4)+c)/BigInt(1e4)}((r=e_||(e_={})).U64||(r.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=ep||(ep={});function t7(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:t7(e).toString()}},t9.assertOverflow=t7,((a=ed||(ed={})).MemezFun||(a.MemezFun={})).isSniperProtectedMemezFun=async function(e,t){return(await t4(e,t)).public_key.length>0},(n=a.MemezFees||(a.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=ep.calcUp(ep.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")},n.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 ep.calcUp(ep.sub(r,t),o)}throw Error("Unknown fee variant")},(a.MemezBurner||(a.MemezBurner={})).calculate=function(e,t){if(ep.value(e.fee.fields)===BigInt(0)||t===BigInt(0)||t>=BigInt(e.target_liquidity))return ep.new_(0);let o=BigInt(1e4);return ep.new_(e_.U64.mulDivUp(ep.value(e.fee.fields),e_.U64.mulDivUp(t,o,BigInt(e.target_liquidity)),o))},(i=a.MemezPump||(a.MemezPump={})).getPumpState=async function(e,t){return await t4(e,t.inner_state)},i.pump=function(e,t){let o=e.constant_product.fields,r=a.MemezFees.takeWithDiscount(o.quote_swap_fee,t,o.quote_referrer_fee.fields),n=t-r,i=BigInt(o.meme_balance),s=BigInt(o.quote_balance),c=i*n/(BigInt(o.virtual_liquidity)+s+n),u=a.MemezFees.takeWithDiscount(o.meme_swap_fee,c,o.meme_referrer_fee.fields);return c-u},i.dump=function(e,t){let o=e.constant_product.fields,r=a.MemezFees.takeWithDiscount(o.meme_swap_fee,t,o.meme_referrer_fee.fields),n=t-r,i=BigInt(o.meme_balance),s=BigInt(o.quote_balance),c=BigInt(o.virtual_liquidity),u=a.MemezBurner.calculate(o.burner.fields,s),l=ep.calcUp(u,n),_=n-(ep.value(u)!==BigInt(0)?l:BigInt(0)),p=(c+s)*_/(i+_);p>s&&(p=s);let d=a.MemezFees.takeWithDiscount(o.quote_swap_fee,p,o.quote_referrer_fee.fields);return p-d},(s=eg||(eg={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,n=await t4(t,r),i=await ed.MemezPump.getPumpState(t,n);return o=t5(o,a),ed.MemezPump.pump(i,o)},s.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,n=await t4(t,r),i=await ed.MemezPump.getPumpState(t,n);return t5(ed.MemezPump.dump(i,o),a)};var oe=__webpack_require__("./src/constant/sui.ts"),ot=__webpack_require__("@mysten/sui/utils");let oo=async(e,t,o,r)=>{let a,n=[],i=!0;for(;i;)try{let o=await e.listCoins({owner:t,coinType:r,cursor:a});n=[...n,...o.objects.map(e=>({coinObjectId:e.objectId,version:e.version,digest:e.digest,balance:e.balance}))],i=o.hasNextPage,a=o.cursor}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=[],l=[];for(let e of s)if(c=(BigInt(e.balance)+BigInt(c)).toString(10),u.push(e.coinObjectId),l.push(e),BigInt(c)>=BigInt(o))break;return{objectIds:u,balance:c,objectCoins:l}};async function or(e,t){let{account:o,amount:r,splits:a,coinType:n,inheritTx:i,inspecTransaction:s,isSponsored:c=!1}=e,u=i??new tv.Transaction,{objectIds:l,balance:_}=await oo(t,o,r,n);if(BigInt(_)<BigInt(r))throw Error(`Insufficient balance for type ${n}. Required: ${r}, Available: ${_}`);if(0===l.length)throw Error(`No coins found for type ${n} with sufficient balance. Required: ${r}`);let p=l[0];if((0,ot.normalizeStructTag)(n)===(0,ot.normalizeStructTag)(oe.P9)&&!c){let e;return s?(l.length>1&&u.mergeCoins(u.object(p),l.slice(1).map(e=>u.object(e))),e=u.splitCoins(u.object(p),a)):e=u.splitCoins(u.gas,a),{tx:u,coinData:e}}l.length>1&&u.mergeCoins(u.object(p),l.slice(1).map(e=>u.object(e)));let d=u.splitCoins(u.object(p),a);return{tx:u,coinData:d}}let oa="0x62412b7268c35f3808336aee57a52836501f40b8ba5d936f8ad275e672befd04";async function on(e,t){let o,r,{inputAmount:a,accountAddress:n,frontendFee:i,frontendFeeRecipient:s,extendTx:c,isSponsored:u}=e;t6()(e.inCoinType===oe.P9||e.inCoinType===oe.nD,"Input must be SUI");let{tx:l,coinIn:_}=c||{},p=t2(a,i||"0"),d=l||new tv.Transaction;if(_)o=d.splitCoins(_,p),em.transferOrDestroyZeroCoin(d,oe.P9,_,n);else{let{coinData:e}=await or({account:n,amount:a,splits:p,coinType:oe.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 oi(e,t,o){if(t6()(t.outCoinType===oe.P9||t.outCoinType===oe.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:`${oa}::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}}(em||(em={})).transferOrDestroyZeroCoin=function(e,t,o,r){e.moveCall({target:`${oa}::utils::transfer_or_destroy`,typeArguments:[t],arguments:[o,e.pure.address(r)]})};var os=ef||(ef={});async function oc(e){let t=e||new tv.Transaction;return t.moveCall({target:`${el.PACKAGE_ID_V4}::memez_allowed_versions::get_allowed_versions`,arguments:[t.object(el.MEMEZ_AV_OBJECT_ID)],typeArguments:[]})}os.getAllowedVersions=oc,os.buildBuyTx=async function(e,t){t6()(!await ed.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 on(e,t);t6()(r,"Coin out is required");let a=o.moveCall({target:`${el.PACKAGE_ID_V4}::memez_pump::pump`,typeArguments:[e.outCoinType,oe.P9],arguments:[o.object(e.poolId),r,o.pure.vector("address",[]),o.pure.vector("vector<u8>",[]),o.pure.u64(e.minAmountOut),await oc(o)]});return{tx:o,coinOut:a}},os.buildSellTx=async function(e,t){t6()(e.outCoinType===oe.P9||e.outCoinType===oe.nD,"Output must be SUI");let o=await t4(t,e.poolId),{tx:r,coinData:a}=await or({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[n]=a,[i]=r.moveCall({target:`${el.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 oc(r)]});return await oi(r,e,i)};let ou=require("@interest-protocol/sui-core-sdk"),ol=require("@mysten/sui/grpc");var o_=__webpack_require__("@mysten/sui/jsonRpc");function op(e){switch(e){case"mainnet":return"https://fullnode.mainnet.sui.io:443";case"testnet":return"https://fullnode.testnet.sui.io:443";case"devnet":return"https://fullnode.devnet.sui.io:443";case"localnet":return"http://127.0.0.1:9000";default:throw Error(`Unknown network: ${e}`)}}function od(e){return op(e)}function og(e){return"Transaction"===e.$kind?e.Transaction.digest:e.FailedTransaction.digest}let om={network:ou.Network.MAINNET,fullNodeUrl:op("mainnet")};async function of(){if(!e){let{MemezPumpSDK:t}=await import("@interest-protocol/memez-fun-sdk");e=new t(om)}return e}async function ob(e,t){let{inheritTx:o,sender:r,feeAmount:a,suiInputAmount:n}=e,i=o||new tv.Transaction;a>BigInt(0)&&i.setGasBudget(a);let{objectCoins:s}=await oo(t,r,(BigInt(n||"0")+a).toString(),oe.P9);return i.setGasPayment(s.map(e=>({objectId:e.coinObjectId,version:e.version,digest:e.digest}))),i}(c=eb||(eb={})).getCurveAmountAfterBuy=async function(e){let{suiAmount:t,poolId:o,frontendFee:r}=e;t=t5(t,r);let{memeAmountOut:a}=await (await of()).quotePump({pool:o,amount:t});return a},c.getSuiAmountAfterSell=async function(e){let{curveAmount:t,poolId:o,frontendFee:r}=e,{quoteAmountOut:a}=await (await of()).quoteDump({pool:o,amount:t});return t5(a,r)};var oA=eA||(eA={});async function oI(e,t){let{tx:o,coinOut:r}=await on(e,t);t6()(r,"Coin out is required");let{memeCoin:a,tx:n}=await (await of()).pump({pool:e.poolId,quoteCoin:r,minAmountOut:e.minAmountOut,tx:o});return{tx:n,coinOut:a}}async function oC(e,t){t6()((0,oe.tC)(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await or({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,{quoteCoin:n,tx:i}=await (await of()).dump({pool:e.poolId,memeCoin:a,tx:o,minAmountOut:e.minAmountOut});return await oi(i,e,n)}oA.buildBuyTx=oI,oA.buildSellTx=oC,oA.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,oe.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 eb.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0}),u=BigInt(new(tR())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:l,coinOut:_}=await oI({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()(_,"Coin out is required"),l.transferObjects([_],l.pure.address(n)),l.setSender(n);let p=await t8(s,l,n,0);return(l=await ob({inheritTx:l,sender:n,feeAmount:p,suiInputAmount:e},s)).build({client:s})},oA.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,oe.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 eb.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0}),u=BigInt(new(tR())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:l,coinOut:_}=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()(_,"Coin out is required"),l.transferObjects([_],l.pure.address(n)),l.setSender(n);let p=await t8(s,l,n,0);return(l=await ob({inheritTx:l,sender:n,feeAmount:p},s)).build({client:s})};var oT=((u={}).BLAST_FUN="BLAST_FUN",u.MOONBAGS="MOONBAGS",u);(l=eI||(eI={})).PACKAGE_ID="0xb8df325010942634a4afb3db3901ee215546af43a4ec4af781e7213b0bba7290",l.CONFIG_OBJECT_ID="0x74aecf86067c6913960ba4925333aefd2b1f929cafca7e21fd55a8f244b70499",l.LOCK_CONFIG_OBJECT_ID="0xfb09822d9808980abd04c51321adb850701f5f55535c6206658ef4d910c3e9be",l.BURN_MANAGER_OBJECT_ID="0x1d94aa32518d0cb00f9de6ed60d450c9a2090761f326752ffad06b2e9404f845",l.POOLS_OBJECT_ID="0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0",l.GLOBAL_CONFIG_OBJECT_ID="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",l.FEE_DENOMINATOR=BigInt(1e4),function(e){(t=e.Curves||(e.Curves={})).calculateAddLiquidityCost=function(e,t,o){return e*t/(t-o)-e},t.calculateRemoveLiquidityReturn=function(e,t,o){return t-e*t/(e+o)},t.calculateTokenAmountReceived=function(e,t,o){return t-e*t/(e+o)};var t,o=e.Moonbags||(e.Moonbags={});function r(e){return"fields"in e?e.fields.balance:e.balance}o.getDynamicVirtualTokenReserves=async function(e,t){try{let o=await e.getDynamicField({parentId:t,name:{type:"vector<u8>",bcs:t1.bcs.byteVector().serialize(new TextEncoder().encode("virtual_token_reserves")).toBytes()}});if(!o.dynamicField?.value)return;return BigInt(t1.bcs.u64().parse(o.dynamicField.value.bcs))}catch(e){if("object"==typeof e&&null!==e&&"code"in e&&"dynamicFieldNotFound"===e.code)return;throw e}},o.buyExactInReturnsWithLock=function(t){let{inputAmount:o,amountIn:a,pool:n,config:i,dynamicVirtualTokenReserves:s}=t,c=BigInt(n.virtual_sui_reserves),u=BigInt(n.virtual_token_reserves),l=BigInt(r(n.remain_token_reserves)),_=e.Curves.calculateRemoveLiquidityReturn(c,u,a),p=u-(s||l),d=_,g=a;_>p&&(d=p,g=e.Curves.calculateAddLiquidityCost(c,u,p)+BigInt(1));let m=g*BigInt(i.platform_fee)/eI.FEE_DENOMINATOR;return t6()(o>=g+m,"Input amount is less than used SUI + fee"),{receivedCurve:d,receivedSui:o-g-m}},o.sellReturns=function(t){let{amountIn:o,pool:a,config:n}=t,i=BigInt(a.virtual_sui_reserves),s=BigInt(a.virtual_token_reserves),c=BigInt(r(a.real_sui_reserves)),u=e.Curves.calculateRemoveLiquidityReturn(s,i,o);u>c&&(u=c);let l=u*BigInt(n.platform_fee)/eI.FEE_DENOMINATOR,_=u-l;return{receivedCurve:BigInt(0),receivedSui:_}}}(eC||(eC={})),(_=eT||(eT={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,[n,i,s]=await Promise.all([t4(t,r),t4(t,eI.CONFIG_OBJECT_ID),eC.Moonbags.getDynamicVirtualTokenReserves(t,r)]);void 0!==a&&(o=t5(o,a));let c=o*eI.FEE_DENOMINATOR/(eI.FEE_DENOMINATOR+BigInt(i.platform_fee)),{receivedCurve:u}=eC.Moonbags.buyExactInReturnsWithLock({inputAmount:o,amountIn:c,pool:n,config:i,dynamicVirtualTokenReserves:s});return u},_.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,[n,i]=await Promise.all([t4(t,r),t4(t,eI.CONFIG_OBJECT_ID)]),{receivedSui:s}=eC.Moonbags.sellReturns({amountIn:o,pool:n,config:i});return void 0!==a?t5(s,a):s},_.getUsedSuiForTx=async function(e,t){let{suiAmount:o,frontendFee:r}=e,a=await t4(t,eI.CONFIG_OBJECT_ID);return void 0!==r&&(o=t5(o,r)),o*eI.FEE_DENOMINATOR/(eI.FEE_DENOMINATOR+BigInt(a.platform_fee))};var oS=eS||(eS={});async function oO(e,t){let{tx:o,coinOut:r}=await on(e,t);t6()(r,"Coin out is required");let a=await eT.getUsedSuiForTx({suiAmount:BigInt(e.inputAmount),frontendFee:e.frontendFee},t),[n,i]=o.moveCall({target:`${eI.PACKAGE_ID}::moonbags::buy_exact_in_returns_with_lock`,typeArguments:[e.outCoinType],arguments:[o.object(eI.CONFIG_OBJECT_ID),o.object(eI.LOCK_CONFIG_OBJECT_ID),r,o.pure.u64(a),o.pure.u64(e.minAmountOut),o.object(eI.BURN_MANAGER_OBJECT_ID),o.object(eI.POOLS_OBJECT_ID),o.object(eI.GLOBAL_CONFIG_OBJECT_ID),o.object(oe.IC),o.object(oe.VV)]});return em.transferOrDestroyZeroCoin(o,oe.P9,n,e.accountAddress),{tx:o,coinOut:i}}async function oM(e,t){t6()((0,oe.tC)(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await or({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,[n,i]=o.moveCall({target:`${eI.PACKAGE_ID}::moonbags::sell_returns`,typeArguments:[e.inCoinType],arguments:[o.object(eI.CONFIG_OBJECT_ID),a,o.pure.u64(e.minAmountOut),o.object(oe.VV)]});return em.transferOrDestroyZeroCoin(o,e.inCoinType,i,e.accountAddress),await oi(o,e,n)}oS.buildBuyTx=oO,oS.buildSellTx=oM,oS.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,oe.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 eT.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0},s),u=BigInt(new(tR())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:l,coinOut:_}=await oO({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()(_,"Coin out is required"),l.transferObjects([_],l.pure.address(n)),l.setSender(n);let p=await t8(s,l,n,0);return(l=await ob({inheritTx:l,sender:n,feeAmount:p,suiInputAmount:e},s)).build({client:s})},oS.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},s){t6()((0,oe.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 eT.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0},s),u=BigInt(new(tR())(c.toString()).multipliedBy(1-a).toFixed(0,3)),{tx:l,coinOut:_}=await oM({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()(_,"Coin out is required"),l.transferObjects([_],l.pure.address(n)),l.setSender(n);let p=await t8(s,l,n,0);return(l=await ob({inheritTx:l,sender:n,feeAmount:p},s)).build({client:s})};var ox=__webpack_require__("./src/libs/pyth.ts"),oE=__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"),oF=__webpack_require__("./src/meta-aggregator/aggregator/aggregator.ts");(p=eO||(eO={})).POOL_REGISTRY_OBJ_ID="0xfcc774493db2c45c79f688f88d28023a3e7d98e4ee9f48bbf5c7990f651577ae",p.PROTOCOL_FEE_VAULT_OBJ_ID="0xf194d9b1bcad972e45a7dd67dd49b3ee1e3357a00a50850c52cd51bb450e13b4",p.TREASURY_OBJ_ID="0x28e499dff5e864a2eafe476269a4f5035f1c16f338da7be18b103499abf271ce",p.INSURANCE_FUND_OBJ_ID="0xf0c40d67b078000e18032334c3325c47b9ec9f3d9ae4128be820d54663d14e3b",p.REFERRAL_VAULT_OBJ_ID="0x35d35b0e5b177593d8c3a801462485572fc30861e6ce96a55af6dc4730709278";var oB=__webpack_require__("./src/meta-aggregator/router/types.ts");(d=eM||(eM={})).LAST_PACKAGE_ID="0xf369250dc5a17e9d5a84a3b0cf5aea715c0682170e726dd601f03ade7ce4decb",d.swap=function(e){t6()(e.protocol===oB.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??d.LAST_PACKAGE_ID}::aftermath_cpmm_router::swap`,typeArguments:[i,s,c],arguments:[o,t.object(r),t.object(eO.POOL_REGISTRY_OBJ_ID),t.object(eO.PROTOCOL_FEE_VAULT_OBJ_ID),t.object(eO.TREASURY_OBJ_ID),t.object(eO.INSURANCE_FUND_OBJ_ID),t.object(eO.REFERRAL_VAULT_OBJ_ID),t.pure.bool(a),t.pure.u64(n)]})},(g=ex||(ex={})).STAKED_SUI_VAULT_OBJ_ID="0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d",g.SAFE_TREASURY_OBJECT_ID="0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610",g.REFERRAL_VAULT_OBJ_ID="0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef",g.VALIDATOR_ADDRESS="0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2",(m=eE||(eE={})).LAST_PACKAGE_ID="0x148c4e7ff5b308b2d520e050e6a21d986dd3eb203e0aa3eaaba28000977aebf1",m.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??m.LAST_PACKAGE_ID}::aftermath_lsd_router::swap`,arguments:[o,t.object(ex.STAKED_SUI_VAULT_OBJ_ID),t.object(ex.SAFE_TREASURY_OBJECT_ID),t.object(ot.SUI_SYSTEM_STATE_OBJECT_ID),t.object(ex.REFERRAL_VAULT_OBJ_ID),t.pure.address(ex.VALIDATOR_ADDRESS),t.pure.bool(r),t.pure.u64(a)]})},(f=eh||(eh={})).LAST_PACKAGE_ID="0x108d5d07cf873dec0bc8034db862db55d38e495c1f3ee0e124cf4861af834f25",f.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??f.LAST_PACKAGE_ID}::alphafi_lsd_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(ot.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.bool(n),t.pure.u64(a)]})},(b=ey||(ey={})).MEMEZ_AV_OBJ_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",b.MEMEZ_FUN_OBJ_ID="0x943948644f06942b8b660ca541b10a05f6a7be23ce4069944a3665e7e698930d",b.IPX_TREASURY_STANDARD_OBJ_ID="0x051e11b667659192917db94e5175fa066909d4dfc04d2663528f499c4afc6999",(A=ew||(ew={})).LAST_PACKAGE_ID="0x8b1e84ed9bc79d31160600254d65810f6bc6d2352f174a60ed041017d0a2a87a",A.swap=function(e){t6()(e.protocol===oB.S.BLASTFUN,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??A.LAST_PACKAGE_ID}::blastfun_router::swap`,typeArguments:[r,a],arguments:[o,t.object(ey.MEMEZ_FUN_OBJ_ID),t.object(ey.IPX_TREASURY_STANDARD_OBJ_ID),t.object(ey.MEMEZ_AV_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(eP||(eP={})).GLOBAL_CONFIG_OBJ_ID="0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",(I=eF||(eF={})).LAST_PACKAGE_ID="0x9f8397124b6bdb55aeb7b5e43761e0e4dc94b9e22e94b1b25d8211d99df422d5",I.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??I.LAST_PACKAGE_ID}::bluefin_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(eP.GLOBAL_CONFIG_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(eB||(eB={})).DEX_INFO_OBJ_ID="0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92",(C=ek||(ek={})).LAST_PACKAGE_ID="0xf52bdd65ee347e8994170f8c331cf0c23a55281b3282467f14ccbb3e2a7f928f",C.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,coinAType:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??C.LAST_PACKAGE_ID}::bluemove_cpmm_router::swap`,typeArguments:[n,i],arguments:[o,t.object(eB.DEX_INFO_OBJ_ID),t.pure.bool(r),t.pure.u64(a)]})},(ev||(ev={})).ORACLE_OBJ_ID="0xfa3975b98f3d0e3df18ed88ae6e69db31836b3f4212df02fae144b1e5a89ca8e",(T=eD||(eD={})).LAST_PACKAGE_ID="0x2dd7b04509f332bdb93a8f228ab5c40b34baee4645b2ebe5e5fa2c3502b2c088",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}::bolt_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(ev.ORACLE_OBJ_ID),t.object(ot.SUI_CLOCK_OBJECT_ID),t.pure.u64(s),t.pure.bool(i)]})},(eR||(eR={})).GLOBAL_CONFIG="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",(S=eL||(eL={})).LAST_PACKAGE_ID="0xb3dbb229464cb14b9f8cfa087e5b162623c8f485395dc9b975e263a5ee7051e4",S.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??S.LAST_PACKAGE_ID}::cetus_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eR.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(O=eU||(eU={})).GLOBAL_CONFIG_OBJ_ID="0xf31b605d117f959b9730e8c07b08b856cb05143c5e81d5751c90d2979e82f599",O.VERSIONED_OBJ_ID="0x05370b2d656612dd5759cbe80463de301e3b94a921dfc72dd9daa2ecdeb2d0a8",(M=eN||(eN={})).LAST_PACKAGE_ID="0x9ab3ba62b4327a7d90e4aed1c025b62736f035911ad7bab830c065ec84ef1ffa",M.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(eU.GLOBAL_CONFIG_OBJ_ID),t.object(eU.VERSIONED_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(ot.SUI_CLOCK_OBJECT_ID)];t.moveCall({target:`${c??M.LAST_PACKAGE_ID}::cetus_dlmm_router::swap`,typeArguments:[i,s],arguments:u})},(x=ej||(ej={})).GLOBAL_CONFIG="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135",x.DEEP_TYPE="0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",(E=eK||(eK={})).LAST_PACKAGE_ID="0xff274b63c0f6e3a01f3dd0e923aefcb3146e05e2f6bef4ae339e2703b085f8ed",E.swap=function(e){t6()(e.protocol===oB.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,l=c||t.moveCall({target:"0x2::coin::zero",typeArguments:[ej.DEEP_TYPE]});t.moveCall({target:`${u??E.LAST_PACKAGE_ID}::deepbook_v3_router::swap`,typeArguments:[r,a],arguments:[o,t.object(ej.GLOBAL_CONFIG),t.object(n),t.pure.u64(s),t.pure.bool(i),l,t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(eG||(eG={})).GLOBAL_OBJ_ID="0x935229a3c32399e9fb207ec8461a54f56c6af5744c64442435ac217ab28f0d59",(h=eq||(eq={})).LAST_PACKAGE_ID="0xfd86c0308327eae31c04560460ee6190220e4ae1cdf5b999eef1110bf0b0f2b8",h.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??h.LAST_PACKAGE_ID}::dip_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(eG.GLOBAL_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(eV||(eV={})).FERRA_GLOBAL_CONFIG_ID="0x2cd8382c19e6994f16df204e9b8cddd04bdc486c251de75ac66ac4e48e3e7081",(y=e$||(e$={})).LAST_PACKAGE_ID="0x70c4318f67d88ebe4e83bacad15f9e2f5c8becd77695f63dc4bd9393730851cd",y.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??y.LAST_PACKAGE_ID}::ferra_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(eV.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object("0x6")]})},(eY||(eY={})).FERRA_GLOBAL_CONFIG_ID="0x5c9dacf5a678ea15b8569d65960330307e23d429289ca380e665b1aa175ebeca",(w=eJ||(eJ={})).LAST_PACKAGE_ID="0x686e9eb19b04d46374c3fb82cb4ebb7b24ef8a9ae13f403915f4ae347e0f6593",w.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??w.LAST_PACKAGE_ID}::ferra_dlmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(eY.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(P=eH||(eH={})).POOL_REGISTRY_OBJ_ID="0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc",P.VERSIONED_OBJ_ID="0x67624a1533b5aff5d0dfcf5e598684350efd38134d2d245f475524c03a64e656",(F=eX||(eX={})).LAST_PACKAGE_ID="0x350a752d3388165e578cc33a39655a6da83613cf4e58c8d9d0723711c2603e17",F.swap=function(e){t6()(e.protocol===oB.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??F.LAST_PACKAGE_ID}::flowx_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eH.POOL_REGISTRY_OBJ_ID),t.object(eH.VERSIONED_OBJ_ID),t.pure.u64(n),t.pure.u64(i),t.pure.bool(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(eW||(eW={})).CONTAINER_OBJ_ID="0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511",(B=ez||(ez={})).LAST_PACKAGE_ID="0xd95b440ad340bb6cbf571897d312e43d4b6de37b60c69ef714c94b9835cb8866",B.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??B.LAST_PACKAGE_ID}::flowx_cpmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(eW.CONTAINER_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(k=eQ||(eQ={})).GLOBAL_CONFIG_OBJ_ID="0xe93baa80cb570b3a494cbf0621b2ba96bc993926d34dc92508c9446f9a05d615",k.REWARDER_VAULT_OBJ_ID="0xfb971d3a2fb98bde74e1c30ba15a3d8bef60a02789e59ae0b91660aeed3e64e1",k.STATS_OBJ_ID="0x6822a33d1d971e040c32f7cc74507010d1fe786f7d06ab89135083ddb07d2dc2",k.PRICE_PROVIDER_OBJ_ID="0x854b2d2c0381bb656ec962f8b443eb082654384cf97885359d1956c7d76e33c9",(v=eZ||(eZ={})).LAST_PACKAGE_ID="0xf0bf13b5baaf3d368f165e846b919294bed79a3ab3ab0c9bd1e75f23533e44a5",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}::fullsail_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(eQ.GLOBAL_CONFIG_OBJ_ID),t.object(eQ.REWARDER_VAULT_OBJ_ID),t.object(eQ.STATS_OBJ_ID),t.object(eQ.PRICE_PROVIDER_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(D=e0||(e0={})).LAST_PACKAGE_ID="0x8969ed3e56c1dbdaf9df52f812d69c6c45fe5a4bab7093c88f5a8697a409398e",D.swap=function(e){t6()(e.protocol===oB.S.HAEDAL_CPMM);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdA:c,pythPriceFeedIdB:u,pythInfoObjectIdMap:l,packageId:_}=e,p=l.get(c),d=l.get(u);t6()(p,"Not found priceInfoAId in pythObjectIdMap"),t6()(d,"Not found priceInfoBId in pythObjectIdMap"),t.moveCall({target:`${_??D.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(ot.SUI_CLOCK_OBJECT_ID)]})},(R=e6||(e6={})).LAST_PACKAGE_ID="0x5d01f22e5471a5912a88e15d62fdcb922beba65b8e8dfe1a715aebf743194f4a",R.swap=function(e){t6()(e.protocol===oB.S.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,_=u.get(c);t6()(_,"Not found pythPriceBaseId in pythObjectIdMap"),t.moveCall({target:`${l??R.LAST_PACKAGE_ID}::haedal_cpmm_v2_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(_),t.pure.u64(s),t.pure.bool(i),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(L=e1||(e1={})).LAST_PACKAGE_ID="0x1644956086caa5eb791eba152f3b69ba862b3a5382ef0e1d8a474ab158aafa1a",L.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,poolId:n,packageId:i}=e;t.moveCall({target:`${i??L.LAST_PACKAGE_ID}::haedal_lsd_router::swap`,arguments:[o,t.object(n),t.object(ot.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.bool(r),t.pure.u64(a)]})},(e4||(e4={})).STAKING_OBJ_ID="0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904",(e3||(e3={})).VALIDATOR_ID="0x7b3ba6de2ae58283f60d5b8dc04bb9e90e4796b3b2e0dea75569f491275242e7",(U=e2||(e2={})).LAST_PACKAGE_ID="0x7be077dd73c85e788c2a49a51f0627066d81d3dc9982c268e3691265a81d544d",U.swap=function(e){t6()(e.protocol===oB.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??U.LAST_PACKAGE_ID}::haedal_wal_lsd_router::swap`,arguments:[o,t.object(e4.STAKING_OBJ_ID),t.object(r),t.pure.id(e3.VALIDATOR_ID),t.pure.bool(a),t.pure.u64(n)]})},(e5||(e5={})).VERSION_OBJ_ID="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78",(N=e8||(e8={})).LAST_PACKAGE_ID="0xcf141e1d18ff609b2ac56532b391f7648fc55e28696efe354186f5109c0eff06",N.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??N.LAST_PACKAGE_ID}::kriya_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(e5.VERSION_OBJ_ID),t.pure.bool(i),t.pure.u64(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(j=e9||(e9={})).LAST_PACKAGE_ID="0x50d37f46df75ef125ce656d4ac91b31b2cf0c1195752a96558561d163e45c223",j.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??j.LAST_PACKAGE_ID}::kriya_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(K=e7||(e7={})).FACTORY_OBJ_ID="0xedb456e93e423dd75a8ddebedd9974bb661195043027e32ce01649d6ccee74cf",K.GLOBAL_CONFIG_OBJ_ID="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(G=te||(te={})).LAST_PACKAGE_ID="0x950f94d33060c0575389c9f84fabab1e140776c6c84389d4237a0c2687a7adc9",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}::magma_almm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(e7.FACTORY_OBJ_ID),t.object(e7.GLOBAL_CONFIG_OBJ_ID),t.pure.u64(s),t.pure.bool(i),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(tt||(tt={})).GLOBAL_CONFIG="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(q=to||(to={})).LAST_PACKAGE_ID="0xbe5f590339c55ca8ebbf93cedfb68aafd479d71e1c57043246f7dcf352745242",q.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??q.LAST_PACKAGE_ID}::magma_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(tt.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})};var ok=__webpack_require__("./src/meta-aggregator/external/metastable.ts");(V=tr||(tr={})).LATEST_PACKAGE_ID="0xfab91518218f10204b083dba1e62c8bfc23f14fb87742158043e5faec4670ec4",V.swap=function(e){let t,o,r;t6()(e.protocol===oB.S.METASTABLE,"Invalid protocol");let{txb:a,swapContext:n,aToB:i,amountIn:s,coinAType:c,coinBType:u,poolId:l,metaCoin:_,packageId:p}=e,[d,g]=i?[c,u]:[u,c];d===_?(r="swap_from_meta_coin",t=[_,g],o=[ok.b.createCap({coinType:g,createCapFunc:"create_withdraw_cap",...e})]):g===_?(r="swap_to_meta_coin",t=[_,d],o=[ok.b.createCap({coinType:d,createCapFunc:"create_deposit_cap",...e})]):(r="swap",t=[_,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??V.LATEST_PACKAGE_ID}::metastable_router::${r}`,typeArguments:t,arguments:[n,a.object(l),a.object(ok.b.VERSION_OBJ_ID),...o,a.pure.u64(s)]})},(ta||(ta={})).VERSION_OBJ_ID="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a",($=tn||(tn={})).LAST_PACKAGE_ID="0xba7ab4c8c39024fa0052bb4f00548a2e7b60742bb4ed0b87bc1d945fd8209102",$.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??$.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(ta.VERSION_OBJ_ID),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(ti||(ti={})).CONFIGURATION_OBJ_ID="0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4",(Y=ts||(ts={})).LAST_PACKAGE_ID="0x5a259db4b1d17fafc09185c9a71bac36f25f9ee462e72894c8610e5a58b79f8f",Y.swap=function(e){t6()(e.protocol===oB.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??Y.LAST_PACKAGE_ID}::movepump_router::swap`,typeArguments:[n?a:r],arguments:[o,t.object(ti.CONFIGURATION_OBJ_ID),t.object(eB.DEX_INFO_OBJ_ID),t.object(ot.SUI_CLOCK_OBJECT_ID),t.pure.u64(s),t.pure.bool(n),t.pure.u64(i)]})},(tc||(tc={})).STATE_OBJ_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",(J=tu||(tu={})).LAST_PACKAGE_ID="0xd615fed37d692280047068e80d3a6bb685aa9d574608054c9df881d6a7378fab",J.swap=function(e){let t,o;t6()(e.protocol===oB.S.OBRIC);let{txb:r,swapContext:a,poolId:n,coinAType:i,coinBType:s,aToB:c,amountIn:u,pythInfoObjectIdMap:l,packageId:_}=e;"priceInfoObjIdA"in e?(t=e.priceInfoObjIdA,o=e.priceInfoObjIdB):(t=l.get(e.pythPriceFeedIdA),o=l.get(e.pythPriceFeedIdB),t6()(t,"Not found priceInfoAId in pythObjectIdMap"),t6()(o,"Not found priceInfoBId in pythObjectIdMap")),r.moveCall({target:`${_??J.LAST_PACKAGE_ID}::obric_router::swap`,typeArguments:[i,s],arguments:[a,r.object(n),r.pure.u64(u),r.pure.bool(c),r.object(tc.STATE_OBJ_ID),r.object(t),r.object(o),r.object(ot.SUI_CLOCK_OBJECT_ID)]})},(H=tl||(tl={})).VERSION_OBJ_ID="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",H.MARKET_OBJ_ID="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",(X=t_||(t_={})).LAST_PACKAGE_ID="0xea409bb08c8a09e4127f859d9c36b8b62ca609282aa1e443091db6b7a7409ee7",X.swap=function(e){t6()(e.protocol===oB.S.SCALLOP);let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,scoinTreasury:s,packageId:c}=e;t.moveCall({target:`${c??X.LAST_PACKAGE_ID}::scallop_router::swap`,typeArguments:[r,a],arguments:[o,t.object(tl.VERSION_OBJ_ID),t.object(tl.MARKET_OBJ_ID),t.object(s),t.pure.u64(i),t.pure.bool(n),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(tp||(tp={})).ORACLE_HOLDER_OBJ_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",(W=td||(td={})).LAST_PACKAGE_ID="0x918a30e2a05d24ea9451e2d2900d055f74e6752f2e10251fa50c7175831b1958",W.swap=function(e){t6()(e.protocol===oB.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:l,pythPriceFeedIdA:_,pythPriceFeedIdB:p,pythInfoObjectIdMap:d,packageId:g}=e,m=d.get(_),f=d.get(p);t6()(m,"Not found priceInfoAId in pythObjectIdMap"),t6()(f,"Not found priceInfoBId in pythObjectIdMap");let b=ox.L.newHolder(t);ox.L.getPrice({txb:t,coinPriceId:_,holder:b,coinOracleId:u}),ox.L.getPrice({txb:t,coinPriceId:p,holder:b,coinOracleId:l}),t.moveCall({target:`${g??W.LAST_PACKAGE_ID}::sevenk_cpmm_router::swap`,typeArguments:[a,n,c],arguments:[o,t.object(r),t.object(tp.ORACLE_HOLDER_OBJ_ID),t.pure.bool(i),t.pure.u64(s)]})},(tg||(tg={})).CONFIGURATION_OBJ_ID="0xe79fff6c77d81f9a8efb729e25bf0037deec42518d40b978f274a4915d7e1ec9",(z=tm||(tm={})).LAST_PACKAGE_ID="0x0a5dc665dc3c1c846a6d1e00811c84cae3510c839ab4dc0873f85dc8908d0606",z.swap=function(e){t6()(e.protocol===oB.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(tg.CONFIGURATION_OBJ_ID),t.object(eW.CONTAINER_OBJ_ID),t.object(ot.SUI_CLOCK_OBJECT_ID),t.pure.bool(r),t.pure.u64(a)]})},(Q=tf||(tf={})).LAST_PACKAGE_ID="0xa6d129c0b314e85d1bc5aecf305d64212bdd5d466457531f4f624fef5f2e7751",Q.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??Q.LAST_PACKAGE_ID}::springsui_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(ot.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.u64(a),t.pure.bool(n)]})},(tb||(tb={})).CONFIG_OBJ_ID="0x881fd0a12ca4fa48991f5c27ba57d17f1ec147fa15f43b3cb760cc3bd7ba9402",(Z=tA||(tA={})).LAST_PACKAGE_ID="0xa314a64962ed4b91a6b4085de4dff2e631fd4c731dbca671a74489955df322ef",Z.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(tb.CONFIG_OBJ_ID),t.pure.bool(a),t.pure.u64(n),t.object("0x6")];t.moveCall({target:`${c??Z.LAST_PACKAGE_ID}::srm_cpmm_router::swap`,typeArguments:[i,s],arguments:u})},(et=(ee=tI||(tI={})).Oracle||(ee.Oracle={})).PACKAGE_ID="0xe84b649199654d18c38e727212f5d8dacfc3cf78d60d0a7fc85fd589f280eb2b",et.getPythPrice=function(e){let{txb:t,oracleRegistryId:o,priceInfoId:r,oracleIndex:a}=e;return t.moveCall({target:`${et.PACKAGE_ID}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(o),t.object(r),t.pure.u64(a),t.object(ot.SUI_CLOCK_OBJECT_ID)]})};var ov=tC||(tC={});function oD(e,t){t6()(e.protocol===oB.S.STEAMM_OMM||e.protocol===oB.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:l,lendingMarketId:_,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 x=tI.Oracle.getPythPrice({txb:o,oracleRegistryId:I,priceInfoId:O,oracleIndex:C}),E=tI.Oracle.getPythPrice({txb:o,oracleRegistryId:I,priceInfoId:M,oracleIndex:T});o.moveCall({target:`${S??ov.LAST_PACKAGE_ID}::${oR(t)}::swap`,typeArguments:[p,n,i,d,g,m],arguments:[r,o.object(a),o.object(u),o.object(l),o.object(_),x,E,o.pure.bool(s),o.pure.u64(c),o.object(ot.SUI_CLOCK_OBJECT_ID)]})}function oR(e){switch(e){case 0:return"steamm_omm_router";case 1:return"steamm_omm_v2_router"}}function oL(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)}ov.LAST_PACKAGE_ID="0xd606880d67c399f349758111a91582d5515f31dd051632402653d872818f594e",ov.swapCpmm=function(e){t6()(e.protocol===oB.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:l,lendingMarketType:_,bCoinAType:p,bCoinBType:d,lpBCoinType:g}=e;t.moveCall({target:`${ov.LAST_PACKAGE_ID}::steamm_cpmm_router::swap`,typeArguments:[_,a,n,p,d,g],arguments:[o,t.object(r),t.object(c),t.object(u),t.object(l),t.pure.bool(i),t.pure.u64(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},ov.swapOmm=function(e){oD(e,0)},ov.swapOmmV2=function(e){oD(e,1)},ov.getOmmRouterModule=oR,(eo=tT||(tT={})).LAST_PACKAGE_ID="0x7a1cf89025a60161e84809784d772263231fad08a7cb76a88ca1ba69e0a656da",eo.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??eo.LAST_PACKAGE_ID}::suiswap_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(er=tS||(tS={})).VERSIONED="0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676",er.POOL_REGISTRY="0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd",(ea=tO||(tO={})).LAST_PACKAGE_ID="0x79957062a7424ed9c2eb83932e4c4fcc3fee67ab3c8f6f874c54e417178bbb7a",ea.swap=function(e){t6()(e.protocol===oB.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??ea.LAST_PACKAGE_ID}::tradeport_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(tS.POOL_REGISTRY),t.pure.u64(s),t.object(tS.VERSIONED),t.pure.bool(n),t.pure.u64(i),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(tM||(tM={})).POOL_VERSIONED="0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f",(en=tx||(tx={})).LAST_PACKAGE_ID="0x512d63711ff38353fb167238b0529001b6871c1727c67ce3bf6ec23556b0f1da",en.swap=function(e){t6()(e.protocol===oB.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??en.LAST_PACKAGE_ID}::turbos_clmm_router::swap`,typeArguments:[r,a,n],arguments:[o,t.object(i),t.object(tM.POOL_VERSIONED),t.pure.bool(s),t.pure.u64(c),t.object(ot.SUI_CLOCK_OBJECT_ID)]})},(tE||(tE={})).CONFIGURATION_OBJ_ID="0xd86685fc3c3d989385b9311ef55bfc01653105670209ac4276ebb6c83d7df928",(ei=th||(th={})).LAST_PACKAGE_ID="0x1fad13f09797aa87a4385d0b1efb2de963ba16742447b1ad5a3b0c5b1d1c588b",ei.swap=function(e){t6()(e.protocol===oB.S.TURBOS_FUN,"Invalid protocol");let{txb:t,swapContext:o,coinBType:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??ei.LAST_PACKAGE_ID}::turbos_fun_router::swap`,typeArguments:[r],arguments:[o,t.object(tE.CONFIGURATION_OBJ_ID),t.object(ot.SUI_CLOCK_OBJECT_ID),t.pure.bool(a),t.pure.u64(n)]})},(ty||(ty={})).VOLO_CERT_METADATA_ID="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",(es=tw||(tw={})).LAST_PACKAGE_ID="0x7c8d95256342f904d5f251776903a17905d87c95f387b3a35cc2aecc23b3c042",es.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??es.LAST_PACKAGE_ID}::volo_router::swap`,arguments:[o,t.object(r),t.object(ty.VOLO_CERT_METADATA_ID),t.object(ot.SUI_SYSTEM_STATE_OBJECT_ID),t.pure.bool(a),t.pure.u64(n)]})},(ec=tP||(tP={})).RouterSwapFunctionMap={[oB.S.AFTERMATH_CPMM]:eM.swap,[oB.S.AFTERMATH_LSD]:eE.swap,[oB.S.ALPHAFI_LSD]:eh.swap,[oB.S.BLASTFUN]:ew.swap,[oB.S.BLUEFIN_CLMM]:eF.swap,[oB.S.BLUEMOVE_CPMM]:ek.swap,[oB.S.BOLT]:eD.swap,[oB.S.CETUS_CLMM]:eL.swap,[oB.S.CETUS_DLMM]:eN.swap,[oB.S.DEEPBOOK_V3]:eK.swap,[oB.S.DIP_CPMM]:eq.swap,[oB.S.FERRA_CLMM]:e$.swap,[oB.S.FERRA_DLMM]:eJ.swap,[oB.S.FLOWX_CPMM]:ez.swap,[oB.S.FLOWX_CLMM]:eX.swap,[oB.S.FULLSAIL_CLMM]:eZ.swap,[oB.S.HAEDAL_CPMM]:e0.swap,[oB.S.HAEDAL_CPMM_V2]:e6.swap,[oB.S.HAEDAL_LSD]:e1.swap,[oB.S.HAEDAL_LSD_WAL]:e2.swap,[oB.S.KRIYA_CLMM]:e8.swap,[oB.S.KRIYA_CPMM]:e9.swap,[oB.S.MAGMA_ALMM]:te.swap,[oB.S.MAGMA_CLMM]:to.swap,[oB.S.METASTABLE]:tr.swap,[oB.S.MOMENTUM_CLMM]:tn.swap,[oB.S.MOVEPUMP]:ts.swap,[oB.S.OBRIC]:tu.swap,[oB.S.SCALLOP]:t_.swap,[oB.S.SEVENK_CPMM]:td.swap,[oB.S.SEVENK_FUN]:tm.swap,[oB.S.SPRINGSUI]:tf.swap,[oB.S.SRM_CPMM]:tA.swap,[oB.S.STEAMM_CPMM]:tC.swapCpmm,[oB.S.STEAMM_OMM]:tC.swapOmm,[oB.S.STEAMM_OMM_V2]:tC.swapOmmV2,[oB.S.SUISWAP_CPMM]:tT.swap,[oB.S.TRADEPORT_CLMM]:tO.swap,[oB.S.TURBOS_CLMM]:tx.swap,[oB.S.TURBOS_FUN]:th.swap,[oB.S.VOLO]:tw.swap},ec.swap=function(e){(0,ec.RouterSwapFunctionMap[e.protocol])(e)},(tF||(tF={})).buildAggregatorSwapTransaction=async function(e){let{tx:t,coinOutType:o,tradePaths:r,pythConnections:a,pythClient:n,packageIdMap:i}=e,s=oF.u.openSwap(e),c=await ox.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];tP.swap({...o,txb:t,swapContext:s,amountIn:o.amountIn,coinAType:a,coinBType:n,packageId:i?.get(o.protocol),pythInfoObjectIdMap:c})}return oF.u.closeSwap({tx:t,coinOutType:o,swapSession:s})};let oj=ox.j.newPythConnections(),oK=ox.j.newPythClient();var oG=tB||(tB={});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=tL.m.convert(s.rawRoute);break;default:throw Error("Unsupported source route")}let c=oN(i.aggregatorFeeRatePercent),u=i.partnerFeeRatePercent?oN(i.partnerFeeRatePercent):void 0,l=i.expectedAmountOut??oL({amountOut:a.amountOut,aggregatorFeeBps:c,partnerFeeBps:u}),_=(o=l,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:l,minAmountOut:_,aggregatorFeeBps:c,partnerFeeBps:u,pythConnections:i.pythConnections??oj,pythClient:i.pythClient??oK}}oG.toMetaAggregatorBuildTxParams=oq,oG.buildTx=function(e){let t=oq(e);return tF.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))}),o$=(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)}},oY={SEVENK:{},FLOWX:{},CETUS:{}};class oJ{client;jsonRpcClient;providers={};options;constructor(e){this.options={providers:{...oY,...e?.providers},clients:e.clients,slippageBps:e?.slippageBps??100,hermesApi:e?.hermesApi??ox.j.PYTH_URLS,partner:e?.partner??oe.qb,partnerCommissionBps:e?.partnerCommissionBps??0,tipBps:e?.tipBps??0},this.client=e.clients.grpc,this.jsonRpcClient=e.clients.jsonRpc}async getQuoteClient(e){let t=this.providers[e];if(t)return t;let o=this.options.providers[e];switch(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=oL({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,ot.normalizeStructTag)(e.coinTypeIn),coinTypeOut:(0,ot.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,ot.normalizeSuiAddress)(o);ow.u.assert((0,ot.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!==oe.qb?this.options.partner:void 0,u=c&&this.options.partnerCommissionBps>0?this.options.partnerCommissionBps/1e4:void 0;return tB.buildTx({buildTxParam:{tx:r,inputCoin:a,expectedAmountOut:t.amountOut,slippagePercent:s,aggregatorFeeRatePercent:this.options.tipBps/1e4,aggregatorFeeRecipient:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff",partnerFeeRatePercent:u,partnerFeeRecipient:c,pythConnections:ox.j.newPythConnections(this.options.hermesApi),pythClient:ox.j.newPythClient(this.jsonRpcClient)},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},oX=new Set([tW.SEVENK,tW.CETUS,tW.FLOWX]);function oW(e){let t=Object.values(tW);return e?t.filter(e=>oX.has(e)):t}class oz{sdk;_astrosAggregator;_aftermathAggregator;_sevenkAggregator;_cetusAggregator;_flowXAggregator;constructor(e){this.sdk=e,this._astrosAggregator=new tV({defaultTradeFee:e.options.tradeFee,astrosApiKey:e.options.astrosApiKey},e.suiJsonRpcClient),this._aftermathAggregator=new tq({defaultTradeFee:e.options.tradeFee,aftermathApiKey:e.options.aftermathApiKey,aftermathApiEndpoint:e.options.aftermathApiEndpoint},e.suiJsonRpcClient),this._sevenkAggregator=new tN({defaultTradeFee:e.options.tradeFee,sevenKApiKey:e.options.sevenKApiKey},e.suiClient),this._cetusAggregator=new tX({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 tW.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(tR())(r.amount_out).multipliedBy(1-e).toFixed(0,3)),o={route:a,aggregatorRoute:r};break}case tW.AFTERMATH:{let e=await this._aftermathAggregator.getTradeRoute(t);if(!e)return null;let r=tq.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case tW.SEVENK:{let e=await this._sevenkAggregator.getTradeRoute(t);if(!e)return null;let r=tN.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case tW.CETUS:{let e=await this._cetusAggregator.getTradeRoute(t);if(!e)return null;let r=tX.toCommonTradeRoutes(e,t.coinInType,t.coinOutType);if(!r)return null;o={route:r,aggregatorRoute:e};break}case tW.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 tW.ASTROS:return this._astrosAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case tW.AFTERMATH:return this._aftermathAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage});case tW.SEVENK:return this._sevenkAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});case tW.CETUS:return this._cetusAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});case tW.FLOWX:return this._flowXAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator})}}async getTradeTransaction(e,t){let o=await this.getTradeRoute(e,{coinInAmount:t.coinInAmount,coinInType:t.coinInType,coinOutType:t.coinOutType,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});if(!o)return null;let r=await this.getTransactionByRoute(e,{walletAddress:t.walletAddress,completeRoute:o.aggregatorRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});return{route:o.route,aggregatorRoute:o.aggregatorRoute,transaction:r}}async getTradeTransactionWithBestRate(e){let t=oW(e.metaAggregator),o=await Promise.all(t.map(async t=>{try{return await this.getTradeRoute(t,e)}catch{return null}})),r=null,a=null;for(let e=0;e<o.length;e++){let n=o[e],i=t[e];if(n&&(!r||n.route.amountOut>r.route.amountOut)){r=n,a=i;continue}}if(!r||!a)return null;let n=await this.getTransactionByRoute(a,{walletAddress:e.walletAddress,completeRoute:r.aggregatorRoute,slippage:e.slippage,tradeFee:e.tradeFee,metaAggregator:e.metaAggregator});return{route:r.route,aggregatorRoute:r.aggregatorRoute,transaction:n}}async getAmountOut(e,t){let o=await this.getTradeRoute(e,t);return o?o.route.amountOut:null}async getBestAmountOut(e){let t=oW(e.metaAggregator),o=null,r=null;for(let a of t){let t=await this.getAmountOut(a,e);null!==t&&(null===o||t>o)&&(o=t,r=a)}return null===o||null===r?null:{amountOut:o,aggregator:r}}}let oQ="0x25fa0eb553dd69fa6a8028f73a38f1df7f289fa88a58ed3d7dc5a5360155bb19",oZ="0x8b1a8ac6e34688cd8f8f8e5fefa9d5fb9e1ff74d2f132f8e208ae5ac9cc530bb",o0="0x13d101f44a0710a5475bec5f492a87b80e03d92d1cf540f26096f65850b23d26";class o6{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({objectId:oZ,include:{json:!0}});t6()(e.object,"Config object not found"),t6()(e.object.json,"Config object has no content");let t=e.object.json,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 tv.Transaction,s=i.splitCoins(i.gas,[i.pure.u64(n)]);i.moveCall({target:`${oQ}::boosting::pay`,typeArguments:[(0,ot.normalizeStructTag)(o)],arguments:[i.object(oZ),i.pure.u64(t),s]}),i.setSender(e);let c=await t8(this.sdk.suiClient,i,e,0);return ob({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 tv.Transaction;s.moveCall({target:`${oQ}::config::add_tier`,typeArguments:[],arguments:[s.object(oZ),s.object(o0),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 t8(this.sdk.suiClient,s,e,0);return ob({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 tv.Transaction;s.moveCall({target:`${oQ}::config::update_tier`,typeArguments:[],arguments:[s.object(oZ),s.object(o0),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 t8(this.sdk.suiClient,s,e,0);return ob({inheritTx:s,sender:e,feeAmount:c},this.sdk.suiClient)}async buildRemoveTierTx({adminAddress:e,tierId:t,currentTx:o}){let r=o||new tv.Transaction;r.moveCall({target:`${oQ}::config::remove_tier`,typeArguments:[],arguments:[r.object(oZ),r.object(o0),r.pure.u64(t)]}),r.setSender(e);let a=await t8(this.sdk.suiClient,r,e,0);return ob({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiver({adminAddress:e,newReceiverAddress:t,currentTx:o}){let r=o||new tv.Transaction;r.moveCall({target:`${oQ}::config::update_fee_receiver`,typeArguments:[],arguments:[r.object(oZ),r.object(o0),r.pure.address(t)]}),r.setSender(e);let a=await t8(this.sdk.suiClient,r,e,0);return ob({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 tv.Transaction,i=n.splitCoins(n.gas,[n.pure.u64(o)]);n.moveCall({target:`${oQ}::boosting::pay_with_admin`,typeArguments:[(0,ot.normalizeStructTag)(r)],arguments:[n.object(o0),n.object(oZ),n.pure.u64(t),n.pure.u64(o),i]}),n.setSender(e);let s=await t8(this.sdk.suiClient,n,e,0);return ob({inheritTx:n,sender:e,feeAmount:s},this.sdk.suiClient)}}class o1{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,oe.tC)(o)||(0,oe.tC)(r),"One of coinInType or coinOutType must be SUI");let a=(0,oe.tC)(o);switch(e){case oT.MOONBAGS:if(a)return await eT.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);return await eT.getSuiAmountAfterSell({poolId:t.poolId,curveAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);case oT.BLAST_FUN:if(a)return await eb.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});return await eb.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,oe.tC)(r)||(0,oe.tC)(a),"One of coinInType or coinOutType must be SUI");let n=(0,oe.tC)(r);switch(e){case oT.MOONBAGS:o=n?await eS.getBuyTransaction(t,this.sdk.suiClient):await eS.getSellTransaction(t,this.sdk.suiClient);break;case oT.BLAST_FUN:o=n?await eA.getBuyTransaction(t,this.sdk.suiClient):await eA.getSellTransaction(t,this.sdk.suiClient);break;default:throw Error(`Unsupported bonding curve platform: ${e}`)}return o}}let o4={prod:{packageId:"0x3dd678c250a667f1551bc4b9e35fd070896f4775dd2900d5cb2910d2aea0b068",configId:"0x3eb7bd15f61b7cc1a9fd36151e9c3d05aa37bfadb0a58c3a26a6c02c2e99f3ca",adminCapId:"0xf375fcb3d95934143766cab2028ab49441fa04ef2ce27c08c01004c455bcbad4",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"},staging:{packageId:"0xa83cd093ce5142649adae10d21fe87d55fa2df4e52a4292c77ba039bb12bfe67",configId:"0x19fb8f91946e58c068fa4238bdd7a531216a0c4dcfaa279a8a02c60cb02f6711",adminCapId:"0xd8139544d054702dfab6de4e9c55f162c8a6f30465935af56cffed99c5e1c2bd",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"}};class o3{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({objectId:o4[this.sdk.env].configId,include:{json:!0}});t6()(e.object,"Config object not found"),t6()(e.object.json,"Config object has no content");let t=e.object.json,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=o4[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 or({account:e,amount:s.toString(),splits:[s.toString()],coinType:r,inheritTx:a},this.sdk.suiClient);c.moveCall({target:`${o4[this.sdk.env].packageId}::subscription::subscribe_cycle_plan`,typeArguments:[r],arguments:[c.object(o4[this.sdk.env].configId),c.pure.u64(t),c.pure.string(o),u]}),c.setSender(e);let l=await t8(this.sdk.suiClient,c,e,0);return ob({inheritTx:c,sender:e,feeAmount:l},this.sdk.suiClient)}async buildBuyMoreCUPlanTx({walletAddress:e,planId:t,reference:o,paidAmount:r,paymentCoinType:a=o4[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 or({account:e,amount:r.toString(),splits:[r.toString()],coinType:a,inheritTx:n},this.sdk.suiClient);s.moveCall({target:`${o4[this.sdk.env].packageId}::subscription::buy_more_cu`,typeArguments:[a],arguments:[s.object(o4[this.sdk.env].configId),s.pure.u64(t),s.pure.string(o),s.pure.u64(r),c]}),s.setSender(e);let u=await t8(this.sdk.suiClient,s,e,0);return ob({inheritTx:s,sender:e,feeAmount:u},this.sdk.suiClient)}async buildSubscribePlanWithAdminTx({walletAddress:e,planId:t,reference:o,customAmount:r,paymentCoinType:a=o4[this.sdk.env].paymentCoinType,currentTx:n}){let i=await this.getConfig();t6()(!i.paused,"Contract is paused");let{tx:s,coinData:c}=await or({account:e,amount:r.toString(),splits:[r.toString()],coinType:a,inheritTx:n},this.sdk.suiClient);s.moveCall({target:`${o4[this.sdk.env].packageId}::subscription::subscribe_plan_with_admin`,typeArguments:[a],arguments:[s.object(o4[this.sdk.env].adminCapId),s.object(o4[this.sdk.env].configId),s.pure.u64(t),s.pure.string(o),s.pure.u64(r),c]}),s.setSender(e);let u=await t8(this.sdk.suiClient,s,e,0);return ob({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 tv.Transaction;i.moveCall({target:`${o4[this.sdk.env].packageId}::config::add_plan`,typeArguments:[],arguments:[i.object(o4[this.sdk.env].configId),i.object(o4[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 t8(this.sdk.suiClient,i,e,0);return ob({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 tv.Transaction;i.moveCall({target:`${o4[this.sdk.env].packageId}::config::update_plan`,typeArguments:[],arguments:[i.object(o4[this.sdk.env].configId),i.object(o4[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 t8(this.sdk.suiClient,i,e,0);return ob({inheritTx:i,sender:e,feeAmount:s},this.sdk.suiClient)}async buildRemovePlanTx({adminAddress:e,planId:t,currentTx:o}){let r=o||new tv.Transaction;r.moveCall({target:`${o4[this.sdk.env].packageId}::config::remove_plan`,typeArguments:[],arguments:[r.object(o4[this.sdk.env].configId),r.object(o4[this.sdk.env].adminCapId),r.pure.u64(BigInt(t))]}),r.setSender(e);let a=await t8(this.sdk.suiClient,r,e,0);return ob({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiverWalletTx({adminAddress:e,newFeeReceiverWallet:t,currentTx:o}){let r=o||new tv.Transaction;r.moveCall({target:`${o4[this.sdk.env].packageId}::config::update_fee_receiver`,typeArguments:[],arguments:[r.object(o4[this.sdk.env].configId),r.object(o4[this.sdk.env].adminCapId),r.pure.address(t)]}),r.setSender(e);let a=await t8(this.sdk.suiClient,r,e,0);return ob({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildSetPausedTx({adminAddress:e,paused:t,currentTx:o}){let r=o||new tv.Transaction;r.moveCall({target:`${o4[this.sdk.env].packageId}::config::set_paused`,typeArguments:[],arguments:[r.object(o4[this.sdk.env].configId),r.object(o4[this.sdk.env].adminCapId),r.pure.bool(t)]}),r.setSender(e);let a=await t8(this.sdk.suiClient,r,e,0);return ob({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}async buildSetAcceptedPaymentTypeTx({adminAddress:e,paymentCoinType:t,currentTx:o}){let r=o||new tv.Transaction;r.moveCall({target:`${o4[this.sdk.env].packageId}::config::set_accepted_payment_type`,typeArguments:[t],arguments:[r.object(o4[this.sdk.env].configId),r.object(o4[this.sdk.env].adminCapId)]}),r.setSender(e);let a=await t8(this.sdk.suiClient,r,e,0);return ob({inheritTx:r,sender:e,feeAmount:a},this.sdk.suiClient)}}class o2{network;env;_suiClient;boostingModule;subscriptionModule;constructor(e,t="mainnet",o="prod"){this.network=t,this.env=o,this._suiClient=e,this.subscriptionModule=new o3(this),this.boostingModule=new o6(this)}get suiClient(){return this._suiClient}}let o5={tradeFeePercent:.01,tradeFeeRecipientAddress:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff"};class o8{network;env;options;_suiGrpcClient;_suiJsonRpcClient;aggregatorModule;curveModule;constructor(e,t="mainnet",o="prod"){this.options=e,this.network=t,this.env=o,this._suiGrpcClient=e.clients.grpc,this._suiJsonRpcClient=e.clients.jsonRpc,this.aggregatorModule=new oz(this),this.curveModule=new o1(this)}get suiClient(){return this._suiGrpcClient}get suiJsonRpcClient(){return this._suiJsonRpcClient}}let o9=require("@mysten/sui/keypairs/ed25519"),o7=.1;class re{suiClient;constructor(e){this.suiClient=e}validatePrivateKey(e,t){t6()(e?.trim(),"Private key is required");let o=o9.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 tv.Transaction,[a]=r.splitCoins(r.gas,[o]);r.transferObjects([a],t),r.setSender(e);let{referenceGasPrice:n}=await this.suiClient.getReferenceGasPrice();r.setGasPrice(n);let i=await t8(this.suiClient,r,e,o7);r=await ob({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,ot.fromBase64)(e.txDraftBase64),{signature:a}=await o.signTransaction(r),n=await this.suiClient.executeTransaction({transaction:r,signatures:[a],include:{effects:!0}}),i="Transaction"===n.$kind?n.Transaction:n.FailedTransaction,{status:s}=i;return{success:s.success,txDigest:i.digest,effects:i.effects,error:s.success?void 0:s.error.message}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Unknown error occurred"}}}async getTransactionStatus(e){t6()(e?.trim(),"Transaction digest is required");try{let t=await this.suiClient.getTransaction({digest:e,include:{effects:!0}}),o="Transaction"===t.$kind?t.Transaction:t.FailedTransaction;if(!o.effects?.status)return"pending";return o.effects.status.success?"success":"failure"}catch(e){if(e instanceof Error&&(e.message.includes("not found")||e.message.includes("Could not find")))return"pending";return"failure"}}}})(),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.SuiGrpcClient=__webpack_exports__.SuiGrpcClient,exports.SuiJsonRpcClient=__webpack_exports__.SuiJsonRpcClient,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.addGasFee=__webpack_exports__.addGasFee,exports.checkIsSui=__webpack_exports__.checkIsSui,exports.denormalizeTokenType=__webpack_exports__.denormalizeTokenType,exports.getAmountAfterFee=__webpack_exports__.getAmountAfterFee,exports.getCoinObjectIdsByAmount=__webpack_exports__.getCoinObjectIdsByAmount,exports.getExpectedReturn=__webpack_exports__.getExpectedReturn,exports.getGrpcFullnodeUrl=__webpack_exports__.getGrpcFullnodeUrl,exports.getJsonRpcFullnodeUrl=__webpack_exports__.getJsonRpcFullnodeUrl,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.getTransactionResultDigest=__webpack_exports__.getTransactionResultDigest,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","SuiGrpcClient","SuiJsonRpcClient","SupportedAggregator","SupportedBondingCurve","TradeFeeOptions","TradeportClmm","TurbosClmm","TurbosFun","USDC_TOKEN_TYPE","Volo","Walrus","addGasFee","checkIsSui","denormalizeTokenType","getAmountAfterFee","getCoinObjectIdsByAmount","getExpectedReturn","getGrpcFullnodeUrl","getJsonRpcFullnodeUrl","getMemezPumpSDK","getMoveObject","getMoveObjectContent","getNeededGasFee","getSplitCoinForTx","getSplitCoinsAfterFee","getTransactionResultDigest","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
- let e;import{__webpack_require__ as t}from"./0~rslib-runtime.js";import{BluefinXTx as o,Config as r,buildTx as a,getQuote as n}from"@bluefin-exchange/bluefin7k-aggregator-sdk";import{Transaction as i}from"@mysten/sui/transactions";import s from"bignumber.js";import c from"@minswap/tiny-invariant";import{SUI_CLOCK_OBJECT_ID as u,SUI_SYSTEM_STATE_OBJECT_ID as l,fromBase64 as d,isValidSuiAddress as p,normalizeStructTag as _,normalizeSuiAddress as m,parseStructTag as f,toHex as g}from"@mysten/sui/utils";import{Aftermath as A,AftermathApi as b,Helpers as I}from"aftermath-ts-sdk";import{AFSUI as T,AFTERMATH as C,ALPHAFI as O,AggregatorClient as M,BLUEFIN as y,BLUEMOVE as h,CETUS as E,CETUSDLMM as S,DEEPBOOKV3 as F,Env as P,FERRACLMM as B,FERRADLMM as w,FLOWXV2 as x,FLOWXV3 as R,FULLSAIL as D,HAEDAL as v,HAEDALHMMV2 as L,HAEDALPMM as k,HAWAL as N,KRIYA as U,KRIYAV3 as j,MAGMA as G,METASTABLE as K,MOMENTUM as q,OBRIC as $,SCALLOP as Y,SEVENK as V,SPRINGSUI as J,STEAMM as H,STEAMM_OMM as X,STEAMM_OMM_V2 as W,SUILEND as z,TURBOS as Q,VOLO as Z}from"@cetusprotocol/aggregator-sdk";import ee from"bn.js";import{AggregatorQuoter as et,Coin as eo,Commission as er,CommissionType as ea,Protocol as en,TradeBuilder as ei}from"@flowx-finance/sdk";import{bcs as es}from"@mysten/sui/bcs";import{Network as ec}from"@interest-protocol/sui-core-sdk";import{Ed25519Keypair as eu}from"@mysten/sui/keypairs/ed25519";import{SuiJsonRpcClient as el,getJsonRpcFullnodeUrl as ed}from"@mysten/sui/jsonRpc";import{SuiPriceServiceConnection as ep,SuiPythClient as e_}from"@pythnetwork/pyth-sui-js";import{getAmountAfterFee as em,getSplitCoinForTx as ef,CLOCK_OBJECT_ID as eg,SUI_METADATA_OBJECT_ID as eA,SUI_TYPE as eb,isSuiCoinType as eI,getNeededGasFee as eT,addGasFee as eC,SUI_ADDRESS_ZERO as eO,getSplitCoinsAfterFee as eM,SUI_FULL_TYPE as ey}from"./832.js";var eh,eE,eS,eF,eP,eB,ew,ex,eR,eD,ev,eL,ek,eN,eU,ej,eG,eK,eq,e$,eY,eV,eJ,eH,eX,eW,ez,eQ,eZ,e0,e1,e4,e6,e3,e2,e5,e8,e9,e7,te,tt,to,tr,ta,tn,ti,ts,tc,tu,tl,td,tp,t_,tm,tf,tg,tA,tb,tI,tT,tC,tO,tM,ty,th,tE,tS,tF,tP,tB,tw,tx,tR,tD,tv,tL,tk,tN,tU,tj,tG,tK,tq,t$,tY,tV,tJ,tH,tX,tW,tz,tQ,tZ,t0,t1,t4,t6,t3,t2,t5,t8,t9,t7,oe,ot,oo,or,oa,on,oi,os,oc,ou,ol,od,op,o_,om,of,og,oA,ob,oI,oT,oC,oO,oM,oy,oh,oE,oS,oF,oP,oB,ow,ox,oR,oD,ov,oL,ok,oN,oU,oj,oG,oK,oq,o$,oY,oV,oJ,oH,oX,oW,oz,oQ,oZ,o0,o1,o4,o6,o3,o2,o5,o8={};t.r(o8),t.d(o8,{Bluefin7kClient:()=>rL});var o9={};t.r(o9),t.d(o9,{CetusClient:()=>rN});var o7={};function re(e){return e===eb?ey:e}function rt(e){return e===ey?eb:e}function ro(e){return e===ey||e===eb}t.r(o7),t.d(o7,{FlowxClient:()=>rU}),(eh=tB||(tB={})).MAX_AMOUNT_IN="18446744073709551615",eh.LAST_PACKAGE_ID="0x7e57926855b32baa3b3cabed89380b8d415606fdedadc18e58bd1ef1e60aee48",eh.openSwap=function(e){let{tx:t,expectedAmountOut:o,minAmountOut:r,coinInType:a,coinOutType:n,inputCoin:i,aggregatorFeeBps:s,aggregatorFeeRecipient:c,partnerFeeRecipient:u,partnerFeeBps:l}=e,[d]=t.moveCall({target:`${eh.LAST_PACKAGE_ID}::aggregator::open_swap`,typeArguments:[a,n],arguments:[t.pure.u64(o),t.pure.u64(r),i,t.pure.u32(s),t.pure.address(c),t.pure.u32(l??0),t.pure.option("address",u)]});return d},eh.closeSwap=function(e){let{tx:t,coinOutType:o,swapSession:r}=e,[a]=t.moveCall({target:`${eh.LAST_PACKAGE_ID}::aggregator::close_swap`,typeArguments:[o],arguments:[r]});return a};var rr=((eE={}).AFTERMATH_CPMM="aftermath_cpmm",eE.AFTERMATH_LSD="aftermath_lsd",eE.ALPHAFI_LSD="alphafi_lsd",eE.BLASTFUN="blastfun",eE.BLUEFIN_CLMM="bluefin_clmm",eE.BLUEMOVE_CPMM="bluemove_cpmm",eE.BOLT="bolt",eE.CETUS_CLMM="cetus_clmm",eE.CETUS_DLMM="cetus_dlmm",eE.DEEPBOOK_V3="deepbook_v3",eE.DIP_CPMM="dip_cpmm",eE.FLOWX_CPMM="flowx_cpmm",eE.FLOWX_CLMM="flowx_clmm",eE.FULLSAIL_CLMM="fullsail_clmm",eE.FERRA_CLMM="ferra_clmm",eE.FERRA_DLMM="ferra_dlmm",eE.HAEDAL_CPMM="haedal_cpmm",eE.HAEDAL_CPMM_V2="haedal_cpmm_v2",eE.HAEDAL_LSD="haedal_lsd",eE.HAEDAL_LSD_WAL="haedal_lsd_wal",eE.KRIYA_CLMM="kriya_clmm",eE.KRIYA_CPMM="kriya_cpmm",eE.MAGMA_ALMM="magma_almm",eE.MAGMA_CLMM="magma_clmm",eE.METASTABLE="metastable",eE.MOMENTUM_CLMM="momentum_clmm",eE.MOVEPUMP="movepump",eE.OBRIC="obric",eE.SCALLOP="scallop",eE.SEVENK_CPMM="sevenk_cpmm",eE.SEVENK_FUN="sevenk_fun",eE.SPRINGSUI="springsui",eE.SRM_CPMM="srm_cpmm",eE.STEAMM_CPMM="steamm_cpmm",eE.SUISWAP_CPMM="suiswap_cpmm",eE.STEAMM_OMM="steamm_omm",eE.STEAMM_OMM_V2="steamm_omm_v2",eE.TRADEPORT_CLMM="tradeport_clmm",eE.TURBOS_CLMM="turbos_clmm",eE.TURBOS_FUN="turbos_fun",eE.VOLO="volo",eE);function ra(e,t){console.error(`NOODLES_SDK_AGGREGATOR_ROUTE_ERROR aggregator=${e} error=${function(e){if(e instanceof Error)return`${e.name}: ${e.message}`;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}(t)}`)}!function(e){let t=new Set(["bluefinx","RFQ"]);e.SUPPORTED_PROTOCOLS=["suiswap","turbos","cetus","bluemove","kriya","kriya_v3","aftermath","deepbook_v3","flowx","flowx_v3","bluefin","springsui","obric","stsui","steamm","steamm_oracle_quoter","steamm_oracle_quoter_v2","magma","haedal_pmm","momentum","sevenk_v1","fullsail","cetus_dlmm","ferra_dlmm","ferra_clmm"];let o={aftermath:e=>{c(e.extra?.poolStructTag,"Aftermath protocol requires poolStructTag");let[t]=i(e.extra.poolStructTag);return{...n(e),protocol:rr.AFTERMATH_CPMM,coinLpType:t}},flowx_v3:e=>{c(e.extra?.swapFeeRate,"flowx_v3 protocol requires swapFeeRate");let t=e.extra.swapFeeRate;return{...n(e),protocol:rr.FLOWX_CLMM,poolFeeRate:t}},turbos:e=>{c(e.extra?.poolStructTag,"turbos protocol requires poolStructTag");let[t,o,r]=i(e.extra.poolStructTag);return{...n(e),protocol:rr.TURBOS_CLMM,coinFeeType:r}},obric:e=>(c(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=>(c(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=>{c(e.extra?.poolStructTag,"sevenk_v1 protocol requires poolStructTag"),c(e.extra?.oracleConfigX,"sevenk_v1 protocol requires oracleConfigX"),c(e.extra?.oracleConfigY,"sevenk_v1 protocol requires oracleConfigY");let t=e.extra.oracles?.[0]?.Pyth?.bytes,o=e.extra.oracles?.[1]?.Pyth?.bytes;c(t,"sevenk_v1 protocol requires pythPriceFeedIdA"),c(o,"sevenk_v1 protocol requires pythPriceFeedIdB");let[r,a,s]=i(e.extra.poolStructTag);return{...n(e),protocol:rr.SEVENK_CPMM,coinLpType:s,pythPriceFeedIdA:t,pythPriceFeedIdB:o,oracleConfigA:e.extra.oracleConfigX,oracleConfigB:e.extra.oracleConfigY}},steamm:e=>{c(e.extra?.poolStructTag,"steamm protocol requires poolStructTag"),c(e.extra?.bankAStructTag,"steamm protocol requires bankAStructTag"),c(e.extra?.lendingMarketA,"steamm protocol requires lendingMarketA"),c(e.extra?.bankA,"steamm protocol requires bankA"),c(e.extra?.bankB,"steamm protocol requires bankB");let[t,o,r,a]=i(e.extra.poolStructTag),[s,u,l]=i(e.extra.bankAStructTag);return{...n(e),protocol: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=>{c(e.extra?.poolStructTag,"steamm_oracle_quoter protocol requires poolStructTag"),c(e.extra?.bankAStructTag,"steamm_oracle_quoter protocol requires bankAStructTag"),c(e.extra?.lendingMarketA,"steamm_oracle_quoter protocol requires lendingMarketA"),c(e.extra?.oracleRegistry,"steamm_oracle_quoter protocol requires oracleRegistry"),c(e.extra?.bankA,"steamm_oracle_quoter protocol requires bankA"),c(e.extra?.bankB,"steamm_oracle_quoter protocol requires bankB"),c(e.extra?.oracleIndexes,"steamm_oracle_quoter protocol requires oracleIndexes"),c(e.extra?.oracles,"steamm_oracle_quoter protocol requires oracles");let[t,o,r,a]=i(e.extra?.poolStructTag),[u,l,d]=i(e.extra.bankAStructTag),[p,_]=e.extra.oracleIndexes;return{...n(e),protocol:rr.STEAMM_OMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:u,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:p,oracleIndexB:_}},steamm_oracle_quoter_v2:e=>{c(e.extra?.poolStructTag,"steamm_oracle_quoter_v2 protocol requires poolStructTag"),c(e.extra?.bankAStructTag,"steamm_oracle_quoter_v2 protocol requires bankAStructTag"),c(e.extra?.lendingMarketA,"steamm_oracle_quoter_v2 protocol requires lendingMarketA"),c(e.extra?.oracleRegistry,"steamm_oracle_quoter_v2 protocol requires oracleRegistry"),c(e.extra?.bankA,"steamm_oracle_quoter_v2 protocol requires bankA"),c(e.extra?.bankB,"steamm_oracle_quoter_v2 protocol requires bankB"),c(e.extra?.oracleIndexes,"steamm_oracle_quoter_v2 protocol requires oracleIndexes"),c(e.extra?.oracles,"steamm_oracle_quoter_v2 protocol requires oracles");let[t,o,r,a]=i(e.extra?.poolStructTag),[u,l,d]=i(e.extra.bankAStructTag),[p,_]=e.extra.oracleIndexes;return{...n(e),protocol:rr.STEAMM_OMM_V2,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:u,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:p,oracleIndexB:_}},cetus:e=>({...n(e),protocol: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=tB.MAX_AMOUNT_IN;return o}function n(e){return{poolId:e.poolId,coinInType:e.assetIn,coinOutType:e.assetOut,amountIn:e.amount,aToB:e.swapXtoY}}function i(e){return f(e||"").typeParams.map(_)}function s(e){let t=e?.Pyth?.bytes||e?.Pyth?.price_identifier?.bytes;return c(t,"Pyth price feed id is not found"),"0x"+g(Uint8Array.from(t))}e.toMetaAggregatorPath=r,e.toMetaAggregatorPaths=a,e.convert=function(e){var t,o,r;let n;c(e.routes,"Invalid raw route: routes is missing");let i=(t=e.routes,n={},t.forEach(e=>{e.hops.forEach(e=>{n[e.poolId]=e.pool})}),n),s=a((o=e.swaps,r=i,o.map(e=>{let t=r[e.poolId],o=rt(e.assetIn),a=rt(e.assetOut),n={type:rt(t?.allTokens?.[0]?.address),decimals:t?.allTokens?.[0]?.decimal},i={type:rt(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}}}(tw||(tw={}));class rn{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:a,metaAggregator:i,supportedProtocols:s}){try{this._config.sevenKApiKey&&r.setApiKey(this._config.sevenKApiKey);let c=i?0:a?a.tradeFeePercent:this._config.defaultTradeFee.tradeFeePercent,u=s??(i?tw.SUPPORTED_PROTOCOLS:void 0);return await n({tokenIn:t,tokenOut:o,amountIn:e.toString(),commissionBps:1e4*c,sources:u})}catch(e){return ra("sevenk",e),null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:r,tradeFee:n,metaAggregator:s}){let c,u;s?(c=0,u=this._config.defaultTradeFee.tradeFeeRecipientAddress):n?(c=n.tradeFeePercent,u=n.tradeFeeRecipientAddress):(c=this._config.defaultTradeFee.tradeFeePercent,u=this._config.defaultTradeFee.tradeFeeRecipientAddress);let l=await a({quoteResponse:t,slippage:r,accountAddress:e,commission:{partner:u,commissionBps:1e4*c}});return l.tx instanceof o?i.from(l.tx.txBytes).build({client:this._suiClient}):(l.tx.setSender(e),l.tx.build({client:this._suiClient}))}}function ri(e){return"bigint"==typeof e?e:"string"==typeof e&&/^\d+$/.test(e)?BigInt(e):e}function rs(e){return{...e,coinIn:e.coinIn?{...e.coinIn,amount:ri(e.coinIn.amount),tradeFee:ri(e.coinIn.tradeFee)}:e.coinIn,coinOut:e.coinOut?{...e.coinOut,amount:ri(e.coinOut.amount),tradeFee:ri(e.coinOut.tradeFee)}:e.coinOut}}(rn||(rn={})).toCommonTradeRoutes=function(e){let t=[];if(!e.routes||0===e.routes.length)return null;for(let o of e.routes){let e=[],r={};for(let t of o.hops){for(let e of t.pool.allTokens)r[e.address]=e.decimal;let o=r[t.tokenIn]??0,a=r[t.tokenOut]??0,n=BigInt(new s(t.tokenInAmount).multipliedBy(10**o).toFixed(0,3)),i=BigInt(new s(t.tokenOutAmount).multipliedBy(10**a).toFixed(0,3));e.push({poolAddress:t.poolId,coinIn:t.tokenIn,coinOut:t.tokenOut,amountIn:n,amountOut:i})}if(0===e.length)continue;let a=r[o.tokenIn]??0,n=r[o.tokenOut]??0,i=BigInt(new s(o.tokenInAmount).multipliedBy(10**a).toFixed(0,3)),c=BigInt(new s(o.tokenOutAmount).multipliedBy(10**n).toFixed(0,3));t.push({paths:e,coinIn:o.tokenIn,coinOut:o.tokenOut,amountIn:i,amountOut:c})}return 0===t.length?null:{coinIn:e.tokenIn,coinOut:e.tokenOut,amountIn:BigInt(e.swapAmountWithDecimal),amountOut:BigInt(e.returnAmountAfterCommissionWithDecimal),routes:t}};class rc{_config;_aftermathClient;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async aftermathClient(){if(this._aftermathClient)return this._aftermathClient;let e=await A.create({network:"MAINNET",baseUrl:this._config.aftermathApiEndpoint}),t=await e.getAddresses(),o=await A.create({network:"MAINNET",baseUrl:this._config.aftermathApiEndpoint,api:new b(this._suiClient,t)});if(this._config.aftermathApiKey){let e=I.keypairFromPrivateKey(this._config.aftermathApiKey);await o.Auth().init({async signMessageCallback({message:t}){let{signature:o}=await e.signPersonalMessage(t);return{signature:o}},walletAddress:e.toSuiAddress()})}return this._aftermathClient=o,o}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r}){try{let a;a=r?{recipient:r.tradeFeeRecipientAddress,feePercentage:r.tradeFeePercent}:{recipient:this._config.defaultTradeFee.tradeFeeRecipientAddress,feePercentage:this._config.defaultTradeFee.tradeFeePercent};let n=await this.aftermathClient();return await n.Router().getCompleteTradeRouteGivenAmountIn({coinInAmount:e,coinInType:t,coinOutType:o,externalFee:a})}catch(e){return ra("aftermath",e),null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o}){let r=await this.aftermathClient(),a=await r.Router().getTransactionForCompleteTradeRoute({completeRoute:function(e){if("object"!=typeof e||null===e)return e;let t=rs(e);return{...t,routes:Array.isArray(t.routes)?t.routes.map(e=>{let t=rs(e);return{...t,portion:ri(t.portion),paths:Array.isArray(t.paths)?t.paths.map(e=>rs(e)):t.paths}}):t.routes,feeBreakdown:Array.isArray(t.feeBreakdown)?t.feeBreakdown.map(e=>({...e,amount:ri(e.amount)})):t.feeBreakdown}}(e),walletAddress:t,slippage:o+(e.netTradeFeePercentage??0),isSponsoredTx:!1});return a.setSender(t),a.build({client:this._suiClient})}}(rc||(rc={})).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 ru{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r}){try{let a;a=r?{fee:1e4*r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:1e4*this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let{getQuote:n}=await import("@naviprotocol/astros-aggregator-sdk");return await n(t,o,e,this._config.astrosApiKey,{byAmountIn:!0,serviceFee:a})}catch(e){return ra("astros",e),null}}returnMergedCoins(e,t,o){if(t.length<2)return e.object(t[0].coinObjectId);let r=0,a=[];t.sort((e,t)=>Number(t.balance)-Number(e.balance)).slice(1).forEach(e=>{r>=o||(r+=Number(e.balance),a.push(e.coinObjectId))});let n=t[0].coinObjectId;return e.mergeCoins(n,a),e.object(n)}async getTransaction({completeRoute:e,walletAddress:t,slippage:o,tradeFee:r}){var a;let n,c;n=r?{fee:r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let u=new s(e.amount_out).multipliedBy(1-o-n.fee).toNumber(),l=new i,{buildSwapPTBFromQuote:d,getCoins:p}=await import("@naviprotocol/astros-aggregator-sdk"),_=this._suiClient;if("0x2::sui::SUI"===(a=e.from)||"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"===a)c=l.splitCoins(l.gas,[l.pure.u64(e.amount_in)]);else{let o=await p(_,t,e.from),r=this.returnMergedCoins(l,o.data,Number.parseFloat(e.amount_in));c=l.splitCoins(r,[l.pure.u64(e.amount_in)])}let m=await d(t,l,u,c,e,void 0,!1,this._config.astrosApiKey,{serviceFee:n});return l.transferObjects([m],t),l.setSender(t),l.build({client:this._suiClient})}}(ru||(ru={})).toCommonTradeRoutes=function(e,t,o){if(0===e.routes.length)return null;let r=[];for(let t of e.routes){let e=[];for(let o of t.path)e.push({poolAddress:o.id,coinIn:o.from,coinOut:o.target,amountIn:BigInt(o.amount_in),amountOut:BigInt(o.amount_out)});0!==e.length&&r.push({amountIn:BigInt(t.amount_in),amountOut:BigInt(t.amount_out),coinIn:e[0].coinIn,coinOut:e[e.length-1].coinOut,paths:e})}return 0===r.length?null:{coinIn:t,coinOut:o,amountIn:BigInt(e.amount_in),amountOut:BigInt(e.amount_out),routes:r}},(tx||(tx={})).equals=function(e,t){return e.tradeFeePercent===t.tradeFeePercent&&e.tradeFeeRecipientAddress===t.tradeFeeRecipientAddress},(eS=tR||(tR={})).UNIVERSAL_META_VAULT_INTEGRATION_PACKAGE_ID="0xfd12517a9fc87c6a1f2357ad13b3421fb27a8bd7ca07d5fd5934ac35733baa47",(eF=eS.MetaCoinType||(eS.MetaCoinType={})).SUPER_SUI="0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI",eF.MUSD="0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD",eF.METH="0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH",eS.VERSION_OBJ_ID="0x4696559327b35ff2ab26904e7426a1646312e9c836d5c6cff6709a5ccc30915c",eS.createCap=function(e){let t,{txb:o,coinType:r,metaCoin:a,createCapAllTypeParams:n,whitelistedAppId:i,poolId:s,pythInfoObjectIdMap:l,createCapPackageId:d,createCapModule:p,createCapFunc:_}=e,m=[a.toString()];switch(n&&m.push(r),e.metaCoin){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":t=[o.object(i),o.object(s),o.object(e.registryId)];break;case"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD":{let r=l.get(e.pythPriceFeedIdMeta);c(r,"Not found priceMetaId in pythObjectIdMap"),t=[o.object(i),o.object(s),o.object(r),o.object(u)];break}case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":{let r=l.get(e.pythPriceFeedIdMeta);c(r,"Not found priceId in pythObjectIdMap");let a=l.get(e.pythPriceFeedIdEth);c(a,"Not found priceEthFeedId in pythObjectIdMap"),t=[o.object(i),o.object(s),o.object(r),o.object(a),o.object(u)];break}default:throw Error("Invalid MetaCoin: "+a.toString())}return o.moveCall({target:`${d}::${p}::${_}`,typeArguments:m,arguments:t})},eS.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)}},eS.isMetaCoinType=function(e){return Object.values(eS.MetaCoinType).map(e=>e.toString()).includes(e)},eS.getCreateCapAllTypeParams=function(e,t){switch(e){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":return t===eS.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=[E,U,x,R,j,Q,C,v,Z,T,h,F,Y,z,y,k,O,J,H,K,$,N,X,q,W,G,V,L,D,S,w,B];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=tB.MAX_AMOUNT_IN),o.push(i)}return o}e.TO_META_AGGREGATOR_PATH_FN_MAP={[K]:e=>{let t=r(e),o=e.extendedDetails,a=e.direction?e.target:e.from;c(o&&void 0!==o.metastable_create_cap_pkg_id&&void 0!==o.metastable_create_cap_module&&void 0!==o.metastable_create_cap_all_type_params&&void 0!==o.metastable_whitelisted_app_id,`METASTABLE missing required extendedDetails for pool ${e.id}.`);let n={createCapPackageId:o.metastable_create_cap_pkg_id,createCapModule:o.metastable_create_cap_module,createCapAllTypeParams:o.metastable_create_cap_all_type_params,whitelistedAppId:o.metastable_whitelisted_app_id};switch(a){case tR.MetaCoinType.SUPER_SUI:return c(o.metastable_registry_id,`METASTABLE_SUPER_SUI protocol requires 'metastable_registry_id' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:rr.METASTABLE,metaCoin:a,registryId:o.metastable_registry_id};case tR.MetaCoinType.MUSD:return c(o.metastable_price_seed,`METASTABLE_MUSD protocol requires 'metastable_price_seed' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:rr.METASTABLE,metaCoin:a,pythPriceFeedIdMeta:o.metastable_price_seed};case tR.MetaCoinType.METH:return c(o.metastable_price_seed&&o.metastable_eth_price_seed,`METASTABLE_ETH protocol requires 'metastable_price_seed' and 'metastable_eth_price_seed' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol: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.`)}},[F]:e=>({...r(e),protocol:rr.DEEPBOOK_V3}),[C]:e=>{let t=e.extendedDetails;return c(t?.aftermath_lp_supply_type,`AFTERMATH_CPMM protocol requires 'aftermath_lp_type' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rr.AFTERMATH_CPMM,coinLpType:t.aftermath_lp_supply_type}},[R]:e=>({...r(e),protocol:rr.FLOWX_CLMM,poolFeeRate:String(1e6*e.feeRate)}),[k]:e=>{let t=e.extendedDetails;return c(t?.haedal_pmm_base_price_seed&&t?.haedal_pmm_quote_price_seed,`HAEDAL_CPMM protocol requires 'haedal_pyth_price_a_id' and 'haedal_pyth_price_b_id' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rr.HAEDAL_CPMM,pythPriceFeedIdA:t.haedal_pmm_base_price_seed,pythPriceFeedIdB:t.haedal_pmm_quote_price_seed}},[L]:e=>{let t=e.extendedDetails;return c(t?.haedalhmmv2_base_price_seed,`HAEDAL_CPMM_V2 protocol requires 'haedal_pyth_price_base_id' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rr.HAEDAL_CPMM_V2,pythPriceFeedIdBase:t.haedalhmmv2_base_price_seed}},[Y]:e=>(c(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}),[H]:e=>{let t=e.extendedDetails;return c(t?.steamm_bank_a&&t?.steamm_bank_b&&t?.steamm_lending_market&&t?.steamm_lending_market_type&&t?.steamm_btoken_a_type&&t?.steamm_btoken_b_type&&t?.steamm_lp_token_type,`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}},[X]:e=>{let t=e.extendedDetails;return c(t?.steamm_bank_a&&t?.steamm_bank_b&&t?.steamm_lending_market&&t?.steamm_lending_market_type&&t?.steamm_btoken_a_type&&t?.steamm_btoken_b_type&&t?.steamm_lp_token_type&&t?.steamm_oracle_pyth_price_seed_a&&t?.steamm_oracle_pyth_price_seed_b&&t?.steamm_oracle_registry_id&&t?.steamm_oracle_index_a&&t?.steamm_oracle_index_b,`STEAMM_OMM 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)}},[W]:e=>{let t=e.extendedDetails;return c(t?.steamm_bank_a&&t?.steamm_bank_b&&t?.steamm_lending_market&&t?.steamm_lending_market_type&&t?.steamm_btoken_a_type&&t?.steamm_btoken_b_type&&t?.steamm_lp_token_type&&t?.steamm_oracle_pyth_price_seed_a&&t?.steamm_oracle_pyth_price_seed_b&&t?.steamm_oracle_registry_id&&t?.steamm_oracle_index_a&&t?.steamm_oracle_index_b,`STEAMM_OMM_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)}},[$]: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 c(t?.sevenk_lp_cap_type&&t?.sevenk_coin_a_price_seed&&t?.sevenk_coin_b_price_seed&&t?.sevenk_oracle_config_a&&t?.sevenk_oracle_config_b,`SEVENK_CPMM protocol requires sevenk fields in extendedDetails for pool ${e.id}.`),{...r(e),protocol: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}},[Q]:e=>(c(e.extendedDetails?.turbos_fee_type,`TURBOS_CLMM protocol requires 'coinFeeType' parameter for pool ${e.id}. Provide it via the parametersMap argument.`),{...r(e),protocol:rr.TURBOS_CLMM,coinFeeType:e.extendedDetails.turbos_fee_type}),[T]:e=>({...r(e),protocol:rr.AFTERMATH_LSD}),[O]:e=>({...r(e),protocol:rr.ALPHAFI_LSD}),[y]:e=>({...r(e),protocol:rr.BLUEFIN_CLMM}),[h]:e=>({...r(e),protocol:rr.BLUEMOVE_CPMM}),[E]:e=>({...r(e),protocol:rr.CETUS_CLMM}),[S]:e=>({...r(e),protocol:rr.CETUS_DLMM}),[B]:e=>({...r(e),protocol:rr.FERRA_CLMM}),[w]:e=>({...r(e),protocol:rr.FERRA_DLMM}),[x]:e=>({...r(e),protocol:rr.FLOWX_CPMM}),[D]:e=>({...r(e),protocol:rr.FULLSAIL_CLMM}),[v]:e=>({...r(e),protocol:rr.HAEDAL_LSD}),[N]:e=>({...r(e),protocol:rr.HAEDAL_LSD_WAL}),[U]:e=>({...r(e),protocol:rr.KRIYA_CPMM}),[j]:e=>({...r(e),protocol:rr.KRIYA_CLMM}),[G]:e=>({...r(e),protocol:rr.MAGMA_CLMM}),[q]:e=>({...r(e),protocol:rr.MOMENTUM_CLMM}),[z]:e=>({...r(e),protocol:rr.SPRINGSUI}),[J]:e=>({...r(e),protocol:rr.SPRINGSUI}),[Z]: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)}}}(tD||(tD={}));class rl{_config;_suiClient;_cetusClient;getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t,overlayFeeRate:o}){return{client:this._suiClient,overlayFeeReceiver:t,overlayFeeRate:o,env:P.Mainnet,signer:e,...this._config.cetusApiKey&&this._config.cetusApiEndpoint?{apiKey:this._config.cetusApiKey,endpoint:this._config.cetusApiEndpoint}:{},partner:this._config.cetusPartnerId}}constructor(e,t){this._config=e,this._suiClient=t}cetusClient(e,t,o){return o?new M(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:void 0,overlayFeeRate:void 0})):t&&!tx.equals(t,this._config.defaultTradeFee)?new M(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t.tradeFeeRecipientAddress,overlayFeeRate:t.tradeFeePercent})):(this._cetusClient||(this._cetusClient=new M(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:this._config.defaultTradeFee.tradeFeeRecipientAddress,overlayFeeRate:this._config.defaultTradeFee.tradeFeePercent}))),this._cetusClient)}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){try{let i=this.cetusClient(void 0,r,a),s=n??(a?tD.SUPPORTED_PROTOCOLS:void 0);return await i.findRouters({from:t,target:o,amount:new ee(e.toString()),byAmountIn:!0,providers:s})}catch(e){return ra("cetus",e),null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o,tradeFee:r,metaAggregator:a}){let n=this.cetusClient(t,r,a),s=new i;return s.setSender(t),await n.fastRouterSwap({router:e,txb:s,slippage:o}),s.build({client:this._suiClient})}}(rl||(rl={})).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 rd=((eP={}).ASTROS="ASTROS",eP.AFTERMATH="AFTERMATH",eP.SEVENK="7K",eP.CETUS="CETUS",eP.FLOWX="FLOWX",eP);!function(e){let t=[en.HOP_FUN,en.FLOWX_PMM,en.DEEPBOOK,en.IPX_TIDE,en.METASTABLE];e.SUPPORTED_PROTOCOLS=Object.values(en).filter(e=>!t.includes(e));let o={[en.FLOWX_V2]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rr.FLOWX_CPMM}),[en.FLOWX_V3]:t=>(c(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FLOWX_CLMM,poolFeeRate:t.poolFee.toString()}),[en.CETUS]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.CETUS_CLMM}),[en.CETUS_DLMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.CETUS_DLMM}),[en.AFTERMATH]:t=>(c(t.lpCoinType,`AFTERMATH protocol requires lpCoinType for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rr.AFTERMATH_CPMM,coinLpType:t.lpCoinType}),[en.AFTERMATH_LSD]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.AFTERMATH_LSD}),[en.ALPHA_FI]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.ALPHAFI_LSD}),[en.BLUEFIN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.BLUEFIN_CLMM}),[en.BLUEMOVE]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rr.BLUEMOVE_CPMM}),[en.DEEPBOOK_V3]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.DEEPBOOK_V3}),[en.FERRA_CLMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FERRA_CLMM}),[en.FERRA_DLMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FERRA_DLMM}),[en.FULL_SAIL]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FULLSAIL_CLMM}),[en.HAEDAL]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.HAEDAL_LSD}),[en.HAEDAL_PMM]:t=>{let o=t.oracles;return c(o&&o.length>=2,`HAEDAL_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.HAEDAL_CPMM,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId}},[en.KRIYA_DEX]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.KRIYA_CPMM}),[en.KRIYA_V3]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.KRIYA_CLMM}),[en.MAGMA_FINANCE]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.MAGMA_CLMM}),[en.MAGMA_ALMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.MAGMA_ALMM}),[en.MOMENTUM_FINANCE]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.MOMENTUM_CLMM}),[en.OBRIC]:t=>(c(t.xPriceId&&t.yPriceId,`OBRIC protocol requires price feeds for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.OBRIC,priceInfoObjIdA:t.xPriceId,priceInfoObjIdB:t.yPriceId}),[en.SPRING_SUI]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.SPRINGSUI}),[en.STEAMM]:t=>{c(void 0!==t.bankXInfo&&void 0!==t.bankYInfo,`STEAMM protocol requires bank info for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),c(void 0!==t.quoterType,`quoterType is required for pool ${t.pool.id}`),c(void 0!==t.poolInfo,`poolInfo is required for pool ${t.pool.id}`),c(void 0!==t.protocolConfig&&void 0!==t.protocolConfig.oracleRegistryId,`protocolConfig is required for pool ${t.pool.id}`);let o=t.oracles,r=e.toMetaAggregatorBasePath(t),n=t.xForY;switch(t.quoterType){case"constant_product":return{...r,aToB:n,protocol:rr.STEAMM_CPMM,bankAId:n?t.bankXInfo.bankId:t.bankYInfo.bankId,bankBId:n?t.bankYInfo.bankId:t.bankXInfo.bankId,lendingMarketId:t.bankXInfo.lendingMarketId,lendingMarketType:t.bankXInfo.lendingMarketType,bCoinAType:n?t.bankXInfo.bTokenType:t.bankYInfo.bTokenType,bCoinBType:n?t.bankYInfo.bTokenType:t.bankXInfo.bTokenType,lpBCoinType:t.poolInfo.lpTokenType};case"oracle":case"oracle_v2":{(void 0===o||o.length<2)&&console.error("[FlowXAggregatorConverter][STEAMM_OMM] Missing oracle price feeds",{reason:"oracles is undefined or has less than 2 entries",...a(t)}),c(void 0!==o&&o.length>=2,`STEAMM_OMM protocol requires oracle price feeds for pool ${t.pool.id}.`);let e=o[0],i=o[1],s=[void 0===e.oracleId?"oracles[0].oracleId":void 0,void 0===i.oracleId?"oracles[1].oracleId":void 0,void 0===e.oracleIndex?"oracles[0].oracleIndex":void 0,void 0===i.oracleIndex?"oracles[1].oracleIndex":void 0].filter(e=>void 0!==e);return s.length>0&&console.error("[FlowXAggregatorConverter][STEAMM_OMM] Missing oracle ids",{reason:"STEAMM OMM requires oracleId and oracleIndex for both oracle entries",missingFields:s,...a(t)}),c(void 0!==e.oracleId&&void 0!==i.oracleId&&void 0!==e.oracleIndex&&void 0!==i.oracleIndex,`STEAMM_OMM protocol requires oracle ids for pool ${t.pool.id}.`),{...r,aToB:n,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:i.priceId,oracleRegistryId:t.protocolConfig.oracleRegistryId,oracleIndexA:e.oracleIndex.toString(),oracleIndexB:i.oracleIndex.toString()}}default:throw Error(`Unsupported quoter type: ${t.quoterType} for pool ${t.pool.id}`)}},[en.SEVENK_V1]:t=>{let o=t.oracles;return c(o&&o.length>=2,`SEVENK_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),c(t.poolStructTag,`SEVENK_V1 protocol requires poolStructTag for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.SEVENK_CPMM,coinLpType:t.poolStructTag,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId,oracleConfigA:o[0].oracleId??"",oracleConfigB:o[1].oracleId??""}},[en.SUI_REWARDS]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.SRM_CPMM}),[en.TURBOS_FIANCE]:t=>(c(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(">",""):""}),[en.VOLO_LSD]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.VOLO}),[en.TRADEPORT]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),c(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,poolFeeRate:t.poolFee.toString(),protocol:rr.TRADEPORT_CLMM}),[en.TURBOS_FUN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.TURBOS_FUN}),[en.BLUEMOVE_FUN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,expectedAmountOut:t.amountOut.toString(),protocol:rr.MOVEPUMP}),[en.SEVEN_K_FUN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.SEVENK_FUN}),[en.DIPCOIN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.DIP_CPMM}),[en.BOLT]:t=>(c(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((t,r)=>{try{return e.toMetaAggregatorPath(t)}catch(e){throw console.error("[FlowXAggregatorConverter] Failed to convert FlowX swap route",{routeIndex:r,routeCount:o.length,poolId:t.pool.id,protocol:t.protocol(),coinInType:t.input.coinType,coinOutType:t.output.coinType,amountIn:t.amountIn.toString(),amountOut:t.amountOut.toString(),error:e}),e}});for(let e of r.values())a[e].amountIn=tB.MAX_AMOUNT_IN;return a}function a(e){return{poolId:e.pool.id,quoterType:e.quoterType,xForY:e.xForY,coinInType:e.input.coinType,coinOutType:e.output.coinType,amountIn:e.amountIn.toString(),amountOut:e.amountOut.toString(),oracleCount:e.oracles?.length??0,oracles:e.oracles?.map((e,t)=>({index:t,priceId:e.priceId,oracleId:e.oracleId,oracleIndex:e.oracleIndex,hasPriceId:void 0!==e.priceId&&""!==e.priceId,hasOracleId:void 0!==e.oracleId&&""!==e.oracleId,hasOracleIndex:void 0!==e.oracleIndex})),protocolConfig:{oracleRegistryId:e.protocolConfig?.oracleRegistryId,hasOracleRegistryId:e.protocolConfig?.oracleRegistryId!==void 0},bankXInfo:e.bankXInfo,bankYInfo:e.bankYInfo,poolInfo:e.poolInfo,poolStructTag:e.poolStructTag}}e.toMetaAggregatorBasePath=e=>({poolId:e.pool.id,coinInType:e.input.coinType,coinOutType:e.output.coinType,amountIn:e.amountIn.toString()}),e.toMetaAggregatorPath=e=>{let r=e.protocol();if(t.includes(r))throw Error(`Unsupported protocol: ${r}`);return(0,o[r])(e)},e.toMetaAggregatorPaths=r,e.convert=function(e){return{coinInType:e.coinIn.coinType,coinOutType:e.coinOut.coinType,amountOut:e.amountOut.toString(),tradePaths:r(e.routes)}}}(tv||(tv={}));class rp{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}getCommission(e,t,o){let r,a;if(!o)return t?(r=t.tradeFeePercent,a=t.tradeFeeRecipientAddress):(r=this._config.defaultTradeFee.tradeFeePercent,a=this._config.defaultTradeFee.tradeFeeRecipientAddress),new er(a,new eo(e),ea.PERCENTAGE,1e6*r,!0)}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){let i=new et("mainnet",this._config.flowxApiKey),s=n??(a?tv.SUPPORTED_PROTOCOLS:void 0);try{return await i.getRoutes({tokenIn:t,tokenOut:o,amountIn:e.toString(),commission:this.getCommission(t,r,a),includeSources:s})}catch(e){return ra("flowx",e),null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:o,tradeFee:r,metaAggregator:a}){let n=new ei("mainnet",t.routes).sender(e).slippage(1e6*o),i=this.getCommission(t.coinIn.coinType,r,a);return i&&(n=n.commission(i)),n.build().buildTransaction({client:this._suiClient}).then(t=>(t.setSender(e),t.build({client:this._suiClient})))}}async function r_(e,t){return(await rm(e,t)).fields}async function rm(e,t){let o=(await e.getObject({objectId:t,include:{json:!0,objectBcs:!0}})).object;c(o,"Pool object not found or has no content"),c(o.json,"Pool object not found or has no content"),c(o.objectBcs,"Pool object not found or has no content");let r=es.Object.parse(o.objectBcs);return c("Move"===r.data.$kind,"Pool object is not a Move object"),{dataType:"moveObject",fields:o.json,hasPublicTransfer:r.data.Move.hasPublicTransfer,type:o.type}}(rp||(rp={})).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}},(eB=tL||(tL={})).PACKAGE_ID_V4="0x7e6aa6e179466ab2814425a780b122575296d011119fa69d27f289f5a28814bd",eB.MEMEZ_AV_OBJECT_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",((ew=tk||(tk={})).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 rf=tN||(tN={});function rg(e){return c(BigInt(e)<=BigInt(1e4),"Bps overflow"),BigInt(e)}rf.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},rf.sub=function(e,t){return c(BigInt(e.pos0)>=BigInt(t.pos0),"Bps underflow"),{pos0:(BigInt(e.pos0)-BigInt(t.pos0)).toString()}},rf.value=function(e){return BigInt(e.pos0)},rf.new_=function(e){return{pos0:rg(e).toString()}},rf.assertOverflow=rg,((ex=tU||(tU={})).MemezFun||(ex.MemezFun={})).isSniperProtectedMemezFun=async function(e,t){return(await r_(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=tN.calcUp(tN.sub(r,o),t);if(t>=a)return a;throw Error(`Insufficient amount to cover fee. Required: ${a}, provided: ${t}`)}throw Error("Unknown fee variant")},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 tN.calcUp(tN.sub(r,t),o)}throw Error("Unknown fee variant")},(ex.MemezBurner||(ex.MemezBurner={})).calculate=function(e,t){if(tN.value(e.fee.fields)===BigInt(0)||t===BigInt(0)||t>=BigInt(e.target_liquidity))return tN.new_(0);let o=BigInt(1e4);return tN.new_(tk.U64.mulDivUp(tN.value(e.fee.fields),tk.U64.mulDivUp(t,o,BigInt(e.target_liquidity)),o))},(eD=ex.MemezPump||(ex.MemezPump={})).getPumpState=async function(e,t){return await r_(e,t.inner_state)},eD.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},eD.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=tN.calcUp(c,a),l=a-(tN.value(c)!==BigInt(0)?u:BigInt(0)),d=(s+i)*l/(n+l);d>i&&(d=i);let p=ex.MemezFees.takeWithDiscount(o.quote_swap_fee,d,o.quote_referrer_fee.fields);return d-p},(ev=tj||(tj={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,n=await r_(t,r),i=await tU.MemezPump.getPumpState(t,n);return o=em(o,a),tU.MemezPump.pump(i,o)},ev.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,n=await r_(t,r),i=await tU.MemezPump.getPumpState(t,n);return em(tU.MemezPump.dump(i,o),a)};let rA="0x62412b7268c35f3808336aee57a52836501f40b8ba5d936f8ad275e672befd04";async function rb(e,t){let o,r,{inputAmount:a,accountAddress:n,frontendFee:s,frontendFeeRecipient:u,extendTx:l,isSponsored:d}=e;c(e.inCoinType===ey||e.inCoinType===eb,"Input must be SUI");let{tx:p,coinIn:_}=l||{},m=eM(a,s||"0"),f=p||new i;if(_)o=f.splitCoins(_,m),tG.transferOrDestroyZeroCoin(f,ey,_,n);else{let{coinData:e}=await ef({account:n,amount:a,splits:m,coinType:ey,inheritTx:f,isSponsored:d||!1},t);o=e}if(s&&u){let[e,t]=o;r=e,f.transferObjects([t],f.pure.address(u||n))}else[r]=o;return{tx:f,coinOut:r}}async function rI(e,t,o){if(c(t.outCoinType===ey||t.outCoinType===eb,"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:`${rA}::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}}(tG||(tG={})).transferOrDestroyZeroCoin=function(e,t,o,r){e.moveCall({target:`${rA}::utils::transfer_or_destroy`,typeArguments:[t],arguments:[o,e.pure.address(r)]})};var rT=tK||(tK={});async function rC(e){let t=e||new i;return t.moveCall({target:`${tL.PACKAGE_ID_V4}::memez_allowed_versions::get_allowed_versions`,arguments:[t.object(tL.MEMEZ_AV_OBJECT_ID)],typeArguments:[]})}function rO(e){switch(e){case"mainnet":return"https://fullnode.mainnet.sui.io:443";case"testnet":return"https://fullnode.testnet.sui.io:443";case"devnet":return"https://fullnode.devnet.sui.io:443";case"localnet":return"http://127.0.0.1:9000";default:throw Error(`Unknown network: ${e}`)}}function rM(e){return rO(e)}function ry(e){return"Transaction"===e.$kind?e.Transaction.digest:e.FailedTransaction.digest}rT.getAllowedVersions=rC,rT.buildBuyTx=async function(e,t){c(!await tU.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 rb(e,t);c(r,"Coin out is required");let a=o.moveCall({target:`${tL.PACKAGE_ID_V4}::memez_pump::pump`,typeArguments:[e.outCoinType,ey],arguments:[o.object(e.poolId),r,o.pure.vector("address",[]),o.pure.vector("vector<u8>",[]),o.pure.u64(e.minAmountOut),await rC(o)]});return{tx:o,coinOut:a}},rT.buildSellTx=async function(e,t){c(e.outCoinType===ey||e.outCoinType===eb,"Output must be SUI");let o=await r_(t,e.poolId),{tx:r,coinData:a}=await ef({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[n]=a,[i]=r.moveCall({target:`${tL.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 rC(r)]});return await rI(r,e,i)};let rh={network:ec.MAINNET,fullNodeUrl:rO("mainnet")};async function rE(){if(!e){let{MemezPumpSDK:t}=await import("@interest-protocol/memez-fun-sdk");e=new t(rh)}return e}(eL=tq||(tq={})).getCurveAmountAfterBuy=async function(e){let{suiAmount:t,poolId:o,frontendFee:r}=e;t=em(t,r);let{memeAmountOut:a}=await (await rE()).quotePump({pool:o,amount:t});return a},eL.getSuiAmountAfterSell=async function(e){let{curveAmount:t,poolId:o,frontendFee:r}=e,{quoteAmountOut:a}=await (await rE()).quoteDump({pool:o,amount:t});return em(a,r)};var rS=t$||(t$={});async function rF(e,t){let{tx:o,coinOut:r}=await rb(e,t);c(r,"Coin out is required");let{memeCoin:a,tx:n}=await (await rE()).pump({pool:e.poolId,quoteCoin:r,minAmountOut:e.minAmountOut,tx:o});return{tx:n,coinOut:a}}async function rP(e,t){c(eI(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await ef({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,{quoteCoin:n,tx:i}=await (await rE()).dump({pool:e.poolId,memeCoin:a,tx:o,minAmountOut:e.minAmountOut});return await rI(i,e,n)}rS.buildBuyTx=rF,rS.buildSellTx=rP,rS.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eI(t),"coinInType must be SUI for buy transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await tq.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0})).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rF({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eT(u,d,n,0);return(d=await eC({inheritTx:d,sender:n,feeAmount:_,suiInputAmount:e},u)).build({client:u})},rS.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eI(o),"coinOutType must be SUI for sell transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await tq.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0})).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rP({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eT(u,d,n,0);return(d=await eC({inheritTx:d,sender:n,feeAmount:_},u)).build({client:u})};var rB=((ek={}).BLAST_FUN="BLAST_FUN",ek.MOONBAGS="MOONBAGS",ek);(eN=tY||(tY={})).PACKAGE_ID="0xb8df325010942634a4afb3db3901ee215546af43a4ec4af781e7213b0bba7290",eN.CONFIG_OBJECT_ID="0x74aecf86067c6913960ba4925333aefd2b1f929cafca7e21fd55a8f244b70499",eN.LOCK_CONFIG_OBJECT_ID="0xfb09822d9808980abd04c51321adb850701f5f55535c6206658ef4d910c3e9be",eN.BURN_MANAGER_OBJECT_ID="0x1d94aa32518d0cb00f9de6ed60d450c9a2090761f326752ffad06b2e9404f845",eN.POOLS_OBJECT_ID="0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0",eN.GLOBAL_CONFIG_OBJECT_ID="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",eN.FEE_DENOMINATOR=BigInt(1e4),function(e){(t=e.Curves||(e.Curves={})).calculateAddLiquidityCost=function(e,t,o){return e*t/(t-o)-e},t.calculateRemoveLiquidityReturn=function(e,t,o){return t-e*t/(e+o)},t.calculateTokenAmountReceived=function(e,t,o){return t-e*t/(e+o)};var t,o=e.Moonbags||(e.Moonbags={});function r(e){return"fields"in e?e.fields.balance:e.balance}o.getDynamicVirtualTokenReserves=async function(e,t){try{let o=await e.getDynamicField({parentId:t,name:{type:"vector<u8>",bcs:es.byteVector().serialize(new TextEncoder().encode("virtual_token_reserves")).toBytes()}});if(!o.dynamicField?.value)return;return BigInt(es.u64().parse(o.dynamicField.value.bcs))}catch(e){if("object"==typeof e&&null!==e&&"code"in e&&"dynamicFieldNotFound"===e.code)return;throw e}},o.buyExactInReturnsWithLock=function(t){let{inputAmount:o,amountIn:a,pool:n,config:i,dynamicVirtualTokenReserves:s}=t,u=BigInt(n.virtual_sui_reserves),l=BigInt(n.virtual_token_reserves),d=BigInt(r(n.remain_token_reserves)),p=e.Curves.calculateRemoveLiquidityReturn(u,l,a),_=l-(s||d),m=p,f=a;p>_&&(m=_,f=e.Curves.calculateAddLiquidityCost(u,l,_)+BigInt(1));let g=f*BigInt(i.platform_fee)/tY.FEE_DENOMINATOR;return c(o>=f+g,"Input amount is less than used SUI + fee"),{receivedCurve:m,receivedSui:o-f-g}},o.sellReturns=function(t){let{amountIn:o,pool:a,config:n}=t,i=BigInt(a.virtual_sui_reserves),s=BigInt(a.virtual_token_reserves),c=BigInt(r(a.real_sui_reserves)),u=e.Curves.calculateRemoveLiquidityReturn(s,i,o);u>c&&(u=c);let l=u*BigInt(n.platform_fee)/tY.FEE_DENOMINATOR,d=u-l;return{receivedCurve:BigInt(0),receivedSui:d}}}(tV||(tV={})),(eU=tJ||(tJ={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,[n,i,s]=await Promise.all([r_(t,r),r_(t,tY.CONFIG_OBJECT_ID),tV.Moonbags.getDynamicVirtualTokenReserves(t,r)]);void 0!==a&&(o=em(o,a));let c=o*tY.FEE_DENOMINATOR/(tY.FEE_DENOMINATOR+BigInt(i.platform_fee)),{receivedCurve:u}=tV.Moonbags.buyExactInReturnsWithLock({inputAmount:o,amountIn:c,pool:n,config:i,dynamicVirtualTokenReserves:s});return u},eU.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,[n,i]=await Promise.all([r_(t,r),r_(t,tY.CONFIG_OBJECT_ID)]),{receivedSui:s}=tV.Moonbags.sellReturns({amountIn:o,pool:n,config:i});return void 0!==a?em(s,a):s},eU.getUsedSuiForTx=async function(e,t){let{suiAmount:o,frontendFee:r}=e,a=await r_(t,tY.CONFIG_OBJECT_ID);return void 0!==r&&(o=em(o,r)),o*tY.FEE_DENOMINATOR/(tY.FEE_DENOMINATOR+BigInt(a.platform_fee))};var rw=tH||(tH={});async function rx(e,t){let{tx:o,coinOut:r}=await rb(e,t);c(r,"Coin out is required");let a=await tJ.getUsedSuiForTx({suiAmount:BigInt(e.inputAmount),frontendFee:e.frontendFee},t),[n,i]=o.moveCall({target:`${tY.PACKAGE_ID}::moonbags::buy_exact_in_returns_with_lock`,typeArguments:[e.outCoinType],arguments:[o.object(tY.CONFIG_OBJECT_ID),o.object(tY.LOCK_CONFIG_OBJECT_ID),r,o.pure.u64(a),o.pure.u64(e.minAmountOut),o.object(tY.BURN_MANAGER_OBJECT_ID),o.object(tY.POOLS_OBJECT_ID),o.object(tY.GLOBAL_CONFIG_OBJECT_ID),o.object(eA),o.object(eg)]});return tG.transferOrDestroyZeroCoin(o,ey,n,e.accountAddress),{tx:o,coinOut:i}}async function rR(e,t){c(eI(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await ef({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,[n,i]=o.moveCall({target:`${tY.PACKAGE_ID}::moonbags::sell_returns`,typeArguments:[e.inCoinType],arguments:[o.object(tY.CONFIG_OBJECT_ID),a,o.pure.u64(e.minAmountOut),o.object(eg)]});return tG.transferOrDestroyZeroCoin(o,e.inCoinType,i,e.accountAddress),await rI(o,e,n)}rw.buildBuyTx=rx,rw.buildSellTx=rR,rw.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eI(t),"coinInType must be SUI for buy transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await tJ.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0},u)).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rx({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eT(u,d,n,0);return(d=await eC({inheritTx:d,sender:n,feeAmount:_,suiInputAmount:e},u)).build({client:u})},rw.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eI(o),"coinOutType must be SUI for sell transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await tJ.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0},u)).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rR({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eT(u,d,n,0);return(d=await eC({inheritTx:d,sender:n,feeAmount:_},u)).build({client:u})},(ej=tX||(tX={})).LAST_PACKAGE_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",ej.newHolder=function(e){return e.moveCall({target:`${ej.LAST_PACKAGE_ID}::oracle::new_holder`,typeArguments:[],arguments:[]})},ej.getPrice=function(e){let{txb:t,coinOracleId:o,holder:r,coinPriceId:a}=e;t.moveCall({target:`${ej.LAST_PACKAGE_ID}::pyth::get_price`,typeArguments:[],arguments:[t.object(o),r,t.object(a),t.object(u)]})},(eG=tW||(tW={})).PYTH_URLS=["https://hermes.pyth.network"],eG.WORMHOLE_STATE_ID="0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",eG.PYTH_STATE_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",eG.newPythConnections=function(e){return e||(e=eG.PYTH_URLS),e.map(e=>new ep(e,{timeout:3e3}))},eG.newPythClient=function(e){return e||(e=new el({network:"mainnet",url:ed("mainnet")})),new e_(e,eG.PYTH_STATE_ID,eG.WORMHOLE_STATE_ID)},eG.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=((eK={})[eK.UNKNOWN=1e3]="UNKNOWN",eK[eK.TIMEOUT=1001]="TIMEOUT",eK[eK.PROVIDER_NOT_FOUND=1002]="PROVIDER_NOT_FOUND",eK[eK.PROVIDER_NOT_SUPPORTED=1003]="PROVIDER_NOT_SUPPORTED",eK[eK.INVALID_QUOTE=1004]="INVALID_QUOTE",eK[eK.QUOTE_NOT_FOUND=1005]="QUOTE_NOT_FOUND",eK[eK.INVALID_SIGNER_ADDRESS=1006]="INVALID_SIGNER_ADDRESS",eK[eK.PROVIDER_NOT_SUPPORT_SWAP=1007]="PROVIDER_NOT_SUPPORT_SWAP",eK[eK.SIMULATION_FAILED=1008]="SIMULATION_FAILED",eK);class rv extends Error{code;details;constructor(e,t,o){super(e),this.name="MetaAgError",this.code=t??1e3,this.details=o}static assert(e,t,o,r){if(!e)throw new rv(t??"Assertion failed",o,r)}}class rL{options;kind="SEVENK";constructor(e,t){this.options=e,e.apiKey&&r.setApiKey(e.apiKey),r.setSuiClient(t)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tw.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tw.SUPPORTED_PROTOCOLS);let o=await n({tokenIn:e.coinTypeIn,tokenOut:e.coinTypeOut,amountIn:e.amountIn,sources:t,excludedPools:this.options.excludedPools,targetPools:this.options.targetPools});return rv.assert(!!o,"No quote found",rD.QUOTE_NOT_FOUND,{provider:this.kind}),{sourceRoute:"SEVENK",rawRoute:o,amountIn:o.swapAmountWithDecimal,amountOut:o.returnAmountWithDecimal,coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}let rk=tW.PYTH_URLS;class rN{options;kind="CETUS";cetusClient;constructor(e,t,o){this.options=e,this.cetusClient=new M({apiKey:e.apiKey,client:o,endpoint:e.api,env:P.Mainnet,pythUrls:t.hermesApi?t.hermesApi:rk})}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tD.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tD.SUPPORTED_PROTOCOLS);let o=await this.cetusClient.findRouters({amount:e.amountIn,byAmountIn:!0,from:e.coinTypeIn,target:e.coinTypeOut,providers:t,splitCount:this.options.splitCount,splitAlgorithm:this.options.splitAlgorithm,splitFactor:this.options.splitFactor,depth:this.options.depth,liquidityChanges:this.options.liquidityChanges});return rv.assert(!!o,"No quote found",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 rU{options;kind="FLOWX";quoter;constructor(e){this.options=e,this.quoter=new et("mainnet",e.apiKey)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tv.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tv.SUPPORTED_PROTOCOLS);let o=await this.quoter.getRoutes({amountIn:e.amountIn,tokenIn:e.coinTypeIn,tokenOut:e.coinTypeOut,includeSources:t,excludePools:this.options.excludePools,excludeSources:this.options.excludeSources,maxHops:this.options.maxHops,splitDistributionPercent:this.options.splitDistributionPercent});return{sourceRoute:"FLOWX",rawRoute:o,amountIn:o.amountIn?.toString()??"0",amountOut:o.amountOut?.toString()??"0",coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}(eq=tz||(tz={})).POOL_REGISTRY_OBJ_ID="0xfcc774493db2c45c79f688f88d28023a3e7d98e4ee9f48bbf5c7990f651577ae",eq.PROTOCOL_FEE_VAULT_OBJ_ID="0xf194d9b1bcad972e45a7dd67dd49b3ee1e3357a00a50850c52cd51bb450e13b4",eq.TREASURY_OBJ_ID="0x28e499dff5e864a2eafe476269a4f5035f1c16f338da7be18b103499abf271ce",eq.INSURANCE_FUND_OBJ_ID="0xf0c40d67b078000e18032334c3325c47b9ec9f3d9ae4128be820d54663d14e3b",eq.REFERRAL_VAULT_OBJ_ID="0x35d35b0e5b177593d8c3a801462485572fc30861e6ce96a55af6dc4730709278",(e$=tQ||(tQ={})).LAST_PACKAGE_ID="0xf369250dc5a17e9d5a84a3b0cf5aea715c0682170e726dd601f03ade7ce4decb",e$.swap=function(e){c(e.protocol===rr.AFTERMATH_CPMM);let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,coinLpType:u,packageId:l}=e;t.moveCall({target:`${l??e$.LAST_PACKAGE_ID}::aftermath_cpmm_router::swap`,typeArguments:[i,s,u],arguments:[o,t.object(r),t.object(tz.POOL_REGISTRY_OBJ_ID),t.object(tz.PROTOCOL_FEE_VAULT_OBJ_ID),t.object(tz.TREASURY_OBJ_ID),t.object(tz.INSURANCE_FUND_OBJ_ID),t.object(tz.REFERRAL_VAULT_OBJ_ID),t.pure.bool(a),t.pure.u64(n)]})},(eY=tZ||(tZ={})).STAKED_SUI_VAULT_OBJ_ID="0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d",eY.SAFE_TREASURY_OBJECT_ID="0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610",eY.REFERRAL_VAULT_OBJ_ID="0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef",eY.VALIDATOR_ADDRESS="0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2",(eV=t0||(t0={})).LAST_PACKAGE_ID="0x148c4e7ff5b308b2d520e050e6a21d986dd3eb203e0aa3eaaba28000977aebf1",eV.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??eV.LAST_PACKAGE_ID}::aftermath_lsd_router::swap`,arguments:[o,t.object(tZ.STAKED_SUI_VAULT_OBJ_ID),t.object(tZ.SAFE_TREASURY_OBJECT_ID),t.object(l),t.object(tZ.REFERRAL_VAULT_OBJ_ID),t.pure.address(tZ.VALIDATOR_ADDRESS),t.pure.bool(r),t.pure.u64(a)]})},(eJ=t1||(t1={})).LAST_PACKAGE_ID="0x108d5d07cf873dec0bc8034db862db55d38e495c1f3ee0e124cf4861af834f25",eJ.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??eJ.LAST_PACKAGE_ID}::alphafi_lsd_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(l),t.pure.bool(n),t.pure.u64(a)]})},(eH=t4||(t4={})).MEMEZ_AV_OBJ_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",eH.MEMEZ_FUN_OBJ_ID="0x943948644f06942b8b660ca541b10a05f6a7be23ce4069944a3665e7e698930d",eH.IPX_TREASURY_STANDARD_OBJ_ID="0x051e11b667659192917db94e5175fa066909d4dfc04d2663528f499c4afc6999",(eX=t6||(t6={})).LAST_PACKAGE_ID="0x8b1e84ed9bc79d31160600254d65810f6bc6d2352f174a60ed041017d0a2a87a",eX.swap=function(e){c(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??eX.LAST_PACKAGE_ID}::blastfun_router::swap`,typeArguments:[r,a],arguments:[o,t.object(t4.MEMEZ_FUN_OBJ_ID),t.object(t4.IPX_TREASURY_STANDARD_OBJ_ID),t.object(t4.MEMEZ_AV_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(t3||(t3={})).GLOBAL_CONFIG_OBJ_ID="0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",(eW=t2||(t2={})).LAST_PACKAGE_ID="0x9f8397124b6bdb55aeb7b5e43761e0e4dc94b9e22e94b1b25d8211d99df422d5",eW.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??eW.LAST_PACKAGE_ID}::bluefin_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(t3.GLOBAL_CONFIG_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(u)]})},(t5||(t5={})).DEX_INFO_OBJ_ID="0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92",(ez=t8||(t8={})).LAST_PACKAGE_ID="0xf52bdd65ee347e8994170f8c331cf0c23a55281b3282467f14ccbb3e2a7f928f",ez.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,coinAType:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??ez.LAST_PACKAGE_ID}::bluemove_cpmm_router::swap`,typeArguments:[n,i],arguments:[o,t.object(t5.DEX_INFO_OBJ_ID),t.pure.bool(r),t.pure.u64(a)]})},(t9||(t9={})).ORACLE_OBJ_ID="0xfa3975b98f3d0e3df18ed88ae6e69db31836b3f4212df02fae144b1e5a89ca8e",(eQ=t7||(t7={})).LAST_PACKAGE_ID="0x2dd7b04509f332bdb93a8f228ab5c40b34baee4645b2ebe5e5fa2c3502b2c088",eQ.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??eQ.LAST_PACKAGE_ID}::bolt_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(t9.ORACLE_OBJ_ID),t.object(u),t.pure.u64(s),t.pure.bool(i)]})},(oe||(oe={})).GLOBAL_CONFIG="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",(eZ=ot||(ot={})).LAST_PACKAGE_ID="0xb3dbb229464cb14b9f8cfa087e5b162623c8f485395dc9b975e263a5ee7051e4",eZ.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??eZ.LAST_PACKAGE_ID}::cetus_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oe.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(e0=oo||(oo={})).GLOBAL_CONFIG_OBJ_ID="0xf31b605d117f959b9730e8c07b08b856cb05143c5e81d5751c90d2979e82f599",e0.VERSIONED_OBJ_ID="0x05370b2d656612dd5759cbe80463de301e3b94a921dfc72dd9daa2ecdeb2d0a8",(e1=or||(or={})).LAST_PACKAGE_ID="0x9ab3ba62b4327a7d90e4aed1c025b62736f035911ad7bab830c065ec84ef1ffa",e1.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinAType:i,coinBType:s,packageId:c}=e,l=[o,t.object(oo.GLOBAL_CONFIG_OBJ_ID),t.object(oo.VERSIONED_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(u)];t.moveCall({target:`${c??e1.LAST_PACKAGE_ID}::cetus_dlmm_router::swap`,typeArguments:[i,s],arguments:l})},(e4=oa||(oa={})).GLOBAL_CONFIG="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135",e4.DEEP_TYPE="0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",(e6=on||(on={})).LAST_PACKAGE_ID="0xff274b63c0f6e3a01f3dd0e923aefcb3146e05e2f6bef4ae339e2703b085f8ed",e6.swap=function(e){c(e.protocol===rr.DEEPBOOK_V3,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,deepFeeCoin:l,packageId:d}=e,p=l||t.moveCall({target:"0x2::coin::zero",typeArguments:[oa.DEEP_TYPE]});t.moveCall({target:`${d??e6.LAST_PACKAGE_ID}::deepbook_v3_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oa.GLOBAL_CONFIG),t.object(n),t.pure.u64(s),t.pure.bool(i),p,t.object(u)]})},(oi||(oi={})).GLOBAL_OBJ_ID="0x935229a3c32399e9fb207ec8461a54f56c6af5744c64442435ac217ab28f0d59",(e3=os||(os={})).LAST_PACKAGE_ID="0xfd86c0308327eae31c04560460ee6190220e4ae1cdf5b999eef1110bf0b0f2b8",e3.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??e3.LAST_PACKAGE_ID}::dip_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(oi.GLOBAL_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(oc||(oc={})).FERRA_GLOBAL_CONFIG_ID="0x2cd8382c19e6994f16df204e9b8cddd04bdc486c251de75ac66ac4e48e3e7081",(e2=ou||(ou={})).LAST_PACKAGE_ID="0x70c4318f67d88ebe4e83bacad15f9e2f5c8becd77695f63dc4bd9393730851cd",e2.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??e2.LAST_PACKAGE_ID}::ferra_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(oc.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object("0x6")]})},(ol||(ol={})).FERRA_GLOBAL_CONFIG_ID="0x5c9dacf5a678ea15b8569d65960330307e23d429289ca380e665b1aa175ebeca",(e5=od||(od={})).LAST_PACKAGE_ID="0x686e9eb19b04d46374c3fb82cb4ebb7b24ef8a9ae13f403915f4ae347e0f6593",e5.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,packageId:c}=e;t.moveCall({target:`${c??e5.LAST_PACKAGE_ID}::ferra_dlmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(ol.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object(u)]})},(e8=op||(op={})).POOL_REGISTRY_OBJ_ID="0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc",e8.VERSIONED_OBJ_ID="0x67624a1533b5aff5d0dfcf5e598684350efd38134d2d245f475524c03a64e656",(e9=o_||(o_={})).LAST_PACKAGE_ID="0x350a752d3388165e578cc33a39655a6da83613cf4e58c8d9d0723711c2603e17",e9.swap=function(e){c(e.protocol===rr.FLOWX_CLMM);let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolFeeRate:n,amountIn:i,aToB:s,packageId:l}=e;t.moveCall({target:`${l??e9.LAST_PACKAGE_ID}::flowx_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(op.POOL_REGISTRY_OBJ_ID),t.object(op.VERSIONED_OBJ_ID),t.pure.u64(n),t.pure.u64(i),t.pure.bool(s),t.object(u)]})},(om||(om={})).CONTAINER_OBJ_ID="0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511",(e7=of||(of={})).LAST_PACKAGE_ID="0xd95b440ad340bb6cbf571897d312e43d4b6de37b60c69ef714c94b9835cb8866",e7.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??e7.LAST_PACKAGE_ID}::flowx_cpmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(om.CONTAINER_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(te=og||(og={})).GLOBAL_CONFIG_OBJ_ID="0xe93baa80cb570b3a494cbf0621b2ba96bc993926d34dc92508c9446f9a05d615",te.REWARDER_VAULT_OBJ_ID="0xfb971d3a2fb98bde74e1c30ba15a3d8bef60a02789e59ae0b91660aeed3e64e1",te.STATS_OBJ_ID="0x6822a33d1d971e040c32f7cc74507010d1fe786f7d06ab89135083ddb07d2dc2",te.PRICE_PROVIDER_OBJ_ID="0x854b2d2c0381bb656ec962f8b443eb082654384cf97885359d1956c7d76e33c9",(tt=oA||(oA={})).LAST_PACKAGE_ID="0xf0bf13b5baaf3d368f165e846b919294bed79a3ab3ab0c9bd1e75f23533e44a5",tt.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??tt.LAST_PACKAGE_ID}::fullsail_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(og.GLOBAL_CONFIG_OBJ_ID),t.object(og.REWARDER_VAULT_OBJ_ID),t.object(og.STATS_OBJ_ID),t.object(og.PRICE_PROVIDER_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(to=ob||(ob={})).LAST_PACKAGE_ID="0x8969ed3e56c1dbdaf9df52f812d69c6c45fe5a4bab7093c88f5a8697a409398e",to.swap=function(e){c(e.protocol===rr.HAEDAL_CPMM);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdA:l,pythPriceFeedIdB:d,pythInfoObjectIdMap:p,packageId:_}=e,m=p.get(l),f=p.get(d);c(m,"Not found priceInfoAId in pythObjectIdMap"),c(f,"Not found priceInfoBId in pythObjectIdMap"),t.moveCall({target:`${_??to.LAST_PACKAGE_ID}::haedal_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(m),t.object(f),t.pure.u64(s),t.pure.bool(i),t.object(u)]})},(tr=oI||(oI={})).LAST_PACKAGE_ID="0x5d01f22e5471a5912a88e15d62fdcb922beba65b8e8dfe1a715aebf743194f4a",tr.swap=function(e){c(e.protocol===rr.HAEDAL_CPMM_V2);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdBase:l,pythInfoObjectIdMap:d,packageId:p}=e,_=d.get(l);c(_,"Not found pythPriceBaseId in pythObjectIdMap"),t.moveCall({target:`${p??tr.LAST_PACKAGE_ID}::haedal_cpmm_v2_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(_),t.pure.u64(s),t.pure.bool(i),t.object(u)]})},(ta=oT||(oT={})).LAST_PACKAGE_ID="0x1644956086caa5eb791eba152f3b69ba862b3a5382ef0e1d8a474ab158aafa1a",ta.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,poolId:n,packageId:i}=e;t.moveCall({target:`${i??ta.LAST_PACKAGE_ID}::haedal_lsd_router::swap`,arguments:[o,t.object(n),t.object(l),t.pure.bool(r),t.pure.u64(a)]})},(oC||(oC={})).STAKING_OBJ_ID="0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904",(oO||(oO={})).VALIDATOR_ID="0x7b3ba6de2ae58283f60d5b8dc04bb9e90e4796b3b2e0dea75569f491275242e7",(tn=oM||(oM={})).LAST_PACKAGE_ID="0x7be077dd73c85e788c2a49a51f0627066d81d3dc9982c268e3691265a81d544d",tn.swap=function(e){c(e.protocol===rr.HAEDAL_LSD_WAL),c(e.aToB,"HAEDAL_LSD_WAL does not support bToA swap");let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??tn.LAST_PACKAGE_ID}::haedal_wal_lsd_router::swap`,arguments:[o,t.object(oC.STAKING_OBJ_ID),t.object(r),t.pure.id(oO.VALIDATOR_ID),t.pure.bool(a),t.pure.u64(n)]})},(oy||(oy={})).VERSION_OBJ_ID="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78",(ti=oh||(oh={})).LAST_PACKAGE_ID="0xcf141e1d18ff609b2ac56532b391f7648fc55e28696efe354186f5109c0eff06",ti.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??ti.LAST_PACKAGE_ID}::kriya_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oy.VERSION_OBJ_ID),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(ts=oE||(oE={})).LAST_PACKAGE_ID="0x50d37f46df75ef125ce656d4ac91b31b2cf0c1195752a96558561d163e45c223",ts.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??ts.LAST_PACKAGE_ID}::kriya_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(tc=oS||(oS={})).FACTORY_OBJ_ID="0xedb456e93e423dd75a8ddebedd9974bb661195043027e32ce01649d6ccee74cf",tc.GLOBAL_CONFIG_OBJ_ID="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(tu=oF||(oF={})).LAST_PACKAGE_ID="0x950f94d33060c0575389c9f84fabab1e140776c6c84389d4237a0c2687a7adc9",tu.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??tu.LAST_PACKAGE_ID}::magma_almm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oS.FACTORY_OBJ_ID),t.object(oS.GLOBAL_CONFIG_OBJ_ID),t.pure.u64(s),t.pure.bool(i),t.object(u)]})},(oP||(oP={})).GLOBAL_CONFIG="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(tl=oB||(oB={})).LAST_PACKAGE_ID="0xbe5f590339c55ca8ebbf93cedfb68aafd479d71e1c57043246f7dcf352745242",tl.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??tl.LAST_PACKAGE_ID}::magma_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oP.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(td=ow||(ow={})).LATEST_PACKAGE_ID="0xfab91518218f10204b083dba1e62c8bfc23f14fb87742158043e5faec4670ec4",td.swap=function(e){let t,o,r;c(e.protocol===rr.METASTABLE,"Invalid protocol");let{txb:a,swapContext:n,aToB:i,amountIn:s,coinAType:u,coinBType:l,poolId:d,metaCoin:p,packageId:_}=e,[m,f]=i?[u,l]:[l,u];m===p?(r="swap_from_meta_coin",t=[p,f],o=[tR.createCap({coinType:f,createCapFunc:"create_withdraw_cap",...e})]):f===p?(r="swap_to_meta_coin",t=[p,m],o=[tR.createCap({coinType:m,createCapFunc:"create_deposit_cap",...e})]):(r="swap",t=[p,m,f],o=[tR.createCap({coinType:m,createCapFunc:"create_deposit_cap",...e}),tR.createCap({coinType:f,createCapFunc:"create_withdraw_cap",...e})]),a.moveCall({target:`${_??td.LATEST_PACKAGE_ID}::metastable_router::${r}`,typeArguments:t,arguments:[n,a.object(d),a.object(tR.VERSION_OBJ_ID),...o,a.pure.u64(s)]})},(ox||(ox={})).VERSION_OBJ_ID="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a",(tp=oR||(oR={})).LAST_PACKAGE_ID="0xba7ab4c8c39024fa0052bb4f00548a2e7b60742bb4ed0b87bc1d945fd8209102",tp.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??tp.LAST_PACKAGE_ID}::momentum_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(ox.VERSION_OBJ_ID),t.object(u)]})},(oD||(oD={})).CONFIGURATION_OBJ_ID="0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4",(t_=ov||(ov={})).LAST_PACKAGE_ID="0x5a259db4b1d17fafc09185c9a71bac36f25f9ee462e72894c8610e5a58b79f8f",t_.swap=function(e){c(e.protocol===rr.MOVEPUMP,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,expectedAmountOut:s,packageId:l}=e;t.moveCall({target:`${l??t_.LAST_PACKAGE_ID}::movepump_router::swap`,typeArguments:[n?a:r],arguments:[o,t.object(oD.CONFIGURATION_OBJ_ID),t.object(t5.DEX_INFO_OBJ_ID),t.object(u),t.pure.u64(s),t.pure.bool(n),t.pure.u64(i)]})},(oL||(oL={})).STATE_OBJ_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",(tm=ok||(ok={})).LAST_PACKAGE_ID="0xd615fed37d692280047068e80d3a6bb685aa9d574608054c9df881d6a7378fab",tm.swap=function(e){let t,o;c(e.protocol===rr.OBRIC);let{txb:r,swapContext:a,poolId:n,coinAType:i,coinBType:s,aToB:l,amountIn:d,pythInfoObjectIdMap:p,packageId:_}=e;"priceInfoObjIdA"in e?(t=e.priceInfoObjIdA,o=e.priceInfoObjIdB):(t=p.get(e.pythPriceFeedIdA),o=p.get(e.pythPriceFeedIdB),c(t,"Not found priceInfoAId in pythObjectIdMap"),c(o,"Not found priceInfoBId in pythObjectIdMap")),r.moveCall({target:`${_??tm.LAST_PACKAGE_ID}::obric_router::swap`,typeArguments:[i,s],arguments:[a,r.object(n),r.pure.u64(d),r.pure.bool(l),r.object(oL.STATE_OBJ_ID),r.object(t),r.object(o),r.object(u)]})},(tf=oN||(oN={})).VERSION_OBJ_ID="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",tf.MARKET_OBJ_ID="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",(tg=oU||(oU={})).LAST_PACKAGE_ID="0xea409bb08c8a09e4127f859d9c36b8b62ca609282aa1e443091db6b7a7409ee7",tg.swap=function(e){c(e.protocol===rr.SCALLOP);let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,scoinTreasury:s,packageId:l}=e;t.moveCall({target:`${l??tg.LAST_PACKAGE_ID}::scallop_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oN.VERSION_OBJ_ID),t.object(oN.MARKET_OBJ_ID),t.object(s),t.pure.u64(i),t.pure.bool(n),t.object(u)]})},(oj||(oj={})).ORACLE_HOLDER_OBJ_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",(tA=oG||(oG={})).LAST_PACKAGE_ID="0x918a30e2a05d24ea9451e2d2900d055f74e6752f2e10251fa50c7175831b1958",tA.swap=function(e){c(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:u,oracleConfigA:l,oracleConfigB:d,pythPriceFeedIdA:p,pythPriceFeedIdB:_,pythInfoObjectIdMap:m,packageId:f}=e,g=m.get(p),A=m.get(_);c(g,"Not found priceInfoAId in pythObjectIdMap"),c(A,"Not found priceInfoBId in pythObjectIdMap");let b=tX.newHolder(t);tX.getPrice({txb:t,coinPriceId:p,holder:b,coinOracleId:l}),tX.getPrice({txb:t,coinPriceId:_,holder:b,coinOracleId:d}),t.moveCall({target:`${f??tA.LAST_PACKAGE_ID}::sevenk_cpmm_router::swap`,typeArguments:[a,n,u],arguments:[o,t.object(r),t.object(oj.ORACLE_HOLDER_OBJ_ID),t.pure.bool(i),t.pure.u64(s)]})},(oK||(oK={})).CONFIGURATION_OBJ_ID="0xe79fff6c77d81f9a8efb729e25bf0037deec42518d40b978f274a4915d7e1ec9",(tb=oq||(oq={})).LAST_PACKAGE_ID="0x0a5dc665dc3c1c846a6d1e00811c84cae3510c839ab4dc0873f85dc8908d0606",tb.swap=function(e){c(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??tb.LAST_PACKAGE_ID}::sevenk_fun_router::swap`,typeArguments:[n],arguments:[o,t.object(oK.CONFIGURATION_OBJ_ID),t.object(om.CONTAINER_OBJ_ID),t.object(u),t.pure.bool(r),t.pure.u64(a)]})},(tI=o$||(o$={})).LAST_PACKAGE_ID="0xa6d129c0b314e85d1bc5aecf305d64212bdd5d466457531f4f624fef5f2e7751",tI.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??tI.LAST_PACKAGE_ID}::springsui_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(l),t.pure.u64(a),t.pure.bool(n)]})},(oY||(oY={})).CONFIG_OBJ_ID="0x881fd0a12ca4fa48991f5c27ba57d17f1ec147fa15f43b3cb760cc3bd7ba9402",(tT=oV||(oV={})).LAST_PACKAGE_ID="0xa314a64962ed4b91a6b4085de4dff2e631fd4c731dbca671a74489955df322ef",tT.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(oY.CONFIG_OBJ_ID),t.pure.bool(a),t.pure.u64(n),t.object("0x6")];t.moveCall({target:`${c??tT.LAST_PACKAGE_ID}::srm_cpmm_router::swap`,typeArguments:[i,s],arguments:u})},(tO=(tC=oJ||(oJ={})).Oracle||(tC.Oracle={})).PACKAGE_ID="0xe84b649199654d18c38e727212f5d8dacfc3cf78d60d0a7fc85fd589f280eb2b",tO.getPythPrice=function(e){let{txb:t,oracleRegistryId:o,priceInfoId:r,oracleIndex:a}=e;return t.moveCall({target:`${tO.PACKAGE_ID}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(o),t.object(r),t.pure.u64(a),t.object(u)]})};var rj=oH||(oH={});function rG(e,t){c(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:l,bankAId:d,bankBId:p,lendingMarketId:_,lendingMarketType:m,bCoinAType:f,bCoinBType:g,lpBCoinType:A,pythPriceFeedIdA:b,pythPriceFeedIdB:I,pythInfoObjectIdMap:T,oracleRegistryId:C,oracleIndexA:O,oracleIndexB:M,packageId:y}=e,h=T.get(b),E=T.get(I);c(h,"Not found priceInfoAId in pythObjectIdMap"),c(E,"Not found priceInfoBId in pythObjectIdMap");let S=oJ.Oracle.getPythPrice({txb:o,oracleRegistryId:C,priceInfoId:h,oracleIndex:O}),F=oJ.Oracle.getPythPrice({txb:o,oracleRegistryId:C,priceInfoId:E,oracleIndex:M});o.moveCall({target:`${y??rj.LAST_PACKAGE_ID}::${rK(t)}::swap`,typeArguments:[m,n,i,f,g,A],arguments:[r,o.object(a),o.object(d),o.object(p),o.object(_),S,F,o.pure.bool(s),o.pure.u64(l),o.object(u)]})}function rK(e){switch(e){case 0:return"steamm_omm_router";case 1:return"steamm_omm_v2_router"}}function rq(e){let{amountOut:t,aggregatorFeeBps:o,partnerFeeBps:r}=e,a=r$(t,o);return r&&(a=r$(a,r)),a}function r$(e,t){let o=BigInt(e)*BigInt(t)/BigInt(1e4);return(BigInt(e)-o).toString()}function rY(e){return Math.floor(100*e)}rj.LAST_PACKAGE_ID="0xd606880d67c399f349758111a91582d5515f31dd051632402653d872818f594e",rj.swapCpmm=function(e){c(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:l,bankBId:d,lendingMarketId:p,lendingMarketType:_,bCoinAType:m,bCoinBType:f,lpBCoinType:g}=e;t.moveCall({target:`${rj.LAST_PACKAGE_ID}::steamm_cpmm_router::swap`,typeArguments:[_,a,n,m,f,g],arguments:[o,t.object(r),t.object(l),t.object(d),t.object(p),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},rj.swapOmm=function(e){rG(e,0)},rj.swapOmmV2=function(e){rG(e,1)},rj.getOmmRouterModule=rK,(tM=oX||(oX={})).LAST_PACKAGE_ID="0x7a1cf89025a60161e84809784d772263231fad08a7cb76a88ca1ba69e0a656da",tM.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??tM.LAST_PACKAGE_ID}::suiswap_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(ty=oW||(oW={})).VERSIONED="0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676",ty.POOL_REGISTRY="0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd",(th=oz||(oz={})).LAST_PACKAGE_ID="0x79957062a7424ed9c2eb83932e4c4fcc3fee67ab3c8f6f874c54e417178bbb7a",th.swap=function(e){c(e.protocol===rr.TRADEPORT_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,poolFeeRate:s,packageId:l}=e;t.moveCall({target:`${l??th.LAST_PACKAGE_ID}::tradeport_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oW.POOL_REGISTRY),t.pure.u64(s),t.object(oW.VERSIONED),t.pure.bool(n),t.pure.u64(i),t.object(u)]})},(oQ||(oQ={})).POOL_VERSIONED="0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f",(tE=oZ||(oZ={})).LAST_PACKAGE_ID="0x512d63711ff38353fb167238b0529001b6871c1727c67ce3bf6ec23556b0f1da",tE.swap=function(e){c(e.protocol===rr.TURBOS_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,coinFeeType:n,poolId:i,aToB:s,amountIn:l,packageId:d}=e;t.moveCall({target:`${d??tE.LAST_PACKAGE_ID}::turbos_clmm_router::swap`,typeArguments:[r,a,n],arguments:[o,t.object(i),t.object(oQ.POOL_VERSIONED),t.pure.bool(s),t.pure.u64(l),t.object(u)]})},(o0||(o0={})).CONFIGURATION_OBJ_ID="0xd86685fc3c3d989385b9311ef55bfc01653105670209ac4276ebb6c83d7df928",(tS=o1||(o1={})).LAST_PACKAGE_ID="0x1fad13f09797aa87a4385d0b1efb2de963ba16742447b1ad5a3b0c5b1d1c588b",tS.swap=function(e){c(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??tS.LAST_PACKAGE_ID}::turbos_fun_router::swap`,typeArguments:[r],arguments:[o,t.object(o0.CONFIGURATION_OBJ_ID),t.object(u),t.pure.bool(a),t.pure.u64(n)]})},(o4||(o4={})).VOLO_CERT_METADATA_ID="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",(tF=o6||(o6={})).LAST_PACKAGE_ID="0x7c8d95256342f904d5f251776903a17905d87c95f387b3a35cc2aecc23b3c042",tF.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??tF.LAST_PACKAGE_ID}::volo_router::swap`,arguments:[o,t.object(r),t.object(o4.VOLO_CERT_METADATA_ID),t.object(l),t.pure.bool(a),t.pure.u64(n)]})},(tP=o3||(o3={})).RouterSwapFunctionMap={[rr.AFTERMATH_CPMM]:tQ.swap,[rr.AFTERMATH_LSD]:t0.swap,[rr.ALPHAFI_LSD]:t1.swap,[rr.BLASTFUN]:t6.swap,[rr.BLUEFIN_CLMM]:t2.swap,[rr.BLUEMOVE_CPMM]:t8.swap,[rr.BOLT]:t7.swap,[rr.CETUS_CLMM]:ot.swap,[rr.CETUS_DLMM]:or.swap,[rr.DEEPBOOK_V3]:on.swap,[rr.DIP_CPMM]:os.swap,[rr.FERRA_CLMM]:ou.swap,[rr.FERRA_DLMM]:od.swap,[rr.FLOWX_CPMM]:of.swap,[rr.FLOWX_CLMM]:o_.swap,[rr.FULLSAIL_CLMM]:oA.swap,[rr.HAEDAL_CPMM]:ob.swap,[rr.HAEDAL_CPMM_V2]:oI.swap,[rr.HAEDAL_LSD]:oT.swap,[rr.HAEDAL_LSD_WAL]:oM.swap,[rr.KRIYA_CLMM]:oh.swap,[rr.KRIYA_CPMM]:oE.swap,[rr.MAGMA_ALMM]:oF.swap,[rr.MAGMA_CLMM]:oB.swap,[rr.METASTABLE]:ow.swap,[rr.MOMENTUM_CLMM]:oR.swap,[rr.MOVEPUMP]:ov.swap,[rr.OBRIC]:ok.swap,[rr.SCALLOP]:oU.swap,[rr.SEVENK_CPMM]:oG.swap,[rr.SEVENK_FUN]:oq.swap,[rr.SPRINGSUI]:o$.swap,[rr.SRM_CPMM]:oV.swap,[rr.STEAMM_CPMM]:oH.swapCpmm,[rr.STEAMM_OMM]:oH.swapOmm,[rr.STEAMM_OMM_V2]:oH.swapOmmV2,[rr.SUISWAP_CPMM]:oX.swap,[rr.TRADEPORT_CLMM]:oz.swap,[rr.TURBOS_CLMM]:oZ.swap,[rr.TURBOS_FUN]:o1.swap,[rr.VOLO]:o6.swap},tP.swap=function(e){(0,tP.RouterSwapFunctionMap[e.protocol])(e)},(o2||(o2={})).buildAggregatorSwapTransaction=async function(e){let{tx:t,coinOutType:o,tradePaths:r,pythConnections:a,pythClient:n,packageIdMap:i}=e,s=tB.openSwap(e),c=await tW.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];o3.swap({...o,txb:t,swapContext:s,amountIn:o.amountIn,coinAType:a,coinBType:n,packageId:i?.get(o.protocol),pythInfoObjectIdMap:c})}return tB.closeSwap({tx:t,coinOutType:o,swapSession:s})};let rV=tW.newPythConnections(),rJ=tW.newPythClient();var rH=o5||(o5={});function rX(e){var t,o;let r,a,{buildTxParam:n,rawRouteParam:i}=e;switch(i.sourceRoute){case"CETUS":r=tD.convert(i.rawRoute);break;case"FLOWX":r=tv.convert(i.rawRoute);break;case"SEVENK":r=tw.convert(i.rawRoute);break;default:throw Error("Unsupported source route")}let s=rY(n.aggregatorFeeRatePercent),c=n.partnerFeeRatePercent?rY(n.partnerFeeRatePercent):void 0,u=n.expectedAmountOut??rq({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??rV,pythClient:n.pythClient??rJ}}rH.toMetaAggregatorBuildTxParams=rX,rH.buildTx=function(e){let t=rX(e);return o2.buildAggregatorSwapTransaction(t)};let rW=async(e,t,o)=>t<=0?e():new Promise((r,a)=>{let n=setTimeout(()=>a(new rv(`Timeout ${o??"operation"}`,rD.TIMEOUT,{timeout:t})),t);e().then(r).catch(a).finally(()=>clearTimeout(n))}),rz=(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)}},rQ={SEVENK:{},FLOWX:{},CETUS:{}};class rZ{client;jsonRpcClient;providers={};options;constructor(e){this.options={providers:{...rQ,...e?.providers},clients:e.clients,slippageBps:e?.slippageBps??100,hermesApi:e?.hermesApi??tW.PYTH_URLS,partner:e?.partner??eO,partnerCommissionBps:e?.partnerCommissionBps??0,tipBps:e?.tipBps??0},this.client=e.clients.grpc,this.jsonRpcClient=e.clients.jsonRpc}async getQuoteClient(e){let t=this.providers[e];if(t)return t;let o=this.options.providers[e];switch(rv.assert(!!o,`Provider not found: ${e}`,rD.PROVIDER_NOT_FOUND,{provider:e}),e){case"SEVENK":{let{Bluefin7kClient:e}=await Promise.resolve(o8).catch(r0("SEVENK"));this.providers.SEVENK=new e(o,this.client);break}case"FLOWX":{let{FlowxClient:e}=await Promise.resolve(o7).catch(r0("FLOWX"));this.providers.FLOWX=new e(o);break}case"CETUS":{let{CetusClient:e}=await Promise.resolve(o9).catch(r0("CETUS"));this.providers.CETUS=new e(o,this.options,this.client);break}default:throw new rv(`Provider not supported: ${e}`,rD.PROVIDER_NOT_SUPPORTED,{provider:e})}return this.providers[e]}async getQuoteByClient(e,t){return await rW(async()=>{let o=await e.quote(t);return o?(o.amountOut=rq({amountOut:o.amountOut,partnerFeeBps:this.options.partnerCommissionBps,aggregatorFeeBps:this.options.tipBps}),o):null},t.timeout??2e3,`quote for ${e.kind} provider from ${t.coinTypeIn} to ${t.coinTypeOut}`)}async getQuote(e){let t={...e,coinTypeIn:_(e.coinTypeIn),coinTypeOut:_(e.coinTypeOut)};return(await Promise.allSettled(Object.entries(this.options.providers).filter(([e,t])=>!t.disabled).map(async([e])=>{let o=await this.getQuoteClient(e);return this.getQuoteByClient(o,t)}))).map(e=>"fulfilled"===e.status?e.value:(console.warn(e.reason),null)).filter(e=>null!==e)}async swap(e){let{quote:t,signer:o,tx:r,coinIn:a,slippageBps:n}=e,i=m(o);rv.assert(p(i),`Invalid signer address: ${o}`,rD.INVALID_SIGNER_ADDRESS,{signer:o}),r.setSender(i);let s=(n??this.options.slippageBps)/1e4,c=this.options.partner&&this.options.partner!==eO?this.options.partner:void 0,u=c&&this.options.partnerCommissionBps>0?this.options.partnerCommissionBps/1e4:void 0;return o5.buildTx({buildTxParam:{tx:r,inputCoin:a,expectedAmountOut:t.amountOut,slippagePercent:s,aggregatorFeeRatePercent:this.options.tipBps/1e4,aggregatorFeeRecipient:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff",partnerFeeRatePercent:u,partnerFeeRecipient:c,pythConnections:tW.newPythConnections(this.options.hermesApi),pythClient:tW.newPythClient(this.jsonRpcClient)},rawRouteParam:{...t}})}}let r0=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},r1=new Set([rd.SEVENK,rd.CETUS,rd.FLOWX]);function r4(e){let t=Object.values(rd);return e?t.filter(e=>r1.has(e)):t}class r6{sdk;_astrosAggregator;_aftermathAggregator;_sevenkAggregator;_cetusAggregator;_flowXAggregator;constructor(e){this.sdk=e,this._astrosAggregator=new ru({defaultTradeFee:e.options.tradeFee,astrosApiKey:e.options.astrosApiKey},e.suiJsonRpcClient),this._aftermathAggregator=new rc({defaultTradeFee:e.options.tradeFee,aftermathApiKey:e.options.aftermathApiKey,aftermathApiEndpoint:e.options.aftermathApiEndpoint},e.suiJsonRpcClient),this._sevenkAggregator=new rn({defaultTradeFee:e.options.tradeFee,sevenKApiKey:e.options.sevenKApiKey},e.suiClient),this._cetusAggregator=new rl({defaultTradeFee:e.options.tradeFee,cetusApiKey:e.options.cetusApiKey,cetusApiEndpoint:e.options.cetusApiEndpoint,cetusPartnerId:e.options.cetusPartnerId},e.suiClient),this._flowXAggregator=new rp({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 rd.ASTROS:{let e,r=await this._astrosAggregator.getTradeRoute(t);if(!r)return null;let a=ru.toCommonTradeRoutes(r,t.coinInType,t.coinOutType);if(!a)return null;e=t.tradeFee?t.tradeFee.tradeFeePercent:this.sdk.options.tradeFee.tradeFeePercent,a.amountOut=BigInt(new s(r.amount_out).multipliedBy(1-e).toFixed(0,3)),o={route:a,aggregatorRoute:r};break}case rd.AFTERMATH:{let e=await this._aftermathAggregator.getTradeRoute(t);if(!e)return null;let r=rc.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rd.SEVENK:{let e=await this._sevenkAggregator.getTradeRoute(t);if(!e)return null;let r=rn.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rd.CETUS:{let e=await this._cetusAggregator.getTradeRoute(t);if(!e)return null;let r=rl.toCommonTradeRoutes(e,t.coinInType,t.coinOutType);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rd.FLOWX:{let e=await this._flowXAggregator.getTradeRoute(t);if(!e)return null;let r=rp.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e}}}return o}async getTransactionByRoute(e,t){switch(e){case rd.ASTROS:return this._astrosAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rd.AFTERMATH:return this._aftermathAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage});case rd.SEVENK:return this._sevenkAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});case rd.CETUS:return this._cetusAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});case rd.FLOWX:return this._flowXAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator})}}async getTradeTransaction(e,t){let o=await this.getTradeRoute(e,{coinInAmount:t.coinInAmount,coinInType:t.coinInType,coinOutType:t.coinOutType,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});if(!o)return null;let r=await this.getTransactionByRoute(e,{walletAddress:t.walletAddress,completeRoute:o.aggregatorRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});return{route:o.route,aggregatorRoute:o.aggregatorRoute,transaction:r}}async getTradeTransactionWithBestRate(e){let t=r4(e.metaAggregator),o=await Promise.all(t.map(async t=>{try{return await this.getTradeRoute(t,e)}catch{return null}})),r=null,a=null;for(let e=0;e<o.length;e++){let n=o[e],i=t[e];if(n&&(!r||n.route.amountOut>r.route.amountOut)){r=n,a=i;continue}}if(!r||!a)return null;let n=await this.getTransactionByRoute(a,{walletAddress:e.walletAddress,completeRoute:r.aggregatorRoute,slippage:e.slippage,tradeFee:e.tradeFee,metaAggregator:e.metaAggregator});return{route:r.route,aggregatorRoute:r.aggregatorRoute,transaction:n}}async getAmountOut(e,t){let o=await this.getTradeRoute(e,t);return o?o.route.amountOut:null}async getBestAmountOut(e){let t=r4(e.metaAggregator),o=null,r=null;for(let a of t){let t=await this.getAmountOut(a,e);null!==t&&(null===o||t>o)&&(o=t,r=a)}return null===o||null===r?null:{amountOut:o,aggregator:r}}}class r3{sdk;constructor(e){this.sdk=e}async getEstimatedAmountOut(e,t){let{coinInType:o,coinOutType:r}=t;c(o!==r,"coinInType and coinOutType must be different"),c(eI(o)||eI(r),"One of coinInType or coinOutType must be SUI");let a=eI(o);switch(e){case rB.MOONBAGS:if(a)return await tJ.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);return await tJ.getSuiAmountAfterSell({poolId:t.poolId,curveAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);case rB.BLAST_FUN:if(a)return await tq.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});return await tq.getSuiAmountAfterSell({poolId:t.poolId,curveAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});default:throw Error(`Unsupported bonding curve platform: ${e}`)}}async getTradeTransaction(e,t){let o,{coinInType:r,coinOutType:a}=t;c(r!==a,"coinInType and coinOutType must be different"),c(eI(r)||eI(a),"One of coinInType or coinOutType must be SUI");let n=eI(r);switch(e){case rB.MOONBAGS:o=n?await tH.getBuyTransaction(t,this.sdk.suiClient):await tH.getSellTransaction(t,this.sdk.suiClient);break;case rB.BLAST_FUN:o=n?await t$.getBuyTransaction(t,this.sdk.suiClient):await t$.getSellTransaction(t,this.sdk.suiClient);break;default:throw Error(`Unsupported bonding curve platform: ${e}`)}return o}}let r2={tradeFeePercent:.01,tradeFeeRecipientAddress:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff"};class r5{network;env;options;_suiGrpcClient;_suiJsonRpcClient;aggregatorModule;curveModule;constructor(e,t="mainnet",o="prod"){this.options=e,this.network=t,this.env=o,this._suiGrpcClient=e.clients.grpc,this._suiJsonRpcClient=e.clients.jsonRpc,this.aggregatorModule=new r6(this),this.curveModule=new r3(this)}get suiClient(){return this._suiGrpcClient}get suiJsonRpcClient(){return this._suiJsonRpcClient}}class r8{suiClient;constructor(e){this.suiClient=e}validatePrivateKey(e,t){c(e?.trim(),"Private key is required");let o=eu.fromSecretKey(e),r=o.getPublicKey().toSuiAddress();if(r!==t)throw Error(`Private key mismatch. Expected: ${t}, Got: ${r}`);return o}async createDraft(e,t,o){c(e?.trim(),"Sender address is required"),c(t?.trim(),"Recipient address is required"),c(e!==t,"Sender and recipient cannot be the same"),c(o>0n,"Transfer amount must be at least 1 MIST");try{let r=new i,[a]=r.splitCoins(r.gas,[o]);r.transferObjects([a],t),r.setSender(e);let{referenceGasPrice:n}=await this.suiClient.getReferenceGasPrice();r.setGasPrice(n);let s=await eT(this.suiClient,r,e,.1);r=await eC({inheritTx:r,sender:e,feeAmount:s,suiInputAmount:o},this.suiClient);let c=await r.build({client:this.suiClient}),u=Buffer.from(c).toString("base64"),l=await r.getDigest();return{sender:e,recipient:t,amountMIST:o,txDraftBase64:u,txDigest:l}}catch(e){throw Error(`Failed to create draft transaction: ${e instanceof Error?e.message:"Unknown error"}`)}}async execute(e,t){try{c(e,"Draft transaction is required"),c(e.txDraftBase64?.trim(),"Transaction data is required");let o=this.validatePrivateKey(t,e.sender),r=d(e.txDraftBase64),{signature:a}=await o.signTransaction(r),n=await this.suiClient.executeTransaction({transaction:r,signatures:[a],include:{effects:!0}}),i="Transaction"===n.$kind?n.Transaction:n.FailedTransaction,{status:s}=i;return{success:s.success,txDigest:i.digest,effects:i.effects,error:s.success?void 0:s.error.message}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Unknown error occurred"}}}async getTransactionStatus(e){c(e?.trim(),"Transaction digest is required");try{let t=await this.suiClient.getTransaction({digest:e,include:{effects:!0}}),o="Transaction"===t.$kind?t.Transaction:t.FailedTransaction;if(!o.effects?.status)return"pending";return o.effects.status.success?"success":"failure"}catch(e){if(e instanceof Error&&(e.message.includes("not found")||e.message.includes("Could not find")))return"pending";return"failure"}}}var r9=1e4;export{ADMIN_CAP_ID,BOOSTING_PACKAGE_ID,BoostingModule,CLOCK_OBJECT_ID,CONFIG_ID,NATIVE_USDC_TOKEN_TYPE,NoodlesPaySdk,SUBSCRIPTION_CONFIG,SUI_ADDRESS_ZERO,SUI_FULL_TYPE,SUI_METADATA_OBJECT_ID,SUI_TYPE,SubscriptionModule,USDC_TOKEN_TYPE,addGasFee,getAmountAfterFee,getCoinObjectIdsByAmount,getNeededGasFee,getSplitCoinForTx,getSplitCoinsAfterFee,isSuiCoinType}from"./832.js";export{SuiGrpcClient}from"@mysten/sui/grpc";export{r6 as AggregatorModule,rA as BLUEFIN_PACKAGE_ID,r3 as CurveModule,r2 as DEFAULT_TRADE_FEE,r8 as DraftTransferTx,rv as MetaAgError,rZ as MetaClient,r5 as NoodlesSdk,el as SuiJsonRpcClient,rn as SevenKAggregator,rc as AftermathAggregator,tz as AftermathCpmm,tZ as AftermathLsd,o5 as AggregatorConverter,ru as AstrosAggregator,t4 as Blastfun,rL as Bluefin7kClient,tG as BluefinTx,t3 as BluefinClmm,t5 as BluemoveCpmm,t9 as Bolt,tJ as MoonbagsCalculation,rl as CetusAggregator,tD as CetusAggregatorConverter,rN as CetusClient,oe as CetusClmm,oo as CetusDlmm,ro as checkIsSui,rd as SupportedAggregator,tL as BlastFunConstants,tY as MoonbagsConstants,tj as BlastFunCustomCalculation,tK as BlastFunCustomTransaction,oa as DeepbookV3,rt as denormalizeTokenType,oi as DipCpmm,rD as MetaAgErrorCode,r9 as BASE_BPS,oc as FerraClmm,ol as FerraDlmm,rp as FlowXAggregator,tv as FlowXAggregatorConverter,rU as FlowxClient,om as FlowxCpmm,og as FullsailClmm,rz as getExpectedReturn,rO as getGrpcFullnodeUrl,rM as getJsonRpcFullnodeUrl,rE as getMemezPumpSDK,rm as getMoveObject,r_ as getMoveObjectContent,ry as getTransactionResultDigest,oO as HaedalLsdWal,oy as KriyaClmm,oS as MagmaAlmm,oP as MagmaClmm,o2 as MetaAggregator,tR as Metastable,ox as MomentumClmm,oD as Movepump,re as normalizeTokenType,oL as Obric,tU as BlastFunPackage,tN as Bps,tk as MathUtils,tV as MoonbagsPackage,tX as PythPrice,tW as PythUtils,oN as Scallop,tq as BlastFunSDKCalculation,t$ as BlastFunSDKTransaction,tw as SevenKAggregatorConverter,oj as SevenkCpmm,oK as SevenkFun,rb as splitSuiCoinAfterFeeFromBuyTx,rI as splitSuiCoinAfterFeeFromSellTx,oY as SrmCpmm,oJ as Steamm,oW as TradeportClmm,tH as MoonbagsTransaction,oQ as TurbosClmm,o0 as TurbosFun,rr as AggregatorProtocol,rB as SupportedBondingCurve,tx as TradeFeeOptions,o3 as RouterUtils,rW as timeout,o4 as Volo,oC as Walrus};
1
+ let e;import{__webpack_require__ as t}from"./0~rslib-runtime.js";import{BluefinXTx as o,Config as r,buildTx as a,getQuote as n}from"@bluefin-exchange/bluefin7k-aggregator-sdk";import{Transaction as i}from"@mysten/sui/transactions";import s from"bignumber.js";import c from"@minswap/tiny-invariant";import{SUI_CLOCK_OBJECT_ID as u,SUI_SYSTEM_STATE_OBJECT_ID as l,fromBase64 as d,isValidSuiAddress as p,normalizeStructTag as _,normalizeSuiAddress as m,parseStructTag as f,toHex as g}from"@mysten/sui/utils";import{Aftermath as A,AftermathApi as b,Helpers as I}from"aftermath-ts-sdk";import{AFSUI as T,AFTERMATH as C,ALPHAFI as O,AggregatorClient as M,BLUEFIN as y,BLUEMOVE as E,CETUS as h,CETUSDLMM as S,DEEPBOOKV3 as F,Env as P,FERRACLMM as B,FERRADLMM as w,FLOWXV2 as x,FLOWXV3 as R,FULLSAIL as D,HAEDAL as v,HAEDALHMMV2 as L,HAEDALPMM as k,HAWAL as N,KRIYA as U,KRIYAV3 as j,MAGMA as G,METASTABLE as K,MOMENTUM as q,OBRIC as $,SCALLOP as Y,SEVENK as V,SPRINGSUI as J,STEAMM as H,STEAMM_OMM as X,STEAMM_OMM_V2 as W,SUILEND as z,TURBOS as Q,VOLO as Z}from"@cetusprotocol/aggregator-sdk";import ee from"bn.js";import{AggregatorQuoter as et,Coin as eo,Commission as er,CommissionType as ea,Protocol as en,TradeBuilder as ei}from"@flowx-finance/sdk";import{bcs as es}from"@mysten/sui/bcs";import{Network as ec}from"@interest-protocol/sui-core-sdk";import{Ed25519Keypair as eu}from"@mysten/sui/keypairs/ed25519";import{SuiJsonRpcClient as el,getJsonRpcFullnodeUrl as ed}from"@mysten/sui/jsonRpc";import{SuiPriceServiceConnection as ep,SuiPythClient as e_}from"@pythnetwork/pyth-sui-js";import{getAmountAfterFee as em,getSplitCoinForTx as ef,CLOCK_OBJECT_ID as eg,SUI_METADATA_OBJECT_ID as eA,SUI_TYPE as eb,isSuiCoinType as eI,getNeededGasFee as eT,addGasFee as eC,SUI_ADDRESS_ZERO as eO,getSplitCoinsAfterFee as eM,SUI_FULL_TYPE as ey}from"./832.js";var eE,eh,eS,eF,eP,eB,ew,ex,eR,eD,ev,eL,ek,eN,eU,ej,eG,eK,eq,e$,eY,eV,eJ,eH,eX,eW,ez,eQ,eZ,e0,e1,e4,e6,e3,e2,e5,e8,e9,e7,te,tt,to,tr,ta,tn,ti,ts,tc,tu,tl,td,tp,t_,tm,tf,tg,tA,tb,tI,tT,tC,tO,tM,ty,tE,th,tS,tF,tP,tB,tw,tx,tR,tD,tv,tL,tk,tN,tU,tj,tG,tK,tq,t$,tY,tV,tJ,tH,tX,tW,tz,tQ,tZ,t0,t1,t4,t6,t3,t2,t5,t8,t9,t7,oe,ot,oo,or,oa,on,oi,os,oc,ou,ol,od,op,o_,om,of,og,oA,ob,oI,oT,oC,oO,oM,oy,oE,oh,oS,oF,oP,oB,ow,ox,oR,oD,ov,oL,ok,oN,oU,oj,oG,oK,oq,o$,oY,oV,oJ,oH,oX,oW,oz,oQ,oZ,o0,o1,o4,o6,o3,o2,o5,o8={};t.r(o8),t.d(o8,{Bluefin7kClient:()=>rL});var o9={};t.r(o9),t.d(o9,{CetusClient:()=>rN});var o7={};function re(e){return e===eb?ey:e}function rt(e){return e===ey?eb:e}function ro(e){return e===ey||e===eb}t.r(o7),t.d(o7,{FlowxClient:()=>rU}),(eE=tB||(tB={})).MAX_AMOUNT_IN="18446744073709551615",eE.LAST_PACKAGE_ID="0x7e57926855b32baa3b3cabed89380b8d415606fdedadc18e58bd1ef1e60aee48",eE.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:`${eE.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},eE.closeSwap=function(e){let{tx:t,coinOutType:o,swapSession:r}=e,[a]=t.moveCall({target:`${eE.LAST_PACKAGE_ID}::aggregator::close_swap`,typeArguments:[o],arguments:[r]});return a};var rr=((eh={}).AFTERMATH_CPMM="aftermath_cpmm",eh.AFTERMATH_LSD="aftermath_lsd",eh.ALPHAFI_LSD="alphafi_lsd",eh.BLASTFUN="blastfun",eh.BLUEFIN_CLMM="bluefin_clmm",eh.BLUEMOVE_CPMM="bluemove_cpmm",eh.BOLT="bolt",eh.CETUS_CLMM="cetus_clmm",eh.CETUS_DLMM="cetus_dlmm",eh.DEEPBOOK_V3="deepbook_v3",eh.DIP_CPMM="dip_cpmm",eh.FLOWX_CPMM="flowx_cpmm",eh.FLOWX_CLMM="flowx_clmm",eh.FULLSAIL_CLMM="fullsail_clmm",eh.FERRA_CLMM="ferra_clmm",eh.FERRA_DLMM="ferra_dlmm",eh.HAEDAL_CPMM="haedal_cpmm",eh.HAEDAL_CPMM_V2="haedal_cpmm_v2",eh.HAEDAL_LSD="haedal_lsd",eh.HAEDAL_LSD_WAL="haedal_lsd_wal",eh.KRIYA_CLMM="kriya_clmm",eh.KRIYA_CPMM="kriya_cpmm",eh.MAGMA_ALMM="magma_almm",eh.MAGMA_CLMM="magma_clmm",eh.METASTABLE="metastable",eh.MOMENTUM_CLMM="momentum_clmm",eh.MOVEPUMP="movepump",eh.OBRIC="obric",eh.SCALLOP="scallop",eh.SEVENK_CPMM="sevenk_cpmm",eh.SEVENK_FUN="sevenk_fun",eh.SPRINGSUI="springsui",eh.SRM_CPMM="srm_cpmm",eh.STEAMM_CPMM="steamm_cpmm",eh.SUISWAP_CPMM="suiswap_cpmm",eh.STEAMM_OMM="steamm_omm",eh.STEAMM_OMM_V2="steamm_omm_v2",eh.TRADEPORT_CLMM="tradeport_clmm",eh.TURBOS_CLMM="turbos_clmm",eh.TURBOS_FUN="turbos_fun",eh.VOLO="volo",eh);function ra(e,t){console.error(`NOODLES_SDK_AGGREGATOR_ROUTE_ERROR aggregator=${e} error=${function(e){if(e instanceof Error)return`${e.name}: ${e.message}`;if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}(t)}`)}!function(e){let t=new Set(["bluefinx","RFQ"]);e.SUPPORTED_PROTOCOLS=["suiswap","turbos","cetus","bluemove","kriya","kriya_v3","aftermath","deepbook_v3","flowx","flowx_v3","bluefin","springsui","obric","stsui","steamm","steamm_oracle_quoter","steamm_oracle_quoter_v2","magma","haedal_pmm","momentum","sevenk_v1","fullsail","cetus_dlmm","ferra_dlmm","ferra_clmm"];let o={aftermath:e=>{c(e.extra?.poolStructTag,"Aftermath protocol requires poolStructTag");let[t]=i(e.extra.poolStructTag);return{...n(e),protocol:rr.AFTERMATH_CPMM,coinLpType:t}},flowx_v3:e=>{c(e.extra?.swapFeeRate,"flowx_v3 protocol requires swapFeeRate");let t=e.extra.swapFeeRate;return{...n(e),protocol:rr.FLOWX_CLMM,poolFeeRate:t}},turbos:e=>{c(e.extra?.poolStructTag,"turbos protocol requires poolStructTag");let[t,o,r]=i(e.extra.poolStructTag);return{...n(e),protocol:rr.TURBOS_CLMM,coinFeeType:r}},obric:e=>(c(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=>(c(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=>{c(e.extra?.poolStructTag,"sevenk_v1 protocol requires poolStructTag"),c(e.extra?.oracleConfigX,"sevenk_v1 protocol requires oracleConfigX"),c(e.extra?.oracleConfigY,"sevenk_v1 protocol requires oracleConfigY");let t=e.extra.oracles?.[0]?.Pyth?.bytes,o=e.extra.oracles?.[1]?.Pyth?.bytes;c(t,"sevenk_v1 protocol requires pythPriceFeedIdA"),c(o,"sevenk_v1 protocol requires pythPriceFeedIdB");let[r,a,s]=i(e.extra.poolStructTag);return{...n(e),protocol:rr.SEVENK_CPMM,coinLpType:s,pythPriceFeedIdA:t,pythPriceFeedIdB:o,oracleConfigA:e.extra.oracleConfigX,oracleConfigB:e.extra.oracleConfigY}},steamm:e=>{c(e.extra?.poolStructTag,"steamm protocol requires poolStructTag"),c(e.extra?.bankAStructTag,"steamm protocol requires bankAStructTag"),c(e.extra?.lendingMarketA,"steamm protocol requires lendingMarketA"),c(e.extra?.bankA,"steamm protocol requires bankA"),c(e.extra?.bankB,"steamm protocol requires bankB");let[t,o,r,a]=i(e.extra.poolStructTag),[s,u,l]=i(e.extra.bankAStructTag);return{...n(e),protocol: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=>{c(e.extra?.poolStructTag,"steamm_oracle_quoter protocol requires poolStructTag"),c(e.extra?.bankAStructTag,"steamm_oracle_quoter protocol requires bankAStructTag"),c(e.extra?.lendingMarketA,"steamm_oracle_quoter protocol requires lendingMarketA"),c(e.extra?.oracleRegistry,"steamm_oracle_quoter protocol requires oracleRegistry"),c(e.extra?.bankA,"steamm_oracle_quoter protocol requires bankA"),c(e.extra?.bankB,"steamm_oracle_quoter protocol requires bankB"),c(e.extra?.oracleIndexes,"steamm_oracle_quoter protocol requires oracleIndexes"),c(e.extra?.oracles,"steamm_oracle_quoter protocol requires oracles");let[t,o,r,a]=i(e.extra?.poolStructTag),[u,l,d]=i(e.extra.bankAStructTag),[p,_]=e.extra.oracleIndexes;return{...n(e),protocol:rr.STEAMM_OMM,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:u,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:p,oracleIndexB:_}},steamm_oracle_quoter_v2:e=>{c(e.extra?.poolStructTag,"steamm_oracle_quoter_v2 protocol requires poolStructTag"),c(e.extra?.bankAStructTag,"steamm_oracle_quoter_v2 protocol requires bankAStructTag"),c(e.extra?.lendingMarketA,"steamm_oracle_quoter_v2 protocol requires lendingMarketA"),c(e.extra?.oracleRegistry,"steamm_oracle_quoter_v2 protocol requires oracleRegistry"),c(e.extra?.bankA,"steamm_oracle_quoter_v2 protocol requires bankA"),c(e.extra?.bankB,"steamm_oracle_quoter_v2 protocol requires bankB"),c(e.extra?.oracleIndexes,"steamm_oracle_quoter_v2 protocol requires oracleIndexes"),c(e.extra?.oracles,"steamm_oracle_quoter_v2 protocol requires oracles");let[t,o,r,a]=i(e.extra?.poolStructTag),[u,l,d]=i(e.extra.bankAStructTag),[p,_]=e.extra.oracleIndexes;return{...n(e),protocol:rr.STEAMM_OMM_V2,bankAId:e.extra.bankA,bankBId:e.extra.bankB,lendingMarketId:e.extra.lendingMarketA,lendingMarketType:u,bCoinAType:t,bCoinBType:o,lpBCoinType:a,pythPriceFeedIdA:s(e.extra.oracles[0]),pythPriceFeedIdB:s(e.extra.oracles[1]),oracleRegistryId:e.extra.oracleRegistry,oracleIndexA:p,oracleIndexB:_}},cetus:e=>({...n(e),protocol: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=tB.MAX_AMOUNT_IN;return o}function n(e){return{poolId:e.poolId,coinInType:e.assetIn,coinOutType:e.assetOut,amountIn:e.amount,aToB:e.swapXtoY}}function i(e){return f(e||"").typeParams.map(_)}function s(e){let t=e?.Pyth?.bytes||e?.Pyth?.price_identifier?.bytes;return c(t,"Pyth price feed id is not found"),"0x"+g(Uint8Array.from(t))}e.toMetaAggregatorPath=r,e.toMetaAggregatorPaths=a,e.convert=function(e){var t,o,r;let n;c(e.routes,"Invalid raw route: routes is missing");let i=(t=e.routes,n={},t.forEach(e=>{e.hops.forEach(e=>{n[e.poolId]=e.pool})}),n),s=a((o=e.swaps,r=i,o.map(e=>{let t=r[e.poolId],o=rt(e.assetIn),a=rt(e.assetOut),n={type:rt(t?.allTokens?.[0]?.address),decimals:t?.allTokens?.[0]?.decimal},i={type:rt(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}}}(tw||(tw={}));class rn{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:a,metaAggregator:i,supportedProtocols:s}){try{this._config.sevenKApiKey&&r.setApiKey(this._config.sevenKApiKey);let c=i?0:a?a.tradeFeePercent:this._config.defaultTradeFee.tradeFeePercent,u=s??(i?tw.SUPPORTED_PROTOCOLS:void 0);return await n({tokenIn:t,tokenOut:o,amountIn:e.toString(),commissionBps:1e4*c,sources:u})}catch(e){return ra("sevenk",e),null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:r,tradeFee:n,metaAggregator:s}){let c,u;s?(c=0,u=this._config.defaultTradeFee.tradeFeeRecipientAddress):n?(c=n.tradeFeePercent,u=n.tradeFeeRecipientAddress):(c=this._config.defaultTradeFee.tradeFeePercent,u=this._config.defaultTradeFee.tradeFeeRecipientAddress);let l=await a({quoteResponse:t,slippage:r,accountAddress:e,commission:{partner:u,commissionBps:1e4*c}});return l.tx instanceof o?i.from(l.tx.txBytes).build({client:this._suiClient}):(l.tx.setSender(e),l.tx.build({client:this._suiClient}))}}function ri(e){return"bigint"==typeof e?e:"string"==typeof e&&/^\d+$/.test(e)?BigInt(e):e}function rs(e){return{...e,coinIn:e.coinIn?{...e.coinIn,amount:ri(e.coinIn.amount),tradeFee:ri(e.coinIn.tradeFee)}:e.coinIn,coinOut:e.coinOut?{...e.coinOut,amount:ri(e.coinOut.amount),tradeFee:ri(e.coinOut.tradeFee)}:e.coinOut}}(rn||(rn={})).toCommonTradeRoutes=function(e){let t=[];if(!e.routes||0===e.routes.length)return null;for(let o of e.routes){let e=[],r={};for(let t of o.hops){for(let e of t.pool.allTokens)r[e.address]=e.decimal;let o=r[t.tokenIn]??0,a=r[t.tokenOut]??0,n=BigInt(new s(t.tokenInAmount).multipliedBy(10**o).toFixed(0,3)),i=BigInt(new s(t.tokenOutAmount).multipliedBy(10**a).toFixed(0,3));e.push({poolAddress:t.poolId,coinIn:t.tokenIn,coinOut:t.tokenOut,amountIn:n,amountOut:i})}if(0===e.length)continue;let a=r[o.tokenIn]??0,n=r[o.tokenOut]??0,i=BigInt(new s(o.tokenInAmount).multipliedBy(10**a).toFixed(0,3)),c=BigInt(new s(o.tokenOutAmount).multipliedBy(10**n).toFixed(0,3));t.push({paths:e,coinIn:o.tokenIn,coinOut:o.tokenOut,amountIn:i,amountOut:c})}return 0===t.length?null:{coinIn:e.tokenIn,coinOut:e.tokenOut,amountIn:BigInt(e.swapAmountWithDecimal),amountOut:BigInt(e.returnAmountAfterCommissionWithDecimal),routes:t}};class rc{_config;_aftermathClient;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async aftermathClient(){if(this._aftermathClient)return this._aftermathClient;let e=await A.create({network:"MAINNET",baseUrl:this._config.aftermathApiEndpoint}),t=await e.getAddresses(),o=await A.create({network:"MAINNET",baseUrl:this._config.aftermathApiEndpoint,api:new b(this._suiClient,t)});if(this._config.aftermathApiKey){let e=I.keypairFromPrivateKey(this._config.aftermathApiKey);await o.Auth().init({async signMessageCallback({message:t}){let{signature:o}=await e.signPersonalMessage(t);return{signature:o}},walletAddress:e.toSuiAddress()})}return this._aftermathClient=o,o}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r}){try{let a;a=r?{recipient:r.tradeFeeRecipientAddress,feePercentage:r.tradeFeePercent}:{recipient:this._config.defaultTradeFee.tradeFeeRecipientAddress,feePercentage:this._config.defaultTradeFee.tradeFeePercent};let n=await this.aftermathClient();return await n.Router().getCompleteTradeRouteGivenAmountIn({coinInAmount:e,coinInType:t,coinOutType:o,externalFee:a})}catch(e){return ra("aftermath",e),null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o}){let r=await this.aftermathClient(),a=await r.Router().getTransactionForCompleteTradeRoute({completeRoute:function(e){if("object"!=typeof e||null===e)return e;let t=rs(e);return{...t,routes:Array.isArray(t.routes)?t.routes.map(e=>{let t=rs(e);return{...t,portion:ri(t.portion),paths:Array.isArray(t.paths)?t.paths.map(e=>rs(e)):t.paths}}):t.routes,feeBreakdown:Array.isArray(t.feeBreakdown)?t.feeBreakdown.map(e=>({...e,amount:ri(e.amount)})):t.feeBreakdown}}(e),walletAddress:t,slippage:o+(e.netTradeFeePercentage??0),isSponsoredTx:!1});return a.setSender(t),a.build({client:this._suiClient})}}(rc||(rc={})).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 ru{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r}){try{let a;a=r?{fee:1e4*r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:1e4*this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let{getQuote:n}=await import("@naviprotocol/astros-aggregator-sdk");return await n(t,o,e,this._config.astrosApiKey,{byAmountIn:!0,serviceFee:a})}catch(e){return ra("astros",e),null}}returnMergedCoins(e,t,o){if(t.length<2)return e.object(t[0].coinObjectId);let r=0,a=[];t.sort((e,t)=>Number(t.balance)-Number(e.balance)).slice(1).forEach(e=>{r>=o||(r+=Number(e.balance),a.push(e.coinObjectId))});let n=t[0].coinObjectId;return e.mergeCoins(n,a),e.object(n)}async getTransaction({completeRoute:e,walletAddress:t,slippage:o,tradeFee:r}){var a;let n,c;n=r?{fee:r.tradeFeePercent,receiverAddress:r.tradeFeeRecipientAddress}:{fee:this._config.defaultTradeFee.tradeFeePercent,receiverAddress:this._config.defaultTradeFee.tradeFeeRecipientAddress};let u=new s(e.amount_out).multipliedBy(1-o-n.fee).toNumber(),l=new i,{buildSwapPTBFromQuote:d,getCoins:p}=await import("@naviprotocol/astros-aggregator-sdk"),_=this._suiClient;if("0x2::sui::SUI"===(a=e.from)||"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"===a)c=l.splitCoins(l.gas,[l.pure.u64(e.amount_in)]);else{let o=await p(_,t,e.from),r=this.returnMergedCoins(l,o.data,Number.parseFloat(e.amount_in));c=l.splitCoins(r,[l.pure.u64(e.amount_in)])}let m=await d(t,l,u,c,e,void 0,!1,this._config.astrosApiKey,{serviceFee:n});return l.transferObjects([m],t),l.setSender(t),l.build({client:this._suiClient})}}(ru||(ru={})).toCommonTradeRoutes=function(e,t,o){if(0===e.routes.length)return null;let r=[];for(let t of e.routes){let e=[];for(let o of t.path)e.push({poolAddress:o.id,coinIn:o.from,coinOut:o.target,amountIn:BigInt(o.amount_in),amountOut:BigInt(o.amount_out)});0!==e.length&&r.push({amountIn:BigInt(t.amount_in),amountOut:BigInt(t.amount_out),coinIn:e[0].coinIn,coinOut:e[e.length-1].coinOut,paths:e})}return 0===r.length?null:{coinIn:t,coinOut:o,amountIn:BigInt(e.amount_in),amountOut:BigInt(e.amount_out),routes:r}},(tx||(tx={})).equals=function(e,t){return e.tradeFeePercent===t.tradeFeePercent&&e.tradeFeeRecipientAddress===t.tradeFeeRecipientAddress},(eS=tR||(tR={})).UNIVERSAL_META_VAULT_INTEGRATION_PACKAGE_ID="0xfd12517a9fc87c6a1f2357ad13b3421fb27a8bd7ca07d5fd5934ac35733baa47",(eF=eS.MetaCoinType||(eS.MetaCoinType={})).SUPER_SUI="0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI",eF.MUSD="0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD",eF.METH="0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH",eS.VERSION_OBJ_ID="0x4696559327b35ff2ab26904e7426a1646312e9c836d5c6cff6709a5ccc30915c",eS.createCap=function(e){let t,{txb:o,coinType:r,metaCoin:a,createCapAllTypeParams:n,whitelistedAppId:i,poolId:s,pythInfoObjectIdMap:l,createCapPackageId:d,createCapModule:p,createCapFunc:_}=e,m=[a.toString()];switch(n&&m.push(r),e.metaCoin){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":t=[o.object(i),o.object(s),o.object(e.registryId)];break;case"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD":{let r=l.get(e.pythPriceFeedIdMeta);c(r,"Not found priceMetaId in pythObjectIdMap"),t=[o.object(i),o.object(s),o.object(r),o.object(u)];break}case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":{let r=l.get(e.pythPriceFeedIdMeta);c(r,"Not found priceId in pythObjectIdMap");let a=l.get(e.pythPriceFeedIdEth);c(a,"Not found priceEthFeedId in pythObjectIdMap"),t=[o.object(i),o.object(s),o.object(r),o.object(a),o.object(u)];break}default:throw Error("Invalid MetaCoin: "+a.toString())}return o.moveCall({target:`${d}::${p}::${_}`,typeArguments:m,arguments:t})},eS.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)}},eS.isMetaCoinType=function(e){return Object.values(eS.MetaCoinType).map(e=>e.toString()).includes(e)},eS.getCreateCapAllTypeParams=function(e,t){switch(e){case"0x790f258062909e3a0ffc78b3c53ac2f62d7084c3bab95644bdeb05add7250001::super_sui::SUPER_SUI":return t===eS.UNIVERSAL_META_VAULT_INTEGRATION_PACKAGE_ID;case"0xe44df51c0b21a27ab915fa1fe2ca610cd3eaa6d9666fe5e62b988bf7f0bd8722::musd::MUSD":case"0xccd628c2334c5ed33e6c47d6c21bb664f8b6307b2ac32c2462a61f69a31ebcee::meth::METH":return!0;default:throw Error("Invalid MetaCoin: "+e)}},function(e){let t=[h,U,x,R,j,Q,C,v,Z,T,E,F,Y,z,y,k,O,J,H,K,$,N,X,q,W,G,V,L,D,S,w,B];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=tB.MAX_AMOUNT_IN),o.push(i)}return o}e.TO_META_AGGREGATOR_PATH_FN_MAP={[K]:e=>{let t=r(e),o=e.extendedDetails,a=e.direction?e.target:e.from;c(o&&void 0!==o.metastable_create_cap_pkg_id&&void 0!==o.metastable_create_cap_module&&void 0!==o.metastable_create_cap_all_type_params&&void 0!==o.metastable_whitelisted_app_id,`METASTABLE missing required extendedDetails for pool ${e.id}.`);let n={createCapPackageId:o.metastable_create_cap_pkg_id,createCapModule:o.metastable_create_cap_module,createCapAllTypeParams:o.metastable_create_cap_all_type_params,whitelistedAppId:o.metastable_whitelisted_app_id};switch(a){case tR.MetaCoinType.SUPER_SUI:return c(o.metastable_registry_id,`METASTABLE_SUPER_SUI protocol requires 'metastable_registry_id' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:rr.METASTABLE,metaCoin:a,registryId:o.metastable_registry_id};case tR.MetaCoinType.MUSD:return c(o.metastable_price_seed,`METASTABLE_MUSD protocol requires 'metastable_price_seed' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol:rr.METASTABLE,metaCoin:a,pythPriceFeedIdMeta:o.metastable_price_seed};case tR.MetaCoinType.METH:return c(o.metastable_price_seed&&o.metastable_eth_price_seed,`METASTABLE_ETH protocol requires 'metastable_price_seed' and 'metastable_eth_price_seed' in extendedDetails for pool ${e.id}.`),{...t,...n,protocol: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.`)}},[F]:e=>({...r(e),protocol:rr.DEEPBOOK_V3}),[C]:e=>{let t=e.extendedDetails;return c(t?.aftermath_lp_supply_type,`AFTERMATH_CPMM protocol requires 'aftermath_lp_type' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rr.AFTERMATH_CPMM,coinLpType:t.aftermath_lp_supply_type}},[R]:e=>({...r(e),protocol:rr.FLOWX_CLMM,poolFeeRate:String(1e6*e.feeRate)}),[k]:e=>{let t=e.extendedDetails;return c(t?.haedal_pmm_base_price_seed&&t?.haedal_pmm_quote_price_seed,`HAEDAL_CPMM protocol requires 'haedal_pyth_price_a_id' and 'haedal_pyth_price_b_id' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rr.HAEDAL_CPMM,pythPriceFeedIdA:t.haedal_pmm_base_price_seed,pythPriceFeedIdB:t.haedal_pmm_quote_price_seed}},[L]:e=>{let t=e.extendedDetails;return c(t?.haedalhmmv2_base_price_seed,`HAEDAL_CPMM_V2 protocol requires 'haedal_pyth_price_base_id' in extendedDetails for pool ${e.id}.`),{...r(e),protocol:rr.HAEDAL_CPMM_V2,pythPriceFeedIdBase:t.haedalhmmv2_base_price_seed}},[Y]:e=>(c(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}),[H]:e=>{let t=e.extendedDetails;return c(t?.steamm_bank_a&&t?.steamm_bank_b&&t?.steamm_lending_market&&t?.steamm_lending_market_type&&t?.steamm_btoken_a_type&&t?.steamm_btoken_b_type&&t?.steamm_lp_token_type,`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}},[X]:e=>{let t=e.extendedDetails;return c(t?.steamm_bank_a&&t?.steamm_bank_b&&t?.steamm_lending_market&&t?.steamm_lending_market_type&&t?.steamm_btoken_a_type&&t?.steamm_btoken_b_type&&t?.steamm_lp_token_type&&t?.steamm_oracle_pyth_price_seed_a&&t?.steamm_oracle_pyth_price_seed_b&&t?.steamm_oracle_registry_id&&t?.steamm_oracle_index_a&&t?.steamm_oracle_index_b,`STEAMM_OMM 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)}},[W]:e=>{let t=e.extendedDetails;return c(t?.steamm_bank_a&&t?.steamm_bank_b&&t?.steamm_lending_market&&t?.steamm_lending_market_type&&t?.steamm_btoken_a_type&&t?.steamm_btoken_b_type&&t?.steamm_lp_token_type&&t?.steamm_oracle_pyth_price_seed_a&&t?.steamm_oracle_pyth_price_seed_b&&t?.steamm_oracle_registry_id&&t?.steamm_oracle_index_a&&t?.steamm_oracle_index_b,`STEAMM_OMM_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)}},[$]: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 c(t?.sevenk_lp_cap_type&&t?.sevenk_coin_a_price_seed&&t?.sevenk_coin_b_price_seed&&t?.sevenk_oracle_config_a&&t?.sevenk_oracle_config_b,`SEVENK_CPMM protocol requires sevenk fields in extendedDetails for pool ${e.id}.`),{...r(e),protocol: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}},[Q]:e=>(c(e.extendedDetails?.turbos_fee_type,`TURBOS_CLMM protocol requires 'coinFeeType' parameter for pool ${e.id}. Provide it via the parametersMap argument.`),{...r(e),protocol:rr.TURBOS_CLMM,coinFeeType:e.extendedDetails.turbos_fee_type}),[T]:e=>({...r(e),protocol:rr.AFTERMATH_LSD}),[O]:e=>({...r(e),protocol:rr.ALPHAFI_LSD}),[y]:e=>({...r(e),protocol:rr.BLUEFIN_CLMM}),[E]:e=>({...r(e),protocol:rr.BLUEMOVE_CPMM}),[h]:e=>({...r(e),protocol:rr.CETUS_CLMM}),[S]:e=>({...r(e),protocol:rr.CETUS_DLMM}),[B]:e=>({...r(e),protocol:rr.FERRA_CLMM}),[w]:e=>({...r(e),protocol:rr.FERRA_DLMM}),[x]:e=>({...r(e),protocol:rr.FLOWX_CPMM}),[D]:e=>({...r(e),protocol:rr.FULLSAIL_CLMM}),[v]:e=>({...r(e),protocol:rr.HAEDAL_LSD}),[N]:e=>({...r(e),protocol:rr.HAEDAL_LSD_WAL}),[U]:e=>({...r(e),protocol:rr.KRIYA_CPMM}),[j]:e=>({...r(e),protocol:rr.KRIYA_CLMM}),[G]:e=>({...r(e),protocol:rr.MAGMA_CLMM}),[q]:e=>({...r(e),protocol:rr.MOMENTUM_CLMM}),[z]:e=>({...r(e),protocol:rr.SPRINGSUI}),[J]:e=>({...r(e),protocol:rr.SPRINGSUI}),[Z]: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)}}}(tD||(tD={}));class rl{_config;_suiClient;_cetusClient;getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t,overlayFeeRate:o}){return{client:this._suiClient,overlayFeeReceiver:t,overlayFeeRate:o,env:P.Mainnet,signer:e,...this._config.cetusApiKey&&this._config.cetusApiEndpoint?{apiKey:this._config.cetusApiKey,endpoint:this._config.cetusApiEndpoint}:{},partner:this._config.cetusPartnerId}}constructor(e,t){this._config=e,this._suiClient=t}cetusClient(e,t,o){return o?new M(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:void 0,overlayFeeRate:void 0})):t&&!tx.equals(t,this._config.defaultTradeFee)?new M(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:t.tradeFeeRecipientAddress,overlayFeeRate:t.tradeFeePercent})):(this._cetusClient||(this._cetusClient=new M(this.getCetusClientConfig({walletAddress:e,overlayFeeReceiver:this._config.defaultTradeFee.tradeFeeRecipientAddress,overlayFeeRate:this._config.defaultTradeFee.tradeFeePercent}))),this._cetusClient)}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){try{let i=this.cetusClient(void 0,r,a),s=n??(a?tD.SUPPORTED_PROTOCOLS:void 0);return await i.findRouters({from:t,target:o,amount:new ee(e.toString()),byAmountIn:!0,providers:s})}catch(e){return ra("cetus",e),null}}async getTransaction({completeRoute:e,walletAddress:t,slippage:o,tradeFee:r,metaAggregator:a}){let n=this.cetusClient(t,r,a),s=new i;return s.setSender(t),await n.fastRouterSwap({router:e,txb:s,slippage:o}),s.build({client:this._suiClient})}}(rl||(rl={})).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 rd=((eP={}).ASTROS="ASTROS",eP.AFTERMATH="AFTERMATH",eP.SEVENK="7K",eP.CETUS="CETUS",eP.FLOWX="FLOWX",eP);!function(e){let t=[en.HOP_FUN,en.FLOWX_PMM,en.DEEPBOOK,en.IPX_TIDE,en.METASTABLE];e.SUPPORTED_PROTOCOLS=Object.values(en).filter(e=>!t.includes(e));let o={[en.FLOWX_V2]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rr.FLOWX_CPMM}),[en.FLOWX_V3]:t=>(c(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FLOWX_CLMM,poolFeeRate:t.poolFee.toString()}),[en.CETUS]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.CETUS_CLMM}),[en.CETUS_DLMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.CETUS_DLMM}),[en.AFTERMATH]:t=>(c(t.lpCoinType,`AFTERMATH protocol requires lpCoinType for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rr.AFTERMATH_CPMM,coinLpType:t.lpCoinType}),[en.AFTERMATH_LSD]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.AFTERMATH_LSD}),[en.ALPHA_FI]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.ALPHAFI_LSD}),[en.BLUEFIN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.BLUEFIN_CLMM}),[en.BLUEMOVE]:t=>({...e.toMetaAggregatorBasePath(t),aToB:!0,protocol:rr.BLUEMOVE_CPMM}),[en.DEEPBOOK_V3]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.DEEPBOOK_V3}),[en.FERRA_CLMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FERRA_CLMM}),[en.FERRA_DLMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FERRA_DLMM}),[en.FULL_SAIL]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.FULLSAIL_CLMM}),[en.HAEDAL]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.HAEDAL_LSD}),[en.HAEDAL_PMM]:t=>{let o=t.oracles;return c(o&&o.length>=2,`HAEDAL_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.HAEDAL_CPMM,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId}},[en.KRIYA_DEX]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.KRIYA_CPMM}),[en.KRIYA_V3]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.KRIYA_CLMM}),[en.MAGMA_FINANCE]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.MAGMA_CLMM}),[en.MAGMA_ALMM]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.MAGMA_ALMM}),[en.MOMENTUM_FINANCE]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.MOMENTUM_CLMM}),[en.OBRIC]:t=>(c(t.xPriceId&&t.yPriceId,`OBRIC protocol requires price feeds for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.OBRIC,priceInfoObjIdA:t.xPriceId,priceInfoObjIdB:t.yPriceId}),[en.SPRING_SUI]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.SPRINGSUI}),[en.STEAMM]:t=>{c(void 0!==t.bankXInfo&&void 0!==t.bankYInfo,`STEAMM protocol requires bank info for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),c(void 0!==t.quoterType,`quoterType is required for pool ${t.pool.id}`),c(void 0!==t.poolInfo,`poolInfo is required for pool ${t.pool.id}`),c(void 0!==t.protocolConfig&&void 0!==t.protocolConfig.oracleRegistryId,`protocolConfig is required for pool ${t.pool.id}`);let o=t.oracles,r=e.toMetaAggregatorBasePath(t),n=t.xForY;switch(t.quoterType){case"constant_product":return{...r,aToB:n,protocol:rr.STEAMM_CPMM,bankAId:n?t.bankXInfo.bankId:t.bankYInfo.bankId,bankBId:n?t.bankYInfo.bankId:t.bankXInfo.bankId,lendingMarketId:t.bankXInfo.lendingMarketId,lendingMarketType:t.bankXInfo.lendingMarketType,bCoinAType:n?t.bankXInfo.bTokenType:t.bankYInfo.bTokenType,bCoinBType:n?t.bankYInfo.bTokenType:t.bankXInfo.bTokenType,lpBCoinType:t.poolInfo.lpTokenType};case"oracle":case"oracle_v2":{(void 0===o||o.length<2)&&console.error("[FlowXAggregatorConverter][STEAMM_OMM] Missing oracle price feeds",{reason:"oracles is undefined or has less than 2 entries",...a(t)}),c(void 0!==o&&o.length>=2,`STEAMM_OMM protocol requires oracle price feeds for pool ${t.pool.id}.`);let e=o[0],i=o[1],s=[void 0===e.oracleIndex?"oracles[0].oracleIndex":void 0,void 0===i.oracleIndex?"oracles[1].oracleIndex":void 0].filter(e=>void 0!==e);return s.length>0&&console.error("[FlowXAggregatorConverter][STEAMM_OMM] Missing oracle indexes",{reason:"STEAMM OMM requires oracleIndex for both oracle entries",missingFields:s,...a(t)}),c(void 0!==e.oracleIndex&&void 0!==i.oracleIndex,`STEAMM_OMM protocol requires oracle indexes for pool ${t.pool.id}.`),{...r,aToB:n,protocol:"oracle_v2"===t.quoterType?rr.STEAMM_OMM_V2: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:i.priceId,oracleRegistryId:t.protocolConfig.oracleRegistryId,oracleIndexA:e.oracleIndex.toString(),oracleIndexB:i.oracleIndex.toString()}}default:throw Error(`Unsupported quoter type: ${t.quoterType} for pool ${t.pool.id}`)}},[en.SEVENK_V1]:t=>{let o=t.oracles;return c(o&&o.length>=2,`SEVENK_CPMM protocol requires oracle price feeds for pool ${t.pool.id}.`),c(t.poolStructTag,`SEVENK_V1 protocol requires poolStructTag for pool ${t.pool.id}`),c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.SEVENK_CPMM,coinLpType:t.poolStructTag,pythPriceFeedIdA:o[0].priceId,pythPriceFeedIdB:o[1].priceId,oracleConfigA:o[0].oracleId??"",oracleConfigB:o[1].oracleId??""}},[en.SUI_REWARDS]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.SRM_CPMM}),[en.TURBOS_FIANCE]:t=>(c(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(">",""):""}),[en.VOLO_LSD]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:!t.xForY,protocol:rr.VOLO}),[en.TRADEPORT]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),c(void 0!==t.poolFee,`Pool fee is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,poolFeeRate:t.poolFee.toString(),protocol:rr.TRADEPORT_CLMM}),[en.TURBOS_FUN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.TURBOS_FUN}),[en.BLUEMOVE_FUN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,expectedAmountOut:t.amountOut.toString(),protocol:rr.MOVEPUMP}),[en.SEVEN_K_FUN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.SEVENK_FUN}),[en.DIPCOIN]:t=>(c(void 0!==t.xForY,`xForY is required for pool ${t.pool.id}`),{...e.toMetaAggregatorBasePath(t),aToB:t.xForY,protocol:rr.DIP_CPMM}),[en.BOLT]:t=>(c(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((t,r)=>{try{return e.toMetaAggregatorPath(t)}catch(e){throw console.error("[FlowXAggregatorConverter] Failed to convert FlowX swap route",{routeIndex:r,routeCount:o.length,poolId:t.pool.id,protocol:t.protocol(),coinInType:t.input.coinType,coinOutType:t.output.coinType,amountIn:t.amountIn.toString(),amountOut:t.amountOut.toString(),error:e}),e}});for(let e of r.values())a[e].amountIn=tB.MAX_AMOUNT_IN;return a}function a(e){return{poolId:e.pool.id,quoterType:e.quoterType,xForY:e.xForY,coinInType:e.input.coinType,coinOutType:e.output.coinType,amountIn:e.amountIn.toString(),amountOut:e.amountOut.toString(),oracleCount:e.oracles?.length??0,oracles:e.oracles?.map((e,t)=>({index:t,priceId:e.priceId,oracleId:e.oracleId,oracleIndex:e.oracleIndex,hasPriceId:void 0!==e.priceId&&""!==e.priceId,hasOracleId:void 0!==e.oracleId&&""!==e.oracleId,hasOracleIndex:void 0!==e.oracleIndex})),protocolConfig:{oracleRegistryId:e.protocolConfig?.oracleRegistryId,hasOracleRegistryId:e.protocolConfig?.oracleRegistryId!==void 0},bankXInfo:e.bankXInfo,bankYInfo:e.bankYInfo,poolInfo:e.poolInfo,poolStructTag:e.poolStructTag}}e.toMetaAggregatorBasePath=e=>({poolId:e.pool.id,coinInType:e.input.coinType,coinOutType:e.output.coinType,amountIn:e.amountIn.toString()}),e.toMetaAggregatorPath=e=>{let r=e.protocol();if(t.includes(r))throw Error(`Unsupported protocol: ${r}`);return(0,o[r])(e)},e.toMetaAggregatorPaths=r,e.convert=function(e){return{coinInType:e.coinIn.coinType,coinOutType:e.coinOut.coinType,amountOut:e.amountOut.toString(),tradePaths:r(e.routes)}}}(tv||(tv={}));class rp{_config;_suiClient;constructor(e,t){this._config=e,this._suiClient=t}getCommission(e,t,o){let r,a;if(!o)return t?(r=t.tradeFeePercent,a=t.tradeFeeRecipientAddress):(r=this._config.defaultTradeFee.tradeFeePercent,a=this._config.defaultTradeFee.tradeFeeRecipientAddress),new er(a,new eo(e),ea.PERCENTAGE,1e6*r,!0)}async getTradeRoute({coinInAmount:e,coinInType:t,coinOutType:o,tradeFee:r,metaAggregator:a,supportedProtocols:n}){let i=new et("mainnet",this._config.flowxApiKey),s=n??(a?tv.SUPPORTED_PROTOCOLS:void 0);try{return await i.getRoutes({tokenIn:t,tokenOut:o,amountIn:e.toString(),commission:this.getCommission(t,r,a),includeSources:s})}catch(e){return ra("flowx",e),null}}async getTransaction({walletAddress:e,completeRoute:t,slippage:o,tradeFee:r,metaAggregator:a}){let n=new ei("mainnet",t.routes).sender(e).slippage(1e6*o),i=this.getCommission(t.coinIn.coinType,r,a);return i&&(n=n.commission(i)),n.build().buildTransaction({client:this._suiClient}).then(t=>(t.setSender(e),t.build({client:this._suiClient})))}}async function r_(e,t){return(await rm(e,t)).fields}async function rm(e,t){let o=(await e.getObject({objectId:t,include:{json:!0,objectBcs:!0}})).object;c(o,"Pool object not found or has no content"),c(o.json,"Pool object not found or has no content"),c(o.objectBcs,"Pool object not found or has no content");let r=es.Object.parse(o.objectBcs);return c("Move"===r.data.$kind,"Pool object is not a Move object"),{dataType:"moveObject",fields:o.json,hasPublicTransfer:r.data.Move.hasPublicTransfer,type:o.type}}(rp||(rp={})).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}},(eB=tL||(tL={})).PACKAGE_ID_V4="0x7e6aa6e179466ab2814425a780b122575296d011119fa69d27f289f5a28814bd",eB.MEMEZ_AV_OBJECT_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",((ew=tk||(tk={})).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 rf=tN||(tN={});function rg(e){return c(BigInt(e)<=BigInt(1e4),"Bps overflow"),BigInt(e)}rf.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},rf.sub=function(e,t){return c(BigInt(e.pos0)>=BigInt(t.pos0),"Bps underflow"),{pos0:(BigInt(e.pos0)-BigInt(t.pos0)).toString()}},rf.value=function(e){return BigInt(e.pos0)},rf.new_=function(e){return{pos0:rg(e).toString()}},rf.assertOverflow=rg,((ex=tU||(tU={})).MemezFun||(ex.MemezFun={})).isSniperProtectedMemezFun=async function(e,t){return(await r_(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=tN.calcUp(tN.sub(r,o),t);if(t>=a)return a;throw Error(`Insufficient amount to cover fee. Required: ${a}, provided: ${t}`)}throw Error("Unknown fee variant")},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 tN.calcUp(tN.sub(r,t),o)}throw Error("Unknown fee variant")},(ex.MemezBurner||(ex.MemezBurner={})).calculate=function(e,t){if(tN.value(e.fee.fields)===BigInt(0)||t===BigInt(0)||t>=BigInt(e.target_liquidity))return tN.new_(0);let o=BigInt(1e4);return tN.new_(tk.U64.mulDivUp(tN.value(e.fee.fields),tk.U64.mulDivUp(t,o,BigInt(e.target_liquidity)),o))},(eD=ex.MemezPump||(ex.MemezPump={})).getPumpState=async function(e,t){return await r_(e,t.inner_state)},eD.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},eD.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=tN.calcUp(c,a),l=a-(tN.value(c)!==BigInt(0)?u:BigInt(0)),d=(s+i)*l/(n+l);d>i&&(d=i);let p=ex.MemezFees.takeWithDiscount(o.quote_swap_fee,d,o.quote_referrer_fee.fields);return d-p},(ev=tj||(tj={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,n=await r_(t,r),i=await tU.MemezPump.getPumpState(t,n);return o=em(o,a),tU.MemezPump.pump(i,o)},ev.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,n=await r_(t,r),i=await tU.MemezPump.getPumpState(t,n);return em(tU.MemezPump.dump(i,o),a)};let rA="0x62412b7268c35f3808336aee57a52836501f40b8ba5d936f8ad275e672befd04";async function rb(e,t){let o,r,{inputAmount:a,accountAddress:n,frontendFee:s,frontendFeeRecipient:u,extendTx:l,isSponsored:d}=e;c(e.inCoinType===ey||e.inCoinType===eb,"Input must be SUI");let{tx:p,coinIn:_}=l||{},m=eM(a,s||"0"),f=p||new i;if(_)o=f.splitCoins(_,m),tG.transferOrDestroyZeroCoin(f,ey,_,n);else{let{coinData:e}=await ef({account:n,amount:a,splits:m,coinType:ey,inheritTx:f,isSponsored:d||!1},t);o=e}if(s&&u){let[e,t]=o;r=e,f.transferObjects([t],f.pure.address(u||n))}else[r]=o;return{tx:f,coinOut:r}}async function rI(e,t,o){if(c(t.outCoinType===ey||t.outCoinType===eb,"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:`${rA}::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}}(tG||(tG={})).transferOrDestroyZeroCoin=function(e,t,o,r){e.moveCall({target:`${rA}::utils::transfer_or_destroy`,typeArguments:[t],arguments:[o,e.pure.address(r)]})};var rT=tK||(tK={});async function rC(e){let t=e||new i;return t.moveCall({target:`${tL.PACKAGE_ID_V4}::memez_allowed_versions::get_allowed_versions`,arguments:[t.object(tL.MEMEZ_AV_OBJECT_ID)],typeArguments:[]})}function rO(e){switch(e){case"mainnet":return"https://fullnode.mainnet.sui.io:443";case"testnet":return"https://fullnode.testnet.sui.io:443";case"devnet":return"https://fullnode.devnet.sui.io:443";case"localnet":return"http://127.0.0.1:9000";default:throw Error(`Unknown network: ${e}`)}}function rM(e){return rO(e)}function ry(e){return"Transaction"===e.$kind?e.Transaction.digest:e.FailedTransaction.digest}rT.getAllowedVersions=rC,rT.buildBuyTx=async function(e,t){c(!await tU.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 rb(e,t);c(r,"Coin out is required");let a=o.moveCall({target:`${tL.PACKAGE_ID_V4}::memez_pump::pump`,typeArguments:[e.outCoinType,ey],arguments:[o.object(e.poolId),r,o.pure.vector("address",[]),o.pure.vector("vector<u8>",[]),o.pure.u64(e.minAmountOut),await rC(o)]});return{tx:o,coinOut:a}},rT.buildSellTx=async function(e,t){c(e.outCoinType===ey||e.outCoinType===eb,"Output must be SUI");let o=await r_(t,e.poolId),{tx:r,coinData:a}=await ef({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[n]=a,[i]=r.moveCall({target:`${tL.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 rC(r)]});return await rI(r,e,i)};let rE={network:ec.MAINNET,fullNodeUrl:rO("mainnet")};async function rh(){if(!e){let{MemezPumpSDK:t}=await import("@interest-protocol/memez-fun-sdk");e=new t(rE)}return e}(eL=tq||(tq={})).getCurveAmountAfterBuy=async function(e){let{suiAmount:t,poolId:o,frontendFee:r}=e;t=em(t,r);let{memeAmountOut:a}=await (await rh()).quotePump({pool:o,amount:t});return a},eL.getSuiAmountAfterSell=async function(e){let{curveAmount:t,poolId:o,frontendFee:r}=e,{quoteAmountOut:a}=await (await rh()).quoteDump({pool:o,amount:t});return em(a,r)};var rS=t$||(t$={});async function rF(e,t){let{tx:o,coinOut:r}=await rb(e,t);c(r,"Coin out is required");let{memeCoin:a,tx:n}=await (await rh()).pump({pool:e.poolId,quoteCoin:r,minAmountOut:e.minAmountOut,tx:o});return{tx:n,coinOut:a}}async function rP(e,t){c(eI(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await ef({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,{quoteCoin:n,tx:i}=await (await rh()).dump({pool:e.poolId,memeCoin:a,tx:o,minAmountOut:e.minAmountOut});return await rI(i,e,n)}rS.buildBuyTx=rF,rS.buildSellTx=rP,rS.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eI(t),"coinInType must be SUI for buy transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await tq.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0})).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rF({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eT(u,d,n,0);return(d=await eC({inheritTx:d,sender:n,feeAmount:_,suiInputAmount:e},u)).build({client:u})},rS.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eI(o),"coinOutType must be SUI for sell transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await tq.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0})).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rP({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eT(u,d,n,0);return(d=await eC({inheritTx:d,sender:n,feeAmount:_},u)).build({client:u})};var rB=((ek={}).BLAST_FUN="BLAST_FUN",ek.MOONBAGS="MOONBAGS",ek);(eN=tY||(tY={})).PACKAGE_ID="0xb8df325010942634a4afb3db3901ee215546af43a4ec4af781e7213b0bba7290",eN.CONFIG_OBJECT_ID="0x74aecf86067c6913960ba4925333aefd2b1f929cafca7e21fd55a8f244b70499",eN.LOCK_CONFIG_OBJECT_ID="0xfb09822d9808980abd04c51321adb850701f5f55535c6206658ef4d910c3e9be",eN.BURN_MANAGER_OBJECT_ID="0x1d94aa32518d0cb00f9de6ed60d450c9a2090761f326752ffad06b2e9404f845",eN.POOLS_OBJECT_ID="0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0",eN.GLOBAL_CONFIG_OBJECT_ID="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",eN.FEE_DENOMINATOR=BigInt(1e4),function(e){(t=e.Curves||(e.Curves={})).calculateAddLiquidityCost=function(e,t,o){return e*t/(t-o)-e},t.calculateRemoveLiquidityReturn=function(e,t,o){return t-e*t/(e+o)},t.calculateTokenAmountReceived=function(e,t,o){return t-e*t/(e+o)};var t,o=e.Moonbags||(e.Moonbags={});function r(e){return"fields"in e?e.fields.balance:e.balance}o.getDynamicVirtualTokenReserves=async function(e,t){try{let o=await e.getDynamicField({parentId:t,name:{type:"vector<u8>",bcs:es.byteVector().serialize(new TextEncoder().encode("virtual_token_reserves")).toBytes()}});if(!o.dynamicField?.value)return;return BigInt(es.u64().parse(o.dynamicField.value.bcs))}catch(e){if("object"==typeof e&&null!==e&&"code"in e&&"dynamicFieldNotFound"===e.code)return;throw e}},o.buyExactInReturnsWithLock=function(t){let{inputAmount:o,amountIn:a,pool:n,config:i,dynamicVirtualTokenReserves:s}=t,u=BigInt(n.virtual_sui_reserves),l=BigInt(n.virtual_token_reserves),d=BigInt(r(n.remain_token_reserves)),p=e.Curves.calculateRemoveLiquidityReturn(u,l,a),_=l-(s||d),m=p,f=a;p>_&&(m=_,f=e.Curves.calculateAddLiquidityCost(u,l,_)+BigInt(1));let g=f*BigInt(i.platform_fee)/tY.FEE_DENOMINATOR;return c(o>=f+g,"Input amount is less than used SUI + fee"),{receivedCurve:m,receivedSui:o-f-g}},o.sellReturns=function(t){let{amountIn:o,pool:a,config:n}=t,i=BigInt(a.virtual_sui_reserves),s=BigInt(a.virtual_token_reserves),c=BigInt(r(a.real_sui_reserves)),u=e.Curves.calculateRemoveLiquidityReturn(s,i,o);u>c&&(u=c);let l=u*BigInt(n.platform_fee)/tY.FEE_DENOMINATOR,d=u-l;return{receivedCurve:BigInt(0),receivedSui:d}}}(tV||(tV={})),(eU=tJ||(tJ={})).getCurveAmountAfterBuy=async function(e,t){let{suiAmount:o,poolId:r,frontendFee:a}=e,[n,i,s]=await Promise.all([r_(t,r),r_(t,tY.CONFIG_OBJECT_ID),tV.Moonbags.getDynamicVirtualTokenReserves(t,r)]);void 0!==a&&(o=em(o,a));let c=o*tY.FEE_DENOMINATOR/(tY.FEE_DENOMINATOR+BigInt(i.platform_fee)),{receivedCurve:u}=tV.Moonbags.buyExactInReturnsWithLock({inputAmount:o,amountIn:c,pool:n,config:i,dynamicVirtualTokenReserves:s});return u},eU.getSuiAmountAfterSell=async function(e,t){let{curveAmount:o,poolId:r,frontendFee:a}=e,[n,i]=await Promise.all([r_(t,r),r_(t,tY.CONFIG_OBJECT_ID)]),{receivedSui:s}=tV.Moonbags.sellReturns({amountIn:o,pool:n,config:i});return void 0!==a?em(s,a):s},eU.getUsedSuiForTx=async function(e,t){let{suiAmount:o,frontendFee:r}=e,a=await r_(t,tY.CONFIG_OBJECT_ID);return void 0!==r&&(o=em(o,r)),o*tY.FEE_DENOMINATOR/(tY.FEE_DENOMINATOR+BigInt(a.platform_fee))};var rw=tH||(tH={});async function rx(e,t){let{tx:o,coinOut:r}=await rb(e,t);c(r,"Coin out is required");let a=await tJ.getUsedSuiForTx({suiAmount:BigInt(e.inputAmount),frontendFee:e.frontendFee},t),[n,i]=o.moveCall({target:`${tY.PACKAGE_ID}::moonbags::buy_exact_in_returns_with_lock`,typeArguments:[e.outCoinType],arguments:[o.object(tY.CONFIG_OBJECT_ID),o.object(tY.LOCK_CONFIG_OBJECT_ID),r,o.pure.u64(a),o.pure.u64(e.minAmountOut),o.object(tY.BURN_MANAGER_OBJECT_ID),o.object(tY.POOLS_OBJECT_ID),o.object(tY.GLOBAL_CONFIG_OBJECT_ID),o.object(eA),o.object(eg)]});return tG.transferOrDestroyZeroCoin(o,ey,n,e.accountAddress),{tx:o,coinOut:i}}async function rR(e,t){c(eI(e.outCoinType),"Output must be SUI");let{tx:o,coinData:r}=await ef({amount:e.inputAmount,coinType:e.inCoinType,inheritTx:e.extendTx?.tx,account:e.accountAddress,splits:[e.inputAmount]},t),[a]=r,[n,i]=o.moveCall({target:`${tY.PACKAGE_ID}::moonbags::sell_returns`,typeArguments:[e.inCoinType],arguments:[o.object(tY.CONFIG_OBJECT_ID),a,o.pure.u64(e.minAmountOut),o.object(eg)]});return tG.transferOrDestroyZeroCoin(o,e.inCoinType,i,e.accountAddress),await rI(o,e,n)}rw.buildBuyTx=rx,rw.buildSellTx=rR,rw.getBuyTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eI(t),"coinInType must be SUI for buy transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await tJ.getCurveAmountAfterBuy({poolId:r,suiAmount:e,frontendFee:i?i.tradeFeePercent:void 0},u)).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rx({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eT(u,d,n,0);return(d=await eC({inheritTx:d,sender:n,feeAmount:_,suiInputAmount:e},u)).build({client:u})},rw.getSellTransaction=async function({coinInAmount:e,coinInType:t,coinOutType:o,poolId:r,slippage:a,walletAddress:n,tradeFee:i},u){c(eI(o),"coinOutType must be SUI for sell transaction"),c(o!==t,"coinOutType must be different from coinInType"),c(a>=0&&a<1,"slippage must be between 0 (inclusive) and 1 (exclusive)"),c(e>0,"coinInAmount must be greater than 0");let l=BigInt(new s((await tJ.getSuiAmountAfterSell({poolId:r,curveAmount:e,frontendFee:i?i.tradeFeePercent:void 0},u)).toString()).multipliedBy(1-a).toFixed(0,3)),{tx:d,coinOut:p}=await rR({accountAddress:n,inCoinType:t,outCoinType:o,inputAmount:e.toString(),minAmountOut:l.toString(),poolId:r,frontendFee:i?i.tradeFeePercent:void 0,frontendFeeRecipient:i?i.tradeFeeRecipientAddress:void 0,extendTx:void 0,isSponsored:!1},u);c(p,"Coin out is required"),d.transferObjects([p],d.pure.address(n)),d.setSender(n);let _=await eT(u,d,n,0);return(d=await eC({inheritTx:d,sender:n,feeAmount:_},u)).build({client:u})},(ej=tX||(tX={})).LAST_PACKAGE_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",ej.newHolder=function(e){return e.moveCall({target:`${ej.LAST_PACKAGE_ID}::oracle::new_holder`,typeArguments:[],arguments:[]})},ej.getPrice=function(e){let{txb:t,coinOracleId:o,holder:r,coinPriceId:a}=e;t.moveCall({target:`${ej.LAST_PACKAGE_ID}::pyth::get_price`,typeArguments:[],arguments:[t.object(o),r,t.object(a),t.object(u)]})},(eG=tW||(tW={})).PYTH_URLS=["https://hermes.pyth.network"],eG.WORMHOLE_STATE_ID="0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",eG.PYTH_STATE_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",eG.newPythConnections=function(e){return e||(e=eG.PYTH_URLS),e.map(e=>new ep(e,{timeout:3e3}))},eG.newPythClient=function(e){return e||(e=new el({network:"mainnet",url:ed("mainnet")})),new e_(e,eG.PYTH_STATE_ID,eG.WORMHOLE_STATE_ID)},eG.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=((eK={})[eK.UNKNOWN=1e3]="UNKNOWN",eK[eK.TIMEOUT=1001]="TIMEOUT",eK[eK.PROVIDER_NOT_FOUND=1002]="PROVIDER_NOT_FOUND",eK[eK.PROVIDER_NOT_SUPPORTED=1003]="PROVIDER_NOT_SUPPORTED",eK[eK.INVALID_QUOTE=1004]="INVALID_QUOTE",eK[eK.QUOTE_NOT_FOUND=1005]="QUOTE_NOT_FOUND",eK[eK.INVALID_SIGNER_ADDRESS=1006]="INVALID_SIGNER_ADDRESS",eK[eK.PROVIDER_NOT_SUPPORT_SWAP=1007]="PROVIDER_NOT_SUPPORT_SWAP",eK[eK.SIMULATION_FAILED=1008]="SIMULATION_FAILED",eK);class rv extends Error{code;details;constructor(e,t,o){super(e),this.name="MetaAgError",this.code=t??1e3,this.details=o}static assert(e,t,o,r){if(!e)throw new rv(t??"Assertion failed",o,r)}}class rL{options;kind="SEVENK";constructor(e,t){this.options=e,e.apiKey&&r.setApiKey(e.apiKey),r.setSuiClient(t)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tw.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tw.SUPPORTED_PROTOCOLS);let o=await n({tokenIn:e.coinTypeIn,tokenOut:e.coinTypeOut,amountIn:e.amountIn,sources:t,excludedPools:this.options.excludedPools,targetPools:this.options.targetPools});return rv.assert(!!o,"No quote found",rD.QUOTE_NOT_FOUND,{provider:this.kind}),{sourceRoute:"SEVENK",rawRoute:o,amountIn:o.swapAmountWithDecimal,amountOut:o.returnAmountWithDecimal,coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}let rk=tW.PYTH_URLS;class rN{options;kind="CETUS";cetusClient;constructor(e,t,o){this.options=e,this.cetusClient=new M({apiKey:e.apiKey,client:o,endpoint:e.api,env:P.Mainnet,pythUrls:t.hermesApi?t.hermesApi:rk})}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tD.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tD.SUPPORTED_PROTOCOLS);let o=await this.cetusClient.findRouters({amount:e.amountIn,byAmountIn:!0,from:e.coinTypeIn,target:e.coinTypeOut,providers:t,splitCount:this.options.splitCount,splitAlgorithm:this.options.splitAlgorithm,splitFactor:this.options.splitFactor,depth:this.options.depth,liquidityChanges:this.options.liquidityChanges});return rv.assert(!!o,"No quote found",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 rU{options;kind="FLOWX";quoter;constructor(e){this.options=e,this.quoter=new et("mainnet",e.apiKey)}async quote(e){let t=[];if(this.options.sources)for(let e of this.options.sources)tv.SUPPORTED_PROTOCOLS.includes(e)&&t.push(e);else t.push(...tv.SUPPORTED_PROTOCOLS);let o=await this.quoter.getRoutes({amountIn:e.amountIn,tokenIn:e.coinTypeIn,tokenOut:e.coinTypeOut,includeSources:t,excludePools:this.options.excludePools,excludeSources:this.options.excludeSources,maxHops:this.options.maxHops,splitDistributionPercent:this.options.splitDistributionPercent});return{sourceRoute:"FLOWX",rawRoute:o,amountIn:o.amountIn?.toString()??"0",amountOut:o.amountOut?.toString()??"0",coinTypeIn:e.coinTypeIn,coinTypeOut:e.coinTypeOut}}}(eq=tz||(tz={})).POOL_REGISTRY_OBJ_ID="0xfcc774493db2c45c79f688f88d28023a3e7d98e4ee9f48bbf5c7990f651577ae",eq.PROTOCOL_FEE_VAULT_OBJ_ID="0xf194d9b1bcad972e45a7dd67dd49b3ee1e3357a00a50850c52cd51bb450e13b4",eq.TREASURY_OBJ_ID="0x28e499dff5e864a2eafe476269a4f5035f1c16f338da7be18b103499abf271ce",eq.INSURANCE_FUND_OBJ_ID="0xf0c40d67b078000e18032334c3325c47b9ec9f3d9ae4128be820d54663d14e3b",eq.REFERRAL_VAULT_OBJ_ID="0x35d35b0e5b177593d8c3a801462485572fc30861e6ce96a55af6dc4730709278",(e$=tQ||(tQ={})).LAST_PACKAGE_ID="0xf369250dc5a17e9d5a84a3b0cf5aea715c0682170e726dd601f03ade7ce4decb",e$.swap=function(e){c(e.protocol===rr.AFTERMATH_CPMM);let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,coinLpType:u,packageId:l}=e;t.moveCall({target:`${l??e$.LAST_PACKAGE_ID}::aftermath_cpmm_router::swap`,typeArguments:[i,s,u],arguments:[o,t.object(r),t.object(tz.POOL_REGISTRY_OBJ_ID),t.object(tz.PROTOCOL_FEE_VAULT_OBJ_ID),t.object(tz.TREASURY_OBJ_ID),t.object(tz.INSURANCE_FUND_OBJ_ID),t.object(tz.REFERRAL_VAULT_OBJ_ID),t.pure.bool(a),t.pure.u64(n)]})},(eY=tZ||(tZ={})).STAKED_SUI_VAULT_OBJ_ID="0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d",eY.SAFE_TREASURY_OBJECT_ID="0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610",eY.REFERRAL_VAULT_OBJ_ID="0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef",eY.VALIDATOR_ADDRESS="0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2",(eV=t0||(t0={})).LAST_PACKAGE_ID="0x148c4e7ff5b308b2d520e050e6a21d986dd3eb203e0aa3eaaba28000977aebf1",eV.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??eV.LAST_PACKAGE_ID}::aftermath_lsd_router::swap`,arguments:[o,t.object(tZ.STAKED_SUI_VAULT_OBJ_ID),t.object(tZ.SAFE_TREASURY_OBJECT_ID),t.object(l),t.object(tZ.REFERRAL_VAULT_OBJ_ID),t.pure.address(tZ.VALIDATOR_ADDRESS),t.pure.bool(r),t.pure.u64(a)]})},(eJ=t1||(t1={})).LAST_PACKAGE_ID="0x108d5d07cf873dec0bc8034db862db55d38e495c1f3ee0e124cf4861af834f25",eJ.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??eJ.LAST_PACKAGE_ID}::alphafi_lsd_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(l),t.pure.bool(n),t.pure.u64(a)]})},(eH=t4||(t4={})).MEMEZ_AV_OBJ_ID="0x2319e3e76dfad73d8f4684bdbf42be4f32d8ce4521dd61becc8261dc918d82c0",eH.MEMEZ_FUN_OBJ_ID="0x943948644f06942b8b660ca541b10a05f6a7be23ce4069944a3665e7e698930d",eH.IPX_TREASURY_STANDARD_OBJ_ID="0x051e11b667659192917db94e5175fa066909d4dfc04d2663528f499c4afc6999",(eX=t6||(t6={})).LAST_PACKAGE_ID="0x8b1e84ed9bc79d31160600254d65810f6bc6d2352f174a60ed041017d0a2a87a",eX.swap=function(e){c(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??eX.LAST_PACKAGE_ID}::blastfun_router::swap`,typeArguments:[r,a],arguments:[o,t.object(t4.MEMEZ_FUN_OBJ_ID),t.object(t4.IPX_TREASURY_STANDARD_OBJ_ID),t.object(t4.MEMEZ_AV_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(t3||(t3={})).GLOBAL_CONFIG_OBJ_ID="0x03db251ba509a8d5d8777b6338836082335d93eecbdd09a11e190a1cff51c352",(eW=t2||(t2={})).LAST_PACKAGE_ID="0x9f8397124b6bdb55aeb7b5e43761e0e4dc94b9e22e94b1b25d8211d99df422d5",eW.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??eW.LAST_PACKAGE_ID}::bluefin_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(t3.GLOBAL_CONFIG_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(u)]})},(t5||(t5={})).DEX_INFO_OBJ_ID="0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92",(ez=t8||(t8={})).LAST_PACKAGE_ID="0xf52bdd65ee347e8994170f8c331cf0c23a55281b3282467f14ccbb3e2a7f928f",ez.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,coinAType:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??ez.LAST_PACKAGE_ID}::bluemove_cpmm_router::swap`,typeArguments:[n,i],arguments:[o,t.object(t5.DEX_INFO_OBJ_ID),t.pure.bool(r),t.pure.u64(a)]})},(t9||(t9={})).ORACLE_OBJ_ID="0xfa3975b98f3d0e3df18ed88ae6e69db31836b3f4212df02fae144b1e5a89ca8e",(eQ=t7||(t7={})).LAST_PACKAGE_ID="0x2dd7b04509f332bdb93a8f228ab5c40b34baee4645b2ebe5e5fa2c3502b2c088",eQ.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??eQ.LAST_PACKAGE_ID}::bolt_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(t9.ORACLE_OBJ_ID),t.object(u),t.pure.u64(s),t.pure.bool(i)]})},(oe||(oe={})).GLOBAL_CONFIG="0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",(eZ=ot||(ot={})).LAST_PACKAGE_ID="0xb3dbb229464cb14b9f8cfa087e5b162623c8f485395dc9b975e263a5ee7051e4",eZ.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??eZ.LAST_PACKAGE_ID}::cetus_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oe.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(e0=oo||(oo={})).GLOBAL_CONFIG_OBJ_ID="0xf31b605d117f959b9730e8c07b08b856cb05143c5e81d5751c90d2979e82f599",e0.VERSIONED_OBJ_ID="0x05370b2d656612dd5759cbe80463de301e3b94a921dfc72dd9daa2ecdeb2d0a8",(e1=or||(or={})).LAST_PACKAGE_ID="0x9ab3ba62b4327a7d90e4aed1c025b62736f035911ad7bab830c065ec84ef1ffa",e1.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinAType:i,coinBType:s,packageId:c}=e,l=[o,t.object(oo.GLOBAL_CONFIG_OBJ_ID),t.object(oo.VERSIONED_OBJ_ID),t.object(r),t.pure.bool(n),t.pure.u64(a),t.object(u)];t.moveCall({target:`${c??e1.LAST_PACKAGE_ID}::cetus_dlmm_router::swap`,typeArguments:[i,s],arguments:l})},(e4=oa||(oa={})).GLOBAL_CONFIG="0x699d455ab8c5e02075b4345ea1f91be55bf46064ae6026cc2528e701ce3ac135",e4.DEEP_TYPE="0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",(e6=on||(on={})).LAST_PACKAGE_ID="0xff274b63c0f6e3a01f3dd0e923aefcb3146e05e2f6bef4ae339e2703b085f8ed",e6.swap=function(e){c(e.protocol===rr.DEEPBOOK_V3,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolId:n,aToB:i,amountIn:s,deepFeeCoin:l,packageId:d}=e,p=l||t.moveCall({target:"0x2::coin::zero",typeArguments:[oa.DEEP_TYPE]});t.moveCall({target:`${d??e6.LAST_PACKAGE_ID}::deepbook_v3_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oa.GLOBAL_CONFIG),t.object(n),t.pure.u64(s),t.pure.bool(i),p,t.object(u)]})},(oi||(oi={})).GLOBAL_OBJ_ID="0x935229a3c32399e9fb207ec8461a54f56c6af5744c64442435ac217ab28f0d59",(e3=os||(os={})).LAST_PACKAGE_ID="0xfd86c0308327eae31c04560460ee6190220e4ae1cdf5b999eef1110bf0b0f2b8",e3.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??e3.LAST_PACKAGE_ID}::dip_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(oi.GLOBAL_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(oc||(oc={})).FERRA_GLOBAL_CONFIG_ID="0x2cd8382c19e6994f16df204e9b8cddd04bdc486c251de75ac66ac4e48e3e7081",(e2=ou||(ou={})).LAST_PACKAGE_ID="0x70c4318f67d88ebe4e83bacad15f9e2f5c8becd77695f63dc4bd9393730851cd",e2.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??e2.LAST_PACKAGE_ID}::ferra_clmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(oc.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object("0x6")]})},(ol||(ol={})).FERRA_GLOBAL_CONFIG_ID="0x5c9dacf5a678ea15b8569d65960330307e23d429289ca380e665b1aa175ebeca",(e5=od||(od={})).LAST_PACKAGE_ID="0x686e9eb19b04d46374c3fb82cb4ebb7b24ef8a9ae13f403915f4ae347e0f6593",e5.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,coinAType:i,coinBType:s,packageId:c}=e;t.moveCall({target:`${c??e5.LAST_PACKAGE_ID}::ferra_dlmm_router::swap`,typeArguments:[i,s],arguments:[o,t.object(ol.FERRA_GLOBAL_CONFIG_ID),t.object(r),t.pure.bool(a),t.pure.u64(n),t.object(u)]})},(e8=op||(op={})).POOL_REGISTRY_OBJ_ID="0x27565d24a4cd51127ac90e4074a841bbe356cca7bf5759ddc14a975be1632abc",e8.VERSIONED_OBJ_ID="0x67624a1533b5aff5d0dfcf5e598684350efd38134d2d245f475524c03a64e656",(e9=o_||(o_={})).LAST_PACKAGE_ID="0x350a752d3388165e578cc33a39655a6da83613cf4e58c8d9d0723711c2603e17",e9.swap=function(e){c(e.protocol===rr.FLOWX_CLMM);let{txb:t,swapContext:o,coinAType:r,coinBType:a,poolFeeRate:n,amountIn:i,aToB:s,packageId:l}=e;t.moveCall({target:`${l??e9.LAST_PACKAGE_ID}::flowx_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(op.POOL_REGISTRY_OBJ_ID),t.object(op.VERSIONED_OBJ_ID),t.pure.u64(n),t.pure.u64(i),t.pure.bool(s),t.object(u)]})},(om||(om={})).CONTAINER_OBJ_ID="0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511",(e7=of||(of={})).LAST_PACKAGE_ID="0xd95b440ad340bb6cbf571897d312e43d4b6de37b60c69ef714c94b9835cb8866",e7.swap=function(e){let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,packageId:s}=e;t.moveCall({target:`${s??e7.LAST_PACKAGE_ID}::flowx_cpmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(om.CONTAINER_OBJ_ID),t.pure.bool(n),t.pure.u64(i)]})},(te=og||(og={})).GLOBAL_CONFIG_OBJ_ID="0xe93baa80cb570b3a494cbf0621b2ba96bc993926d34dc92508c9446f9a05d615",te.REWARDER_VAULT_OBJ_ID="0xfb971d3a2fb98bde74e1c30ba15a3d8bef60a02789e59ae0b91660aeed3e64e1",te.STATS_OBJ_ID="0x6822a33d1d971e040c32f7cc74507010d1fe786f7d06ab89135083ddb07d2dc2",te.PRICE_PROVIDER_OBJ_ID="0x854b2d2c0381bb656ec962f8b443eb082654384cf97885359d1956c7d76e33c9",(tt=oA||(oA={})).LAST_PACKAGE_ID="0xf0bf13b5baaf3d368f165e846b919294bed79a3ab3ab0c9bd1e75f23533e44a5",tt.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??tt.LAST_PACKAGE_ID}::fullsail_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(og.GLOBAL_CONFIG_OBJ_ID),t.object(og.REWARDER_VAULT_OBJ_ID),t.object(og.STATS_OBJ_ID),t.object(og.PRICE_PROVIDER_OBJ_ID),t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(to=ob||(ob={})).LAST_PACKAGE_ID="0x8969ed3e56c1dbdaf9df52f812d69c6c45fe5a4bab7093c88f5a8697a409398e",to.swap=function(e){c(e.protocol===rr.HAEDAL_CPMM);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdA:l,pythPriceFeedIdB:d,pythInfoObjectIdMap:p,packageId:_}=e,m=p.get(l),f=p.get(d);c(m,"Not found priceInfoAId in pythObjectIdMap"),c(f,"Not found priceInfoBId in pythObjectIdMap"),t.moveCall({target:`${_??to.LAST_PACKAGE_ID}::haedal_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(m),t.object(f),t.pure.u64(s),t.pure.bool(i),t.object(u)]})},(tr=oI||(oI={})).LAST_PACKAGE_ID="0x5d01f22e5471a5912a88e15d62fdcb922beba65b8e8dfe1a715aebf743194f4a",tr.swap=function(e){c(e.protocol===rr.HAEDAL_CPMM_V2);let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,pythPriceFeedIdBase:l,pythInfoObjectIdMap:d,packageId:p}=e,_=d.get(l);c(_,"Not found pythPriceBaseId in pythObjectIdMap"),t.moveCall({target:`${p??tr.LAST_PACKAGE_ID}::haedal_cpmm_v2_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(_),t.pure.u64(s),t.pure.bool(i),t.object(u)]})},(ta=oT||(oT={})).LAST_PACKAGE_ID="0x1644956086caa5eb791eba152f3b69ba862b3a5382ef0e1d8a474ab158aafa1a",ta.swap=function(e){let{txb:t,swapContext:o,aToB:r,amountIn:a,poolId:n,packageId:i}=e;t.moveCall({target:`${i??ta.LAST_PACKAGE_ID}::haedal_lsd_router::swap`,arguments:[o,t.object(n),t.object(l),t.pure.bool(r),t.pure.u64(a)]})},(oC||(oC={})).STAKING_OBJ_ID="0x10b9d30c28448939ce6c4d6c6e0ffce4a7f8a4ada8248bdad09ef8b70e4a3904",(oO||(oO={})).VALIDATOR_ID="0x7b3ba6de2ae58283f60d5b8dc04bb9e90e4796b3b2e0dea75569f491275242e7",(tn=oM||(oM={})).LAST_PACKAGE_ID="0x7be077dd73c85e788c2a49a51f0627066d81d3dc9982c268e3691265a81d544d",tn.swap=function(e){c(e.protocol===rr.HAEDAL_LSD_WAL),c(e.aToB,"HAEDAL_LSD_WAL does not support bToA swap");let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??tn.LAST_PACKAGE_ID}::haedal_wal_lsd_router::swap`,arguments:[o,t.object(oC.STAKING_OBJ_ID),t.object(r),t.pure.id(oO.VALIDATOR_ID),t.pure.bool(a),t.pure.u64(n)]})},(oy||(oy={})).VERSION_OBJ_ID="0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78",(ti=oE||(oE={})).LAST_PACKAGE_ID="0xcf141e1d18ff609b2ac56532b391f7648fc55e28696efe354186f5109c0eff06",ti.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??ti.LAST_PACKAGE_ID}::kriya_clmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oy.VERSION_OBJ_ID),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(ts=oh||(oh={})).LAST_PACKAGE_ID="0x50d37f46df75ef125ce656d4ac91b31b2cf0c1195752a96558561d163e45c223",ts.swap=function(e){let{txb:t,swapContext:o,poolId:r,coinAType:a,coinBType:n,aToB:i,amountIn:s,packageId:c}=e;t.moveCall({target:`${c??ts.LAST_PACKAGE_ID}::kriya_cpmm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s)]})},(tc=oS||(oS={})).FACTORY_OBJ_ID="0xedb456e93e423dd75a8ddebedd9974bb661195043027e32ce01649d6ccee74cf",tc.GLOBAL_CONFIG_OBJ_ID="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(tu=oF||(oF={})).LAST_PACKAGE_ID="0x950f94d33060c0575389c9f84fabab1e140776c6c84389d4237a0c2687a7adc9",tu.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??tu.LAST_PACKAGE_ID}::magma_almm_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.object(oS.FACTORY_OBJ_ID),t.object(oS.GLOBAL_CONFIG_OBJ_ID),t.pure.u64(s),t.pure.bool(i),t.object(u)]})},(oP||(oP={})).GLOBAL_CONFIG="0x4c4e1402401f72c7d8533d0ed8d5f8949da363c7a3319ccef261ffe153d32f8a",(tl=oB||(oB={})).LAST_PACKAGE_ID="0xbe5f590339c55ca8ebbf93cedfb68aafd479d71e1c57043246f7dcf352745242",tl.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??tl.LAST_PACKAGE_ID}::magma_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oP.GLOBAL_CONFIG),t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(td=ow||(ow={})).LATEST_PACKAGE_ID="0xfab91518218f10204b083dba1e62c8bfc23f14fb87742158043e5faec4670ec4",td.swap=function(e){let t,o,r;c(e.protocol===rr.METASTABLE,"Invalid protocol");let{txb:a,swapContext:n,aToB:i,amountIn:s,coinAType:u,coinBType:l,poolId:d,metaCoin:p,packageId:_}=e,[m,f]=i?[u,l]:[l,u];m===p?(r="swap_from_meta_coin",t=[p,f],o=[tR.createCap({coinType:f,createCapFunc:"create_withdraw_cap",...e})]):f===p?(r="swap_to_meta_coin",t=[p,m],o=[tR.createCap({coinType:m,createCapFunc:"create_deposit_cap",...e})]):(r="swap",t=[p,m,f],o=[tR.createCap({coinType:m,createCapFunc:"create_deposit_cap",...e}),tR.createCap({coinType:f,createCapFunc:"create_withdraw_cap",...e})]),a.moveCall({target:`${_??td.LATEST_PACKAGE_ID}::metastable_router::${r}`,typeArguments:t,arguments:[n,a.object(d),a.object(tR.VERSION_OBJ_ID),...o,a.pure.u64(s)]})},(ox||(ox={})).VERSION_OBJ_ID="0x2375a0b1ec12010aaea3b2545acfa2ad34cfbba03ce4b59f4c39e1e25eed1b2a",(tp=oR||(oR={})).LAST_PACKAGE_ID="0xba7ab4c8c39024fa0052bb4f00548a2e7b60742bb4ed0b87bc1d945fd8209102",tp.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??tp.LAST_PACKAGE_ID}::momentum_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(n),t.pure.bool(i),t.pure.u64(s),t.object(ox.VERSION_OBJ_ID),t.object(u)]})},(oD||(oD={})).CONFIGURATION_OBJ_ID="0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4",(t_=ov||(ov={})).LAST_PACKAGE_ID="0x5a259db4b1d17fafc09185c9a71bac36f25f9ee462e72894c8610e5a58b79f8f",t_.swap=function(e){c(e.protocol===rr.MOVEPUMP,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,expectedAmountOut:s,packageId:l}=e;t.moveCall({target:`${l??t_.LAST_PACKAGE_ID}::movepump_router::swap`,typeArguments:[n?a:r],arguments:[o,t.object(oD.CONFIGURATION_OBJ_ID),t.object(t5.DEX_INFO_OBJ_ID),t.object(u),t.pure.u64(s),t.pure.bool(n),t.pure.u64(i)]})},(oL||(oL={})).STATE_OBJ_ID="0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",(tm=ok||(ok={})).LAST_PACKAGE_ID="0xd615fed37d692280047068e80d3a6bb685aa9d574608054c9df881d6a7378fab",tm.swap=function(e){let t,o;c(e.protocol===rr.OBRIC);let{txb:r,swapContext:a,poolId:n,coinAType:i,coinBType:s,aToB:l,amountIn:d,pythInfoObjectIdMap:p,packageId:_}=e;"priceInfoObjIdA"in e?(t=e.priceInfoObjIdA,o=e.priceInfoObjIdB):(t=p.get(e.pythPriceFeedIdA),o=p.get(e.pythPriceFeedIdB),c(t,"Not found priceInfoAId in pythObjectIdMap"),c(o,"Not found priceInfoBId in pythObjectIdMap")),r.moveCall({target:`${_??tm.LAST_PACKAGE_ID}::obric_router::swap`,typeArguments:[i,s],arguments:[a,r.object(n),r.pure.u64(d),r.pure.bool(l),r.object(oL.STATE_OBJ_ID),r.object(t),r.object(o),r.object(u)]})},(tf=oN||(oN={})).VERSION_OBJ_ID="0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",tf.MARKET_OBJ_ID="0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",(tg=oU||(oU={})).LAST_PACKAGE_ID="0xea409bb08c8a09e4127f859d9c36b8b62ca609282aa1e443091db6b7a7409ee7",tg.swap=function(e){c(e.protocol===rr.SCALLOP);let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,scoinTreasury:s,packageId:l}=e;t.moveCall({target:`${l??tg.LAST_PACKAGE_ID}::scallop_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oN.VERSION_OBJ_ID),t.object(oN.MARKET_OBJ_ID),t.object(s),t.pure.u64(i),t.pure.bool(n),t.object(u)]})},(oj||(oj={})).ORACLE_HOLDER_OBJ_ID="0x8c36ea167c5e6da8c3d60b4fc897416105dcb986471bd81cfbfd38720a4487c0",(tA=oG||(oG={})).LAST_PACKAGE_ID="0x918a30e2a05d24ea9451e2d2900d055f74e6752f2e10251fa50c7175831b1958",tA.swap=function(e){c(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:u,oracleConfigA:l,oracleConfigB:d,pythPriceFeedIdA:p,pythPriceFeedIdB:_,pythInfoObjectIdMap:m,packageId:f}=e,g=m.get(p),A=m.get(_);c(g,"Not found priceInfoAId in pythObjectIdMap"),c(A,"Not found priceInfoBId in pythObjectIdMap");let b=tX.newHolder(t);tX.getPrice({txb:t,coinPriceId:p,holder:b,coinOracleId:l}),tX.getPrice({txb:t,coinPriceId:_,holder:b,coinOracleId:d}),t.moveCall({target:`${f??tA.LAST_PACKAGE_ID}::sevenk_cpmm_router::swap`,typeArguments:[a,n,u],arguments:[o,t.object(r),t.object(oj.ORACLE_HOLDER_OBJ_ID),t.pure.bool(i),t.pure.u64(s)]})},(oK||(oK={})).CONFIGURATION_OBJ_ID="0xe79fff6c77d81f9a8efb729e25bf0037deec42518d40b978f274a4915d7e1ec9",(tb=oq||(oq={})).LAST_PACKAGE_ID="0x0a5dc665dc3c1c846a6d1e00811c84cae3510c839ab4dc0873f85dc8908d0606",tb.swap=function(e){c(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??tb.LAST_PACKAGE_ID}::sevenk_fun_router::swap`,typeArguments:[n],arguments:[o,t.object(oK.CONFIGURATION_OBJ_ID),t.object(om.CONTAINER_OBJ_ID),t.object(u),t.pure.bool(r),t.pure.u64(a)]})},(tI=o$||(o$={})).LAST_PACKAGE_ID="0xa6d129c0b314e85d1bc5aecf305d64212bdd5d466457531f4f624fef5f2e7751",tI.swap=function(e){let{txb:t,swapContext:o,poolId:r,amountIn:a,aToB:n,coinBType:i,packageId:s}=e;t.moveCall({target:`${s??tI.LAST_PACKAGE_ID}::springsui_router::swap`,typeArguments:[i],arguments:[o,t.object(r),t.object(l),t.pure.u64(a),t.pure.bool(n)]})},(oY||(oY={})).CONFIG_OBJ_ID="0x881fd0a12ca4fa48991f5c27ba57d17f1ec147fa15f43b3cb760cc3bd7ba9402",(tT=oV||(oV={})).LAST_PACKAGE_ID="0xa314a64962ed4b91a6b4085de4dff2e631fd4c731dbca671a74489955df322ef",tT.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(oY.CONFIG_OBJ_ID),t.pure.bool(a),t.pure.u64(n),t.object("0x6")];t.moveCall({target:`${c??tT.LAST_PACKAGE_ID}::srm_cpmm_router::swap`,typeArguments:[i,s],arguments:u})},(tO=(tC=oJ||(oJ={})).Oracle||(tC.Oracle={})).PACKAGE_ID="0xe84b649199654d18c38e727212f5d8dacfc3cf78d60d0a7fc85fd589f280eb2b",tO.getPythPrice=function(e){let{txb:t,oracleRegistryId:o,priceInfoId:r,oracleIndex:a}=e;return t.moveCall({target:`${tO.PACKAGE_ID}::oracles::get_pyth_price`,typeArguments:[],arguments:[t.object(o),t.object(r),t.pure.u64(a),t.object(u)]})};var rj=oH||(oH={});function rG(e,t){c(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:l,bankAId:d,bankBId:p,lendingMarketId:_,lendingMarketType:m,bCoinAType:f,bCoinBType:g,lpBCoinType:A,pythPriceFeedIdA:b,pythPriceFeedIdB:I,pythInfoObjectIdMap:T,oracleRegistryId:C,oracleIndexA:O,oracleIndexB:M,packageId:y}=e,E=T.get(b),h=T.get(I);c(E,"Not found priceInfoAId in pythObjectIdMap"),c(h,"Not found priceInfoBId in pythObjectIdMap");let S=oJ.Oracle.getPythPrice({txb:o,oracleRegistryId:C,priceInfoId:E,oracleIndex:O}),F=oJ.Oracle.getPythPrice({txb:o,oracleRegistryId:C,priceInfoId:h,oracleIndex:M});o.moveCall({target:`${y??rj.LAST_PACKAGE_ID}::${rK(t)}::swap`,typeArguments:[m,n,i,f,g,A],arguments:[r,o.object(a),o.object(d),o.object(p),o.object(_),S,F,o.pure.bool(s),o.pure.u64(l),o.object(u)]})}function rK(e){switch(e){case 0:return"steamm_omm_router";case 1:return"steamm_omm_v2_router"}}function rq(e){let{amountOut:t,aggregatorFeeBps:o,partnerFeeBps:r}=e,a=r$(t,o);return r&&(a=r$(a,r)),a}function r$(e,t){let o=BigInt(e)*BigInt(t)/BigInt(1e4);return(BigInt(e)-o).toString()}function rY(e){return Math.floor(100*e)}rj.LAST_PACKAGE_ID="0xd606880d67c399f349758111a91582d5515f31dd051632402653d872818f594e",rj.swapCpmm=function(e){c(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:l,bankBId:d,lendingMarketId:p,lendingMarketType:_,bCoinAType:m,bCoinBType:f,lpBCoinType:g}=e;t.moveCall({target:`${rj.LAST_PACKAGE_ID}::steamm_cpmm_router::swap`,typeArguments:[_,a,n,m,f,g],arguments:[o,t.object(r),t.object(l),t.object(d),t.object(p),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},rj.swapOmm=function(e){rG(e,0)},rj.swapOmmV2=function(e){rG(e,1)},rj.getOmmRouterModule=rK,(tM=oX||(oX={})).LAST_PACKAGE_ID="0x7a1cf89025a60161e84809784d772263231fad08a7cb76a88ca1ba69e0a656da",tM.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??tM.LAST_PACKAGE_ID}::suiswap_router::swap`,typeArguments:[a,n],arguments:[o,t.object(r),t.pure.bool(i),t.pure.u64(s),t.object(u)]})},(ty=oW||(oW={})).VERSIONED="0x0309b66202e9aaf470081fffee7ffc0fbd50e3b7400d4f56fd06502e4dbbd676",ty.POOL_REGISTRY="0xcd0a614c4cbbf173f59dee2602c43a1717f283215ed7a0bb1d55d786af16fbcd",(tE=oz||(oz={})).LAST_PACKAGE_ID="0x79957062a7424ed9c2eb83932e4c4fcc3fee67ab3c8f6f874c54e417178bbb7a",tE.swap=function(e){c(e.protocol===rr.TRADEPORT_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,aToB:n,amountIn:i,poolFeeRate:s,packageId:l}=e;t.moveCall({target:`${l??tE.LAST_PACKAGE_ID}::tradeport_clmm_router::swap`,typeArguments:[r,a],arguments:[o,t.object(oW.POOL_REGISTRY),t.pure.u64(s),t.object(oW.VERSIONED),t.pure.bool(n),t.pure.u64(i),t.object(u)]})},(oQ||(oQ={})).POOL_VERSIONED="0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f",(th=oZ||(oZ={})).LAST_PACKAGE_ID="0x512d63711ff38353fb167238b0529001b6871c1727c67ce3bf6ec23556b0f1da",th.swap=function(e){c(e.protocol===rr.TURBOS_CLMM,"Invalid protocol");let{txb:t,swapContext:o,coinAType:r,coinBType:a,coinFeeType:n,poolId:i,aToB:s,amountIn:l,packageId:d}=e;t.moveCall({target:`${d??th.LAST_PACKAGE_ID}::turbos_clmm_router::swap`,typeArguments:[r,a,n],arguments:[o,t.object(i),t.object(oQ.POOL_VERSIONED),t.pure.bool(s),t.pure.u64(l),t.object(u)]})},(o0||(o0={})).CONFIGURATION_OBJ_ID="0xd86685fc3c3d989385b9311ef55bfc01653105670209ac4276ebb6c83d7df928",(tS=o1||(o1={})).LAST_PACKAGE_ID="0x1fad13f09797aa87a4385d0b1efb2de963ba16742447b1ad5a3b0c5b1d1c588b",tS.swap=function(e){c(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??tS.LAST_PACKAGE_ID}::turbos_fun_router::swap`,typeArguments:[r],arguments:[o,t.object(o0.CONFIGURATION_OBJ_ID),t.object(u),t.pure.bool(a),t.pure.u64(n)]})},(o4||(o4={})).VOLO_CERT_METADATA_ID="0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60",(tF=o6||(o6={})).LAST_PACKAGE_ID="0x7c8d95256342f904d5f251776903a17905d87c95f387b3a35cc2aecc23b3c042",tF.swap=function(e){let{txb:t,swapContext:o,poolId:r,aToB:a,amountIn:n,packageId:i}=e;t.moveCall({target:`${i??tF.LAST_PACKAGE_ID}::volo_router::swap`,arguments:[o,t.object(r),t.object(o4.VOLO_CERT_METADATA_ID),t.object(l),t.pure.bool(a),t.pure.u64(n)]})},(tP=o3||(o3={})).RouterSwapFunctionMap={[rr.AFTERMATH_CPMM]:tQ.swap,[rr.AFTERMATH_LSD]:t0.swap,[rr.ALPHAFI_LSD]:t1.swap,[rr.BLASTFUN]:t6.swap,[rr.BLUEFIN_CLMM]:t2.swap,[rr.BLUEMOVE_CPMM]:t8.swap,[rr.BOLT]:t7.swap,[rr.CETUS_CLMM]:ot.swap,[rr.CETUS_DLMM]:or.swap,[rr.DEEPBOOK_V3]:on.swap,[rr.DIP_CPMM]:os.swap,[rr.FERRA_CLMM]:ou.swap,[rr.FERRA_DLMM]:od.swap,[rr.FLOWX_CPMM]:of.swap,[rr.FLOWX_CLMM]:o_.swap,[rr.FULLSAIL_CLMM]:oA.swap,[rr.HAEDAL_CPMM]:ob.swap,[rr.HAEDAL_CPMM_V2]:oI.swap,[rr.HAEDAL_LSD]:oT.swap,[rr.HAEDAL_LSD_WAL]:oM.swap,[rr.KRIYA_CLMM]:oE.swap,[rr.KRIYA_CPMM]:oh.swap,[rr.MAGMA_ALMM]:oF.swap,[rr.MAGMA_CLMM]:oB.swap,[rr.METASTABLE]:ow.swap,[rr.MOMENTUM_CLMM]:oR.swap,[rr.MOVEPUMP]:ov.swap,[rr.OBRIC]:ok.swap,[rr.SCALLOP]:oU.swap,[rr.SEVENK_CPMM]:oG.swap,[rr.SEVENK_FUN]:oq.swap,[rr.SPRINGSUI]:o$.swap,[rr.SRM_CPMM]:oV.swap,[rr.STEAMM_CPMM]:oH.swapCpmm,[rr.STEAMM_OMM]:oH.swapOmm,[rr.STEAMM_OMM_V2]:oH.swapOmmV2,[rr.SUISWAP_CPMM]:oX.swap,[rr.TRADEPORT_CLMM]:oz.swap,[rr.TURBOS_CLMM]:oZ.swap,[rr.TURBOS_FUN]:o1.swap,[rr.VOLO]:o6.swap},tP.swap=function(e){(0,tP.RouterSwapFunctionMap[e.protocol])(e)},(o2||(o2={})).buildAggregatorSwapTransaction=async function(e){let{tx:t,coinOutType:o,tradePaths:r,pythConnections:a,pythClient:n,packageIdMap:i}=e,s=tB.openSwap(e),c=await tW.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];o3.swap({...o,txb:t,swapContext:s,amountIn:o.amountIn,coinAType:a,coinBType:n,packageId:i?.get(o.protocol),pythInfoObjectIdMap:c})}return tB.closeSwap({tx:t,coinOutType:o,swapSession:s})};let rV=tW.newPythConnections(),rJ=tW.newPythClient();var rH=o5||(o5={});function rX(e){var t,o;let r,a,{buildTxParam:n,rawRouteParam:i}=e;switch(i.sourceRoute){case"CETUS":r=tD.convert(i.rawRoute);break;case"FLOWX":r=tv.convert(i.rawRoute);break;case"SEVENK":r=tw.convert(i.rawRoute);break;default:throw Error("Unsupported source route")}let s=rY(n.aggregatorFeeRatePercent),c=n.partnerFeeRatePercent?rY(n.partnerFeeRatePercent):void 0,u=n.expectedAmountOut??rq({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??rV,pythClient:n.pythClient??rJ}}rH.toMetaAggregatorBuildTxParams=rX,rH.buildTx=function(e){let t=rX(e);return o2.buildAggregatorSwapTransaction(t)};let rW=async(e,t,o)=>t<=0?e():new Promise((r,a)=>{let n=setTimeout(()=>a(new rv(`Timeout ${o??"operation"}`,rD.TIMEOUT,{timeout:t})),t);e().then(r).catch(a).finally(()=>clearTimeout(n))}),rz=(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)}},rQ={SEVENK:{},FLOWX:{},CETUS:{}};class rZ{client;jsonRpcClient;providers={};options;constructor(e){this.options={providers:{...rQ,...e?.providers},clients:e.clients,slippageBps:e?.slippageBps??100,hermesApi:e?.hermesApi??tW.PYTH_URLS,partner:e?.partner??eO,partnerCommissionBps:e?.partnerCommissionBps??0,tipBps:e?.tipBps??0},this.client=e.clients.grpc,this.jsonRpcClient=e.clients.jsonRpc}async getQuoteClient(e){let t=this.providers[e];if(t)return t;let o=this.options.providers[e];switch(rv.assert(!!o,`Provider not found: ${e}`,rD.PROVIDER_NOT_FOUND,{provider:e}),e){case"SEVENK":{let{Bluefin7kClient:e}=await Promise.resolve(o8).catch(r0("SEVENK"));this.providers.SEVENK=new e(o,this.client);break}case"FLOWX":{let{FlowxClient:e}=await Promise.resolve(o7).catch(r0("FLOWX"));this.providers.FLOWX=new e(o);break}case"CETUS":{let{CetusClient:e}=await Promise.resolve(o9).catch(r0("CETUS"));this.providers.CETUS=new e(o,this.options,this.client);break}default:throw new rv(`Provider not supported: ${e}`,rD.PROVIDER_NOT_SUPPORTED,{provider:e})}return this.providers[e]}async getQuoteByClient(e,t){return await rW(async()=>{let o=await e.quote(t);return o?(o.amountOut=rq({amountOut:o.amountOut,partnerFeeBps:this.options.partnerCommissionBps,aggregatorFeeBps:this.options.tipBps}),o):null},t.timeout??2e3,`quote for ${e.kind} provider from ${t.coinTypeIn} to ${t.coinTypeOut}`)}async getQuote(e){let t={...e,coinTypeIn:_(e.coinTypeIn),coinTypeOut:_(e.coinTypeOut)};return(await Promise.allSettled(Object.entries(this.options.providers).filter(([e,t])=>!t.disabled).map(async([e])=>{let o=await this.getQuoteClient(e);return this.getQuoteByClient(o,t)}))).map(e=>"fulfilled"===e.status?e.value:(console.warn(e.reason),null)).filter(e=>null!==e)}async swap(e){let{quote:t,signer:o,tx:r,coinIn:a,slippageBps:n}=e,i=m(o);rv.assert(p(i),`Invalid signer address: ${o}`,rD.INVALID_SIGNER_ADDRESS,{signer:o}),r.setSender(i);let s=(n??this.options.slippageBps)/1e4,c=this.options.partner&&this.options.partner!==eO?this.options.partner:void 0,u=c&&this.options.partnerCommissionBps>0?this.options.partnerCommissionBps/1e4:void 0;return o5.buildTx({buildTxParam:{tx:r,inputCoin:a,expectedAmountOut:t.amountOut,slippagePercent:s,aggregatorFeeRatePercent:this.options.tipBps/1e4,aggregatorFeeRecipient:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff",partnerFeeRatePercent:u,partnerFeeRecipient:c,pythConnections:tW.newPythConnections(this.options.hermesApi),pythClient:tW.newPythClient(this.jsonRpcClient)},rawRouteParam:{...t}})}}let r0=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},r1=new Set([rd.SEVENK,rd.CETUS,rd.FLOWX]);function r4(e){let t=Object.values(rd);return e?t.filter(e=>r1.has(e)):t}class r6{sdk;_astrosAggregator;_aftermathAggregator;_sevenkAggregator;_cetusAggregator;_flowXAggregator;constructor(e){this.sdk=e,this._astrosAggregator=new ru({defaultTradeFee:e.options.tradeFee,astrosApiKey:e.options.astrosApiKey},e.suiJsonRpcClient),this._aftermathAggregator=new rc({defaultTradeFee:e.options.tradeFee,aftermathApiKey:e.options.aftermathApiKey,aftermathApiEndpoint:e.options.aftermathApiEndpoint},e.suiJsonRpcClient),this._sevenkAggregator=new rn({defaultTradeFee:e.options.tradeFee,sevenKApiKey:e.options.sevenKApiKey},e.suiClient),this._cetusAggregator=new rl({defaultTradeFee:e.options.tradeFee,cetusApiKey:e.options.cetusApiKey,cetusApiEndpoint:e.options.cetusApiEndpoint,cetusPartnerId:e.options.cetusPartnerId},e.suiClient),this._flowXAggregator=new rp({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 rd.ASTROS:{let e,r=await this._astrosAggregator.getTradeRoute(t);if(!r)return null;let a=ru.toCommonTradeRoutes(r,t.coinInType,t.coinOutType);if(!a)return null;e=t.tradeFee?t.tradeFee.tradeFeePercent:this.sdk.options.tradeFee.tradeFeePercent,a.amountOut=BigInt(new s(r.amount_out).multipliedBy(1-e).toFixed(0,3)),o={route:a,aggregatorRoute:r};break}case rd.AFTERMATH:{let e=await this._aftermathAggregator.getTradeRoute(t);if(!e)return null;let r=rc.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rd.SEVENK:{let e=await this._sevenkAggregator.getTradeRoute(t);if(!e)return null;let r=rn.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rd.CETUS:{let e=await this._cetusAggregator.getTradeRoute(t);if(!e)return null;let r=rl.toCommonTradeRoutes(e,t.coinInType,t.coinOutType);if(!r)return null;o={route:r,aggregatorRoute:e};break}case rd.FLOWX:{let e=await this._flowXAggregator.getTradeRoute(t);if(!e)return null;let r=rp.toCommonTradeRoutes(e);if(!r)return null;o={route:r,aggregatorRoute:e}}}return o}async getTransactionByRoute(e,t){switch(e){case rd.ASTROS:return this._astrosAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee});case rd.AFTERMATH:return this._aftermathAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage});case rd.SEVENK:return this._sevenkAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});case rd.CETUS:return this._cetusAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});case rd.FLOWX:return this._flowXAggregator.getTransaction({walletAddress:t.walletAddress,completeRoute:t.completeRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator})}}async getTradeTransaction(e,t){let o=await this.getTradeRoute(e,{coinInAmount:t.coinInAmount,coinInType:t.coinInType,coinOutType:t.coinOutType,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});if(!o)return null;let r=await this.getTransactionByRoute(e,{walletAddress:t.walletAddress,completeRoute:o.aggregatorRoute,slippage:t.slippage,tradeFee:t.tradeFee,metaAggregator:t.metaAggregator});return{route:o.route,aggregatorRoute:o.aggregatorRoute,transaction:r}}async getTradeTransactionWithBestRate(e){let t=r4(e.metaAggregator),o=await Promise.all(t.map(async t=>{try{return await this.getTradeRoute(t,e)}catch{return null}})),r=null,a=null;for(let e=0;e<o.length;e++){let n=o[e],i=t[e];if(n&&(!r||n.route.amountOut>r.route.amountOut)){r=n,a=i;continue}}if(!r||!a)return null;let n=await this.getTransactionByRoute(a,{walletAddress:e.walletAddress,completeRoute:r.aggregatorRoute,slippage:e.slippage,tradeFee:e.tradeFee,metaAggregator:e.metaAggregator});return{route:r.route,aggregatorRoute:r.aggregatorRoute,transaction:n}}async getAmountOut(e,t){let o=await this.getTradeRoute(e,t);return o?o.route.amountOut:null}async getBestAmountOut(e){let t=r4(e.metaAggregator),o=null,r=null;for(let a of t){let t=await this.getAmountOut(a,e);null!==t&&(null===o||t>o)&&(o=t,r=a)}return null===o||null===r?null:{amountOut:o,aggregator:r}}}class r3{sdk;constructor(e){this.sdk=e}async getEstimatedAmountOut(e,t){let{coinInType:o,coinOutType:r}=t;c(o!==r,"coinInType and coinOutType must be different"),c(eI(o)||eI(r),"One of coinInType or coinOutType must be SUI");let a=eI(o);switch(e){case rB.MOONBAGS:if(a)return await tJ.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);return await tJ.getSuiAmountAfterSell({poolId:t.poolId,curveAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0},this.sdk.suiClient);case rB.BLAST_FUN:if(a)return await tq.getCurveAmountAfterBuy({poolId:t.poolId,suiAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});return await tq.getSuiAmountAfterSell({poolId:t.poolId,curveAmount:t.coinInAmount,frontendFee:t.tradeFee?t.tradeFee.tradeFeePercent:void 0});default:throw Error(`Unsupported bonding curve platform: ${e}`)}}async getTradeTransaction(e,t){let o,{coinInType:r,coinOutType:a}=t;c(r!==a,"coinInType and coinOutType must be different"),c(eI(r)||eI(a),"One of coinInType or coinOutType must be SUI");let n=eI(r);switch(e){case rB.MOONBAGS:o=n?await tH.getBuyTransaction(t,this.sdk.suiClient):await tH.getSellTransaction(t,this.sdk.suiClient);break;case rB.BLAST_FUN:o=n?await t$.getBuyTransaction(t,this.sdk.suiClient):await t$.getSellTransaction(t,this.sdk.suiClient);break;default:throw Error(`Unsupported bonding curve platform: ${e}`)}return o}}let r2={tradeFeePercent:.01,tradeFeeRecipientAddress:"0xdaf1c8ed29d89cd8f217f609bad0a668fa6f158c12000bfa5f93e670c99e24ff"};class r5{network;env;options;_suiGrpcClient;_suiJsonRpcClient;aggregatorModule;curveModule;constructor(e,t="mainnet",o="prod"){this.options=e,this.network=t,this.env=o,this._suiGrpcClient=e.clients.grpc,this._suiJsonRpcClient=e.clients.jsonRpc,this.aggregatorModule=new r6(this),this.curveModule=new r3(this)}get suiClient(){return this._suiGrpcClient}get suiJsonRpcClient(){return this._suiJsonRpcClient}}class r8{suiClient;constructor(e){this.suiClient=e}validatePrivateKey(e,t){c(e?.trim(),"Private key is required");let o=eu.fromSecretKey(e),r=o.getPublicKey().toSuiAddress();if(r!==t)throw Error(`Private key mismatch. Expected: ${t}, Got: ${r}`);return o}async createDraft(e,t,o){c(e?.trim(),"Sender address is required"),c(t?.trim(),"Recipient address is required"),c(e!==t,"Sender and recipient cannot be the same"),c(o>0n,"Transfer amount must be at least 1 MIST");try{let r=new i,[a]=r.splitCoins(r.gas,[o]);r.transferObjects([a],t),r.setSender(e);let{referenceGasPrice:n}=await this.suiClient.getReferenceGasPrice();r.setGasPrice(n);let s=await eT(this.suiClient,r,e,.1);r=await eC({inheritTx:r,sender:e,feeAmount:s,suiInputAmount:o},this.suiClient);let c=await r.build({client:this.suiClient}),u=Buffer.from(c).toString("base64"),l=await r.getDigest();return{sender:e,recipient:t,amountMIST:o,txDraftBase64:u,txDigest:l}}catch(e){throw Error(`Failed to create draft transaction: ${e instanceof Error?e.message:"Unknown error"}`)}}async execute(e,t){try{c(e,"Draft transaction is required"),c(e.txDraftBase64?.trim(),"Transaction data is required");let o=this.validatePrivateKey(t,e.sender),r=d(e.txDraftBase64),{signature:a}=await o.signTransaction(r),n=await this.suiClient.executeTransaction({transaction:r,signatures:[a],include:{effects:!0}}),i="Transaction"===n.$kind?n.Transaction:n.FailedTransaction,{status:s}=i;return{success:s.success,txDigest:i.digest,effects:i.effects,error:s.success?void 0:s.error.message}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Unknown error occurred"}}}async getTransactionStatus(e){c(e?.trim(),"Transaction digest is required");try{let t=await this.suiClient.getTransaction({digest:e,include:{effects:!0}}),o="Transaction"===t.$kind?t.Transaction:t.FailedTransaction;if(!o.effects?.status)return"pending";return o.effects.status.success?"success":"failure"}catch(e){if(e instanceof Error&&(e.message.includes("not found")||e.message.includes("Could not find")))return"pending";return"failure"}}}var r9=1e4;export{ADMIN_CAP_ID,BOOSTING_PACKAGE_ID,BoostingModule,CLOCK_OBJECT_ID,CONFIG_ID,NATIVE_USDC_TOKEN_TYPE,NoodlesPaySdk,SUBSCRIPTION_CONFIG,SUI_ADDRESS_ZERO,SUI_FULL_TYPE,SUI_METADATA_OBJECT_ID,SUI_TYPE,SubscriptionModule,USDC_TOKEN_TYPE,addGasFee,getAmountAfterFee,getCoinObjectIdsByAmount,getNeededGasFee,getSplitCoinForTx,getSplitCoinsAfterFee,isSuiCoinType}from"./832.js";export{SuiGrpcClient}from"@mysten/sui/grpc";export{r6 as AggregatorModule,rA as BLUEFIN_PACKAGE_ID,r3 as CurveModule,r2 as DEFAULT_TRADE_FEE,r8 as DraftTransferTx,rv as MetaAgError,rZ as MetaClient,r5 as NoodlesSdk,el as SuiJsonRpcClient,rn as SevenKAggregator,rc as AftermathAggregator,tz as AftermathCpmm,tZ as AftermathLsd,o5 as AggregatorConverter,ru as AstrosAggregator,t4 as Blastfun,rL as Bluefin7kClient,tG as BluefinTx,t3 as BluefinClmm,t5 as BluemoveCpmm,t9 as Bolt,tJ as MoonbagsCalculation,rl as CetusAggregator,tD as CetusAggregatorConverter,rN as CetusClient,oe as CetusClmm,oo as CetusDlmm,ro as checkIsSui,rd as SupportedAggregator,tL as BlastFunConstants,tY as MoonbagsConstants,tj as BlastFunCustomCalculation,tK as BlastFunCustomTransaction,oa as DeepbookV3,rt as denormalizeTokenType,oi as DipCpmm,rD as MetaAgErrorCode,r9 as BASE_BPS,oc as FerraClmm,ol as FerraDlmm,rp as FlowXAggregator,tv as FlowXAggregatorConverter,rU as FlowxClient,om as FlowxCpmm,og as FullsailClmm,rz as getExpectedReturn,rO as getGrpcFullnodeUrl,rM as getJsonRpcFullnodeUrl,rh as getMemezPumpSDK,rm as getMoveObject,r_ as getMoveObjectContent,ry as getTransactionResultDigest,oO as HaedalLsdWal,oy as KriyaClmm,oS as MagmaAlmm,oP as MagmaClmm,o2 as MetaAggregator,tR as Metastable,ox as MomentumClmm,oD as Movepump,re as normalizeTokenType,oL as Obric,tU as BlastFunPackage,tN as Bps,tk as MathUtils,tV as MoonbagsPackage,tX as PythPrice,tW as PythUtils,oN as Scallop,tq as BlastFunSDKCalculation,t$ as BlastFunSDKTransaction,tw as SevenKAggregatorConverter,oj as SevenkCpmm,oK as SevenkFun,rb as splitSuiCoinAfterFeeFromBuyTx,rI as splitSuiCoinAfterFeeFromSellTx,oY as SrmCpmm,oJ as Steamm,oW as TradeportClmm,tH as MoonbagsTransaction,oQ as TurbosClmm,o0 as TurbosFun,rr as AggregatorProtocol,rB as SupportedBondingCurve,tx as TradeFeeOptions,o3 as RouterUtils,rW as timeout,o4 as Volo,oC as Walrus};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minswap/noodles-sdk",
3
- "version": "0.1.0-beta.1",
3
+ "version": "0.1.0",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {