@msafe/sui-app-store 0.0.67 → 0.0.69
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.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var Ho=Object.defineProperty;var Ta=(a,t)=>{for(var e in t)Ho(a,e,{get:t[e],enumerable:!0})};import{TransactionType as yr}from"@msafe/sui3-utils";import{TransactionType as Jo}from"@msafe/sui3-utils";import zo from"sort-keys-recursive";var p=class{constructor(t){this.data=t}get application(){return"msafe-core"}serialize(){return JSON.stringify(zo(this.data))}};import{CetusClmmSDK as Xo}from"@cetusprotocol/cetus-sui-clmm-sdk";var ut={fullRpcUrl:"https://fullnode.mainnet.sui.io/",simulationAccount:{address:"0x326ce9894f08dcaa337fa232641cc34db957aec9ff6614c1186bc9a7508df0bb"},cetus_config:{package_id:"0x95b8d278b876cae22206131fb9724f701c9444515813042f54f0a426c9a3bc2f",published_at:"0x95b8d278b876cae22206131fb9724f701c9444515813042f54f0a426c9a3bc2f",config:{coin_list_id:"0x8cbc11d9e10140db3d230f50b4d30e9b721201c0083615441707ffec1ef77b23",launchpad_pools_id:"0x1098fac992eab3a0ab7acf15bb654fc1cf29b5a6142c4ef1058e6c408dd15115",clmm_pools_id:"0x15b6a27dd9ae03eb455aba03b39e29aad74abd3757b8e18c0755651b2ae5b71e",admin_cap_id:"0x39d78781750e193ce35c45ff32c6c0c3f2941fa3ddaf8595c90c555589ddb113",global_config_id:"0x0408fa4e4a4c03cc0de8f23d0c2bbfe8913d178713c9a271ed4080973fe42d8f",coin_list_handle:"0x49136005e90e28c4695419ed4194cc240603f1ea8eb84e62275eaff088a71063",launchpad_pools_handle:"0x5e194a8efcf653830daf85a85b52e3ae8f65dc39481d54b2382acda25068375c",clmm_pools_handle:"0x37f60eb2d9d227949b95da8fea810db3c32d1e1fa8ed87434fc51664f87d83cb"}},clmm_pool:{package_id:"0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb",published_at:"0xc33c3e937e5aa2009cc0c3fdb3f345a0c3193d4ee663ffc601fe8b894fbc4ba6",version:4,config:{pools_id:"0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0",global_config_id:"0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",global_vault_id:"0xce7bceef26d3ad1f6d9b6f13a953f053e6ed3ca77907516481ce99ae8e588f2b",admin_cap_id:"0x89c1a321291d15ddae5a086c9abc533dff697fde3d89e0ca836c41af73e36a75"}},integrate:{package_id:"0x996c4d9480708fb8b92aa7acf819fb0497b5ec8e65ba06601cae2fb6db3312c3",published_at:"0xd43348b8879c1457f882b02555ba862f2bc87bcc31b16294ca14a82f608875d2",version:6},deepbook:{package_id:"0x000000000000000000000000000000000000000000000000000000000000dee9",published_at:"0x000000000000000000000000000000000000000000000000000000000000dee9"},deepbook_endpoint_v2:{package_id:"0x92aee86c01c79146d23938a00c7fff725ee0688c389be36d1bcbe03761b466c6",published_at:"0x92aee86c01c79146d23938a00c7fff725ee0688c389be36d1bcbe03761b466c6"},aggregatorUrl:"https://api-sui.cetus.zone/router",swapCountUrl:"https://api-sui.cetus.zone/v2/sui/swap/count"},D={launchpad:{package_id:"0x80d114c5d474eabc2eb2fcd1a0903f1eb5b5096a8dc4184d72453f7a9be728e4",published_at:"0x80d114c5d474eabc2eb2fcd1a0903f1eb5b5096a8dc4184d72453f7a9be728e4",config:{pools_id:"0xfd8d37f7a1276878972d240302c8efe32f577220c1bbc6c8984d8b60dddfcab3",admin_cap_id:"0x66c70d58c69353714cc6fe2d3a62492d605a96a9821e2bd8274de17219c69980",config_cap_id:"0x02b8d23f033687579966e182c776fe0287cacdbb18bff56c29f141e29a18a4d1"}},ido:{package_id:"0x1192c9e20b4b0a8848a73a8c711b43e38f7ea1f307b556aab6ffab4e982e9c59",published_at:"0x1192c9e20b4b0a8848a73a8c711b43e38f7ea1f307b556aab6ffab4e982e9c59",config:{pools_id:"0xefc209b47acf1f23b29d166440904600229e520ad36228aaf2329b7c16be9762",admin_cap_id:"0x281859d366951830aeeda90779aa170d8ee6845875545470d33ecb890e78c8ce",package_version_id:"0xc93dc996106770af5f4e979b6808518f8cee080f22f35b936f071f59d834bb22"}},xcetus:{package_id:"0x9e69acc50ca03bc943c4f7c5304c2a6002d507b51c11913b247159c60422c606",published_at:"0x9e69acc50ca03bc943c4f7c5304c2a6002d507b51c11913b247159c60422c606",config:{xcetus_manager_id:"0x838b3dbade12b1e602efcaf8c8b818fae643e43176462bf14fd196afa59d1d9d",lock_manager_id:"0x288b59d9dedb51d0bb6cb5e13bfb30885ecf44f8c9076b6f5221c5ef6644fd28",lock_handle_id:"0x7c534bb7b8a2cc21538d0dbedd2437cc64f47106cb4c259b9ff921b5c3cb1a49"}},xcetus_dividends:{package_id:"0x785248249ac457dfd378bdc6d2fbbfec9d1daf65e9d728b820eb4888c8da2c10",published_at:"0xcec352932edc6663a118e8d64ed54da6b8107e8719603bf728f80717592cd9e8",version:3,config:{dividend_manager_id:"0x721c990bfc031d074341c6059a113a59c1febfbd2faeb62d49dcead8408fa6b5",dividend_admin_id:"",dividend_settle_id:""}},cetus_faucet:{package_id:"0x6864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",published_at:"0x6864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b"},xtoken:{package_id:"",published_at:"",config:{xtoken_manager_id:"",lock_manager_id:"",lock_handle_id:""}},xtoken_dividends:{package_id:"",published_at:"",config:{dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""}},token_faucet:{package_id:"",published_at:""},booster:{package_id:"",published_at:"",config:{booster_config_id:"",booster_pool_handle:""}},maker_bonus:{package_id:"",published_at:"",config:{maker_config_id:"",maker_pool_handle:""}},liquidity_stratefy:{package_id:"",published_at:"",version:void 0,config:void 0},vaults:{package_id:"0xd3453d9be7e35efe222f78a810bb3af1859fd1600926afced8b4936d825c9a05",published_at:"0xd3453d9be7e35efe222f78a810bb3af1859fd1600926afced8b4936d825c9a05",version:1,config:{admin_cap_id:"0x78a42978709c4032fab7b33b782b5bcef64c1c6603250bf23644650b72144375",vaults_manager_id:"0x25b82dd2f5ee486ed1c8af144b89a8931cd9c29dee3a86a1bfe194fdea9d04a6",vaults_pool_handle:"0x9036bcc5aa7fd2cceec1659a6a1082871f45bc400c743f50063363457d1738bd"}},limit_order:{package_id:"",published_at:"",version:1,config:{rate_orders_indexer_id:"",rate_orders_indexer_handle:"",global_config_id:"",token_list_handle:"",user_orders_indexer_id:"",user_orders_indexer_handle:""}},frams:{package_id:"0x11ea791d82b5742cc8cab0bf7946035c97d9001d7c3803a93f119753da66f526",published_at:"0x11ea791d82b5742cc8cab0bf7946035c97d9001d7c3803a93f119753da66f526",version:1,config:{global_config_id:"0x21215f2f6de04b57dd87d9be7bb4e15499aec935e36078e2488f36436d64996e",rewarder_manager_id:"0xe0e155a88c77025056da08db5b1701a91b79edb6167462f768e387c3ed6614d5",rewarder_manager_handle:"0xb32e312cbb3367d6f3d2b4e57c9225e903d29b7b9f612dae2ddf75bdeb26a5aa",admin_cap_id:"0xf10fbf1fea5b7aeaa524b87769461a28c5c977613046360093673991f26d886c"}},haedal:{package_id:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",published_at:"0x1d56b8ec33c3fae897eb7bb1acb79914e8152faed614868928e684c25c8b198d",version:1,config:{support_stakings:[{staking_id:"0x47b224762220393057ebf4f70501b6e657c3e56684737568439a04f80849b2ca",from_coin_type:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",to_coin_type:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI"}]}}};var F=new Xo(ut),ka=async(a,t,e)=>(console.log("getAddLiquidityTxb suiClient: ",e),console.log("getAddLiquidityTxb txbParams: ",a),F.senderAddress=t.address,await F.Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg)),xa=async(a,t,e)=>(console.log("getIncreaseLiquidityTxb suiClient: ",e),F.senderAddress=t.address,console.log("getIncreaseLiquidityTxb txbParams: ",a),await F.Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg)),Aa=async(a,t,e)=>(console.log("getRemoveLiquidityTxb txbParams: ",a),console.log("getRemoveLiquidityTxb suiClient: ",e),F.senderAddress=t.address,await F.Position.closePositionTransactionPayload(a)),va=async(a,t,e)=>(console.log("getDecreaseLiquidityTxb txbParams: ",a),console.log("getDecreaseLiquidityTxb suiClient: ",e),F.senderAddress=t.address,await F.Position.removeLiquidityTransactionPayload(a)),Oa=async(a,t,e)=>(console.log("getClaimFeeAndMiningTxb txbParams: ",a),console.log("getClaimFeeAndMiningTxb suiClient: ",e),F.senderAddress=t.address,await F.Rewarder.collectRewarderTransactionPayload(a));var Yt=class a extends p{constructor(e){super(e);this.data=e}txType=Jo.Other;txSubType="OpenAndAddLiquidity";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("AddLiquidityIntention this.data: ",this.data),console.log("AddLiquidityIntention txbParams: ",r);let i=await ka(r,n,o);return console.log("AddLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as Yo}from"@msafe/sui3-utils";var Zt=class a extends p{constructor(e){super(e);this.data=e}txType=Yo.Other;txSubType="ClaimFeeAndMining";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("ClaimFeeAndMiningIntention this.data: ",this.data),console.log("ClaimFeeAndMiningIntention txbParams: ",r);let i=await Oa(r,n,o);return console.log("ClaimFeeAndMiningIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as Zo}from"@msafe/sui3-utils";var te=class a extends p{constructor(e){super(e);this.data=e}txType=Zo.Other;txSubType="DecreaseLiquidity";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("DecreaseLiquidityIntention this.data: ",this.data),console.log("DecreaseLiquidityIntention txbParams: ",r);let i=await va(r,n,o);return console.log("DecreaseLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as er}from"@msafe/sui3-utils";import{CetusPeripherySDK as H}from"@cetusprotocol/cetus-periphery-sdk";import{CetusClmmSDK as tr}from"@cetusprotocol/cetus-sui-clmm-sdk";var v=new tr(ut),Pa=async(a,t,e)=>(console.log("getFarmingAddLiquidityTxb account: ",t),console.log("getFarmingAddLiquidityTxb suiClient: ",e),v.senderAddress=t.address,await new H(D,v).Farms.openPositionAddLiquidityStakePaylod(a)),Da=async(a,t,e)=>(console.log("getFarmingIncreaseLiquidityTxb account: ",t),console.log("getFarmingIncreaseLiquidityTxb suiClient: ",e),v.senderAddress=t.address,await new H(D,v).Farms.addLiquidityFixCoinPayload(a)),Ra=async(a,t,e)=>(console.log("getFarmingDecreaseLiquidityTxb account: ",t),console.log("getFarmingDecreaseLiquidityTxb suiClient: ",e),v.senderAddress=t.address,await new H(D,v).Farms.removeLiquidityPayload(a)),ja=async(a,t,e)=>(console.log("getFarmingRemoveLiquidityTxb account: ",t),console.log("getFarmingRemoveLiquidityTxb suiClient: ",e),v.senderAddress=t.address,await new H(D,v).Farms.removeLiquidityPayload(a)),Na=async(a,t,e)=>(console.log("getFarmingClaimFeeAndRewardTxb account: ",t),console.log("getFarmingClaimFeeAndRewardTxb suiClient: ",e),v.senderAddress=t.address,await new H(D,v).Farms.claimFeeAndClmmReward(a)),ee=async(a,t,e)=>(console.log("getFarmingBatchHarvest account: ",t),console.log("getFarmingBatchHarvest suiClient: ",e),v.senderAddress=t.address,await new H(D,v).Farms.batchHarvestPayload(a)),_a=async(a,t,e)=>(console.log("getFarmingStake account: ",t),console.log("getFarmingStake suiClient: ",e),v.senderAddress=t.address,await new H(D,v).Farms.depositPayload(a)),Ba=async(a,t,e)=>(console.log("getFarmingUnstake account: ",t),console.log("getFarmingUnstake suiClient: ",e),v.senderAddress=t.address,await new H(D,v).Farms.withdrawPayload(a));var ne=class a extends p{constructor(e){super(e);this.data=e}txType=er.Other;txSubType="FarmingOpenAndAddLiquidity";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("FarmingAddLiquidityIntention this.data: ",this.data),console.log("FarmingAddLiquidityIntention txbParams: ",r);let i=await Pa(r,n,o);return console.log("FarmingAddLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as nr}from"@msafe/sui3-utils";var ae=class a extends p{constructor(e){super(e);this.data=e}txType=nr.Other;txSubType="FarmingBatchHarvest";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("FarmingBatchHarvestIntention this.data: ",this.data),console.log("FarmingBatchHarvestIntention txbParams: ",r);let i=await ee(r,n,o);return console.log("FarmingBatchHarvestIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as ar}from"@msafe/sui3-utils";var oe=class a extends p{constructor(e){super(e);this.data=e}txType=ar.Other;txSubType="FarmingClaimFeeAndReward";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("FarmingClaimFeeAndRewardIntention this.data: ",this.data),console.log("FarmingClaimFeeAndRewardIntention txbParams: ",r);let i=await Na(r,n,o);return console.log("FarmingClaimFeeAndRewardIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as or}from"@msafe/sui3-utils";var re=class a extends p{constructor(e){super(e);this.data=e}txType=or.Other;txSubType="FarmingDecreaseLiquidity";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("FarmingDecreaseLiquidityIntention this.data: ",this.data),console.log("FarmingDecreaseLiquidityIntention txbParams: ",r);let i=await Ra(r,n,o);return console.log("FarmingDecreaseLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as rr}from"@msafe/sui3-utils";var ie=class a extends p{constructor(e){super(e);this.data=e}txType=rr.Other;txSubType="FarmingHarvest";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("FarmingHarvestIntention this.data: ",this.data),console.log("FarmingHarvestIntention txbParams: ",r);let i=await ee(r,n,o);return console.log("FarmingHarvestIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as ir}from"@msafe/sui3-utils";var se=class a extends p{constructor(e){super(e);this.data=e}txType=ir.Other;txSubType="FarmingIncreaseLiquidity";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("FarmingIncreaseLiquidityIntention this.data: ",this.data),console.log("FarmingIncreaseLiquidityIntention txbParams: ",r);let i=await Da(r,n,o);return console.log("FarmingIncreaseLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as sr}from"@msafe/sui3-utils";var ce=class a extends p{constructor(e){super(e);this.data=e}txType=sr.Other;txSubType="FarmingRemoveLiquidity";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("FarmingRemoveLiquidityIntention this.data: ",this.data),console.log("FarmingRemoveLiquidityIntention txbParams: ",r);let i=await ja(r,n,o);return console.log("FarmingRemoveLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as cr}from"@msafe/sui3-utils";var de=class a extends p{constructor(e){super(e);this.data=e}txType=cr.Other;txSubType="FarmingStake";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("FarmingStakeIntention this.data: ",this.data),console.log("FarmingStakeIntention txbParams: ",r);let i=await _a(r,n,o);return console.log("FarmingStakeIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as dr}from"@msafe/sui3-utils";var le=class a extends p{constructor(e){super(e);this.data=e}txType=dr.Other;txSubType="FarmingUnstake";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("FarmingUnstakeIntention this.data: ",this.data),console.log("FarmingUnstakeIntention txbParams: ",r);let i=await Ba(r,n,o);return console.log("FarmingUnstakeIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as lr}from"@msafe/sui3-utils";var ue=class a extends p{constructor(e){super(e);this.data=e}txType=lr.Other;txSubType="IncreaseLiquidity";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("IncreaseLiquidityIntention this.data: ",this.data),console.log("IncreaseLiquidityIntention txbParams: ",r);let i=await xa(r,n,o);return console.log("IncreaseLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as ur}from"@msafe/sui3-utils";var pe=class a extends p{constructor(e){super(e);this.data=e}txType=ur.Other;txSubType="RemoveLiquidity";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("RemoveLiquidityIntention this.data: ",this.data),console.log("RemoveLiquidityIntention txbParams: ",r);let i=await Aa(r,n,o);return console.log("RemoveLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as mr}from"@msafe/sui3-utils";import{CetusPeripherySDK as Pt}from"@cetusprotocol/cetus-periphery-sdk";import{CetusClmmSDK as pr}from"@cetusprotocol/cetus-sui-clmm-sdk";var W=new pr(ut),Ea=async(a,t,e)=>(console.log("getXcetusConvertTxb account: ",t),console.log("getXcetusConvertTxb suiClient: ",e),W.senderAddress=t.address,await new Pt(D,W).XCetusModule.convertPayload(a)),Ma=async(a,t,e)=>(console.log("getXcetusRedeemLockTxb account: ",t),console.log("getXcetusRedeemLockTxb suiClient: ",e),W.senderAddress=t.address,await new Pt(D,W).XCetusModule.redeemLockPayload(a)),La=async(a,t,e)=>(console.log("getXcetusClaimingStakeRewardsTxb account: ",t),console.log("getXcetusClaimingStakeRewardsTxb suiClient: ",e),W.senderAddress=t.address,await new Pt(D,W).XCetusModule.redeemDividendV2Payload(a.venft_id,a.bonus_types,a.xTokenType)),Fa=async(a,t,e)=>(console.log("getXcetusCancelRedeemTxb account: ",t),console.log("getXcetusCancelRedeemTxb suiClient: ",e),W.senderAddress=t.address,await new Pt(D,W).XCetusModule.cancelRedeemPayload(a)),Wa=async(a,t,e)=>(console.log("getXcetusRedeemTxb account: ",t),console.log("getXcetusRedeemTxb suiClient: ",e),W.senderAddress=t.address,await new Pt(D,W).XCetusModule.redeemPayload(a));var me=class a extends p{constructor(e){super(e);this.data=e}txType=mr.Other;txSubType="xCETUSCancelRedeem";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("XcetusCancelIntention this.data: ",this.data),console.log("XcetusCancelIntention txbParams: ",r);let i=await Fa(r,n,o);return console.log("XcetusCancelIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as br}from"@msafe/sui3-utils";var be=class a extends p{constructor(e){super(e);this.data=e}txType=br.Other;txSubType="xCETUSClaimStakingRwewards";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("XcetusClaimingStakeRewardsIntention this.data: ",this.data),console.log("XcetusClaimingStakeRewardsIntention txbParams: ",r);let i=await La(r,n,o);return console.log("XcetusClaimingStakeRewardsIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as fr}from"@msafe/sui3-utils";var fe=class a extends p{constructor(e){super(e);this.data=e}txType=fr.Other;txSubType="xCETUSConvert";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("XcetusConvertIntention this.data: ",this.data),console.log("XcetusConvertIntention txbParams: ",r);let i=await Ea(r,n,o);return console.log("XcetusConvertIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as gr}from"@msafe/sui3-utils";var ge=class a extends p{constructor(e){super(e);this.data=e}txType=gr.Other;txSubType="xCETUSRedeem";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("XcetusRedeemIntention this.data: ",this.data),console.log("XcetusRedeemIntention txbParams: ",r);let i=await Wa(r,n,o);return console.log("XcetusRedeemIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as hr}from"@msafe/sui3-utils";var he=class a extends p{constructor(e){super(e);this.data=e}txType=hr.Other;txSubType="xCETUSRedeemLock";async build(e){let{account:n,suiClient:o}=e,{txbParams:r}=this.data;console.log("XcetusRedeemLockIntention this.data: ",this.data),console.log("XcetusRedeemLockIntention txbParams: ",r);let i=await Ma(r,n,o);return console.log("XcetusRedeemLockIntention build txb: ",i),i}static fromData(e){return new a(e)}};var ye=class{application="cetus";async deserialize(t){console.log("Cetus helper deserialize input: ",t);let{txbParams:e,action:n}=t;return{txType:yr.Other,txSubType:n,intentionData:{txbParams:{...e},action:n}}}async build(t){let{suiClient:e,account:n}=t;console.log("helper build input: ",t),console.log("helper build input.intentionData: ",t.intentionData),console.log("helper build input.intentionData JSON: ",JSON.stringify(t.intentionData));let o;switch(t.txSubType){case"OpenAndAddLiquidity":o=Yt.fromData(t.intentionData);break;case"IncreaseLiquidity":o=ue.fromData(t.intentionData);break;case"DecreaseLiquidity":o=te.fromData(t.intentionData);break;case"RemoveLiquidity":o=pe.fromData(t.intentionData);break;case"ClaimFeeAndMining":o=Zt.fromData(t.intentionData);break;case"FarmingOpenAndAddLiquidity":o=ne.fromData(t.intentionData);break;case"FarmingIncreaseLiquidity":o=se.fromData(t.intentionData);break;case"FarmingDecreaseLiquidity":o=re.fromData(t.intentionData);break;case"FarmingRemoveLiquidity":o=ce.fromData(t.intentionData);break;case"FarmingClaimFeeAndReward":o=oe.fromData(t.intentionData);break;case"FarmingHarvest":o=ie.fromData(t.intentionData);break;case"FarmingBatchHarvest":o=ae.fromData(t.intentionData);break;case"FarmingStake":o=de.fromData(t.intentionData);break;case"FarmingUnstake":o=le.fromData(t.intentionData);break;case"xCETUSConvert":o=fe.fromData(t.intentionData);break;case"xCETUSRedeemLock":o=he.fromData(t.intentionData);break;case"xCETUSClaimStakingRwewards":o=be.fromData(t.intentionData);break;case"xCETUSCancelRedeem":o=me.fromData(t.intentionData);break;case"xCETUSRedeem":o=ge.fromData(t.intentionData);break;default:throw new Error("not implemented")}return console.log("helper build intention: ",o),o.build({suiClient:e,account:n})}};import{TransactionType as gi}from"@msafe/sui3-utils";var Kn={};Ta(Kn,{contractId:()=>wr,default:()=>Ar,feeObjId:()=>kr,roleObjId:()=>Ir,status:()=>Cr,transaction:()=>Sr,upgradeCapObjId:()=>xr,vaultObjId:()=>Tr});var Sr="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",Cr="success",wr="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",Ir="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",Tr="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",kr="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",xr="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",Ar={transaction:Sr,status:Cr,contractId:wr,roleObjId:Ir,vaultObjId:Tr,feeObjId:kr,upgradeCapObjId:xr};var Hn={};Ta(Hn,{contractId:()=>Pr,default:()=>_r,feeObjId:()=>jr,roleObjId:()=>Dr,status:()=>Or,transaction:()=>vr,upgradeCapObjId:()=>Nr,vaultObjId:()=>Rr});var vr="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",Or="success",Pr="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",Dr="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",Rr="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",jr="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",Nr="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",_r={transaction:vr,status:Or,contractId:Pr,roleObjId:Dr,vaultObjId:Rr,feeObjId:jr,upgradeCapObjId:Nr};var Br="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",Er="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",Mr="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",Lr="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",Fr="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",Wr="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",Ur="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",qr="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",Ua=Kn,qa=Hn,$r=new Map([["dev",{env:"dev",rpc:{url:Br},backend:{url:Fr},contract:Ua}],["stg",{env:"stg",rpc:{url:Er},backend:{url:Wr},contract:Ua}],["prev",{env:"prev",rpc:{url:Mr},backend:{url:Ur},contract:qa}],["prod",{env:"prod",rpc:{url:Lr},backend:{url:qr},contract:qa}]]);function $a(a,t){let e=$r.get(a);if(!e)throw new Error(`Env not supported: ${a}`);return t&&t.rpc&&(e.rpc=t.rpc),t&&t.backend&&(e.backend=t.backend),t&&t.contract&&(e.contract=t.contract),e}import{SuiClient as Vr}from"@mysten/sui.js/client";var S=class extends Error{mpayErrorCode;context;constructor(t,e,n={}){let{cause:o,context:r}=n;o?super(`[MPay] ${e}: ${o}`):super(`[MPay] ${e}`),this.mpayErrorCode=t,this.context=r}};var Se=class extends S{constructor(){super(11,"Backend is not specified")}};var Ce=class extends S{constructor(){super(1,"Wallet not connected")}};import mt,{AxiosError as Qr}from"axios";var pt=class extends S{constructor(t,e){super(10,t,{context:e})}};var we=class a{constructor(t){this.apiURL=t}static parseResponseData(t){if(t instanceof Qr)throw new pt(t.response?.statusText);if(t.status===200){if(t.data.success)return t.data.data;throw new pt(t.data.code)}throw new pt(t.status.toString())}async getIncomingStreams(t,e){let n=await mt.post(`${this.apiURL}/stream`,{recipient:t,...e});return a.parseResponseData(n)}async getOutgoingStreams(t,e){let n=await mt.post(`${this.apiURL}/stream`,{sender:t,...e});return a.parseResponseData(n)}async getStreamHistory(t){let e=await mt.post(`${this.apiURL}/stream-events`,t),n=a.parseResponseData(e);return n.data.forEach(o=>{let r=o;return r.data.type==="create_stream"?r.data.balance=BigInt(r.data.balance):r.data.type==="cancel_stream"?r.data.withdrawAmount=BigInt(r.data.withdrawAmount):r.data.type==="claim"||r.data.type==="auto_claim"?r.data.claimAmount=BigInt(r.data.claimAmount):r.data.type==="set_auto_claim"&&(r.data.enabled=!!r.data.enabled),r.createdAt=new Date(r.createdAt),r}),n}async getAllCoinTypes(t){let e=await mt.post(`${this.apiURL}/stream-info`,{address:t});return a.parseResponseData(e)}async getAllRecipients(t,e){let n=await mt.post(`${this.apiURL}/stream-info`,{sender:t,status:e});return a.parseResponseData(n)}async getAllSenders(t,e){let n=await mt.post(`${this.apiURL}/stream-info`,{recipient:t,status:e});return a.parseResponseData(n)}};var bt=class a{signer;suiClient;envConfig;_backend;constructor(t){this.envConfig=t,this.suiClient=new Vr({url:t.rpc.url}),t.backend&&(this._backend=new we(t.backend.url))}static new(t,e){let n=$a(t,e);return new a(n)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new Se;return this._backend}set backend(t){this._backend=t}connectWallet(t){this.signer=t}disconnect(){this.signer=void 0}get wallet(){if(!this.signer)throw new Ce;return this.signer}async walletAddress(){return this.wallet.address()}};import{SUI_TYPE_ARG as pi,normalizeStructTag as mi,normalizeSuiAddress as bo}from"@mysten/sui.js/utils";import{TransactionBlock as ve}from"@mysten/sui.js/transactions";import{TransactionBlock as Ya}from"@mysten/sui.js/transactions";import{SUI_TYPE_ARG as Za,normalizeStructTag as zr}from"@mysten/sui.js/utils";var zn=50n,Ie=10000n,Qa=25n,Xn=100000000n;var U=class{constructor(t){this.object=t}moveArg(t){return t.object(this.object)}},Dt=class{constructor(t){this.objects=t}moveArgs(t){return t.makeMoveVec({objects:this.objects.map(e=>t.object(e))})}},J=class a{constructor(t){this.result=t;return new Proxy(this,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(e,n){if(n in e)return Reflect.get(e,n);let o=i=>new a(e.result[i]);if(n===Symbol.iterator)return function*(){let i=0;for(;;)yield o(i),i++};if(typeof n=="symbol")return;let r=parseInt(n,10);if(!(Number.isNaN(r)||r<0))return o(r)}})}moveArg(){return this.result}};import{Buffer as Va}from"buffer";import{normalizeSuiAddress as Gr}from"@mysten/sui.js/utils";var Rt=class extends S{constructor(t,e){super(3,t,{context:e})}};var Te=class{constructor(t){this.results=t}callResult(t){return this.results.results[t]}returnValue(t,e){return t.returnValues[e]}getValue(t=0,e=0){let n=this.callResult(t);return this.returnValue(n,e)}getAddress(t=0,e=0){let[n,o]=this.getValue(t,e);if(o!=="address")throw new Rt("Invalid contract return type.",{ctx:{expectType:"address",gotType:o}});return Gr(Va.from(n).toString("hex"))}getU64(t=0,e=0){let[n,o]=this.getValue(t,e);if(o!=="u64")throw new Rt("Invalid contract return type.",{ctx:{expectType:"u64",gotType:o}});return Va.from(n).readBigInt64LE()}};import{bcs as Ka}from"@mysten/sui.js/bcs";var I=class extends S{constructor(t,e,n){super(2,`Invalid input: ${t}`,{context:{fieldKey:e,fieldValue:n}})}};var Ha={groupId:"string",name:"string"},Kr=64;function za(a){return Xa(a),Ka.ser(Ha,a).toString("base64")}function jt(a){let t=Ka.de(Ha,a,"base64");return Xa(t),t}function Xa(a){if(!Ga(a.name))throw new I("Invalid metadata: Name contains unknown character");if(!Ga(a.groupId))throw new I("Invalid metadata: Group ID contains unknown character");if(a.name.length>Kr)throw new I("Invalid metadata: Name exceed max length 64")}function Ga(a){return/^[\x00-\x7F]+$/.test(a)}import{normalizeStructTag as ke}from"@mysten/sui.js/utils";function xe(a,t){return ke(a)===ke(t)}function Y(a,t){return ke(a)===ke(t)}var Ae="txn.gas";import{nanoid as Hr}from"nanoid";function Ja(){return Hr()}var it=class a{constructor(t,e,n){this.globals=t;this.feeContract=e;this.streamContract=n}static convertCreateStreamInfoToInternal(t){return{metadata:za({name:t.name,groupId:Ja()}),coinType:zr(t.coinType),recipients:t.recipients.map(e=>({address:e.address,cliffAmount:e.cliffAmount,amountPerEpoch:e.amountPerStep})),epochInterval:t.interval,numberEpoch:t.steps,startTime:t.startTimeMs,cancelable:t.cancelable}}async buildCreateStreamTransactionBlock(t){let e=new Ya,n=this.calculateFeesInternal(t),o=this.getCreateStreamCoinRequests(t,n),r=await this.wallet.requestCoins(o),i=await this.addMergeCoins(e,r[0]),s;o.length>1?s=await this.addMergeCoins(e,r[1]):s=i;for(let c=0;c<t.recipients.length;c++){let l=t.recipients[c],d=this.amountForRecipient(l,t.numberEpoch),u=this.getStreamFeeLocal(d),[b]=e.splitCoins(i,[e.pure(d+u,"u64")]),[m]=e.splitCoins(s,[e.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(e,{paymentCoin:new J(b),flatFeeCoin:new J(m),metadata:t.metadata,recipient:l.address,timeStart:t.startTime,cliff:l.cliffAmount,epochInterval:t.epochInterval,numEpoch:t.numberEpoch,amountPerEpoch:l.amountPerEpoch,cancelable:t.cancelable,coinType:t.coinType})}return e}calculateCreateStreamFees(t){let e=a.convertCreateStreamInfoToInternal(t);return this.calculateFeesInternal(e)}feeParams(){return{createFeePercent:{numerator:zn,denominator:Ie},claimFeePercent:{numerator:Qa,denominator:Ie},flatFeePerStream:Xn}}async addMergeCoins(t,e){let n;return e.mergedCoins&&e.mergedCoins.length?(t.mergeCoins(t.object(e.primaryCoin),e.mergedCoins.map(o=>t.object(o))),n=t.object(e.primaryCoin)):e.primaryCoin===Ae?n=t.gas:n=t.object(e.primaryCoin),n}getCreateStreamCoinRequests(t,e){let n=t.coinType;return xe(n,Za)?[{coinType:n,amount:e.totalAmount+e.streamFeeAmount+e.flatFeeAmount}]:[{coinType:n,amount:e.totalAmount+e.streamFeeAmount},{coinType:Za,amount:e.flatFeeAmount}]}calculateFeesInternal(t){let e=t.recipients.reduce((o,r)=>{let i=this.amountForRecipient(r,t.numberEpoch),s=this.getStreamFeeLocal(i);return{totalAmount:o.totalAmount+i,streamFeeAmount:o.streamFeeAmount+s}},{totalAmount:0n,streamFeeAmount:0n});return{flatFeeAmount:BigInt(t.recipients.length)*this.flatSuiFee,...e}}amountForRecipient(t,e){return BigInt(t.amountPerEpoch)*BigInt(e)+BigInt(t.cliffAmount)}get flatSuiFee(){return Xn}getStreamFeeLocal(t){return t*zn/Ie}async getStreamFeeRemote(t){let e=this.feeContract.streamingFee(new Ya,t),n=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:e});return new Te(n).getU64()}get wallet(){return this.globals.wallet}};import{Transactions as eo}from"@mysten/sui.js/transactions";var to="0x0000000000000000000000000000000000000000000000000000000000000006";var ft=class{constructor(t,e,n){this.moduleName=t;this.config=e;this.globals=n}addContractCall(t,e){let n=`${this.config.contractId}::${this.moduleName}::${e.method}`;return t.add(eo.MoveCall({target:n,arguments:e.arguments.map(o=>o instanceof Dt?o.moveArgs(t):o instanceof U?o.moveArg(t):o instanceof J?o.moveArg():t.pure(o)),typeArguments:e.typeArgs})),t}addTransactionBlock(t,e,n=[],o=[]){t.add(eo.MoveCall({target:e,arguments:n.map(r=>r instanceof Dt?r.moveArgs(t):r instanceof U?r.moveArg(t):r instanceof J?r.moveArg():t.pure(r)),typeArguments:o}))}makeObject(t){return typeof t=="string"?new U(t):t}vaultObject(){return new U(this.config.vaultObjId)}roleObject(){return new U(this.config.roleObjId)}feeObject(){return new U(this.config.feeObjId)}clockObject(){return new U(to)}};var gt=class a extends ft{constructor(e,n){super(a.ModuleName,e,n);this.config=e;this.globals=n}static ModuleName="fee_module";static MethodName={set_streaming_fee:"set_streaming_fee",set_claim_fee:"set_claim_fee",set_streaming_flat_fee:"set_streaming_flat_fee",streaming_flat_fee:"streaming_flat_fee",streaming_fee:"streaming_fee",claim_fee:"claim_fee",fee_denominator:"fee_denominator"};setStreamingFee(e,n){let o=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:a.MethodName.set_streaming_fee,arguments:[o,r,n],typeArgs:[]})}setStreamingFlatFee(e,n){let o=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:a.MethodName.set_streaming_flat_fee,arguments:[o,r,n],typeArgs:[]})}setClaimFee(e,n){let o=this.roleObject(),r=this.feeObject();return this.addContractCall(e,{method:a.MethodName.set_claim_fee,arguments:[o,r,n],typeArgs:[]})}streamingFee(e,n){let o=this.feeObject();return this.addContractCall(e,{method:a.MethodName.streaming_fee,arguments:[o,n],typeArgs:[]})}claimFee(e,n){return this.addContractCall(e,{method:a.MethodName.claim_fee,arguments:[this.feeObject(),n],typeArgs:[]})}feeDenominator(e){return this.addContractCall(e,{method:a.MethodName.fee_denominator,arguments:[this.feeObject()],typeArgs:[]})}};var q=class a extends ft{constructor(e,n){super(a.ModuleName,e,n);this.config=e;this.globals=n}static ModuleName="stream";static MethodName={create_stream:"create_stream",set_auto_claim:"set_auto_claim",cancel_stream:"cancel_stream",claim_stream:"claim_stream",claim_stream_by_proxy:"claim_stream_by_proxy",stream_current_epoch:"stream_current_epoch",now_milli_seconds:"now_milli_seconds"};createStream(e,n){let o=this.feeObject(),r=this.vaultObject(),i=this.makeObject(n.paymentCoin),s=this.makeObject(n.flatFeeCoin),c=this.clockObject();return this.addContractCall(e,{method:a.MethodName.create_stream,arguments:[o,r,i,s,n.metadata,n.recipient,n.timeStart,n.cliff,n.epochInterval,n.numEpoch,n.amountPerEpoch,n.cancelable,c],typeArgs:[n.coinType]})}setAutoClaim(e,n){let o=this.makeObject(n.streamId);return this.addContractCall(e,{method:a.MethodName.set_auto_claim,arguments:[o,n.enabled],typeArgs:[n.coinType]})}cancelStream(e,n){let o=this.makeObject(n.streamId),r=this.clockObject();return this.addContractCall(e,{method:a.MethodName.cancel_stream,arguments:[o,r],typeArgs:[n.coinType]})}claimStream(e,n){let o=this.makeObject(n.streamId),r=this.clockObject();return this.addContractCall(e,{method:a.MethodName.claim_stream,arguments:[o,r],typeArgs:[n.coinType]})}claimStreamByProxy(e,n){let o=this.makeObject(n.streamId),r=this.vaultObject(),i=this.feeObject(),s=this.clockObject();return this.addContractCall(e,{method:a.MethodName.claim_stream_by_proxy,arguments:[o,r,i,s],typeArgs:[n.coinType]})}get createStreamTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.create_stream}`}get setAutoClaimTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.set_auto_claim}`}get cancelStreamTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.cancel_stream}`}get claimStreamTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.claim_stream}`}get claimStreamByProxyTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.claim_stream_by_proxy}`}};var ht=class{constructor(t){this.globals=t;let e=t.envConfig.contract;this.feeContract=new gt(e,t),this.streamContract=new q(e,t)}feeContract;streamContract;async createStreams(t){let e=it.convertCreateStreamInfoToInternal(t);return this.createStreamHelper().buildCreateStreamTransactionBlock(e)}createStreamHelper(){return new it(this.globals,this.feeContract,this.streamContract)}setAutoClaim(t,e,n){let o=new ve;return this.streamContract.setAutoClaim(o,{streamId:t,enabled:e,coinType:n})}claimStream(t,e){let n=new ve;return this.streamContract.claimStream(n,{streamId:t,coinType:e})}claimStreamByProxy(t,e){let n=new ve;return this.streamContract.claimStreamByProxy(n,{streamId:t,coinType:e})}cancelStream(t,e){let n=new ve;return this.streamContract.cancelStream(n,{streamId:t,coinType:e}),n}};var A=class extends S{constructor(t,e={}){super(0,t,e)}};async function Yn(a){let t=[];for(;await a.hasNext();){let e=await a.next();t.push(e)}return t&&Array.isArray(t[0])?t.flat(1):t}var Jn=class{constructor(t){this.requester=t;this.curPage=void 0,this.init=!0}curPage;init;async hasNext(){if(this.init)return this.curPage||(this.curPage=await this.requester.doNextRequest()),!!this.curPage.data?.length||this.curPage.hasNext;if(!this.curPage)throw new Error("invalid implementation of iterator");return this.curPage.hasNext}async next(){return this.init?(this.init=!1,this.curPage||(this.curPage=await this.requester.doNextRequest()),this.curPage.data):(this.curPage=await this.requester.doNextRequest(),this.curPage.data)}},yt=class{constructor(t){this.requester=t;this.pager=new Jn(t),this.curData=[],this.cursor=0}cursor;pager;curData;async hasNext(){return this.cursor<this.curData.length-1?!0:this.pager.hasNext()}async next(){for(this.cursor+=1;this.cursor>=this.curData.length;)if(await this.pager.hasNext())this.curData=await this.pager.next(),this.cursor=0;else throw new Error("not more data");return this.curData[this.cursor]}};var Oe=class extends S{constructor(e,n,o){super(4,`Not enough balance: ${e}`,{context:{coinType:e,requestAmount:n,gotAmount:o}});this.coinType=e;this.requestAmount=n;this.gotAmount=o}};var Xr=25;async function no(a,t,e,n="0x2::sui::SUI",o=Xr){let r=new Zn(a,t,n,o),i=BigInt(0),s=[];for(;await r.hasNext()&&i<e;){let c=await r.next();c&&(s.push(c),i+=BigInt(c.balance))}if(i<e)throw new Oe(n,e,i);return s}var Zn=class extends yt{constructor(e,n,o,r){super(new ta(e,n,o,r));this.suiClient=e;this.owner=n;this.coinType=o;this.reqPageSize=r}},ta=class{constructor(t,e,n,o){this.suiClient=t;this.owner=e;this.coinType=n;this.reqPageSize=o;if(o<=0)throw new A("Invalid reqPageSize")}nextCursor;async doNextRequest(){let t=await this.suiClient.getCoins({owner:this.owner,coinType:this.coinType,cursor:this.nextCursor,limit:this.reqPageSize});return this.nextCursor=t.nextCursor,{data:t.data,hasNext:t.hasNextPage}}};import{TransactionBlock as je}from"@mysten/sui.js/transactions";import{normalizeStructTag as oo,parseStructTag as Zr}from"@mysten/sui.js/utils";import{DateTime as ti}from"luxon";var Pe=class extends S{constructor(){super(7,"Connected wallet is not creator")}};var Nt=class extends S{constructor(){super(8,"Connected wallet is not recipient")}};var _t=class extends S{constructor(t,e){super(6,t,{context:e})}};var De=class extends S{constructor(t){super(5,"Stream not found",{context:{streamId:t}})}};import{DateTime as Jr,Duration as Yr}from"luxon";var ao=(1n<<64n)-1n,Re=1e3;function ea(a){let t;typeof a=="number"?t=a:typeof a=="bigint"?t=Number(a):t=a.toMillis();let e=Math.round(t/Re);return Jr.fromMillis(e*Re)}function na(a){let t;typeof a=="number"?t=a:typeof a=="bigint"?t=Number(a):t=a.toMillis();let e=Math.round(t/Re);return Yr.fromMillis(e*Re)}var Z=class a{constructor(t,e,n){this.globals=t;this.streamId=e;this.rawData=n;this.streamContract=new q(t.envConfig.contract,t)}streamContract;type="Stream";static async new(t,e){let n=await a.fetchStreamData(t,e);return new a(t,e,n)}static fromObjectData(t,e,n){let o=a.parseRawStreamData(e,n);return new a(t,e,o)}get info(){return{name:this.name,creator:this.creator,coinType:this.coinType,totalAmount:this.totalAmount,start:this.timeStart,end:this.timeEnd,cancelable:this.cancelable,cliffAmount:this.cliff,duration:this.duration,interval:this.interval,steps:this.totalSteps,nextReleaseDate:this.nextReleaseDate,nextReleaseAmount:this.nextReleaseAmount,groupId:this.groupId,streamId:this.streamId,recipient:this.recipient,progress:this.progress,autoClaim:this.autoClaim}}get groupCommonInfo(){return{name:this.name,groupId:this.groupId,creator:this.creator,start:this.timeStart,interval:this.interval,steps:this.totalSteps,cancelable:this.cancelable}}async refresh(){this.rawData=await a.fetchStreamData(this.globals,this.streamId)}refreshWithData(t){if(t.data?.objectId!==this.streamId)throw new A("Object Id does not align");this.rawData=a.parseRawStreamData(this.streamId,t)}async historyEvents(t){return this.globals.backend.getStreamHistory({streamId:this.streamId,pagination:t})}async cancel(){if(await this.globals.walletAddress()!==this.creator)throw new Pe;let t=new je;return this.streamContract.cancelStream(t,{streamId:this.streamId,coinType:this.coinType}),t}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new Nt;let t=new je;return this.streamContract.claimStream(t,{streamId:this.streamId,coinType:this.coinType}),t}async setAutoClaim(t){if(await this.globals.walletAddress()!==this.recipient)throw new Nt;let e=new je;return this.streamContract.setAutoClaim(e,{streamId:this.streamId,coinType:this.coinType,enabled:t}),e}async claimByProxy(){let t=new je;return this.streamContract.claimStreamByProxy(t,{streamId:this.streamId,coinType:this.coinType}),t}get wallet(){return this.globals.wallet}get client(){return this.globals.suiClient}get coinType(){return oo(this.rawData.coinType)}get progress(){return{status:this.streamStatus,total:this.totalAmount,streamed:this.streamedAmount,claimed:this.claimedAmount,claimable:this.claimable,canceled:this.canceledAmount}}get balance(){return this.rawData.balance}get autoClaim(){return this.rawData.autoClaim}get amountPerEpoch(){return this.rawData.config.amountPerEpoch}get cancelable(){return this.rawData.config.cancelable}get cliff(){return this.rawData.config.cliff}get creator(){return this.rawData.config.creator}get interval(){return na(this.rawData.config.epochInterval)}get groupId(){let{metadata:t}=this.rawData.config;return jt(t).groupId}get name(){let{metadata:t}=this.rawData.config;return jt(t).name}get recipient(){return this.rawData.config.recipient}get timeStart(){return ea(this.rawData.config.timeStart)}get duration(){let t=this.rawData.config,e=t.epochInterval*t.totalEpoch;return na(e)}get timeEnd(){return this.timeStart.plus(this.duration)}get totalSteps(){return this.rawData.config.totalEpoch}get claimable(){return this.streamedAmount-this.claimedAmount}get nextReleaseDate(){return this.currentEpoch===-1n?this.timeStart:this.currentEpoch>=this.totalSteps||this.isCanceled?null:ea((this.currentEpoch+1n)*this.rawData.config.epochInterval+this.rawData.config.timeStart)}get nextReleaseAmount(){return this.currentEpoch===-1n?this.cliff:this.currentEpoch>=this.totalSteps||this.isCanceled?null:this.amountPerEpoch}get streamStatus(){let t=this.rawData.status.status;return t===16?"CANCELED":t===17?"SETTLED":t===1?"COMPLETED":this.currentEpoch>=this.totalSteps?"STREAMED":"STREAMING"}get streamedAmount(){return this.currentEpoch===-1n?0n:this.isCanceled?this.rawData.status.epochCanceled*this.amountPerEpoch+this.cliff:this.currentEpoch*this.amountPerEpoch+this.cliff}get claimedAmount(){return this.rawData.status.epochClaimed===ao?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let t=ti.now().toMillis(),e=this.timeStart.toMillis();if(t<e)return-1n;let n=Math.floor((t-e)/Number(this.rawData.config.epochInterval));return BigInt(n)>Number(this.rawData.config.totalEpoch)?this.rawData.config.totalEpoch:BigInt(n)}get totalAmount(){let t=this.rawData.config;return t.amountPerEpoch*t.totalEpoch+t.cliff}get isCanceled(){let t=this.rawData.status.status;return t===16||t===17}get canceledAmount(){return this.isCanceled?this.totalAmount-this.streamedAmount:0n}static async fetchStreamData(t,e){let n=await t.suiClient.getObject({id:e,options:{showContent:!0,showType:!0}});return a.parseRawStreamData(e,n)}static parseRawStreamData(t,e){if(e.error)throw e.error.code==="notExists"?new De(t):new _t(`get stream data: ${e.error.code}`,{streamId:t,...e.error});let n=e.data.content;if(n.dataType!=="moveObject")throw new _t("Unexpected object type",{gotType:n.dataType});let{typeParams:o}=Zr(n.type),r=oo(o[0]),i=n.fields,s=i.config.fields,c=i.status.fields;return{coinType:r,autoClaim:i.auto_claim,balance:BigInt(i.balance.fields.balance),config:{amountPerEpoch:BigInt(s.amount_per_epoch),cancelable:s.cancelable,cliff:BigInt(s.cliff),creator:s.creator,epochInterval:BigInt(s.epoch_interval),metadata:s.metadata,recipient:s.recipient,timeStart:BigInt(s.time_start),totalEpoch:BigInt(s.total_epoch)},status:{status:c.status,epochCanceled:BigInt(c.epoch_canceled),epochClaimed:BigInt(c.epoch_claimed)}}}};import{normalizeStructTag as aa,SUI_TYPE_ARG as ei}from"@mysten/sui.js/utils";import{Duration as ro}from"luxon";var Ne=class extends S{constructor(t,e){super(12,`Transaction failed: ${e}`,{context:{status:t,msg:e}})}};var ni=1e3,_e=class{constructor(t){this.globals=t;this.coinMetaHelper=new oa(t.suiClient),this.createStreamHelper=new ht(t).createStreamHelper()}coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(t){if(t.effects?.status.status!=="success")throw new Ne(t.effects?.status.status,t.effects?.status.error);return t.objectChanges.filter(e=>e.type==="created"&&e.objectType.startsWith(`${this.globals.envConfig.contract.contractId}::stream::Stream`)).map(e=>e.objectId)}calculateCreateStreamFees(t){return this.createStreamHelper.calculateCreateStreamFees(t)}feeParams(){return this.createStreamHelper.feeParams()}calculateStreamAmount(t){if(t.steps===0n)throw new I("Invalid stream steps: 0");let e=t.cliff?t.cliff:{numerator:0n,denominator:100n},n=t.totalAmount*e.numerator/e.denominator,o=(t.totalAmount-n)/t.steps,i={realTotalAmount:o*t.steps+n,cliffAmount:n,amountPerStep:o};return this.validateStreamAmount(i,t.totalAmount),i}calculateTimelineByInterval(t){if(t.steps===0n)throw new I("Invalid stream steps: 0");let e=t.timeStart.plus(t.interval.toMillis()*Number(t.steps)),n={timeStart:t.timeStart,timeEnd:e,interval:t.interval,steps:t.steps};return this.validateTimeline(n),n}calculateTimelineByTotalDuration(t){if(t.steps===0n)throw new I("Invalid stream steps: 0");let e=BigInt(t.total.toMillis())/t.steps,n=t.timeStart.plus(ro.fromMillis(Number(e*t.steps))),o={timeStart:t.timeStart,timeEnd:n,interval:ro.fromMillis(Number(e)),steps:t.steps};return this.validateTimeline(o),o}async getBalance(t,e){let n=await this.globals.suiClient.getBalance({owner:t,coinType:e}),o=await this.getCoinMeta(e);return{...n,coinType:aa(n.coinType),coinMeta:o}}async getAllBalance(t){let e=await this.globals.suiClient.getAllBalances({owner:t}),n=await Promise.all(e.map(o=>this.getCoinMeta(o.coinType)));return e.map((o,r)=>({...o,coinType:aa(o.coinType),coinMeta:n[r]}))}async getCoinMeta(t){return this.coinMetaHelper.getCoinMeta(t)}async simulateTransactionBlock(t){return this.globals.suiClient.devInspectTransactionBlock({transactionBlock:t,sender:await this.globals.wallet.address()})}validateStreamAmount(t,e){if(t.amountPerStep===0n)throw new I("Stream amount too small","totalAmount",e);if(t.cliffAmount>t.realTotalAmount)throw new I("Invalid cliff settings")}validateTimeline(t){if(t.interval.toMillis()<ni)throw new I("Interval shall be at least 1 second","interval",t.interval)}},oa=class{constructor(t){this.suiClient=t;this.coinMetaReg=new Map}coinMetaReg;async getCoinMeta(t){let e=aa(t||ei);if(this.coinMetaReg.has(e))return this.coinMetaReg.get(e);let n=await this.queryCoinMeta(e);return n&&this.coinMetaReg.set(e,n),n}async queryCoinMeta(t){return await this.suiClient.getCoinMetadata({coinType:t})||void 0}};import{normalizeStructTag as io,normalizeSuiAddress as Ee}from"@mysten/sui.js/utils";import{DateTime as so}from"luxon";var St=class extends S{constructor(t,e){super(9,`Invalid stream group: ${t}`,{context:e})}};var ai=25;async function ia(a,t,e){let n=new Bt(t),o=new Et(a,n,e);return await Yn(o)}var Bt=class{constructor(t){this.ids=t;this.cursor=-1}cursor;async hasNext(){return this.cursor<this.ids.length-1}async next(){if(this.cursor+=1,this.cursor>=this.ids.length)throw new Error("invalid iterator implementation");return this.ids[this.cursor]}},Et=class extends yt{constructor(e,n,o){super(new ra(e,n,o));this.suiClient=e;this.idIter=n;this.options=o}},ra=class{constructor(t,e,n){this.suiClient=t;this.stringIter=e;this.options=n;this.filter=n?.filter,this.pageSize=n?.pageSize||ai,this.objectOptions=n?.objectOptions||{showType:!0,showContent:!0}}filter;pageSize;objectOptions;async doNextRequest(){let t=[];for(;t.length<this.pageSize&&await this.stringIter.hasNext();){let r=await this.stringIter.next();r&&t.push(r)}let e=await this.suiClient.multiGetObjects({ids:t,options:this.objectOptions}),n;if(this.filter){let{filter:o}=this;n=e.filter(r=>o?.(r))}else n=e;return{data:n,hasNext:await this.stringIter.hasNext()}}};var Be=class a{constructor(t,e){this.globals=t;this.streams=e;if(e.length===0)throw new St("stream size 0");let n=e.map(r=>r.groupId);if(new Set(n).size!==1)throw new I("Stream does not have same group ID")}type="StreamGroup";static async new(t,e){let n=await ia(t.suiClient,e);return n.forEach(o=>{if(!o)throw new A("stream group object data undefined")}),a.newFromObjectResponse(t,e,n)}static async newFromObjectResponse(t,e,n){let o=await a.parseGroupStreams(t,e,n);return new a(t,o)}static checkStreamGroup(t){let e=t.map(r=>r.groupCommonInfo),n=e[0],o=!0;return e.forEach(r=>{oi(n,r)||(o=!1)}),o}async refresh(){let t=await ia(this.globals.suiClient,this.streams.map(e=>e.streamId));this.streams.forEach((e,n)=>{e.refreshWithData(t[n])})}get groupId(){return this.streams[0].groupId}get creator(){return this.streams[0].creator}get info(){return{groupId:this.groupId,streamIds:this.streams.map(t=>t.streamId),progress:this.progress,name:this.streams[0].name,creator:this.creator,coinType:this.streams[0].coinType,totalAmount:this.streams.reduce((t,e)=>t+e.totalAmount,0n),start:this.streams[0].timeStart,end:this.streams[0].timeEnd,cancelable:this.streams[0].cancelable,cliffAmount:this.streams.reduce((t,e)=>t+e.cliff,0n),duration:this.streams[0].duration,interval:this.streams[0].interval,steps:this.streams[0].totalSteps,nextReleaseAmount:this.streams.reduce((t,e)=>e.nextReleaseAmount===null?t:t+e.nextReleaseAmount,0n),nextReleaseDate:this.streams[0].nextReleaseDate}}get progress(){return{total:this.streams.reduce((t,e)=>t+e.totalAmount,0n),streamed:this.streams.reduce((t,e)=>t+e.streamedAmount,0n),claimed:this.streams.reduce((t,e)=>t+e.claimedAmount,0n),claimable:this.streams.reduce((t,e)=>t+e.claimable,0n),canceled:this.streams.reduce((t,e)=>t+e.canceledAmount,0n)}}async historyEvents(t){return this.globals.backend.getStreamHistory({groupId:this.groupId,pagination:t})}static async parseGroupStreams(t,e,n){let o=n.map((r,i)=>Z.fromObjectData(t,e[i],r)).filter(r=>!!r);if(new Set(o.map(r=>r.groupId)).size!==1)throw new St("Not same group ID");if(!this.checkStreamGroup(o))throw new St("Not same stream settings");return o}};function oi(a,t){return a.name===t.name&&a.groupId===t.groupId&&a.creator===t.creator&&a.start.toMillis()===t.start.toMillis()&&a.interval.toMillis()===t.interval.toMillis()&&a.steps===t.steps&&a.cancelable===t.cancelable}var Mt=class a{constructor(t,e){this.it=t;this.pageSize=e}static async newIncoming(t){let e=await Me.newIncoming(t);return new a(e,t.pageSize)}static async newOutgoing(t){let e=await Me.newOutgoing(t);return new a(e,t.pageSize)}async hasNext(){return this.it.hasNext()}async next(){let t=[];for(;t.length<this.pageSize&&await this.it.hasNext();)t.push(await this.it.next());return t}},Me=class a{constructor(t){this.requester=t}cachedNext;static async newIncoming(t){let e=await Le.newIncomingQuery(t);return new a(e)}static async newOutgoing(t){let e=await Le.newOutgoingQuery(t);return new a(e)}async hasNext(){return this.cachedNext===void 0&&(this.cachedNext=await this.requester.doNextRequest()),this.cachedNext!==null}async next(){if(this.cachedNext===void 0){let e=await this.requester.doNextRequest();if(e===null)throw new A("No more results");return e}let t=this.cachedNext;if(this.cachedNext=void 0,t===null)throw new A("No more results");return t}},Le=class a{constructor(t,e,n,o){this.globals=t;this.recipient=e;this.groupRefs=n;this.query=o;this.current=0;let r=new Bt(n.flat().map(i=>i.streamId));this.objectIter=new Et(t.suiClient,r)}current=0;objectIter;static async newIncomingQuery(t){let e=di(t.query),n=await t.globals.walletAddress(),r=(await t.globals.backend.getIncomingStreams(n,e)).filter(s=>Ee(s.recipient)===Ee(n)),i=co(r);return new a(t.globals,n,i,t.query)}static async newOutgoingQuery(t){let e=li(t.query),n=await t.globals.walletAddress(),o=await t.globals.backend.getOutgoingStreams(n,e),r=co(o);return new a(t.globals,n,r,t.query)}async doNextRequest(){if(this.current>=this.groupRefs.length)return null;let t=this.groupRefs[this.current];if(t.length===1){let e=await si(this.globals,t[0].streamId,this.objectIter);return this.current++,lo(e,this.query)?e:this.doNextRequest()}if(t.length>1){let e=await ci(this.globals,t.map(n=>n.streamId),this.objectIter);return this.current++,ii(e,this.query)?e:this.doNextRequest()}throw new A("Stream group with no stream")}};function co(a){let t=new Map;return a.forEach(e=>{let n=t.get(e.groupId);n?(n.push(e),t.set(e.groupId,n)):t.set(e.groupId,[e])}),Array.from(t.values()).sort((e,n)=>so.fromISO(n[0].createDate).toMillis()-so.fromISO(e[0].createDate).toMillis())}function lo(a,t){if(t===void 0)return!0;let e=ri(a,t.status);if(t&&"claimable"in t&&t.claimable!==void 0){let n=t.claimable?a.progress.claimable!==0n:a.progress.claimable===0n;return e&&n}return e}function ri(a,t){return t===void 0?!0:Array.isArray(t)?t.includes(a.progress.status):a.progress.status===t}function ii(a,t){if(!t)return!0;let e=!1;return a.streams.forEach(n=>{lo(n,t)&&(e=!0)}),e}async function si(a,t,e){let n=await uo(e,t);return Z.fromObjectData(a,t,n)}async function ci(a,t,e){let n=[];for(;n.length<t.length;){let o=await uo(e,t[n.length]);n.push(o)}return Be.newFromObjectResponse(a,t,n)}async function uo(a,t){if(!await a.hasNext())throw new A("object iterator has been consumed");let e=await a.next();if(!e||e.error||e.data===void 0||e.data===null)throw new A("object iterator undefined response",{cause:e?.error});if(e?.data?.objectId!==t)throw new A("stream id not aligned");return e}function di(a){return{status:sa(a?.status),coinType:po(a?.coinType),sender:mo(a?.sender)}}function li(a){return{status:sa(a?.status),coinType:po(a?.coinType),recipient:mo(a?.recipient)}}function sa(a){return a===void 0||a.length===0?"all":Array.isArray(a)?a.reduce((t,e)=>{let n=sa(e);return!t||t===n?n:"all"},void 0):ui(a)}function ui(a){switch(a){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new I("Unknown stream filtered status")}}function po(a){if(a)return Array.isArray(a)?a.length!==0?a.map(t=>io(t)):void 0:io(a)}function mo(a){if(a)return Array.isArray(a)?a.length!==0?a.map(t=>Ee(t)):void 0:Ee(a)}var ca=class{constructor(t){this.msafe=t}get type(){return"msafe"}async address(){return this.msafe.address()}async requestCoins(t){return this.msafe.requestCoins(t)}},Fe=class{constructor(t){this.account=t}async address(){return this.account.address}},da=class{constructor(t,e){this.singleWallet=t;this.suiClient=e}get type(){return"single"}async address(){return this.singleWallet.address()}async requestCoins(t){return Promise.all(t.map(e=>this.requestCoin(e)))}async requestCoin(t){if(xe(t.coinType,pi))return{primaryCoin:Ae};if(t.amount<=0)throw new I("Invalid coin request","coinAmount",t.amount);let e=await no(this.suiClient,await this.address(),t.amount,t.coinType);if(e.length===0)throw new A("no coins available");return{primaryCoin:e[0].coinObjectId,mergedCoins:e.slice(1).map(n=>n.coinObjectId)}}},We=class{globals;helper;constructor(t,e){this.globals=bt.new(t,e),this.helper=new _e(this.globals)}connectSingleWallet(t){let e=new da(t,this.globals.suiClient);this.globals.connectWallet(e)}connectMSafeAccount(t){let e=new ca(t);this.globals.connectWallet(e)}async createStream(t){return this.builder().createStreams(t)}async getStream(t){return Z.new(this.globals,t)}async getIncomingStreams(t,e=10){return Mt.newIncoming({globals:this.globals,query:t,pageSize:e})}async getOutgoingStreams(t,e=10){return Mt.newOutgoing({globals:this.globals,query:t,pageSize:e})}async getCoinTypesForStreamFilter(){let t=await this.wallet.address();return(await this.globals.backend.getAllCoinTypes(t)).map(n=>mi(n))}async getRecipientsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllRecipients(e,t)).map(o=>bo(o))}async getCreatorsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllSenders(e,t)).map(o=>bo(o))}get wallet(){return this.globals.wallet}builder(){return new ht(this.globals)}};import bi from"sort-keys-recursive";var Ue=class{constructor(t){this.data=t}serialize(){return JSON.stringify(bi(this.data))}};var _=class extends Ue{application="mpay";getClient(t,e){let n=new We(t==="sui:mainnet"?"prod":"dev");return n.connectSingleWallet(new Fe(e)),n}};var Lt=class extends _{constructor(e){super(e);this.data=e}txType=gi.Stream;txSubType="Cancel";async build(e){let{network:n,account:o}=e;return(await this.getClient(n,o).getStream(this.data.streamId)).cancel()}};import{TransactionType as hi}from"@msafe/sui3-utils";var Ft=class extends _{constructor(e){super(e);this.data=e}txType=hi.Stream;txSubType="ClaimByProxy";async build(e){let{network:n,account:o}=e;return(await this.getClient(n,o).getStream(this.data.streamId)).claimByProxy()}};import{TransactionType as yi}from"@msafe/sui3-utils";var Wt=class extends _{constructor(e){super(e);this.data=e}txType=yi.Stream;txSubType="Claim";async build(e){let{network:n,account:o}=e;return(await this.getClient(n,o).getStream(this.data.streamId)).claim()}};import{TransactionType as Si}from"@msafe/sui3-utils";var Ut=class extends _{constructor(e){super(e);this.data=e}txType=Si.Stream;txSubType="CreateStream";async build(e){let{network:n,account:o}=e;return this.getClient(n,o).createStream(this.data)}};import{bcs as fo}from"@mysten/sui.js/bcs";import{normalizeStructTag as Ci,normalizeSuiAddress as qt}from"@mysten/sui.js/utils";var Ct=class a{constructor(t,e){this.moveCall=t;this.txb=e}decodeSharedObjectId(t){let e=this.getInputParam(t);return a.getSharedObjectId(e)}decodeOwnedObjectId(t){let e=this.getInputParam(t);return a.getOwnedObjectId(e)}decodeInputU64(t){let e=this.decodePureArg(t,"u64");return BigInt(e)}decodeInputAddress(t){let e=this.decodePureArg(t,"address");return qt(e)}decodeInputString(t){return this.decodePureArg(t,"string")}decodeInputBool(t){return this.decodePureArg(t,"bool")}decodePureArg(t,e){let n=this.getInputParam(t);return a.getPureInputValue(n,e)}getInputParam(t){let e=this.moveCall.arguments[t];if(e.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[e.index]}static getPureInputValue(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value=="object"&&"Pure"in t.value){let n=t.value.Pure;return fo.de(e,new Uint8Array(n))}return t.value}static getOwnedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value=="object"){if(!("Object"in t.value)||!("ImmOrOwned"in t.value.Object))throw new Error("not ImmOrOwned");return qt(t.value.Object.ImmOrOwned.objectId)}return qt(t.value)}static getSharedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value!="object")return qt(t.value);if(!("Object"in t.value)||!("Shared"in t.value.Object))throw new Error("not Shared");return qt(t.value.Object.Shared.objectId)}static getPureInput(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value!="object")return t.value;if(!("Pure"in t.value))throw new Error("Pure not in value");let n=t.value.Pure;return fo.de(e,new Uint8Array(n))}typeArg(t){return Ci(this.moveCall.typeArguments[t])}txArg(t){return this.moveCall.arguments[t]}};var qe=class{constructor(t,e){this.globals=t;this.txb=e}decode(){let t=this.decodeCreateStreamInfo(),e=this.createStreamHelper().calculateCreateStreamFees(t);return{type:"CreateStream",info:t,fees:e}}decodeCreateStreamInfo(){let e=this.createStreamTransactions().map(n=>this.getCreationInfoFromMoveCall(n));return this.aggregateGroupStreamInfo(e)}createStreamTransactions(){let t=this.transactions.filter(e=>e.kind==="MoveCall"&&Y(e.target,this.contract.createStreamTarget));if(t.length===0)throw new A("No create stream transactions");return t.map(e=>new Ct(e,this.txb))}getCreationInfoFromMoveCall(t){let e=t.decodeInputString(4),{name:n,groupId:o}=jt(e),r=t.decodeInputAddress(5),i=t.decodeInputU64(6),s=t.decodeInputU64(7),c=t.decodeInputU64(8),l=t.decodeInputU64(9),d=t.decodeInputU64(10),u=t.decodeInputBool(11),b=t.typeArg(0);return{name:n,groupId:o,recipient:r,timeStart:i,cliff:s,epochInterval:c,totalEpoch:l,amountPerEpoch:d,cancelable:u,coinType:b}}aggregateGroupStreamInfo(t){if(new Set(t.map(o=>JSON.stringify({name:o.name,groupId:o.groupId,timeStart:String(o.timeStart),epochInterval:String(o.epochInterval),totalEpoch:String(o.totalEpoch),cancelable:o.cancelable,coinType:o.coinType}))).size!==1)throw new I("Stream group not have common info");let n=t.map(o=>({address:o.recipient,amountPerStep:o.amountPerEpoch,cliffAmount:o.cliff}));return{name:t[0].name,coinType:t[0].coinType,recipients:n,interval:t[0].epochInterval,steps:t[0].totalEpoch,startTimeMs:t[0].timeStart,cancelable:t[0].cancelable}}mergeCoinTransactions(){return this.transactions.filter(t=>t.kind==="MergeCoins")}get transactions(){return this.txb.blockData.transactions}get contract(){return new q(this.globals.envConfig.contract,this.globals)}get feeContract(){return new gt(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new it(this.globals,this.feeContract,this.contract)}getInputArg(t){if(t.kind!=="Input")throw new Error("not input type");return"value"in t?t:this.txb.blockData.inputs[t.index]}};var $e=class{constructor(t,e){this.globals=t;this.txb=e;this.contract=new q(t.envConfig.contract,t)}contract;decode(){if(this.isCreateStreamTransaction())return this.decodeCreateStreamTransaction();if(this.isClaimByProxyTransaction())return this.decodeClaimByProxyTransaction();if(this.isSetAutoClaimTransaction())return this.decodeSetAutoClaimTransaction();if(this.isCancelStreamTransaction())return this.decodeCancelStreamTransaction();if(this.isClaimStreamTransaction())return this.decodeClaimTransaction();throw new Error("Unknown stream transaction type")}get transactions(){return this.txb.blockData.transactions}isCreateStreamTransaction(){return this.transactions.findIndex(e=>e.kind==="MoveCall"&&Y(e.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Y(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Y(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Y(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&Y(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new qe(this.globals,this.txb).decode()}decodeSetAutoClaimTransaction(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeInputBool(1);return{type:"SetAutoClaim",streamId:t,enabled:e}}decodeClaimTransaction(){let t=this.helper.decodeSharedObjectId(0);return{type:"Claim",streamId:t}}decodeClaimByProxyTransaction(){let t=this.helper.decodeSharedObjectId(0);return{type:"ClaimByProxy",streamId:t}}decodeCancelStreamTransaction(){let t=this.helper.decodeSharedObjectId(0);return{type:"Cancel",streamId:t}}get helper(){let t=this.transactions[0];return new Ct(t,this.txb)}};import{TransactionType as wi}from"@msafe/sui3-utils";var $t=class extends _{constructor(e){super(e);this.data=e}txType=wi.Stream;txSubType="SetAutoClaim";async build(e){let{network:n,account:o}=e;return(await this.getClient(n,o).getStream(this.data.streamId)).setAutoClaim(this.data.enabled)}};var Qe=class{application="mpay";async deserialize(t){let{network:e,transactionBlock:n}=t,o=bt.new(e==="sui:mainnet"?"prod":"dev"),i=new $e(o,n).decode(),s;switch(i.type){case"CreateStream":s=new Ut(i.info);break;case"SetAutoClaim":s=new $t({streamId:i.streamId,enabled:i.enabled});break;case"Claim":s=new Wt({streamId:i.streamId});break;case"ClaimByProxy":s=new Ft({streamId:i.streamId});break;case"Cancel":s=new Lt({streamId:i.streamId});break;default:throw new Error(`Unknown transaction type: ${i}`)}return{txType:s.txType,txSubType:s.txSubType,intentionData:s.data}}async build(t){let{intentionData:e}=t,n;switch(t.txSubType){case"CreateStream":n=new Ut(e);break;case"Claim":n=new Wt(e);break;case"ClaimByProxy":n=new Ft(e);break;case"SetAutoClaim":n=new $t(e);break;case"Cancel":n=new Lt(e);break;default:throw new Error("not implemented")}return n.build({...t})}};import{TransactionDefaultApplication as Ai,TransactionSubTypes as la}from"@msafe/sui3-utils";import{buildCoinTransferTxb as Ii}from"@msafe/sui3-utils";var Ve=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:o}=e;return Ii(n,this.data,o.address)}static fromData(e){return new a(e)}};import{buildObjectTransferTxb as Ti}from"@msafe/sui3-utils";var Ge=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:o}=e;return Ti(n,this.data,o.address)}static fromData(e){return new a(e)}};import{isSameAddress as ki}from"@msafe/sui3-utils";import{TransactionBlock as xi}from"@mysten/sui.js/transactions";var Ke=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let{account:n}=e,o=xi.from(this.data.content);if(!ki(o.blockData.sender,n.address))throw new Error("Invalid sender address");return o}static fromData(e){return new a(e)}};var He=class{application;constructor(){this.application=Ai}deserialize(){throw new Error("MSafe core transaction intention should be build from API")}async build(t){let{suiClient:e,account:n}=t,o;switch(t.txSubType){case la.assets.coin.send:o=Ve.fromData(t.intentionData);break;case la.assets.object.send:o=Ge.fromData(t.intentionData);break;case la.others.plain:o=Ke.fromData(t.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:e,account:n})}};import{TransactionType as Bi}from"@msafe/sui3-utils";import{TransactionType as Qt}from"@msafe/sui3-utils";import{bcs as go}from"@mysten/sui.js/bcs";import{normalizeStructTag as Pi,normalizeSuiAddress as Vt}from"@mysten/sui.js/utils";var vi={ProtocolPackage:"0x7c9b90b3fda0fa4aa8ee88ae6c4a0b83c773f74936b5354448cb94662e94442d",StorageId:"0xbb4e2f4b6205c2e2a2db47aeb4f830796ec7c005f88537ee775986639bc442fe",Incentive:"0xaaf735bf83ff564e1b219a0d644de894ef5bdc4b2250b126b2a46dd002331821",IncentiveV2:"0xf87a8acb8b81d14307894d12595541a73f19933f88e1326d5be349c7a6f7559c",PriceOracle:"0x1568865ed9a0b5ec414220e8f79b3d04c77acc82358f6e5ae4635687392ffbef",ReserveParentId:"0xe6d4c6610b86ce7735ea754596d71d72d10c7980b5052fc3c8cdf8d09fea9b4b",pool:{sui:{name:"SUI",assetId:0,poolId:"0x96df0fce3c471489f4debaaa762cf960b3d97820bd1f3f025ff8190730e958c5",fondPoolId:"0xf975bc2d4cca10e3ace8887e20afd77b46c383b4465eac694c4688344955dea4",type:"0x2::sui::SUI",coinType:"sui",reserveObjectId:"0xab644b5fd11aa11e930d1c7bc903ef609a9feaf9ffe1b23532ad8441854fbfaf",borrowBalanceParentId:"0xe7ff0daa9d090727210abe6a8b6c0c5cd483f3692a10610386e4dc9c57871ba7",supplyBalanceParentId:"0x589c83af4b035a3bc64c40d9011397b539b97ea47edf7be8f33d643606bf96f8"},usdc:{name:"USDC",assetId:1,coinType:"usdc",poolId:"0xa02a98f9c88db51c6f5efaaf2261c81f34dd56d86073387e0ef1805ca22e39c8",type:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",reserveObjectId:"0xeb3903f7748ace73429bd52a70fff278aac1725d3b58afa781f25ce3450ac203",borrowBalanceParentId:"0x8a3aaa817a811131c624658f6e77cba04ab5829293d2c49c1a9cce8ac9c8dec4",supplyBalanceParentId:"0x8d0a4467806458052d577c8cd2be6031e972f2b8f5f77fce98aa12cd85330da9"},usdt:{name:"USDT",coinType:"usdt",assetId:2,poolId:"0x0e060c3b5b8de00fb50511b7a45188c8e34b6995c01f69d98ea5a466fe10d103",type:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN",reserveObjectId:"0xb8c5eab02a0202f638958cc79a69a2d30055565caad1684b3c8bbca3bddcb322",borrowBalanceParentId:"0xc14d8292a7d69ae31164bafab7ca8a5bfda11f998540fe976a674ed0673e448f",supplyBalanceParentId:"0x7e2a49ff9d2edd875f82b76a9b21e2a5a098e7130abfd510a203b6ea08ab9257"},weth:{name:"WETH",coinType:"weth",assetId:3,poolId:"0x71b9f6e822c48ce827bceadce82201d6a7559f7b0350ed1daa1dc2ba3ac41b56",type:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN",reserveObjectId:"0xafecf4b57899d377cc8c9de75854c68925d9f512d0c47150ca52a0d3a442b735",borrowBalanceParentId:"0x7568d06a1b6ffc416a36c82791e3daf0e621cf19d4a2724fc6f74842661b6323",supplyBalanceParentId:"0xa668905b1ad445a3159b4d29b1181c4a62d864861b463dd9106cc0d97ffe8f7f"},cetus:{name:"CETUS",coinType:"cetus",assetId:4,poolId:"0x3c376f857ec4247b8ee456c1db19e9c74e0154d4876915e54221b5052d5b1e2e",type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS",reserveObjectId:"0x66a807c06212537fe46aa6719a00e4fa1e85a932d0b53ce7c4b1041983645133",borrowBalanceParentId:"0x4c3da45ffff6432b4592a39cdb3ce12f4a28034cbcb804bb071facc81fdd923d",supplyBalanceParentId:"0x6adc72faf2a9a15a583c9fb04f457c6a5f0b456bc9b4832413a131dfd4faddae"},voloSui:{name:"VoloSui",coinType:"voloSui",assetId:5,poolId:"0x9790c2c272e15b6bf9b341eb531ef16bcc8ed2b20dfda25d060bf47f5dd88d01",fondPoolId:"0xe2b5ada45273676e0da8ae10f8fe079a7cec3d0f59187d3d20b1549c275b07ea",type:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",reserveObjectId:"0xd4fd7e094af9819b06ea3136c13a6ae8da184016b78cf19773ac26d2095793e2",borrowBalanceParentId:"0x8fa5eccbca2c4ba9aae3b87fd44aa75aa5f5b41ea2d9be4d5321379384974984",supplyBalanceParentId:"0xe6457d247b6661b1cac123351998f88f3e724ff6e9ea542127b5dcb3176b3841"},haSui:{name:"HaedalSui",coinType:"haSui",assetId:6,poolId:"0x6fd9cb6ebd76bc80340a9443d72ea0ae282ee20e2fd7544f6ffcd2c070d9557a",fondPoolId:"0xa20e18085ce04be8aa722fbe85423f1ad6b1ae3b1be81ffac00a30f1d6d6ab51",type:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",reserveObjectId:"0x0c9f7a6ca561dc566bd75744bcc71a6af1dc3caf7bd32c099cd640bb5f3bb0e3",borrowBalanceParentId:"0x01f36898e020be6c3423e5c95d9f348868813cd4d0be39b0c8df9d8de4722b00",supplyBalanceParentId:"0x278b8e3d09c3548c60c51ed2f8eed281876ea58c392f71b7ff650cc9286d095b"},navx:{name:"NAVX",coinType:"navx",assetId:7,poolId:"0xc0e02e7a245e855dd365422faf76f87d9f5b2148a26d48dda6e8253c3fe9fa60",fondPoolId:"0x9dae0cf104a193217904f88a48ce2cf0221e8cd9073878edd05101d6b771fa09",type:"0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX",reserveObjectId:"0x2e13b2f1f714c0c5fa72264f147ef7632b48ec2501f810c07df3ccb59d6fdc81",borrowBalanceParentId:"0xa5bf13075aa400cbdd4690a617c5f008e1fae0511dcd4f7121f09817df6c8d8b",supplyBalanceParentId:"0x59dedca8dc44e8df50b190f8b5fe673098c1273ac6168c0a4addf3613afcdee5"}}},g=vi;var ze=class{constructor(t){this.txb=t}decode(){if(console.log("txb",this.txb),this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isEntryBorrowTransaction())return this.decodeEntryBorrow();if(this.isEntryDepositTransaction())return this.decodeEntryDeposit();if(this.isEntryRepayTransaction())return this.decodeEntryRepay();if(this.isEntryWithdrawTransaction())return this.decodeEntryWithdraw();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isClaimRewardTransaction(){return!!this.getMoveCallTransaction(`${g.ProtocolPackage}::incentive_v2::claim_reward`)}isEntryBorrowTransaction(){return!!this.getMoveCallTransaction(`${g.ProtocolPackage}::incentive_v2::entry_borrow`)}isEntryDepositTransaction(){return!!this.getMoveCallTransaction(`${g.ProtocolPackage}::incentive_v2::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallTransaction(`${g.ProtocolPackage}::incentive_v2::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallTransaction(`${g.ProtocolPackage}::incentive_v2::entry_withdraw`)}findPoolByAssetId(t){let e=Object.values(g.pool).find(n=>n.assetId===t);if(!e)throw new Error("Pool not found");return e}decodeClaimReward(){let t=[];return this.transactions.forEach(e=>{if(e.kind==="MoveCall"&&e.target===`${g.ProtocolPackage}::incentive_v2::claim_reward`){let n=new Xe(e,this.txb),o=n.decodeInputU8(4),r=n.decodeInputU8(5),i=n.decodeSharedObjectId(2),s=this.findPoolByAssetId(o),c=[...e.typeArguments];t.push({coinType:s.coinType,option:r,typeArguments:c,assetId:o,poolId:i})}}),console.log("decode claims",t),{txType:Qt.Other,type:"ClaimReward",intentionData:{claims:t}}}decodeEntryBorrow(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),n=this.findPoolByAssetId(t);return{txType:Qt.Other,type:"EntryBorrow",intentionData:{amount:e,coinType:n.coinType}}}decodeEntryDeposit(){let t=this.helper.decodeInputU8(3),e=this.helper.decodeInputU64(5),n=this.findPoolByAssetId(t);return{txType:Qt.Other,type:"EntryDeposit",intentionData:{amount:e,coinType:n.coinType}}}decodeEntryRepay(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(6),n=this.findPoolByAssetId(t);return{txType:Qt.Other,type:"EntryRepay",intentionData:{amount:e,coinType:n.coinType}}}decodeEntryWithdraw(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),n=this.findPoolByAssetId(t);return{txType:Qt.Other,type:"EntryWithdraw",intentionData:{amount:e,coinType:n.coinType}}}get helper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(g.ProtocolPackage));return new Xe(t,this.txb)}},Xe=class a{constructor(t,e){this.moveCall=t;this.txb=e}decodeSharedObjectId(t){let e=this.getInputParam(t);return a.getSharedObjectId(e)}decodeOwnedObjectId(t){let e=this.getInputParam(t);return a.getOwnedObjectId(e)}decodeInputU64(t){let e=this.decodePureArg(t,"u64");return Number(e)}decodeInputU8(t){let e=this.decodePureArg(t,"u8");return Number(e)}decodeInputAddress(t){let e=this.decodePureArg(t,"address");return Vt(e)}decodeInputString(t){return this.decodePureArg(t,"string")}decodeInputBool(t){return this.decodePureArg(t,"bool")}decodePureArg(t,e){let n=this.getInputParam(t);return a.getPureInputValue(n,e)}getInputParam(t){let e=this.moveCall.arguments[t];if(e.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[e.index]}static getPureInputValue(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value=="object"&&"Pure"in t.value){let n=t.value.Pure;return go.de(e,new Uint8Array(n))}return t.value}static getOwnedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value=="object"){if(!("Object"in t.value)||!("ImmOrOwned"in t.value.Object))throw new Error("not ImmOrOwned");return Vt(t.value.Object.ImmOrOwned.objectId)}return Vt(t.value)}static getSharedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value!="object")return Vt(t.value);if(!("Object"in t.value)||!("Shared"in t.value.Object))throw new Error("not Shared");return Vt(t.value.Object.Shared.objectId)}static getPureInput(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value!="object")return t.value;if(!("Pure"in t.value))throw new Error("Pure not in value");let n=t.value.Pure;return go.de(e,new Uint8Array(n))}typeArg(t){return Pi(this.moveCall.typeArguments[t])}txArg(t){return this.moveCall.arguments[t]}};import{TransactionBlock as Di}from"@mysten/sui.js/transactions";function ua(a,t,e,n){return a.moveCall({target:`${g.ProtocolPackage}::incentive_v2::entry_deposit`,arguments:[a.object("0x06"),a.object(g.StorageId),a.object(t.poolId),a.pure(t.assetId),e,a.pure(n),a.object(g.Incentive),a.object(g.IncentiveV2)],typeArguments:[t.type]}),a}function ho(a,t,e){return a.moveCall({target:`${g.ProtocolPackage}::incentive_v2::entry_withdraw`,arguments:[a.object("0x06"),a.object(g.PriceOracle),a.object(g.StorageId),a.object(t.poolId),a.pure(t.assetId),a.pure(e),a.object(g.Incentive),a.object(g.IncentiveV2)],typeArguments:[t.type]}),a}function yo(a,t,e){return a.moveCall({target:`${g.ProtocolPackage}::incentive_v2::entry_borrow`,arguments:[a.object("0x06"),a.object(g.PriceOracle),a.object(g.StorageId),a.object(t.poolId),a.pure(t.assetId),a.pure(e),a.object(g.IncentiveV2)],typeArguments:[t.type]}),a}function pa(a,t,e,n){return a.moveCall({target:`${g.ProtocolPackage}::incentive_v2::entry_repay`,arguments:[a.object("0x06"),a.object(g.PriceOracle),a.object(g.StorageId),a.object(t.poolId),a.pure(t.assetId),e,a.pure(n),a.object(g.IncentiveV2)],typeArguments:[t.type]}),a}function So(a,t,e,n,o){return a.moveCall({target:`${g.ProtocolPackage}::incentive_v2::claim_reward`,arguments:[a.object("0x06"),a.object(g.IncentiveV2),a.object(e),a.object(g.StorageId),a.pure(t),a.pure(n)],typeArguments:o}),a}var Je=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(){let{claims:e}=this.data,n=new Di;return e.forEach(o=>{let{assetId:r,poolId:i,option:s,typeArguments:c}=o;So(n,r,i,s,c)}),n}static fromData(e){return new a(e)}};import{TransactionBlock as Ri}from"@mysten/sui.js/transactions";var Ye=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(){let{coinType:e,amount:n}=this.data,o=new Ri;console.log("build",this.data);let r=g.pool[e];if(!r)throw new Error(`${e} not support, please use ${Object.keys(g.pool).join(", ")}.`);return yo(o,r,n)}static fromData(e){return new a(e)}};import{TransactionBlock as ji}from"@mysten/sui.js/transactions";async function Ze(a,t,e){let n=await a.getCoins({owner:t,coinType:e});return console.log("getTokenObjs",t,n),n}var tn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:o}=e,{coinType:r,amount:i}=this.data,s=new ji;if(console.log("build",this.data),r==="sui"){let[u]=s.splitCoins(s.gas,[i]);return ua(s,g.pool.sui,u,i)}let c=g.pool[r];if(!c)throw new Error(`${r} not support, please use ${Object.keys(g.pool).join(", ")}.`);let l=await Ze(n,o.address,c.type);if(!l.data[0])throw new Error(`Insufficient balance for ${c.name} Token`);let d=l.data[0].coinObjectId;if(l.data.length>=2){let u=1;for(;u<l.data.length;)s.mergeCoins(d,[l.data[u].coinObjectId]),u++}return ua(s,c,s.object(d),i)}static fromData(e){return new a(e)}};import{TransactionBlock as Ni}from"@mysten/sui.js/transactions";var en=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:o}=e,{coinType:r,amount:i}=this.data,s=new Ni;if(console.log("build",this.data),r==="sui"){let[u]=s.splitCoins(s.gas,[i]);return pa(s,g.pool.sui,u,i)}let c=g.pool[r];if(!c)throw new Error(`${r} not support, please use ${Object.keys(g.pool).join(", ")}.`);let l=await Ze(n,o.address,c.type);if(!l.data[0])throw new Error(`Insufficient balance for ${c.name} Token`);let d=l.data[0].coinObjectId;if(l.data.length>=2){let u=1;for(;u<l.data.length;)s.mergeCoins(d,[l.data[u].coinObjectId]),u++}return pa(s,c,s.object(d),i)}static fromData(e){return new a(e)}};import{TransactionBlock as _i}from"@mysten/sui.js/transactions";var nn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(){let{coinType:e,amount:n}=this.data,o=new _i;console.log("build",this.data);let r=g.pool[e];if(!r)throw new Error(`${e} not support, please use ${Object.keys(g.pool).join(", ")}.`);return ho(o,r,n)}static fromData(e){return new a(e)}};var an=class{application="navi";async deserialize(t){let{transactionBlock:e}=t,o=new ze(e).decode();return{txType:Bi.Other,txSubType:o.type,intentionData:o.intentionData}}async build(t){let{suiClient:e,account:n}=t,o;switch(t.txSubType){case"EntryDeposit":o=tn.fromData(t.intentionData);break;case"EntryBorrow":o=Ye.fromData(t.intentionData);break;case"EntryRepay":o=en.fromData(t.intentionData);break;case"EntryWithdraw":o=nn.fromData(t.intentionData);break;case"ClaimReward":o=Je.fromData(t.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:e,account:n})}};import{TransactionSubTypes as Ei,TransactionType as Mi}from"@msafe/sui3-utils";import{TransactionBlock as Li}from"@mysten/sui.js/transactions";import{fromHEX as Fi,toHEX as Wi}from"@mysten/sui.js/utils";import pg from"sort-keys-recursive";var Ui="msafe-plain-tx",qi=Ei.others.plain;var on=class{application;constructor(){this.application=Ui}async deserialize(t){let{transactionBlock:e,suiClient:n}=t,o=await e.build({client:n});return{txType:Mi.Other,txSubType:qi,intentionData:{content:Wi(o)}}}async build(t){let{suiClient:e,account:n}=t,o=Li.from(Fi(t.intentionData.content)),r=await e.devInspectTransactionBlock({transactionBlock:o,sender:n.address});if(!(r.effects.status.status==="success"))throw new Error(r.effects.status.error);return o}};var rn=class{apps;constructor(t){this.apps=new Map(t.map(e=>[e.application,e]))}getAppHelper(t){let e=this.apps.get(t);if(!e)throw new Error(`${t} not registered`);return e}};import{TransactionType as fs}from"@msafe/sui3-utils";import{TransactionType as O}from"@msafe/sui3-utils";import{bcs as ba}from"@mysten/sui.js/bcs";import{normalizeStructTag as Qi,normalizeSuiAddress as Ht}from"@mysten/sui.js/utils";var tt="6601955b8b0024600a917079",sn="0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf";var Gt="0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",et="0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6::sca::SCA",ct=["eth","btc","usdc","usdt","sui","apt","sol","cetus","afsui","hasui","vsui","sca"],cn=["eth","btc","usdc","usdt","sui","apt","sol","cetus","afsui","hasui","vsui","sca"],Kt=["seth","ssui","susdc","susdt","scetus","safsui","shasui","svsui"],Co=["sui"],wt=["sui","usdc","usdt"];var wo={eth:8,btc:8,usdc:6,usdt:6,sui:9,apt:8,sol:8,sca:9,cetus:9,afsui:9,hasui:9,vsui:9,seth:8,sbtc:8,susdc:6,susdt:6,ssui:9,sapt:8,ssol:8,scetus:9,safsui:9,shasui:9,svsui:9,ssca:9};var dn={seth:"sui",ssui:"sui",susdc:"sui",susdt:"sui",scetus:"sui",safsui:"sui",shasui:"sui",svsui:"sui"},Io={sui:["sui","sca"],usdc:["sui","sca"],usdt:["sui","sca"]},To={sui:"0x0000000000000000000000000000000000000000000000000000000000000002",eth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",btc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",usdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",usdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",apt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",sol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",cetus:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",afsui:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",hasui:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",sca:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6"},j={eth:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",btc:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",usdc:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",usdt:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",apt:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",sol:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8"},ma={vsui:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55"};var ln=class{constructor(t,e){this.txb=t;this._builder=e}_builder;decode(){if(this.isSupplyWithStakeSpoolTransaction())return this.decodeSupplyWithStakeSpool();if(this.isExtendPeriodAndStakeMoreSca())return this.decodePeriodAndStakeMoreSca();if(this.isUnstakeAndWithdrawTransaction())return this.decodeUnstakeAndWithdraw();if(this.isStakeSpoolTransaction())return this.decodeStakeSpool();if(this.isDepositCollateralTransaction())return this.decodeDepositCollateral();if(this.isWithdrawCollateralTransaction())return this.decodeWithdrawCollateral();if(this.isWithdrawLendingTransaction())return this.decodeWithdrawLending();if(this.isSupplyLendingTransaction())return this.decodeSupplyLending();if(this.isBorrowTransaction())return this.decodeBorrow();if(this.isRepayTransaction())return this.decodeRepay();if(this.isUnstakeSpoolTransaction())return this.decodeUnstakeSpool();if(this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isStakeScaFirsTime()||this.isStakeMoreSca())return this.decodeStakeSca();if(this.isRenewExpiredVeSca())return this.decodeRenewExpiredVeSca();if(this.isExtendPeriod())return this.decodeExtendStakePeriod();if(this.isOpenObligationTransaction())return this.decodeOpenObligation();throw new Error("Unknown transaction type")}get coreId(){return{protocolPkg:this._builder.address.get("core.packages.protocol.id"),market:this._builder.address.get("core.market"),version:this._builder.address.get("core.version"),coinDecimalsRegistry:this._builder.address.get("core.coinDecimalsRegistry"),xOracle:this._builder.address.get("core.oracles.xOracle"),spoolPkg:this._builder.address.get("spool.id"),borrowIncentivePkg:this._builder.address.get("borrowIncentive.id"),veScaPkgId:this._builder.address.get("vesca.id")}}get transactions(){return this.txb.blockData.transactions}get inputTransaction(){return this.txb.blockData.inputs}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isSupplyLendingTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::mint::mint`)}isSupplyWithStakeSpoolTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.protocolPkg}::mint::mint`),e=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::stake`);return!!t&&!!e}isUnstakeAndWithdrawTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::unstake`),e=this.getMoveCallTransaction(`${this.coreId.protocolPkg}::redeem::redeem`);return!!t&&!!e}isStakeSpoolTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::stake`)}isWithdrawLendingTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::redeem::redeem`)}isDepositCollateralTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`)}isWithdrawCollateralTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`)}isBorrowTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::borrow::borrow`)}isRepayTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::repay::repay`)}isUnstakeSpoolTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::unstake`)}isCreateStakeAccountTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::new_spool_account`)}isClaimRewardTransaction(){let t=this.getMoveCallTransaction(`${this.coreId.spoolPkg}::user::redeem_rewards`),e=this.getMoveCallTransaction(`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`);return!!t&&!!e}isStakeScaFirsTime(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`)}isExtendPeriodAndStakeMoreSca(){let t=this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`),e=this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`);return!!t&&!!e}isStakeMoreSca(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`)}isExtendPeriod(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`)}isRenewExpiredVeSca(){return!!this.getMoveCallTransaction(`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`)}isOpenObligationTransaction(){return!!this.getMoveCallTransaction(`${this.coreId.protocolPkg}::open_obligation::open_obligation_entry`)}decodeOpenObligation(){return{txType:O.Other,type:"OpenObligation",intentionData:{}}}decodeRenewExpiredVeSca(){let t=this.helperRenewExpired.getNestedInputParam(4),e=this.helperRenewExpired.decodeInputU64(5),n=new B(t,this.txb).getAmountInput().reduce((f,y)=>f+y,0),o=this.helperRenewExpired.decodeOwnedObjectId(1),r=!!this.helperRedeemSca.moveCall,i=[],s=[],c=[];this.helperOldUnstakeObligation.moveCall&&(i=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(s=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(c=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let l=!1,d=!1,u,b,m=[{condition:i,isOld:!0},{condition:s,isOld:!1},{condition:c,isOld:!1}];for(let f=0;f<m.length;f++)m[f].condition.length>1&&([b,u]=m[f].condition,l=!0,d=m[f].isOld);return{txType:O.Other,type:"RenewExpStakePeriod",intentionData:{amount:n,lockPeriodInDays:e,obligationId:u,obligationKey:b,veScaKey:o,isHaveRedeem:r,isObligationLocked:l,isOldBorrowIncentive:d}}}decodeExtendStakePeriod(){let t=this.helperExtendStakePeriod.decodeInputU64(4),e=this.helperExtendStakePeriod.decodeOwnedObjectId(1),n=[],o=[],r=[];this.helperOldUnstakeObligation.moveCall&&(n=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(o=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeObligationWithVeSca.moveCall&&(r=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let i=!1,s=!1,c,l,d=[{condition:n,isOld:!0},{condition:o,isOld:!1},{condition:r,isOld:!1}];for(let u=0;u<d.length;u++)d[u].condition.length>1&&([l,c]=d[u].condition,i=!0,s=d[u].isOld);return{txType:O.Other,type:"ExtendStakePeriod",intentionData:{lockPeriodInDays:t,obligationId:c,obligationKey:l,veScaKey:e,isObligationLocked:i,isOldBorrowIncentive:s}}}decodePeriodAndStakeMoreSca(){let t=this.helperStakeMoreSca.getNestedInputParam(4),e=this.helperExtendStakePeriod.decodeInputU64(4),n=new B(t,this.txb).getAmountInput().reduce((m,f)=>m+f,0),o=[],r=[],i,s=[];this.helperOldUnstakeObligation.moveCall&&(o=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(r=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(i=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(s=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let c=!1,l=!1,d,u,b=[{condition:o,isOld:!0},{condition:r,isOld:!1},{condition:s,isOld:!1}];for(let m=0;m<b.length;m++)b[m].condition.length>1&&([u,d]=b[m].condition,c=!0,l=b[m].isOld);return{txType:O.Other,type:"ExtendPeriodAndStakeMore",intentionData:{amount:n,lockPeriodInDays:e,obligationId:d,obligationKey:u,veScaKey:i,isObligationLocked:c,isOldBorrowIncentive:l}}}decodeStakeSca(){let t,e;this.helperStake.moveCall?(t=this.helperStakeSca.getNestedInputParam(3),e=this.helperStakeSca.decodeInputU64(4)):(t=this.helperStakeMoreSca.getNestedInputParam(4),console.log(t));let n=new B(t,this.txb).getAmountInput().reduce((m,f)=>m+f,0),o=[],r=[],i,s=[];this.helperOldUnstakeObligation.moveCall&&(o=[this.helperOldUnstakeObligation.decodeSharedObjectId(2),this.helperOldUnstakeObligation.decodeSharedObjectId(3)]),this.helperUnstakeObligation.moveCall&&(r=[this.helperUnstakeObligation.decodeSharedObjectId(3),this.helperUnstakeObligation.decodeSharedObjectId(4)]),this.helperStakeMoreSca.moveCall&&(i=this.helperStakeMoreSca.decodeOwnedObjectId(1)),this.helperStakeObligationWithVeSca.moveCall&&(s=[this.helperStakeObligationWithVeSca.decodeSharedObjectId(3),this.helperStakeObligationWithVeSca.decodeSharedObjectId(4)]);let c=!1,l=!1,d,u,b=[{condition:o,isOld:!0},{condition:r,isOld:!1},{condition:s,isOld:!1}];for(let m=0;m<b.length;m++)b[m].condition.length>1&&([u,d]=b[m].condition,c=!0,l=b[m].isOld);return{txType:O.Other,type:"StakeSca",intentionData:{amount:n,lockPeriodInDays:e,obligationId:d,obligationKey:u,veScaKey:i,isObligationLocked:c,isOldBorrowIncentive:l}}}decodeSupplyLending(){let t=this._builder.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),e=this.helperMint.getNestedInputParam(2),n=new B(e,this.txb).getAmountInput().reduce((o,r)=>o+r,0);return{txType:O.Other,type:"SupplyLending",intentionData:{amount:n,coinName:t}}}decodeWithdrawLending(){let t=this._builder.utils.parseCoinNameFromType(this.helperRedeem.typeArg(0)),e=this.helperRedeem.getNestedInputParam(2),n=new B(e,this.txb).getAmountInput().reduce((o,r)=>o+r,0);return{txType:O.Other,type:"WithdrawLending",intentionData:{amount:n,coinName:t}}}decodeDepositCollateral(){let t=this._builder.utils.parseCoinNameFromType(this.helperDepositCollateral.typeArg(0)),e=this.helperDepositCollateral.getNestedInputParam(3),n=new B(e,this.txb).getAmountInput().reduce((r,i)=>r+i,0),o=this.helperDepositCollateral.decodeSharedObjectId(1);return{txType:O.Other,type:"DepositCollateral",intentionData:{amount:n,obligationId:o,coinName:t}}}decodeWithdrawCollateral(){let t=this._builder.utils.parseCoinNameFromType(this.helperWithdrawCollateral.typeArg(0)),e=this.helperWithdrawCollateral.decodeInputU64(5),n=this.helperWithdrawCollateral.decodeSharedObjectId(1),o=this.helperWithdrawCollateral.decodeOwnedObjectId(2);return{txType:O.Other,type:"WithdrawCollateral",intentionData:{amount:e,coinName:t,obligationKey:o,obligationId:n}}}decodeBorrow(){let t=this._builder.utils.parseCoinNameFromType(this.helperBorrow.typeArg(0)),e=this.helperBorrow.decodeInputU64(5),n=this.helperBorrow.decodeSharedObjectId(1),o=this.helperBorrow.decodeOwnedObjectId(2);return{txType:O.Other,type:"Borrow",intentionData:{amount:e,coinName:t,obligationKey:o,obligationId:n}}}decodeRepay(){let t=this._builder.utils.parseCoinNameFromType(this.helperRepay.typeArg(0)),e=this.helperRepay.getNestedInputParam(3),n=new B(e,this.txb).getAmountInput().reduce((r,i)=>r+i,0),o=this.helperRepay.decodeSharedObjectId(1);return{txType:O.Other,type:"Repay",intentionData:{amount:n,obligationId:o,coinName:t}}}decodeStakeSpool(){let t;this.isCreateStakeAccountTransaction()||(t=this.helperStake.decodeOwnedObjectId(1));let e=this.helperStake.getNestedInputParam(2),n=new B(e,this.txb).getAmountInput().reduce((i,s)=>i+s,0),o=this.helperStake.typeArg(0),r=this._builder.utils.parseCoinNameFromType(o);return{txType:O.Other,type:"StakeSpool",intentionData:{amount:n,marketCoinName:r,stakeAccountId:t}}}decodeUnstakeSpool(){let t=this.helperUnstake.decodeOwnedObjectId(1),e=this.helperUnstake.decodeInputU64(2),n=this.helperUnstake.typeArg(0),o=this._builder.utils.parseCoinNameFromType(n);return{txType:O.Other,type:"StakeSpool",intentionData:{amount:e,marketCoinName:o,stakeAccountId:t}}}decodeSupplyWithStakeSpool(){let t=this._builder.utils.parseCoinNameFromType(this.helperMint.typeArg(0)),e=this.helperMint.getNestedInputParam(2),n=new B(e,this.txb).getAmountInput().reduce((r,i)=>r+i,0),o;return this.isCreateStakeAccountTransaction()||(o=this.helperStake.decodeOwnedObjectId(1)),{txType:O.Other,type:"SupplyAndStakeLending",intentionData:{amount:n,coinType:t,stakeAccountId:o}}}decodeUnstakeAndWithdraw(){let t=[];this.helperUnstakes.forEach(r=>{let i=r.decodeOwnedObjectId(1),s=r.decodeInputU64(2);t.push({id:i,coin:s})});let e=this._builder.utils.parseCoinNameFromType(this.helperRedeems[0].typeArg(0)),n=this.helperRedeems.find(r=>r.isHaveNestedInput(2)),o;return n&&(o=new B(n.getNestedInputParam(2),this.txb).getAmountInput().reduce((r,i)=>r+i,0)),{txType:O.Other,type:"WithdrawAndUnstakeLending",intentionData:{amount:o,coinName:e,stakeAccountId:t}}}decodeClaimReward(){let t=[],e=[],n=[];return this.helperClaimLendingReward.forEach(o=>{let r=o.decodeOwnedObjectId(2),i=o.typeArg(0),s=this._builder.utils.parseCoinNameFromType(i);t.push({stakeMarketCoinName:s,stakeAccountId:r})}),this.helperClaimBorrowV2Reward.forEach(o=>{let r=o.decodeSharedObjectId(3),i=o.decodeOwnedObjectId(4),s=this._builder.utils.parseCoinNameFromType(o.typeArg(0));e.push({obligationId:r,obligationKey:i,rewardCoinName:s})}),this.helperClaimBorrowReward.forEach(o=>{let r=o.decodeSharedObjectId(2),i=o.decodeOwnedObjectId(3),s=this._builder.utils.parseCoinNameFromType(o.typeArg(0));n.push({obligationId:r,obligationKey:i,rewardCoinName:s})}),{txType:O.Other,type:"ClaimIncentiveReward",intentionData:{lendingIncentive:t,borrowIncentiveV2:e,borrowIncentive:n}}}get helperClaimLendingReward(){return this.transactions.filter(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.spoolPkg}::user::redeem_rewards`)).map(e=>new w(e,this.txb))}get helperClaimBorrowV2Reward(){return this.transactions.filter(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::redeem_rewards`)).map(e=>new w(e,this.txb))}get helperStakeMoreSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::lock_more_sca`));return new w(t,this.txb)}get helperStakeSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::mint_ve_sca_key`));return new w(t,this.txb)}get helperExtendStakePeriod(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::extend_lock_period`));return new w(t,this.txb)}get helperRedeemSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::redeem`));return new w(t,this.txb)}get helperRenewExpired(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::renew_expired_ve_sca`));return new w(t,this.txb)}get helperOldUnstakeObligation(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${Gt}::user::unstake`));return new w(t,this.txb)}get helperUnstakeObligation(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::unstake`));return new w(t,this.txb)}get helperStakeObligationWithVeSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.borrowIncentivePkg}::user::stake_with_ve_sca`));return new w(t,this.txb)}get helperRedeemVeSca(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.veScaPkgId}::ve_sca::redeem`));return new w(t,this.txb)}get helperClaimBorrowReward(){return this.transactions.filter(e=>e.kind==="MoveCall"&&e.target.startsWith(`${Gt}::user::redeem_rewards`)).map(e=>new w(e,this.txb))}get helperMint(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::mint::mint`));return new w(t,this.txb)}get helperUnstakes(){return this.transactions.filter(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.spoolPkg}::user::unstake`)).map(e=>new w(e,this.txb))}get helperRedeems(){return this.transactions.filter(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::redeem::redeem`)).map(e=>new w(e,this.txb))}get helperRedeem(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::redeem::redeem`));return new w(t,this.txb)}get helperStake(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.spoolPkg}::user::stake`));return new w(t,this.txb)}get helperUnstake(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.spoolPkg}::user::unstake`));return new w(t,this.txb)}get helperDepositCollateral(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::deposit_collateral::deposit_collateral`));return new w(t,this.txb)}get helperWithdrawCollateral(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::withdraw_collateral::withdraw_collateral`));return new w(t,this.txb)}get helperBorrow(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::borrow::borrow`));return new w(t,this.txb)}get helperRepay(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(`${this.coreId.protocolPkg}::repay::repay`));return new w(t,this.txb)}},B=class{constructor(t,e){this.splitCoin=t;this.txb=e}getAmountInput(){return this.splitCoin.amounts.map(t=>{if(t.kind==="Input")return Number(w.getPureInputValue(t,"u64"))}).filter(t=>t!==void 0)}static getPureInputValue(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value=="object"&&"Pure"in t.value){let n=t.value.Pure;return ba.de(e,new Uint8Array(n))}return t.value}},w=class a{constructor(t,e){this.moveCall=t;this.txb=e}decodeSharedObjectId(t){let e=this.getInputParam(t);return a.getSharedObjectId(e)}decodeOwnedObjectId(t){let e=this.getInputParam(t);return a.getOwnedObjectId(e)}decodeInputU64(t){let e=this.decodePureArg(t,"u64");return Number(e)}decodeInputU8(t){let e=this.decodePureArg(t,"u8");return Number(e)}decodeInputAddress(t){let e=this.decodePureArg(t,"address");return Ht(e)}decodeInputString(t){return this.decodePureArg(t,"string")}decodeInputBool(t){return this.decodePureArg(t,"bool")}decodePureArg(t,e){let n=this.getInputParam(t);return a.getPureInputValue(n,e)}getInputParam(t){let e=this.moveCall.arguments[t];if(e.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[e.index]}getNestedInputParam(t){let e=this.moveCall.arguments[t];if(e.kind!=="NestedResult")throw new Error("not input type");return this.txb.blockData.transactions[e.index]}isHaveNestedInput(t){return this.moveCall.arguments[t].kind==="NestedResult"}static getPureInputValue(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value=="object"&&"Pure"in t.value){let n=t.value.Pure;return ba.de(e,new Uint8Array(n))}return t.value}static getOwnedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value=="object"){if(!("Object"in t.value)||!("ImmOrOwned"in t.value.Object))throw new Error("not ImmOrOwned");return Ht(t.value.Object.ImmOrOwned.objectId)}return Ht(t.value)}static getSharedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value!="object")return Ht(t.value);if(!("Object"in t.value)||!("Shared"in t.value.Object))throw new Error("not Shared");return Ht(t.value.Object.Shared.objectId)}static getPureInput(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value!="object")return t.value;if(!("Pure"in t.value))throw new Error("Pure not in value");let n=t.value.Pure;return ba.de(e,new Uint8Array(n))}typeArg(t){return Qi(this.moveCall.typeArguments[t])}txArg(t){return this.moveCall.arguments[t]}};import{TransactionBlock as T}from"@mysten/sui.js/transactions";import{normalizeSuiAddress as bs}from"@mysten/sui.js/utils";import Go from"bignumber.js";var ko={mainnet:{core:{version:"0x07871c4b3c847a0f674510d4978d5cf6f960452795e8ff6f189fd2088a3f6ac7",versionCap:"0x590a4011cb649b3878f3ea14b3a78674642a9548d79b7e091ef679574b158a07",object:"0xefe8b36d5b2e43728cc323298626b83177803521d195cfb11e15b910e892fddf",market:"0xa757975255146dc9686aa823b7838b507f315d704f428cbadad2f4ea061939d9",adminCap:"0x09689d018e71c337d9db6d67cbca06b74ed92196103624028ccc3ecea411777c",coinDecimalsRegistry:"0x200abe9bf19751cc566ae35aa58e2b7e4ff688fc1130f8d8909ea09bc137d668",obligationAccessStore:"0x733e30b7c94d619d78cb8f5bc4bfbb759ced9a531239028caabb2474e5be59c9",coins:{cetus:{id:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",metaData:"0x4c0dce55eff2db5419bbd2d239d1aa22b4a400c01bbb648b058a9883989025da",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef",feedObject:"0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14"}}},apt:{id:"0x3a5143bb1196e3bcdfab6203d1683ae29edd26294fc8bfeafe4aaa9d2704df37",metaData:"0xc969c5251f372c0f34c32759f1d315cf1ea0ee5e4454b52aea08778eacfdd0a8",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5",feedObject:"0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f"}}},sol:{id:"0xb7844e289a8410e50fb3ca48d69eb9cf29e27d223ef90353fe1bd8e27ff8f3f8",metaData:"0x4d2c39082b4477e3e79dc4562d939147ab90c42fc5f3e4acf03b94383cd69b6e",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",feedObject:"0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469"}}},btc:{id:"0x027792d9fed7f9844eb4839566001bb6f6cb4804f66aa2da6fe1ee242d896881",metaData:"0x5d3c6e60eeff8a05b693b481539e7847dfe33013e7070cdcb387f5c0cac05dfd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43",feedObject:"0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2"}}},eth:{id:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5",metaData:"0x8900e4ceede3363bef086d6b50ca89d816d0e90bf6bc46efefe1f8455e08f50f",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace",feedObject:"0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab"}}},usdc:{id:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf",metaData:"0x4fbf84f3029bd0c0b77164b587963be957f853eccf834a67bb9ecba6ec80f189",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",feedObject:"0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab"}}},usdt:{id:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c",metaData:"0xfb0e3eb97dd158a5ae979dddfa24348063843c5b20eb8381dd5fa7c93699e45c",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",feedObject:"0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572"}}},sui:{id:"0x0000000000000000000000000000000000000000000000000000000000000002",metaData:"0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",treasury:"",oracle:{supra:"",switchboard:"0xbca474133638352ba83ccf7b5c931d50f764b09550e16612c9f70f1e21f3f594",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},afsui:{id:"0xf325ce1300e8dac124071d3152c5c5ee6174914f8bc2161e88329cf579246efc",metaData:"0x2f9217f533e51334873a39b8026a4aa6919497b47f49d0986a4f1aec66f8a34d",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},hasui:{id:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",metaData:"0x2c5f33af93f6511df699aaaa5822d823aac6ed99d4a0de2a4a50b3afa0172e24",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},vsui:{id:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55",metaData:"0xabd84a23467b33854ab25cf862006fd97479f8f6f53e50fe732c43a274d939bd",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744",feedObject:"0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37"}}},sca:{id:"0x7016aae72cfc67f2fadf55769c0a7dd54291a583b63051a5ed71081cce836ac6",metaData:"0x5d26a1e9a55c88147ac870bfa31b729d7f49f8804b8b3adfdf3582d301cca844",treasury:"",oracle:{supra:"",switchboard:"",pyth:{feed:"7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc",feedObject:"0xf6de1d3279a269a597d813cbaca59aa906543ab9a8c64e84a4722f1a20863985"}}}},oracles:{xOracle:"0x93d5bf0936b71eb27255941e532fac33b5a5c7759e377b4923af0a1359ad494f",xOracleCap:"0x1edeae568fde99e090dbdec4bcdbd33a15f53a1ce1f87aeef1a560dedf4b4a90",supra:{registry:"",registryCap:"",holder:""},switchboard:{registry:"",registryCap:""},pyth:{registry:"0xedc293f9413a5a7a5d53bdba1fd889d0a4030894469228f0acdae4aa3c55a213",registryCap:"0xbcb07141eb1f7e01fbda4130ecf5f5adaeabb77f5d9c32158b7532bcd2197acd",state:"0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8",wormhole:"0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a",wormholeState:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c"}},packages:{coinDecimalsRegistry:{id:"0xca5a5a62f01c79a104bf4d31669e29daa387f325c241de4edbe30986a9bc8b0d",upgradeCap:"0x34e76a945d29f195bc53ca704fa70877d1cf3a5d7bbfdda1b13e633fff13c0f6"},math:{id:"0xad013d5fde39e15eabda32b3dbdafd67dac32b798ce63237c27a8f73339b9b6f",upgradeCap:"0x3a329598231de02e6135c62284b66005b41cad1d9ab7ca2dc79c08293aba2ec6"},whitelist:{id:"0x1318fdc90319ec9c24df1456d960a447521b0a658316155895014a6e39b5482f",upgradeCap:"0xf5a22aea23db664f7b69855b6a546747f17c1ec4230319cfc17225e462b05761"},x:{id:"0x779b5c547976899f5474f3a5bc0db36ddf4697ad7e5a901db0415c2281d28162",upgradeCap:"0x3f203f6fff6a69d151e4f1cd931f22b68c489ef2759765662fc7baf673943c9e"},protocol:{id:"0x38fe42a5a69f7eb3635404389e8003be9457b1a5c873f133184648c7e9bd47b7",upgradeCap:"0x38527d154618d1fd5a644b90717fe07cf0e9f26b46b63e9568e611a3f86d5c1a"},protocolWhitelist:{id:"0x4c262d9343dac53ecb28f482a2a3f62c73d0ebac5b5f03d57383d56ff219acdf",upgradeCap:"0x4a5e88a75039b00988f633f811f58117f31b8627a46bf822aa114d9010049449"},query:{id:"0xb8d603a39114a5efef3dd0bf84df0bed1be1fbd39b78b7dd6e8a61ccc5e6006f",upgradeCap:"0x0d535c35f608b9b01b7ccce11acf43b1dd80c1b72bf8b541744a6e28e8d2745f"},supra:{id:"",upgradeCap:""},pyth:{id:"0x910f30cbc7f601f75a5141a01265cd47c62d468707c5e1aecb32a18f448cb25a",upgradeCap:"0xdf0ffbae1ea5bb25fbca5efba433dcf00c7cced65679af2f04728901275c6157"},switchboard:{id:"",upgradeCap:""},xOracle:{id:"0x1478a432123e4b3d61878b629f2c692969fdb375644f1251cd278a4b1e7d7cd6",upgradeCap:"0x0f928a6b2e26b73330fecaf9b44acfc9800a4a9794d6415c2a3153bc70e3c1f0"},testCoin:{id:"",upgradeCap:""}}},spool:{id:"0xec1ac7f4d01c5bf178ff4e62e523e7df7721453d81d4904a42a0ffc2686c843d",adminCap:"0xdd8a047cbbf802bfcde5288b8ef1910965d789cc614da11d39af05fca0bd020a",object:"0xe87f1b2d498106a2c61421cec75b7b5c5e348512b0dc263949a0e7a3c256571a",pools:{seth:{id:"0xeec40beccb07c575bebd842eeaabb835f77cd3dab73add433477e57f583a6787",rewardPoolId:"0x957de68a18d87817de8309b30c1ec269a4d87ae513abbeed86b5619cb9ce1077"},ssui:{id:"0x4f0ba970d3c11db05c8f40c64a15b6a33322db3702d634ced6536960ab6f3ee4",rewardPoolId:"0x162250ef72393a4ad3d46294c4e1bdfcb03f04c869d390e7efbfc995353a7ee9"},susdc:{id:"0x4ace6648ddc64e646ba47a957c562c32c9599b3bba8f5ac1aadb2ae23a2f8ca0",rewardPoolId:"0xf4268cc9b9413b9bfe09e8966b8de650494c9e5784bf0930759cfef4904daff8"},susdt:{id:"0xcb328f7ffa7f9342ed85af3fdb2f22919e1a06dfb2f713c04c73543870d7548f",rewardPoolId:"0x2c9f934d67a5baa586ceec2cc24163a2f049a6af3d5ba36b84d8ac40f25c4080"},scetus:{id:"0xac1bb13bf4472a637c18c2415fb0e3c1227ea2bcf35242e50563c98215bd298e",rewardPoolId:"0x6835c1224126a45086fc6406adc249e3f30df18d779ca4f4e570e38716a17f3f"},safsui:{id:"0xeedf438abcaa6ce4d9625ffca110920592d5867e4c5637d84ad9f466c4feb800",rewardPoolId:"0x89255a2f86ed7fbfef35ab8b7be48cc7667015975be2685dd9a55a9a64baf76e"},shasui:{id:"0xa6148bc1b623e936d39a952ceb5bea79e8b37228a8f595067bf1852efd3c34aa",rewardPoolId:"0x6f3563644d3e2ef13176dbf9d865bd93479df60ccbe07b7e66db57f6309f5a66"},svsui:{id:"0x69ce8e537e750a95381e6040794afa5ab1758353a1a2e1de7760391b01f91670",rewardPoolId:"0xbca914adce058ad0902c7f3cfcd698392a475f00dcfdc3f76001d0370b98777a"}},version:"",versionCap:""},borrowIncentive:{id:"0x002875153e09f8145ab63527bc85c00f2bd102e12f9573c47f8cdf1a1cb62934",adminCap:"0xc486afa253646f4d381e81d7f1df8aa4723b845a6bb356f69bad635ffefffe2c",object:"0x41c0788f4ab64cf36dc882174f467634c033bf68c3c1b5ef9819507825eb510b",query:"0x529edc54a3dce2207703ceebbccb0ac14133f7825c1f528775ba0d85a4063489",incentivePools:"0x6547e143d406b5ccd5f46aae482497de279cc1a68c406f701df70a05f9212ab4",incentiveAccounts:"0xc4701fdbc1c92f9a636d334d66012b3027659e9fb8aff27279a82edfb6b77d02",config:"0xdf5d04b4691cc67e82fd4db8394d89ff44823a9de29716c924f74bb4f11cc1f7",version:"",versionCap:""},vesca:{id:"0xcfe2d87aa5712b67cad2732edb6a2201bfdf592377e5c0968b7cb02099bd8e21",adminCap:"0x4d105b16467acca81d18c132cdd1a3cee159920a86c1ef4bdbf2e8d7878500c5",tableId:"0x0a0b7f749baeb61e3dfee2b42245e32d0e6b484063f0a536b33e771d573d7246",table:"0xd3a4632b1080f7d96e1c2487d4dabf2c1196916937c505a69954ac9f393be8d0",treasury:"0xafa4b6231e49c15a22d641ce33fda761baaf650fa21899dfa2eb1716146e7306",config:"0x7cbcb0a342179577a117dfdff974cf1ab765d3b571067bf22ddf5f9e3a667922"}}};var $=class{_auth;_id;_network;_currentAddresses;_addressesMap;constructor(t){let{id:e,auth:n,network:o}=t;n&&(this._auth=n),this._id=e,this._network=o||"mainnet",this._addressesMap=new Map}getId(){return this._id||void 0}get(t){if(this._currentAddresses)return t.split(".").reduce((n,o)=>typeof n=="object"?n[o]:n,this._currentAddresses)||void 0}set(t,e){if(this._currentAddresses){let n=t.split(".");n.reduce((o,r,i)=>{if(i===n.length-1){let s=o;s[r]=e}return o[r]},this._currentAddresses)}return this._currentAddresses}switchCurrentAddresses(t){return this._addressesMap.has(t)&&(this._currentAddresses=this._addressesMap.get(t),this._network=t),this._currentAddresses}getAddresses(t){return t?this._addressesMap.get(t):this._currentAddresses??this._addressesMap.get(this._network)}setAddresses(t,e){let n=e||this._network;n===this._network&&(this._currentAddresses=t),this._addressesMap.set(n,t)}getAllAddresses(){return Object.fromEntries(this._addressesMap)}read(){return Object.entries(ko).forEach(([t,e])=>{["localnet","devnet","testnet","mainnet"].includes(t)&&(t===this._network&&(this._currentAddresses=e),this._addressesMap.set(t,e))}),this.getAllAddresses()}};import{TransactionBlock as Xi}from"@mysten/sui.js/transactions";import{normalizeSuiAddress as Ji}from"@mysten/sui.js/utils";import{SUI_TYPE_ARG as Ki,normalizeStructTag as _o}from"@mysten/sui.js/utils";var P=a=>{let{sender:t}=a.blockData;if(!t)throw new Error("Sender is required");return t},vo=(a,t,e,n)=>{let o=!n,r=!o&&n*1e3<=new Date().getTime();if(o||r)if(a!==void 0&&t!==void 0){if(t<=0)throw new Error("Lock period must be greater than 0");if(typeof a=="number"&&a<1e10)throw new Error(`Minimum lock amount for ${r?"renewing expired veSca":"initial lock"} is 10 SCA`);if(t*86400>126144e3)throw new Error(`Maximum lock period is ~4 years (${1460} days)`)}else throw new Error(`SCA amount and lock period is required for ${r?"renewing expired veSca":"initial lock"}`);else{if(It(n),typeof a=="number"&&a<1e9)throw new Error("Minimum top up amount is 1 SCA");if(e&&n&&e-n>126057600)throw new Error(`Maximum lock period is ~4 years (${1459} days)`)}},Oo=(a,t,e)=>{if(It(e),a<=0)throw new Error("Lock period must be greater than 0");if(!!e&&e*1e3<=new Date().getTime())throw new Error("veSca is expired, use renewExpiredVeScaQuick instead");if(e&&t-e>126057600)throw new Error(`Maximum lock period is ~4 years (${1459} days)`)},Po=(a,t)=>{if(It(t),a<1e9)throw new Error("Minimum top up amount is 1 SCA");if(!!t&&t*1e3<=new Date().getTime())throw new Error("veSca is expired, use renewExpiredVeScaQuick instead")},Do=(a,t,e)=>{if(It(e),a<1e10)throw new Error("Minimum lock amount for renewing expired vesca 10 SCA");if(t*86400>=126057600)throw new Error(`Maximum lock period is ~4 years (${1459} days)`)},It=a=>{if(a===void 0)throw new Error("veSca not found")};import{normalizeStructTag as Ro,parseStructTag as Vi}from"@mysten/sui.js/utils";import Eg from"bignumber.js";var Gi=a=>({pointType:Ro(a.point_type.name),weightedAmount:Number(a.weighted_amount),points:Number(a.points),totalPoints:Number(a.total_points),index:Number(a.index)}),jo=a=>({poolType:Ro(a.pool_type.name),debtAmount:Number(a.debt_amount),pointList:a.points_list.reduce((t,e)=>{let n=Gi(e),o=Vi(n.pointType).name.toLowerCase();return t[o]=n,t},{})});var fa=a=>{let t=a.slice(1).toLowerCase();return a.charAt(0).toLowerCase()==="s"&&[...new Set([...ct,...cn,...Co])].includes(t)},ga=a=>{switch(a){case"afsui":return"afSUI";case"hasui":return"haSUI";case"vsui":return"vSUI";default:return a.toUpperCase()}};var No=a=>{let t=new Date(a*1e3),e=new Date(a*1e3);e.setUTCHours(0,0,0,0),t.getUTCHours()>=0&&e.setUTCDate(e.getUTCDate()+1);let n=new Date().getTime();return e.getTime()-n>126144e3*1e3&&e.setUTCDate(e.getUTCDate()-1),Math.floor(e.getTime()/1e3)};var at=class{params;isTestnet;_address;client;constructor(t,e){this.params=t,this._address=e?.address??new $({id:t?.addressesId||tt,network:t?.networkType}),this.isTestnet=t.networkType?t.networkType==="testnet":!1,this.client=t.client}init(t=!1,e){t||!this._address.getAddresses()||!e?.getAddresses()?this._address.read():this._address=e}parseSymbol(t){if(fa(t)){let e=t.slice(1).toLowerCase();return t.slice(0,1).toLowerCase()+ga(e)}return ga(t)}parseCoinType(t){let e=fa(t)?this.parseCoinName(t):t,n=this._address.get(`core.coins.${e}.id`)||To[t]||void 0;if(!n)throw Error(`Coin ${t} is not supported`);if(t==="sui")return _o(`${n}::sui::SUI`);let o=[this._address.get("core.coins.usdc.id")??j.usdc,this._address.get("core.coins.usdt.id")??j.usdt,this._address.get("core.coins.eth.id")??j.eth,this._address.get("core.coins.btc.id")??j.btc,this._address.get("core.coins.sol.id")??j.sol,this._address.get("core.coins.apt.id")??j.apt],r=[this._address.get("core.coins.vsui.id")??ma.vsui];return o.includes(n)?`${n}::coin::COIN`:r.includes(n)?`${n}::cert::CERT`:`${n}::${e}::${e.toUpperCase()}`}parseMarketCoinType(t){let e=this._address.get("core.object")||sn,n=this.parseCoinType(t);return`${e}::reserve::MarketCoin<${n}>`}parseCoinNameFromType(t){let e=_o(t),n=/((0x[^:]+::[^:]+::[^<>]+))(?![^<>]*<)/,o=t.match(n),r=t.includes("reserve::MarketCoin");e=o?.[1]||t;let i={[`${this._address.get("core.coins.usdc.id")??j.usdc}::coin::COIN`]:"usdc",[`${this._address.get("core.coins.usdt.id")??j.usdt}::coin::COIN`]:"usdt",[`${this._address.get("core.coins.eth.id")??j.eth}::coin::COIN`]:"eth",[`${this._address.get("core.coins.btc.id")??j.btc}::coin::COIN`]:"btc",[`${this._address.get("core.coins.sol.id")??j.sol}::coin::COIN`]:"sol",[`${this._address.get("core.coins.apt.id")??j.apt}::coin::COIN`]:"apt"},s={[`${this._address.get("core.coins.vsui.id")??ma.vsui}::cert::CERT`]:"vsui"},c=i[e]||s[e]||e.split("::")[2].toLowerCase();return r?this.parseMarketCoinName(c):c}parseCoinName(t){return t.slice(1)}parseMarketCoinName(t){return`s${t}`}getSpoolRewardCoinName=t=>dn[t];getBorrowIncentiveRewardCoinName=t=>Io[t];getCoinDecimal(t){return wo[t]}getCoinWrappedType(t){return t==="usdc"||t==="usdt"||t==="eth"||t==="btc"||t==="apt"||t==="sol"?{from:"Wormhole",type:"Portal from Ethereum"}:void 0}async selectCoinIds(t,e=Ki,n){let o=n,r=[],i=0,s=!0,c=null;for(;s&&i<t;){let l=await this.client.getCoins({owner:o,coinType:e,cursor:c});l.data.sort((d,u)=>parseInt(u.balance,10)-parseInt(d.balance,10));for(let d=0;d<l.data.length&&(r.push({objectId:l.data[d].coinObjectId,digest:l.data[d].digest,version:l.data[d].version}),i+=parseInt(l.data[d].balance,10),!(i>=t));d++);c=l.nextCursor,s=l.hasNextPage}if(!r.length)throw new Error("No valid coins found for the transaction.");return r.map(l=>l.objectId)}parseAprToApy(t,e=365){return(1+t/e)**e-1}parseApyToApr(t,e=365){return((1+t)**(1/e)-1)*e}takeAmountFromCoins(t,e,n){let o=e.map(s=>t.object(s)),r=o[0];o.length>1&&t.mergeCoins(r,o.slice(1));let[i]=t.splitCoins(r,[t.pure(n)]);return[i,r]}getUnlockAt(t,e){let n=Math.floor(new Date().getTime()/1e3),o=e?Math.max(e-n,0):0,r=0;if(o===0){let i=(t??1)*86400;r=Math.min(n+i,n+126144e3)}else{let i=Math.min(t?t*86400+o:o,126144e3);r=n+i}return No(r)}};import{TransactionBlock as Hi}from"@mysten/sui.js/transactions";import pn from"bignumber.js";var Tt=async(a,t)=>{let e=t,n=a.address.get("core.object")||sn,o=[],r=!1,i=null;do{let d=await a.client.getOwnedObjects({owner:e,filter:{StructType:`${n}::obligation::ObligationKey`},cursor:i});o.push(...d.data),d.hasNextPage&&d.nextCursor?(r=!0,i=d.nextCursor):r=!1}while(r);let s=o.map(d=>d?.data?.objectId).filter(d=>d!==void 0),c=await a.client.multiGetObjects({ids:s,options:{showContent:!0,showType:!0}}),l=[];for(let d=0;d<c.length;d++){let u=c[d].data.objectId,{content:b}=c[d].data;if(b&&"fields"in b){let m=b.fields,f=String(m.ownership.fields.of),y=await ha(a,f);l.push({id:f,keyId:u,locked:y})}}return l},ha=async(a,t)=>{let e=await a.client.getObject({id:t,options:{showContent:!0}}),n=!1;return e.data&&e?.data?.content?.dataType==="moveObject"&&"lock_key"in e.data.content.fields&&(n=!!e.data.content.fields.lock_key),n},Bo=async(a,t,e)=>{let n=e||[...ct],o=t,r=[],i=!1,s=null;do{let d=await a.client.getOwnedObjects({owner:o,filter:{MatchAny:n.map(u=>({StructType:`0x2::coin::Coin<${a.utils.parseCoinType(u)}>`}))},options:{showType:!0,showContent:!0},cursor:s});r.push(...d.data),d.hasNextPage&&d.nextCursor?(i=!0,s=d.nextCursor):i=!1}while(i);let c={};return r.map(d=>d.data).filter(d=>d!=null).forEach(d=>{let u=d.type;if(d.content&&"fields"in d.content){let b=d.content.fields,m=a.utils.parseCoinNameFromType(u);m&&(c[m]=pn(c[m]??0).plus(b.balance).toNumber())}}),c},Eo=async(a,t,e)=>{let n=e,o=a.utils.parseCoinType(t),r=[],i=!1,s=null;do{let d=await a.client.getOwnedObjects({owner:n,filter:{StructType:`0x2::coin::Coin<${o}>`},options:{showContent:!0},cursor:s});r.push(...d.data),d.hasNextPage&&d.nextCursor?(i=!0,s=d.nextCursor):i=!1}while(i);let c=0;return r.map(d=>d.data).filter(d=>d!=null).forEach(d=>{if(d.content&&"fields"in d.content){let u=d.content.fields;c=pn(c).plus(u.balance).toNumber()}}),c},Mo=async(a,t,e)=>{let n=e||[...ct].map(d=>a.utils.parseMarketCoinName(d)),o=t,r=[],i=!1,s=null;do{let d=await a.client.getOwnedObjects({owner:o,filter:{MatchAny:n.map(u=>({StructType:`0x2::coin::Coin<${a.utils.parseMarketCoinType(u)}>`}))},options:{showType:!0,showContent:!0},cursor:s});r.push(...d.data),d.hasNextPage&&d.nextCursor?(i=!0,s=d.nextCursor):i=!1}while(i);let c={};return r.map(d=>d.data).filter(d=>d!=null).forEach(d=>{let u=d.type;if(d.content&&"fields"in d.content){let b=d.content.fields,m=a.utils.parseCoinNameFromType(u);m&&(c[m]=pn(c[m]??0).plus(b.balance).toNumber())}}),c},Lo=async(a,t,e)=>{let n=e,o=a.utils.parseMarketCoinType(t),r=[],i=!1,s=null;do{let d=await a.client.getOwnedObjects({owner:n,filter:{StructType:`0x2::coin::Coin<${o}>`},options:{showContent:!0},cursor:s});r.push(...d.data),d.hasNextPage&&d.nextCursor?(i=!0,s=d.nextCursor):i=!1}while(i);let c=0;return r.map(d=>d.data).filter(d=>d!=null).forEach(d=>{if(d.content&&"fields"in d.content){let u=d.content.fields;c=pn(c).plus(u.balance).toNumber()}}),c},Fo=async(a,t)=>{let n=`${a.address.get("core.packages.query.id")}::obligation_query::obligation_data`,o=new Hi;return o.moveCall({target:n,arguments:[o.object(t)]}),(await a.client.devInspectTransactionBlock({transactionBlock:o,sender:a.walletAddress})).events[0].parsedJson};import{normalizeStructTag as C}from"@mysten/sui.js/utils";var zt=async(a,t)=>{let e=t,n=a.address.get("spool.object"),o=`${n}::spool_account::SpoolAccount`,r=[],i=!1,s=null;do{let b=await a.client.getOwnedObjects({owner:e,filter:{StructType:o},options:{showContent:!0,showType:!0},cursor:s});r.push(...b.data),b.hasNextPage&&b.nextCursor?(i=!0,s=b.nextCursor):i=!1}while(i);let c={seth:[],ssui:[],susdc:[],susdt:[],scetus:[],safsui:[],shasui:[],svsui:[]},l=Object.keys(c).reduce((b,m)=>{let f=a.utils.parseCoinName(m),y=a.utils.parseMarketCoinType(f),k={...b},R=`${n}::spool_account::SpoolAccount<${y}>`;return k[m]=R,k},{}),d=r.map(b=>b?.data?.objectId).filter(b=>b!==void 0);return(await a.client.multiGetObjects({ids:d,options:{showContent:!0,showType:!0}})).forEach(b=>{let m=b.data.objectId,f=b.data.type;if(b.data.content&&"fields"in b.data.content){let y=b.data.content.fields,k=String(y.spool_id),R=String(y.stake_type.fields.name),L=Number(y.stakes),V=Number(y.index),G=Number(y.points),K=Number(y.total_points);C(f)===l.seth?c.seth.push({id:m,type:C(f),stakePoolId:k,stakeType:C(R),staked:L,index:V,points:G,totalPoints:K}):C(f)===l.ssui?c.ssui.push({id:m,type:C(f),stakePoolId:k,stakeType:C(R),staked:L,index:V,points:G,totalPoints:K}):C(f)===l.susdc?c.susdc.push({id:m,type:C(f),stakePoolId:k,stakeType:C(R),staked:L,index:V,points:G,totalPoints:K}):C(f)===l.susdt?c.susdt.push({id:m,type:C(f),stakePoolId:k,stakeType:C(R),staked:L,index:V,points:G,totalPoints:K}):C(f)===l.scetus?c.scetus.push({id:m,type:C(f),stakePoolId:k,stakeType:C(R),staked:L,index:V,points:G,totalPoints:K}):C(f)===l.safsui?c.safsui.push({id:m,type:C(f),stakePoolId:k,stakeType:C(R),staked:L,index:V,points:G,totalPoints:K}):C(f)===l.shasui?c.shasui.push({id:m,type:C(f),stakePoolId:k,stakeType:C(R),staked:L,index:V,points:G,totalPoints:K}):C(f)===l.svsui&&c.svsui.push({id:m,type:C(f),stakePoolId:k,stakeType:C(R),staked:L,index:V,points:G,totalPoints:K})}}),c},ya=async(a,t)=>{let e=a.address.get(`spool.pools.${t}.id`),n,o=await a.client.getObject({id:e,options:{showContent:!0,showType:!0}});if(o.data){let r=o.data,i=r.objectId,s=r.type;if(r.content&&"fields"in r.content){let c=r.content.fields,l=Number(c.max_distributed_point),d=Number(c.distributed_point),u=Number(c.distributed_point_per_period),b=Number(c.point_distribution_time),m=Number(c.max_stakes),f=String(c.stake_type.fields.name),y=Number(c.stakes),k=Number(c.index),R=Number(c.created_at),L=Number(c.last_update);n={id:i,type:C(s),maxPoint:l,distributedPoint:d,pointPerPeriod:u,period:b,maxStake:m,stakeType:C(f),totalStaked:y,index:k,createdAt:R,lastUpdate:L}}}return n},Sa=async(a,t)=>{let e=a.address.get(`spool.pools.${t}.rewardPoolId`),n,o=await a.client.getObject({id:e,options:{showContent:!0,showType:!0}});if(o.data){let r=o.data,i=r.objectId,s=r.type;if(r.content&&"fields"in r.content){let c=r.content.fields,l=String(c.spool_id),d=Number(c.exchange_rate_numerator),u=Number(c.exchange_rate_denominator),b=Number(c.rewards),m=Number(c.claimed_rewards);n={id:i,type:C(s),stakePoolId:l,ratioNumerator:d,ratioDenominator:u,rewards:b,claimedRewards:m}}}return n};import{TransactionBlock as zi}from"@mysten/sui.js/transactions";import{normalizeStructTag as oh}from"@mysten/sui.js/utils";import ih from"bignumber.js";var Wo=async(a,t,e,n)=>{let o=n||[...wt],r=a.address.get("borrowIncentive.query"),i=a.address.get("borrowIncentive.incentiveAccounts"),s=`${r}::incentive_account_query::incentive_account_data`,c=new zi;c.moveCall({target:s,arguments:[c.object(i),c.object(t)]});let d=(await a.client.devInspectTransactionBlock({transactionBlock:c,sender:e})).events[0].parsedJson,u={};return d.pool_records.forEach(b=>{let m=jo(b),{poolType:f}=m,y=a.utils.parseCoinNameFromType(f);o.length>=1&&o.includes(y)&&(u[y]=m)},{}),u};var Uo=async(a,t)=>{let e=a.address.get(`core.coins.${t}.oracle.pyth.feedObject`),n=await a.client.getObject({id:e,options:{showContent:!0}});if(n.data){let o=n.data;if(o.content&&"fields"in o.content){let r=o.content.fields,i=Number(r.price_info.fields.price_feed.fields.price.fields.expo.fields.magnitude),s=Number(r.price_info.fields.price_feed.fields.price.fields.expo.fields.negative),c=Number(r.price_info.fields.price_feed.fields.price.fields.price.fields.magnitude),l=Number(r.price_info.fields.price_feed.fields.price.fields.price.fields.negative);return c*10**((s?-1:1)*i)*(l?-1:1)}}return 0};import Ca from"bignumber.js";var qo=async(a,t)=>{let e=t,o=`${a.address.get("vesca.id")}::ve_sca::VeScaKey`,r=[],i=!1,s=null;do{let l=await a.client.getOwnedObjects({owner:e,filter:{StructType:o},cursor:s});r.push(...l.data),l.hasNextPage&&l.nextCursor?(i=!0,s=l.nextCursor):i=!1}while(i);return r.map(l=>l.data).filter(l=>!!l)},$o=async(a,t)=>{let n=(await qo(a,t)).map(r=>r.objectId),o=[];for(let r=0;r<n.length;r++){let i=await wa(a,n[r]);i&&o.push(i)}return o},wa=async(a,t,e)=>{let n=a.address.get("vesca.tableId"),o=t||(await qo(a,e))[0].objectId,r,s=(await a.client.getDynamicFieldObject({parentId:n,name:{type:"0x2::object::ID",value:o}})).data;if(s&&s.content&&s.content.dataType==="moveObject"&&"fields"in s.content){let c=s.content.fields.value.fields;r={id:s.objectId,keyId:o,lockedScaAmount:Ca(c.locked_sca_amount).toNumber(),lockedScaCoin:Ca(c.locked_sca_amount).shiftedBy(-9).toNumber(),unlockAt:Ca(c.unlock_at).toNumber()}}return r};var kt=class{params;address;client;utils;walletAddress;constructor(t,e){this.params=t,this.address=e?.address??new $({id:t?.addressesId||tt,network:t?.networkType}),this.client=t.client,this.utils=e?.utils??new at(this.params,{address:this.address}),this.walletAddress=t.walletAddress}init(t=!1,e){t||!this.address.getAddresses()||!e?.getAddresses()?this.address.read():this.address=e}async getObligations(t){return Tt(this,t)}async getCoinAmounts(t,e){return Bo(this,t,e)}async getCoinAmount(t,e){return Eo(this,t,e)}async getMarketCoinAmounts(t,e){return Mo(this,t,e)}async getMarketCoinAmount(t,e){return Lo(this,t,e)}async getPriceFromPyth(t){return Uo(this,t)}async getAllStakeAccounts(t){return zt(this,t)}async getStakeAccounts(t,e){return(await this.getAllStakeAccounts(e))[t]??[]}async getStakePools(t){let e=t??[...Kt],n={};for(let o=0;o<e.length;o++){let r=e[o],i=await ya(this,r);i&&(n[r]=i)}return n}async getStakePool(t){return ya(this,t)}async getStakeRewardPools(t){let e=t??[...Kt],n={};for(let o=0;o<e.length;o++){let r=await Sa(this,e[o]);r&&(n[e[o]]=r)}return n}async getStakeRewardPool(t){return Sa(this,t)}async getBorrowIncentiveAccounts(t,e,n){return Wo(this,t,e||this.walletAddress,n)}async getObligationCoinNames(t){let e=await Fo(this,t),n=e.collaterals.map(s=>`0x${s.type.name}`),o=e.debts.map(s=>`0x${s.type.name}`);return[...new Set([...n,...o])].map(s=>this.utils.parseCoinNameFromType(s))}};var xt=class{params;isTestnet;address;query;utils;client;walletAddress;constructor(t,e){this.params=t,this.address=e?.address??new $({id:t?.addressesId||tt,network:t?.networkType}),this.query=e?.query??new kt(t,{address:this.address}),this.utils=e?.utils??new at(this.params,{address:this.address,query:this.query}),this.client=t.client,this.walletAddress=Ji(t.walletAddress),this.isTestnet=t.networkType?t.networkType==="testnet":!1}async init(t=!1,e){t||!this.address.getAddresses()||!e?.getAddresses()?this.address.read():this.address=e,this.query.init(t,this.address),this.utils.init(t,this.address)}createTxBlock(t){return new Xi(t)}async selectCoin(t,e,n,o){let r=this.utils.parseCoinType(e),i=await this.utils.selectCoinIds(n,r,o),[s,c]=this.utils.takeAmountFromCoins(t,i,n);return{takeCoin:s,leftCoin:c}}async selectMarketCoin(t,e,n,o){let r=this.utils.parseMarketCoinType(e),i=await this.utils.selectCoinIds(n,r,o),[s,c]=this.utils.takeAmountFromCoins(t,i,n);return{takeCoin:s,leftCoin:c}}};import{SUI_CLOCK_OBJECT_ID as At,SUI_TYPE_ARG as Yi}from"@mysten/sui.js/utils";var dt=async(...a)=>{let[t,e,n]=a;if(a.length===3&&n&&typeof n=="string"){let i=await wa(t.query,n);return i||void 0}let o=P(e),r=await $o(t.query,o);if(r.length!==0)return r[0]},Zi=async(a,t)=>{let e=a.address.get("borrowIncentive.id"),n=a.address.get("borrowIncentive.incentivePools"),o=a.address.get("vesca.id"),{client:r}=a,i=await r.getObject({id:n,options:{showContent:!0}});if(i.data?.content?.dataType!=="moveObject")return!1;let c=i.data.content.fields.ve_sca_bind.fields.id.id,l=`${e}::typed_id::TypedID<${o}::ve_sca::VeScaKey>`,d=await r.getDynamicFieldObject({parentId:c,name:{type:l,value:t}});return d.data?.content?.dataType!=="moveObject"?!1:d.data.content.fields.value.fields.id},Ia=async(...a)=>{let[t,e,n,o]=a;if(a.length===4&&n&&o&&typeof n=="string"){let s=await ha(t.query,n);return{obligationId:n,obligationKey:o,obligationLocked:s}}let r=P(e),i=await Tt(t.query,r);if(i.length===0)throw new Error(`No obligation found for sender ${r}`);return{obligationId:i[0].id,obligationKey:i[0].keyId,obligationLocked:i[0].locked}},ts=({builder:a,txBlock:t})=>{let e={borrowIncentivePkg:a.address.get("borrowIncentive.id"),query:a.address.get("borrowIncentive.query"),incentivePools:a.address.get("borrowIncentive.incentivePools"),incentiveAccounts:a.address.get("borrowIncentive.incentiveAccounts"),obligationAccessStore:a.address.get("core.obligationAccessStore"),config:a.address.get("borrowIncentive.config")},n={id:"0xc63072e7f5f4983a2efaf5bdba1480d5e7d74d57948e1c7cc436f8e22cbeb410",incentivePools:"0x64972b713ccec45ec3964809e477cea6f97350c0c50ca3aec85bb631639266ec",incentiveAccounts:"0x3c0b707068bdcea8bb859d751ad3e2149a9f83c13fcf4054ef91372a00bccdd3"},o={table:a.address.get("vesca.table"),treasury:a.address.get("vesca.treasury"),config:a.address.get("vesca.config")};return{stakeObligation:(r,i)=>{t.moveCall({target:`${e.borrowIncentivePkg}::user::stake`,arguments:[t.object(e.config),t.object(e.incentivePools),t.object(e.incentiveAccounts),t.object(i),t.object(r),t.object(e.obligationAccessStore),t.object(At)]})},stakeObligationWithVesca:(r,i,s)=>{t.moveCall({target:`${e.borrowIncentivePkg}::user::stake_with_ve_sca`,arguments:[t.object(e.config),t.object(e.incentivePools),t.object(e.incentiveAccounts),t.object(i),t.object(r),t.object(e.obligationAccessStore),t.object(o.config),t.object(o.treasury),t.object(o.table),t.object(s),t.object(At)]})},unstakeObligation:(r,i)=>{t.moveCall({target:`${e.borrowIncentivePkg}::user::unstake`,arguments:[t.object(e.config),t.object(e.incentivePools),t.object(e.incentiveAccounts),t.object(i),t.object(r),t.object(At)]})},oldUnstakeObligation:(r,i)=>{t.moveCall({target:`${e.borrowIncentivePkg}::user::unstake`,arguments:[t.object(n.incentivePools),t.object(n.incentiveAccounts),t.object(i),t.object(r),t.object(At)],typeArguments:[Yi]})},claimBorrowIncentive:(r,i,s)=>{let c=a.utils.parseCoinType(s);return t.moveCall({target:`${e.borrowIncentivePkg}::user::redeem_rewards`,arguments:[t.object(e.config),t.object(e.incentivePools),t.object(e.incentiveAccounts),t.object(i),t.object(r),t.object(At)],typeArguments:[c]})},oldClaimBorrowIncentive(r,i,s){let c=a.utils.parseCoinType(s);return t.moveCall({target:`${n.id}::user::redeem_rewards`,arguments:[t.object(n.incentivePools),t.object(n.incentiveAccounts),t.object(i),t.object(r),t.object(At)],typeArguments:[c]})}}},E=({builder:a,txBlock:t})=>{let e=ts({builder:a,txBlock:t});return{normalMethod:e,stakeObligationQuick:async(n,o)=>{let{obligationId:r,obligationKey:i,obligationLocked:s}=await Ia(a,t,n,o),c=!!t.blockData.transactions.find(l=>l.kind==="MoveCall"&&l.target===`${a.address.get("borrowIncentive.id")}::user::unstake`);(!s||c)&&e.stakeObligation(r,i)},unstakeObligationQuick:async(n,o)=>{let{obligationId:r,obligationKey:i,obligationLocked:s}=await Ia(a,t,n,o);s&&e.unstakeObligation(r,i)},stakeObligationWithVeScaQuick:async(n,o,r)=>{let{obligationId:i,obligationKey:s,obligationLocked:c}=await Ia(a,t,n,o),l=!!t.blockData.transactions.find(d=>d.kind==="MoveCall"&&(d.target===`${Gt}::user::unstake`||d.target===`${a.address.get("borrowIncentive.id")}::user::unstake`));if(!c||l){let d=await dt(a,t,r);if(d){let u=await Zi(a,d.keyId);!u||u===i?e.stakeObligationWithVesca(i,s,d.keyId):e.stakeObligation(i,s)}else e.stakeObligation(i,s)}},claimBorrowIncentiveQuick:(n,o,r)=>e.claimBorrowIncentive(o,r,n)}};import{SUI_CLOCK_OBJECT_ID as ot}from"@mysten/sui.js/utils";import{SUI_CLOCK_OBJECT_ID as mn}from"@mysten/sui.js/utils";import{SuiPythClient as es,SuiPriceServiceConnection as ns}from"@pythnetwork/pyth-sui-js";var Qo={testnet:["https://hermes-beta.pyth.network"],mainnet:["https://hermes.pyth.network","https://scallop.rpc.p2p.world"]};var bn=async(a,t,e)=>{let n=e??[...new Set([...ct,...cn])],o=a.isTestnet?["pyth"]:["pyth"];if(o.includes("pyth")){let i=new es(a.client,a.address.get("core.oracles.pyth.state"),a.address.get("core.oracles.pyth.wormholeState")),s=n.map(l=>a.address.get(`core.coins.${l}.oracle.pyth.feed`)),c=a.params.pythEndpoints??Qo[a.isTestnet?"testnet":"mainnet"];for(let l=0;l<c.length;l++)try{let u=await new ns(c[l]).getPriceFeedsUpdateData(s);await i.updatePriceFeeds(t,u,s);break}catch(d){console.warn(`Failed to update price feeds with endpoint ${c[l]}: ${d}`)}}let r=[...new Set(n)];for(let i=0;i<r.length;i++)await as(a,t,r[i],o)},as=async(a,t,e,n)=>{let o=a.utils.parseCoinType(e);os(t,n,a.address.get("core.packages.xOracle.id"),a.address.get("core.oracles.xOracle"),a.address.get("core.packages.pyth.id"),a.address.get("core.oracles.pyth.registry"),a.address.get("core.oracles.pyth.state"),a.address.get(`core.coins.${e}.oracle.pyth.feedObject`),a.address.get("core.packages.switchboard.id"),a.address.get("core.oracles.switchboard.registry"),a.address.get(`core.coins.${e}.oracle.switchboard`),a.address.get("core.packages.supra.id"),a.address.get("core.oracles.supra.registry"),a.address.get("core.oracles.supra.holder"),o)},os=(a,t,e,n,o,r,i,s,c,l,d,u,b,m,f)=>{let y=rs(a,e,n,f);return t.includes("pyth")&&ds(a,o,y,i,s,r,f),t.includes("switchboard")&&cs(a,c,y,d,l,f),t.includes("supra")&&ss(a,u,y,m,b,f),is(a,e,n,y,f),a},rs=(a,t,e,n)=>{let o=typeof e=="string"?a.object(e):e,r=`${t}::x_oracle::price_update_request`,i=[n];return a.moveCall({target:r,arguments:[o],typeArguments:i})},is=(a,t,e,n,o)=>{let r=`${t}::x_oracle::confirm_price_update_request`,i=[o],s=typeof e=="string"?a.object(e):e;return a.moveCall({target:r,arguments:[s,n,a.object(mn)],typeArguments:i}),a},ss=(a,t,e,n,o,r)=>{let i=typeof n=="string"?a.object(n):n,s=typeof o=="string"?a.object(o):o;a.moveCall({target:`${t}::rule::set_price`,arguments:[e,i,s,a.object(mn)],typeArguments:[r]})},cs=(a,t,e,n,o,r)=>{let i=typeof n=="string"?a.object(n):n,s=typeof o=="string"?a.object(o):o;a.moveCall({target:`${t}::rule::set_price`,arguments:[e,i,s,a.object(mn)],typeArguments:[r]})},ds=(a,t,e,n,o,r,i)=>{let s=typeof e=="string"?a.object(e):e,c=typeof n=="string"?a.object(n):n,l=typeof o=="string"?a.object(o):o,d=typeof r=="string"?a.object(r):r;a.moveCall({target:`${t}::rule::set_price`,arguments:[s,c,l,d,a.object(mn)],typeArguments:[i]})};var fn=async(...a)=>{let[t,e,n,o]=a;if(a.length===3&&n)return{obligationId:n};if(a.length===4&&n&&o)return{obligationId:n,obligationKey:o};let r=P(t),i=await Tt(e.query,r);if(i.length===0)throw new Error(`No obligation found for sender ${r}`);return{obligationId:i[0].id,obligationKey:i[0].keyId}},ls=({builder:a,txBlock:t})=>{let e={protocolPkg:a.address.get("core.packages.protocol.id"),market:a.address.get("core.market"),version:a.address.get("core.version"),coinDecimalsRegistry:a.address.get("core.coinDecimalsRegistry"),xOracle:a.address.get("core.oracles.xOracle")};return{openObligation:()=>t.moveCall({target:`${e.protocolPkg}::open_obligation::open_obligation`,arguments:[t.pure(e.version)]}),returnObligation:(n,o)=>t.moveCall({target:`${e.protocolPkg}::open_obligation::return_obligation`,arguments:[t.object(e.version),t.object(n),t.object(o)]}),openObligationEntry:()=>t.moveCall({target:`${e.protocolPkg}::open_obligation::open_obligation_entry`,arguments:[t.object(e.version)]}),addCollateral:(n,o,r)=>{let i=a.utils.parseCoinType(r);return t.moveCall({target:`${e.protocolPkg}::deposit_collateral::deposit_collateral`,arguments:[t.object(e.version),t.object(n),t.object(e.market),typeof o!="string"?o:t.pure(o)],typeArguments:[i]})},takeCollateral:(n,o,r,i)=>{let s=a.utils.parseCoinType(i);return t.moveCall({target:`${e.protocolPkg}::withdraw_collateral::withdraw_collateral`,arguments:[t.object(e.version),t.object(n),t.object(o),t.object(e.market),t.object(e.coinDecimalsRegistry),t.pure(r),t.object(e.xOracle),t.object(ot)],typeArguments:[s]})},deposit:(n,o)=>{let r=a.utils.parseCoinType(o);return t.moveCall({target:`${e.protocolPkg}::mint::mint`,arguments:[t.object(e.version),t.object(e.market),typeof n!="string"?n:t.pure(n),t.object(ot)],typeArguments:[r]})},depositEntry:(n,o)=>{let r=a.utils.parseCoinType(o);return t.moveCall({target:`${e.protocolPkg}::mint::mint_entry`,arguments:[t.object(e.version),t.object(e.market),typeof n!="string"?n:t.pure(n),t.object(ot)],typeArguments:[r]})},withdraw:(n,o)=>{let r=a.utils.parseCoinType(o);return t.moveCall({target:`${e.protocolPkg}::redeem::redeem`,arguments:[t.object(e.version),t.object(e.market),typeof n!="string"?n:t.pure(n),t.object(ot)],typeArguments:[r]})},withdrawEntry:(n,o)=>{let r=a.utils.parseCoinType(o);return t.moveCall({target:`${e.protocolPkg}::redeem::redeem_entry`,arguments:[t.object(e.version),t.object(e.market),typeof n!="string"?n:t.pure(n),t.object(ot)],typeArguments:[r]})},borrow:(n,o,r,i)=>{let s=a.utils.parseCoinType(i);return t.moveCall({target:`${e.protocolPkg}::borrow::borrow`,arguments:[t.object(e.version),t.object(n),t.object(o),t.object(e.market),t.object(e.coinDecimalsRegistry),t.pure(r),t.object(e.xOracle),t.object(ot)],typeArguments:[s]})},borrowEntry:(n,o,r,i)=>{let s=a.utils.parseCoinType(i);return t.moveCall({target:`${e.protocolPkg}::borrow::borrow_entry`,arguments:[t.object(e.version),t.object(n),t.object(o),t.object(e.market),t.object(e.coinDecimalsRegistry),t.pure(r),t.object(e.xOracle),t.object(ot)],typeArguments:[s]})},repay:(n,o,r)=>{let i=a.utils.parseCoinType(r);return t.moveCall({target:`${e.protocolPkg}::repay::repay`,arguments:[t.object(e.version),t.object(n),t.object(e.market),typeof o!="string"?o:t.pure(o),t.object(ot)],typeArguments:[i]})},borrowFlashLoan:(n,o)=>{let r=a.utils.parseCoinType(o);return t.moveCall({target:`${e.protocolPkg}::flash_loan::borrow_flash_loan`,arguments:[t.object(e.version),t.object(e.market),t.pure(n)],typeArguments:[r]})},repayFlashLoan:(n,o,r)=>{let i=a.utils.parseCoinType(r);return t.moveCall({target:`${e.protocolPkg}::flash_loan::repay_flash_loan`,arguments:[t.object(e.version),t.object(e.market),t.pure(n),t.object(o)],typeArguments:[i]})}}},M=({builder:a,txBlock:t})=>{let e=ls({builder:a,txBlock:t});return{normalMethod:e,addCollateralQuick:async(n,o,r)=>{let i=P(t),{obligationId:s}=await fn(t,a,r);if(o==="sui"){let[c]=t.splitCoins(t.gas,[n]);e.addCollateral(s,c,o)}else{let{leftCoin:c,takeCoin:l}=await a.selectCoin(t,o,n,i);e.addCollateral(s,l,o),t.transferObjects([c],i)}},takeCollateralQuick:async(n,o,r,i)=>{let s=await fn(t,a,r,i),c=await a.query.getObligationCoinNames(s.obligationId);return await bn(a,t,c),e.takeCollateral(s.obligationId,s.obligationKey,n,o)},depositQuick:async(n,o,r)=>{if(o==="sui"){let[c]=t.splitCoins(t.gas,[n]);return e.deposit(c,o)}let{leftCoin:i,takeCoin:s}=await a.selectCoin(t,o,n,r);return t.transferObjects([i],r),e.deposit(s,o)},withdrawQuick:async(n,o)=>{let r=P(t),i=a.utils.parseMarketCoinName(o),{leftCoin:s,takeCoin:c}=await a.selectMarketCoin(t,i,n,r);return t.transferObjects([s],r),e.withdraw(c,o)},borrowQuick:async(n,o,r,i)=>{let s=await fn(t,a,r,i),l=[...await a.query.getObligationCoinNames(s.obligationId),o];return await bn(a,t,l),e.borrow(s.obligationId,s.obligationKey,n,o)},repayQuick:async(n,o,r,i)=>{let s=await fn(t,a,r);if(o==="sui"){let[d]=t.splitCoins(t.gas,[n]);return e.repay(s.obligationId,d,o)}let{leftCoin:c,takeCoin:l}=await a.selectCoin(t,o,n,i);return t.transferObjects([c],i),e.repay(s.obligationId,l,o)},updateAssetPricesQuick:async n=>bn(a,t,n)}};import{SUI_CLOCK_OBJECT_ID as gn}from"@mysten/sui.js/utils";var Vo=async(...a)=>{let[t,e,n,o]=a;if(a.length===4&&o)return[o];let r=P(e),i=await zt(t.query,r);if(i[n].length===0)throw new Error(`No stake account id found for sender ${r}`);return i[n].map(s=>s.id)},us=async(...a)=>{let[t,e,n,o]=a,r=P(e),i=await zt(t.query,r);if(i[n].length===0)throw new Error(`No stake account found for sender ${r}`);return o?i[n].filter(c=>c.id===o):i[n]},ps=({builder:a,txBlock:t})=>{let e={spoolPkg:a.address.get("spool.id")};return{createStakeAccount:n=>{let o=a.utils.parseMarketCoinType(n),r=a.address.get(`spool.pools.${n}.id`);return t.moveCall({target:`${e.spoolPkg}::user::new_spool_account`,arguments:[t.object(r),t.object(gn)],typeArguments:[o]})},stake:(n,o,r)=>{let i=a.utils.parseMarketCoinType(r),s=a.address.get(`spool.pools.${r}.id`);t.moveCall({target:`${e.spoolPkg}::user::stake`,arguments:[t.object(s),t.object(n),typeof o=="string"?t.pure(o):o,t.object(gn)],typeArguments:[i]})},unstake:(n,o,r)=>{let i=a.utils.parseMarketCoinType(r),s=a.address.get(`spool.pools.${r}.id`);return t.moveCall({target:`${e.spoolPkg}::user::unstake`,arguments:[t.object(s),t.object(n),t.pure(o),t.object(gn)],typeArguments:[i]})},claim:(n,o)=>{let r=a.address.get(`spool.pools.${o}.id`),i=a.address.get(`spool.pools.${o}.rewardPoolId`),s=a.utils.parseMarketCoinType(o),c=dn[o],l=a.utils.parseCoinType(c);return t.moveCall({target:`${e.spoolPkg}::user::redeem_rewards`,arguments:[t.object(r),t.object(i),t.object(n),t.object(gn)],typeArguments:[s,l]})}}},lt=({builder:a,txBlock:t})=>{let e=ps({builder:a,txBlock:t});return{normalMethod:e,stakeQuick:async(n,o,r)=>{let i=P(t),s=await Vo(a,t,o,r),c=a.utils.parseMarketCoinType(o);if(typeof n=="number"){let l=await a.utils.selectCoinIds(n,c,i),[d,u]=a.utils.takeAmountFromCoins(t,l,n);e.stake(s[0],d,o),t.transferObjects([u],i)}else e.stake(s[0],n,o)},unstakeQuick:async(n,o,r)=>{let i=n,s=await us(a,t,o,r),c=[];for(let l=0;l<s.length;l++){if(s[l].staked===0)continue;let d=Math.min(i,s[l].staked),u=e.unstake(s[l].id,d,o);if(c.push(u),i-=d,i===0)break}return c},claimQuick:async(n,o)=>{let r=await Vo(a,t,n,o),i=[];return r.forEach(s=>{let c=e.claim(s,n);i.push(c)}),i}}};import{SUI_CLOCK_OBJECT_ID as Xt}from"@mysten/sui.js/utils";var ms=({builder:a,txBlock:t})=>{let e={pkgId:a.address.get("vesca.id"),table:a.address.get("vesca.table"),treasury:a.address.get("vesca.treasury"),config:a.address.get("vesca.config")};return{lockSca:(n,o)=>t.moveCall({target:`${e.pkgId}::ve_sca::mint_ve_sca_key`,arguments:[t.object(e.config),t.object(e.table),t.object(e.treasury),typeof n=="string"?t.pure(n):n,t.pure(o),t.object(Xt)]}),extendLockPeriod:(n,o)=>{t.moveCall({target:`${e.pkgId}::ve_sca::extend_lock_period`,arguments:[t.object(e.config),t.object(n),t.object(e.table),t.object(e.treasury),t.pure(o),t.object(Xt)]})},extendLockAmount:(n,o)=>{t.moveCall({target:`${e.pkgId}::ve_sca::lock_more_sca`,arguments:[t.object(e.config),t.object(n),t.object(e.table),t.object(e.treasury),typeof o=="string"?t.pure(o):o,t.object(Xt)]})},renewExpiredVeSca:(n,o,r)=>{t.moveCall({target:`${e.pkgId}::ve_sca::renew_expired_ve_sca`,arguments:[t.object(e.config),t.object(n),t.object(e.table),t.object(e.treasury),typeof o=="string"?t.pure(o):o,t.pure(r),t.object(Xt)]})},redeemSca:n=>t.moveCall({target:`${e.pkgId}::ve_sca::redeem`,arguments:[t.object(e.config),t.object(n),t.object(e.table),t.object(e.treasury),t.object(Xt)]})}},vt=({builder:a,txBlock:t})=>{let e=ms({builder:a,txBlock:t});return{normalMethod:e,lockScaQuick:async(n,o,r=!0)=>{let i=P(t),s=await dt(a,t),c,l=[];if(n!==void 0&&typeof n=="number"){let m=await a.utils.selectCoinIds(n,et,i),[f,y]=a.utils.takeAmountFromCoins(t,m,n);c=f,l.push(y)}else c=n;let d=a.utils.getUnlockAt(o,s?.unlockAt);r&&vo(n,o,d,s?.unlockAt),console.log(new Date(d*1e3).toLocaleString("en-CA",{hour12:!0}));let u=!s?.unlockAt,b=!u&&s.unlockAt*1e3<=new Date().getTime();if(u||b){if(c)if(u){let m=e.lockSca(c,d);l.push(m)}else{if(s.lockedScaAmount!==0){let m=e.redeemSca(s.keyId);l.push(m)}e.renewExpiredVeSca(s.keyId,c,d)}}else c&&o?(e.extendLockPeriod(s.keyId,d),e.extendLockAmount(s.keyId,c)):o?e.extendLockPeriod(s.keyId,d):c&&e.extendLockAmount(s.keyId,c);l.length>0&&t.transferObjects(l,i)},extendLockPeriodQuick:async(n,o,r=!0)=>{let i=await dt(a,t,o),s=a.utils.getUnlockAt(n);r&&Oo(n,s,i?.unlockAt),i&&e.extendLockPeriod(i.keyId,s)},extendLockAmountQuick:async(n,o,r=!0)=>{let i=P(t),s=await dt(a,t,o);if(r&&Po(n,s?.unlockAt),s){let c=await a.utils.selectCoinIds(n,et,i),[l,d]=a.utils.takeAmountFromCoins(t,c,n);e.extendLockAmount(s.keyId,l),t.transferObjects([d],i)}},renewExpiredVeScaQuick:async(n,o,r,i=!0)=>{let s=P(t),c=await dt(a,t,r),l=a.utils.getUnlockAt(o,c?.unlockAt);if(i&&Do(n,o,c?.unlockAt),c){let d=[];if(c.lockedScaAmount!==0){let f=e.redeemSca(c.keyId);d.push(f)}let u=await a.utils.selectCoinIds(n,et,s),[b,m]=a.utils.takeAmountFromCoins(t,u,n);d.push(m),e.renewExpiredVeSca(c.keyId,b,l),t.transferObjects(d,s)}},redeemScaQuick:async n=>{let o=P(t),r=await dt(a,t,n);if(It(r?.unlockAt),r){let i=e.redeemSca(r.keyId);t.transferObjects([i],o)}}}};var h=class{params;client;address;builder;query;utils;walletAddress;constructor(t,e){this.params=t,this.client=t.client,this.address=e?.address??new $({id:t?.addressesId||tt,network:t?.networkType}),this.query=e?.query??new kt(t,{address:this.address}),this.utils=e?.utils??new at(t,{address:this.address,query:this.query}),this.builder=e?.builder??new xt(t,{address:this.address,query:this.query,utils:this.utils}),this.walletAddress=bs(t.walletAddress)}init(t=!1){(t||!this.address.getAddresses())&&this.address.read(),this.builder.init(t,this.address),this.query.init(t,this.address),this.utils.init(t,this.address)}async getObligations(t){let e=t||this.walletAddress;return this.query.getObligations(e)}async getAllStakeAccounts(t){let e=t||this.walletAddress;return this.query.getAllStakeAccounts(e)}async getStakeAccounts(t,e){let n=e||this.walletAddress;return this.query.getStakeAccounts(t,n)}async getStakePool(t){return this.query.getStakePool(t)}async getStakeRewardPool(t){return this.query.getStakeRewardPool(t)}async openObligation(t){let e=new T,n=M({builder:this.builder,txBlock:e}),o=t||this.walletAddress;return e.setSender(o),n.normalMethod.openObligationEntry(),e}async depositCollateral(t,e,n,o){let r=new T,i=o||this.walletAddress;r.setSender(i);let s=M({builder:this.builder,txBlock:r}),c=await this.query.getObligations(i),l=n||c?.[0]?.id;if(l)await s.addCollateralQuick(e,t,l);else{let[d,u,b]=s.normalMethod.openObligation();await s.addCollateralQuick(e,t,d),s.normalMethod.returnObligation(d,b),r.transferObjects([u],i)}return r}async withdrawCollateral(t,e,n,o,r){let i=new T,s=M({builder:this.builder,txBlock:i}),c=r||this.walletAddress;i.setSender(c);let l=await s.takeCollateralQuick(e,t,n,o);return i.transferObjects([l],c),i}async deposit(t,e,n){let o=new T,r=M({builder:this.builder,txBlock:o}),i=n||this.walletAddress;o.splitCoins(o.gas,[e]),o.setSender(i);let s=await r.depositQuick(e,t,n);return o.transferObjects([s],i),o}async withdraw(t,e,n){let o=new T,r=n||this.walletAddress,i=M({builder:this.builder,txBlock:o});o.setSender(r);let s=await i.withdrawQuick(e,t);return o.transferObjects([s],r),o}async borrow(t,e,n,o,r){let i=new T,s=M({builder:this.builder,txBlock:i}),c=E({builder:this.builder,txBlock:i}),l=r||this.walletAddress;i.setSender(l);let d=wt.includes(t);d&&await c.unstakeObligationQuick(n,o);let u=await s.borrowQuick(e,t,n,o);return i.transferObjects([u],l),d&&await c.stakeObligationQuick(n,o),i}async borrowWithBoost(t,e,n,o,r,i){let s=new T,c=M({builder:this.builder,txBlock:s}),l=E({builder:this.builder,txBlock:s}),d=i||this.walletAddress;s.setSender(d);let u=wt.includes(t);u&&await l.unstakeObligationQuick(n,o);let b=await c.borrowQuick(e,t,n,o);return s.transferObjects([b],d),u&&await l.stakeObligationWithVeScaQuick(n,o,r),s}async repay(t,e,n,o,r){let i=new T,s=M({builder:this.builder,txBlock:i}),c=E({builder:this.builder,txBlock:i}),l=r||this.walletAddress;i.setSender(l);let d=wt.includes(t);return d&&await c.unstakeObligationQuick(n,o),await s.repayQuick(e,t,n),d&&await c.stakeObligationQuick(n,o),i}async createStakeAccount(t,e){let n=new T,o=lt({builder:this.builder,txBlock:n}),r=e||this.walletAddress;n.setSender(r);let i=o.normalMethod.createStakeAccount(t);return n.transferObjects([i],r),n}async supplyAndStake(t,e,n,o){let r=new T,i=M({builder:this.builder,txBlock:r}),s=lt({builder:this.builder,txBlock:r}),c=o||this.walletAddress;r.splitCoins(r.gas,[e]),r.setSender(c);let l=await i.depositQuick(e,t,o),d=this.utils.parseMarketCoinName(t);if(!Kt.find(m=>m===d))return r;let u=await this.query.getStakeAccounts(d,c),b=n||(u.length>0?u[0].id:void 0);if(b)await s.stakeQuick(l,d,b);else{let m=s.normalMethod.createStakeAccount(d);await s.stakeQuick(l,d,m),r.transferObjects([m],c)}return r}async unstakeAndWithdraw(t,e,n){let o=new T,r=M({builder:this.builder,txBlock:o}),i=lt({builder:this.builder,txBlock:o}),s=this.walletAddress,c=[];o.setSender(s);let l=this.utils.parseMarketCoinName(t);for(let d=0;d<n.length;d++){let u=n[d],[b]=await i.unstakeQuick(u.coin,l,u.id);if(b){let m=r.normalMethod.withdraw(b,t);c.push(m)}}if(e>0){let d=await r.withdrawQuick(e,t);c.push(d)}return o.transferObjects(c,s),o}async stake(t,e,n,o){let r=new T,i=lt({builder:this.builder,txBlock:r}),s=o||this.walletAddress;r.setSender(s);let c=await this.query.getStakeAccounts(t,s),l=n||(c.length>0?c[0].id:void 0);if(l)await i.stakeQuick(e,t,l);else{let d=i.normalMethod.createStakeAccount(t);await i.stakeQuick(e,t,d),r.transferObjects([d],s)}return r}async unstake(t,e,n,o){let r=new T,i=lt({builder:this.builder,txBlock:r}),s=o||this.walletAddress;r.setSender(s);let c=await i.unstakeQuick(e,t,n);return r.transferObjects(c,s),r}async claim(t,e,n,o){let r=new T,i=lt({builder:this.builder,txBlock:r}),s=E({builder:this.builder,txBlock:r}),c=o||this.walletAddress;r.setSender(c);let l={sui:[],sca:[]};for(let d=0;d<t.length;d++){let{stakeMarketCoinName:u,stakeAccountId:b}=t[d],m=i.normalMethod.claim(b,u);l.sui.push(m)}for(let d=0;d<e.length;d++){let{obligationId:u,obligationKey:b,rewardCoinName:m}=e[d],f=s.normalMethod.claimBorrowIncentive(u,b,m);l[m].push(f)}for(let d=0;d<n.length;d++){let{obligationId:u,obligationKey:b,rewardCoinName:m}=n[d],f=s.normalMethod.oldClaimBorrowIncentive(u,b,m);l[m].push(f)}return l.sui.length>0&&(l.sui.length>1&&r.mergeCoins(l.sui[0],l.sui.slice(1)),r.transferObjects([l.sui[0]],r.pure(c))),l.sca.length>0&&(l.sca.length>1&&r.mergeCoins(l.sca[0],l.sca.slice(1)),r.transferObjects([l.sca[0]],r.pure(c))),r}async stakeObligation(t,e,n){let o=this.builder.createTxBlock(),r=E({builder:this.builder,txBlock:o}),i=n||this.walletAddress;return o.setSender(i),await r.stakeObligationQuick(t,e),o}async unstakeObligation(t,e,n){let o=this.builder.createTxBlock(),r=E({builder:this.builder,txBlock:o}),i=n||this.walletAddress;return o.setSender(i),await r.unstakeObligationQuick(t,e),o}async stakeSca(t,e=!1,n=!1,o,r,i,s,c){let l=new T,d=vt({builder:this.builder,txBlock:l}),u=E({builder:this.builder,txBlock:l}),b=c||this.walletAddress;l.setSender(b);let m=await this.builder.utils.selectCoinIds(t,et,b),[f,y]=this.builder.utils.takeAmountFromCoins(l,m,t),k;return s?d.normalMethod.extendLockAmount(s,f):k=d.normalMethod.lockSca(f,i),o&&r&&(e&&(n?u.normalMethod.oldUnstakeObligation(o,r):u.normalMethod.unstakeObligation(o,r)),u.normalMethod.stakeObligationWithVesca(o,r,s||k)),s||l.transferObjects([k,y],b),l}async stakeMoreSca(t,e,n){let o=new T,r=n||this.walletAddress;return o.setSender(r),o}async extendStakeScaLockPeriod(t,e,n,o,r=!1,i=!1,s){let c=new T,l=vt({builder:this.builder,txBlock:c}),d=E({builder:this.builder,txBlock:c}),u=s||this.walletAddress;return c.setSender(u),l.normalMethod.extendLockPeriod(e,t),n&&o&&(r&&(i?d.normalMethod.oldUnstakeObligation(n,o):d.normalMethod.unstakeObligation(n,o)),d.normalMethod.stakeObligationWithVesca(n,o,e)),c}async extendPeriodAndStakeMoreSca(t,e,n,o,r,i=!1,s=!1,c){let l=new T,d=vt({builder:this.builder,txBlock:l}),u=E({builder:this.builder,txBlock:l}),b=c||this.walletAddress;l.setSender(b);let m=await this.builder.utils.selectCoinIds(t,et,b),[f,y]=this.builder.utils.takeAmountFromCoins(l,m,t);return d.normalMethod.extendLockPeriod(e,n),d.normalMethod.extendLockAmount(e,f),l.transferObjects([y],b),!o||!r||(i&&(s?u.normalMethod.oldUnstakeObligation(o,r):u.normalMethod.unstakeObligation(o,r)),u.normalMethod.stakeObligationWithVesca(o,r,e)),l}async renewExpiredStakeSca(t,e,n,o=!1,r,i,s=!1,c=!1,l){let d=new T,u=vt({builder:this.builder,txBlock:d}),b=E({builder:this.builder,txBlock:d}),m=l||this.walletAddress;if(d.setSender(m),o){let R=u.normalMethod.redeemSca(n);d.transferObjects([R],m)}let f=await this.builder.utils.selectCoinIds(t,et,m),[y,k]=this.builder.utils.takeAmountFromCoins(d,f,t);return d.transferObjects([k],m),u.normalMethod.renewExpiredVeSca(n,y,e),!r||!i||(s&&(c?b.normalMethod.oldUnstakeObligation(r,i):b.normalMethod.unstakeObligation(r,i)),b.normalMethod.stakeObligationWithVesca(r,i,n)),d}async withdrawUnlockedSca(t,e){let n=new T,o=vt({builder:this.builder,txBlock:n}),r=e||this.walletAddress;return n.setSender(r),await o.redeemScaQuick(t),n}calculateAvailableClaimCoin(t,e){let n=new Go(t.weightedAmount),r=e.currentPointIndex?Go(e.currentPointIndex-t.index).dividedBy(1e9):1;return n.multipliedBy(r).plus(t.points).shiftedBy(-1*e.coinDecimal)}};var hn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new h({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return n.init(),n.borrow(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new a(e)}};var yn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new h({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return await n.init(),n.borrowWithBoost(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,this.data.vescaKey,e.account.address)}static fromData(e){return new a(e)}};var Sn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new h({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return n.init(),n.claim(this.data.lendingIncentive,this.data.borrowIncentiveV2,this.data.borrowIncentive,e.account.address)}static fromData(e){return new a(e)}};var Cn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new h({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return n.init(),n.depositCollateral(this.data.collateralCoinName,Number(this.data.amount),this.data.obligationId,e.account.address)}static fromData(e){return new a(e)}};var wn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new h({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return n.init(),n.extendPeriodAndStakeMoreSca(this.data.amount,this.data.vescaKey,this.data.lockPeriodInDays,this.data.obligation,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new a(e)}};var In=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new h({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return n.init(),n.extendStakeScaLockPeriod(this.data.lockPeriodInDays,this.data.vescaKey,this.data.obligationId,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new a(e)}};var Tn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=e.network.split(":")[1],o=new h({client:e.suiClient,walletAddress:e.account.address,networkType:n});return o.init(),o.openObligation()}static fromData(e){return new a(e)}};var kn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new h({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return n.init(),n.renewExpiredStakeSca(this.data.amount,this.data.lockPeriodInDays,this.data.vescaKey,this.data.isHaveRedeem,this.data.obligation,this.data.obligationKey,this.data.isObligationLocked,this.data.isOldBorrowIncentive,e.account.address)}static fromData(e){return new a(e)}};var xn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new h({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return n.init(),n.repay(this.data.coinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new a(e)}};var An=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new h({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return n.init(),n.stakeSca(this.data.amount,this.data.isObligationLocked,this.data.isOldBorrowIncentive,this.data.obligationId,this.data.obligationKey,this.data.lockPeriodInDays,this.data.vescaKey,e.account.address)}static fromData(e){return new a(e)}};var vn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new h({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return n.init(),n.stake(this.data.marketCoinName,Number(this.data.amount),void 0,e.account.address)}static fromData(e){return new a(e)}};var On=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=e.network.split(":")[1],o=new h({client:e.suiClient,walletAddress:e.account.address,networkType:n});return o.init(),o.supplyAndStake(this.data.coinName,Number(this.data.amount),this.data.stakeAccountId,e.account.address)}static fromData(e){return new a(e)}};var Pn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=e.network.split(":")[1],o=new h({client:e.suiClient,walletAddress:e.account.address,networkType:n});return o.init(),o.deposit(this.data.coinName,Number(this.data.amount),e.account.address)}static fromData(e){return new a(e)}};var Dn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new h({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return n.init(),n.unstake(this.data.marketCoinName,Number(this.data.amount),void 0,e.account.address)}static fromData(e){return new a(e)}};var Rn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=e.network.split(":")[1],o=new h({client:e.suiClient,walletAddress:e.account.address,networkType:n});return o.init(),o.unstakeAndWithdraw(this.data.coinName,Number(this.data.amount),this.data.stakeAccountId)}static fromData(e){return new a(e)}};var jn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new h({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return n.init(),n.withdrawCollateral(this.data.collateralCoinName,Number(this.data.amount),this.data.obligationId,this.data.obligationKey,e.account.address)}static fromData(e){return new a(e)}};var Nn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=e.network.split(":")[1],o=new h({client:e.suiClient,walletAddress:e.account.address,networkType:n});return o.init(),o.withdraw(this.data.coinName,Number(this.data.amount),e.account.address)}static fromData(e){return new a(e)}};var _n=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new h({client:e.suiClient,walletAddress:e.account.address,networkType:e.network.split(":")[1]});return n.init(),n.withdrawUnlockedSca(this.data.vescaKey,e.account.address)}static fromData(e){return new a(e)}};var Bn=class{application="scallop";async deserialize(t){let e=new xt({client:t.suiClient,walletAddress:t.account.address,networkType:t.network.split(":")[1]});await e.init();let{transactionBlock:n}=t,r=new ln(n,e).decode();return{txType:fs.Other,txSubType:r.type,intentionData:r.intentionData}}async build(t){let{suiClient:e,account:n,network:o}=t,r;switch(t.txSubType){case"SupplyLending":r=Pn.fromData(t.intentionData);break;case"WithdrawLending":r=Nn.fromData(t.intentionData);break;case"Borrow":r=hn.fromData(t.intentionData);break;case"Repay":r=xn.fromData(t.intentionData);break;case"DepositCollateral":r=Cn.fromData(t.intentionData);break;case"WithdrawCollateral":r=jn.fromData(t.intentionData);break;case"OpenObligation":r=Tn.fromData(t.intentionData);break;case"StakeSpool":r=vn.fromData(t.intentionData);break;case"UnstakeSpool":r=Dn.fromData(t.intentionData);break;case"ClaimIncentiveReward":r=Sn.fromData(t.intentionData);break;case"BorrowWithBoost":r=yn.fromData(t.intentionData);break;case"StakeSca":r=An.fromData(t.intentionData);break;case"ExtendStakePeriod":r=In.fromData(t.intentionData);break;case"ExtendPeriodAndStakeMore":r=wn.fromData(t.intentionData);break;case"RenewExpStakePeriod":r=kn.fromData(t.intentionData);break;case"WithdrawStakedSca":r=_n.fromData(t.intentionData);break;case"SupplyAndStakeLending":r=On.fromData(t.intentionData);break;case"WithdrawAndUnstakeLending":r=Rn.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:n,network:o})}};import{TransactionType as As}from"@msafe/sui3-utils";import{TransactionType as Ot}from"@msafe/sui3-utils";import{bcs as Ko}from"@mysten/sui.js/bcs";import{normalizeStructTag as hs,normalizeSuiAddress as Jt}from"@mysten/sui.js/utils";var rt={PackageId:"0x9632f61a796fc54952d9151d80b319e066cba5498a27b495c99e113db09726b1"};var En=class{constructor(t){this.txb=t}get transactions(){return this.txb.blockData.transactions}decode(t){if(this.isAddLiquidityTransaction())return this.decodeAddLiquidity();if(this.isIncreaseLiquidityTransaction())return this.decodeIncreaseLiquidity(t);if(this.isDecreaseLiquidityTransaction())return this.decodeDecreaseLiquidity(t);if(this.isCollectFeeLiquidityTransaction())return this.decodeCollectFeeLiquidity();if(this.isCollectRewardLTransaction())return this.decodeCollectRewardLiquidity();if(this.isBurnTransaction())return this.decodeBurnLiquidity();throw new Error("Unknown transaction type")}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isAddLiquidityTransaction(){return!!this.getMoveCallTransaction(`${rt.PackageId}::position_manager::mint`)}isIncreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${rt.PackageId}::position_manager::increase_liquidity`)}isDecreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${rt.PackageId}::position_manager::decrease_liquidity`)}isCollectFeeLiquidityTransaction(){return!!this.getMoveCallTransaction(`${rt.PackageId}::position_manager::collect`)}isCollectRewardLTransaction(){return!!this.getMoveCallTransaction(`${rt.PackageId}::position_manager::collect_reward`)}isBurnTransaction(){return!!this.getMoveCallTransaction(`${rt.PackageId}::position_manager::burn`)}decodeAddLiquidity(){console.log(this.helper,"this.helper");let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeInputAddress(12),n=this.helper.decodeInputU64(8),o=this.helper.decodeInputU64(9),r=this.helper.decodeInputU32(4),i=this.helper.decodeInputBool(5),s=this.helper.decodeInputU32(6),c=this.helper.decodeInputBool(7);return{txType:Ot.Other,type:"AddLiquidity",intentionData:{pool:t,slippage:5,address:e,amountA:n,amountB:o,tickLower:i?-r:r,tickUpper:c?-s:s}}}decodeIncreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),n=this.helper.decodeSharedObjectId(4),o=this.helper.decodeInputU64(5),r=this.helper.decodeInputU64(6);return{txType:Ot.Other,type:"IncreaseLiquidity",intentionData:{pool:e,slippage:5,address:t,amountA:o,amountB:r,nft:n}}}decodeDecreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),n=this.helper.decodeSharedObjectId(2),o=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4),i=this.helper.decodeInputU64(5);return{txType:Ot.Other,type:"AddLiquidity",intentionData:{pool:e,decreaseLiquidity:o,nft:n,amountA:r,amountB:i,slippage:3,address:t}}}decodeCollectFeeLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputAddress(5),o=this.helper.decodeInputU64(3),r=this.helper.decodeInputU64(4);return{txType:Ot.Other,type:"CollectFee",intentionData:{pool:t,address:n,collectAmountA:o,collectAmountB:r,nft:e}}}decodeCollectRewardLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputAddress(5),o=this.collectRewardHelper.map(r=>r.decodeInputU64(5));return{txType:Ot.Other,type:"CollectReward",intentionData:{pool:t,address:n,rewardAmounts:o,nft:e}}}decodeBurnLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2);return{txType:Ot.Other,type:"Burn",intentionData:{pool:t,nft:e}}}get helper(){console.log(this.transactions,"this.transactions");let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target!=="0x2::coin::zero");return console.log(t,this.txb,"this.txb"),new Mn(t,this.txb)}get collectRewardHelper(){console.log(this.transactions,"this.transactions");let t=this.transactions.filter(e=>e.kind==="MoveCall"&&e.target===`${rt.PackageId}::position_manager::collect_reward`);return console.log(t,this.txb,"this.txb"),t.map(e=>new Mn(e,this.txb))}},Mn=class a{constructor(t,e){this.moveCall=t;this.txb=e}decodeSharedObjectId(t){let e=this.getInputParam(t);return a.getSharedObjectId(e)}decodeOwnedObjectId(t){let e=this.getInputParam(t);return a.getOwnedObjectId(e)}decodeInputU128(t){let e=this.decodePureArg(t,"u128");return Number(e)}decodeInputU64(t){let e=this.decodePureArg(t,"u64");return Number(e)}decodeInputU32(t){let e=this.decodePureArg(t,"u32");return Number(e)}decodeInputU8(t){let e=this.decodePureArg(t,"u8");return Number(e)}decodeInputAddress(t){let e=this.decodePureArg(t,"address");return Jt(e)}decodeInputString(t){return this.decodePureArg(t,"string")}decodeInputBool(t){return this.decodePureArg(t,"bool")}decodePureArg(t,e){let n=this.getInputParam(t);return a.getPureInputValue(n,e)}getInputParam(t){let e=this.moveCall.arguments[t];if(e.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[e.index]}static getPureInputValue(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value=="object"&&"Pure"in t.value){let n=t.value.Pure;return Ko.de(e,new Uint8Array(n))}return t.value}static getOwnedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value=="object"){if(!("Object"in t.value)||!("ImmOrOwned"in t.value.Object))throw new Error("not ImmOrOwned");return Jt(t.value.Object.ImmOrOwned.objectId)}return Jt(t.value)}static getSharedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value!="object")return Jt(t.value);if(!("Object"in t.value)||!("Shared"in t.value.Object))throw new Error("not Shared");return Jt(t.value.Object.Shared.objectId)}static getPureInput(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value!="object")return t.value;if(!("Pure"in t.value))throw new Error("Pure not in value");let n=t.value.Pure;return Ko.de(e,new Uint8Array(n))}typeArg(t){return hs(this.moveCall.typeArguments[t])}txArg(t){return this.moveCall.arguments[t]}};import{TurbosSdk as ys}from"turbos-clmm-sdk";var Ln=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new ys(e.network.replace("sui:",""),e.suiClient),{pool:o,address:r,amountA:i,amountB:s,slippage:c,tickLower:l,tickUpper:d,txb:u}=this.data;return n.pool.addLiquidity({pool:o,slippage:c,address:r,amountA:i,amountB:s,tickLower:l,tickUpper:d,txb:u})}static fromData(e){return new a(e)}};import{TurbosSdk as Ss}from"turbos-clmm-sdk";var Fn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new Ss(e.network.replace("sui:",""),e.suiClient),{pool:o,nft:r,txb:i}=this.data;return n.nft.burn({pool:o,nft:r,txb:i})}static fromData(e){return new a(e)}};import{TurbosSdk as Cs}from"turbos-clmm-sdk";var Wn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new Cs(e.network.replace("sui:",""),e.suiClient),{pool:o,address:r,nft:i,collectAmountA:s,collectAmountB:c,txb:l}=this.data;return n.pool.collectFee({pool:o,address:r,collectAmountA:s,collectAmountB:c,nft:i,txb:l})}static fromData(e){return new a(e)}};import{TurbosSdk as ws}from"turbos-clmm-sdk";var Un=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new ws(e.network.replace("sui:",""),e.suiClient),{pool:o,address:r,nft:i,rewardAmounts:s,txb:c}=this.data;return n.pool.collectReward({pool:o,address:r,rewardAmounts:s,nft:i,txb:c})}static fromData(e){return new a(e)}};import{TurbosSdk as Is}from"turbos-clmm-sdk";var qn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new Is(e.network.replace("sui:",""),e.suiClient),{fee:o,address:r,tickLower:i,tickUpper:s,sqrtPrice:c,slippage:l,coinTypeA:d,coinTypeB:u,amountA:b,amountB:m,txb:f}=this.data;return n.pool.createPool({fee:o,amountA:b,amountB:m,address:r,tickLower:i,tickUpper:s,sqrtPrice:c,slippage:l,coinTypeA:d,coinTypeB:u,txb:f})}static fromData(e){return new a(e)}};import{TurbosSdk as Ts}from"turbos-clmm-sdk";var $n=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new Ts(e.network.replace("sui:",""),e.suiClient),{pool:o,address:r,amountA:i,amountB:s,slippage:c,nft:l,decreaseLiquidity:d,txb:u}=this.data;return n.pool.decreaseLiquidity({pool:o,slippage:c,address:r,amountA:i,amountB:s,nft:l,decreaseLiquidity:d,txb:u})}static fromData(e){return new a(e)}};import{TurbosSdk as ks}from"turbos-clmm-sdk";var Qn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new ks(e.network.replace("sui:",""),e.suiClient),{pool:o,address:r,amountA:i,amountB:s,slippage:c,nft:l,txb:d}=this.data;return n.pool.increaseLiquidity({pool:o,slippage:c,address:r,amountA:i,amountB:s,nft:l,txb:d})}static fromData(e){return new a(e)}};import{TurbosSdk as xs}from"turbos-clmm-sdk";var Vn=class a extends p{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new xs(e.network.replace("sui:",""),e.suiClient),{pool:o,address:r,amountA:i,amountB:s,slippage:c,nft:l,decreaseLiquidity:d,collectAmountA:u,collectAmountB:b,rewardAmounts:m,txb:f}=this.data;return n.pool.removeLiquidity({pool:o,decreaseLiquidity:d,nft:l,amountA:i,amountB:s,slippage:c,address:r,collectAmountA:u,collectAmountB:b,rewardAmounts:m,txb:f})}static fromData(e){return new a(e)}};var Gn=class{application="turbos";async deserialize(t){let{transactionBlock:e,account:n}=t,r=new En(e).decode(n.address);return{txType:As.Other,txSubType:r.type,intentionData:r.intentionData}}async build(t){let{suiClient:e,account:n,network:o}=t,r;switch(t.txSubType){case"CreatePool":r=qn.fromData(t.intentionData);break;case"AddLiquidity":r=Ln.fromData(t.intentionData);break;case"IncreaseLiquidity":r=Qn.fromData(t.intentionData);break;case"DecreaseLiquidity":r=$n.fromData(t.intentionData);break;case"RemoveLiquidity":r=Vn.fromData(t.intentionData);break;case"CollectFee":r=Wn.fromData(t.intentionData);break;case"CollectReward":r=Un.fromData(t.intentionData);break;case"Burn":r=Fn.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:n,network:o})}};var vw=new rn([new He,new an,new Qe,new on,new ye,new Gn,new Bn]);export{vw as appHelpers};
|
|
1
|
+
var Qn=Object.defineProperty;var Ke=(a,t)=>{for(var e in t)Qn(a,e,{get:t[e],enumerable:!0})};import{TransactionType as Ia}from"@msafe/sui3-utils";import{TransactionType as Zn}from"@msafe/sui3-utils";import Yn from"sort-keys-recursive";var c=class{constructor(t){this.data=t}get application(){return"msafe-core"}serialize(){return JSON.stringify(Yn(this.data))}};import{CetusClmmSDK as Kn}from"@cetusprotocol/cetus-sui-clmm-sdk";var L={fullRpcUrl:"https://fullnode.mainnet.sui.io/",simulationAccount:{address:"0x326ce9894f08dcaa337fa232641cc34db957aec9ff6614c1186bc9a7508df0bb"},cetus_config:{package_id:"0x95b8d278b876cae22206131fb9724f701c9444515813042f54f0a426c9a3bc2f",published_at:"0x95b8d278b876cae22206131fb9724f701c9444515813042f54f0a426c9a3bc2f",config:{coin_list_id:"0x8cbc11d9e10140db3d230f50b4d30e9b721201c0083615441707ffec1ef77b23",launchpad_pools_id:"0x1098fac992eab3a0ab7acf15bb654fc1cf29b5a6142c4ef1058e6c408dd15115",clmm_pools_id:"0x15b6a27dd9ae03eb455aba03b39e29aad74abd3757b8e18c0755651b2ae5b71e",admin_cap_id:"0x39d78781750e193ce35c45ff32c6c0c3f2941fa3ddaf8595c90c555589ddb113",global_config_id:"0x0408fa4e4a4c03cc0de8f23d0c2bbfe8913d178713c9a271ed4080973fe42d8f",coin_list_handle:"0x49136005e90e28c4695419ed4194cc240603f1ea8eb84e62275eaff088a71063",launchpad_pools_handle:"0x5e194a8efcf653830daf85a85b52e3ae8f65dc39481d54b2382acda25068375c",clmm_pools_handle:"0x37f60eb2d9d227949b95da8fea810db3c32d1e1fa8ed87434fc51664f87d83cb"}},clmm_pool:{package_id:"0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb",published_at:"0xc33c3e937e5aa2009cc0c3fdb3f345a0c3193d4ee663ffc601fe8b894fbc4ba6",version:4,config:{pools_id:"0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0",global_config_id:"0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f",global_vault_id:"0xce7bceef26d3ad1f6d9b6f13a953f053e6ed3ca77907516481ce99ae8e588f2b",admin_cap_id:"0x89c1a321291d15ddae5a086c9abc533dff697fde3d89e0ca836c41af73e36a75"}},integrate:{package_id:"0x996c4d9480708fb8b92aa7acf819fb0497b5ec8e65ba06601cae2fb6db3312c3",published_at:"0xd43348b8879c1457f882b02555ba862f2bc87bcc31b16294ca14a82f608875d2",version:6},deepbook:{package_id:"0x000000000000000000000000000000000000000000000000000000000000dee9",published_at:"0x000000000000000000000000000000000000000000000000000000000000dee9"},deepbook_endpoint_v2:{package_id:"0x92aee86c01c79146d23938a00c7fff725ee0688c389be36d1bcbe03761b466c6",published_at:"0x92aee86c01c79146d23938a00c7fff725ee0688c389be36d1bcbe03761b466c6"},aggregatorUrl:"https://api-sui.cetus.zone/router",swapCountUrl:"https://api-sui.cetus.zone/v2/sui/swap/count"},T={launchpad:{package_id:"0x80d114c5d474eabc2eb2fcd1a0903f1eb5b5096a8dc4184d72453f7a9be728e4",published_at:"0x80d114c5d474eabc2eb2fcd1a0903f1eb5b5096a8dc4184d72453f7a9be728e4",config:{pools_id:"0xfd8d37f7a1276878972d240302c8efe32f577220c1bbc6c8984d8b60dddfcab3",admin_cap_id:"0x66c70d58c69353714cc6fe2d3a62492d605a96a9821e2bd8274de17219c69980",config_cap_id:"0x02b8d23f033687579966e182c776fe0287cacdbb18bff56c29f141e29a18a4d1"}},ido:{package_id:"0x1192c9e20b4b0a8848a73a8c711b43e38f7ea1f307b556aab6ffab4e982e9c59",published_at:"0x1192c9e20b4b0a8848a73a8c711b43e38f7ea1f307b556aab6ffab4e982e9c59",config:{pools_id:"0xefc209b47acf1f23b29d166440904600229e520ad36228aaf2329b7c16be9762",admin_cap_id:"0x281859d366951830aeeda90779aa170d8ee6845875545470d33ecb890e78c8ce",package_version_id:"0xc93dc996106770af5f4e979b6808518f8cee080f22f35b936f071f59d834bb22"}},xcetus:{package_id:"0x9e69acc50ca03bc943c4f7c5304c2a6002d507b51c11913b247159c60422c606",published_at:"0x9e69acc50ca03bc943c4f7c5304c2a6002d507b51c11913b247159c60422c606",config:{xcetus_manager_id:"0x838b3dbade12b1e602efcaf8c8b818fae643e43176462bf14fd196afa59d1d9d",lock_manager_id:"0x288b59d9dedb51d0bb6cb5e13bfb30885ecf44f8c9076b6f5221c5ef6644fd28",lock_handle_id:"0x7c534bb7b8a2cc21538d0dbedd2437cc64f47106cb4c259b9ff921b5c3cb1a49"}},xcetus_dividends:{package_id:"0x785248249ac457dfd378bdc6d2fbbfec9d1daf65e9d728b820eb4888c8da2c10",published_at:"0xcec352932edc6663a118e8d64ed54da6b8107e8719603bf728f80717592cd9e8",version:3,config:{dividend_manager_id:"0x721c990bfc031d074341c6059a113a59c1febfbd2faeb62d49dcead8408fa6b5",dividend_admin_id:"",dividend_settle_id:""}},cetus_faucet:{package_id:"0x6864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b",published_at:"0x6864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b"},xtoken:{package_id:"",published_at:"",config:{xtoken_manager_id:"",lock_manager_id:"",lock_handle_id:""}},xtoken_dividends:{package_id:"",published_at:"",config:{dividend_manager_id:"",dividend_admin_id:"",dividend_settle_id:""}},token_faucet:{package_id:"",published_at:""},booster:{package_id:"",published_at:"",config:{booster_config_id:"",booster_pool_handle:""}},maker_bonus:{package_id:"",published_at:"",config:{maker_config_id:"",maker_pool_handle:""}},liquidity_stratefy:{package_id:"",published_at:"",version:void 0,config:void 0},vaults:{package_id:"0xd3453d9be7e35efe222f78a810bb3af1859fd1600926afced8b4936d825c9a05",published_at:"0xd3453d9be7e35efe222f78a810bb3af1859fd1600926afced8b4936d825c9a05",version:1,config:{admin_cap_id:"0x78a42978709c4032fab7b33b782b5bcef64c1c6603250bf23644650b72144375",vaults_manager_id:"0x25b82dd2f5ee486ed1c8af144b89a8931cd9c29dee3a86a1bfe194fdea9d04a6",vaults_pool_handle:"0x9036bcc5aa7fd2cceec1659a6a1082871f45bc400c743f50063363457d1738bd"}},limit_order:{package_id:"",published_at:"",version:1,config:{rate_orders_indexer_id:"",rate_orders_indexer_handle:"",global_config_id:"",token_list_handle:"",user_orders_indexer_id:"",user_orders_indexer_handle:""}},frams:{package_id:"0x11ea791d82b5742cc8cab0bf7946035c97d9001d7c3803a93f119753da66f526",published_at:"0x11ea791d82b5742cc8cab0bf7946035c97d9001d7c3803a93f119753da66f526",version:1,config:{global_config_id:"0x21215f2f6de04b57dd87d9be7bb4e15499aec935e36078e2488f36436d64996e",rewarder_manager_id:"0xe0e155a88c77025056da08db5b1701a91b79edb6167462f768e387c3ed6614d5",rewarder_manager_handle:"0xb32e312cbb3367d6f3d2b4e57c9225e903d29b7b9f612dae2ddf75bdeb26a5aa",admin_cap_id:"0xf10fbf1fea5b7aeaa524b87769461a28c5c977613046360093673991f26d886c"}},haedal:{package_id:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d",published_at:"0x1d56b8ec33c3fae897eb7bb1acb79914e8152faed614868928e684c25c8b198d",version:1,config:{support_stakings:[{staking_id:"0x47b224762220393057ebf4f70501b6e657c3e56684737568439a04f80849b2ca",from_coin_type:"0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",to_coin_type:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI"}]}}};var S=new Kn(L),Ze=async(a,t,e)=>(console.log("getAddLiquidityTxb suiClient: ",e),console.log("getAddLiquidityTxb txbParams: ",a),S.senderAddress=t.address,await S.Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg)),tn=async(a,t,e)=>(console.log("getIncreaseLiquidityTxb suiClient: ",e),S.senderAddress=t.address,console.log("getIncreaseLiquidityTxb txbParams: ",a),await S.Position.createAddLiquidityFixTokenPayload(a?.parameter,a?.gasEstimateArg)),en=async(a,t,e)=>(console.log("getRemoveLiquidityTxb txbParams: ",a),console.log("getRemoveLiquidityTxb suiClient: ",e),S.senderAddress=t.address,await S.Position.closePositionTransactionPayload(a)),nn=async(a,t,e)=>(console.log("getDecreaseLiquidityTxb txbParams: ",a),console.log("getDecreaseLiquidityTxb suiClient: ",e),S.senderAddress=t.address,await S.Position.removeLiquidityTransactionPayload(a)),an=async(a,t,e)=>(console.log("getClaimFeeAndMiningTxb txbParams: ",a),console.log("getClaimFeeAndMiningTxb suiClient: ",e),S.senderAddress=t.address,await S.Rewarder.collectRewarderTransactionPayload(a));var dt=class a extends c{constructor(e){super(e);this.data=e}txType=Zn.Other;txSubType="OpenAndAddLiquidity";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("AddLiquidityIntention this.data: ",this.data),console.log("AddLiquidityIntention txbParams: ",o);let i=await Ze(o,n,r);return console.log("AddLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as ta}from"@msafe/sui3-utils";var pt=class a extends c{constructor(e){super(e);this.data=e}txType=ta.Other;txSubType="ClaimFeeAndMining";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("ClaimFeeAndMiningIntention this.data: ",this.data),console.log("ClaimFeeAndMiningIntention txbParams: ",o);let i=await an(o,n,r);return console.log("ClaimFeeAndMiningIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as ea}from"@msafe/sui3-utils";var ft=class a extends c{constructor(e){super(e);this.data=e}txType=ea.Other;txSubType="DecreaseLiquidity";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("DecreaseLiquidityIntention this.data: ",this.data),console.log("DecreaseLiquidityIntention txbParams: ",o);let i=await nn(o,n,r);return console.log("DecreaseLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as aa}from"@msafe/sui3-utils";import{CetusPeripherySDK as D}from"@cetusprotocol/cetus-periphery-sdk";import{CetusClmmSDK as na}from"@cetusprotocol/cetus-sui-clmm-sdk";var h=new na(L),rn=async(a,t,e)=>(console.log("getFarmingAddLiquidityTxb account: ",t),console.log("getFarmingAddLiquidityTxb suiClient: ",e),h.senderAddress=t.address,await new D(T,h).Farms.openPositionAddLiquidityStakePaylod(a)),on=async(a,t,e)=>(console.log("getFarmingIncreaseLiquidityTxb account: ",t),console.log("getFarmingIncreaseLiquidityTxb suiClient: ",e),h.senderAddress=t.address,await new D(T,h).Farms.addLiquidityFixCoinPayload(a)),sn=async(a,t,e)=>(console.log("getFarmingDecreaseLiquidityTxb account: ",t),console.log("getFarmingDecreaseLiquidityTxb suiClient: ",e),h.senderAddress=t.address,await new D(T,h).Farms.removeLiquidityPayload(a)),cn=async(a,t,e)=>(console.log("getFarmingRemoveLiquidityTxb account: ",t),console.log("getFarmingRemoveLiquidityTxb suiClient: ",e),h.senderAddress=t.address,await new D(T,h).Farms.removeLiquidityPayload(a)),ln=async(a,t,e)=>(console.log("getFarmingClaimFeeAndRewardTxb account: ",t),console.log("getFarmingClaimFeeAndRewardTxb suiClient: ",e),h.senderAddress=t.address,await new D(T,h).Farms.claimFeeAndClmmReward(a));var bt=async(a,t,e)=>(console.log("getFarmingBatchHarvest account: ",t),console.log("getFarmingBatchHarvest suiClient: ",e),h.senderAddress=t.address,await new D(T,h).Farms.batchHarvestPayload(a)),mn=async(a,t,e)=>(console.log("getFarmingStake account: ",t),console.log("getFarmingStake suiClient: ",e),h.senderAddress=t.address,await new D(T,h).Farms.depositPayload(a)),un=async(a,t,e)=>(console.log("getFarmingUnstake account: ",t),console.log("getFarmingUnstake suiClient: ",e),h.senderAddress=t.address,await new D(T,h).Farms.withdrawPayload(a));var gt=class a extends c{constructor(e){super(e);this.data=e}txType=aa.Other;txSubType="FarmingOpenAndAddLiquidity";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("FarmingAddLiquidityIntention this.data: ",this.data),console.log("FarmingAddLiquidityIntention txbParams: ",o);let i=await rn(o,n,r);return console.log("FarmingAddLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as ra}from"@msafe/sui3-utils";var yt=class a extends c{constructor(e){super(e);this.data=e}txType=ra.Other;txSubType="FarmingBatchHarvest";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("FarmingBatchHarvestIntention this.data: ",this.data),console.log("FarmingBatchHarvestIntention txbParams: ",o);let i=await bt(o,n,r);return console.log("FarmingBatchHarvestIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as oa}from"@msafe/sui3-utils";var ht=class a extends c{constructor(e){super(e);this.data=e}txType=oa.Other;txSubType="FarmingClaimFeeAndReward";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("FarmingClaimFeeAndRewardIntention this.data: ",this.data),console.log("FarmingClaimFeeAndRewardIntention txbParams: ",o);let i=await ln(o,n,r);return console.log("FarmingClaimFeeAndRewardIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as ia}from"@msafe/sui3-utils";var Tt=class a extends c{constructor(e){super(e);this.data=e}txType=ia.Other;txSubType="FarmingDecreaseLiquidity";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("FarmingDecreaseLiquidityIntention this.data: ",this.data),console.log("FarmingDecreaseLiquidityIntention txbParams: ",o);let i=await sn(o,n,r);return console.log("FarmingDecreaseLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as sa}from"@msafe/sui3-utils";var It=class a extends c{constructor(e){super(e);this.data=e}txType=sa.Other;txSubType="FarmingHarvest";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("FarmingHarvestIntention this.data: ",this.data),console.log("FarmingHarvestIntention txbParams: ",o);let i=Object.values(o);console.log("FarmingHarvestIntention params: ",i);let s=await bt(i,n,r);return console.log("FarmingHarvestIntention build txb: ",s),s}static fromData(e){return new a(e)}};import{TransactionType as ca}from"@msafe/sui3-utils";var Ct=class a extends c{constructor(e){super(e);this.data=e}txType=ca.Other;txSubType="FarmingIncreaseLiquidity";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("FarmingIncreaseLiquidityIntention this.data: ",this.data),console.log("FarmingIncreaseLiquidityIntention txbParams: ",o);let i=await on(o,n,r);return console.log("FarmingIncreaseLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as la}from"@msafe/sui3-utils";var St=class a extends c{constructor(e){super(e);this.data=e}txType=la.Other;txSubType="FarmingRemoveLiquidity";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("FarmingRemoveLiquidityIntention this.data: ",this.data),console.log("FarmingRemoveLiquidityIntention txbParams: ",o);let i=await cn(o,n,r);return console.log("FarmingRemoveLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as ma}from"@msafe/sui3-utils";var xt=class a extends c{constructor(e){super(e);this.data=e}txType=ma.Other;txSubType="FarmingStake";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("FarmingStakeIntention this.data: ",this.data),console.log("FarmingStakeIntention txbParams: ",o);let i=await mn(o,n,r);return console.log("FarmingStakeIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as ua}from"@msafe/sui3-utils";var wt=class a extends c{constructor(e){super(e);this.data=e}txType=ua.Other;txSubType="FarmingUnstake";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("FarmingUnstakeIntention this.data: ",this.data),console.log("FarmingUnstakeIntention txbParams: ",o);let i=await un(o,n,r);return console.log("FarmingUnstakeIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as da}from"@msafe/sui3-utils";var kt=class a extends c{constructor(e){super(e);this.data=e}txType=da.Other;txSubType="IncreaseLiquidity";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("IncreaseLiquidityIntention this.data: ",this.data),console.log("IncreaseLiquidityIntention txbParams: ",o);let i=await tn(o,n,r);return console.log("IncreaseLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as pa}from"@msafe/sui3-utils";var Dt=class a extends c{constructor(e){super(e);this.data=e}txType=pa.Other;txSubType="RemoveLiquidity";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("RemoveLiquidityIntention this.data: ",this.data),console.log("RemoveLiquidityIntention txbParams: ",o);let i=await en(o,n,r);return console.log("RemoveLiquidityIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as ba}from"@msafe/sui3-utils";import{CetusPeripherySDK as V}from"@cetusprotocol/cetus-periphery-sdk";import{CetusClmmSDK as fa}from"@cetusprotocol/cetus-sui-clmm-sdk";var x=new fa(L),dn=async(a,t,e)=>(console.log("getXcetusConvertTxb account: ",t),console.log("getXcetusConvertTxb suiClient: ",e),x.senderAddress=t.address,await new V(T,x).XCetusModule.convertPayload(a)),pn=async(a,t,e)=>(console.log("getXcetusRedeemLockTxb account: ",t),console.log("getXcetusRedeemLockTxb suiClient: ",e),x.senderAddress=t.address,await new V(T,x).XCetusModule.redeemLockPayload(a)),fn=async(a,t,e)=>(console.log("getXcetusClaimingStakeRewardsTxb account: ",t),console.log("getXcetusClaimingStakeRewardsTxb suiClient: ",e),x.senderAddress=t.address,await new V(T,x).XCetusModule.redeemDividendV2Payload(a.venft_id,a.bonus_types,a.xTokenType)),bn=async(a,t,e)=>(console.log("getXcetusCancelRedeemTxb account: ",t),console.log("getXcetusCancelRedeemTxb suiClient: ",e),x.senderAddress=t.address,await new V(T,x).XCetusModule.cancelRedeemPayload(a)),gn=async(a,t,e)=>(console.log("getXcetusRedeemTxb account: ",t),console.log("getXcetusRedeemTxb suiClient: ",e),x.senderAddress=t.address,await new V(T,x).XCetusModule.redeemPayload(a));var At=class a extends c{constructor(e){super(e);this.data=e}txType=ba.Other;txSubType="xCETUSCancelRedeem";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("XcetusCancelIntention this.data: ",this.data),console.log("XcetusCancelIntention txbParams: ",o);let i=await bn(o,n,r);return console.log("XcetusCancelIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as ga}from"@msafe/sui3-utils";var vt=class a extends c{constructor(e){super(e);this.data=e}txType=ga.Other;txSubType="xCETUSClaimStakingRwewards";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("XcetusClaimingStakeRewardsIntention this.data: ",this.data),console.log("XcetusClaimingStakeRewardsIntention txbParams: ",o);let i=await fn(o,n,r);return console.log("XcetusClaimingStakeRewardsIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as ya}from"@msafe/sui3-utils";var Pt=class a extends c{constructor(e){super(e);this.data=e}txType=ya.Other;txSubType="xCETUSConvert";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("XcetusConvertIntention this.data: ",this.data),console.log("XcetusConvertIntention txbParams: ",o);let i=await dn(o,n,r);return console.log("XcetusConvertIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as ha}from"@msafe/sui3-utils";var Bt=class a extends c{constructor(e){super(e);this.data=e}txType=ha.Other;txSubType="xCETUSRedeem";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("XcetusRedeemIntention this.data: ",this.data),console.log("XcetusRedeemIntention txbParams: ",o);let i=await gn(o,n,r);return console.log("XcetusRedeemIntention build txb: ",i),i}static fromData(e){return new a(e)}};import{TransactionType as Ta}from"@msafe/sui3-utils";var Ot=class a extends c{constructor(e){super(e);this.data=e}txType=Ta.Other;txSubType="xCETUSRedeemLock";async build(e){let{account:n,suiClient:r}=e,{txbParams:o}=this.data;console.log("XcetusRedeemLockIntention this.data: ",this.data),console.log("XcetusRedeemLockIntention txbParams: ",o);let i=await pn(o,n,r);return console.log("XcetusRedeemLockIntention build txb: ",i),i}static fromData(e){return new a(e)}};var Et=class{application="cetus";async deserialize(t){console.log("Cetus helper deserialize input: ",t);let{txbParams:e,action:n}=t;return{txType:Ia.Other,txSubType:n,intentionData:{txbParams:{...e},action:n}}}async build(t){let{suiClient:e,account:n}=t;console.log("helper build input: ",t),console.log("helper build input.intentionData: ",t.intentionData),console.log("helper build input.intentionData JSON: ",JSON.stringify(t.intentionData));let r;switch(t.txSubType){case"OpenAndAddLiquidity":r=dt.fromData(t.intentionData);break;case"IncreaseLiquidity":r=kt.fromData(t.intentionData);break;case"DecreaseLiquidity":r=ft.fromData(t.intentionData);break;case"RemoveLiquidity":r=Dt.fromData(t.intentionData);break;case"ClaimFeeAndMining":r=pt.fromData(t.intentionData);break;case"FarmingOpenAndAddLiquidity":r=gt.fromData(t.intentionData);break;case"FarmingIncreaseLiquidity":r=Ct.fromData(t.intentionData);break;case"FarmingDecreaseLiquidity":r=Tt.fromData(t.intentionData);break;case"FarmingRemoveLiquidity":r=St.fromData(t.intentionData);break;case"FarmingClaimFeeAndReward":r=ht.fromData(t.intentionData);break;case"FarmingHarvest":r=It.fromData(t.intentionData);break;case"FarmingBatchHarvest":r=yt.fromData(t.intentionData);break;case"FarmingStake":r=xt.fromData(t.intentionData);break;case"FarmingUnstake":r=wt.fromData(t.intentionData);break;case"xCETUSConvert":r=Pt.fromData(t.intentionData);break;case"xCETUSRedeemLock":r=Ot.fromData(t.intentionData);break;case"xCETUSClaimStakingRwewards":r=vt.fromData(t.intentionData);break;case"xCETUSCancelRedeem":r=At.fromData(t.intentionData);break;case"xCETUSRedeem":r=Bt.fromData(t.intentionData);break;default:throw new Error("not implemented")}return console.log("helper build intention: ",r),r.build({suiClient:e,account:n})}};import{TransactionType as hr}from"@msafe/sui3-utils";var Ee={};Ke(Ee,{contractId:()=>xa,default:()=>va,feeObjId:()=>Da,roleObjId:()=>wa,status:()=>Sa,transaction:()=>Ca,upgradeCapObjId:()=>Aa,vaultObjId:()=>ka});var Ca="DiBZq4UmVVYiRL6ZJmFKYoHcxtxqrhsCXSkFyT7wUr3j",Sa="success",xa="0x81c960dc653975fbd0072deca8afb92d322898c911622898ba1b2e3ad0c4bd8d",wa="0xc6ec0bdee0bb59a72077e9acd2f42457043cf47080b3d3fad4d39abf28bba63a",ka="0xbc4021387fbac149119fd24e92be9e58f745774292f3a2a12e2ac6daf5363e1d",Da="0x4178f63970fe2daeb256dc5730ad172e82b3e8eb45f31b33e0daae72cd35e1e1",Aa="0xe1e9aa7d222d151bfe6dd83358b0d7fdcb11260f710800cfaf7ccc1b1e245115",va={transaction:Ca,status:Sa,contractId:xa,roleObjId:wa,vaultObjId:ka,feeObjId:Da,upgradeCapObjId:Aa};var Re={};Ke(Re,{contractId:()=>Oa,default:()=>La,feeObjId:()=>ja,roleObjId:()=>Ea,status:()=>Ba,transaction:()=>Pa,upgradeCapObjId:()=>Fa,vaultObjId:()=>Ra});var Pa="855FNDV8o8Z3fWULPnQo9qdhLJpsg7wZrkCpNyfw9KfB",Ba="success",Oa="0xc357c3985e8fb875d6b37141497af660779aa1bab0ec489b2213efd74067d1fa",Ea="0x5ab49bdf9fd1413e328ef242b3f8d83dde791b38a0b627bfc87fb25c010d34f1",Ra="0xb483558770d8eb26007f193b75db40f0a45f2e36863a687625885d4de6993378",ja="0x48453fc4d7cde3fe35aad89e5dfb496608a6a55ea529a1c0274681a808627f94",Fa="0x34279779a0d0d36bd5044b04830d607fa1b0ecf316548c8ac3a44151e4f1a42a",La={transaction:Pa,status:Ba,contractId:Oa,roleObjId:Ea,vaultObjId:Ra,feeObjId:ja,upgradeCapObjId:Fa};var _a="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",Ma="https://sui-testnet.blockvision.org/v1/2Sgk89ivT64MnKdcGzjmyjY2ndD",Na="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",qa="https://sui-mainnet.blockvision.org/v1/2Sgk7NPvqkd7mESYkxF01yX15l7",Wa="https://bc3p6l5unl.execute-api.us-west-1.amazonaws.com/prod",Ua="https://rolsbkota7.execute-api.us-west-1.amazonaws.com/prod",Ga="https://6p6mkx33ne.execute-api.us-west-1.amazonaws.com/prod",$a="https://xrae3mrjv5.execute-api.us-west-1.amazonaws.com/prod",yn=Ee,hn=Re,Ha=new Map([["dev",{env:"dev",rpc:{url:_a},backend:{url:Wa},contract:yn}],["stg",{env:"stg",rpc:{url:Ma},backend:{url:Ua},contract:yn}],["prev",{env:"prev",rpc:{url:Na},backend:{url:Ga},contract:hn}],["prod",{env:"prod",rpc:{url:qa},backend:{url:$a},contract:hn}]]);function Tn(a,t){let e=Ha.get(a);if(!e)throw new Error(`Env not supported: ${a}`);return t&&t.rpc&&(e.rpc=t.rpc),t&&t.backend&&(e.backend=t.backend),t&&t.contract&&(e.contract=t.contract),e}import{SuiClient as za}from"@mysten/sui.js/client";var d=class extends Error{mpayErrorCode;context;constructor(t,e,n={}){let{cause:r,context:o}=n;r?super(`[MPay] ${e}: ${r}`):super(`[MPay] ${e}`),this.mpayErrorCode=t,this.context=o}};var Rt=class extends d{constructor(){super(11,"Backend is not specified")}};var jt=class extends d{constructor(){super(1,"Wallet not connected")}};import M,{AxiosError as Xa}from"axios";var _=class extends d{constructor(t,e){super(10,t,{context:e})}};var Ft=class a{constructor(t){this.apiURL=t}static parseResponseData(t){if(t instanceof Xa)throw new _(t.response?.statusText);if(t.status===200){if(t.data.success)return t.data.data;throw new _(t.data.code)}throw new _(t.status.toString())}async getIncomingStreams(t,e){let n=await M.post(`${this.apiURL}/stream`,{recipient:t,...e});return a.parseResponseData(n)}async getOutgoingStreams(t,e){let n=await M.post(`${this.apiURL}/stream`,{sender:t,...e});return a.parseResponseData(n)}async getStreamHistory(t){let e=await M.post(`${this.apiURL}/stream-events`,t),n=a.parseResponseData(e);return n.data.forEach(r=>{let o=r;return o.data.type==="create_stream"?o.data.balance=BigInt(o.data.balance):o.data.type==="cancel_stream"?o.data.withdrawAmount=BigInt(o.data.withdrawAmount):o.data.type==="claim"||o.data.type==="auto_claim"?o.data.claimAmount=BigInt(o.data.claimAmount):o.data.type==="set_auto_claim"&&(o.data.enabled=!!o.data.enabled),o.createdAt=new Date(o.createdAt),o}),n}async getAllCoinTypes(t){let e=await M.post(`${this.apiURL}/stream-info`,{address:t});return a.parseResponseData(e)}async getAllRecipients(t,e){let n=await M.post(`${this.apiURL}/stream-info`,{sender:t,status:e});return a.parseResponseData(n)}async getAllSenders(t,e){let n=await M.post(`${this.apiURL}/stream-info`,{recipient:t,status:e});return a.parseResponseData(n)}};var N=class a{signer;suiClient;envConfig;_backend;constructor(t){this.envConfig=t,this.suiClient=new za({url:t.rpc.url}),t.backend&&(this._backend=new Ft(t.backend.url))}static new(t,e){let n=Tn(t,e);return new a(n)}get walletType(){return this.wallet?this.wallet.type:"disconnected"}get backend(){if(!this._backend)throw new Rt;return this._backend}set backend(t){this._backend=t}connectWallet(t){this.signer=t}disconnect(){this.signer=void 0}get wallet(){if(!this.signer)throw new jt;return this.signer}async walletAddress(){return this.wallet.address()}};import{SUI_TYPE_ARG as fr,normalizeStructTag as br,normalizeSuiAddress as Gn}from"@mysten/sui.js/utils";import{TransactionBlock as Wt}from"@mysten/sui.js/transactions";import{TransactionBlock as vn}from"@mysten/sui.js/transactions";import{SUI_TYPE_ARG as Pn,normalizeStructTag as Ya}from"@mysten/sui.js/utils";var je=50n,Lt=10000n,In=25n,Fe=100000000n;var w=class{constructor(t){this.object=t}moveArg(t){return t.object(this.object)}},J=class{constructor(t){this.objects=t}moveArgs(t){return t.makeMoveVec({objects:this.objects.map(e=>t.object(e))})}},P=class a{constructor(t){this.result=t;return new Proxy(this,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(e,n){if(n in e)return Reflect.get(e,n);let r=i=>new a(e.result[i]);if(n===Symbol.iterator)return function*(){let i=0;for(;;)yield r(i),i++};if(typeof n=="symbol")return;let o=parseInt(n,10);if(!(Number.isNaN(o)||o<0))return r(o)}})}moveArg(){return this.result}};import{Buffer as Cn}from"buffer";import{normalizeSuiAddress as Va}from"@mysten/sui.js/utils";var Q=class extends d{constructor(t,e){super(3,t,{context:e})}};var _t=class{constructor(t){this.results=t}callResult(t){return this.results.results[t]}returnValue(t,e){return t.returnValues[e]}getValue(t=0,e=0){let n=this.callResult(t);return this.returnValue(n,e)}getAddress(t=0,e=0){let[n,r]=this.getValue(t,e);if(r!=="address")throw new Q("Invalid contract return type.",{ctx:{expectType:"address",gotType:r}});return Va(Cn.from(n).toString("hex"))}getU64(t=0,e=0){let[n,r]=this.getValue(t,e);if(r!=="u64")throw new Q("Invalid contract return type.",{ctx:{expectType:"u64",gotType:r}});return Cn.from(n).readBigInt64LE()}};import{bcs as xn}from"@mysten/sui.js/bcs";var f=class extends d{constructor(t,e,n){super(2,`Invalid input: ${t}`,{context:{fieldKey:e,fieldValue:n}})}};var wn={groupId:"string",name:"string"},Ja=64;function kn(a){return Dn(a),xn.ser(wn,a).toString("base64")}function Y(a){let t=xn.de(wn,a,"base64");return Dn(t),t}function Dn(a){if(!Sn(a.name))throw new f("Invalid metadata: Name contains unknown character");if(!Sn(a.groupId))throw new f("Invalid metadata: Group ID contains unknown character");if(a.name.length>Ja)throw new f("Invalid metadata: Name exceed max length 64")}function Sn(a){return/^[\x00-\x7F]+$/.test(a)}import{normalizeStructTag as Mt}from"@mysten/sui.js/utils";function Nt(a,t){return Mt(a)===Mt(t)}function B(a,t){return Mt(a)===Mt(t)}var qt="txn.gas";import{nanoid as Qa}from"nanoid";function An(){return Qa()}var j=class a{constructor(t,e,n){this.globals=t;this.feeContract=e;this.streamContract=n}static convertCreateStreamInfoToInternal(t){return{metadata:kn({name:t.name,groupId:An()}),coinType:Ya(t.coinType),recipients:t.recipients.map(e=>({address:e.address,cliffAmount:e.cliffAmount,amountPerEpoch:e.amountPerStep})),epochInterval:t.interval,numberEpoch:t.steps,startTime:t.startTimeMs,cancelable:t.cancelable}}async buildCreateStreamTransactionBlock(t){let e=new vn,n=this.calculateFeesInternal(t),r=this.getCreateStreamCoinRequests(t,n),o=await this.wallet.requestCoins(r),i=await this.addMergeCoins(e,o[0]),s;r.length>1?s=await this.addMergeCoins(e,o[1]):s=i;for(let l=0;l<t.recipients.length;l++){let u=t.recipients[l],b=this.amountForRecipient(u,t.numberEpoch),p=this.getStreamFeeLocal(b),[R]=e.splitCoins(i,[e.pure(b+p,"u64")]),[z]=e.splitCoins(s,[e.pure(this.flatSuiFee,"u64")]);this.streamContract.createStream(e,{paymentCoin:new P(R),flatFeeCoin:new P(z),metadata:t.metadata,recipient:u.address,timeStart:t.startTime,cliff:u.cliffAmount,epochInterval:t.epochInterval,numEpoch:t.numberEpoch,amountPerEpoch:u.amountPerEpoch,cancelable:t.cancelable,coinType:t.coinType})}return e}calculateCreateStreamFees(t){let e=a.convertCreateStreamInfoToInternal(t);return this.calculateFeesInternal(e)}feeParams(){return{createFeePercent:{numerator:je,denominator:Lt},claimFeePercent:{numerator:In,denominator:Lt},flatFeePerStream:Fe}}async addMergeCoins(t,e){let n;return e.mergedCoins&&e.mergedCoins.length?(t.mergeCoins(t.object(e.primaryCoin),e.mergedCoins.map(r=>t.object(r))),n=t.object(e.primaryCoin)):e.primaryCoin===qt?n=t.gas:n=t.object(e.primaryCoin),n}getCreateStreamCoinRequests(t,e){let n=t.coinType;return Nt(n,Pn)?[{coinType:n,amount:e.totalAmount+e.streamFeeAmount+e.flatFeeAmount}]:[{coinType:n,amount:e.totalAmount+e.streamFeeAmount},{coinType:Pn,amount:e.flatFeeAmount}]}calculateFeesInternal(t){let e=t.recipients.reduce((r,o)=>{let i=this.amountForRecipient(o,t.numberEpoch),s=this.getStreamFeeLocal(i);return{totalAmount:r.totalAmount+i,streamFeeAmount:r.streamFeeAmount+s}},{totalAmount:0n,streamFeeAmount:0n});return{flatFeeAmount:BigInt(t.recipients.length)*this.flatSuiFee,...e}}amountForRecipient(t,e){return BigInt(t.amountPerEpoch)*BigInt(e)+BigInt(t.cliffAmount)}get flatSuiFee(){return Fe}getStreamFeeLocal(t){return t*je/Lt}async getStreamFeeRemote(t){let e=this.feeContract.streamingFee(new vn,t),n=await this.globals.suiClient.devInspectTransactionBlock({sender:await this.globals.walletAddress(),transactionBlock:e});return new _t(n).getU64()}get wallet(){return this.globals.wallet}};import{Transactions as On}from"@mysten/sui.js/transactions";var Bn="0x0000000000000000000000000000000000000000000000000000000000000006";var q=class{constructor(t,e,n){this.moduleName=t;this.config=e;this.globals=n}addContractCall(t,e){let n=`${this.config.contractId}::${this.moduleName}::${e.method}`;return t.add(On.MoveCall({target:n,arguments:e.arguments.map(r=>r instanceof J?r.moveArgs(t):r instanceof w?r.moveArg(t):r instanceof P?r.moveArg():t.pure(r)),typeArguments:e.typeArgs})),t}addTransactionBlock(t,e,n=[],r=[]){t.add(On.MoveCall({target:e,arguments:n.map(o=>o instanceof J?o.moveArgs(t):o instanceof w?o.moveArg(t):o instanceof P?o.moveArg():t.pure(o)),typeArguments:r}))}makeObject(t){return typeof t=="string"?new w(t):t}vaultObject(){return new w(this.config.vaultObjId)}roleObject(){return new w(this.config.roleObjId)}feeObject(){return new w(this.config.feeObjId)}clockObject(){return new w(Bn)}};var W=class a extends q{constructor(e,n){super(a.ModuleName,e,n);this.config=e;this.globals=n}static ModuleName="fee_module";static MethodName={set_streaming_fee:"set_streaming_fee",set_claim_fee:"set_claim_fee",set_streaming_flat_fee:"set_streaming_flat_fee",streaming_flat_fee:"streaming_flat_fee",streaming_fee:"streaming_fee",claim_fee:"claim_fee",fee_denominator:"fee_denominator"};setStreamingFee(e,n){let r=this.roleObject(),o=this.feeObject();return this.addContractCall(e,{method:a.MethodName.set_streaming_fee,arguments:[r,o,n],typeArgs:[]})}setStreamingFlatFee(e,n){let r=this.roleObject(),o=this.feeObject();return this.addContractCall(e,{method:a.MethodName.set_streaming_flat_fee,arguments:[r,o,n],typeArgs:[]})}setClaimFee(e,n){let r=this.roleObject(),o=this.feeObject();return this.addContractCall(e,{method:a.MethodName.set_claim_fee,arguments:[r,o,n],typeArgs:[]})}streamingFee(e,n){let r=this.feeObject();return this.addContractCall(e,{method:a.MethodName.streaming_fee,arguments:[r,n],typeArgs:[]})}claimFee(e,n){return this.addContractCall(e,{method:a.MethodName.claim_fee,arguments:[this.feeObject(),n],typeArgs:[]})}feeDenominator(e){return this.addContractCall(e,{method:a.MethodName.fee_denominator,arguments:[this.feeObject()],typeArgs:[]})}};var k=class a extends q{constructor(e,n){super(a.ModuleName,e,n);this.config=e;this.globals=n}static ModuleName="stream";static MethodName={create_stream:"create_stream",set_auto_claim:"set_auto_claim",cancel_stream:"cancel_stream",claim_stream:"claim_stream",claim_stream_by_proxy:"claim_stream_by_proxy",stream_current_epoch:"stream_current_epoch",now_milli_seconds:"now_milli_seconds"};createStream(e,n){let r=this.feeObject(),o=this.vaultObject(),i=this.makeObject(n.paymentCoin),s=this.makeObject(n.flatFeeCoin),l=this.clockObject();return this.addContractCall(e,{method:a.MethodName.create_stream,arguments:[r,o,i,s,n.metadata,n.recipient,n.timeStart,n.cliff,n.epochInterval,n.numEpoch,n.amountPerEpoch,n.cancelable,l],typeArgs:[n.coinType]})}setAutoClaim(e,n){let r=this.makeObject(n.streamId);return this.addContractCall(e,{method:a.MethodName.set_auto_claim,arguments:[r,n.enabled],typeArgs:[n.coinType]})}cancelStream(e,n){let r=this.makeObject(n.streamId),o=this.clockObject();return this.addContractCall(e,{method:a.MethodName.cancel_stream,arguments:[r,o],typeArgs:[n.coinType]})}claimStream(e,n){let r=this.makeObject(n.streamId),o=this.clockObject();return this.addContractCall(e,{method:a.MethodName.claim_stream,arguments:[r,o],typeArgs:[n.coinType]})}claimStreamByProxy(e,n){let r=this.makeObject(n.streamId),o=this.vaultObject(),i=this.feeObject(),s=this.clockObject();return this.addContractCall(e,{method:a.MethodName.claim_stream_by_proxy,arguments:[r,o,i,s],typeArgs:[n.coinType]})}get createStreamTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.create_stream}`}get setAutoClaimTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.set_auto_claim}`}get cancelStreamTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.cancel_stream}`}get claimStreamTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.claim_stream}`}get claimStreamByProxyTarget(){return`${this.config.contractId}::${a.ModuleName}::${a.MethodName.claim_stream_by_proxy}`}};var U=class{constructor(t){this.globals=t;let e=t.envConfig.contract;this.feeContract=new W(e,t),this.streamContract=new k(e,t)}feeContract;streamContract;async createStreams(t){let e=j.convertCreateStreamInfoToInternal(t);return this.createStreamHelper().buildCreateStreamTransactionBlock(e)}createStreamHelper(){return new j(this.globals,this.feeContract,this.streamContract)}setAutoClaim(t,e,n){let r=new Wt;return this.streamContract.setAutoClaim(r,{streamId:t,enabled:e,coinType:n})}claimStream(t,e){let n=new Wt;return this.streamContract.claimStream(n,{streamId:t,coinType:e})}claimStreamByProxy(t,e){let n=new Wt;return this.streamContract.claimStreamByProxy(n,{streamId:t,coinType:e})}cancelStream(t,e){let n=new Wt;return this.streamContract.cancelStream(n,{streamId:t,coinType:e}),n}};var y=class extends d{constructor(t,e={}){super(0,t,e)}};async function _e(a){let t=[];for(;await a.hasNext();){let e=await a.next();t.push(e)}return t&&Array.isArray(t[0])?t.flat(1):t}var Le=class{constructor(t){this.requester=t;this.curPage=void 0,this.init=!0}curPage;init;async hasNext(){if(this.init)return this.curPage||(this.curPage=await this.requester.doNextRequest()),!!this.curPage.data?.length||this.curPage.hasNext;if(!this.curPage)throw new Error("invalid implementation of iterator");return this.curPage.hasNext}async next(){return this.init?(this.init=!1,this.curPage||(this.curPage=await this.requester.doNextRequest()),this.curPage.data):(this.curPage=await this.requester.doNextRequest(),this.curPage.data)}},G=class{constructor(t){this.requester=t;this.pager=new Le(t),this.curData=[],this.cursor=0}cursor;pager;curData;async hasNext(){return this.cursor<this.curData.length-1?!0:this.pager.hasNext()}async next(){for(this.cursor+=1;this.cursor>=this.curData.length;)if(await this.pager.hasNext())this.curData=await this.pager.next(),this.cursor=0;else throw new Error("not more data");return this.curData[this.cursor]}};var Ut=class extends d{constructor(e,n,r){super(4,`Not enough balance: ${e}`,{context:{coinType:e,requestAmount:n,gotAmount:r}});this.coinType=e;this.requestAmount=n;this.gotAmount=r}};var Ka=25;async function En(a,t,e,n="0x2::sui::SUI",r=Ka){let o=new Me(a,t,n,r),i=BigInt(0),s=[];for(;await o.hasNext()&&i<e;){let l=await o.next();l&&(s.push(l),i+=BigInt(l.balance))}if(i<e)throw new Ut(n,e,i);return s}var Me=class extends G{constructor(e,n,r,o){super(new Ne(e,n,r,o));this.suiClient=e;this.owner=n;this.coinType=r;this.reqPageSize=o}},Ne=class{constructor(t,e,n,r){this.suiClient=t;this.owner=e;this.coinType=n;this.reqPageSize=r;if(r<=0)throw new y("Invalid reqPageSize")}nextCursor;async doNextRequest(){let t=await this.suiClient.getCoins({owner:this.owner,coinType:this.coinType,cursor:this.nextCursor,limit:this.reqPageSize});return this.nextCursor=t.nextCursor,{data:t.data,hasNext:t.hasNextPage}}};import{TransactionBlock as Xt}from"@mysten/sui.js/transactions";import{normalizeStructTag as jn,parseStructTag as er}from"@mysten/sui.js/utils";import{DateTime as nr}from"luxon";var Gt=class extends d{constructor(){super(7,"Connected wallet is not creator")}};var K=class extends d{constructor(){super(8,"Connected wallet is not recipient")}};var Z=class extends d{constructor(t,e){super(6,t,{context:e})}};var $t=class extends d{constructor(t){super(5,"Stream not found",{context:{streamId:t}})}};import{DateTime as Za,Duration as tr}from"luxon";var Rn=(1n<<64n)-1n,Ht=1e3;function qe(a){let t;typeof a=="number"?t=a:typeof a=="bigint"?t=Number(a):t=a.toMillis();let e=Math.round(t/Ht);return Za.fromMillis(e*Ht)}function We(a){let t;typeof a=="number"?t=a:typeof a=="bigint"?t=Number(a):t=a.toMillis();let e=Math.round(t/Ht);return tr.fromMillis(e*Ht)}var O=class a{constructor(t,e,n){this.globals=t;this.streamId=e;this.rawData=n;this.streamContract=new k(t.envConfig.contract,t)}streamContract;type="Stream";static async new(t,e){let n=await a.fetchStreamData(t,e);return new a(t,e,n)}static fromObjectData(t,e,n){let r=a.parseRawStreamData(e,n);return new a(t,e,r)}get info(){return{name:this.name,creator:this.creator,coinType:this.coinType,totalAmount:this.totalAmount,start:this.timeStart,end:this.timeEnd,cancelable:this.cancelable,cliffAmount:this.cliff,duration:this.duration,interval:this.interval,steps:this.totalSteps,nextReleaseDate:this.nextReleaseDate,nextReleaseAmount:this.nextReleaseAmount,groupId:this.groupId,streamId:this.streamId,recipient:this.recipient,progress:this.progress,autoClaim:this.autoClaim}}get groupCommonInfo(){return{name:this.name,groupId:this.groupId,creator:this.creator,start:this.timeStart,interval:this.interval,steps:this.totalSteps,cancelable:this.cancelable}}async refresh(){this.rawData=await a.fetchStreamData(this.globals,this.streamId)}refreshWithData(t){if(t.data?.objectId!==this.streamId)throw new y("Object Id does not align");this.rawData=a.parseRawStreamData(this.streamId,t)}async historyEvents(t){return this.globals.backend.getStreamHistory({streamId:this.streamId,pagination:t})}async cancel(){if(await this.globals.walletAddress()!==this.creator)throw new Gt;let t=new Xt;return this.streamContract.cancelStream(t,{streamId:this.streamId,coinType:this.coinType}),t}async claim(){if(await this.globals.walletAddress()!==this.recipient)throw new K;let t=new Xt;return this.streamContract.claimStream(t,{streamId:this.streamId,coinType:this.coinType}),t}async setAutoClaim(t){if(await this.globals.walletAddress()!==this.recipient)throw new K;let e=new Xt;return this.streamContract.setAutoClaim(e,{streamId:this.streamId,coinType:this.coinType,enabled:t}),e}async claimByProxy(){let t=new Xt;return this.streamContract.claimStreamByProxy(t,{streamId:this.streamId,coinType:this.coinType}),t}get wallet(){return this.globals.wallet}get client(){return this.globals.suiClient}get coinType(){return jn(this.rawData.coinType)}get progress(){return{status:this.streamStatus,total:this.totalAmount,streamed:this.streamedAmount,claimed:this.claimedAmount,claimable:this.claimable,canceled:this.canceledAmount}}get balance(){return this.rawData.balance}get autoClaim(){return this.rawData.autoClaim}get amountPerEpoch(){return this.rawData.config.amountPerEpoch}get cancelable(){return this.rawData.config.cancelable}get cliff(){return this.rawData.config.cliff}get creator(){return this.rawData.config.creator}get interval(){return We(this.rawData.config.epochInterval)}get groupId(){let{metadata:t}=this.rawData.config;return Y(t).groupId}get name(){let{metadata:t}=this.rawData.config;return Y(t).name}get recipient(){return this.rawData.config.recipient}get timeStart(){return qe(this.rawData.config.timeStart)}get duration(){let t=this.rawData.config,e=t.epochInterval*t.totalEpoch;return We(e)}get timeEnd(){return this.timeStart.plus(this.duration)}get totalSteps(){return this.rawData.config.totalEpoch}get claimable(){return this.streamedAmount-this.claimedAmount}get nextReleaseDate(){return this.currentEpoch===-1n?this.timeStart:this.currentEpoch>=this.totalSteps||this.isCanceled?null:qe((this.currentEpoch+1n)*this.rawData.config.epochInterval+this.rawData.config.timeStart)}get nextReleaseAmount(){return this.currentEpoch===-1n?this.cliff:this.currentEpoch>=this.totalSteps||this.isCanceled?null:this.amountPerEpoch}get streamStatus(){let t=this.rawData.status.status;return t===16?"CANCELED":t===17?"SETTLED":t===1?"COMPLETED":this.currentEpoch>=this.totalSteps?"STREAMED":"STREAMING"}get streamedAmount(){return this.currentEpoch===-1n?0n:this.isCanceled?this.rawData.status.epochCanceled*this.amountPerEpoch+this.cliff:this.currentEpoch*this.amountPerEpoch+this.cliff}get claimedAmount(){return this.rawData.status.epochClaimed===Rn?0n:this.rawData.status.epochClaimed*this.amountPerEpoch+this.cliff}get currentEpoch(){let t=nr.now().toMillis(),e=this.timeStart.toMillis();if(t<e)return-1n;let n=Math.floor((t-e)/Number(this.rawData.config.epochInterval));return BigInt(n)>Number(this.rawData.config.totalEpoch)?this.rawData.config.totalEpoch:BigInt(n)}get totalAmount(){let t=this.rawData.config;return t.amountPerEpoch*t.totalEpoch+t.cliff}get isCanceled(){let t=this.rawData.status.status;return t===16||t===17}get canceledAmount(){return this.isCanceled?this.totalAmount-this.streamedAmount:0n}static async fetchStreamData(t,e){let n=await t.suiClient.getObject({id:e,options:{showContent:!0,showType:!0}});return a.parseRawStreamData(e,n)}static parseRawStreamData(t,e){if(e.error)throw e.error.code==="notExists"?new $t(t):new Z(`get stream data: ${e.error.code}`,{streamId:t,...e.error});let n=e.data.content;if(n.dataType!=="moveObject")throw new Z("Unexpected object type",{gotType:n.dataType});let{typeParams:r}=er(n.type),o=jn(r[0]),i=n.fields,s=i.config.fields,l=i.status.fields;return{coinType:o,autoClaim:i.auto_claim,balance:BigInt(i.balance.fields.balance),config:{amountPerEpoch:BigInt(s.amount_per_epoch),cancelable:s.cancelable,cliff:BigInt(s.cliff),creator:s.creator,epochInterval:BigInt(s.epoch_interval),metadata:s.metadata,recipient:s.recipient,timeStart:BigInt(s.time_start),totalEpoch:BigInt(s.total_epoch)},status:{status:l.status,epochCanceled:BigInt(l.epoch_canceled),epochClaimed:BigInt(l.epoch_claimed)}}}};import{normalizeStructTag as Ue,SUI_TYPE_ARG as ar}from"@mysten/sui.js/utils";import{Duration as Fn}from"luxon";var zt=class extends d{constructor(t,e){super(12,`Transaction failed: ${e}`,{context:{status:t,msg:e}})}};var rr=1e3,Vt=class{constructor(t){this.globals=t;this.coinMetaHelper=new Ge(t.suiClient),this.createStreamHelper=new U(t).createStreamHelper()}coinMetaHelper;createStreamHelper;getStreamIdsFromCreateStreamResponse(t){if(t.effects?.status.status!=="success")throw new zt(t.effects?.status.status,t.effects?.status.error);return t.objectChanges.filter(e=>e.type==="created"&&e.objectType.startsWith(`${this.globals.envConfig.contract.contractId}::stream::Stream`)).map(e=>e.objectId)}calculateCreateStreamFees(t){return this.createStreamHelper.calculateCreateStreamFees(t)}feeParams(){return this.createStreamHelper.feeParams()}calculateStreamAmount(t){if(t.steps===0n)throw new f("Invalid stream steps: 0");let e=t.cliff?t.cliff:{numerator:0n,denominator:100n},n=t.totalAmount*e.numerator/e.denominator,r=(t.totalAmount-n)/t.steps,i={realTotalAmount:r*t.steps+n,cliffAmount:n,amountPerStep:r};return this.validateStreamAmount(i,t.totalAmount),i}calculateTimelineByInterval(t){if(t.steps===0n)throw new f("Invalid stream steps: 0");let e=t.timeStart.plus(t.interval.toMillis()*Number(t.steps)),n={timeStart:t.timeStart,timeEnd:e,interval:t.interval,steps:t.steps};return this.validateTimeline(n),n}calculateTimelineByTotalDuration(t){if(t.steps===0n)throw new f("Invalid stream steps: 0");let e=BigInt(t.total.toMillis())/t.steps,n=t.timeStart.plus(Fn.fromMillis(Number(e*t.steps))),r={timeStart:t.timeStart,timeEnd:n,interval:Fn.fromMillis(Number(e)),steps:t.steps};return this.validateTimeline(r),r}async getBalance(t,e){let n=await this.globals.suiClient.getBalance({owner:t,coinType:e}),r=await this.getCoinMeta(e);return{...n,coinType:Ue(n.coinType),coinMeta:r}}async getAllBalance(t){let e=await this.globals.suiClient.getAllBalances({owner:t}),n=await Promise.all(e.map(r=>this.getCoinMeta(r.coinType)));return e.map((r,o)=>({...r,coinType:Ue(r.coinType),coinMeta:n[o]}))}async getCoinMeta(t){return this.coinMetaHelper.getCoinMeta(t)}async simulateTransactionBlock(t){return this.globals.suiClient.devInspectTransactionBlock({transactionBlock:t,sender:await this.globals.wallet.address()})}validateStreamAmount(t,e){if(t.amountPerStep===0n)throw new f("Stream amount too small","totalAmount",e);if(t.cliffAmount>t.realTotalAmount)throw new f("Invalid cliff settings")}validateTimeline(t){if(t.interval.toMillis()<rr)throw new f("Interval shall be at least 1 second","interval",t.interval)}},Ge=class{constructor(t){this.suiClient=t;this.coinMetaReg=new Map}coinMetaReg;async getCoinMeta(t){let e=Ue(t||ar);if(this.coinMetaReg.has(e))return this.coinMetaReg.get(e);let n=await this.queryCoinMeta(e);return n&&this.coinMetaReg.set(e,n),n}async queryCoinMeta(t){return await this.suiClient.getCoinMetadata({coinType:t})||void 0}};import{normalizeStructTag as Ln,normalizeSuiAddress as Qt}from"@mysten/sui.js/utils";import{DateTime as _n}from"luxon";var $=class extends d{constructor(t,e){super(9,`Invalid stream group: ${t}`,{context:e})}};var or=25;async function He(a,t,e){let n=new tt(t),r=new et(a,n,e);return await _e(r)}var tt=class{constructor(t){this.ids=t;this.cursor=-1}cursor;async hasNext(){return this.cursor<this.ids.length-1}async next(){if(this.cursor+=1,this.cursor>=this.ids.length)throw new Error("invalid iterator implementation");return this.ids[this.cursor]}},et=class extends G{constructor(e,n,r){super(new $e(e,n,r));this.suiClient=e;this.idIter=n;this.options=r}},$e=class{constructor(t,e,n){this.suiClient=t;this.stringIter=e;this.options=n;this.filter=n?.filter,this.pageSize=n?.pageSize||or,this.objectOptions=n?.objectOptions||{showType:!0,showContent:!0}}filter;pageSize;objectOptions;async doNextRequest(){let t=[];for(;t.length<this.pageSize&&await this.stringIter.hasNext();){let o=await this.stringIter.next();o&&t.push(o)}let e=await this.suiClient.multiGetObjects({ids:t,options:this.objectOptions}),n;if(this.filter){let{filter:r}=this;n=e.filter(o=>r?.(o))}else n=e;return{data:n,hasNext:await this.stringIter.hasNext()}}};var Jt=class a{constructor(t,e){this.globals=t;this.streams=e;if(e.length===0)throw new $("stream size 0");let n=e.map(o=>o.groupId);if(new Set(n).size!==1)throw new f("Stream does not have same group ID")}type="StreamGroup";static async new(t,e){let n=await He(t.suiClient,e);return n.forEach(r=>{if(!r)throw new y("stream group object data undefined")}),a.newFromObjectResponse(t,e,n)}static async newFromObjectResponse(t,e,n){let r=await a.parseGroupStreams(t,e,n);return new a(t,r)}static checkStreamGroup(t){let e=t.map(o=>o.groupCommonInfo),n=e[0],r=!0;return e.forEach(o=>{ir(n,o)||(r=!1)}),r}async refresh(){let t=await He(this.globals.suiClient,this.streams.map(e=>e.streamId));this.streams.forEach((e,n)=>{e.refreshWithData(t[n])})}get groupId(){return this.streams[0].groupId}get creator(){return this.streams[0].creator}get info(){return{groupId:this.groupId,streamIds:this.streams.map(t=>t.streamId),progress:this.progress,name:this.streams[0].name,creator:this.creator,coinType:this.streams[0].coinType,totalAmount:this.streams.reduce((t,e)=>t+e.totalAmount,0n),start:this.streams[0].timeStart,end:this.streams[0].timeEnd,cancelable:this.streams[0].cancelable,cliffAmount:this.streams.reduce((t,e)=>t+e.cliff,0n),duration:this.streams[0].duration,interval:this.streams[0].interval,steps:this.streams[0].totalSteps,nextReleaseAmount:this.streams.reduce((t,e)=>e.nextReleaseAmount===null?t:t+e.nextReleaseAmount,0n),nextReleaseDate:this.streams[0].nextReleaseDate}}get progress(){return{total:this.streams.reduce((t,e)=>t+e.totalAmount,0n),streamed:this.streams.reduce((t,e)=>t+e.streamedAmount,0n),claimed:this.streams.reduce((t,e)=>t+e.claimedAmount,0n),claimable:this.streams.reduce((t,e)=>t+e.claimable,0n),canceled:this.streams.reduce((t,e)=>t+e.canceledAmount,0n)}}async historyEvents(t){return this.globals.backend.getStreamHistory({groupId:this.groupId,pagination:t})}static async parseGroupStreams(t,e,n){let r=n.map((o,i)=>O.fromObjectData(t,e[i],o)).filter(o=>!!o);if(new Set(r.map(o=>o.groupId)).size!==1)throw new $("Not same group ID");if(!this.checkStreamGroup(r))throw new $("Not same stream settings");return r}};function ir(a,t){return a.name===t.name&&a.groupId===t.groupId&&a.creator===t.creator&&a.start.toMillis()===t.start.toMillis()&&a.interval.toMillis()===t.interval.toMillis()&&a.steps===t.steps&&a.cancelable===t.cancelable}var nt=class a{constructor(t,e){this.it=t;this.pageSize=e}static async newIncoming(t){let e=await Yt.newIncoming(t);return new a(e,t.pageSize)}static async newOutgoing(t){let e=await Yt.newOutgoing(t);return new a(e,t.pageSize)}async hasNext(){return this.it.hasNext()}async next(){let t=[];for(;t.length<this.pageSize&&await this.it.hasNext();)t.push(await this.it.next());return t}},Yt=class a{constructor(t){this.requester=t}cachedNext;static async newIncoming(t){let e=await Kt.newIncomingQuery(t);return new a(e)}static async newOutgoing(t){let e=await Kt.newOutgoingQuery(t);return new a(e)}async hasNext(){return this.cachedNext===void 0&&(this.cachedNext=await this.requester.doNextRequest()),this.cachedNext!==null}async next(){if(this.cachedNext===void 0){let e=await this.requester.doNextRequest();if(e===null)throw new y("No more results");return e}let t=this.cachedNext;if(this.cachedNext=void 0,t===null)throw new y("No more results");return t}},Kt=class a{constructor(t,e,n,r){this.globals=t;this.recipient=e;this.groupRefs=n;this.query=r;this.current=0;let o=new tt(n.flat().map(i=>i.streamId));this.objectIter=new et(t.suiClient,o)}current=0;objectIter;static async newIncomingQuery(t){let e=ur(t.query),n=await t.globals.walletAddress(),o=(await t.globals.backend.getIncomingStreams(n,e)).filter(s=>Qt(s.recipient)===Qt(n)),i=Mn(o);return new a(t.globals,n,i,t.query)}static async newOutgoingQuery(t){let e=dr(t.query),n=await t.globals.walletAddress(),r=await t.globals.backend.getOutgoingStreams(n,e),o=Mn(r);return new a(t.globals,n,o,t.query)}async doNextRequest(){if(this.current>=this.groupRefs.length)return null;let t=this.groupRefs[this.current];if(t.length===1){let e=await lr(this.globals,t[0].streamId,this.objectIter);return this.current++,Nn(e,this.query)?e:this.doNextRequest()}if(t.length>1){let e=await mr(this.globals,t.map(n=>n.streamId),this.objectIter);return this.current++,cr(e,this.query)?e:this.doNextRequest()}throw new y("Stream group with no stream")}};function Mn(a){let t=new Map;return a.forEach(e=>{let n=t.get(e.groupId);n?(n.push(e),t.set(e.groupId,n)):t.set(e.groupId,[e])}),Array.from(t.values()).sort((e,n)=>_n.fromISO(n[0].createDate).toMillis()-_n.fromISO(e[0].createDate).toMillis())}function Nn(a,t){if(t===void 0)return!0;let e=sr(a,t.status);if(t&&"claimable"in t&&t.claimable!==void 0){let n=t.claimable?a.progress.claimable!==0n:a.progress.claimable===0n;return e&&n}return e}function sr(a,t){return t===void 0?!0:Array.isArray(t)?t.includes(a.progress.status):a.progress.status===t}function cr(a,t){if(!t)return!0;let e=!1;return a.streams.forEach(n=>{Nn(n,t)&&(e=!0)}),e}async function lr(a,t,e){let n=await qn(e,t);return O.fromObjectData(a,t,n)}async function mr(a,t,e){let n=[];for(;n.length<t.length;){let r=await qn(e,t[n.length]);n.push(r)}return Jt.newFromObjectResponse(a,t,n)}async function qn(a,t){if(!await a.hasNext())throw new y("object iterator has been consumed");let e=await a.next();if(!e||e.error||e.data===void 0||e.data===null)throw new y("object iterator undefined response",{cause:e?.error});if(e?.data?.objectId!==t)throw new y("stream id not aligned");return e}function ur(a){return{status:Xe(a?.status),coinType:Wn(a?.coinType),sender:Un(a?.sender)}}function dr(a){return{status:Xe(a?.status),coinType:Wn(a?.coinType),recipient:Un(a?.recipient)}}function Xe(a){return a===void 0||a.length===0?"all":Array.isArray(a)?a.reduce((t,e)=>{let n=Xe(e);return!t||t===n?n:"all"},void 0):pr(a)}function pr(a){switch(a){case"STREAMING":case"STREAMED":case"CANCELED":return"active";case"COMPLETED":case"SETTLED":return"inactive";default:throw new f("Unknown stream filtered status")}}function Wn(a){if(a)return Array.isArray(a)?a.length!==0?a.map(t=>Ln(t)):void 0:Ln(a)}function Un(a){if(a)return Array.isArray(a)?a.length!==0?a.map(t=>Qt(t)):void 0:Qt(a)}var ze=class{constructor(t){this.msafe=t}get type(){return"msafe"}async address(){return this.msafe.address()}async requestCoins(t){return this.msafe.requestCoins(t)}},Zt=class{constructor(t){this.account=t}async address(){return this.account.address}},Ve=class{constructor(t,e){this.singleWallet=t;this.suiClient=e}get type(){return"single"}async address(){return this.singleWallet.address()}async requestCoins(t){return Promise.all(t.map(e=>this.requestCoin(e)))}async requestCoin(t){if(Nt(t.coinType,fr))return{primaryCoin:qt};if(t.amount<=0)throw new f("Invalid coin request","coinAmount",t.amount);let e=await En(this.suiClient,await this.address(),t.amount,t.coinType);if(e.length===0)throw new y("no coins available");return{primaryCoin:e[0].coinObjectId,mergedCoins:e.slice(1).map(n=>n.coinObjectId)}}},te=class{globals;helper;constructor(t,e){this.globals=N.new(t,e),this.helper=new Vt(this.globals)}connectSingleWallet(t){let e=new Ve(t,this.globals.suiClient);this.globals.connectWallet(e)}connectMSafeAccount(t){let e=new ze(t);this.globals.connectWallet(e)}async createStream(t){return this.builder().createStreams(t)}async getStream(t){return O.new(this.globals,t)}async getIncomingStreams(t,e=10){return nt.newIncoming({globals:this.globals,query:t,pageSize:e})}async getOutgoingStreams(t,e=10){return nt.newOutgoing({globals:this.globals,query:t,pageSize:e})}async getCoinTypesForStreamFilter(){let t=await this.wallet.address();return(await this.globals.backend.getAllCoinTypes(t)).map(n=>br(n))}async getRecipientsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllRecipients(e,t)).map(r=>Gn(r))}async getCreatorsForStreamFilter(t){let e=await this.wallet.address();return(await this.globals.backend.getAllSenders(e,t)).map(r=>Gn(r))}get wallet(){return this.globals.wallet}builder(){return new U(this.globals)}};import gr from"sort-keys-recursive";var ee=class{constructor(t){this.data=t}serialize(){return JSON.stringify(gr(this.data))}};var C=class extends ee{application="mpay";getClient(t,e){let n=new te(t==="sui:mainnet"?"prod":"dev");return n.connectSingleWallet(new Zt(e)),n}};var at=class extends C{constructor(e){super(e);this.data=e}txType=hr.Stream;txSubType="Cancel";async build(e){let{network:n,account:r}=e;return(await this.getClient(n,r).getStream(this.data.streamId)).cancel()}};import{TransactionType as Tr}from"@msafe/sui3-utils";var rt=class extends C{constructor(e){super(e);this.data=e}txType=Tr.Stream;txSubType="ClaimByProxy";async build(e){let{network:n,account:r}=e;return(await this.getClient(n,r).getStream(this.data.streamId)).claimByProxy()}};import{TransactionType as Ir}from"@msafe/sui3-utils";var ot=class extends C{constructor(e){super(e);this.data=e}txType=Ir.Stream;txSubType="Claim";async build(e){let{network:n,account:r}=e;return(await this.getClient(n,r).getStream(this.data.streamId)).claim()}};import{TransactionType as Cr}from"@msafe/sui3-utils";var it=class extends C{constructor(e){super(e);this.data=e}txType=Cr.Stream;txSubType="CreateStream";async build(e){let{network:n,account:r}=e;return this.getClient(n,r).createStream(this.data)}};import{bcs as $n}from"@mysten/sui.js/bcs";import{normalizeStructTag as Sr,normalizeSuiAddress as st}from"@mysten/sui.js/utils";var H=class a{constructor(t,e){this.moveCall=t;this.txb=e}decodeSharedObjectId(t){let e=this.getInputParam(t);return a.getSharedObjectId(e)}decodeOwnedObjectId(t){let e=this.getInputParam(t);return a.getOwnedObjectId(e)}decodeInputU64(t){let e=this.decodePureArg(t,"u64");return BigInt(e)}decodeInputAddress(t){let e=this.decodePureArg(t,"address");return st(e)}decodeInputString(t){return this.decodePureArg(t,"string")}decodeInputBool(t){return this.decodePureArg(t,"bool")}decodePureArg(t,e){let n=this.getInputParam(t);return a.getPureInputValue(n,e)}getInputParam(t){let e=this.moveCall.arguments[t];if(e.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[e.index]}static getPureInputValue(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value=="object"&&"Pure"in t.value){let n=t.value.Pure;return $n.de(e,new Uint8Array(n))}return t.value}static getOwnedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value=="object"){if(!("Object"in t.value)||!("ImmOrOwned"in t.value.Object))throw new Error("not ImmOrOwned");return st(t.value.Object.ImmOrOwned.objectId)}return st(t.value)}static getSharedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value!="object")return st(t.value);if(!("Object"in t.value)||!("Shared"in t.value.Object))throw new Error("not Shared");return st(t.value.Object.Shared.objectId)}static getPureInput(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value!="object")return t.value;if(!("Pure"in t.value))throw new Error("Pure not in value");let n=t.value.Pure;return $n.de(e,new Uint8Array(n))}typeArg(t){return Sr(this.moveCall.typeArguments[t])}txArg(t){return this.moveCall.arguments[t]}};var ne=class{constructor(t,e){this.globals=t;this.txb=e}decode(){let t=this.decodeCreateStreamInfo(),e=this.createStreamHelper().calculateCreateStreamFees(t);return{type:"CreateStream",info:t,fees:e}}decodeCreateStreamInfo(){let e=this.createStreamTransactions().map(n=>this.getCreationInfoFromMoveCall(n));return this.aggregateGroupStreamInfo(e)}createStreamTransactions(){let t=this.transactions.filter(e=>e.kind==="MoveCall"&&B(e.target,this.contract.createStreamTarget));if(t.length===0)throw new y("No create stream transactions");return t.map(e=>new H(e,this.txb))}getCreationInfoFromMoveCall(t){let e=t.decodeInputString(4),{name:n,groupId:r}=Y(e),o=t.decodeInputAddress(5),i=t.decodeInputU64(6),s=t.decodeInputU64(7),l=t.decodeInputU64(8),u=t.decodeInputU64(9),b=t.decodeInputU64(10),p=t.decodeInputBool(11),R=t.typeArg(0);return{name:n,groupId:r,recipient:o,timeStart:i,cliff:s,epochInterval:l,totalEpoch:u,amountPerEpoch:b,cancelable:p,coinType:R}}aggregateGroupStreamInfo(t){if(new Set(t.map(r=>JSON.stringify({name:r.name,groupId:r.groupId,timeStart:String(r.timeStart),epochInterval:String(r.epochInterval),totalEpoch:String(r.totalEpoch),cancelable:r.cancelable,coinType:r.coinType}))).size!==1)throw new f("Stream group not have common info");let n=t.map(r=>({address:r.recipient,amountPerStep:r.amountPerEpoch,cliffAmount:r.cliff}));return{name:t[0].name,coinType:t[0].coinType,recipients:n,interval:t[0].epochInterval,steps:t[0].totalEpoch,startTimeMs:t[0].timeStart,cancelable:t[0].cancelable}}mergeCoinTransactions(){return this.transactions.filter(t=>t.kind==="MergeCoins")}get transactions(){return this.txb.blockData.transactions}get contract(){return new k(this.globals.envConfig.contract,this.globals)}get feeContract(){return new W(this.globals.envConfig.contract,this.globals)}createStreamHelper(){return new j(this.globals,this.feeContract,this.contract)}getInputArg(t){if(t.kind!=="Input")throw new Error("not input type");return"value"in t?t:this.txb.blockData.inputs[t.index]}};var ae=class{constructor(t,e){this.globals=t;this.txb=e;this.contract=new k(t.envConfig.contract,t)}contract;decode(){if(this.isCreateStreamTransaction())return this.decodeCreateStreamTransaction();if(this.isClaimByProxyTransaction())return this.decodeClaimByProxyTransaction();if(this.isSetAutoClaimTransaction())return this.decodeSetAutoClaimTransaction();if(this.isCancelStreamTransaction())return this.decodeCancelStreamTransaction();if(this.isClaimStreamTransaction())return this.decodeClaimTransaction();throw new Error("Unknown stream transaction type")}get transactions(){return this.txb.blockData.transactions}isCreateStreamTransaction(){return this.transactions.findIndex(e=>e.kind==="MoveCall"&&B(e.target,this.contract.createStreamTarget))!==-1}isSetAutoClaimTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&B(this.transactions[0].target,this.contract.setAutoClaimTarget)}isCancelStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&B(this.transactions[0].target,this.contract.cancelStreamTarget)}isClaimStreamTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&B(this.transactions[0].target,this.contract.claimStreamTarget)}isClaimByProxyTransaction(){return this.transactions.length===1&&this.transactions[0].kind==="MoveCall"&&B(this.transactions[0].target,this.contract.claimStreamByProxyTarget)}decodeCreateStreamTransaction(){return new ne(this.globals,this.txb).decode()}decodeSetAutoClaimTransaction(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeInputBool(1);return{type:"SetAutoClaim",streamId:t,enabled:e}}decodeClaimTransaction(){let t=this.helper.decodeSharedObjectId(0);return{type:"Claim",streamId:t}}decodeClaimByProxyTransaction(){let t=this.helper.decodeSharedObjectId(0);return{type:"ClaimByProxy",streamId:t}}decodeCancelStreamTransaction(){let t=this.helper.decodeSharedObjectId(0);return{type:"Cancel",streamId:t}}get helper(){let t=this.transactions[0];return new H(t,this.txb)}};import{TransactionType as xr}from"@msafe/sui3-utils";var ct=class extends C{constructor(e){super(e);this.data=e}txType=xr.Stream;txSubType="SetAutoClaim";async build(e){let{network:n,account:r}=e;return(await this.getClient(n,r).getStream(this.data.streamId)).setAutoClaim(this.data.enabled)}};var re=class{application="mpay";async deserialize(t){let{network:e,transactionBlock:n}=t,r=N.new(e==="sui:mainnet"?"prod":"dev"),i=new ae(r,n).decode(),s;switch(i.type){case"CreateStream":s=new it(i.info);break;case"SetAutoClaim":s=new ct({streamId:i.streamId,enabled:i.enabled});break;case"Claim":s=new ot({streamId:i.streamId});break;case"ClaimByProxy":s=new rt({streamId:i.streamId});break;case"Cancel":s=new at({streamId:i.streamId});break;default:throw new Error(`Unknown transaction type: ${i}`)}return{txType:s.txType,txSubType:s.txSubType,intentionData:s.data}}async build(t){let{intentionData:e}=t,n;switch(t.txSubType){case"CreateStream":n=new it(e);break;case"Claim":n=new ot(e);break;case"ClaimByProxy":n=new rt(e);break;case"SetAutoClaim":n=new ct(e);break;case"Cancel":n=new at(e);break;default:throw new Error("not implemented")}return n.build({...t})}};import{TransactionDefaultApplication as vr,TransactionSubTypes as Je}from"@msafe/sui3-utils";import{buildCoinTransferTxb as wr}from"@msafe/sui3-utils";var oe=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:r}=e;return wr(n,this.data,r.address)}static fromData(e){return new a(e)}};import{buildObjectTransferTxb as kr}from"@msafe/sui3-utils";var ie=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:r}=e;return kr(n,this.data,r.address)}static fromData(e){return new a(e)}};import{isSameAddress as Dr}from"@msafe/sui3-utils";import{TransactionBlock as Ar}from"@mysten/sui.js/transactions";var se=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let{account:n}=e,r=Ar.from(this.data.content);if(!Dr(r.blockData.sender,n.address))throw new Error("Invalid sender address");return r}static fromData(e){return new a(e)}};var ce=class{application;constructor(){this.application=vr}deserialize(){throw new Error("MSafe core transaction intention should be build from API")}async build(t){let{suiClient:e,account:n}=t,r;switch(t.txSubType){case Je.assets.coin.send:r=oe.fromData(t.intentionData);break;case Je.assets.object.send:r=ie.fromData(t.intentionData);break;case Je.others.plain:r=se.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:n})}};import{TransactionType as _r}from"@msafe/sui3-utils";import{TransactionType as lt}from"@msafe/sui3-utils";import{bcs as Hn}from"@mysten/sui.js/bcs";import{normalizeStructTag as Or,normalizeSuiAddress as mt}from"@mysten/sui.js/utils";var Pr={ProtocolPackage:"0x7c9b90b3fda0fa4aa8ee88ae6c4a0b83c773f74936b5354448cb94662e94442d",StorageId:"0xbb4e2f4b6205c2e2a2db47aeb4f830796ec7c005f88537ee775986639bc442fe",Incentive:"0xaaf735bf83ff564e1b219a0d644de894ef5bdc4b2250b126b2a46dd002331821",IncentiveV2:"0xf87a8acb8b81d14307894d12595541a73f19933f88e1326d5be349c7a6f7559c",PriceOracle:"0x1568865ed9a0b5ec414220e8f79b3d04c77acc82358f6e5ae4635687392ffbef",ReserveParentId:"0xe6d4c6610b86ce7735ea754596d71d72d10c7980b5052fc3c8cdf8d09fea9b4b",pool:{sui:{name:"SUI",assetId:0,poolId:"0x96df0fce3c471489f4debaaa762cf960b3d97820bd1f3f025ff8190730e958c5",fondPoolId:"0xf975bc2d4cca10e3ace8887e20afd77b46c383b4465eac694c4688344955dea4",type:"0x2::sui::SUI",coinType:"sui",reserveObjectId:"0xab644b5fd11aa11e930d1c7bc903ef609a9feaf9ffe1b23532ad8441854fbfaf",borrowBalanceParentId:"0xe7ff0daa9d090727210abe6a8b6c0c5cd483f3692a10610386e4dc9c57871ba7",supplyBalanceParentId:"0x589c83af4b035a3bc64c40d9011397b539b97ea47edf7be8f33d643606bf96f8"},usdc:{name:"USDC",assetId:1,coinType:"usdc",poolId:"0xa02a98f9c88db51c6f5efaaf2261c81f34dd56d86073387e0ef1805ca22e39c8",type:"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",reserveObjectId:"0xeb3903f7748ace73429bd52a70fff278aac1725d3b58afa781f25ce3450ac203",borrowBalanceParentId:"0x8a3aaa817a811131c624658f6e77cba04ab5829293d2c49c1a9cce8ac9c8dec4",supplyBalanceParentId:"0x8d0a4467806458052d577c8cd2be6031e972f2b8f5f77fce98aa12cd85330da9"},usdt:{name:"USDT",coinType:"usdt",assetId:2,poolId:"0x0e060c3b5b8de00fb50511b7a45188c8e34b6995c01f69d98ea5a466fe10d103",type:"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN",reserveObjectId:"0xb8c5eab02a0202f638958cc79a69a2d30055565caad1684b3c8bbca3bddcb322",borrowBalanceParentId:"0xc14d8292a7d69ae31164bafab7ca8a5bfda11f998540fe976a674ed0673e448f",supplyBalanceParentId:"0x7e2a49ff9d2edd875f82b76a9b21e2a5a098e7130abfd510a203b6ea08ab9257"},weth:{name:"WETH",coinType:"weth",assetId:3,poolId:"0x71b9f6e822c48ce827bceadce82201d6a7559f7b0350ed1daa1dc2ba3ac41b56",type:"0xaf8cd5edc19c4512f4259f0bee101a40d41ebed738ade5874359610ef8eeced5::coin::COIN",reserveObjectId:"0xafecf4b57899d377cc8c9de75854c68925d9f512d0c47150ca52a0d3a442b735",borrowBalanceParentId:"0x7568d06a1b6ffc416a36c82791e3daf0e621cf19d4a2724fc6f74842661b6323",supplyBalanceParentId:"0xa668905b1ad445a3159b4d29b1181c4a62d864861b463dd9106cc0d97ffe8f7f"},cetus:{name:"CETUS",coinType:"cetus",assetId:4,poolId:"0x3c376f857ec4247b8ee456c1db19e9c74e0154d4876915e54221b5052d5b1e2e",type:"0x06864a6f921804860930db6ddbe2e16acdf8504495ea7481637a1c8b9a8fe54b::cetus::CETUS",reserveObjectId:"0x66a807c06212537fe46aa6719a00e4fa1e85a932d0b53ce7c4b1041983645133",borrowBalanceParentId:"0x4c3da45ffff6432b4592a39cdb3ce12f4a28034cbcb804bb071facc81fdd923d",supplyBalanceParentId:"0x6adc72faf2a9a15a583c9fb04f457c6a5f0b456bc9b4832413a131dfd4faddae"},voloSui:{name:"VoloSui",coinType:"voloSui",assetId:5,poolId:"0x9790c2c272e15b6bf9b341eb531ef16bcc8ed2b20dfda25d060bf47f5dd88d01",fondPoolId:"0xe2b5ada45273676e0da8ae10f8fe079a7cec3d0f59187d3d20b1549c275b07ea",type:"0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT",reserveObjectId:"0xd4fd7e094af9819b06ea3136c13a6ae8da184016b78cf19773ac26d2095793e2",borrowBalanceParentId:"0x8fa5eccbca2c4ba9aae3b87fd44aa75aa5f5b41ea2d9be4d5321379384974984",supplyBalanceParentId:"0xe6457d247b6661b1cac123351998f88f3e724ff6e9ea542127b5dcb3176b3841"},haSui:{name:"HaedalSui",coinType:"haSui",assetId:6,poolId:"0x6fd9cb6ebd76bc80340a9443d72ea0ae282ee20e2fd7544f6ffcd2c070d9557a",fondPoolId:"0xa20e18085ce04be8aa722fbe85423f1ad6b1ae3b1be81ffac00a30f1d6d6ab51",type:"0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI",reserveObjectId:"0x0c9f7a6ca561dc566bd75744bcc71a6af1dc3caf7bd32c099cd640bb5f3bb0e3",borrowBalanceParentId:"0x01f36898e020be6c3423e5c95d9f348868813cd4d0be39b0c8df9d8de4722b00",supplyBalanceParentId:"0x278b8e3d09c3548c60c51ed2f8eed281876ea58c392f71b7ff650cc9286d095b"},navx:{name:"NAVX",coinType:"navx",assetId:7,poolId:"0xc0e02e7a245e855dd365422faf76f87d9f5b2148a26d48dda6e8253c3fe9fa60",fondPoolId:"0x9dae0cf104a193217904f88a48ce2cf0221e8cd9073878edd05101d6b771fa09",type:"0xa99b8952d4f7d947ea77fe0ecdcc9e5fc0bcab2841d6e2a5aa00c3044e5544b5::navx::NAVX",reserveObjectId:"0x2e13b2f1f714c0c5fa72264f147ef7632b48ec2501f810c07df3ccb59d6fdc81",borrowBalanceParentId:"0xa5bf13075aa400cbdd4690a617c5f008e1fae0511dcd4f7121f09817df6c8d8b",supplyBalanceParentId:"0x59dedca8dc44e8df50b190f8b5fe673098c1273ac6168c0a4addf3613afcdee5"}}},m=Pr;var le=class{constructor(t){this.txb=t}decode(){if(console.log("txb",this.txb),this.isClaimRewardTransaction())return this.decodeClaimReward();if(this.isEntryBorrowTransaction())return this.decodeEntryBorrow();if(this.isEntryDepositTransaction())return this.decodeEntryDeposit();if(this.isEntryRepayTransaction())return this.decodeEntryRepay();if(this.isEntryWithdrawTransaction())return this.decodeEntryWithdraw();throw new Error("Unknown transaction type")}get transactions(){return this.txb.blockData.transactions}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isClaimRewardTransaction(){return!!this.getMoveCallTransaction(`${m.ProtocolPackage}::incentive_v2::claim_reward`)}isEntryBorrowTransaction(){return!!this.getMoveCallTransaction(`${m.ProtocolPackage}::incentive_v2::entry_borrow`)}isEntryDepositTransaction(){return!!this.getMoveCallTransaction(`${m.ProtocolPackage}::incentive_v2::entry_deposit`)}isEntryRepayTransaction(){return!!this.getMoveCallTransaction(`${m.ProtocolPackage}::incentive_v2::entry_repay`)}isEntryWithdrawTransaction(){return!!this.getMoveCallTransaction(`${m.ProtocolPackage}::incentive_v2::entry_withdraw`)}findPoolByAssetId(t){let e=Object.values(m.pool).find(n=>n.assetId===t);if(!e)throw new Error("Pool not found");return e}decodeClaimReward(){let t=[];return this.transactions.forEach(e=>{if(e.kind==="MoveCall"&&e.target===`${m.ProtocolPackage}::incentive_v2::claim_reward`){let n=new me(e,this.txb),r=n.decodeInputU8(4),o=n.decodeInputU8(5),i=n.decodeSharedObjectId(2),s=this.findPoolByAssetId(r),l=[...e.typeArguments];t.push({coinType:s.coinType,option:o,typeArguments:l,assetId:r,poolId:i})}}),console.log("decode claims",t),{txType:lt.Other,type:"ClaimReward",intentionData:{claims:t}}}decodeEntryBorrow(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),n=this.findPoolByAssetId(t);return{txType:lt.Other,type:"EntryBorrow",intentionData:{amount:e,coinType:n.coinType}}}decodeEntryDeposit(){let t=this.helper.decodeInputU8(3),e=this.helper.decodeInputU64(5),n=this.findPoolByAssetId(t);return{txType:lt.Other,type:"EntryDeposit",intentionData:{amount:e,coinType:n.coinType}}}decodeEntryRepay(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(6),n=this.findPoolByAssetId(t);return{txType:lt.Other,type:"EntryRepay",intentionData:{amount:e,coinType:n.coinType}}}decodeEntryWithdraw(){let t=this.helper.decodeInputU8(4),e=this.helper.decodeInputU64(5),n=this.findPoolByAssetId(t);return{txType:lt.Other,type:"EntryWithdraw",intentionData:{amount:e,coinType:n.coinType}}}get helper(){let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target.startsWith(m.ProtocolPackage));return new me(t,this.txb)}},me=class a{constructor(t,e){this.moveCall=t;this.txb=e}decodeSharedObjectId(t){let e=this.getInputParam(t);return a.getSharedObjectId(e)}decodeOwnedObjectId(t){let e=this.getInputParam(t);return a.getOwnedObjectId(e)}decodeInputU64(t){let e=this.decodePureArg(t,"u64");return Number(e)}decodeInputU8(t){let e=this.decodePureArg(t,"u8");return Number(e)}decodeInputAddress(t){let e=this.decodePureArg(t,"address");return mt(e)}decodeInputString(t){return this.decodePureArg(t,"string")}decodeInputBool(t){return this.decodePureArg(t,"bool")}decodePureArg(t,e){let n=this.getInputParam(t);return a.getPureInputValue(n,e)}getInputParam(t){let e=this.moveCall.arguments[t];if(e.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[e.index]}static getPureInputValue(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value=="object"&&"Pure"in t.value){let n=t.value.Pure;return Hn.de(e,new Uint8Array(n))}return t.value}static getOwnedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value=="object"){if(!("Object"in t.value)||!("ImmOrOwned"in t.value.Object))throw new Error("not ImmOrOwned");return mt(t.value.Object.ImmOrOwned.objectId)}return mt(t.value)}static getSharedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value!="object")return mt(t.value);if(!("Object"in t.value)||!("Shared"in t.value.Object))throw new Error("not Shared");return mt(t.value.Object.Shared.objectId)}static getPureInput(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value!="object")return t.value;if(!("Pure"in t.value))throw new Error("Pure not in value");let n=t.value.Pure;return Hn.de(e,new Uint8Array(n))}typeArg(t){return Or(this.moveCall.typeArguments[t])}txArg(t){return this.moveCall.arguments[t]}};import{TransactionBlock as Er}from"@mysten/sui.js/transactions";function Qe(a,t,e,n){return a.moveCall({target:`${m.ProtocolPackage}::incentive_v2::entry_deposit`,arguments:[a.object("0x06"),a.object(m.StorageId),a.object(t.poolId),a.pure(t.assetId),e,a.pure(n),a.object(m.Incentive),a.object(m.IncentiveV2)],typeArguments:[t.type]}),a}function Xn(a,t,e){return a.moveCall({target:`${m.ProtocolPackage}::incentive_v2::entry_withdraw`,arguments:[a.object("0x06"),a.object(m.PriceOracle),a.object(m.StorageId),a.object(t.poolId),a.pure(t.assetId),a.pure(e),a.object(m.Incentive),a.object(m.IncentiveV2)],typeArguments:[t.type]}),a}function zn(a,t,e){return a.moveCall({target:`${m.ProtocolPackage}::incentive_v2::entry_borrow`,arguments:[a.object("0x06"),a.object(m.PriceOracle),a.object(m.StorageId),a.object(t.poolId),a.pure(t.assetId),a.pure(e),a.object(m.IncentiveV2)],typeArguments:[t.type]}),a}function Ye(a,t,e,n){return a.moveCall({target:`${m.ProtocolPackage}::incentive_v2::entry_repay`,arguments:[a.object("0x06"),a.object(m.PriceOracle),a.object(m.StorageId),a.object(t.poolId),a.pure(t.assetId),e,a.pure(n),a.object(m.IncentiveV2)],typeArguments:[t.type]}),a}function Vn(a,t,e,n,r){return a.moveCall({target:`${m.ProtocolPackage}::incentive_v2::claim_reward`,arguments:[a.object("0x06"),a.object(m.IncentiveV2),a.object(e),a.object(m.StorageId),a.pure(t),a.pure(n)],typeArguments:r}),a}var ue=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(){let{claims:e}=this.data,n=new Er;return e.forEach(r=>{let{assetId:o,poolId:i,option:s,typeArguments:l}=r;Vn(n,o,i,s,l)}),n}static fromData(e){return new a(e)}};import{TransactionBlock as Rr}from"@mysten/sui.js/transactions";var de=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(){let{coinType:e,amount:n}=this.data,r=new Rr;console.log("build",this.data);let o=m.pool[e];if(!o)throw new Error(`${e} not support, please use ${Object.keys(m.pool).join(", ")}.`);return zn(r,o,n)}static fromData(e){return new a(e)}};import{TransactionBlock as jr}from"@mysten/sui.js/transactions";async function pe(a,t,e){let n=await a.getCoins({owner:t,coinType:e});return console.log("getTokenObjs",t,n),n}var fe=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:r}=e,{coinType:o,amount:i}=this.data,s=new jr;if(console.log("build",this.data),o==="sui"){let[p]=s.splitCoins(s.gas,[i]);return Qe(s,m.pool.sui,p,i)}let l=m.pool[o];if(!l)throw new Error(`${o} not support, please use ${Object.keys(m.pool).join(", ")}.`);let u=await pe(n,r.address,l.type);if(!u.data[0])throw new Error(`Insufficient balance for ${l.name} Token`);let b=u.data[0].coinObjectId;if(u.data.length>=2){let p=1;for(;p<u.data.length;)s.mergeCoins(b,[u.data[p].coinObjectId]),p++}return Qe(s,l,s.object(b),i)}static fromData(e){return new a(e)}};import{TransactionBlock as Fr}from"@mysten/sui.js/transactions";var be=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let{suiClient:n,account:r}=e,{coinType:o,amount:i}=this.data,s=new Fr;if(console.log("build",this.data),o==="sui"){let[p]=s.splitCoins(s.gas,[i]);return Ye(s,m.pool.sui,p,i)}let l=m.pool[o];if(!l)throw new Error(`${o} not support, please use ${Object.keys(m.pool).join(", ")}.`);let u=await pe(n,r.address,l.type);if(!u.data[0])throw new Error(`Insufficient balance for ${l.name} Token`);let b=u.data[0].coinObjectId;if(u.data.length>=2){let p=1;for(;p<u.data.length;)s.mergeCoins(b,[u.data[p].coinObjectId]),p++}return Ye(s,l,s.object(b),i)}static fromData(e){return new a(e)}};import{TransactionBlock as Lr}from"@mysten/sui.js/transactions";var ge=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(){let{coinType:e,amount:n}=this.data,r=new Lr;console.log("build",this.data);let o=m.pool[e];if(!o)throw new Error(`${e} not support, please use ${Object.keys(m.pool).join(", ")}.`);return Xn(r,o,n)}static fromData(e){return new a(e)}};var ye=class{application="navi";async deserialize(t){let{transactionBlock:e}=t,r=new le(e).decode();return{txType:_r.Other,txSubType:r.type,intentionData:r.intentionData}}async build(t){let{suiClient:e,account:n}=t,r;switch(t.txSubType){case"EntryDeposit":r=fe.fromData(t.intentionData);break;case"EntryBorrow":r=de.fromData(t.intentionData);break;case"EntryRepay":r=be.fromData(t.intentionData);break;case"EntryWithdraw":r=ge.fromData(t.intentionData);break;case"ClaimReward":r=ue.fromData(t.intentionData);break;default:throw new Error("not implemented")}return r.build({suiClient:e,account:n})}};import{TransactionSubTypes as Mr,TransactionType as Nr}from"@msafe/sui3-utils";import{TransactionBlock as qr}from"@mysten/sui.js/transactions";import{fromHEX as Wr,toHEX as Ur}from"@mysten/sui.js/utils";import Wp from"sort-keys-recursive";var Gr="msafe-plain-tx",$r=Mr.others.plain;var he=class{application;constructor(){this.application=Gr}async deserialize(t){let{transactionBlock:e,suiClient:n}=t,r=await e.build({client:n});return{txType:Nr.Other,txSubType:$r,intentionData:{content:Ur(r)}}}async build(t){let{suiClient:e,account:n}=t,r=qr.from(Wr(t.intentionData.content)),o=await e.devInspectTransactionBlock({transactionBlock:r,sender:n.address});if(!(o.effects.status.status==="success"))throw new Error(o.effects.status.error);return r}};var Te=class{apps;constructor(t){this.apps=new Map(t.map(e=>[e.application,e]))}getAppHelper(t){let e=this.apps.get(t);if(!e)throw new Error(`${t} not registered`);return e}};import{TransactionType as eo}from"@msafe/sui3-utils";import{TransactionType as X}from"@msafe/sui3-utils";import{bcs as Jn}from"@mysten/sui.js/bcs";import{normalizeStructTag as Xr,normalizeSuiAddress as ut}from"@mysten/sui.js/utils";var E={PackageId:"0x9632f61a796fc54952d9151d80b319e066cba5498a27b495c99e113db09726b1"};var Ie=class{constructor(t){this.txb=t}get transactions(){return this.txb.blockData.transactions}decode(t){if(this.isAddLiquidityTransaction())return this.decodeAddLiquidity();if(this.isIncreaseLiquidityTransaction())return this.decodeIncreaseLiquidity(t);if(this.isDecreaseLiquidityTransaction())return this.decodeDecreaseLiquidity(t);if(this.isCollectFeeLiquidityTransaction())return this.decodeCollectFeeLiquidity();if(this.isCollectRewardLTransaction())return this.decodeCollectRewardLiquidity();if(this.isBurnTransaction())return this.decodeBurnLiquidity();throw new Error("Unknown transaction type")}getMoveCallTransaction(t){return this.transactions.find(e=>e.kind==="MoveCall"&&e.target===t)}isAddLiquidityTransaction(){return!!this.getMoveCallTransaction(`${E.PackageId}::position_manager::mint`)}isIncreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${E.PackageId}::position_manager::increase_liquidity`)}isDecreaseLiquidityTransaction(){return!!this.getMoveCallTransaction(`${E.PackageId}::position_manager::decrease_liquidity`)}isCollectFeeLiquidityTransaction(){return!!this.getMoveCallTransaction(`${E.PackageId}::position_manager::collect`)}isCollectRewardLTransaction(){return!!this.getMoveCallTransaction(`${E.PackageId}::position_manager::collect_reward`)}isBurnTransaction(){return!!this.getMoveCallTransaction(`${E.PackageId}::position_manager::burn`)}decodeAddLiquidity(){console.log(this.helper,"this.helper");let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeInputAddress(12),n=this.helper.decodeInputU64(8),r=this.helper.decodeInputU64(9),o=this.helper.decodeInputU32(4),i=this.helper.decodeInputBool(5),s=this.helper.decodeInputU32(6),l=this.helper.decodeInputBool(7);return{txType:X.Other,type:"AddLiquidity",intentionData:{pool:t,slippage:5,address:e,amountA:n,amountB:r,tickLower:i?-o:o,tickUpper:l?-s:s}}}decodeIncreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),n=this.helper.decodeSharedObjectId(4),r=this.helper.decodeInputU64(5),o=this.helper.decodeInputU64(6);return{txType:X.Other,type:"IncreaseLiquidity",intentionData:{pool:e,slippage:5,address:t,amountA:r,amountB:o,nft:n}}}decodeDecreaseLiquidity(t){let e=this.helper.decodeSharedObjectId(0),n=this.helper.decodeSharedObjectId(2),r=this.helper.decodeInputU64(3),o=this.helper.decodeInputU64(4),i=this.helper.decodeInputU64(5);return{txType:X.Other,type:"AddLiquidity",intentionData:{pool:e,decreaseLiquidity:r,nft:n,amountA:o,amountB:i,slippage:3,address:t}}}decodeCollectFeeLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputAddress(5),r=this.helper.decodeInputU64(3),o=this.helper.decodeInputU64(4);return{txType:X.Other,type:"CollectFee",intentionData:{pool:t,address:n,collectAmountA:r,collectAmountB:o,nft:e}}}decodeCollectRewardLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2),n=this.helper.decodeInputAddress(5),r=this.collectRewardHelper.map(o=>o.decodeInputU64(5));return{txType:X.Other,type:"CollectReward",intentionData:{pool:t,address:n,rewardAmounts:r,nft:e}}}decodeBurnLiquidity(){let t=this.helper.decodeSharedObjectId(0),e=this.helper.decodeSharedObjectId(2);return{txType:X.Other,type:"Burn",intentionData:{pool:t,nft:e}}}get helper(){console.log(this.transactions,"this.transactions");let t=this.transactions.find(e=>e.kind==="MoveCall"&&e.target!=="0x2::coin::zero");return console.log(t,this.txb,"this.txb"),new Ce(t,this.txb)}get collectRewardHelper(){console.log(this.transactions,"this.transactions");let t=this.transactions.filter(e=>e.kind==="MoveCall"&&e.target===`${E.PackageId}::position_manager::collect_reward`);return console.log(t,this.txb,"this.txb"),t.map(e=>new Ce(e,this.txb))}},Ce=class a{constructor(t,e){this.moveCall=t;this.txb=e}decodeSharedObjectId(t){let e=this.getInputParam(t);return a.getSharedObjectId(e)}decodeOwnedObjectId(t){let e=this.getInputParam(t);return a.getOwnedObjectId(e)}decodeInputU128(t){let e=this.decodePureArg(t,"u128");return Number(e)}decodeInputU64(t){let e=this.decodePureArg(t,"u64");return Number(e)}decodeInputU32(t){let e=this.decodePureArg(t,"u32");return Number(e)}decodeInputU8(t){let e=this.decodePureArg(t,"u8");return Number(e)}decodeInputAddress(t){let e=this.decodePureArg(t,"address");return ut(e)}decodeInputString(t){return this.decodePureArg(t,"string")}decodeInputBool(t){return this.decodePureArg(t,"bool")}decodePureArg(t,e){let n=this.getInputParam(t);return a.getPureInputValue(n,e)}getInputParam(t){let e=this.moveCall.arguments[t];if(e.kind!=="Input")throw new Error("not input type");return this.txb.blockData.inputs[e.index]}static getPureInputValue(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value=="object"&&"Pure"in t.value){let n=t.value.Pure;return Jn.de(e,new Uint8Array(n))}return t.value}static getOwnedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value=="object"){if(!("Object"in t.value)||!("ImmOrOwned"in t.value.Object))throw new Error("not ImmOrOwned");return ut(t.value.Object.ImmOrOwned.objectId)}return ut(t.value)}static getSharedObjectId(t){if(t.type!=="object")throw new Error(`not object argument: ${JSON.stringify(t)}`);if(typeof t.value!="object")return ut(t.value);if(!("Object"in t.value)||!("Shared"in t.value.Object))throw new Error("not Shared");return ut(t.value.Object.Shared.objectId)}static getPureInput(t,e){if(t.type!=="pure")throw new Error("not pure argument");if(typeof t.value!="object")return t.value;if(!("Pure"in t.value))throw new Error("Pure not in value");let n=t.value.Pure;return Jn.de(e,new Uint8Array(n))}typeArg(t){return Xr(this.moveCall.typeArguments[t])}txArg(t){return this.moveCall.arguments[t]}};import{TurbosSdk as zr}from"turbos-clmm-sdk";var Se=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new zr(e.network.replace("sui:",""),e.suiClient),{pool:r,address:o,amountA:i,amountB:s,slippage:l,tickLower:u,tickUpper:b,txb:p}=this.data;return n.pool.addLiquidity({pool:r,slippage:l,address:o,amountA:i,amountB:s,tickLower:u,tickUpper:b,txb:p})}static fromData(e){return new a(e)}};import{TurbosSdk as Vr}from"turbos-clmm-sdk";var xe=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new Vr(e.network.replace("sui:",""),e.suiClient),{pool:r,nft:o,txb:i}=this.data;return n.nft.burn({pool:r,nft:o,txb:i})}static fromData(e){return new a(e)}};import{TurbosSdk as Jr}from"turbos-clmm-sdk";var we=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new Jr(e.network.replace("sui:",""),e.suiClient),{pool:r,address:o,nft:i,collectAmountA:s,collectAmountB:l,txb:u}=this.data;return n.pool.collectFee({pool:r,address:o,collectAmountA:s,collectAmountB:l,nft:i,txb:u})}static fromData(e){return new a(e)}};import{TurbosSdk as Qr}from"turbos-clmm-sdk";var ke=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new Qr(e.network.replace("sui:",""),e.suiClient),{pool:r,address:o,nft:i,rewardAmounts:s,txb:l}=this.data;return n.pool.collectReward({pool:r,address:o,rewardAmounts:s,nft:i,txb:l})}static fromData(e){return new a(e)}};import{TurbosSdk as Yr}from"turbos-clmm-sdk";var De=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new Yr(e.network.replace("sui:",""),e.suiClient),{fee:r,address:o,tickLower:i,tickUpper:s,sqrtPrice:l,slippage:u,coinTypeA:b,coinTypeB:p,amountA:R,amountB:z,txb:Oe}=this.data;return n.pool.createPool({fee:r,amountA:R,amountB:z,address:o,tickLower:i,tickUpper:s,sqrtPrice:l,slippage:u,coinTypeA:b,coinTypeB:p,txb:Oe})}static fromData(e){return new a(e)}};import{TurbosSdk as Kr}from"turbos-clmm-sdk";var Ae=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new Kr(e.network.replace("sui:",""),e.suiClient),{pool:r,address:o,amountA:i,amountB:s,slippage:l,nft:u,decreaseLiquidity:b,txb:p}=this.data;return n.pool.decreaseLiquidity({pool:r,slippage:l,address:o,amountA:i,amountB:s,nft:u,decreaseLiquidity:b,txb:p})}static fromData(e){return new a(e)}};import{TurbosSdk as Zr}from"turbos-clmm-sdk";var ve=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new Zr(e.network.replace("sui:",""),e.suiClient),{pool:r,address:o,amountA:i,amountB:s,slippage:l,nft:u,txb:b}=this.data;return n.pool.increaseLiquidity({pool:r,slippage:l,address:o,amountA:i,amountB:s,nft:u,txb:b})}static fromData(e){return new a(e)}};import{TurbosSdk as to}from"turbos-clmm-sdk";var Pe=class a extends c{constructor(e){super(e);this.data=e}txType;txSubType;async build(e){let n=new to(e.network.replace("sui:",""),e.suiClient),{pool:r,address:o,amountA:i,amountB:s,slippage:l,nft:u,decreaseLiquidity:b,collectAmountA:p,collectAmountB:R,rewardAmounts:z,txb:Oe}=this.data;return n.pool.removeLiquidity({pool:r,decreaseLiquidity:b,nft:u,amountA:i,amountB:s,slippage:l,address:o,collectAmountA:p,collectAmountB:R,rewardAmounts:z,txb:Oe})}static fromData(e){return new a(e)}};var Be=class{application="turbos";async deserialize(t){let{transactionBlock:e,account:n}=t,o=new Ie(e).decode(n.address);return{txType:eo.Other,txSubType:o.type,intentionData:o.intentionData}}async build(t){let{suiClient:e,account:n,network:r}=t,o;switch(t.txSubType){case"CreatePool":o=De.fromData(t.intentionData);break;case"AddLiquidity":o=Se.fromData(t.intentionData);break;case"IncreaseLiquidity":o=ve.fromData(t.intentionData);break;case"DecreaseLiquidity":o=Ae.fromData(t.intentionData);break;case"RemoveLiquidity":o=Pe.fromData(t.intentionData);break;case"CollectFee":o=we.fromData(t.intentionData);break;case"CollectReward":o=ke.fromData(t.intentionData);break;case"Burn":o=xe.fromData(t.intentionData);break;default:throw new Error("not implemented")}return o.build({suiClient:e,account:n,network:r})}};var cb=new Te([new ce,new ye,new re,new he,new Et,new Be]);export{cb as appHelpers};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|