@minswap/noodles-sdk 0.0.59 → 0.0.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/982.js CHANGED
@@ -1 +1 @@
1
- import{Transaction as e}from"@mysten/sui/transactions";import t from"@minswap/tiny-invariant";import{SUI_CLOCK_OBJECT_ID as i,SUI_SYSTEM_STATE_OBJECT_ID as n,fromBase64 as s,normalizeStructTag as a,parseStructTag as r,toHex as d}from"@mysten/sui/utils";import{SuiClient as o,getFullnodeUrl as u}from"@mysten/sui/client";let c="0x2::sui::SUI",l="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",f="0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",g="0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",p="0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",b="0x0000000000000000000000000000000000000000000000000000000000000006";function m(e){return e===c||e===l}function h(e,t){let i=BigInt(e),n=BigInt(1e4*Number(t));if(n===BigInt(0))return[i.toString()];let s=i*n/BigInt(1e4);return[(i-s).toString(),s.toString()]}function C(e,t){if(!t||0>=Number(t))return BigInt(e);let i=BigInt(e),n=BigInt(1e4*Number(t));if(n===BigInt(0))return i;let s=i*n/BigInt(1e4);return i-s}async function I(e,t,i,n){let{effects:{gasUsed:s,status:a}}=await e.devInspectTransactionBlock({sender:i,transactionBlock:t});if("success"!==a.status)throw Error(`Transaction failed during dev inspect: ${a.error??""}`);let r=BigInt(s.computationCost)+BigInt(s.storageCost)-BigInt(s.storageRebate),d=BigInt(1e4*Number(n));return r*(BigInt(1e4)+d)/BigInt(1e4)}let k=async(e,t,i,n)=>{let s,a=[],r=!0;for(;r;)try{let i=await e.getCoins({owner:t,coinType:n,cursor:s});a=[...a,...i.data],r=i.hasNextPage,s=i.nextCursor}catch(e){console.error("Error fetching data:",e),r=!1}let d=((e,t,i)=>{let n;if(e?.length){do{n=!1;for(let s=0;s<e.length-1;s++){let a=BigInt(e[s][t]),r=BigInt(e[s+1][t]);if("desc"===i?a<r:a>r){let t=e[s];e[s]=e[s+1],e[s+1]=t,n=!0}}}while(n);return e}})(a.map(e=>({...e,balance:e.balance})),"balance","desc")??[],o="0",u=[],c=[];for(let e of d)if(o=(BigInt(e.balance)+BigInt(o)).toString(10),u.push(e.coinObjectId),c.push(e),BigInt(o)>=BigInt(i))break;return{objectIds:u,balance:o,objectCoins:c}};async function v(t,i){let{account:n,amount:s,splits:r,coinType:d,inheritTx:o,inspecTransaction:u,isSponsored:c=!1}=t,f=o??new e,{objectIds:g,balance:p}=await k(i,n,s,d);if(BigInt(p)<BigInt(s))throw Error(`Insufficient balance for type ${d}. Required: ${s}, Available: ${p}`);if(0===g.length)throw Error(`No coins found for type ${d} with sufficient balance. Required: ${s}`);let b=g[0];if(a(d)===a(l)&&!c){let e;return u?(g.length>1&&f.mergeCoins(f.object(b),g.slice(1).map(e=>f.object(e))),e=f.splitCoins(f.object(b),r)):e=f.splitCoins(f.gas,r),{tx:f,coinData:e}}g.length>1&&f.mergeCoins(f.object(b),g.slice(1).map(e=>f.object(e)));let m=f.splitCoins(f.object(b),r);return{tx:f,coinData:m}}async function y(t,i){let{inheritTx:n,sender:s,feeAmount:a,suiInputAmount:r}=t,d=n||new e;a>BigInt(0)&&d.setGasBudget(a);let{objectCoins:o}=await k(i,s,(BigInt(r||"0")+a).toString(),l);return d.setGasPayment(o.map(e=>({objectId:e.coinObjectId,version:e.version,digest:e.digest}))),d}let T="0x25fa0eb553dd69fa6a8028f73a38f1df7f289fa88a58ed3d7dc5a5360155bb19",_="0x8b1a8ac6e34688cd8f8f8e5fefa9d5fb9e1ff74d2f132f8e208ae5ac9cc530bb",w="0x13d101f44a0710a5475bec5f492a87b80e03d92d1cf540f26096f65850b23d26";class x{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({id:_,options:{showContent:!0}});t(e.data?.content,"Config object not found or has no content"),t(e.data?.content.dataType==="moveObject","Config object is not a Move object");let i=e.data.content.fields,n=i.id.id,s=i.fee_receiver,a=i.tiers.fields.contents,r={};for(let e of a){let t=e.fields.key,i=e.fields.value.fields.duration,n=e.fields.value.fields.amount,s=e.fields.value.fields.point,a=e.fields.value.fields.original_amount;r[t]={duration:BigInt(i),amount:BigInt(n),point:BigInt(s),originalAmount:BigInt(a)}}return{id:n,receiverAddress:s,tiers:r}}async buildPayBoostingTx({walletAddress:i,tierId:n,boostingCoinType:s,currentTx:r}){let d=await this.getConfig();t(n in d.tiers,"Invalid tier ID");let o=d.tiers[n].amount,u=r||new e,c=u.splitCoins(u.gas,[u.pure.u64(o)]);u.moveCall({target:`${T}::boosting::pay`,typeArguments:[a(s)],arguments:[u.object(_),u.pure.u64(n),c]}),u.setSender(i);let l=await I(this.sdk.suiClient,u,i,0);return y({inheritTx:u,sender:i,feeAmount:l},this.sdk.suiClient)}async buildAddTierTx({adminAddress:t,tierId:i,duration:n,point:s,originalAmount:a,amount:r,currentTx:d}){let o=d||new e;o.moveCall({target:`${T}::config::add_tier`,typeArguments:[],arguments:[o.object(_),o.object(w),o.pure.u64(i),o.pure.u64(s),o.pure.u64(n),o.pure.u64(a),o.pure.u64(r)]}),o.setSender(t);let u=await I(this.sdk.suiClient,o,t,0);return y({inheritTx:o,sender:t,feeAmount:u},this.sdk.suiClient)}async buildUpdateTierTx({adminAddress:t,tierId:i,duration:n,amount:s,originalAmount:a,point:r,currentTx:d}){let o=d||new e;o.moveCall({target:`${T}::config::update_tier`,typeArguments:[],arguments:[o.object(_),o.object(w),o.pure.u64(i),o.pure.u64(n),o.pure.u64(s),o.pure.u64(r),o.pure.u64(a)]}),o.setSender(t);let u=await I(this.sdk.suiClient,o,t,0);return y({inheritTx:o,sender:t,feeAmount:u},this.sdk.suiClient)}async buildRemoveTierTx({adminAddress:t,tierId:i,currentTx:n}){let s=n||new e;s.moveCall({target:`${T}::config::remove_tier`,typeArguments:[],arguments:[s.object(_),s.object(w),s.pure.u64(i)]}),s.setSender(t);let a=await I(this.sdk.suiClient,s,t,0);return y({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiver({adminAddress:t,newReceiverAddress:i,currentTx:n}){let s=n||new e;s.moveCall({target:`${T}::config::update_fee_receiver`,typeArguments:[],arguments:[s.object(_),s.object(w),s.pure.address(i)]}),s.setSender(t);let a=await I(this.sdk.suiClient,s,t,0);return y({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}async buildPayBoostingWithAdminTx({walletAddress:t,tierId:i,customAmount:n,boostingCoinType:s,currentTx:r}){let d=r||new e,o=d.splitCoins(d.gas,[d.pure.u64(n)]);d.moveCall({target:`${T}::boosting::pay_with_admin`,typeArguments:[a(s)],arguments:[d.object(w),d.object(_),d.pure.u64(i),d.pure.u64(n),o]}),d.setSender(t);let u=await I(this.sdk.suiClient,d,t,0);return y({inheritTx:d,sender:t,feeAmount:u},this.sdk.suiClient)}}let S={prod:{packageId:"0x3dd678c250a667f1551bc4b9e35fd070896f4775dd2900d5cb2910d2aea0b068",configId:"0x3eb7bd15f61b7cc1a9fd36151e9c3d05aa37bfadb0a58c3a26a6c02c2e99f3ca",adminCapId:"0xf375fcb3d95934143766cab2028ab49441fa04ef2ce27c08c01004c455bcbad4",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"},staging:{packageId:"0xa83cd093ce5142649adae10d21fe87d55fa2df4e52a4292c77ba039bb12bfe67",configId:"0x19fb8f91946e58c068fa4238bdd7a531216a0c4dcfaa279a8a02c60cb02f6711",adminCapId:"0xd8139544d054702dfab6de4e9c55f162c8a6f30465935af56cffed99c5e1c2bd",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"}};class A{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({id:S[this.sdk.env].configId,options:{showContent:!0}});t(e.data,"Config object not found"),t(e.data.content,"Config object has no content"),t(e.data?.content.dataType==="moveObject","Config object is not a Move object");let i=e.data.content.fields,n=i.id.id,s=i.fee_receiver,a=i.paused,r=i.accepted_payment_type,d=i.plans.fields.contents,o={};for(let e of d){let t=e.fields.key,i=e.fields.value.fields.id,n=e.fields.value.fields.price,s=e.fields.value.fields.month_interval,a=e.fields.value.fields.ptype;o[t]={id:BigInt(i),price:BigInt(n),monthInterval:s,planType:a}}return{id:n,plans:o,feeReceiverWallet:s,paused:a,acceptedPaymentType:r}}async buildSubscribeCyclePlanTx({walletAddress:e,planId:i,reference:n,paymentCoinType:s=S[this.sdk.env].paymentCoinType,currentTx:a}){let r=await this.getConfig();t(!r.paused,"Contract is paused"),t(i in r.plans,"Invalid plan ID");let d=r.plans[i],o=d.price*BigInt(d.monthInterval),{tx:u,coinData:c}=await v({account:e,amount:o.toString(),splits:[o.toString()],coinType:s,inheritTx:a},this.sdk.suiClient);u.moveCall({target:`${S[this.sdk.env].packageId}::subscription::subscribe_cycle_plan`,typeArguments:[s],arguments:[u.object(S[this.sdk.env].configId),u.pure.u64(i),u.pure.string(n),c]}),u.setSender(e);let l=await I(this.sdk.suiClient,u,e,0);return y({inheritTx:u,sender:e,feeAmount:l},this.sdk.suiClient)}async buildBuyMoreCUPlanTx({walletAddress:e,planId:i,reference:n,paidAmount:s,paymentCoinType:a=S[this.sdk.env].paymentCoinType,currentTx:r}){let d=await this.getConfig();t(!d.paused,"Contract is paused"),t(i in d.plans,"Invalid plan ID");let{tx:o,coinData:u}=await v({account:e,amount:s.toString(),splits:[s.toString()],coinType:a,inheritTx:r},this.sdk.suiClient);o.moveCall({target:`${S[this.sdk.env].packageId}::subscription::buy_more_cu`,typeArguments:[a],arguments:[o.object(S[this.sdk.env].configId),o.pure.u64(i),o.pure.string(n),o.pure.u64(s),u]}),o.setSender(e);let c=await I(this.sdk.suiClient,o,e,0);return y({inheritTx:o,sender:e,feeAmount:c},this.sdk.suiClient)}async buildSubscribePlanWithAdminTx({walletAddress:e,planId:i,reference:n,customAmount:s,paymentCoinType:a=S[this.sdk.env].paymentCoinType,currentTx:r}){t(!(await this.getConfig()).paused,"Contract is paused");let{tx:d,coinData:o}=await v({account:e,amount:s.toString(),splits:[s.toString()],coinType:a,inheritTx:r},this.sdk.suiClient);d.moveCall({target:`${S[this.sdk.env].packageId}::subscription::subscribe_plan_with_admin`,typeArguments:[a],arguments:[d.object(S[this.sdk.env].adminCapId),d.object(S[this.sdk.env].configId),d.pure.u64(i),d.pure.string(n),d.pure.u64(s),o]}),d.setSender(e);let u=await I(this.sdk.suiClient,d,e,0);return y({inheritTx:d,sender:e,feeAmount:u},this.sdk.suiClient)}async buildAddPlanTx({adminAddress:t,planId:i,planType:n,monthInterval:s,price:a,currentTx:r}){let d=r||new e;d.moveCall({target:`${S[this.sdk.env].packageId}::config::add_plan`,typeArguments:[],arguments:[d.object(S[this.sdk.env].configId),d.object(S[this.sdk.env].adminCapId),d.pure.u64(i),d.pure.u8(n),d.pure.u8(s),d.pure.u64(a)]}),d.setSender(t);let o=await I(this.sdk.suiClient,d,t,0);return y({inheritTx:d,sender:t,feeAmount:o},this.sdk.suiClient)}async buildUpdatePlanTx({adminAddress:t,planId:i,planType:n,monthInterval:s,price:a,currentTx:r}){let d=r||new e;d.moveCall({target:`${S[this.sdk.env].packageId}::config::update_plan`,typeArguments:[],arguments:[d.object(S[this.sdk.env].configId),d.object(S[this.sdk.env].adminCapId),d.pure.u64(BigInt(i)),d.pure.u8(n),d.pure.u8(s),d.pure.u64(a)]}),d.setSender(t);let o=await I(this.sdk.suiClient,d,t,0);return y({inheritTx:d,sender:t,feeAmount:o},this.sdk.suiClient)}async buildRemovePlanTx({adminAddress:t,planId:i,currentTx:n}){let s=n||new e;s.moveCall({target:`${S[this.sdk.env].packageId}::config::remove_plan`,typeArguments:[],arguments:[s.object(S[this.sdk.env].configId),s.object(S[this.sdk.env].adminCapId),s.pure.u64(BigInt(i))]}),s.setSender(t);let a=await I(this.sdk.suiClient,s,t,0);return y({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiverWalletTx({adminAddress:t,newFeeReceiverWallet:i,currentTx:n}){let s=n||new e;s.moveCall({target:`${S[this.sdk.env].packageId}::config::update_fee_receiver`,typeArguments:[],arguments:[s.object(S[this.sdk.env].configId),s.object(S[this.sdk.env].adminCapId),s.pure.address(i)]}),s.setSender(t);let a=await I(this.sdk.suiClient,s,t,0);return y({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}async buildSetPausedTx({adminAddress:t,paused:i,currentTx:n}){let s=n||new e;s.moveCall({target:`${S[this.sdk.env].packageId}::config::set_paused`,typeArguments:[],arguments:[s.object(S[this.sdk.env].configId),s.object(S[this.sdk.env].adminCapId),s.pure.bool(i)]}),s.setSender(t);let a=await I(this.sdk.suiClient,s,t,0);return y({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}async buildSetAcceptedPaymentTypeTx({adminAddress:t,paymentCoinType:i,currentTx:n}){let s=n||new e;s.moveCall({target:`${S[this.sdk.env].packageId}::config::set_accepted_payment_type`,typeArguments:[i],arguments:[s.object(S[this.sdk.env].configId),s.object(S[this.sdk.env].adminCapId)]}),s.setSender(t);let a=await I(this.sdk.suiClient,s,t,0);return y({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}}class B{network;env;_suiClient;boostingModule;subscriptionModule;constructor(e="mainnet",t="prod"){this.network=e,this.env=t;let i=u(e);this._suiClient=new o({url:i}),this.subscriptionModule=new A(this),this.boostingModule=new x(this)}get suiClient(){return this._suiClient}}export{w as ADMIN_CAP_ID,T as BOOSTING_PACKAGE_ID,x as BoostingModule,b as CLOCK_OBJECT_ID,_ as CONFIG_ID,g as NATIVE_USDC_TOKEN_TYPE,B as NoodlesPaySdk,S as SUBSCRIPTION_CONFIG,i as SUI_CLOCK_OBJECT_ID,l as SUI_FULL_TYPE,p as SUI_METADATA_OBJECT_ID,n as SUI_SYSTEM_STATE_OBJECT_ID,c as SUI_TYPE,A as SubscriptionModule,o as SuiClient,e as Transaction,f as USDC_TOKEN_TYPE,y as addGasFee,s as fromBase64,C as getAmountAfterFee,k as getCoinObjectIdsByAmount,u as getFullnodeUrl,I as getNeededGasFee,v as getSplitCoinForTx,h as getSplitCoinsAfterFee,m as isSuiCoinType,a as normalizeStructTag,r as parseStructTag,t as tiny_invariant,d as toHex};
1
+ import{Transaction as e}from"@mysten/sui/transactions";import t from"@minswap/tiny-invariant";import{SUI_CLOCK_OBJECT_ID as i,SUI_SYSTEM_STATE_OBJECT_ID as n,fromBase64 as s,isValidSuiAddress as a,normalizeStructTag as r,normalizeSuiAddress as d,parseStructTag as o,toHex as u}from"@mysten/sui/utils";import{SuiClient as c,getFullnodeUrl as l}from"@mysten/sui/client";let f="0x2::sui::SUI",g="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",p="0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",b="0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",m="0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",h="0x0000000000000000000000000000000000000000000000000000000000000006",C="0x0000000000000000000000000000000000000000000000000000000000000000";function I(e){return e===f||e===g}function k(e,t){let i=BigInt(e),n=BigInt(1e4*Number(t));if(n===BigInt(0))return[i.toString()];let s=i*n/BigInt(1e4);return[(i-s).toString(),s.toString()]}function v(e,t){if(!t||0>=Number(t))return BigInt(e);let i=BigInt(e),n=BigInt(1e4*Number(t));if(n===BigInt(0))return i;let s=i*n/BigInt(1e4);return i-s}async function y(e,t,i,n){let{effects:{gasUsed:s,status:a}}=await e.devInspectTransactionBlock({sender:i,transactionBlock:t});if("success"!==a.status)throw Error(`Transaction failed during dev inspect: ${a.error??""}`);let r=BigInt(s.computationCost)+BigInt(s.storageCost)-BigInt(s.storageRebate),d=BigInt(1e4*Number(n));return r*(BigInt(1e4)+d)/BigInt(1e4)}let T=async(e,t,i,n)=>{let s,a=[],r=!0;for(;r;)try{let i=await e.getCoins({owner:t,coinType:n,cursor:s});a=[...a,...i.data],r=i.hasNextPage,s=i.nextCursor}catch(e){console.error("Error fetching data:",e),r=!1}let d=((e,t,i)=>{let n;if(e?.length){do{n=!1;for(let s=0;s<e.length-1;s++){let a=BigInt(e[s][t]),r=BigInt(e[s+1][t]);if("desc"===i?a<r:a>r){let t=e[s];e[s]=e[s+1],e[s+1]=t,n=!0}}}while(n);return e}})(a.map(e=>({...e,balance:e.balance})),"balance","desc")??[],o="0",u=[],c=[];for(let e of d)if(o=(BigInt(e.balance)+BigInt(o)).toString(10),u.push(e.coinObjectId),c.push(e),BigInt(o)>=BigInt(i))break;return{objectIds:u,balance:o,objectCoins:c}};async function S(t,i){let{account:n,amount:s,splits:a,coinType:d,inheritTx:o,inspecTransaction:u,isSponsored:c=!1}=t,l=o??new e,{objectIds:f,balance:p}=await T(i,n,s,d);if(BigInt(p)<BigInt(s))throw Error(`Insufficient balance for type ${d}. Required: ${s}, Available: ${p}`);if(0===f.length)throw Error(`No coins found for type ${d} with sufficient balance. Required: ${s}`);let b=f[0];if(r(d)===r(g)&&!c){let e;return u?(f.length>1&&l.mergeCoins(l.object(b),f.slice(1).map(e=>l.object(e))),e=l.splitCoins(l.object(b),a)):e=l.splitCoins(l.gas,a),{tx:l,coinData:e}}f.length>1&&l.mergeCoins(l.object(b),f.slice(1).map(e=>l.object(e)));let m=l.splitCoins(l.object(b),a);return{tx:l,coinData:m}}async function _(t,i){let{inheritTx:n,sender:s,feeAmount:a,suiInputAmount:r}=t,d=n||new e;a>BigInt(0)&&d.setGasBudget(a);let{objectCoins:o}=await T(i,s,(BigInt(r||"0")+a).toString(),g);return d.setGasPayment(o.map(e=>({objectId:e.coinObjectId,version:e.version,digest:e.digest}))),d}let w="0x25fa0eb553dd69fa6a8028f73a38f1df7f289fa88a58ed3d7dc5a5360155bb19",x="0x8b1a8ac6e34688cd8f8f8e5fefa9d5fb9e1ff74d2f132f8e208ae5ac9cc530bb",A="0x13d101f44a0710a5475bec5f492a87b80e03d92d1cf540f26096f65850b23d26";class B{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({id:x,options:{showContent:!0}});t(e.data?.content,"Config object not found or has no content"),t(e.data?.content.dataType==="moveObject","Config object is not a Move object");let i=e.data.content.fields,n=i.id.id,s=i.fee_receiver,a=i.tiers.fields.contents,r={};for(let e of a){let t=e.fields.key,i=e.fields.value.fields.duration,n=e.fields.value.fields.amount,s=e.fields.value.fields.point,a=e.fields.value.fields.original_amount;r[t]={duration:BigInt(i),amount:BigInt(n),point:BigInt(s),originalAmount:BigInt(a)}}return{id:n,receiverAddress:s,tiers:r}}async buildPayBoostingTx({walletAddress:i,tierId:n,boostingCoinType:s,currentTx:a}){let d=await this.getConfig();t(n in d.tiers,"Invalid tier ID");let o=d.tiers[n].amount,u=a||new e,c=u.splitCoins(u.gas,[u.pure.u64(o)]);u.moveCall({target:`${w}::boosting::pay`,typeArguments:[r(s)],arguments:[u.object(x),u.pure.u64(n),c]}),u.setSender(i);let l=await y(this.sdk.suiClient,u,i,0);return _({inheritTx:u,sender:i,feeAmount:l},this.sdk.suiClient)}async buildAddTierTx({adminAddress:t,tierId:i,duration:n,point:s,originalAmount:a,amount:r,currentTx:d}){let o=d||new e;o.moveCall({target:`${w}::config::add_tier`,typeArguments:[],arguments:[o.object(x),o.object(A),o.pure.u64(i),o.pure.u64(s),o.pure.u64(n),o.pure.u64(a),o.pure.u64(r)]}),o.setSender(t);let u=await y(this.sdk.suiClient,o,t,0);return _({inheritTx:o,sender:t,feeAmount:u},this.sdk.suiClient)}async buildUpdateTierTx({adminAddress:t,tierId:i,duration:n,amount:s,originalAmount:a,point:r,currentTx:d}){let o=d||new e;o.moveCall({target:`${w}::config::update_tier`,typeArguments:[],arguments:[o.object(x),o.object(A),o.pure.u64(i),o.pure.u64(n),o.pure.u64(s),o.pure.u64(r),o.pure.u64(a)]}),o.setSender(t);let u=await y(this.sdk.suiClient,o,t,0);return _({inheritTx:o,sender:t,feeAmount:u},this.sdk.suiClient)}async buildRemoveTierTx({adminAddress:t,tierId:i,currentTx:n}){let s=n||new e;s.moveCall({target:`${w}::config::remove_tier`,typeArguments:[],arguments:[s.object(x),s.object(A),s.pure.u64(i)]}),s.setSender(t);let a=await y(this.sdk.suiClient,s,t,0);return _({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiver({adminAddress:t,newReceiverAddress:i,currentTx:n}){let s=n||new e;s.moveCall({target:`${w}::config::update_fee_receiver`,typeArguments:[],arguments:[s.object(x),s.object(A),s.pure.address(i)]}),s.setSender(t);let a=await y(this.sdk.suiClient,s,t,0);return _({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}async buildPayBoostingWithAdminTx({walletAddress:t,tierId:i,customAmount:n,boostingCoinType:s,currentTx:a}){let d=a||new e,o=d.splitCoins(d.gas,[d.pure.u64(n)]);d.moveCall({target:`${w}::boosting::pay_with_admin`,typeArguments:[r(s)],arguments:[d.object(A),d.object(x),d.pure.u64(i),d.pure.u64(n),o]}),d.setSender(t);let u=await y(this.sdk.suiClient,d,t,0);return _({inheritTx:d,sender:t,feeAmount:u},this.sdk.suiClient)}}let j={prod:{packageId:"0x3dd678c250a667f1551bc4b9e35fd070896f4775dd2900d5cb2910d2aea0b068",configId:"0x3eb7bd15f61b7cc1a9fd36151e9c3d05aa37bfadb0a58c3a26a6c02c2e99f3ca",adminCapId:"0xf375fcb3d95934143766cab2028ab49441fa04ef2ce27c08c01004c455bcbad4",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"},staging:{packageId:"0xa83cd093ce5142649adae10d21fe87d55fa2df4e52a4292c77ba039bb12bfe67",configId:"0x19fb8f91946e58c068fa4238bdd7a531216a0c4dcfaa279a8a02c60cb02f6711",adminCapId:"0xd8139544d054702dfab6de4e9c55f162c8a6f30465935af56cffed99c5e1c2bd",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"}};class O{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({id:j[this.sdk.env].configId,options:{showContent:!0}});t(e.data,"Config object not found"),t(e.data.content,"Config object has no content"),t(e.data?.content.dataType==="moveObject","Config object is not a Move object");let i=e.data.content.fields,n=i.id.id,s=i.fee_receiver,a=i.paused,r=i.accepted_payment_type,d=i.plans.fields.contents,o={};for(let e of d){let t=e.fields.key,i=e.fields.value.fields.id,n=e.fields.value.fields.price,s=e.fields.value.fields.month_interval,a=e.fields.value.fields.ptype;o[t]={id:BigInt(i),price:BigInt(n),monthInterval:s,planType:a}}return{id:n,plans:o,feeReceiverWallet:s,paused:a,acceptedPaymentType:r}}async buildSubscribeCyclePlanTx({walletAddress:e,planId:i,reference:n,paymentCoinType:s=j[this.sdk.env].paymentCoinType,currentTx:a}){let r=await this.getConfig();t(!r.paused,"Contract is paused"),t(i in r.plans,"Invalid plan ID");let d=r.plans[i],o=d.price*BigInt(d.monthInterval),{tx:u,coinData:c}=await S({account:e,amount:o.toString(),splits:[o.toString()],coinType:s,inheritTx:a},this.sdk.suiClient);u.moveCall({target:`${j[this.sdk.env].packageId}::subscription::subscribe_cycle_plan`,typeArguments:[s],arguments:[u.object(j[this.sdk.env].configId),u.pure.u64(i),u.pure.string(n),c]}),u.setSender(e);let l=await y(this.sdk.suiClient,u,e,0);return _({inheritTx:u,sender:e,feeAmount:l},this.sdk.suiClient)}async buildBuyMoreCUPlanTx({walletAddress:e,planId:i,reference:n,paidAmount:s,paymentCoinType:a=j[this.sdk.env].paymentCoinType,currentTx:r}){let d=await this.getConfig();t(!d.paused,"Contract is paused"),t(i in d.plans,"Invalid plan ID");let{tx:o,coinData:u}=await S({account:e,amount:s.toString(),splits:[s.toString()],coinType:a,inheritTx:r},this.sdk.suiClient);o.moveCall({target:`${j[this.sdk.env].packageId}::subscription::buy_more_cu`,typeArguments:[a],arguments:[o.object(j[this.sdk.env].configId),o.pure.u64(i),o.pure.string(n),o.pure.u64(s),u]}),o.setSender(e);let c=await y(this.sdk.suiClient,o,e,0);return _({inheritTx:o,sender:e,feeAmount:c},this.sdk.suiClient)}async buildSubscribePlanWithAdminTx({walletAddress:e,planId:i,reference:n,customAmount:s,paymentCoinType:a=j[this.sdk.env].paymentCoinType,currentTx:r}){t(!(await this.getConfig()).paused,"Contract is paused");let{tx:d,coinData:o}=await S({account:e,amount:s.toString(),splits:[s.toString()],coinType:a,inheritTx:r},this.sdk.suiClient);d.moveCall({target:`${j[this.sdk.env].packageId}::subscription::subscribe_plan_with_admin`,typeArguments:[a],arguments:[d.object(j[this.sdk.env].adminCapId),d.object(j[this.sdk.env].configId),d.pure.u64(i),d.pure.string(n),d.pure.u64(s),o]}),d.setSender(e);let u=await y(this.sdk.suiClient,d,e,0);return _({inheritTx:d,sender:e,feeAmount:u},this.sdk.suiClient)}async buildAddPlanTx({adminAddress:t,planId:i,planType:n,monthInterval:s,price:a,currentTx:r}){let d=r||new e;d.moveCall({target:`${j[this.sdk.env].packageId}::config::add_plan`,typeArguments:[],arguments:[d.object(j[this.sdk.env].configId),d.object(j[this.sdk.env].adminCapId),d.pure.u64(i),d.pure.u8(n),d.pure.u8(s),d.pure.u64(a)]}),d.setSender(t);let o=await y(this.sdk.suiClient,d,t,0);return _({inheritTx:d,sender:t,feeAmount:o},this.sdk.suiClient)}async buildUpdatePlanTx({adminAddress:t,planId:i,planType:n,monthInterval:s,price:a,currentTx:r}){let d=r||new e;d.moveCall({target:`${j[this.sdk.env].packageId}::config::update_plan`,typeArguments:[],arguments:[d.object(j[this.sdk.env].configId),d.object(j[this.sdk.env].adminCapId),d.pure.u64(BigInt(i)),d.pure.u8(n),d.pure.u8(s),d.pure.u64(a)]}),d.setSender(t);let o=await y(this.sdk.suiClient,d,t,0);return _({inheritTx:d,sender:t,feeAmount:o},this.sdk.suiClient)}async buildRemovePlanTx({adminAddress:t,planId:i,currentTx:n}){let s=n||new e;s.moveCall({target:`${j[this.sdk.env].packageId}::config::remove_plan`,typeArguments:[],arguments:[s.object(j[this.sdk.env].configId),s.object(j[this.sdk.env].adminCapId),s.pure.u64(BigInt(i))]}),s.setSender(t);let a=await y(this.sdk.suiClient,s,t,0);return _({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}async buildUpdateFeeReceiverWalletTx({adminAddress:t,newFeeReceiverWallet:i,currentTx:n}){let s=n||new e;s.moveCall({target:`${j[this.sdk.env].packageId}::config::update_fee_receiver`,typeArguments:[],arguments:[s.object(j[this.sdk.env].configId),s.object(j[this.sdk.env].adminCapId),s.pure.address(i)]}),s.setSender(t);let a=await y(this.sdk.suiClient,s,t,0);return _({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}async buildSetPausedTx({adminAddress:t,paused:i,currentTx:n}){let s=n||new e;s.moveCall({target:`${j[this.sdk.env].packageId}::config::set_paused`,typeArguments:[],arguments:[s.object(j[this.sdk.env].configId),s.object(j[this.sdk.env].adminCapId),s.pure.bool(i)]}),s.setSender(t);let a=await y(this.sdk.suiClient,s,t,0);return _({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}async buildSetAcceptedPaymentTypeTx({adminAddress:t,paymentCoinType:i,currentTx:n}){let s=n||new e;s.moveCall({target:`${j[this.sdk.env].packageId}::config::set_accepted_payment_type`,typeArguments:[i],arguments:[s.object(j[this.sdk.env].configId),s.object(j[this.sdk.env].adminCapId)]}),s.setSender(t);let a=await y(this.sdk.suiClient,s,t,0);return _({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}}class E{network;env;_suiClient;boostingModule;subscriptionModule;constructor(e="mainnet",t="prod"){this.network=e,this.env=t;let i=l(e);this._suiClient=new c({url:i}),this.subscriptionModule=new O(this),this.boostingModule=new B(this)}get suiClient(){return this._suiClient}}export{A as ADMIN_CAP_ID,w as BOOSTING_PACKAGE_ID,B as BoostingModule,h as CLOCK_OBJECT_ID,x as CONFIG_ID,b as NATIVE_USDC_TOKEN_TYPE,E as NoodlesPaySdk,j as SUBSCRIPTION_CONFIG,C as SUI_ADDRESS_ZERO,i as SUI_CLOCK_OBJECT_ID,g as SUI_FULL_TYPE,m as SUI_METADATA_OBJECT_ID,n as SUI_SYSTEM_STATE_OBJECT_ID,f as SUI_TYPE,O as SubscriptionModule,c as SuiClient,e as Transaction,p as USDC_TOKEN_TYPE,_ as addGasFee,s as fromBase64,v as getAmountAfterFee,T as getCoinObjectIdsByAmount,l as getFullnodeUrl,y as getNeededGasFee,S as getSplitCoinForTx,k as getSplitCoinsAfterFee,I as isSuiCoinType,a as isValidSuiAddress,r as normalizeStructTag,d as normalizeSuiAddress,o as parseStructTag,t as tiny_invariant,u as toHex};