@minswap/noodles-sdk 0.0.65-beta.2 → 0.0.66

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/832.js CHANGED
@@ -1 +1 @@
1
- import{Transaction as e}from"@mysten/sui/transactions";import{normalizeStructTag as t}from"@mysten/sui/utils";import i from"@minswap/tiny-invariant";let n="0x2::sui::SUI",s="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",a="0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",r="0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",d="0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",o="0x0000000000000000000000000000000000000000000000000000000000000006",u="0x0000000000000000000000000000000000000000000000000000000000000000";function c(e){return e===n||e===s}function l(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 f(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 g(e,t,i,n){t.setSenderIfNotSet(i);let s=await e.simulateTransaction({transaction:t,include:{effects:!0},checksEnabled:!1}),{gasUsed:a,status:r}=("Transaction"===s.$kind?s.Transaction:s.FailedTransaction).effects;if(!r.success)throw Error(`Transaction failed during simulation: ${r.error?.message??""}`);let d=BigInt(a.computationCost)+BigInt(a.storageCost)-BigInt(a.storageRebate),o=BigInt(1e4*Number(n));return d*(BigInt(1e4)+o)/BigInt(1e4)}let p=async(e,t,i,n)=>{let s,a=[],r=!0;for(;r;)try{let i=await e.listCoins({owner:t,coinType:n,cursor:s});a=[...a,...i.objects.map(e=>({coinObjectId:e.objectId,version:e.version,digest:e.digest,balance:e.balance}))],r=i.hasNextPage,s=i.cursor}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 b(i,n){let{account:a,amount:r,splits:d,coinType:o,inheritTx:u,inspecTransaction:c,isSponsored:l=!1}=i,f=u??new e,{objectIds:g,balance:b}=await p(n,a,r,o);if(BigInt(b)<BigInt(r))throw Error(`Insufficient balance for type ${o}. Required: ${r}, Available: ${b}`);if(0===g.length)throw Error(`No coins found for type ${o} with sufficient balance. Required: ${r}`);let m=g[0];if(t(o)===t(s)&&!l){let e;return c?(g.length>1&&f.mergeCoins(f.object(m),g.slice(1).map(e=>f.object(e))),e=f.splitCoins(f.object(m),d)):e=f.splitCoins(f.gas,d),{tx:f,coinData:e}}g.length>1&&f.mergeCoins(f.object(m),g.slice(1).map(e=>f.object(e)));let h=f.splitCoins(f.object(m),d);return{tx:f,coinData:h}}async function m(t,i){let{inheritTx:n,sender:a,feeAmount:r,suiInputAmount:d}=t,o=n||new e;r>BigInt(0)&&o.setGasBudget(r);let{objectCoins:u}=await p(i,a,(BigInt(d||"0")+r).toString(),s);return o.setGasPayment(u.map(e=>({objectId:e.coinObjectId,version:e.version,digest:e.digest}))),o}let h="0x25fa0eb553dd69fa6a8028f73a38f1df7f289fa88a58ed3d7dc5a5360155bb19",C="0x8b1a8ac6e34688cd8f8f8e5fefa9d5fb9e1ff74d2f132f8e208ae5ac9cc530bb",I="0x13d101f44a0710a5475bec5f492a87b80e03d92d1cf540f26096f65850b23d26";class k{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({objectId:C,include:{json:!0}});i(e.object.json,"Config object not found or has no content");let t=e.object.json,n=t.id.id,s=t.fee_receiver,a=t.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:n,tierId:s,boostingCoinType:a,currentTx:r}){let d=await this.getConfig();i(s in d.tiers,"Invalid tier ID");let o=d.tiers[s].amount,u=r||new e,c=u.splitCoins(u.gas,[u.pure.u64(o)]);u.moveCall({target:`${h}::boosting::pay`,typeArguments:[t(a)],arguments:[u.object(C),u.pure.u64(s),c]}),u.setSender(n);let l=await g(this.sdk.suiClient,u,n,0);return m({inheritTx:u,sender:n,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:`${h}::config::add_tier`,typeArguments:[],arguments:[o.object(C),o.object(I),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 g(this.sdk.suiClient,o,t,0);return m({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:`${h}::config::update_tier`,typeArguments:[],arguments:[o.object(C),o.object(I),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 g(this.sdk.suiClient,o,t,0);return m({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:`${h}::config::remove_tier`,typeArguments:[],arguments:[s.object(C),s.object(I),s.pure.u64(i)]}),s.setSender(t);let a=await g(this.sdk.suiClient,s,t,0);return m({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:`${h}::config::update_fee_receiver`,typeArguments:[],arguments:[s.object(C),s.object(I),s.pure.address(i)]}),s.setSender(t);let a=await g(this.sdk.suiClient,s,t,0);return m({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}async buildPayBoostingWithAdminTx({walletAddress:i,tierId:n,customAmount:s,boostingCoinType:a,currentTx:r}){let d=r||new e,o=d.splitCoins(d.gas,[d.pure.u64(s)]);d.moveCall({target:`${h}::boosting::pay_with_admin`,typeArguments:[t(a)],arguments:[d.object(I),d.object(C),d.pure.u64(n),d.pure.u64(s),o]}),d.setSender(i);let u=await g(this.sdk.suiClient,d,i,0);return m({inheritTx:d,sender:i,feeAmount:u},this.sdk.suiClient)}}let v={prod:{packageId:"0x3dd678c250a667f1551bc4b9e35fd070896f4775dd2900d5cb2910d2aea0b068",configId:"0x3eb7bd15f61b7cc1a9fd36151e9c3d05aa37bfadb0a58c3a26a6c02c2e99f3ca",adminCapId:"0xf375fcb3d95934143766cab2028ab49441fa04ef2ce27c08c01004c455bcbad4",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"},staging:{packageId:"0xa83cd093ce5142649adae10d21fe87d55fa2df4e52a4292c77ba039bb12bfe67",configId:"0x19fb8f91946e58c068fa4238bdd7a531216a0c4dcfaa279a8a02c60cb02f6711",adminCapId:"0xd8139544d054702dfab6de4e9c55f162c8a6f30465935af56cffed99c5e1c2bd",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"}};class y{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({objectId:v[this.sdk.env].configId,include:{json:!0}});i(e.object,"Config object not found"),i(e.object.json,"Config object has no content");let t=e.object.json,n=t.id.id,s=t.fee_receiver,a=t.paused,r=t.accepted_payment_type,d=t.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:t,reference:n,paymentCoinType:s=v[this.sdk.env].paymentCoinType,currentTx:a}){let r=await this.getConfig();i(!r.paused,"Contract is paused"),i(t in r.plans,"Invalid plan ID");let d=r.plans[t],o=d.price*BigInt(d.monthInterval),{tx:u,coinData:c}=await b({account:e,amount:o.toString(),splits:[o.toString()],coinType:s,inheritTx:a},this.sdk.suiClient);u.moveCall({target:`${v[this.sdk.env].packageId}::subscription::subscribe_cycle_plan`,typeArguments:[s],arguments:[u.object(v[this.sdk.env].configId),u.pure.u64(t),u.pure.string(n),c]}),u.setSender(e);let l=await g(this.sdk.suiClient,u,e,0);return m({inheritTx:u,sender:e,feeAmount:l},this.sdk.suiClient)}async buildBuyMoreCUPlanTx({walletAddress:e,planId:t,reference:n,paidAmount:s,paymentCoinType:a=v[this.sdk.env].paymentCoinType,currentTx:r}){let d=await this.getConfig();i(!d.paused,"Contract is paused"),i(t in d.plans,"Invalid plan ID");let{tx:o,coinData:u}=await b({account:e,amount:s.toString(),splits:[s.toString()],coinType:a,inheritTx:r},this.sdk.suiClient);o.moveCall({target:`${v[this.sdk.env].packageId}::subscription::buy_more_cu`,typeArguments:[a],arguments:[o.object(v[this.sdk.env].configId),o.pure.u64(t),o.pure.string(n),o.pure.u64(s),u]}),o.setSender(e);let c=await g(this.sdk.suiClient,o,e,0);return m({inheritTx:o,sender:e,feeAmount:c},this.sdk.suiClient)}async buildSubscribePlanWithAdminTx({walletAddress:e,planId:t,reference:n,customAmount:s,paymentCoinType:a=v[this.sdk.env].paymentCoinType,currentTx:r}){i(!(await this.getConfig()).paused,"Contract is paused");let{tx:d,coinData:o}=await b({account:e,amount:s.toString(),splits:[s.toString()],coinType:a,inheritTx:r},this.sdk.suiClient);d.moveCall({target:`${v[this.sdk.env].packageId}::subscription::subscribe_plan_with_admin`,typeArguments:[a],arguments:[d.object(v[this.sdk.env].adminCapId),d.object(v[this.sdk.env].configId),d.pure.u64(t),d.pure.string(n),d.pure.u64(s),o]}),d.setSender(e);let u=await g(this.sdk.suiClient,d,e,0);return m({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:`${v[this.sdk.env].packageId}::config::add_plan`,typeArguments:[],arguments:[d.object(v[this.sdk.env].configId),d.object(v[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 g(this.sdk.suiClient,d,t,0);return m({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:`${v[this.sdk.env].packageId}::config::update_plan`,typeArguments:[],arguments:[d.object(v[this.sdk.env].configId),d.object(v[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 g(this.sdk.suiClient,d,t,0);return m({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:`${v[this.sdk.env].packageId}::config::remove_plan`,typeArguments:[],arguments:[s.object(v[this.sdk.env].configId),s.object(v[this.sdk.env].adminCapId),s.pure.u64(BigInt(i))]}),s.setSender(t);let a=await g(this.sdk.suiClient,s,t,0);return m({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:`${v[this.sdk.env].packageId}::config::update_fee_receiver`,typeArguments:[],arguments:[s.object(v[this.sdk.env].configId),s.object(v[this.sdk.env].adminCapId),s.pure.address(i)]}),s.setSender(t);let a=await g(this.sdk.suiClient,s,t,0);return m({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:`${v[this.sdk.env].packageId}::config::set_paused`,typeArguments:[],arguments:[s.object(v[this.sdk.env].configId),s.object(v[this.sdk.env].adminCapId),s.pure.bool(i)]}),s.setSender(t);let a=await g(this.sdk.suiClient,s,t,0);return m({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:`${v[this.sdk.env].packageId}::config::set_accepted_payment_type`,typeArguments:[i],arguments:[s.object(v[this.sdk.env].configId),s.object(v[this.sdk.env].adminCapId)]}),s.setSender(t);let a=await g(this.sdk.suiClient,s,t,0);return m({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}}class T{network;env;_suiClient;boostingModule;subscriptionModule;constructor(e,t="mainnet",i="prod"){this.network=t,this.env=i,this._suiClient=e,this.subscriptionModule=new y(this),this.boostingModule=new k(this)}get suiClient(){return this._suiClient}}export{I as ADMIN_CAP_ID,h as BOOSTING_PACKAGE_ID,k as BoostingModule,o as CLOCK_OBJECT_ID,C as CONFIG_ID,r as NATIVE_USDC_TOKEN_TYPE,T as NoodlesPaySdk,v as SUBSCRIPTION_CONFIG,u as SUI_ADDRESS_ZERO,s as SUI_FULL_TYPE,d as SUI_METADATA_OBJECT_ID,n as SUI_TYPE,y as SubscriptionModule,a as USDC_TOKEN_TYPE,m as addGasFee,f as getAmountAfterFee,p as getCoinObjectIdsByAmount,g as getNeededGasFee,b as getSplitCoinForTx,l as getSplitCoinsAfterFee,c as isSuiCoinType};
1
+ import{Transaction as e}from"@mysten/sui/transactions";import{normalizeStructTag as t}from"@mysten/sui/utils";import i from"@minswap/tiny-invariant";let n="0x2::sui::SUI",s="0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",a="0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",r="0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",d="0x9258181f5ceac8dbffb7030890243caed69a9599d2886d957a9cb7656af3bdb3",o="0x0000000000000000000000000000000000000000000000000000000000000006",u="0x0000000000000000000000000000000000000000000000000000000000000000";function c(e){return e===n||e===s}function l(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 f(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 g(e,t,i,n){t.setSenderIfNotSet(i);let s=await e.simulateTransaction({transaction:t,include:{effects:!0},checksEnabled:!1}),{gasUsed:a,status:r}=("Transaction"===s.$kind?s.Transaction:s.FailedTransaction).effects;if(!r.success)throw Error(`Transaction failed during simulation: ${r.error?.message??""}`);let d=BigInt(a.computationCost)+BigInt(a.storageCost)-BigInt(a.storageRebate),o=BigInt(1e4*Number(n));return d*(BigInt(1e4)+o)/BigInt(1e4)}let p=async(e,t,i,n)=>{let s,a=[],r=!0;for(;r;)try{let i=await e.listCoins({owner:t,coinType:n,cursor:s});a=[...a,...i.objects.map(e=>({coinObjectId:e.objectId,version:e.version,digest:e.digest,balance:e.balance}))],r=i.hasNextPage,s=i.cursor}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 b(i,n){let{account:a,amount:r,splits:d,coinType:o,inheritTx:u,inspecTransaction:c,isSponsored:l=!1}=i,f=u??new e,{objectIds:g,balance:b}=await p(n,a,r,o);if(BigInt(b)<BigInt(r))throw Error(`Insufficient balance for type ${o}. Required: ${r}, Available: ${b}`);if(0===g.length)throw Error(`No coins found for type ${o} with sufficient balance. Required: ${r}`);let m=g[0];if(t(o)===t(s)&&!l){let e;return c?(g.length>1&&f.mergeCoins(f.object(m),g.slice(1).map(e=>f.object(e))),e=f.splitCoins(f.object(m),d)):e=f.splitCoins(f.gas,d),{tx:f,coinData:e}}g.length>1&&f.mergeCoins(f.object(m),g.slice(1).map(e=>f.object(e)));let h=f.splitCoins(f.object(m),d);return{tx:f,coinData:h}}async function m(t,i){let{inheritTx:n,sender:a,feeAmount:r,suiInputAmount:d}=t,o=n||new e;r>BigInt(0)&&o.setGasBudget(r);let{objectCoins:u}=await p(i,a,(BigInt(d||"0")+r).toString(),s);return o.setGasPayment(u.map(e=>({objectId:e.coinObjectId,version:e.version,digest:e.digest}))),o}let h="0x25fa0eb553dd69fa6a8028f73a38f1df7f289fa88a58ed3d7dc5a5360155bb19",C="0x8b1a8ac6e34688cd8f8f8e5fefa9d5fb9e1ff74d2f132f8e208ae5ac9cc530bb",I="0x13d101f44a0710a5475bec5f492a87b80e03d92d1cf540f26096f65850b23d26";class k{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({objectId:C,include:{json:!0}});i(e.object,"Config object not found"),i(e.object.json,"Config object has no content");let t=e.object.json,n=t.id.id,s=t.fee_receiver,a=t.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:n,tierId:s,boostingCoinType:a,currentTx:r}){let d=await this.getConfig();i(s in d.tiers,"Invalid tier ID");let o=d.tiers[s].amount,u=r||new e,c=u.splitCoins(u.gas,[u.pure.u64(o)]);u.moveCall({target:`${h}::boosting::pay`,typeArguments:[t(a)],arguments:[u.object(C),u.pure.u64(s),c]}),u.setSender(n);let l=await g(this.sdk.suiClient,u,n,0);return m({inheritTx:u,sender:n,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:`${h}::config::add_tier`,typeArguments:[],arguments:[o.object(C),o.object(I),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 g(this.sdk.suiClient,o,t,0);return m({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:`${h}::config::update_tier`,typeArguments:[],arguments:[o.object(C),o.object(I),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 g(this.sdk.suiClient,o,t,0);return m({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:`${h}::config::remove_tier`,typeArguments:[],arguments:[s.object(C),s.object(I),s.pure.u64(i)]}),s.setSender(t);let a=await g(this.sdk.suiClient,s,t,0);return m({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:`${h}::config::update_fee_receiver`,typeArguments:[],arguments:[s.object(C),s.object(I),s.pure.address(i)]}),s.setSender(t);let a=await g(this.sdk.suiClient,s,t,0);return m({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}async buildPayBoostingWithAdminTx({walletAddress:i,tierId:n,customAmount:s,boostingCoinType:a,currentTx:r}){let d=r||new e,o=d.splitCoins(d.gas,[d.pure.u64(s)]);d.moveCall({target:`${h}::boosting::pay_with_admin`,typeArguments:[t(a)],arguments:[d.object(I),d.object(C),d.pure.u64(n),d.pure.u64(s),o]}),d.setSender(i);let u=await g(this.sdk.suiClient,d,i,0);return m({inheritTx:d,sender:i,feeAmount:u},this.sdk.suiClient)}}let v={prod:{packageId:"0x3dd678c250a667f1551bc4b9e35fd070896f4775dd2900d5cb2910d2aea0b068",configId:"0x3eb7bd15f61b7cc1a9fd36151e9c3d05aa37bfadb0a58c3a26a6c02c2e99f3ca",adminCapId:"0xf375fcb3d95934143766cab2028ab49441fa04ef2ce27c08c01004c455bcbad4",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"},staging:{packageId:"0xa83cd093ce5142649adae10d21fe87d55fa2df4e52a4292c77ba039bb12bfe67",configId:"0x19fb8f91946e58c068fa4238bdd7a531216a0c4dcfaa279a8a02c60cb02f6711",adminCapId:"0xd8139544d054702dfab6de4e9c55f162c8a6f30465935af56cffed99c5e1c2bd",paymentCoinType:"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"}};class y{sdk;constructor(e){this.sdk=e}async getConfig(){let e=await this.sdk.suiClient.getObject({objectId:v[this.sdk.env].configId,include:{json:!0}});i(e.object,"Config object not found"),i(e.object.json,"Config object has no content");let t=e.object.json,n=t.id.id,s=t.fee_receiver,a=t.paused,r=t.accepted_payment_type,d=t.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:t,reference:n,paymentCoinType:s=v[this.sdk.env].paymentCoinType,currentTx:a}){let r=await this.getConfig();i(!r.paused,"Contract is paused"),i(t in r.plans,"Invalid plan ID");let d=r.plans[t],o=d.price*BigInt(d.monthInterval),{tx:u,coinData:c}=await b({account:e,amount:o.toString(),splits:[o.toString()],coinType:s,inheritTx:a},this.sdk.suiClient);u.moveCall({target:`${v[this.sdk.env].packageId}::subscription::subscribe_cycle_plan`,typeArguments:[s],arguments:[u.object(v[this.sdk.env].configId),u.pure.u64(t),u.pure.string(n),c]}),u.setSender(e);let l=await g(this.sdk.suiClient,u,e,0);return m({inheritTx:u,sender:e,feeAmount:l},this.sdk.suiClient)}async buildBuyMoreCUPlanTx({walletAddress:e,planId:t,reference:n,paidAmount:s,paymentCoinType:a=v[this.sdk.env].paymentCoinType,currentTx:r}){let d=await this.getConfig();i(!d.paused,"Contract is paused"),i(t in d.plans,"Invalid plan ID");let{tx:o,coinData:u}=await b({account:e,amount:s.toString(),splits:[s.toString()],coinType:a,inheritTx:r},this.sdk.suiClient);o.moveCall({target:`${v[this.sdk.env].packageId}::subscription::buy_more_cu`,typeArguments:[a],arguments:[o.object(v[this.sdk.env].configId),o.pure.u64(t),o.pure.string(n),o.pure.u64(s),u]}),o.setSender(e);let c=await g(this.sdk.suiClient,o,e,0);return m({inheritTx:o,sender:e,feeAmount:c},this.sdk.suiClient)}async buildSubscribePlanWithAdminTx({walletAddress:e,planId:t,reference:n,customAmount:s,paymentCoinType:a=v[this.sdk.env].paymentCoinType,currentTx:r}){i(!(await this.getConfig()).paused,"Contract is paused");let{tx:d,coinData:o}=await b({account:e,amount:s.toString(),splits:[s.toString()],coinType:a,inheritTx:r},this.sdk.suiClient);d.moveCall({target:`${v[this.sdk.env].packageId}::subscription::subscribe_plan_with_admin`,typeArguments:[a],arguments:[d.object(v[this.sdk.env].adminCapId),d.object(v[this.sdk.env].configId),d.pure.u64(t),d.pure.string(n),d.pure.u64(s),o]}),d.setSender(e);let u=await g(this.sdk.suiClient,d,e,0);return m({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:`${v[this.sdk.env].packageId}::config::add_plan`,typeArguments:[],arguments:[d.object(v[this.sdk.env].configId),d.object(v[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 g(this.sdk.suiClient,d,t,0);return m({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:`${v[this.sdk.env].packageId}::config::update_plan`,typeArguments:[],arguments:[d.object(v[this.sdk.env].configId),d.object(v[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 g(this.sdk.suiClient,d,t,0);return m({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:`${v[this.sdk.env].packageId}::config::remove_plan`,typeArguments:[],arguments:[s.object(v[this.sdk.env].configId),s.object(v[this.sdk.env].adminCapId),s.pure.u64(BigInt(i))]}),s.setSender(t);let a=await g(this.sdk.suiClient,s,t,0);return m({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:`${v[this.sdk.env].packageId}::config::update_fee_receiver`,typeArguments:[],arguments:[s.object(v[this.sdk.env].configId),s.object(v[this.sdk.env].adminCapId),s.pure.address(i)]}),s.setSender(t);let a=await g(this.sdk.suiClient,s,t,0);return m({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:`${v[this.sdk.env].packageId}::config::set_paused`,typeArguments:[],arguments:[s.object(v[this.sdk.env].configId),s.object(v[this.sdk.env].adminCapId),s.pure.bool(i)]}),s.setSender(t);let a=await g(this.sdk.suiClient,s,t,0);return m({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:`${v[this.sdk.env].packageId}::config::set_accepted_payment_type`,typeArguments:[i],arguments:[s.object(v[this.sdk.env].configId),s.object(v[this.sdk.env].adminCapId)]}),s.setSender(t);let a=await g(this.sdk.suiClient,s,t,0);return m({inheritTx:s,sender:t,feeAmount:a},this.sdk.suiClient)}}class T{network;env;_suiClient;boostingModule;subscriptionModule;constructor(e,t="mainnet",i="prod"){this.network=t,this.env=i,this._suiClient=e,this.subscriptionModule=new y(this),this.boostingModule=new k(this)}get suiClient(){return this._suiClient}}export{I as ADMIN_CAP_ID,h as BOOSTING_PACKAGE_ID,k as BoostingModule,o as CLOCK_OBJECT_ID,C as CONFIG_ID,r as NATIVE_USDC_TOKEN_TYPE,T as NoodlesPaySdk,v as SUBSCRIPTION_CONFIG,u as SUI_ADDRESS_ZERO,s as SUI_FULL_TYPE,d as SUI_METADATA_OBJECT_ID,n as SUI_TYPE,y as SubscriptionModule,a as USDC_TOKEN_TYPE,m as addGasFee,f as getAmountAfterFee,p as getCoinObjectIdsByAmount,g as getNeededGasFee,b as getSplitCoinForTx,l as getSplitCoinsAfterFee,c as isSuiCoinType};