UNPKG

@cobaltx/sdk-v2

Version:

An SDK for building applications on top of CobaltX.

10 lines 111 kB
import{MINT_SIZE as $i,TOKEN_PROGRAM_ID as es,getTransferFeeConfig as ts,unpackMint as rs}from"@solana/spl-token";import{PublicKey as En}from"@solana/web3.js";import{get as Sr,set as Rn}from"lodash";var Et=class{constructor(t){this.logLevel=t.logLevel!==void 0?t.logLevel:0,this.name=t.name}set level(t){this.logLevel=t}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(t){return t<=this.logLevel}error(...t){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...t),this):this}logWithError(...t){let r=t.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(r)}warning(...t){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...t),this):this}info(...t){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...t),this):this}debug(...t){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...t),this):this}},Ar={},Nn={};function Q(e){let t=Sr(Ar,e);if(!t){let r=Sr(Nn,e);t=new Et({name:e,logLevel:r}),Rn(Ar,e,t)}return t}var Ct=Q("CobaltX_accountInfo_util");async function kr(e,t,r){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}={batchRequest:!1,...r},s=Kt(t,i),a=new Array(s.length).fill([]);if(n){let u=s.map(d=>{let p=e._buildArgs([d.map(f=>f.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:p}}),c=Kt(u,10);a=(await(await Promise.all(c.map(async d=>await e._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&Ct.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(p=>{if(p){let{data:f,executable:g,lamports:m,owner:T,rentEpoch:b}=p;return f.length!==2&&f[1]!=="base64"&&Ct.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(f[0],"base64"),executable:g,lamports:m,owner:new En(T),rentEpoch:b}}return null})))}else try{a=await Promise.all(s.map(u=>e.getMultipleAccountsInfo(u,o)))}catch(u){u instanceof Error&&Ct.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}import be from"bn.js";var De=9e15,ke=1e9,Mt="0123456789abcdef",lt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",dt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Dt={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-De,maxE:De,crypto:!1},Br,fe,R=!0,ft="[DecimalError] ",Ae=ft+"Invalid argument: ",Rr=ft+"Precision limit exceeded",Nr=ft+"crypto unavailable",Er="[object Decimal]",ne=Math.floor,ee=Math.pow,Cn=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Kn=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Mn=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Cr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ue=1e7,_=7,Dn=9007199254740991,On=lt.length-1,Ot=dt.length-1,y={toStringTag:Er};y.absoluteValue=y.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),I(e)};y.ceil=function(){return I(new this.constructor(this),this.e+1,2)};y.clampedTo=y.clamp=function(e,t){var r,n=this,o=n.constructor;if(e=new o(e),t=new o(t),!e.s||!t.s)return new o(NaN);if(e.gt(t))throw Error(Ae+t);return r=n.cmp(e),r<0?e:n.cmp(t)>0?t:new o(n)};y.comparedTo=y.cmp=function(e){var t,r,n,o,i=this,s=i.d,a=(e=new i.constructor(e)).d,u=i.s,c=e.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(i.e!==e.e)return i.e>e.e^u<0?1:-1;for(n=s.length,o=a.length,t=0,r=n<o?n:o;t<r;++t)if(s[t]!==a[t])return s[t]>a[t]^u<0?1:-1;return n===o?0:n>o^u<0?1:-1};y.cosine=y.cos=function(){var e,t,r=this,n=r.constructor;return r.d?r.d[0]?(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+_,n.rounding=1,r=Vn(n,Vr(n,r)),n.precision=e,n.rounding=t,I(fe==2||fe==3?r.neg():r,e,t,!0)):new n(1):new n(NaN)};y.cubeRoot=y.cbrt=function(){var e,t,r,n,o,i,s,a,u,c,l=this,d=l.constructor;if(!l.isFinite()||l.isZero())return new d(l);for(R=!1,i=l.s*ee(l.s*l,1/3),!i||Math.abs(i)==1/0?(r=re(l.d),e=l.e,(i=(e-r.length+1)%3)&&(r+=i==1||i==-2?"0":"00"),i=ee(r,1/3),e=ne((e+1)/3)-(e%3==(e<0?-1:2)),i==1/0?r="5e"+e:(r=i.toExponential(),r=r.slice(0,r.indexOf("e")+1)+e),n=new d(r),n.s=l.s):n=new d(i.toString()),s=(e=d.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=Y(c.plus(l).times(a),c.plus(u),s+2,1),re(a.d).slice(0,s)===(r=re(n.d)).slice(0,s))if(r=r.slice(s-3,s+1),r=="9999"||!o&&r=="4999"){if(!o&&(I(a,e+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,o=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(I(n,e+1,1),t=!n.times(n).times(n).eq(l));break}return R=!0,I(n,e,d.rounding,t)};y.decimalPlaces=y.dp=function(){var e,t=this.d,r=NaN;if(t){if(e=t.length-1,r=(e-ne(this.e/_))*_,e=t[e],e)for(;e%10==0;e/=10)r--;r<0&&(r=0)}return r};y.dividedBy=y.div=function(e){return Y(this,new this.constructor(e))};y.dividedToIntegerBy=y.divToInt=function(e){var t=this,r=t.constructor;return I(Y(t,new r(e),0,1,1),r.precision,r.rounding)};y.equals=y.eq=function(e){return this.cmp(e)===0};y.floor=function(){return I(new this.constructor(this),this.e+1,3)};y.greaterThan=y.gt=function(e){return this.cmp(e)>0};y.greaterThanOrEqualTo=y.gte=function(e){var t=this.cmp(e);return t==1||t===0};y.hyperbolicCosine=y.cosh=function(){var e,t,r,n,o,i=this,s=i.constructor,a=new s(1);if(!i.isFinite())return new s(i.s?1/0:NaN);if(i.isZero())return a;r=s.precision,n=s.rounding,s.precision=r+Math.max(i.e,i.sd())+4,s.rounding=1,o=i.d.length,o<32?(e=Math.ceil(o/3),t=(1/gt(4,e)).toString()):(e=16,t="2.3283064365386962890625e-10"),i=Oe(s,1,i.times(t),new s(1),!0);for(var u,c=e,l=new s(8);c--;)u=i.times(i),i=a.minus(u.times(l.minus(u.times(l))));return I(i,s.precision=r,s.rounding=n,!0)};y.hyperbolicSine=y.sinh=function(){var e,t,r,n,o=this,i=o.constructor;if(!o.isFinite()||o.isZero())return new i(o);if(t=i.precision,r=i.rounding,i.precision=t+Math.max(o.e,o.sd())+4,i.rounding=1,n=o.d.length,n<3)o=Oe(i,2,o,o,!0);else{e=1.4*Math.sqrt(n),e=e>16?16:e|0,o=o.times(1/gt(5,e)),o=Oe(i,2,o,o,!0);for(var s,a=new i(5),u=new i(16),c=new i(20);e--;)s=o.times(o),o=o.times(a.plus(s.times(u.times(s).plus(c))))}return i.precision=t,i.rounding=r,I(o,t,r,!0)};y.hyperbolicTangent=y.tanh=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+7,n.rounding=1,Y(r.sinh(),r.cosh(),n.precision=e,n.rounding=t)):new n(r.s)};y.inverseCosine=y.acos=function(){var e=this,t=e.constructor,r=e.abs().cmp(1),n=t.precision,o=t.rounding;return r!==-1?r===0?e.isNeg()?le(t,n,o):new t(0):new t(NaN):e.isZero()?le(t,n+4,o).times(.5):(t.precision=n+6,t.rounding=1,e=new t(1).minus(e).div(e.plus(1)).sqrt().atan(),t.precision=n,t.rounding=o,e.times(2))};y.inverseHyperbolicCosine=y.acosh=function(){var e,t,r=this,n=r.constructor;return r.lte(1)?new n(r.eq(1)?0:NaN):r.isFinite()?(e=n.precision,t=n.rounding,n.precision=e+Math.max(Math.abs(r.e),r.sd())+4,n.rounding=1,R=!1,r=r.times(r).minus(1).sqrt().plus(r),R=!0,n.precision=e,n.rounding=t,r.ln()):new n(r)};y.inverseHyperbolicSine=y.asinh=function(){var e,t,r=this,n=r.constructor;return!r.isFinite()||r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+2*Math.max(Math.abs(r.e),r.sd())+6,n.rounding=1,R=!1,r=r.times(r).plus(1).sqrt().plus(r),R=!0,n.precision=e,n.rounding=t,r.ln())};y.inverseHyperbolicTangent=y.atanh=function(){var e,t,r,n,o=this,i=o.constructor;return o.isFinite()?o.e>=0?new i(o.abs().eq(1)?o.s/0:o.isZero()?o:NaN):(e=i.precision,t=i.rounding,n=o.sd(),Math.max(n,e)<2*-o.e-1?I(new i(o),e,t,!0):(i.precision=r=n-o.e,o=Y(o.plus(1),new i(1).minus(o),r+e,1),i.precision=e+4,i.rounding=1,o=o.ln(),i.precision=e,i.rounding=t,o.times(.5))):new i(NaN)};y.inverseSine=y.asin=function(){var e,t,r,n,o=this,i=o.constructor;return o.isZero()?new i(o):(t=o.abs().cmp(1),r=i.precision,n=i.rounding,t!==-1?t===0?(e=le(i,r+4,n).times(.5),e.s=o.s,e):new i(NaN):(i.precision=r+6,i.rounding=1,o=o.div(new i(1).minus(o.times(o)).sqrt().plus(1)).atan(),i.precision=r,i.rounding=n,o.times(2)))};y.inverseTangent=y.atan=function(){var e,t,r,n,o,i,s,a,u,c=this,l=c.constructor,d=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&d+4<=Ot)return s=le(l,d+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(d+4<=Ot)return s=le(l,d+4,p).times(.5),s.s=c.s,s}for(l.precision=a=d+10,l.rounding=1,r=Math.min(28,a/_+2|0),e=r;e;--e)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(R=!1,t=Math.ceil(a/_),n=1,u=c.times(c),s=new l(c),o=c;e!==-1;)if(o=o.times(u),i=s.minus(o.div(n+=2)),o=o.times(u),s=i.plus(o.div(n+=2)),s.d[t]!==void 0)for(e=t;s.d[e]===i.d[e]&&e--;);return r&&(s=s.times(2<<r-1)),R=!0,I(s,l.precision=d,l.rounding=p,!0)};y.isFinite=function(){return!!this.d};y.isInteger=y.isInt=function(){return!!this.d&&ne(this.e/_)>this.d.length-2};y.isNaN=function(){return!this.s};y.isNegative=y.isNeg=function(){return this.s<0};y.isPositive=y.isPos=function(){return this.s>0};y.isZero=function(){return!!this.d&&this.d[0]===0};y.lessThan=y.lt=function(e){return this.cmp(e)<0};y.lessThanOrEqualTo=y.lte=function(e){return this.cmp(e)<1};y.logarithm=y.log=function(e){var t,r,n,o,i,s,a,u,c=this,l=c.constructor,d=l.precision,p=l.rounding,f=5;if(e==null)e=new l(10),t=!0;else{if(e=new l(e),r=e.d,e.s<0||!r||!r[0]||e.eq(1))return new l(NaN);t=e.eq(10)}if(r=c.d,c.s<0||!r||!r[0]||c.eq(1))return new l(r&&!r[0]?-1/0:c.s!=1?NaN:r?0:1/0);if(t)if(r.length>1)i=!0;else{for(o=r[0];o%10===0;)o/=10;i=o!==1}if(R=!1,a=d+f,s=Se(c,a),n=t?pt(l,a+10):Se(e,a),u=Y(s,n,a,1),He(u.d,o=d,p))do if(a+=10,s=Se(c,a),n=t?pt(l,a+10):Se(e,a),u=Y(s,n,a,1),!i){+re(u.d).slice(o+1,o+15)+1==1e14&&(u=I(u,d+1,0));break}while(He(u.d,o+=10,p));return R=!0,I(u,d,p)};y.minus=y.sub=function(e){var t,r,n,o,i,s,a,u,c,l,d,p,f=this,g=f.constructor;if(e=new g(e),!f.d||!e.d)return!f.s||!e.s?e=new g(NaN):f.d?e.s=-e.s:e=new g(e.d||f.s!==e.s?f:NaN),e;if(f.s!=e.s)return e.s=-e.s,f.plus(e);if(c=f.d,p=e.d,a=g.precision,u=g.rounding,!c[0]||!p[0]){if(p[0])e.s=-e.s;else if(c[0])e=new g(f);else return new g(u===3?-0:0);return R?I(e,a,u):e}if(r=ne(e.e/_),l=ne(f.e/_),c=c.slice(),i=l-r,i){for(d=i<0,d?(t=c,i=-i,s=p.length):(t=p,r=l,s=c.length),n=Math.max(Math.ceil(a/_),s)+2,i>n&&(i=n,t.length=1),t.reverse(),n=i;n--;)t.push(0);t.reverse()}else{for(n=c.length,s=p.length,d=n<s,d&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){d=c[n]<p[n];break}i=0}for(d&&(t=c,c=p,p=t,e.s=-e.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>i;){if(c[--n]<p[n]){for(o=n;o&&c[--o]===0;)c[o]=ue-1;--c[o],c[n]+=ue}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--r;return c[0]?(e.d=c,e.e=mt(c,r),R?I(e,a,u):e):new g(u===3?-0:0)};y.modulo=y.mod=function(e){var t,r=this,n=r.constructor;return e=new n(e),!r.d||!e.s||e.d&&!e.d[0]?new n(NaN):!e.d||r.d&&!r.d[0]?I(new n(r),n.precision,n.rounding):(R=!1,n.modulo==9?(t=Y(r,e.abs(),0,3,1),t.s*=e.s):t=Y(r,e,0,n.modulo,1),t=t.times(e),R=!0,r.minus(t))};y.naturalExponential=y.exp=function(){return Vt(this)};y.naturalLogarithm=y.ln=function(){return Se(this)};y.negated=y.neg=function(){var e=new this.constructor(this);return e.s=-e.s,I(e)};y.plus=y.add=function(e){var t,r,n,o,i,s,a,u,c,l,d=this,p=d.constructor;if(e=new p(e),!d.d||!e.d)return!d.s||!e.s?e=new p(NaN):d.d||(e=new p(e.d||d.s===e.s?d:NaN)),e;if(d.s!=e.s)return e.s=-e.s,d.minus(e);if(c=d.d,l=e.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(e=new p(d)),R?I(e,a,u):e;if(i=ne(d.e/_),n=ne(e.e/_),c=c.slice(),o=i-n,o){for(o<0?(r=c,o=-o,s=l.length):(r=l,n=i,s=c.length),i=Math.ceil(a/_),s=i>s?i+1:s+1,o>s&&(o=s,r.length=1),r.reverse();o--;)r.push(0);r.reverse()}for(s=c.length,o=l.length,s-o<0&&(o=s,r=l,l=c,c=r),t=0;o;)t=(c[--o]=c[o]+l[o]+t)/ue|0,c[o]%=ue;for(t&&(c.unshift(t),++n),s=c.length;c[--s]==0;)c.pop();return e.d=c,e.e=mt(c,n),R?I(e,a,u):e};y.precision=y.sd=function(e){var t,r=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(Ae+e);return r.d?(t=Kr(r.d),e&&r.e+1>t&&(t=r.e+1)):t=NaN,t};y.round=function(){var e=this,t=e.constructor;return I(new t(e),e.e+1,t.rounding)};y.sine=y.sin=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+Math.max(r.e,r.sd())+_,n.rounding=1,r=Fn(n,Vr(n,r)),n.precision=e,n.rounding=t,I(fe>2?r.neg():r,e,t,!0)):new n(NaN)};y.squareRoot=y.sqrt=function(){var e,t,r,n,o,i,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(R=!1,c=Math.sqrt(+s),c==0||c==1/0?(t=re(a),(t.length+u)%2==0&&(t+="0"),c=Math.sqrt(t),u=ne((u+1)/2)-(u<0||u%2),c==1/0?t="5e"+u:(t=c.toExponential(),t=t.slice(0,t.indexOf("e")+1)+u),n=new l(t)):n=new l(c.toString()),r=(u=l.precision)+3;;)if(i=n,n=i.plus(Y(s,i,r+2,1)).times(.5),re(i.d).slice(0,r)===(t=re(n.d)).slice(0,r))if(t=t.slice(r-3,r+1),t=="9999"||!o&&t=="4999"){if(!o&&(I(i,u+1,0),i.times(i).eq(s))){n=i;break}r+=4,o=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(I(n,u+1,1),e=!n.times(n).eq(s));break}return R=!0,I(n,u,l.rounding,e)};y.tangent=y.tan=function(){var e,t,r=this,n=r.constructor;return r.isFinite()?r.isZero()?new n(r):(e=n.precision,t=n.rounding,n.precision=e+10,n.rounding=1,r=r.sin(),r.s=1,r=Y(r,new n(1).minus(r.times(r)).sqrt(),e+10,0),n.precision=e,n.rounding=t,I(fe==2||fe==4?r.neg():r,e,t,!0)):new n(NaN)};y.times=y.mul=function(e){var t,r,n,o,i,s,a,u,c,l=this,d=l.constructor,p=l.d,f=(e=new d(e)).d;if(e.s*=l.s,!p||!p[0]||!f||!f[0])return new d(!e.s||p&&!p[0]&&!f||f&&!f[0]&&!p?NaN:!p||!f?e.s/0:e.s*0);for(r=ne(l.e/_)+ne(e.e/_),u=p.length,c=f.length,u<c&&(i=p,p=f,f=i,s=u,u=c,c=s),i=[],s=u+c,n=s;n--;)i.push(0);for(n=c;--n>=0;){for(t=0,o=u+n;o>n;)a=i[o]+f[n]*p[o-n-1]+t,i[o--]=a%ue|0,t=a/ue|0;i[o]=(i[o]+t)%ue|0}for(;!i[--s];)i.pop();return t?++r:i.shift(),e.d=i,e.e=mt(i,r),R?I(e,d.precision,d.rounding):e};y.toBinary=function(e,t){return vt(this,2,e,t)};y.toDecimalPlaces=y.toDP=function(e,t){var r=this,n=r.constructor;return r=new n(r),e===void 0?r:(ie(e,0,ke),t===void 0?t=n.rounding:ie(t,0,8),I(r,e+r.e+1,t))};y.toExponential=function(e,t){var r,n=this,o=n.constructor;return e===void 0?r=de(n,!0):(ie(e,0,ke),t===void 0?t=o.rounding:ie(t,0,8),n=I(new o(n),e+1,t),r=de(n,!0,e+1)),n.isNeg()&&!n.isZero()?"-"+r:r};y.toFixed=function(e,t){var r,n,o=this,i=o.constructor;return e===void 0?r=de(o):(ie(e,0,ke),t===void 0?t=i.rounding:ie(t,0,8),n=I(new i(o),e+o.e+1,t),r=de(n,!1,e+n.e+1)),o.isNeg()&&!o.isZero()?"-"+r:r};y.toFraction=function(e){var t,r,n,o,i,s,a,u,c,l,d,p,f=this,g=f.d,m=f.constructor;if(!g)return new m(f);if(c=r=new m(1),n=u=new m(0),t=new m(n),i=t.e=Kr(g)-f.e-1,s=i%_,t.d[0]=ee(10,s<0?_+s:s),e==null)e=i>0?t:c;else{if(a=new m(e),!a.isInt()||a.lt(c))throw Error(Ae+a);e=a.gt(t)?i>0?t:c:a}for(R=!1,a=new m(re(g)),l=m.precision,m.precision=i=g.length*_*2;d=Y(a,t,0,1,1),o=r.plus(d.times(n)),o.cmp(e)!=1;)r=n,n=o,o=c,c=u.plus(d.times(o)),u=o,o=t,t=a.minus(d.times(o)),a=o;return o=Y(e.minus(r),n,0,1,1),u=u.plus(o.times(c)),r=r.plus(o.times(n)),u.s=c.s=f.s,p=Y(c,n,i,1).minus(f).abs().cmp(Y(u,r,i,1).minus(f).abs())<1?[c,n]:[u,r],m.precision=l,R=!0,p};y.toHexadecimal=y.toHex=function(e,t){return vt(this,16,e,t)};y.toNearest=function(e,t){var r=this,n=r.constructor;if(r=new n(r),e==null){if(!r.d)return r;e=new n(1),t=n.rounding}else{if(e=new n(e),t===void 0?t=n.rounding:ie(t,0,8),!r.d)return e.s?r:e;if(!e.d)return e.s&&(e.s=r.s),e}return e.d[0]?(R=!1,r=Y(r,e,0,t,1).times(e),R=!0,I(r)):(e.s=r.s,r=e),r};y.toNumber=function(){return+this};y.toOctal=function(e,t){return vt(this,8,e,t)};y.toPower=y.pow=function(e){var t,r,n,o,i,s,a=this,u=a.constructor,c=+(e=new u(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new u(ee(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,i=u.rounding,e.eq(1))return I(a,n,i);if(t=ne(e.e/_),t>=e.d.length-1&&(r=c<0?-c:c)<=Dn)return o=Mr(u,a,r,n),e.s<0?new u(1).div(o):I(o,n,i);if(s=a.s,s<0){if(t<e.d.length-1)return new u(NaN);if((e.d[t]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return r=ee(+a,c),t=r==0||!isFinite(r)?ne(c*(Math.log("0."+re(a.d))/Math.LN10+a.e+1)):new u(r+"").e,t>u.maxE+1||t<u.minE-1?new u(t>0?s/0:0):(R=!1,u.rounding=a.s=1,r=Math.min(12,(t+"").length),o=Vt(e.times(Se(a,n+r)),n),o.d&&(o=I(o,n+5,1),He(o.d,n,i)&&(t=n+10,o=I(Vt(e.times(Se(a,t+r)),t),t+5,1),+re(o.d).slice(n+1,n+15)+1==1e14&&(o=I(o,n+1,0)))),o.s=s,R=!0,u.rounding=i,I(o,n,i))};y.toPrecision=function(e,t){var r,n=this,o=n.constructor;return e===void 0?r=de(n,n.e<=o.toExpNeg||n.e>=o.toExpPos):(ie(e,1,ke),t===void 0?t=o.rounding:ie(t,0,8),n=I(new o(n),e,t),r=de(n,e<=n.e||n.e<=o.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+r:r};y.toSignificantDigits=y.toSD=function(e,t){var r=this,n=r.constructor;return e===void 0?(e=n.precision,t=n.rounding):(ie(e,1,ke),t===void 0?t=n.rounding:ie(t,0,8)),I(new n(r),e,t)};y.toString=function(){var e=this,t=e.constructor,r=de(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+r:r};y.truncated=y.trunc=function(){return I(new this.constructor(this),this.e+1,1)};y.valueOf=y.toJSON=function(){var e=this,t=e.constructor,r=de(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+r:r};function re(e){var t,r,n,o=e.length-1,i="",s=e[0];if(o>0){for(i+=s,t=1;t<o;t++)n=e[t]+"",r=_-n.length,r&&(i+=xe(r)),i+=n;s=e[t],n=s+"",r=_-n.length,r&&(i+=xe(r))}else if(s===0)return"0";for(;s%10===0;)s/=10;return i+s}function ie(e,t,r){if(e!==~~e||e<t||e>r)throw Error(Ae+e)}function He(e,t,r,n){var o,i,s,a;for(i=e[0];i>=10;i/=10)--t;return--t<0?(t+=_,o=0):(o=Math.ceil((t+1)/_),t%=_),i=ee(10,_-t),a=e[o]%i|0,n==null?t<3?(t==0?a=a/100|0:t==1&&(a=a/10|0),s=r<4&&a==99999||r>3&&a==49999||a==5e4||a==0):s=(r<4&&a+1==i||r>3&&a+1==i/2)&&(e[o+1]/i/100|0)==ee(10,t-2)-1||(a==i/2||a==0)&&(e[o+1]/i/100|0)==0:t<4?(t==0?a=a/1e3|0:t==1?a=a/100|0:t==2&&(a=a/10|0),s=(n||r<4)&&a==9999||!n&&r>3&&a==4999):s=((n||r<4)&&a+1==i||!n&&r>3&&a+1==i/2)&&(e[o+1]/i/1e3|0)==ee(10,t-3)-1,s}function ut(e,t,r){for(var n,o=[0],i,s=0,a=e.length;s<a;){for(i=o.length;i--;)o[i]*=t;for(o[0]+=Mt.indexOf(e.charAt(s++)),n=0;n<o.length;n++)o[n]>r-1&&(o[n+1]===void 0&&(o[n+1]=0),o[n+1]+=o[n]/r|0,o[n]%=r)}return o.reverse()}function Vn(e,t){var r,n,o;if(t.isZero())return t;n=t.d.length,n<32?(r=Math.ceil(n/3),o=(1/gt(4,r)).toString()):(r=16,o="2.3283064365386962890625e-10"),e.precision+=r,t=Oe(e,1,t.times(o),new e(1));for(var i=r;i--;){var s=t.times(t);t=s.times(s).minus(s).times(8).plus(1)}return e.precision-=r,t}var Y=function(){function e(n,o,i){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*o+a,n[u]=s%i|0,a=s/i|0;return a&&n.unshift(a),n}function t(n,o,i,s){var a,u;if(i!=s)u=i>s?1:-1;else for(a=u=0;a<i;a++)if(n[a]!=o[a]){u=n[a]>o[a]?1:-1;break}return u}function r(n,o,i,s){for(var a=0;i--;)n[i]-=a,a=n[i]<o[i]?1:0,n[i]=a*s+n[i]-o[i];for(;!n[0]&&n.length>1;)n.shift()}return function(n,o,i,s,a,u){var c,l,d,p,f,g,m,T,b,S,k,w,A,x,L,C,U,O,K,H,q=n.constructor,B=n.s==o.s?1:-1,W=n.d,v=o.d;if(!W||!W[0]||!v||!v[0])return new q(!n.s||!o.s||(W?v&&W[0]==v[0]:!v)?NaN:W&&W[0]==0||!v?B*0:B/0);for(u?(f=1,l=n.e-o.e):(u=ue,f=_,l=ne(n.e/f)-ne(o.e/f)),K=v.length,U=W.length,b=new q(B),S=b.d=[],d=0;v[d]==(W[d]||0);d++);if(v[d]>(W[d]||0)&&l--,i==null?(x=i=q.precision,s=q.rounding):a?x=i+(n.e-o.e)+1:x=i,x<0)S.push(1),g=!0;else{if(x=x/f+2|0,d=0,K==1){for(p=0,v=v[0],x++;(d<U||p)&&x--;d++)L=p*u+(W[d]||0),S[d]=L/v|0,p=L%v|0;g=p||d<U}else{for(p=u/(v[0]+1)|0,p>1&&(v=e(v,p,u),W=e(W,p,u),K=v.length,U=W.length),C=K,k=W.slice(0,K),w=k.length;w<K;)k[w++]=0;H=v.slice(),H.unshift(0),O=v[0],v[1]>=u/2&&++O;do p=0,c=t(v,k,K,w),c<0?(A=k[0],K!=w&&(A=A*u+(k[1]||0)),p=A/O|0,p>1?(p>=u&&(p=u-1),m=e(v,p,u),T=m.length,w=k.length,c=t(m,k,T,w),c==1&&(p--,r(m,K<T?H:v,T,u))):(p==0&&(c=p=1),m=v.slice()),T=m.length,T<w&&m.unshift(0),r(k,m,w,u),c==-1&&(w=k.length,c=t(v,k,K,w),c<1&&(p++,r(k,K<w?H:v,w,u))),w=k.length):c===0&&(p++,k=[0]),S[d++]=p,c&&k[0]?k[w++]=W[C]||0:(k=[W[C]],w=1);while((C++<U||k[0]!==void 0)&&x--);g=k[0]!==void 0}S[0]||S.shift()}if(f==1)b.e=l,Br=g;else{for(d=1,p=S[0];p>=10;p/=10)d++;b.e=d+l*f-1,I(b,a?i+b.e+1:i,s,g)}return b}}();function I(e,t,r,n){var o,i,s,a,u,c,l,d,p,f=e.constructor;e:if(t!=null){if(d=e.d,!d)return e;for(o=1,a=d[0];a>=10;a/=10)o++;if(i=t-o,i<0)i+=_,s=t,l=d[p=0],u=l/ee(10,o-s-1)%10|0;else if(p=Math.ceil((i+1)/_),a=d.length,p>=a)if(n){for(;a++<=p;)d.push(0);l=u=0,o=1,i%=_,s=i-_+1}else break e;else{for(l=a=d[p],o=1;a>=10;a/=10)o++;i%=_,s=i-_+o,u=s<0?0:l/ee(10,o-s-1)%10|0}if(n=n||t<0||d[p+1]!==void 0||(s<0?l:l%ee(10,o-s-1)),c=r<4?(u||n)&&(r==0||r==(e.s<0?3:2)):u>5||u==5&&(r==4||n||r==6&&(i>0?s>0?l/ee(10,o-s):0:d[p-1])%10&1||r==(e.s<0?8:7)),t<1||!d[0])return d.length=0,c?(t-=e.e+1,d[0]=ee(10,(_-t%_)%_),e.e=-t||0):d[0]=e.e=0,e;if(i==0?(d.length=p,a=1,p--):(d.length=p+1,a=ee(10,_-i),d[p]=s>0?(l/ee(10,o-s)%ee(10,s)|0)*a:0),c)for(;;)if(p==0){for(i=1,s=d[0];s>=10;s/=10)i++;for(s=d[0]+=a,a=1;s>=10;s/=10)a++;i!=a&&(e.e++,d[0]==ue&&(d[0]=1));break}else{if(d[p]+=a,d[p]!=ue)break;d[p--]=0,a=1}for(i=d.length;d[--i]===0;)d.pop()}return R&&(e.e>f.maxE?(e.d=null,e.e=NaN):e.e<f.minE&&(e.e=0,e.d=[0])),e}function de(e,t,r){if(!e.isFinite())return Or(e);var n,o=e.e,i=re(e.d),s=i.length;return t?(r&&(n=r-s)>0?i=i.charAt(0)+"."+i.slice(1)+xe(n):s>1&&(i=i.charAt(0)+"."+i.slice(1)),i=i+(e.e<0?"e":"e+")+e.e):o<0?(i="0."+xe(-o-1)+i,r&&(n=r-s)>0&&(i+=xe(n))):o>=s?(i+=xe(o+1-s),r&&(n=r-o-1)>0&&(i=i+"."+xe(n))):((n=o+1)<s&&(i=i.slice(0,n)+"."+i.slice(n)),r&&(n=r-s)>0&&(o+1===s&&(i+="."),i+=xe(n))),i}function mt(e,t){var r=e[0];for(t*=_;r>=10;r/=10)t++;return t}function pt(e,t,r){if(t>On)throw R=!0,r&&(e.precision=r),Error(Rr);return I(new e(lt),t,1,!0)}function le(e,t,r){if(t>Ot)throw Error(Rr);return I(new e(dt),t,r,!0)}function Kr(e){var t=e.length-1,r=t*_+1;if(t=e[t],t){for(;t%10==0;t/=10)r--;for(t=e[0];t>=10;t/=10)r++}return r}function xe(e){for(var t="";e--;)t+="0";return t}function Mr(e,t,r,n){var o,i=new e(1),s=Math.ceil(n/_+4);for(R=!1;;){if(r%2&&(i=i.times(t),Lr(i.d,s)&&(o=!0)),r=ne(r/2),r===0){r=i.d.length-1,o&&i.d[r]===0&&++i.d[r];break}t=t.times(t),Lr(t.d,s)}return R=!0,i}function Ir(e){return e.d[e.d.length-1]&1}function Dr(e,t,r){for(var n,o,i=new e(t[0]),s=0;++s<t.length;){if(o=new e(t[s]),!o.s){i=o;break}n=i.cmp(o),(n===r||n===0&&i.s===r)&&(i=o)}return i}function Vt(e,t){var r,n,o,i,s,a,u,c=0,l=0,d=0,p=e.constructor,f=p.rounding,g=p.precision;if(!e.d||!e.d[0]||e.e>17)return new p(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:0/0);for(t==null?(R=!1,u=g):u=t,a=new p(.03125);e.e>-2;)e=e.times(a),d+=5;for(n=Math.log(ee(2,d))/Math.LN10*2+5|0,u+=n,r=i=s=new p(1),p.precision=u;;){if(i=I(i.times(e),u,1),r=r.times(++l),a=s.plus(Y(i,r,u,1)),re(a.d).slice(0,u)===re(s.d).slice(0,u)){for(o=d;o--;)s=I(s.times(s),u,1);if(t==null)if(c<3&&He(s.d,u-n,f,c))p.precision=u+=10,r=i=a=new p(1),l=0,c++;else return I(s,p.precision=g,f,R=!0);else return p.precision=g,s}s=a}}function Se(e,t){var r,n,o,i,s,a,u,c,l,d,p,f=1,g=10,m=e,T=m.d,b=m.constructor,S=b.rounding,k=b.precision;if(m.s<0||!T||!T[0]||!m.e&&T[0]==1&&T.length==1)return new b(T&&!T[0]?-1/0:m.s!=1?NaN:T?0:m);if(t==null?(R=!1,l=k):l=t,b.precision=l+=g,r=re(T),n=r.charAt(0),Math.abs(i=m.e)<15e14){for(;n<7&&n!=1||n==1&&r.charAt(1)>3;)m=m.times(e),r=re(m.d),n=r.charAt(0),f++;i=m.e,n>1?(m=new b("0."+r),i++):m=new b(n+"."+r.slice(1))}else return c=pt(b,l+2,k).times(i+""),m=Se(new b(n+"."+r.slice(1)),l-g).plus(c),b.precision=k,t==null?I(m,k,S,R=!0):m;for(d=m,u=s=m=Y(m.minus(1),m.plus(1),l,1),p=I(m.times(m),l,1),o=3;;){if(s=I(s.times(p),l,1),c=u.plus(Y(s,new b(o),l,1)),re(c.d).slice(0,l)===re(u.d).slice(0,l))if(u=u.times(2),i!==0&&(u=u.plus(pt(b,l+2,k).times(i+""))),u=Y(u,new b(f),l,1),t==null)if(He(u.d,l-g,S,a))b.precision=l+=g,c=s=m=Y(d.minus(1),d.plus(1),l,1),p=I(m.times(m),l,1),o=a=1;else return I(u,b.precision=k,S,R=!0);else return b.precision=k,u;u=c,o+=2}}function Or(e){return String(e.s*e.s/0)}function ct(e,t){var r,n,o;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;t.charCodeAt(n)===48;n++);for(o=t.length;t.charCodeAt(o-1)===48;--o);if(t=t.slice(n,o),t){if(o-=n,e.e=r=r-n-1,e.d=[],n=(r+1)%_,r<0&&(n+=_),n<o){for(n&&e.d.push(+t.slice(0,n)),o-=_;n<o;)e.d.push(+t.slice(n,n+=_));t=t.slice(n),n=_-t.length}else n-=o;for(;n--;)t+="0";e.d.push(+t),R&&(e.e>e.constructor.maxE?(e.d=null,e.e=NaN):e.e<e.constructor.minE&&(e.e=0,e.d=[0]))}else e.e=0,e.d=[0];return e}function vn(e,t){var r,n,o,i,s,a,u,c,l;if(t.indexOf("_")>-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),Cr.test(t))return ct(e,t)}else if(t==="Infinity"||t==="NaN")return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(Kn.test(t))r=16,t=t.toLowerCase();else if(Cn.test(t))r=2;else if(Mn.test(t))r=8;else throw Error(Ae+t);for(i=t.search(/p/i),i>0?(u=+t.slice(i+1),t=t.substring(2,i)):t=t.slice(2),i=t.indexOf("."),s=i>=0,n=e.constructor,s&&(t=t.replace(".",""),a=t.length,i=a-i,o=Mr(n,new n(r),i,i*2)),c=ut(t,r,ue),l=c.length-1,i=l;c[i]===0;--i)c.pop();return i<0?new n(e.s*0):(e.e=mt(c,l),e.d=c,R=!1,s&&(e=Y(e,o,a*4)),u&&(e=e.times(Math.abs(u)<54?ee(2,u):qe.pow(2,u))),R=!0,e)}function Fn(e,t){var r,n=t.d.length;if(n<3)return t.isZero()?t:Oe(e,2,t,t);r=1.4*Math.sqrt(n),r=r>16?16:r|0,t=t.times(1/gt(5,r)),t=Oe(e,2,t,t);for(var o,i=new e(5),s=new e(16),a=new e(20);r--;)o=t.times(t),t=t.times(i.plus(o.times(s.times(o).minus(a))));return t}function Oe(e,t,r,n,o){var i,s,a,u,c=1,l=e.precision,d=Math.ceil(l/_);for(R=!1,u=r.times(r),a=new e(n);;){if(s=Y(a.times(u),new e(t++*t++),l,1),a=o?n.plus(s):n.minus(s),n=Y(s.times(u),new e(t++*t++),l,1),s=a.plus(n),s.d[d]!==void 0){for(i=d;s.d[i]===a.d[i]&&i--;);if(i==-1)break}i=a,a=n,n=s,s=i,c++}return R=!0,s.d.length=d+1,s}function gt(e,t){for(var r=e;--t;)r*=e;return r}function Vr(e,t){var r,n=t.s<0,o=le(e,e.precision,1),i=o.times(.5);if(t=t.abs(),t.lte(i))return fe=n?4:1,t;if(r=t.divToInt(o),r.isZero())fe=n?3:2;else{if(t=t.minus(r.times(o)),t.lte(i))return fe=Ir(r)?n?2:3:n?4:1,t;fe=Ir(r)?n?1:4:n?3:2}return t.minus(o).abs()}function vt(e,t,r,n){var o,i,s,a,u,c,l,d,p,f=e.constructor,g=r!==void 0;if(g?(ie(r,1,ke),n===void 0?n=f.rounding:ie(n,0,8)):(r=f.precision,n=f.rounding),!e.isFinite())l=Or(e);else{for(l=de(e),s=l.indexOf("."),g?(o=2,t==16?r=r*4-3:t==8&&(r=r*3-2)):o=t,s>=0&&(l=l.replace(".",""),p=new f(1),p.e=l.length-s,p.d=ut(de(p),10,o),p.e=p.d.length),d=ut(l,10,o),i=u=d.length;d[--u]==0;)d.pop();if(!d[0])l=g?"0p+0":"0";else{if(s<0?i--:(e=new f(e),e.d=d,e.e=i,e=Y(e,p,r,n,0,o),d=e.d,i=e.e,c=Br),s=d[r],a=o/2,c=c||d[r+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(e.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&d[r-1]&1||n===(e.s<0?8:7)),d.length=r,c)for(;++d[--r]>o-1;)d[r]=0,r||(++i,d.unshift(1));for(u=d.length;!d[u-1];--u);for(s=0,l="";s<u;s++)l+=Mt.charAt(d[s]);if(g){if(u>1)if(t==16||t==8){for(s=t==16?4:3,--u;u%s;u++)l+="0";for(d=ut(l,o,t),u=d.length;!d[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Mt.charAt(d[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(i<0?"p":"p+")+i}else if(i<0){for(;++i;)l="0"+l;l="0."+l}else if(++i>u)for(i-=u;i--;)l+="0";else i<u&&(l=l.slice(0,i)+"."+l.slice(i))}l=(t==16?"0x":t==2?"0b":t==8?"0o":"")+l}return e.s<0?"-"+l:l}function Lr(e,t){if(e.length>t)return e.length=t,!0}function Wn(e){return new this(e).abs()}function Un(e){return new this(e).acos()}function Hn(e){return new this(e).acosh()}function qn(e,t){return new this(e).plus(t)}function Gn(e){return new this(e).asin()}function jn(e){return new this(e).asinh()}function Yn(e){return new this(e).atan()}function zn(e){return new this(e).atanh()}function Xn(e,t){e=new this(e),t=new this(t);var r,n=this.precision,o=this.rounding,i=n+4;return!e.s||!t.s?r=new this(NaN):!e.d&&!t.d?(r=le(this,i,1).times(t.s>0?.25:.75),r.s=e.s):!t.d||e.isZero()?(r=t.s<0?le(this,n,o):new this(0),r.s=e.s):!e.d||t.isZero()?(r=le(this,i,1).times(.5),r.s=e.s):t.s<0?(this.precision=i,this.rounding=1,r=this.atan(Y(e,t,i,1)),t=le(this,i,1),this.precision=n,this.rounding=o,r=e.s<0?r.minus(t):r.plus(t)):r=this.atan(Y(e,t,i,1)),r}function Zn(e){return new this(e).cbrt()}function Qn(e){return I(e=new this(e),e.e+1,2)}function Jn(e,t,r){return new this(e).clamp(t,r)}function $n(e){if(!e||typeof e!="object")throw Error(ft+"Object expected");var t,r,n,o=e.defaults===!0,i=["precision",1,ke,"rounding",0,8,"toExpNeg",-De,0,"toExpPos",0,De,"maxE",0,De,"minE",-De,0,"modulo",0,9];for(t=0;t<i.length;t+=3)if(r=i[t],o&&(this[r]=Dt[r]),(n=e[r])!==void 0)if(ne(n)===n&&n>=i[t+1]&&n<=i[t+2])this[r]=n;else throw Error(Ae+r+": "+n);if(r="crypto",o&&(this[r]=Dt[r]),(n=e[r])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[r]=!0;else throw Error(Nr);else this[r]=!1;else throw Error(Ae+r+": "+n);return this}function eo(e){return new this(e).cos()}function to(e){return new this(e).cosh()}function vr(e){var t,r,n;function o(i){var s,a,u,c=this;if(!(c instanceof o))return new o(i);if(c.constructor=o,_r(i)){c.s=i.s,R?!i.d||i.e>o.maxE?(c.e=NaN,c.d=null):i.e<o.minE?(c.e=0,c.d=[0]):(c.e=i.e,c.d=i.d.slice()):(c.e=i.e,c.d=i.d?i.d.slice():i.d);return}if(u=typeof i,u==="number"){if(i===0){c.s=1/i<0?-1:1,c.e=0,c.d=[0];return}if(i<0?(i=-i,c.s=-1):c.s=1,i===~~i&&i<1e7){for(s=0,a=i;a>=10;a/=10)s++;R?s>o.maxE?(c.e=NaN,c.d=null):s<o.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[i]):(c.e=s,c.d=[i]);return}if(i*0!==0){i||(c.s=NaN),c.e=NaN,c.d=null;return}return ct(c,i.toString())}if(u==="string")return(a=i.charCodeAt(0))===45?(i=i.slice(1),c.s=-1):(a===43&&(i=i.slice(1)),c.s=1),Cr.test(i)?ct(c,i):vn(c,i);if(u==="bigint")return i<0?(i=-i,c.s=-1):c.s=1,ct(c,i.toString());throw Error(Ae+i)}if(o.prototype=y,o.ROUND_UP=0,o.ROUND_DOWN=1,o.ROUND_CEIL=2,o.ROUND_FLOOR=3,o.ROUND_HALF_UP=4,o.ROUND_HALF_DOWN=5,o.ROUND_HALF_EVEN=6,o.ROUND_HALF_CEIL=7,o.ROUND_HALF_FLOOR=8,o.EUCLID=9,o.config=o.set=$n,o.clone=vr,o.isDecimal=_r,o.abs=Wn,o.acos=Un,o.acosh=Hn,o.add=qn,o.asin=Gn,o.asinh=jn,o.atan=Yn,o.atanh=zn,o.atan2=Xn,o.cbrt=Zn,o.ceil=Qn,o.clamp=Jn,o.cos=eo,o.cosh=to,o.div=ro,o.exp=no,o.floor=oo,o.hypot=io,o.ln=so,o.log=ao,o.log10=co,o.log2=uo,o.max=lo,o.min=po,o.mod=fo,o.mul=mo,o.pow=go,o.random=ho,o.round=yo,o.sign=bo,o.sin=wo,o.sinh=To,o.sqrt=Po,o.sub=xo,o.sum=So,o.tan=Ao,o.tanh=ko,o.trunc=Io,e===void 0&&(e={}),e&&e.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],t=0;t<n.length;)e.hasOwnProperty(r=n[t++])||(e[r]=this[r]);return o.config(e),o}function ro(e,t){return new this(e).div(t)}function no(e){return new this(e).exp()}function oo(e){return I(e=new this(e),e.e+1,3)}function io(){var e,t,r=new this(0);for(R=!1,e=0;e<arguments.length;)if(t=new this(arguments[e++]),t.d)r.d&&(r=r.plus(t.times(t)));else{if(t.s)return R=!0,new this(1/0);r=t}return R=!0,r.sqrt()}function _r(e){return e instanceof qe||e&&e.toStringTag===Er||!1}function so(e){return new this(e).ln()}function ao(e,t){return new this(e).log(t)}function uo(e){return new this(e).log(2)}function co(e){return new this(e).log(10)}function lo(){return Dr(this,arguments,-1)}function po(){return Dr(this,arguments,1)}function fo(e,t){return new this(e).mod(t)}function mo(e,t){return new this(e).mul(t)}function go(e,t){return new this(e).pow(t)}function ho(e){var t,r,n,o,i=0,s=new this(1),a=[];if(e===void 0?e=this.precision:ie(e,1,ke),n=Math.ceil(e/_),this.crypto)if(crypto.getRandomValues)for(t=crypto.getRandomValues(new Uint32Array(n));i<n;)o=t[i],o>=429e7?t[i]=crypto.getRandomValues(new Uint32Array(1))[0]:a[i++]=o%1e7;else if(crypto.randomBytes){for(t=crypto.randomBytes(n*=4);i<n;)o=t[i]+(t[i+1]<<8)+(t[i+2]<<16)+((t[i+3]&127)<<24),o>=214e7?crypto.randomBytes(4).copy(t,i):(a.push(o%1e7),i+=4);i=n/4}else throw Error(Nr);else for(;i<n;)a[i++]=Math.random()*1e7|0;for(n=a[--i],e%=_,n&&e&&(o=ee(10,_-e),a[i]=(n/o|0)*o);a[i]===0;i--)a.pop();if(i<0)r=0,a=[0];else{for(r=-1;a[0]===0;r-=_)a.shift();for(n=1,o=a[0];o>=10;o/=10)n++;n<_&&(r-=_-n)}return s.e=r,s.d=a,s}function yo(e){return I(e=new this(e),e.e+1,this.rounding)}function bo(e){return e=new this(e),e.d?e.d[0]?e.s:0*e.s:e.s||NaN}function wo(e){return new this(e).sin()}function To(e){return new this(e).sinh()}function Po(e){return new this(e).sqrt()}function xo(e,t){return new this(e).sub(t)}function So(){var e=0,t=arguments,r=new this(t[e]);for(R=!1;r.s&&++e<t.length;)r=r.plus(t[e]);return R=!0,I(r,this.precision,this.rounding)}function Ao(e){return new this(e).tan()}function ko(e){return new this(e).tanh()}function Io(e){return I(e=new this(e),e.e+1,1)}y[Symbol.for("nodejs.util.inspect.custom")]=y.toString;y[Symbol.toStringTag]="Decimal";var qe=y.constructor=vr(Dt);lt=new qe(lt);dt=new qe(dt);var Ft=qe;import Ko from"big.js";import bt from"bn.js";import Lo from"toformat";var _o=Lo,Ge=_o;import yt from"big.js";import Ro from"bn.js";import No from"decimal.js-light";import je from"bn.js";var Fr=9007199254740991;function D(e){let t=Q("CobaltX_parseBigNumberish");if(e instanceof je)return e;if(typeof e=="string"){if(e.match(/^-?[0-9]+$/))return new je(e);t.logWithError(`invalid BigNumberish string: ${e}`)}return typeof e=="number"?(e%1&&t.logWithError(`BigNumberish number underflow: ${e}`),(e>=Fr||e<=-Fr)&&t.logWithError(`BigNumberish number overflow: ${e}`),new je(String(e))):typeof e=="bigint"?new je(e.toString()):(t.error(`invalid BigNumberish value: ${e}`),new je(0))}var ht=Q("module/fraction"),Wt=Ge(yt),Ye=Ge(No),Eo={[0]:Ye.ROUND_DOWN,[1]:Ye.ROUND_HALF_UP,[2]:Ye.ROUND_UP},Co={[0]:yt.roundDown,[1]:yt.roundHalfUp,[2]:yt.roundUp},G=class{constructor(t,r=new Ro(1)){this.numerator=D(t),this.denominator=D(r)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(t){let r=t instanceof G?t:new G(D(t));return this.denominator.eq(r.denominator)?new G(this.numerator.add(r.numerator),this.denominator):new G(this.numerator.mul(r.denominator).add(r.numerator.mul(this.denominator)),this.denominator.mul(r.denominator))}sub(t){let r=t instanceof G?t:new G(D(t));return this.denominator.eq(r.denominator)?new G(this.numerator.sub(r.numerator),this.denominator):new G(this.numerator.mul(r.denominator).sub(r.numerator.mul(this.denominator)),this.denominator.mul(r.denominator))}mul(t){let r=t instanceof G?t:new G(D(t));return new G(this.numerator.mul(r.numerator),this.denominator.mul(r.denominator))}div(t){let r=t instanceof G?t:new G(D(t));return new G(this.numerator.mul(r.denominator),this.denominator.mul(r.numerator))}toSignificant(t,r={groupSeparator:""},n=1){Number.isInteger(t)||ht.logWithError(`${t} is not an integer.`),t<=0&&ht.logWithError(`${t} is not positive.`),Ye.set({precision:t+1,rounding:Eo[n]});let o=new Ye(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(t);return o.toFormat(o.decimalPlaces(),r)}toFixed(t,r={groupSeparator:""},n=1){return Number.isInteger(t)||ht.logWithError(`${t} is not an integer.`),t<0&&ht.logWithError(`${t} is negative.`),Wt.DP=t,Wt.RM=Co[n]||1,new Wt(this.numerator.toString()).div(this.denominator.toString()).toFormat(t,r)}isZero(){return this.numerator.isZero()}};var Mo=Q("CobaltX_amount"),Wr=Ge(Ko);function Do(e,t){let r="0",n="0";if(e.includes(".")){let o=e.split(".");o.length===2?([r,n]=o,n=n.padEnd(t,"0")):Mo.logWithError(`invalid number string, num: ${e}`)}else r=e;return[r,n.slice(0,t)||n]}var me=class extends G{constructor(r,n,o=!0,i){let s=new bt(0),a=Ut.pow(new bt(r.decimals));if(o)s=D(n);else{let u=new bt(0),c=new bt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=Do(n.toString(),r.decimals);u=D(l),c=D(d)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=Q(i||"TokenAmount"),this.token=r}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(r){return this.token.equals(r.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(r.raw)}lt(r){return this.token.equals(r.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(r.raw)}add(r){return this.token.equals(r.token)||this.logger.logWithError("add token not equals"),new me(this.token,this.raw.add(r.raw))}subtract(r){return this.token.equals(r.token)||this.logger.logWithError("sub token not equals"),new me(this.token,this.raw.sub(r.raw))}toSignificant(r=this.token.decimals,n,o=0){return super.toSignificant(r,n,o)}toFixed(r=this.token.decimals,n,o=0){return r>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(r,n,o)}toExact(r={groupSeparator:""}){return Wr.DP=this.token.decimals,new Wr(this.numerator.toString()).div(this.denominator.toString()).toFormat(r)}};import{TOKEN_PROGRAM_ID as Vo}from"@solana/spl-token";import{PublicKey as vs}from"@solana/web3.js";import{PublicKey as ge}from"@solana/web3.js";var Oo={["sooneth"]:{NATIVE_TOKEN_SYMBOL:"ETH",SWAP_HOST:"https://trade-api.cobaltx.io",BASE_HOST:"https://api.cobaltx.io",OWNER_BASE_HOST:"https://api.cobaltx.io",SERVICE_BASE_HOST:"https://api.cobaltx.io",MONITOR_BASE_HOST:"https://api.cobaltx.io",SERVICE_1_BASE_HOST:"https://api.cobaltx.io",ANALYTICS_BASE_HOST:"https://api.cobaltx.io",GITHUB_TOKEN_LIST_URL:"https://raw.githubusercontent.com/cobaltx-io/tokens/main/tokens.json",WSOL_MINT_ADDRESS:"So11111111111111111111111111111111111111112",GITHUB_LOGO_URL:"https://raw.githubusercontent.com/cobaltx-io/tokens/main/logo/So11111111111111111111111111111111111111112.png",LOOKUP_TABLE_CACHE:"6fa5xTGwoYJPMLMXaQ4tQFKMoYvXuvsJFLigMJ9a5QeB",CLMM_PROGRAMM_ID:"2TnjBuwqyBB9to5jURagDT7jLmBPefGRiKL2yh1zPZ4V",BONK_MINT_ADDRESS:"71kRXzJMvSeArtXYNEWa8KAjpRJosdMQ7Dpgy5Jt5zfd",SOL_MINT_ADDRESS:"ERFzpDteGNo8LTDKW1WwVGrkRMmA2y9WZHXNHxMA6BSV",USDC_MINT_ADDRESS:"ExYxyorY2x3h8gLcuypnHFQV3F36rmMkQVn7HHV8mUy9",USDT_MINT_ADDRESS:"742wcXVzkhNuEePAot7L3GvPseh93pvYFPgyHLX8mUy9",FULL_TOKEN_NAME:"Wrapped Ethereum",ETH_MINT_ADDRESS:"71kRXzJMvSeArtXYNEWa8KAjpRJosdMQ7Dpgy5Jt5zfd",WRAPPED_TOKEN_SYMBOL:"WETH",INPUT_MINT_ADDRESS:ge.default.toString(),OUTPUT_MINT_ADDRESS:"742wcXVzkhNuEePAot7L3GvPseh93pvYFPgyHLX8mUy9",POPULAR_TOKENS:{SOL:ge.default.toString(),ETH:"71kRXzJMvSeArtXYNEWa8KAjpRJosdMQ7Dpgy5Jt5zfd",USDC:"ExYxyorY2x3h8gLcuypnHFQV3F36rmMkQVn7HHV8KjtA",USDT:"742wcXVzkhNuEePAot7L3GvPseh93pvYFPgyHLX8mUy9"},WSOL_DECIMALS:9},["svmbnb"]:{NATIVE_TOKEN_SYMBOL:"BNB",SWAP_HOST:"https://trade-api.svmbnb.cobaltx.io",BASE_HOST:"https://api.svmbnb.cobaltx.io",OWNER_BASE_HOST:"https://api.svmbnb.cobaltx.io",SERVICE_BASE_HOST:"https://api.svmbnb.cobaltx.io",MONITOR_BASE_HOST:"https://api.svmbnb.cobaltx.io",SERVICE_1_BASE_HOST:"https://api.svmbnb.cobaltx.io",ANALYTICS_BASE_HOST:"https://api.svmbnb.cobaltx.io",GITHUB_TOKEN_LIST_URL:"https://raw.githubusercontent.com/cobaltx-io/svmbnb-tokens/main/tokens.json",WSOL_MINT_ADDRESS:"So11111111111111111111111111111111111111112",GITHUB_LOGO_URL:"https://raw.githubusercontent.com/cobaltx-io/svmbnb-tokens/main/logo/So11111111111111111111111111111111111111112.svg",LOOKUP_TABLE_CACHE:"GSR5XQGWhpzV9TTduBJR6qPNjYsepMQSGkpaqfrbrW9w",CLMM_PROGRAMM_ID:"6f1b3xyVZbnWMHXBjgW1KPwxmPAgXcRdrvKNn4Nmf1Cn",ETH_MINT_ADDRESS:"H3xpFH1yN5E1zFdAoBrC9Y7m7RfJUeQNLvkHi8kNf9Qu",USDC_MINT_ADDRESS:"5odzAHDpDETYhupMkc6kjiYen3K2nrf8oPmvqmsoNW4L",USDT_MINT_ADDRESS:"s8cRDxnp3VxjB6khRnGDdxv6QbCUPyY9Vn1bgSQQsnG",SOL_MINT_ADDRESS:"So11111111111111111111111111111111111111112",FULL_TOKEN_NAME:"Wrapped BNB",WRAPPED_TOKEN_SYMBOL:"WBNB",INPUT_MINT_ADDRESS:ge.default.toBase58(),OUTPUT_MINT_ADDRESS:"ABoT7umUXnx8RtJTeRqKB6myebVjP2wdJGQuV23jVVH3",POPULAR_TOKENS:{SOL:ge.default.toString(),ETH:"H3xpFH1yN5E1zFdAoBrC9Y7m7RfJUeQNLvkHi8kNf9Qu",USDC:"5odzAHDpDETYhupMkc6kjiYen3K2nrf8oPmvqmsoNW4L",USDT:"s8cRDxnp3VxjB6khRnGDdxv6QbCUPyY9Vn1bgSQQsnG"},WSOL_DECIMALS:9},["svmbnb_testnet"]:{NATIVE_TOKEN_SYMBOL:"BNB",SWAP_HOST:"https://trade-api.svmbnb.cobaltx.io",BASE_HOST:"https://api.testnet.svmbnb.cobaltx.io",OWNER_BASE_HOST:"https://api.testnet.svmbnb.cobaltx.io",SERVICE_BASE_HOST:"https://api.testnet.svmbnb.cobaltx.io",MONITOR_BASE_HOST:"https://api.testnet.svmbnb.cobaltx.io",SERVICE_1_BASE_HOST:"https://api.testnet.svmbnb.cobaltx.io",ANALYTICS_BASE_HOST:"https://api.testnet.svmbnb.cobaltx.io",GITHUB_TOKEN_LIST_URL:"https://raw.githubusercontent.com/cobaltx-io/svmbnb-testnet-tokens/main/tokens.json",WSOL_MINT_ADDRESS:"So11111111111111111111111111111111111111112",GITHUB_LOGO_URL:"https://raw.githubusercontent.com/cobaltx-io/svmbnb-testnet-tokens/main/logo/So11111111111111111111111111111111111111112.svg",LOOKUP_TABLE_CACHE:"D79gSiTNV9pyLPJyscW5yZYwdPVDrtKsamL3ZfQi6JiM",CLMM_PROGRAMM_ID:"FgycD57kcCZsjpoTAi2u67GTPxm59bPEhycL2Lw1icm1",ETH_MINT_ADDRESS:"5aLr3sV4UNVcMB6CiA3PZTWbgVBRNyMdEp1s5LNfhR95",USDC_MINT_ADDRESS:"jrhUNRxEDpFmGV3sqaWyveS7bVtRQgtHsfBTCdjfMBw",USDT_MINT_ADDRESS:"Ex86C4gmdjvPRNrfyvsyejbjkP6RstNaBC5g3itZw2iv",FULL_TOKEN_NAME:"Wrapped BNB",WRAPPED_TOKEN_SYMBOL:"WBNB",INPUT_MINT_ADDRESS:"bnb",OUTPUT_MINT_ADDRESS:"jrhUNRxEDpFmGV3sqaWyveS7bVtRQgtHsfBTCdjfMBw",POPULAR_TOKENS:{SOL:ge.default.toString(),ETH:"5aLr3sV4UNVcMB6CiA3PZTWbgVBRNyMdEp1s5LNfhR95",USDC:"jrhUNRxEDpFmGV3sqaWyveS7bVtRQgtHsfBTCdjfMBw",USDT:"Ex86C4gmdjvPRNrfyvsyejbjkP6RstNaBC5g3itZw2iv"},WSOL_DECIMALS:9},["svmbase_testnet"]:{NATIVE_TOKEN_SYMBOL:"ETH",SWAP_HOST:"https://trade-api.testnet.svmbase.cobaltx.io",BASE_HOST:"https://api.testnet.svmbase.cobaltx.io",OWNER_BASE_HOST:"https://api.testnet.svmbase.cobaltx.io",SERVICE_BASE_HOST:"https://api.testnet.svmbase.cobaltx.io",MONITOR_BASE_HOST:"https://api.testnet.svmbase.cobaltx.io",SERVICE_1_BASE_HOST:"https://api.testnet.svmbase.cobaltx.io",ANALYTICS_BASE_HOST:"https://api.testnet.svmbase.cobaltx.io",GITHUB_TOKEN_LIST_URL:"https://raw.githubusercontent.com/cobaltx-io/svmbase-testnet-tokens/main/tokens.json",WSOL_MINT_ADDRESS:"So11111111111111111111111111111111111111112",GITHUB_LOGO_URL:"https://raw.githubusercontent.com/cobaltx-io/svmbase-testnet-tokens/main/logo/So11111111111111111111111111111111111111112.png",LOOKUP_TABLE_CACHE:"AyPMvNmUUY2jwZ75NxhkLYPraQGNk5DssVfP4TnMcPJF",CLMM_PROGRAMM_ID:"DnZnBqJKiGSYHUHYvkXAbQmkMbwrjfgo4orR7jWyMsik",ETH_MINT_ADDRESS:"71kRXzJMvSeArtXYNEWa8KAjpRJosdMQ7Dpgy5Jt5zfd",USDC_MINT_ADDRESS:"63tPXWPnYeZ9hA3dJsAY5RcQ8YbwEz8uZ5nKu3uFD1aK",USDT_MINT_ADDRESS:"4fyX7hSmPetQC2wRS3YVAhWeFzif7WStarKwTvCXrBtD",FULL_TOKEN_NAME:"Wrapped Ethereum",WRAPPED_TOKEN_SYMBOL:"WETH",INPUT_MINT_ADDRESS:ge.default.toString(),OUTPUT_MINT_ADDRESS:"63tPXWPnYeZ9hA3dJsAY5RcQ8YbwEz8uZ5nKu3uFD1aK",POPULAR_TOKENS:{SOL:ge.default.toString(),ETH:"So11111111111111111111111111111111111111112",USDC:"63tPXWPnYeZ9hA3dJsAY5RcQ8YbwEz8uZ5nKu3uFD1aK",USDT:"4fyX7hSmPetQC2wRS3YVAhWeFzif7WStarKwTvCXrBtD"},WSOL_DECIMALS:9},["soonbase_mainnet"]:{NATIVE_TOKEN_SYMBOL:"ETH",SWAP_HOST:"https://trade-api.soonbase.cobaltx.io",BASE_HOST:"https://api.soonbase.cobaltx.io",OWNER_BASE_HOST:"https://api.soonbase.cobaltx.io",SERVICE_BASE_HOST:"https://api.soonbase.cobaltx.io",MONITOR_BASE_HOST:"https://api.soonbase.cobaltx.io",SERVICE_1_BASE_HOST:"https://api.soonbase.cobaltx.io",ANALYTICS_BASE_HOST:"https://api.soonbase.cobaltx.io",GITHUB_TOKEN_LIST_URL:"https://raw.githubusercontent.com/cobaltx-io/soonbase-tokens/main/tokens.json",WSOL_MINT_ADDRESS:"So11111111111111111111111111111111111111112",GITHUB_LOGO_URL:"https://raw.githubusercontent.com/cobaltx-io/soonbase-tokens/main/logo/So11111111111111111111111111111111111111112.png",LOOKUP_TABLE_CACHE:"FGRusuLycV6nhSPQc9VX55YjT6DCzJFc59mvTTarSTjK",CLMM_PROGRAMM_ID:"6f1b3xyVZbnWMHXBjgW1KPwxmPAgXcRdrvKNn4Nmf1Cn",ETH_MINT_ADDRESS:"71kRXzJMvSeArtXYNEWa8KAjpRJosdMQ7Dpgy5Jt5zfd",USDC_MINT_ADDRESS:"BoYN2f2gLQS4jpvMSV9dAZwfzKJiKGk4NPck5BjXfujo",USDT_MINT_ADDRESS:"J87bysZjwfS3n6KR21cwbdPZVJWNSFcXpWF5kiChAwQH",FULL_TOKEN_NAME:"Wrapped Ethereum",WRAPPED_TOKEN_SYMBOL:"WETH",INPUT_MINT_ADDRESS:ge.default.toString(),OUTPUT_MINT_ADDRESS:"BoYN2f2gLQS4jpvMSV9dAZwfzKJiKGk4NPck5BjXfujo",POPULAR_TOKENS:{SOL:ge.default.toString(),ETH:"FkvCG5DcuYCQ1BnPH4ZzTkCdk3VzutgyDAFBec4qAjhh",USDC:"BoYN2f2gLQS4jpvMSV9dAZwfzKJiKGk4NPck5BjXfujo",USDT:"J87bysZjwfS3n6KR21cwbdPZVJWNSFcXpWF5kiChAwQH"},WSOL_DECIMALS:9}},Ee=e=>Oo[e];function oe(e){let t=Ee(e);return{chainId:101,address:t.WSOL_MINT_ADDRESS,programId:Vo.toBase58(),decimals:9,symbol:t.WRAPPED_TOKEN_SYMBOL||"",name:t.FULL_TOKEN_NAME,logoURI:t.GITHUB_LOGO_URL,tags:[],priority:2,type:"cobaltx",extensions:{coingeckoId:"solana"}}}import{PublicKey as jt}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vo}from"@solana/spl-token";import{PublicKey as J,SystemProgram as Ur,SYSVAR_RENT_PUBKEY as Fo}from"@solana/web3.js";function h({pubkey:e,isSigner:t=!1,isWritable:r=!0}){return{pubkey:e,isWritable:r,isSigner:t}}var Ht=[h({pubkey:vo,isWritable:!1}),h({pubkey:Ur.programId,isWritable:!1}),h({pubkey:Fo,isWritable:!1})];function qt({publicKey:e,transformSol:t,network:r}){let n=Gt(e.toString());if(t&&r){let{WSOLMint:o}=Ne(r);if(n instanceof J)return t&&n.equals(te)?o:n;if(t&&n.toString()===te.toBase58())return o}else if(n instanceof J)return n;if(typeof n=="string"){if(n===J.default.toBase58())return J.default;try{return new J(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Gt(e){try{return new J(e)}catch{return e}}var Ys=new J("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),zs=new J("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Wo=new J("SysvarRent111111111111111111111111111111111"),Xs=new J("SysvarC1ock11111111111111111111111111111111"),Zs=new J("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Uo=new J("Sysvar1nstructions1111111111111111111111111"),Qs=Ur.programId,te=J.default;function Ne(e){let t=Ee(e);return{USDCMint:new J(t.USDC_MINT_ADDRESS),USDTMint:new J(t.USDT_MINT_ADDRESS),WSOLMint:new J(t.WSOL_MINT_ADDRESS),ETHMint:new J(t.ETH_MINT_ADDRESS),BONK_Mint:t.BONK_MINT_ADDRESS?new J(t.BONK_MINT_ADDRESS):J.default,SOL_Mint:t.SOL_MINT_ADDRESS?new J(t.SOL_MINT_ADDRESS):J.default,INPUT_MINT:new J(t.INPUT_MINT_ADDRESS),OUTPUT_MINT:new J(t.OUTPUT_MINT_ADDRESS)}}function at(e,t){return qt({publicKey:e,transformSol:!0,network:t})}var Ie=class{constructor({mint:t,decimals:r,symbol:n,name:o,skipMint:i=!1,isToken2022:s=!1,network:a}){if(t===te.toBase58()||t instanceof jt&&te.equals(t)&&a){this.decimals=oe(a).decimals,this.symbol=oe(a).symbol,this.name=oe(a).name,this.mint=new jt(oe(a).address),this.isToken2022=!1;return}this.decimals=r,this.symbol=n||t.toString().substring(0,6),this.name=o||t.toString().substring(0,6),this.mint=i?jt.default:qt({publicKey:t}),this.isToken2022=s}static getWSol(t){return new Ie({...oe(t),mint:oe(t).address})}equals(t){return this===t?!0:this.mint.equals(t.mint)}};import Ho from"bn.js";var Hr=new G(new Ho(100)),Ve=class extends G{toSignificant(t=5,r,n){return this.mul(Hr).toSignificant(t,r,n)}toFixed(t=2,r,n){return this.mul(Hr).toFixed(t,r,n)}};var qo=Q("CobaltX_price"),he=class extends G{constructor(r){let{baseToken:n,quoteToken:o,numerator:i,denominator:s}=r;super(i,s);this.baseToken=n,this.quoteToken=o,this.scalar=new G(Yt(n.decimals),Yt(o.decimals))}get raw(){return new G(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new he({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(r){this.quoteToken!==r.baseToken&&qo.logWithError("mul token not equals");let n=super.mul(r);return new he({baseToken:this.baseToken,quoteToken:r.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(r=this.quoteToken.decimals,n,o){return this.adjusted.toSignificant(r,n,o)}toFixed(r=this.quoteToken.decimals,n,o){return this.adjusted.toFixed(r,n,o)}};import{PublicKey as Go}from"@solana/web3.js";import jo from"bn.js";function qr(e){return typeof e=="object"&&e!==null&&![Ie,me,Go,G,jo,he,Ve].some(t=>typeof t=="object"&&e instanceof t)}function ye(e){return typeof e=="string"?Gt(e):Array.isArray(e)?e.map(t=>ye(t)):qr(e)?Object.fromEntries(Object.entries(e).map(([t,r])=>[t,ye(r)])):e}var zt=new be(0),za=new be(1),Xa=new be(2),Za=new be(3),Qa=new be(5),Ut=new be(10),Ja=new be(100),$a=new be(1e3),eu=new be(1e4);function Yt(e){return Ut.pow(D(e))}function Kt(e,t=1,r=[]){let n=[...e];if(t<=0)return r;for(;n.length;)r.push(n.splice(0,t));return r}import{PublicKey as $o}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ei}from"@solana/spl-token";import{ComputeBudgetProgram as Gr,Keypair as Yr,PublicKey as Yo,Transaction as zr,TransactionMessage as zo,VersionedTransaction as Xr}from"@solana/web3.js";var z={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee"};import{TOKEN_PROGRAM_ID as Xo}from"@solana/spl-token";var jr=Q("CobaltX_txUtil"),Zr=1644;function wt(e){let t=[],r=[];return e.microLamports&&(t.push(Gr.setComputeUnitPrice({microLamports:e.microLamports})),r.push(z.SetComputeUnitPrice)),e.units&&(t.push(Gr.setComputeUnitLimit({units:e.units})),r.push(z.SetComputeUnitLimit)),{instructions:t,instructionTypes:r}}async function ve(e,t){var n,o;let r=t!=null?t:"confirmed";return(o=await((n=e.getLatestBlockhash)==null?void 0:n.call(e,{commitment:r})))==null?void 0:o.blockhash}async function Tt(e,t){return e.getSignatureStatuses([t]),new Promise((r,n)=>{let o=setTimeout(n,6e4);e.onSignature(t,i=>{if(clearTimeout(o),!i.err){r("");return}n(i.err.toString())},"confirmed")})}function Zo(e,t){e.length<1&&jr.logWithError(`no instructions provided: ${e.toString()}`),t.length<1&&jr.logWithError(`no signers provided:, ${t.toString()}`);let r=new zr;r.recentBlockhash="11111111111111111111111111111111",r.feePayer=t[0],r.add(...e);try{return Buffer.from(r.serialize({verifySignatures:!1})).toString("base64").length<Zr}catch{return!1}}function Ce(e,t){let[r,n]=Yo.findProgramAddressSync(e,t);return{publicKey:r,nonce:n}}function ze({instructions:e,payer:t,signers:r}){return Zo(e,[t,...r])}function Xe({instructions:e,payer:t,lookupTableAddressAccount:r,recentBlockhash:n=Yr.generate().publicKey.toString()}){let i=new zo({payerKey:t,recentBlockhash:n,instructions:e}).compileToV0Message(Object.values(r!=null?r:{}));try{return Buffer.from(new Xr(i).serialize()).toString("base64").length<Zr}catch{return!1}}var Qo=e=>Buffer.isBuffer(e)?e:e instanceof Uint8Array?Buffer.from(e.buffer,e.byteOffset,e.byteLength):Buffer.from(e),Jo=e=>{let t=e.serialize({requireAllSignatures:!1,verifySignatures:!1});e instanceof Xr&&(t=Qo(t));try{return t instanceof Buffer?t.toString("base64"):Buffer.from(t).toString("base64")}catch{return t.toString("base64")}};function Ke(e){let t=[];return e.forEach(r=>{r instanceof zr&&(r.recentBlockhash||(r.recentBlockhash=Xo.toBase58()),r.feePayer||(r.feePayer=Yr.generate().publicKey)),t.push(Jo(r))}),console.log("simulate tx string:",t),t}function Fe(e,t,r){return Ce([e.toBuffer(),(r!=null?r:ei).toBuffer(),t.toBuffer()],new $o("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as M}from"@solana/web3.js";var Qr=new M("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Jr=new M("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),$r=new M("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ze=new M("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),xu=new M("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Su=new M("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Au=new M("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ku=new M("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Iu=new M("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Lu=new M("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo");var _u=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Bu=new M("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Ru=new M("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Nu=new M("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Eu=new M("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Cu=new M("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ku=new M("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Mu=new M("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Du=new M("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ou=new M("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Vu=new M("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ti=new M("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),ri=new M("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),ni=new M("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),vu=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),oi=new M("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),Fu=new M("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),ii=new M("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var Wu={SERUM_MARKET:M.default,OPENBOOK_MARKET:new M("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:M.default,FarmV3:new M("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new M("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new M("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new M("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new M("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new M("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new M("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new M("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new M("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ti,CREATE_CPMM_POOL_AUTH:ri,CREATE_CPMM_POOL_FEE_ACC:ni,FEE_DESTINATION_ID:new M("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:oi,LCOK_CPMM_AUTH:ii};import qu from"bn.js";import{PublicKey as en,AddressLookupTableAccount as Pt}from"@solana/web3.js";async function Xt({connection:e,address:t,network:r}){let n=await kr(e,[...new Set(t.map(i=>i.toString()))].map(i=>new en(i))),o={};for(let i=0;i<t.length;i++){let s=n[i],a=t[i];if(!s)continue;let u=new Pt({key:a,state:Pt.deserialize(s.data)});o[a.toString()]=u,xt(r)[a.toString()]=u}return o}function xt(e){let t=Ee(e);return{[t.LOOKUP_TABLE_CACHE]:new Pt({key:new en(t.LOOKUP_TABLE_CACHE),state:Pt.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})}}import{PublicKey as Qe,sendAndConfirmTransaction as Zt,Transaction as Je,TransactionMessage as $e,VersionedTransaction as et}from"@solana/web3.js";import ai from"axios";var St=class{constructor(t){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=t.connection,this.feePayer=t.feePayer,this.signAllTransactions=t.signAllTransactions,this.owner=t.owner,this.cluster=t.cluster,this.blockhashCommitment=t.blockhashCommitment,this.api=t.api,this.network=t.network}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let t=(await ai.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:r}=(n=t==null?void 0:t[15])!=null?n:{};if(!!r)return{units:6e5,microLamports:Math.min(Math.ceil(r*1e6/6e5),25e3)}}addCustomComputeBudget(t){if(t){let{instructions:r,instructionTypes:n}=wt(t);return this.instructions.unshift(...r),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:t,defaultIns:r}){try{let n=t||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;r&&this.instructions.unshift(...r)}catch{r&&this.instructions.unshift(...r)}}addInstruction({instructions:t=[],endInstructions:r=[],signers:n=[],instructionTypes:o=[],endInstructionTypes:i=[],lookupTableAddress:s=[]}){return this.instructions.push(...t),this.endInstructions.push(...r),this.signers.push(...n),this.instructionTypes.push(...o),this.endInstructionTypes.push(...i),this.lookupTableAddress.push(...s.filter(a=>a!==Qe.default.toString())),this}async versionBuild({txVersion:t,extInfo:r}){return t===0?await this.buildV0({...r||{}}):this.build(r)}build(t){var n;let r=new Je;return this.allInstructions.length&&r.add(...this.allInstructions),r.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(o=>o.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:r,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async o=>{var c;let{recentBlockHash:i,skipPreflight:s=!0,sendAndConfirm:a}=o||{},u=i!=null?i:await ve(this.connection,this.blockhashCommitment);if(r.recentBlockhash=u,this.signers.length&&r.sign(...this.signers),Ke([r]),(c=this.owner)!=null&&c.isKeyPair)return{txId:a?await Zt(this.connection,r,this.signers.find(d=>d.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(r.serialize(),{skipPreflight:s}),signedTx:r};if(this.signAllTransactions){let l=await this.signAllTransactions([r]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:t||{}}}buildMultiTx(t){var c;let{extraPreBuildData:r=[],extInfo:n}=t,{transaction:o}=this.build(n),i=r.filter(l=>l.transaction.instructions.length>0),s=[o,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],u=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async l=>{var b;let{sequentially:d,onTxUpdate:p,skipTxCount:f=0,recentBlockHash:g,skipPreflight:m=!0}=l||{},T=g!=null?g:await ve(this.connection,this.blockhashCommitment);if((b=this.owner)!=null&&b.isKeyPair){if(d){let S=[],k=0;for(let w of s){if(++k,k<=f)continue;let A=await Zt(this.connection,w,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:m});S.push(A)}return{txIds:S,signedTxs:s}}return{txIds:await await Promise.all(s.map(async S=>(S.recentBlockhash=T,await this.connection.sendRawTransaction(S.serialize(),{skipPreflight:m})))),signedTxs:s}}if(this.signAllTransactions){let S=s.map((w,A)=>(w.recentBlockhash=T,a[A].length&&w.sign(...a[A]),w));Ke(S);let k=await this.signAllTransactions(S);if(d){let w=0,A=[],x=async()=>{if(!k[w])return;let L=await this.connection.sendRawTransaction(k[w].serialize(),{skipPreflight:m});A.push({txId:L,status:"sent",signedTx:k[w]}),p==null||p([...A]),w++,this.connection.onSignature(L,C=>{let U=A.findIndex(O=>O.txId===L);U>-1&&(A[U].status=C.err?"error":"success"),p==null||p([...A]),C.err||x()},"processed"),this.connection.getSignatureStatus(L)};return await x(),{txIds:A.map(L=>L.txId),signedTxs:k}}else{let w=[];for(let A=0;A<k.length;A+=1){let x=await this.connection.sendRawTransaction(k[A].serialize(),{skipPreflight:m});w.push(x)}return{txIds:w,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:t,txVersion:r,extInfo:n}){return r===0?await this.buildV0MultiTx({extraPreBuildData:t,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:t,extInfo:n})}async buildV0(t){var m;let{lookupTableCache:r={},lookupTableAddress:n=[],forerunCreate:o,recentBlockhash:i,network:s=this.network,...a}=t||{},u={...this.cluster==="devnet"?{}:xt(s),...r},c=Array.from(new Set([...n,...this.lookupTableAddress])),l=[];for(let T of c)u[T]===void 0&&l.push(new Qe(T));let d=await Xt({connection:this.connection,address:l,network:s});for(let[T,b]of Object.entries(d))u[T]=b;let p=o?Qe.default.toBase58():i!=null?i:await ve(this.connection,this.blockhashCommitment),f=new $e({payerKey:this.feePayer,recentBlockhash:p,instructions:[...this.allInstructions]}).compileToV0Message();((m=this.owner)==null?void 0:m.signer)&&!this.signers.some(T=>T.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let g=new et(f);return g.sign(this.signers),{builder:this,transaction:g,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async T=>{var k;let{skipPreflight:b=!0,sendAndConfirm:S}=T||{};if(Ke([g]),(k=this.owner)!=null&&k.isKeyPair){let w=await this.connection.sendTransaction(g,{skipPreflight:b});return S&&await Tt(this.connection,w),{txId:w,signedTx:g}}if(this.signAllTransactions){let w=await this.signAllTransactions([g]);return{txId:await this.connection.sendTransaction(w[0],{skipPreflight:b}),signedTx:w[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}async buildV0MultiTx(t){var c;let{extraPreBuildData:r=[],buildProps:n}=t,{transaction:o}=await this.buildV0(n),i=r.filter(l=>l.builder.instructions.length>0),s=[o,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],u=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,d)=>{l.sign(a[d])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async l=>{var m;let{sequentially:d,onTxUpdate:p,recentBlockHash:f,skipPreflight:g=!0}=l||{};if(f&&s.forEach(T=>T.message.recentBlockhash=f),Ke(s),(m=this.owner)!=null&&m.isKeyPair){if(d){let T=[];for(let b of s){let S=await this.connection.sendTransaction(b,{skipPreflight:g});await Tt(this.connection,S),T.push(S)}return{txIds:T,signedTxs:s}}return{txIds:await Promise.all(s.map(async T=>await this.connection.sendTransaction(T,{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let T=await this.signAllTransactions(s);if(d){let b=0,S=[],k=async()=>{if(!T[b])return;let w=await this.connection.sendTransaction(T[b],{skipPreflight:g});S.push({txId:w,status:"sent",signedTx:T[b]}),p==null||p([...S]),b++,this.connection.onSignature(w,A=>{let x=S.findIndex(L=>L.txId===w);x>-1&&(S[x].status=A.err?"error":"success"),p==null||p([...S]),A.err||k()},"processed"),this.connection.getSignatureStatus(w)};return k(),{txIds:[],signedTxs:T}}else{let b=[];for(let S=0;S<T.length;S+=1){let k=await this.connection.sendTransaction(T[S],{skipPreflight:g});b.push(k)}return{txIds:b,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(t){var d;let{splitIns:r=[],computeBudgetConfig:n,...o}=t||{},i=n?wt(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((p,f)=>({...p,[f.publicKey.toBase58()]:f}),{}),a=[],u=[],c=[],l=0;if(this.allInstructions.forEach(p=>{let f=[...c,p],g=n?[...i.instructions,...f]:f,T=[...new Set(f.map(b=>b.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat()).values()].map(b=>new Qe(b));if(p!==r[l]&&c.length<12&&(ze({instructions:g,payer:this.feePayer,signers:T})||ze({instructions:f,payer:this.feePayer,signers:T})))c.push(p);else{if(c.length===0)throw Error("item ins too big");l+=p===r[l]?1:0,ze({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:T})?a.push(new Je().add(...i.instructions,...c)):a.push(new Je().add(...c)),u.push(Array.from(new Set(c.map(b=>b.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat())).map(b=>s[b]).filter(b=>b!==void 0)),c=[p]}}),c.length>0){let f=[...new Set(c.map(g=>g.keys.filter(m=>m.isSigner).map(m=>m.pubkey.toString())).flat()).values()].map(g=>s[g]).filter(g=>g!==void 0);ze({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:f.map(g=>g.publicKey)})?a.push(new Je().add(...i.instructions,...c)):a.push(new Je().add(...c)),u.push(f)}return a.forEach(p=>p.feePayer=this.feePayer),(d=this.owner)!=null&&d.signer&&u.forEach(p=>{p.some(f=>f.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:a,signers:u,instructionTypes:this.instructionTypes,execute:async p=>{var k;let{sequentially:f,onTxUpdate:g,skipTxCount:m=0,recentBlockHash:T,skipPreflight:b=!0}=p||{},S=T!=null?T:await ve(this.connection,this.blockhashCommitment);if(a.forEach(async(w,A)=>{w.recentBlockhash=S,u[A].length&&w.sign(...u[A])}),Ke(a),(k=this.owner)!=null&&k.isKeyPair){if(f){let w=0,A=[];for(let x of a){if(++w,w<=m){A.push("tx skipped");continue}let L=await Zt(this.connection,x,this.signers.find(C=>C.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});A.push(L)}return{txIds:A,signedTxs:a}}return{txIds:await Promise.all(a.map(async w=>await this.connection.sendRawTransaction(w.serialize(),{skipPreflight:b}))),signedTxs:a}}if(this.signAllTransactions){let w=await this.signAllTransactions(a.slice(m,a.length)),A=[...a.slice(0,m),...w];if(f){let x=0,L=[],C=async()=>{if(!A[x])return;x<m&&(L.push({txId:"",status:"success",signedTx:A[x]}),g==null||g([...L]),x++,C());let U=await this.connection.sendRawTransaction(A[x].serialize(),{skipPreflight:b});L.push({txId:U,status:"sent",signedTx:A[x]}),g==null||g([...L]),x++,this.connection.onSignature(U,O=>{let K=L.findIndex(H=>H.txId===U);K>-1&&(L[K].status=O.err?"error":"success"),g==null||g([...L]),O.err||C()},"processed"),this.connection.getSignatureStatus(U)};return await C(),{txIds:L.map(U=>U.txId),signedTxs:A}}else{let x=[];for(let L=0;L<A.length;L+=1){let C=await this.connection.sendRawTransaction(A[L].serialize(),{skipPreflight:b});x.push(C)}return{txIds:x,signedTxs:A}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(t){var k;let{computeBudgetConfig:r,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:i=[],network:s=this.network,...a}=t||{},u={...this.cluster==="devnet"?{}:xt(s),...o},c=Array.from(new Set([...this.lookupTableAddress,...i])),l=[];for(let w of c)u[w]===void 0&&l.push(new Qe(w));let d=await Xt({connection:this.connection,address:l,network:s});for(let[w,A]of Object.entries(d))u[w]=A;let p=r?wt(r):{instructions:[],instructionTypes:[]},f=await ve(this.connection,this.blockhashCommitment),g=this.signers.reduce((w,A)=>({...w,[A.publicKey.toBase58()]:A}),{}),m=[],T=[],b=[],S=0;if(this.allInstructions.forEach(w=>{let A=[...b,w],x=r?[...p.instructions,...A]:A;if(w!==n[S]&&b.length<12&&(Xe({instructions:x,payer:this.feePayer,lookupTableAddressAccount:u})||Xe({instructions:A,payer:this.feePayer,lookupTableAddressAccount:u})))b.push(w);else{if(b.length===0)throw Error("item ins too big");S+=w===n[S]?1:0;let L={};for(let C of[...new Set(c)])u[C]!==void 0&&(L[C]=u[C]);if(r&&Xe({instructions:[...p.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:u,recentBlockhash:f})){let C=new $e({payerKey:this.feePayer,recentBlockhash:f,instructions:[...p.instructions,...b]}).compileToV0Message(Object.values(u));m.push(new et(C))}else{let C=new $e({payerKey:this.feePayer,recentBlockhash:f,instructions:[...b]}).compileToV0Message(Object.values(u));m.push(new et(C))}T.push(Array.from(new Set(b.map(C=>C.keys.filter(U=>U.isSigner).map(U=>U.pubkey.toString())).flat())).map(C=>g[C]).filter(C=>C!==void 0)),b=[w]}}),b.length>0){let A=[...new Set(b.map(x=>x.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat()).values()].map(x=>g[x]).filter(x=>x!==void 0);if(r&&Xe({instructions:[...p.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:u,recentBlockhash:f})){let x=new $e({payerKey:this.feePayer,recentBlockhash:f,instructions:[...p.instructions,...b]}).compileToV0Message(Object.values(u));m.push(new et(x))}else{let x=new $e({payerKey:this.feePayer,recentBlockhash:f,instructions:[...b]}).compileToV0Message(Object.values(u));m.push(new et(x))}T.push(A)}return(k=this.owner)!=null&&k.signer&&T.forEach(w=>{w.some(A=>A.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),{builder:this,transactions:m,buildProps:t,signers:T,instructionTypes:this.instructionTypes,execute:async w=>{var O;let{sequentially:A,onTxUpdate:x,skipTxCount:L=0,recentBlockHash:C,skipPreflight:U=!0}=w||{};if(m.map(async(K,H)=>{T[H].length&&K.sign(T[H]),C&&(K.message.recentBlockhash=C)}),Ke(m),(O=this.owner)!=null&&O.isKeyPair){if(A){let K=0,H=[];for(let q of m){if(++K,K<=L){console.log("skip tx: ",K),H.push("tx skipped");continue}let B=await this.connection.sendTransaction(q,{skipPreflight:U});await Tt(this.connection,B),H.push(B)}return{txIds:H,signedTxs:m}}return{txIds:await Promise.all(m.map(async K=>await this.connection.sendTransaction(K,{skipPreflight:U}))),signedTxs:m}}if(this.signAllTransactions){let K=await this.signAllTransactions(m.slice(L,m.length)),H=[...m.slice(0,L),...K];if(A){let q=0,B=[],W=async()=>{if(!H[q])return;if(q<L){B.push({txId:"",status:"success",signedTx:H[q]}),x==null||x([...B]),q++,W();return}let v=await this.connection.sendTransaction(H[q],{skipPreflight:U});B.push({txId:v,status:"sent",signedTx:H[q]}),x==null||x([...B]),q++,this.connection.onSignature(v,Re=>{let Ue=B.findIndex(Bn=>Bn.txId===v);Ue>-1&&(B[Ue].status=Re.err?"error":"success"),x==null||x([...B]),Re.err||W()},"processed"),this.connection.getSignatureStatus(v)};return W(),{txIds:[],signedTxs:H}}else{let q=[];for(let B=0;B<H.length;B+=1){let W=await this.connection.sendTransaction(H[B],{skipPreflight:U});q.push(W)}return{txIds:q,signedTxs:H}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};import{createAssociatedTokenAccountInstruction as zi}from"@solana/spl-token";import{PublicKey as j,SystemProgram as Xi}from"@solana/web3.js";function ui(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function Qt(e,...t){if(!ui(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error("Uint8Array expected of length "+t+", got length="+e.length)}function Jt(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function tn(e,t){Qt(e);let r=t.outputLen;if(e.length<r)throw new Error("digestInto() expects output buffer of length at least "+r)}function kt(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function ce(e,t){return e<<32-t|e>>>t}function ci(e){if(typeof e!="string")throw new Error("utf8ToBytes expected string, got "+typeof e);return new Uint8Array(new TextEncoder().encode(e))}function $t(e){return typeof e=="string"&&(e=ci(e)),Qt(e),e}var At=class{clone(){return this._cloneInto()}};function rn(e){let t=n=>e().update($t(n)).digest(),r=e();return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=()=>e(),t}function li(e,t,r,n){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,r,n);let o=BigInt(32),i=BigInt(4294967295),s=Number(r>>o&i),a=Number(r&i),u=n?4:0,c=n?0:4;e.setUint32(t+u,s,n),e.setUint32(t+c,a,n)}function nn(e,t,r){return e&t^~e&r}function on(e,t,r){return e&t^e&r^t&r}var It=class extends At{constructor(t,r,n,o){super(),this.blockLen=t,this.outputLen=r,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=kt(this.buffer)}update(t){Jt(this);let{view:r,buffer:n,blockLen:o}=this;t=$t(t);let i=t.length;for(let s=0;s<i;){let a=Math.min(o-this.pos,i-s);if(a===o){let u=kt(t);for(;o<=i-s;s+=o)this.process(u,s);continue}n.set(t.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===o&&(this.process(r,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){Jt(this),tn(t,this),this.finished=!0;let{buffer:r,view:n,blockLen:o,isLE:i}=this,{pos:s}=this;r[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>o-s&&(this.process(n,0),s=0);for(let d=s;d<o;d++)r[d]=0;li(n,o-8,BigInt(this.length*8),i),this.process(n,0);let a=kt(t),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<c;d++)a.setUint32(4*d,l[d],i)}digest(){let{buffer:t,outputLen:r}=this;this.digestInto(t);let n=t.slice(0,r);return this.destroy(),n}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());let{blockLen:r,buffer:n,length:o,finished:i,destroyed:s,pos:a}=this;return t.length=o,t.pos=a,t.finished=i,t.destroyed=s,o%r&&t.buffer.set(n),t}};var di=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Le=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),_e=new Uint32Array(64),er=class extends It{constructor(){super(64,32,8,!1),this.A=Le[0]|0,this.B=Le[1]|0,this.C=Le[2]|0,this.D=Le[3]|0,this.E=Le[4]|0,this.F=Le[5]|0,this.G=Le[6]|0,this.H=Le[7]|0}get(){let{A:t,B:r,C:n,D:o,E:i,F:s,G:a,H:u}=this;return[t,r,n,o,i,s,a,u]}set(t,r,n,o,i,s,a,u){this.A=t|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=i|0,this.F=s|0,this.G=a|0,this.H=u|0}process(t,r){for(let d=0;d<16;d++,r+=4)_e[d]=t.getUint32(r,!1);for(let d=16;d<64;d++){let p=_e[d-15],f=_e[d-2],g=ce(p,7)^ce(p,18)^p>>>3,m=ce(f,17)^ce(f,19)^f>>>10;_e[d]=m+_e[d-7]+g+_e[d-16]|0}let{A:n,B:o,C:i,D:s,E:a,F:u,G:c,H:l}=this;for(let d=0;d<64;d++){let p=ce(a,6)^ce(a,11)^ce(a,25),f=l+p+nn(a,u,c)+di[d]+_e[d]|0,m=(ce(n,2)^ce(n,13)^ce(n,22))+on(n,o,i)|0;l=c,c=u,u=a,a=s+f|0,s=i,i=o,o=n,n=f+m|0}n=n+this.A|0,o=o+this.B|0,i=i+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,o,i,s,a,u,c,l)}roundClean(){_e.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var sn=rn(()=>new er);import{TOKEN_PROGRAM_ID as Pi}from"@solana/spl-token";import{Keypair as xi,PublicKey as Si}from"@solana/web3.js";import ql from"bn.js";import{PublicKey as bi}from"@solana/web3.js";import ln,{isBN as dn}from"bn.js";import{bits as Oc,BitStructure as Vc,blob as pi,Blob as vc,cstr as Fc,f32 as Wc,f32be as Uc,f64 as Hc,f64be as qc,greedy as Gc,Layout as fi,ns64 as jc,ns64be as Yc,nu64 as zc,nu64be as Xc,offset as Zc,s16 as Qc,s16be as Jc,s24 as $c,s24be as el,s32 as tl,s32be as rl,s40 as nl,s40be as ol,s48 as il,s48be as sl,s8 as al,seq as mi,struct as ul,Structure as gi,u16 as cl,u16be as ll,u24 as dl,u24be as pl,u32 as fl,u32be as ml,u40 as gl,u40be as hl,u48 as yl,u48be as bl,u8 as hi,UInt as yi,union as wl,Union as Tl,unionLayoutDiscriminator as Pl,utf8 as xl}from"@solana/buffer-layout";var tr=fi,an=gi;var rr=yi;var un=hi;var cn=mi;var Me=pi;var We=class extends tr{constructor(r,n,o){super(r,o);this.blob=Me(r),this.signed=n}decode(r,n=0){let o=new ln(this.blob.decode(r,n),10,"le");return this.signed?o.fromTwos(this.span*8).clone():o}encode(r,n,o=0){return typeof r=="number"&&(r=new ln(r)),this.signed&&(r=r.toTwos(this.span*8)),this.blob.encode(r.toArrayLike(Buffer,"le",this.span),n,o)}};function $(e){return new rr(1,e)}function tt(e){return new rr(4,e)}function P(e){return new We(8,!1,e)}function we(e){return new We(16,!1,e)}function pn(e){return new We(1,!0,e)}function _t(e){return new We(8,!0,e)}var Lt=class extends tr{constructor(r,n,o,i){super(r.span,i);this.layout=r,this.decoder=n,this.encoder=o}decode(r,n){return this.decoder(this.layout.decode(r,n))}encode(r,n,o){return this.layout.encode(this.encoder(r),n,o)}getSpan(r,n){return this.layout.getSpan(r,n)}};function V(e){return new Lt(Me(32),t=>new bi(t),t=>t.toBuffer(),e)}function Bt(e){return new Lt(un(),wi,Ti,e)}function wi(e){if(e===0)return!1;if(e===1)return!0;throw new Error("Invalid bool: "+e)}function Ti(e){return e?1:0}var nr=class extends an{decode(t,r){return super.decode(t,r)}};function X(e,t,r){return new nr(e,t,r)}function Z(e,t,r){let n,o=typeof t=="number"?t:dn(t)?t.toNumber():new Proxy(t,{get(i,s){if(!n){let a=Reflect.get(i,"count");n=dn(a)?a.toNumber():a,Reflect.set(i,"count",n)}return Reflect.get(i,s)},set(i,s,a){return s==="count"&&(n=a),Reflect.set(i,s,a)}});return cn(e,o,r)}var rt=X([V("mint"),V("owner"),P("amount"),tt("delegateOption"),V("delegate"),$("state"),tt("isNativeOption"),P("isNative"),P("delegatedAmount"),tt("closeAuthorityOption"),V("closeAuthority")]);var Yl=Q("CobaltX_Util");function Rt({fromPublicKey:e,programId:t=Pi,assignSeed:r}){let n=r?btoa(r).slice(0,32):xi.generate().publicKey.toBase58().slice(0,32);return{publicKey:Ai(e,n,t),seed:n}}function Ai(e,t,r){let n=Buffer.concat([e.toBuffer(),Buffer.from(t),r.toBuffer()]),o=sn(n);return new Si(o)}import{createCloseAccountInstruction as ki,createInitializeAccountInstruction as Ii,createTransferInstruction as $l,TOKEN_PROGRAM_ID as nt}from"@solana/spl-token";import{PublicKey as Li,SystemProgram as _i}from"@solana/web3.js";import Bi from"bn.js";function Ri(e){let{mint:t,tokenAccount:r,owner:n,programId:o=nt}=e;return Ii(r,t,n,o)}function Ni(e){let{tokenAccount:t,payer:r,multiSigners:n=[],owner:o,programId:i=nt}=e;return ki(t,r,o,n,i)}async function or(e){let{connection:t,amount:r,commitment:n,payer:o,owner:i,skipCloseAccount:s,network:a}=e,u=await t.getMinimumBalanceForRentExemption(rt.span,n),c=D(r).add(new Bi(u)),l=Rt({fromPublicKey:o,programId:nt});return{addresses:{newAccount:l.publicKey},signers:[],instructions:[_i.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:l.seed,newAccountPubkey:l.publicKey,lamports:c.toNumber(),space:rt.span,programId:nt}),Ri({mint:new Li(oe(a).address),tokenAccount:l.publicKey,owner:i,programId:nt})],instructionTypes:[z.CreateAccount,z.InitAccount],endInstructionTypes:s?[]:[z.CloseAccount],endInstructions:s?[]:[Ni({tokenAccount:l.publicKey,payer:o,owner:i})]}}var ir=(...e)=>e.map(t=>{try{return typeof t=="object"?JSON.stringify(t):t}catch{return t}}).join(", "),ot=class{constructor({scope:t,moduleName:r,network:n}){this.disabled=!1;this.scope=t,this.logger=Q(r),this.network=n}createTxBuilder(t){return this.scope.checkOwner(),new St({connection:this.scope.connection,feePayer:t||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions,network:this.network})}logDebug(...t){this.logger.debug(ir(t))}logInfo(...t){this.logger.info(ir(t))}logAndCreateError(...t){let r=ir(t);throw new Error(r)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as gn}from"@solana/web3.js";var sr=X([$("instruction")]),ar=X([$("instruction")]),Ei=X([P("rewardState"),P("rewardOpenTime"),P("rewardEndTime"),P("rewardLastUpdateTime"),P("totalReward"),P("totalRewardEmissioned"),P("rewardClaimed"),P("rewardPerSecond"),we("accRewardPerShare"),V("rewardVault"),V("rewardMint"),V("rewardSender"),P("rewardType"),Z(P(),15,"padding")]),Ci=X([P("state"),P("nonce"),V("lpVault"),V("rewardVault"),V(),V(),P(),P(),P("totalReward"),we("perShareReward"),P("lastSlot"),P("perSlotReward")]),Ki=X([P("state"),P("nonce"),V("lpVault"),V("rewardVaultA"),P("totalRewardA"),we("perShareRewardA"),P("perSlotRewardA"),$("option"),V("rewardVaultB"),Me(7),P("totalRewardB"),we("perShareRewardB"),P("perSlotRewardB"),P("lastSlot"),V()]),Mi=X([P(),P("state"),P("nonce"),P("validRewardTokenNum"),we("rewardMultiplier"),P("rewardPeriodMax"),P("rewardPeriodMin"),P("rewardPeriodExtend"),V("lpMint"),V("lpVault"),Z(Ei,5,"rewardInfos"),V("creator"),V(),Z(P(),32,"padding")]),Di=new Proxy(Ci,{get(e,t,r){return t==="decode"?(...n)=>{let o=e.decode(...n);return{...o,version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]}}:Reflect.get(e,t,r)}}),Oi=new Proxy(Ki,{get(e,t,r){return t==="decode"?(...n)=>{let o=e.decode(...n);return{...o,version:5,rewardInfos:[{rewardVault:o.rewardVaultA,totalReward:o.totalRewardA,perSlotReward:o.perSlotRewardA,perShareReward:o.perShareRewardA},{rewardVault:o.rewardVaultB,totalReward:o.totalRewardB,perSlotReward:o.perSlotRewardB,perShareReward:o.perShareRewardB}]}}:Reflect.get(e,t,r)}}),Nt=new Proxy(Mi,{get(e,t,r){return t==="decode"?(...n)=>{let o=e.decode(...n);return{...o,version:6,rewardInfos:o.rewardInfos.map(i=>{var s;return{...i,rewardType:((s=Object.entries(Be).find(a=>String(a[1])===i.rewardType.toString()))!=null?s:["Standard SPL"])[0]}})}}:Reflect.get(e,t,r)}}),Vi=X([P("isSet"),P("rewardPerSecond"),P("rewardOpenTime"),P("rewardEndTime"),P("rewardType")]),ur=X([$("instruction"),P("nonce"),Z(Vi,5,"rewardTimeInfo")]),cr=X([$("instruction"),P("rewardReopenTime"),P("rewardEndTime"),P("rewardPerSecond")]),lr=X([$("instruction"),P("isSet"),P("rewardPerSecond"),P("rewardOpenTime"),P("rewardEndTime"),P("rewardType")]),wd=X([P("state"),V("id"),V("owner"),P("deposited"),Z(P(),1,"rewardDebts")]),dr=X([P("state"),V("id"),V("owner"),P("deposited"),Z(we(),1,"rewardDebts"),P(""),P("voteLockedBalance"),Z(P(),15)]),Td=X([P("state"),V("id"),V("owner"),P("deposited"),Z(P(),2,"rewardDebts")]),fn=X([P("state"),V("id"),V("owner"),P("deposited"),Z(we(),2,"rewardDebts"),Z(P(),17)]),mn=X([P(),P("state"),V("id"),V("owner"),P("deposited"),Z(we(),5,"rewardDebts"),Z(P(),16)]),se=X([$("instruction"),P("amount")]),vi=X([V("mint"),V("grantAuthority"),P("baselineVoteWeightScaledFactor"),P("maxExtraLockupVoteWeightScaledFactor"),P("lockupSaturationSecs"),pn("digitShift"),Z($(),7,"reserved1"),Z(P(),7,"reserved2")]),Fi=X([Me(8),V("governanceProgramId"),V("realm"),V("realmGoverningTokenMint"),V("realmAuthority"),Z($(),32,"reserved1"),Z(vi,4,"votingMints"),_t("timeOffset"),$("bump"),Z($(),7,"reserved2"),Z(P(),11,"reserved3")]),Wi=X([_t("startTime"),_t("endTime"),$("kind"),Z($(),15,"reserved")]),Ui=X([Z(Wi,1,"lockup"),P("amountDeposited_native"),P("amountInitiallyLockedNative"),Bt("isUsed"),Bt("allowClawback"),$("votingMintConfigIdx"),Z($(),29,"reserved")]),Hi=X([Me(8),V("voterAuthority"),V("registrar"),Z(Ui,32,"deposits"),$("voterBump"),$("voterWweightRecordBump"),Z($(),94,"reserved")]);var _d=Q("CobaltX_farm_config"),hn=new gn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),yn=new gn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var bn={3:dr,5:fn,6:mn},pr=e=>[3,4,5,6].indexOf(e)!==-1,fr=e=>{var s;let{version:t,rewardInfos:r,rewardTokenAccountsPublicKeys:n}=e,o=`rewardInfo:${JSON.stringify(r)}, rewardAccount:${JSON.stringify(n)}`,i={3:()=>{if(r.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${o}`},5:()=>{if(r.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${o}`},6:()=>{if(!n.length||r.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${o}`}};return(s=i[t])==null?void 0:s.call(i)},Be={"Standard SPL":0,"Option tokens":1},Te={[Qr.toString()]:3,[Jr.toString()]:4,[$r.toString()]:5,[Ze.toString()]:6};import{ASSOCIATED_TOKEN_PROGRAM_ID as op,createAssociatedTokenAccountInstruction as ip,TOKEN_PROGRAM_ID as Pe}from"@solana/spl-token";import{PublicKey as F,SystemProgram as Pn,SYSVAR_CLOCK_PUBKEY as st,SYSVAR_RENT_PUBKEY as ji,TransactionInstruction as ae}from"@solana/web3.js";import xn from"bn.js";import qi from"bn.js";var Gi=Q("CobaltX.farm.util");function it({programId:e,poolId:t,mint:r,type:n}){let{publicKey:o}=Ce([t.toBuffer(),r.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],e);return o}function pe({programId:e,poolId:t,owner:r,version:n}){let{publicKey:o}=Ce([t.toBuffer(),r.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],e);return o}var wn=({programId:e,poolId:t})=>Ce([t.toBuffer()],e);function Tn(e){return{isSet:new qi(1),rewardPerSecond:D(e.perSecond),rewardOpenTime:D(e.openTime),rewardEndTime:D(e.endTime),rewardType:D(Be[e.rewardType])}}function mr(e){return D(e.endTime).sub(D(e.openTime)).mul(D(e.perSecond))}function gr(e){let t=bn[e];return t||Gi.logWithError("invalid version",e),t}var Yi=Q("CobaltX_farm_instruction"),wp={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function hr(e){let{version:t,id:r,ledger:n,programId:o,owner:i}=e,s={3:9,5:10}[t];s||Yi.logWithError(`invalid farm pool version: ${t}`);let a=Buffer.alloc(sr.span);sr.encode({instruction:s},a);let u=[h({pubkey:r}),h({pubkey:n}),h({pubkey:i,isWritable:!1}),h({pubkey:Pn.programId,isWritable:!1}),h({pubkey:ji,isWritable:!1})];return{instruction:new ae({programId:o,keys:u,data:a}),instructionType:z.FarmV3CreateLedger}}function Sn(e){var n;let t=Buffer.alloc(ur.span);ur.encode({instruction:0,nonce:new xn(e.nonce),rewardTimeInfo:e.rewardInfoConfig},t);let r=[...Ht,h({pubkey:e.farmId}),h({pubkey:e.farmAuthority,isWritable:!1}),h({pubkey:e.lpVault}),h({pubkey:e.lpMint,isWritable:!1}),h({pubkey:e.lockVault}),h({pubkey:e.lockMint,isWritable:!1}),h({pubkey:(n=e.lockUserAccount)!=null?n:te}),h({pubkey:e.owner,isWritable:!1,isSigner:!0})];for(let o of e.rewardInfo)r.push(h({pubkey:o.rewardMint,isWritable:!1}),h({pubkey:o.rewardVault}),h({pubkey:o.userRewardToken}));return{instruction:new ae({programId:e.programId,keys:r,data:t}),instructionType:z.FarmV6Create}}function An(e){let t=Buffer.alloc(ar.span);ar.encode({instruction:5},t);let r=[h({pubkey:Pe,isWritable:!1}),h({pubkey:e.id}),h({pubkey:e.authority,isWritable:!1}),h({pubkey:e.lpVault,isWritable:!1}),h({pubkey:e.rewardVault}),h({pubkey:e.userRewardToken}),h({pubkey:e.owner,isWritable:!1,isSigner:!0})];return{instruction:new ae({programId:e.programId,keys:r,data:t}),instructionType:z.FarmV6CreatorWithdraw}}function yr({payer:e,rewardVault:t,userRewardTokenPub:r,farmKeys:n,rewardInfo:o}){let i=Buffer.alloc(cr.span);cr.encode({instruction:3,rewardReopenTime:D(o.openTime),rewardEndTime:D(o.endTime),rewardPerSecond:D(o.perSecond)},i);let s=[h({pubkey:Pe,isWritable:!1}),h({pubkey:n.id}),h({pubkey:n.lpVault,isWritable:!1}),h({pubkey:t}),h({pubkey:r}),h({pubkey:e,isWritable:!1,isSigner:!0})];return new ae({programId:n.programId,keys:s,data:i})}function br({payer:e,userRewardTokenPub:t,farmKeys:r,rewardVault:n,rewardInfo:o}){let i=Buffer.alloc(lr.span);lr.encode({instruction:4,isSet:new xn(1),rewardPerSecond:D(o.perSecond),rewardOpenTime:D(o.openTime),rewardEndTime:D(o.endTime),rewardType:D(Be[o.rewardType])},i);let s=[...Ht,h({pubkey:r.id}),h({pubkey:r.authority,isWritable:!1}),h({pubkey:o.mint,isWritable:!1}),h({pubkey:n}),h({pubkey:t}),h({pubkey:e,isWritable:!1,isSigner:!0})];return new ae({programId:r.programId,keys:s,data:i})}function wr(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s}=e,[a,u]=[new F(t.programId),new F(t.id)],c=pe({programId:a,poolId:u,owner:i,version:6}),l=Buffer.alloc(se.span);se.encode({instruction:2,amount:D(s)},l);let d=[h({pubkey:Pe,isWritable:!1}),h({pubkey:u}),h({pubkey:new F(r.authority),isWritable:!1}),h({pubkey:new F(r.lpVault)}),h({pubkey:c}),h({pubkey:i,isWritable:!1,isSigner:!0}),h({pubkey:n})];for(let p=0;p<r.rewardInfos.length;p++)d.push(h({pubkey:new F(r.rewardInfos[p].vault)})),d.push(h({pubkey:o[p]}));return new ae({programId:a,keys:d,data:l})}function Tr(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=e,[u,c]=[new F(t.programId),new F(t.id)],l=pe({programId:u,poolId:c,owner:i,version:5}),d=Buffer.alloc(se.span);se.encode({instruction:12,amount:D(s)},d);let p=[h({pubkey:c}),h({pubkey:new F(r.authority),isWritable:!1}),h({pubkey:l}),h({pubkey:i,isWritable:!1,isSigner:!0}),h({pubkey:n}),h({pubkey:new F(r.lpVault)}),h({pubkey:o[0]}),h({pubkey:new F(r.rewardInfos[0].vault)}),h({pubkey:st,isWritable:!1}),h({pubkey:Pe,isWritable:!1})];for(let f=1;f<r.rewardInfos.length;f++)p.push(h({pubkey:o[f]})),p.push(h({pubkey:new F(r.rewardInfos[f].vault)}));if(a)for(let f of a)p.push(h({pubkey:f}));return new ae({programId:u,keys:p,data:d})}function kn(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=e,[u,c]=[new F(t.programId),new F(t.id)],l=X([$("instruction"),P("amount")]),d=[h({pubkey:c}),h({pubkey:new F(r.authority),isWritable:!1}),h({pubkey:a[0]}),h({pubkey:i,isSigner:!0,isWritable:!1}),h({pubkey:n}),h({pubkey:new F(r.lpVault)}),h({pubkey:o[0]}),h({pubkey:new F(r.rewardInfos[0].vault)}),h({pubkey:st,isWritable:!1}),h({pubkey:Pe,isWritable:!1}),h({pubkey:o[1]}),h({pubkey:new F(r.rewardInfos[1].vault)})],p=Buffer.alloc(l.span);return l.encode({instruction:2,amount:s},p),new ae({keys:d,programId:u,data:p})}function Pr(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=e,[u,c]=[new F(t.programId),new F(t.id)],l=pe({programId:u,poolId:c,owner:i,version:3}),d=Buffer.alloc(se.span);se.encode({instruction:11,amount:D(s)},d);let p=[h({pubkey:c}),h({pubkey:new F(r.authority),isWritable:!1}),h({pubkey:l}),h({pubkey:i,isWritable:!1,isSigner:!0}),h({pubkey:n}),h({pubkey:new F(r.lpVault)}),h({pubkey:o[0]}),h({pubkey:new F(r.rewardInfos[0].vault)}),h({pubkey:st,isWritable:!1}),h({pubkey:Pe,isWritable:!1})];if(a)for(let f of a)p.push(h({pubkey:f}));return new ae({programId:u,keys:p,data:d})}function In(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=e,[u,c]=[new F(t.programId),new F(t.id)],l=pe({programId:u,poolId:c,owner:i,version:3}),d=Buffer.alloc(se.span);se.encode({instruction:10,amount:D(s)},d);let p=[h({pubkey:c}),h({pubkey:new F(r.authority),isWritable:!1}),h({pubkey:l}),h({pubkey:i,isWritable:!1,isSigner:!0}),h({pubkey:n}),h({pubkey:new F(r.lpVault)}),h({pubkey:o[0]}),h({pubkey:new F(r.rewardInfos[0].vault)}),h({pubkey:st,isWritable:!1}),h({pubkey:Pe,isWritable:!1})];if(a)for(let f of a)p.push(h({pubkey:f}));return new ae({programId:u,keys:p,data:d})}function Ln(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=e,[u,c]=[new F(t.programId),new F(t.id)],l=pe({programId:u,poolId:c,owner:i,version:5}),d=Buffer.alloc(se.span);se.encode({instruction:11,amount:D(s)},d);let p=[h({pubkey:c}),h({pubkey:new F(r.authority),isWritable:!1}),h({pubkey:l}),h({pubkey:i,isWritable:!1,isSigner:!0}),h({pubkey:n}),h({pubkey:new F(r.lpVault)}),h({pubkey:o[0]}),h({pubkey:new F(r.rewardInfos[0].vault)}),h({pubkey:st,isWritable:!1}),h({pubkey:Pe,isWritable:!1})];for(let f=1;f<r.rewardInfos.length;f++)p.push(h({pubkey:o[f]})),p.push(h({pubkey:new F(r.rewardInfos[f].vault)}));if(a)for(let f of a)p.push(h({pubkey:f}));return new ae({programId:u,keys:p,data:d})}function _n(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s}=e,[a,u]=[new F(t.programId),new F(t.id)],c=pe({programId:a,poolId:u,owner:i,version:6}),l=Buffer.alloc(se.span);se.encode({instruction:1,amount:D(s)},l);let d=[h({pubkey:Pe,isWritable:!1}),h({pubkey:Pn.programId,isWritable:!1}),h({pubkey:u}),h({pubkey:new F(r.authority),isWritable:!1}),h({pubkey:new F(r.lpVault)}),h({pubkey:c}),h({pubkey:i,isWritable:!1,isSigner:!0}),h({pubkey:n})];for(let p=0;p<r.rewardInfos.length;p++)d.push(h({pubkey:new F(r.rewardInfos[p].vault)})),d.push(h({pubkey:o[p]}));return new ae({programId:a,keys:d,data:l})}var xr=class extends ot{async _getUserRewardInfo({payer:t,rewardInfo:r,network:n}){if(r.mint.equals(te)){let o=await or({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:t,network:n,amount:mr({...r,openTime:r.openTime.toString(),endTime:r.endTime.toString()})});return{rewardPubKey:o.addresses.newAccount,newInstruction:o}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:r.mint,associatedOnly:!1})}}async create({poolInfo:t,rewardInfos:r,payer:n,programId:o=Ze,txVersion:i,network:s}){this.checkDisabled(),this.scope.checkOwner();let u={lpMint:new j(t.lpMint.address),lockInfo:{lockMint:hn,lockVault:yn},version:6,rewardInfos:r,programId:o},c=this.createTxBuilder(),l=n!=null?n:this.scope.ownerPubKey,d=Rt({fromPublicKey:l,programId:u.programId}),p=await this.scope.connection.getMinimumBalanceForRentExemption(Nt.span);c.addInstruction({instructions:[Xi.createAccountWithSeed({fromPubkey:l,basePubkey:l,seed:d.seed,newAccountPubkey:d.publicKey,lamports:p,space:Nt.span,programId:u.programId})]});let{publicKey:f,nonce:g}=wn({programId:new j(u.programId),poolId:d.publicKey}),m=it({programId:u.programId,poolId:d.publicKey,mint:u.lpMint,type:"lpVault"}),T=[],b=[];for(let x of u.rewardInfos){x.openTime>=x.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",x.openTime.toString()),isNaN(Be[x.rewardType])&&this.logAndCreateError("rewardType error",x.rewardType),Number(x.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",x.perSecond),T.push(Tn(x));let{rewardPubKey:L,newInstruction:C}=await this._getUserRewardInfo({rewardInfo:x,payer:l,network:s});C&&c.addInstruction(C),L||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let U=x.mint.equals(te)?new j(oe(s).address):x.mint;b.push({rewardMint:U,rewardVault:it({programId:u.programId,poolId:d.publicKey,mint:U,type:"rewardVault"}),userRewardToken:L})}let{account:S,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({mint:new j(u.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});k&&c.addInstruction(k),S||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:w,instructionType:A}=Sn({farmId:d.publicKey,owner:this.scope.ownerPubKey,farmAuthority:f,lpVault:m,lpMint:u.lpMint,lockVault:u.lockInfo.lockVault,lockMint:u.lockInfo.lockMint,lockUserAccount:S,programId:u.programId,rewardInfo:b,rewardInfoConfig:T,nonce:g});return c.addInstruction({instructions:[w],instructionTypes:[A]}).versionBuild({txVersion:i,extInfo:{farmId:d.publicKey,farmAuthority:f,lpVault:m,lockUserAccount:S,nonce:g}})}async restartReward({farmInfo:t,payer:r,newRewardInfo:n,txVersion:o,network:i}){var b;let s=Te[t.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ye((await this.scope.api.fetchFarmKeysById({ids:t.id}))[0]),u={id:a.id,rewardInfos:t.rewardInfos,lpVault:a.lpVault,programId:a.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let c=r||this.scope.ownerPubKey,l=n.mint.equals(te)?new j(oe(i).address):n.mint,d=u.rewardInfos.findIndex(S=>new j(S.mint.address).equals(l)),p=a.rewardInfos[d];p||this.logAndCreateError("configuration does not exist","rewardMint",l);let f=(b=p.vault)!=null?b:te,g=this.createTxBuilder(),{rewardPubKey:m,newInstruction:T}=await this._getUserRewardInfo({rewardInfo:n,payer:c,network:i});return T&&g.addInstruction(T),m||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),g.addInstruction({instructions:[yr({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:m,farmKeys:u,rewardInfo:n})],instructionTypes:[z.FarmV6Restart]}).versionBuild({txVersion:o})}async restartRewards({farmInfo:t,payer:r,newRewardInfos:n,txVersion:o,network:i}){var d;let s=Te[t.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ye((await this.scope.api.fetchFarmKeysById({ids:t.id}))[0]),u={id:a.id,rewardInfos:t.rewardInfos,lpVault:a.lpVault,programId:a.programId};n.forEach(p=>{p.openTime>=p.endTime&&this.logAndCreateError("start time error","newRewardInfo",p)});let c=r||this.scope.ownerPubKey,l=this.createTxBuilder();for(let p of n){let f=p.mint.equals(te)?new j(oe(i).address):p.mint,g=u.rewardInfos.findIndex(w=>new j(w.mint.address).equals(f)),m=a.rewardInfos[g];m||this.logAndCreateError("configuration does not exist","rewardMint",f);let T=(d=m.vault)!=null?d:te,{rewardPubKey:b,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:p,payer:c,network:i});S&&l.addInstruction(S),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let k=yr({payer:this.scope.ownerPubKey,rewardVault:T,userRewardTokenPub:b,farmKeys:u,rewardInfo:p});l.addInstruction({instructions:[k],instructionTypes:[z.FarmV6Restart]})}return l.versionBuild({txVersion:o})}async addNewRewardToken(t){let{txVersion:r,farmInfo:n,newRewardInfo:o,payer:i,network:s}=t,a=Te[n.programId];a!==6&&this.logAndCreateError("invalid farm version ",a);let u=ye((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),c=i!=null?i:this.scope.ownerPubKey,l=this.createTxBuilder(),d=o.mint.equals(te)?new j(oe(s).address):o.mint,p=it({programId:new j(n.programId),poolId:new j(n.id),mint:d,type:"rewardVault"}),{rewardPubKey:f,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:o,payer:c,network:s});return g&&l.addInstruction(g),f||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),o.mint=d,l.addInstruction({instructions:[br({payer:this.scope.ownerPubKey,userRewardTokenPub:f,farmKeys:u,rewardVault:p,rewardInfo:o})],instructionTypes:[z.FarmV6CreatorAddReward]}).versionBuild({txVersion:r})}async addNewRewardsToken(t){let{txVersion:r,farmInfo:n,newRewardInfos:o,payer:i,network:s}=t,a=Te[n.programId];a!==6&&this.logAndCreateError("invalid farm version ",a);let u=ye((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),c=i!=null?i:this.scope.ownerPubKey,l=this.createTxBuilder();for(let d of o){let p=d.mint.equals(te)?new j(oe(s).address):d.mint,f=it({programId:new j(n.programId),poolId:new j(n.id),mint:p,type:"rewardVault"}),{rewardPubKey:g,newInstruction:m}=await this._getUserRewardInfo({rewardInfo:d,payer:c,network:s});m&&l.addInstruction(m),g||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let T=br({payer:this.scope.ownerPubKey,userRewardTokenPub:g,farmKeys:u,rewardVault:f,rewardInfo:{...d,mint:p}});l.addInstruction({instructions:[T],instructionTypes:[z.FarmV6CreatorAddReward]})}return l.versionBuild({txVersion:r})}async deposit(t){let{txVersion:r,farmInfo:n,amount:o,feePayer:i,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l,network:d}=t;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:p,programId:f}=n,g=Te[f];g===4&&this.logAndCreateError("V4 has suspended deposits:",n.programId),pr(g)||this.logAndCreateError("invalid farm program:",n.programId);let[m,T]=[new j(n.programId),new j(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],S=pe({programId:m,poolId:T,owner:this.scope.ownerPubKey,version:g}),k=this.createTxBuilder();k.addCustomComputeBudget(l);let w={};for(let B of this.scope.account.tokenAccounts)if(a){let W=Fe(this.scope.ownerPubKey,B.mint,B.programId).publicKey;B.publicKey&&W.equals(B.publicKey)&&(w[B.mint.toString()]=B.publicKey)}else w[B.mint.toString()]=B.publicKey;let A=b.lpMint,x=w[A.address];x||this.logAndCreateError("you don't have any lp","lp zero",w);let L=[];for(let B of p){let W=s&&B.mint.address===Ne(d).WSOLMint.toBase58(),v=w[B.mint.address];if(!v){let{account:Re,instructionParams:Ue}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:B.mint.programId,mint:new j(B.mint.address),notUseTokenAccount:W,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!W,associatedOnly:W?!1:a,checkCreateATAOwner:u});v=Re,Ue&&k.addInstruction(Ue)}w[B.mint.address]=v,L.push(v)}let C,U=await this.scope.connection.getAccountInfo(S);if(U&&(C=gr(g).decode(U.data)),n.programId!==Ze.toString()&&!C){let{instruction:B,instructionType:W}=hr({id:T,programId:m,version:g,ledger:S,owner:this.scope.ownerPubKey});k.addInstruction({instructions:[B],instructionTypes:[W]})}let O=fr({version:g,rewardInfos:p,rewardTokenAccountsPublicKeys:L});O&&this.logAndCreateError(O);let K={amount:D(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:x,rewardAccounts:L,userAuxiliaryLedgers:c==null?void 0:c.map(B=>new j(B))},H=g===6?_n(K):g===5?Ln(K):In(K),q={3:z.FarmV3Deposit,5:z.FarmV5Deposit,6:z.FarmV6Deposit};return k.addInstruction({instructions:[H],instructionTypes:[q[g]]}).versionBuild({txVersion:r})}async withdraw(t){let{txVersion:r,farmInfo:n,amount:o,deposited:i,useSOLBalance:s,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:d,network:p}=t,{rewardInfos:f}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let g=Te[n.programId];pr(g)||this.logAndCreateError("invalid farm program:",n.programId);let m=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],T=this.createTxBuilder();T.addCustomComputeBudget(d);let b={};for(let O of this.scope.account.tokenAccounts)if(u){let K=Fe(this.scope.ownerPubKey,O.mint).publicKey;O.publicKey&&K.equals(O.publicKey)&&(b[O.mint.toString()]=O.publicKey)}else b[O.mint.toString()]=O.publicKey;if(g!==4){let O=pe({programId:new j(n.programId),poolId:new j(n.id),owner:this.scope.ownerPubKey,version:g}),K=await this.scope.connection.getAccountInfo(O);if(K)gr(g).decode(K.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else if(g!==6){let{instruction:H,instructionType:q}=hr({id:new j(m.id),programId:new j(m.programId),version:g,ledger:O,owner:this.scope.ownerPubKey});T.addInstruction({instructions:[H],instructionTypes:[q]})}}i&&i.isZero()&&!(l||[]).length&&this.logAndCreateError("no deposited lp",{farmId:n.id});let S=m.lpMint.address,k=s&&S===Ne(p).WSOLMint.toString(),w=b[S.toString()];if(!w){let{account:O,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:m.lpMint.programId,mint:new j(S),notUseTokenAccount:k,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:k?!1:u,checkCreateATAOwner:c});w=O,K&&T.addInstruction(K)}b[S.toString()]=w;let A=[];for(let O of f){let K=s&&O.mint.address===Ne(p).WSOLMint.toBase58(),H=b[O.mint.address];if(!H){let{account:q,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:O.mint.programId,mint:new j(O.mint.address),notUseTokenAccount:K,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!K,associatedOnly:K?!1:u,checkCreateATAOwner:c});H=q,B&&T.addInstruction(B)}b[O.mint.address]=H,A.push(H)}let x=fr({version:g,rewardInfos:f,rewardTokenAccountsPublicKeys:A});x&&this.logAndCreateError(x);let L={amount:D(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:m,lpAccount:w,rewardAccounts:A,userAuxiliaryLedgers:l==null?void 0:l.map(O=>new j(O))},C=g===6?wr(L):g===5?Tr(L):g===4?kn(L):Pr(L),U={3:z.FarmV3Withdraw,4:z.FarmV4Withdraw,5:z.FarmV5Withdraw,6:z.FarmV6Withdraw};return T.addInstruction({instructions:[C],instructionTypes:[U[g]]}).versionBuild({txVersion:r})}async withdrawFarmReward({farmInfo:t,withdrawMint:r,txVersion:n,computeBudgetConfig:o,network:i}){var g;this.scope.checkOwner();let s=ye((await this.scope.api.fetchFarmKeysById({ids:t.id}))[0]),a=Te[t.programId];a!==6&&this.logAndCreateError("invalid farm version",a);let u=s.rewardInfos.find(m=>at(m.mint.address,i).equals(at(r,i)));u||this.logAndCreateError("withdraw mint error","rewardInfos",t);let c=(g=u==null?void 0:u.vault)!=null?g:te,l=this.createTxBuilder(),d;if(r.equals(te)||r.equals(j.default)){let m=await or({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,network:i,amount:mr({...u,openTime:u.openTime,endTime:u.endTime,perSecond:new Ft(u.perSecond).mul(10**u.mint.decimals).toString()})});d=m.addresses.newAccount,l.addInstruction(m)}else{let m=await this.scope.account.getCreatedTokenAccount({mint:r});m===null?(d=await this.scope.account.getAssociatedTokenAccount(r),l.addInstruction({instructions:[zi(this.scope.ownerPubKey,d,this.scope.ownerPubKey,r)],instructionTypes:[z.CreateATA]})):d=m}let{instruction:p,instructionType:f}=An({programId:s.programId,id:s.id,authority:s.authority,lpVault:s.lpVault,rewardVault:c,userRewardToken:d,owner:this.scope.ownerPubKey});return l.addCustomComputeBudget(o),l.addInstruction({instructions:[p],instructionTypes:[f]}).versionBuild({txVersion:n})}async harvestAllRewards(t){let{farmInfoList:r,useSOLBalance:n,feePayer:o,associatedOnly:i=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c,network:l}=t,d=this.createTxBuilder(),p={};for(let m of this.scope.account.tokenAccounts)if(i){let T=Fe(this.scope.ownerPubKey,m.mint).publicKey;m.publicKey&&T.equals(m.publicKey)&&(p[m.mint.toString()]=m.publicKey)}else p[m.mint.toString()]=m.publicKey;let g=(await this.scope.api.fetchFarmKeysById({ids:Object.values(r).map(m=>m.id).join(",")})).reduce((m,T)=>({...m,[T.id]:T}),{});for(let m of Object.values(r)){let{programId:T,lpMint:b,rewardInfos:S,id:k}=m,w=Te[T],A=b.address,x=n&&A===oe(l).address,L=p[A];if(!L){let{account:q,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new j(A),notUseTokenAccount:x,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:x?!1:i,checkCreateATAOwner:s});L=q,B&&d.addInstruction(B)}p[A.toString()]=L;let C=[];for(let q of S){let B=n&&q.mint.address===Ne(l).WSOLMint.toBase58(),W=p[q.mint.address];if(!W){let{account:v,instructionParams:Re}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:q.mint.programId,mint:new j(q.mint.address),notUseTokenAccount:B,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!B,associatedOnly:B?!1:i,checkCreateATAOwner:s});W=v,Re&&d.addInstruction(Re)}p[q.mint.address]=W,C.push(W)}let U=g[k],O={amount:zt,owner:this.scope.ownerPubKey,farmInfo:m,farmKeys:U,lpAccount:L,rewardAccounts:C,userAuxiliaryLedgers:a==null?void 0:a.map(q=>new j(q))},K=w===6?wr(O):w===5?Tr(O):Pr(O),H={3:z.FarmV3Withdraw,5:z.FarmV5Withdraw,6:z.FarmV6Withdraw};d.addInstruction({instructions:[K],instructionTypes:[H[w]]})}return u===1?d.sizeCheckBuild({computeBudgetConfig:c}):d.sizeCheckBuildV0({computeBudgetConfig:c})}};export{xr as default};
/*!
 *  decimal.js v10.5.0
 *  An arbitrary-precision Decimal type for JavaScript.
 *  https://github.com/MikeMcl/decimal.js
 *  Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>
 *  MIT Licence
 */
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=farm.mjs.map