UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

3 lines 109 kB
var zn=Object.defineProperty,Jn=Object.defineProperties;var Xn=Object.getOwnPropertyDescriptors;var mt=Object.getOwnPropertySymbols;var Or=Object.prototype.hasOwnProperty,Wr=Object.prototype.propertyIsEnumerable;var Dr=(e,t,r)=>t in e?zn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,z=(e,t)=>{for(var r in t||(t={}))Or.call(t,r)&&Dr(e,r,t[r]);if(mt)for(var r of mt(t))Wr.call(t,r)&&Dr(e,r,t[r]);return e},te=(e,t)=>Jn(e,Xn(t));var gt=(e,t)=>{var r={};for(var n in e)Or.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&mt)for(var n of mt(e))t.indexOf(n)<0&&Wr.call(e,n)&&(r[n]=e[n]);return r};import{PublicKey as j,SystemProgram as ps}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Yn}from"@solana/spl-token";import{PublicKey as eo}from"@solana/web3.js";import{get as Ur,set as Qn}from"lodash";var Ot=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}},qr={},$n={};function $(e){let t=Ur(qr,e);if(!t){let r=Ur($n,e);t=new Ot({name:e,logLevel:r}),Qn(qr,e,t)}return t}import{MINT_SIZE as Is,TOKEN_PROGRAM_ID as As,getTransferFeeConfig as Ss,unpackMint as Ls}from"@solana/spl-token";var Wt=$("Raydium_accountInfo_util");async function Gr(e,t,r){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}=z({batchRequest:!1},r),s=Ut(t,i),a=new Array(s.length).fill([]);if(n){let c=s.map(l=>{let f=e._buildArgs([l.map(p=>p.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:f}}),u=Ut(c,10);a=(await(await Promise.all(u.map(async l=>await e._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Wt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(f=>{if(f){let{data:p,executable:m,lamports:g,owner:b,rentEpoch:P}=f;return p.length!==2&&p[1]!=="base64"&&Wt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:m,lamports:g,owner:new eo(b),rentEpoch:P}}return null})))}else try{a=await Promise.all(s.map(c=>e.getMultipleAccountsInfo(c,o)))}catch(c){c instanceof Error&&Wt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}import Pe from"bn.js";var Oe=9e15,Ke=1e9,qt="0123456789abcdef",bt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",wt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Gt={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Oe,maxE:Oe,crypto:!1},Zr,we,E=!0,xt="[DecimalError] ",Be=xt+"Invalid argument: ",zr=xt+"Precision limit exceeded",Jr=xt+"crypto unavailable",Xr="[object Decimal]",ie=Math.floor,re=Math.pow,to=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ro=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,no=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Qr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,de=1e7,M=7,oo=9007199254740991,io=bt.length-1,Ht=wt.length-1,h={toStringTag:Xr};h.absoluteValue=h.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),C(e)};h.ceil=function(){return C(new this.constructor(this),this.e+1,2)};h.clampedTo=h.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(Be+t);return r=n.cmp(e),r<0?e:n.cmp(t)>0?t:new o(n)};h.comparedTo=h.cmp=function(e){var t,r,n,o,i=this,s=i.d,a=(e=new i.constructor(e)).d,c=i.s,u=e.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(i.e!==e.e)return i.e>e.e^c<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]^c<0?1:-1;return n===o?0:n>o^c<0?1:-1};h.cosine=h.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())+M,n.rounding=1,r=so(n,nn(n,r)),n.precision=e,n.rounding=t,C(we==2||we==3?r.neg():r,e,t,!0)):new n(1):new n(NaN)};h.cubeRoot=h.cbrt=function(){var e,t,r,n,o,i,s,a,c,u,d=this,l=d.constructor;if(!d.isFinite()||d.isZero())return new l(d);for(E=!1,i=d.s*re(d.s*d,1/3),!i||Math.abs(i)==1/0?(r=oe(d.d),e=d.e,(i=(e-r.length+1)%3)&&(r+=i==1||i==-2?"0":"00"),i=re(r,1/3),e=ie((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 l(r),n.s=d.s):n=new l(i.toString()),s=(e=l.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(d),n=Z(u.plus(d).times(a),u.plus(c),s+2,1),oe(a.d).slice(0,s)===(r=oe(n.d)).slice(0,s))if(r=r.slice(s-3,s+1),r=="9999"||!o&&r=="4999"){if(!o&&(C(a,e+1,0),a.times(a).times(a).eq(d))){n=a;break}s+=4,o=1}else{(!+r||!+r.slice(1)&&r.charAt(0)=="5")&&(C(n,e+1,1),t=!n.times(n).times(n).eq(d));break}return E=!0,C(n,e,l.rounding,t)};h.decimalPlaces=h.dp=function(){var e,t=this.d,r=NaN;if(t){if(e=t.length-1,r=(e-ie(this.e/M))*M,e=t[e],e)for(;e%10==0;e/=10)r--;r<0&&(r=0)}return r};h.dividedBy=h.div=function(e){return Z(this,new this.constructor(e))};h.dividedToIntegerBy=h.divToInt=function(e){var t=this,r=t.constructor;return C(Z(t,new r(e),0,1,1),r.precision,r.rounding)};h.equals=h.eq=function(e){return this.cmp(e)===0};h.floor=function(){return C(new this.constructor(this),this.e+1,3)};h.greaterThan=h.gt=function(e){return this.cmp(e)>0};h.greaterThanOrEqualTo=h.gte=function(e){var t=this.cmp(e);return t==1||t===0};h.hyperbolicCosine=h.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/kt(4,e)).toString()):(e=16,t="2.3283064365386962890625e-10"),i=We(s,1,i.times(t),new s(1),!0);for(var c,u=e,d=new s(8);u--;)c=i.times(i),i=a.minus(c.times(d.minus(c.times(d))));return C(i,s.precision=r,s.rounding=n,!0)};h.hyperbolicSine=h.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=We(i,2,o,o,!0);else{e=1.4*Math.sqrt(n),e=e>16?16:e|0,o=o.times(1/kt(5,e)),o=We(i,2,o,o,!0);for(var s,a=new i(5),c=new i(16),u=new i(20);e--;)s=o.times(o),o=o.times(a.plus(s.times(c.times(s).plus(u))))}return i.precision=t,i.rounding=r,C(o,t,r,!0)};h.hyperbolicTangent=h.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,Z(r.sinh(),r.cosh(),n.precision=e,n.rounding=t)):new n(r.s)};h.inverseCosine=h.acos=function(){var e,t=this,r=t.constructor,n=t.abs().cmp(1),o=r.precision,i=r.rounding;return n!==-1?n===0?t.isNeg()?le(r,o,i):new r(0):new r(NaN):t.isZero()?le(r,o+4,i).times(.5):(r.precision=o+6,r.rounding=1,t=t.asin(),e=le(r,o+4,i).times(.5),r.precision=o,r.rounding=i,e.minus(t))};h.inverseHyperbolicCosine=h.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,E=!1,r=r.times(r).minus(1).sqrt().plus(r),E=!0,n.precision=e,n.rounding=t,r.ln()):new n(r)};h.inverseHyperbolicSine=h.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,E=!1,r=r.times(r).plus(1).sqrt().plus(r),E=!0,n.precision=e,n.rounding=t,r.ln())};h.inverseHyperbolicTangent=h.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?C(new i(o),e,t,!0):(i.precision=r=n-o.e,o=Z(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)};h.inverseSine=h.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)))};h.inverseTangent=h.atan=function(){var e,t,r,n,o,i,s,a,c,u=this,d=u.constructor,l=d.precision,f=d.rounding;if(u.isFinite()){if(u.isZero())return new d(u);if(u.abs().eq(1)&&l+4<=Ht)return s=le(d,l+4,f).times(.25),s.s=u.s,s}else{if(!u.s)return new d(NaN);if(l+4<=Ht)return s=le(d,l+4,f).times(.5),s.s=u.s,s}for(d.precision=a=l+10,d.rounding=1,r=Math.min(28,a/M+2|0),e=r;e;--e)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(E=!1,t=Math.ceil(a/M),n=1,c=u.times(u),s=new d(u),o=u;e!==-1;)if(o=o.times(c),i=s.minus(o.div(n+=2)),o=o.times(c),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)),E=!0,C(s,d.precision=l,d.rounding=f,!0)};h.isFinite=function(){return!!this.d};h.isInteger=h.isInt=function(){return!!this.d&&ie(this.e/M)>this.d.length-2};h.isNaN=function(){return!this.s};h.isNegative=h.isNeg=function(){return this.s<0};h.isPositive=h.isPos=function(){return this.s>0};h.isZero=function(){return!!this.d&&this.d[0]===0};h.lessThan=h.lt=function(e){return this.cmp(e)<0};h.lessThanOrEqualTo=h.lte=function(e){return this.cmp(e)<1};h.logarithm=h.log=function(e){var t,r,n,o,i,s,a,c,u=this,d=u.constructor,l=d.precision,f=d.rounding,p=5;if(e==null)e=new d(10),t=!0;else{if(e=new d(e),r=e.d,e.s<0||!r||!r[0]||e.eq(1))return new d(NaN);t=e.eq(10)}if(r=u.d,u.s<0||!r||!r[0]||u.eq(1))return new d(r&&!r[0]?-1/0:u.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(E=!1,a=l+p,s=Re(u,a),n=t?Tt(d,a+10):Re(e,a),c=Z(s,n,a,1),Je(c.d,o=l,f))do if(a+=10,s=Re(u,a),n=t?Tt(d,a+10):Re(e,a),c=Z(s,n,a,1),!i){+oe(c.d).slice(o+1,o+15)+1==1e14&&(c=C(c,l+1,0));break}while(Je(c.d,o+=10,f));return E=!0,C(c,l,f)};h.minus=h.sub=function(e){var t,r,n,o,i,s,a,c,u,d,l,f,p=this,m=p.constructor;if(e=new m(e),!p.d||!e.d)return!p.s||!e.s?e=new m(NaN):p.d?e.s=-e.s:e=new m(e.d||p.s!==e.s?p:NaN),e;if(p.s!=e.s)return e.s=-e.s,p.plus(e);if(u=p.d,f=e.d,a=m.precision,c=m.rounding,!u[0]||!f[0]){if(f[0])e.s=-e.s;else if(u[0])e=new m(p);else return new m(c===3?-0:0);return E?C(e,a,c):e}if(r=ie(e.e/M),d=ie(p.e/M),u=u.slice(),i=d-r,i){for(l=i<0,l?(t=u,i=-i,s=f.length):(t=f,r=d,s=u.length),n=Math.max(Math.ceil(a/M),s)+2,i>n&&(i=n,t.length=1),t.reverse(),n=i;n--;)t.push(0);t.reverse()}else{for(n=u.length,s=f.length,l=n<s,l&&(s=n),n=0;n<s;n++)if(u[n]!=f[n]){l=u[n]<f[n];break}i=0}for(l&&(t=u,u=f,f=t,e.s=-e.s),s=u.length,n=f.length-s;n>0;--n)u[s++]=0;for(n=f.length;n>i;){if(u[--n]<f[n]){for(o=n;o&&u[--o]===0;)u[o]=de-1;--u[o],u[n]+=de}u[n]-=f[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--r;return u[0]?(e.d=u,e.e=Pt(u,r),E?C(e,a,c):e):new m(c===3?-0:0)};h.modulo=h.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]?C(new n(r),n.precision,n.rounding):(E=!1,n.modulo==9?(t=Z(r,e.abs(),0,3,1),t.s*=e.s):t=Z(r,e,0,n.modulo,1),t=t.times(e),E=!0,r.minus(t))};h.naturalExponential=h.exp=function(){return jt(this)};h.naturalLogarithm=h.ln=function(){return Re(this)};h.negated=h.neg=function(){var e=new this.constructor(this);return e.s=-e.s,C(e)};h.plus=h.add=function(e){var t,r,n,o,i,s,a,c,u,d,l=this,f=l.constructor;if(e=new f(e),!l.d||!e.d)return!l.s||!e.s?e=new f(NaN):l.d||(e=new f(e.d||l.s===e.s?l:NaN)),e;if(l.s!=e.s)return e.s=-e.s,l.minus(e);if(u=l.d,d=e.d,a=f.precision,c=f.rounding,!u[0]||!d[0])return d[0]||(e=new f(l)),E?C(e,a,c):e;if(i=ie(l.e/M),n=ie(e.e/M),u=u.slice(),o=i-n,o){for(o<0?(r=u,o=-o,s=d.length):(r=d,n=i,s=u.length),i=Math.ceil(a/M),s=i>s?i+1:s+1,o>s&&(o=s,r.length=1),r.reverse();o--;)r.push(0);r.reverse()}for(s=u.length,o=d.length,s-o<0&&(o=s,r=d,d=u,u=r),t=0;o;)t=(u[--o]=u[o]+d[o]+t)/de|0,u[o]%=de;for(t&&(u.unshift(t),++n),s=u.length;u[--s]==0;)u.pop();return e.d=u,e.e=Pt(u,n),E?C(e,a,c):e};h.precision=h.sd=function(e){var t,r=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(Be+e);return r.d?(t=$r(r.d),e&&r.e+1>t&&(t=r.e+1)):t=NaN,t};h.round=function(){var e=this,t=e.constructor;return C(new t(e),e.e+1,t.rounding)};h.sine=h.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())+M,n.rounding=1,r=uo(n,nn(n,r)),n.precision=e,n.rounding=t,C(we>2?r.neg():r,e,t,!0)):new n(NaN)};h.squareRoot=h.sqrt=function(){var e,t,r,n,o,i,s=this,a=s.d,c=s.e,u=s.s,d=s.constructor;if(u!==1||!a||!a[0])return new d(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(E=!1,u=Math.sqrt(+s),u==0||u==1/0?(t=oe(a),(t.length+c)%2==0&&(t+="0"),u=Math.sqrt(t),c=ie((c+1)/2)-(c<0||c%2),u==1/0?t="5e"+c:(t=u.toExponential(),t=t.slice(0,t.indexOf("e")+1)+c),n=new d(t)):n=new d(u.toString()),r=(c=d.precision)+3;;)if(i=n,n=i.plus(Z(s,i,r+2,1)).times(.5),oe(i.d).slice(0,r)===(t=oe(n.d)).slice(0,r))if(t=t.slice(r-3,r+1),t=="9999"||!o&&t=="4999"){if(!o&&(C(i,c+1,0),i.times(i).eq(s))){n=i;break}r+=4,o=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(C(n,c+1,1),e=!n.times(n).eq(s));break}return E=!0,C(n,c,d.rounding,e)};h.tangent=h.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=Z(r,new n(1).minus(r.times(r)).sqrt(),e+10,0),n.precision=e,n.rounding=t,C(we==2||we==4?r.neg():r,e,t,!0)):new n(NaN)};h.times=h.mul=function(e){var t,r,n,o,i,s,a,c,u,d=this,l=d.constructor,f=d.d,p=(e=new l(e)).d;if(e.s*=d.s,!f||!f[0]||!p||!p[0])return new l(!e.s||f&&!f[0]&&!p||p&&!p[0]&&!f?NaN:!f||!p?e.s/0:e.s*0);for(r=ie(d.e/M)+ie(e.e/M),c=f.length,u=p.length,c<u&&(i=f,f=p,p=i,s=c,c=u,u=s),i=[],s=c+u,n=s;n--;)i.push(0);for(n=u;--n>=0;){for(t=0,o=c+n;o>n;)a=i[o]+p[n]*f[o-n-1]+t,i[o--]=a%de|0,t=a/de|0;i[o]=(i[o]+t)%de|0}for(;!i[--s];)i.pop();return t?++r:i.shift(),e.d=i,e.e=Pt(i,r),E?C(e,l.precision,l.rounding):e};h.toBinary=function(e,t){return Zt(this,2,e,t)};h.toDecimalPlaces=h.toDP=function(e,t){var r=this,n=r.constructor;return r=new n(r),e===void 0?r:(ae(e,0,Ke),t===void 0?t=n.rounding:ae(t,0,8),C(r,e+r.e+1,t))};h.toExponential=function(e,t){var r,n=this,o=n.constructor;return e===void 0?r=pe(n,!0):(ae(e,0,Ke),t===void 0?t=o.rounding:ae(t,0,8),n=C(new o(n),e+1,t),r=pe(n,!0,e+1)),n.isNeg()&&!n.isZero()?"-"+r:r};h.toFixed=function(e,t){var r,n,o=this,i=o.constructor;return e===void 0?r=pe(o):(ae(e,0,Ke),t===void 0?t=i.rounding:ae(t,0,8),n=C(new i(o),e+o.e+1,t),r=pe(n,!1,e+n.e+1)),o.isNeg()&&!o.isZero()?"-"+r:r};h.toFraction=function(e){var t,r,n,o,i,s,a,c,u,d,l,f,p=this,m=p.d,g=p.constructor;if(!m)return new g(p);if(u=r=new g(1),n=c=new g(0),t=new g(n),i=t.e=$r(m)-p.e-1,s=i%M,t.d[0]=re(10,s<0?M+s:s),e==null)e=i>0?t:u;else{if(a=new g(e),!a.isInt()||a.lt(u))throw Error(Be+a);e=a.gt(t)?i>0?t:u:a}for(E=!1,a=new g(oe(m)),d=g.precision,g.precision=i=m.length*M*2;l=Z(a,t,0,1,1),o=r.plus(l.times(n)),o.cmp(e)!=1;)r=n,n=o,o=u,u=c.plus(l.times(o)),c=o,o=t,t=a.minus(l.times(o)),a=o;return o=Z(e.minus(r),n,0,1,1),c=c.plus(o.times(u)),r=r.plus(o.times(n)),c.s=u.s=p.s,f=Z(u,n,i,1).minus(p).abs().cmp(Z(c,r,i,1).minus(p).abs())<1?[u,n]:[c,r],g.precision=d,E=!0,f};h.toHexadecimal=h.toHex=function(e,t){return Zt(this,16,e,t)};h.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:ae(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]?(E=!1,r=Z(r,e,0,t,1).times(e),E=!0,C(r)):(e.s=r.s,r=e),r};h.toNumber=function(){return+this};h.toOctal=function(e,t){return Zt(this,8,e,t)};h.toPower=h.pow=function(e){var t,r,n,o,i,s,a=this,c=a.constructor,u=+(e=new c(e));if(!a.d||!e.d||!a.d[0]||!e.d[0])return new c(re(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,i=c.rounding,e.eq(1))return C(a,n,i);if(t=ie(e.e/M),t>=e.d.length-1&&(r=u<0?-u:u)<=oo)return o=en(c,a,r,n),e.s<0?new c(1).div(o):C(o,n,i);if(s=a.s,s<0){if(t<e.d.length-1)return new c(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=re(+a,u),t=r==0||!isFinite(r)?ie(u*(Math.log("0."+oe(a.d))/Math.LN10+a.e+1)):new c(r+"").e,t>c.maxE+1||t<c.minE-1?new c(t>0?s/0:0):(E=!1,c.rounding=a.s=1,r=Math.min(12,(t+"").length),o=jt(e.times(Re(a,n+r)),n),o.d&&(o=C(o,n+5,1),Je(o.d,n,i)&&(t=n+10,o=C(jt(e.times(Re(a,t+r)),t),t+5,1),+oe(o.d).slice(n+1,n+15)+1==1e14&&(o=C(o,n+1,0)))),o.s=s,E=!0,c.rounding=i,C(o,n,i))};h.toPrecision=function(e,t){var r,n=this,o=n.constructor;return e===void 0?r=pe(n,n.e<=o.toExpNeg||n.e>=o.toExpPos):(ae(e,1,Ke),t===void 0?t=o.rounding:ae(t,0,8),n=C(new o(n),e,t),r=pe(n,e<=n.e||n.e<=o.toExpNeg,e)),n.isNeg()&&!n.isZero()?"-"+r:r};h.toSignificantDigits=h.toSD=function(e,t){var r=this,n=r.constructor;return e===void 0?(e=n.precision,t=n.rounding):(ae(e,1,Ke),t===void 0?t=n.rounding:ae(t,0,8)),C(new n(r),e,t)};h.toString=function(){var e=this,t=e.constructor,r=pe(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+r:r};h.truncated=h.trunc=function(){return C(new this.constructor(this),this.e+1,1)};h.valueOf=h.toJSON=function(){var e=this,t=e.constructor,r=pe(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+r:r};function oe(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=M-n.length,r&&(i+=Le(r)),i+=n;s=e[t],n=s+"",r=M-n.length,r&&(i+=Le(r))}else if(s===0)return"0";for(;s%10===0;)s/=10;return i+s}function ae(e,t,r){if(e!==~~e||e<t||e>r)throw Error(Be+e)}function Je(e,t,r,n){var o,i,s,a;for(i=e[0];i>=10;i/=10)--t;return--t<0?(t+=M,o=0):(o=Math.ceil((t+1)/M),t%=M),i=re(10,M-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)==re(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)==re(10,t-3)-1,s}function ht(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]+=qt.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 so(e,t){var r,n,o;if(t.isZero())return t;n=t.d.length,n<32?(r=Math.ceil(n/3),o=(1/kt(4,r)).toString()):(r=16,o="2.3283064365386962890625e-10"),e.precision+=r,t=We(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 Z=function(){function e(n,o,i){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*o+a,n[c]=s%i|0,a=s/i|0;return a&&n.unshift(a),n}function t(n,o,i,s){var a,c;if(i!=s)c=i>s?1:-1;else for(a=c=0;a<i;a++)if(n[a]!=o[a]){c=n[a]>o[a]?1:-1;break}return c}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,c){var u,d,l,f,p,m,g,b,P,A,x,w,I,k,R,K,B,S,N,L,v=n.constructor,_=n.s==o.s?1:-1,W=n.d,V=o.d;if(!W||!W[0]||!V||!V[0])return new v(!n.s||!o.s||(W?V&&W[0]==V[0]:!V)?NaN:W&&W[0]==0||!V?_*0:_/0);for(c?(p=1,d=n.e-o.e):(c=de,p=M,d=ie(n.e/p)-ie(o.e/p)),N=V.length,B=W.length,P=new v(_),A=P.d=[],l=0;V[l]==(W[l]||0);l++);if(V[l]>(W[l]||0)&&d--,i==null?(k=i=v.precision,s=v.rounding):a?k=i+(n.e-o.e)+1:k=i,k<0)A.push(1),m=!0;else{if(k=k/p+2|0,l=0,N==1){for(f=0,V=V[0],k++;(l<B||f)&&k--;l++)R=f*c+(W[l]||0),A[l]=R/V|0,f=R%V|0;m=f||l<B}else{for(f=c/(V[0]+1)|0,f>1&&(V=e(V,f,c),W=e(W,f,c),N=V.length,B=W.length),K=N,x=W.slice(0,N),w=x.length;w<N;)x[w++]=0;L=V.slice(),L.unshift(0),S=V[0],V[1]>=c/2&&++S;do f=0,u=t(V,x,N,w),u<0?(I=x[0],N!=w&&(I=I*c+(x[1]||0)),f=I/S|0,f>1?(f>=c&&(f=c-1),g=e(V,f,c),b=g.length,w=x.length,u=t(g,x,b,w),u==1&&(f--,r(g,N<b?L:V,b,c))):(f==0&&(u=f=1),g=V.slice()),b=g.length,b<w&&g.unshift(0),r(x,g,w,c),u==-1&&(w=x.length,u=t(V,x,N,w),u<1&&(f++,r(x,N<w?L:V,w,c))),w=x.length):u===0&&(f++,x=[0]),A[l++]=f,u&&x[0]?x[w++]=W[K]||0:(x=[W[K]],w=1);while((K++<B||x[0]!==void 0)&&k--);m=x[0]!==void 0}A[0]||A.shift()}if(p==1)P.e=d,Zr=m;else{for(l=1,f=A[0];f>=10;f/=10)l++;P.e=l+d*p-1,C(P,a?i+P.e+1:i,s,m)}return P}}();function C(e,t,r,n){var o,i,s,a,c,u,d,l,f,p=e.constructor;e:if(t!=null){if(l=e.d,!l)return e;for(o=1,a=l[0];a>=10;a/=10)o++;if(i=t-o,i<0)i+=M,s=t,d=l[f=0],c=d/re(10,o-s-1)%10|0;else if(f=Math.ceil((i+1)/M),a=l.length,f>=a)if(n){for(;a++<=f;)l.push(0);d=c=0,o=1,i%=M,s=i-M+1}else break e;else{for(d=a=l[f],o=1;a>=10;a/=10)o++;i%=M,s=i-M+o,c=s<0?0:d/re(10,o-s-1)%10|0}if(n=n||t<0||l[f+1]!==void 0||(s<0?d:d%re(10,o-s-1)),u=r<4?(c||n)&&(r==0||r==(e.s<0?3:2)):c>5||c==5&&(r==4||n||r==6&&(i>0?s>0?d/re(10,o-s):0:l[f-1])%10&1||r==(e.s<0?8:7)),t<1||!l[0])return l.length=0,u?(t-=e.e+1,l[0]=re(10,(M-t%M)%M),e.e=-t||0):l[0]=e.e=0,e;if(i==0?(l.length=f,a=1,f--):(l.length=f+1,a=re(10,M-i),l[f]=s>0?(d/re(10,o-s)%re(10,s)|0)*a:0),u)for(;;)if(f==0){for(i=1,s=l[0];s>=10;s/=10)i++;for(s=l[0]+=a,a=1;s>=10;s/=10)a++;i!=a&&(e.e++,l[0]==de&&(l[0]=1));break}else{if(l[f]+=a,l[f]!=de)break;l[f--]=0,a=1}for(i=l.length;l[--i]===0;)l.pop()}return E&&(e.e>p.maxE?(e.d=null,e.e=NaN):e.e<p.minE&&(e.e=0,e.d=[0])),e}function pe(e,t,r){if(!e.isFinite())return rn(e);var n,o=e.e,i=oe(e.d),s=i.length;return t?(r&&(n=r-s)>0?i=i.charAt(0)+"."+i.slice(1)+Le(n):s>1&&(i=i.charAt(0)+"."+i.slice(1)),i=i+(e.e<0?"e":"e+")+e.e):o<0?(i="0."+Le(-o-1)+i,r&&(n=r-s)>0&&(i+=Le(n))):o>=s?(i+=Le(o+1-s),r&&(n=r-o-1)>0&&(i=i+"."+Le(n))):((n=o+1)<s&&(i=i.slice(0,n)+"."+i.slice(n)),r&&(n=r-s)>0&&(o+1===s&&(i+="."),i+=Le(n))),i}function Pt(e,t){var r=e[0];for(t*=M;r>=10;r/=10)t++;return t}function Tt(e,t,r){if(t>io)throw E=!0,r&&(e.precision=r),Error(zr);return C(new e(bt),t,1,!0)}function le(e,t,r){if(t>Ht)throw Error(zr);return C(new e(wt),t,r,!0)}function $r(e){var t=e.length-1,r=t*M+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 Le(e){for(var t="";e--;)t+="0";return t}function en(e,t,r,n){var o,i=new e(1),s=Math.ceil(n/M+4);for(E=!1;;){if(r%2&&(i=i.times(t),jr(i.d,s)&&(o=!0)),r=ie(r/2),r===0){r=i.d.length-1,o&&i.d[r]===0&&++i.d[r];break}t=t.times(t),jr(t.d,s)}return E=!0,i}function Hr(e){return e.d[e.d.length-1]&1}function tn(e,t,r){for(var n,o=new e(t[0]),i=0;++i<t.length;)if(n=new e(t[i]),n.s)o[r](n)&&(o=n);else{o=n;break}return o}function jt(e,t){var r,n,o,i,s,a,c,u=0,d=0,l=0,f=e.constructor,p=f.rounding,m=f.precision;if(!e.d||!e.d[0]||e.e>17)return new f(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:0/0);for(t==null?(E=!1,c=m):c=t,a=new f(.03125);e.e>-2;)e=e.times(a),l+=5;for(n=Math.log(re(2,l))/Math.LN10*2+5|0,c+=n,r=i=s=new f(1),f.precision=c;;){if(i=C(i.times(e),c,1),r=r.times(++d),a=s.plus(Z(i,r,c,1)),oe(a.d).slice(0,c)===oe(s.d).slice(0,c)){for(o=l;o--;)s=C(s.times(s),c,1);if(t==null)if(u<3&&Je(s.d,c-n,p,u))f.precision=c+=10,r=i=a=new f(1),d=0,u++;else return C(s,f.precision=m,p,E=!0);else return f.precision=m,s}s=a}}function Re(e,t){var r,n,o,i,s,a,c,u,d,l,f,p=1,m=10,g=e,b=g.d,P=g.constructor,A=P.rounding,x=P.precision;if(g.s<0||!b||!b[0]||!g.e&&b[0]==1&&b.length==1)return new P(b&&!b[0]?-1/0:g.s!=1?NaN:b?0:g);if(t==null?(E=!1,d=x):d=t,P.precision=d+=m,r=oe(b),n=r.charAt(0),Math.abs(i=g.e)<15e14){for(;n<7&&n!=1||n==1&&r.charAt(1)>3;)g=g.times(e),r=oe(g.d),n=r.charAt(0),p++;i=g.e,n>1?(g=new P("0."+r),i++):g=new P(n+"."+r.slice(1))}else return u=Tt(P,d+2,x).times(i+""),g=Re(new P(n+"."+r.slice(1)),d-m).plus(u),P.precision=x,t==null?C(g,x,A,E=!0):g;for(l=g,c=s=g=Z(g.minus(1),g.plus(1),d,1),f=C(g.times(g),d,1),o=3;;){if(s=C(s.times(f),d,1),u=c.plus(Z(s,new P(o),d,1)),oe(u.d).slice(0,d)===oe(c.d).slice(0,d))if(c=c.times(2),i!==0&&(c=c.plus(Tt(P,d+2,x).times(i+""))),c=Z(c,new P(p),d,1),t==null)if(Je(c.d,d-m,A,a))P.precision=d+=m,u=s=g=Z(l.minus(1),l.plus(1),d,1),f=C(g.times(g),d,1),o=a=1;else return C(c,P.precision=x,A,E=!0);else return P.precision=x,c;c=u,o+=2}}function rn(e){return String(e.s*e.s/0)}function Yt(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)%M,r<0&&(n+=M),n<o){for(n&&e.d.push(+t.slice(0,n)),o-=M;n<o;)e.d.push(+t.slice(n,n+=M));t=t.slice(n),n=M-t.length}else n-=o;for(;n--;)t+="0";e.d.push(+t),E&&(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 ao(e,t){var r,n,o,i,s,a,c,u,d;if(t.indexOf("_")>-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),Qr.test(t))return Yt(e,t)}else if(t==="Infinity"||t==="NaN")return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(ro.test(t))r=16,t=t.toLowerCase();else if(to.test(t))r=2;else if(no.test(t))r=8;else throw Error(Be+t);for(i=t.search(/p/i),i>0?(c=+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=en(n,new n(r),i,i*2)),u=ht(t,r,de),d=u.length-1,i=d;u[i]===0;--i)u.pop();return i<0?new n(e.s*0):(e.e=Pt(u,d),e.d=u,E=!1,s&&(e=Z(e,o,a*4)),c&&(e=e.times(Math.abs(c)<54?re(2,c):Xe.pow(2,c))),E=!0,e)}function uo(e,t){var r,n=t.d.length;if(n<3)return t.isZero()?t:We(e,2,t,t);r=1.4*Math.sqrt(n),r=r>16?16:r|0,t=t.times(1/kt(5,r)),t=We(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 We(e,t,r,n,o){var i,s,a,c,u=1,d=e.precision,l=Math.ceil(d/M);for(E=!1,c=r.times(r),a=new e(n);;){if(s=Z(a.times(c),new e(t++*t++),d,1),a=o?n.plus(s):n.minus(s),n=Z(s.times(c),new e(t++*t++),d,1),s=a.plus(n),s.d[l]!==void 0){for(i=l;s.d[i]===a.d[i]&&i--;);if(i==-1)break}i=a,a=n,n=s,s=i,u++}return E=!0,s.d.length=l+1,s}function kt(e,t){for(var r=e;--t;)r*=e;return r}function nn(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 we=n?4:1,t;if(r=t.divToInt(o),r.isZero())we=n?3:2;else{if(t=t.minus(r.times(o)),t.lte(i))return we=Hr(r)?n?2:3:n?4:1,t;we=Hr(r)?n?1:4:n?3:2}return t.minus(o).abs()}function Zt(e,t,r,n){var o,i,s,a,c,u,d,l,f,p=e.constructor,m=r!==void 0;if(m?(ae(r,1,Ke),n===void 0?n=p.rounding:ae(n,0,8)):(r=p.precision,n=p.rounding),!e.isFinite())d=rn(e);else{for(d=pe(e),s=d.indexOf("."),m?(o=2,t==16?r=r*4-3:t==8&&(r=r*3-2)):o=t,s>=0&&(d=d.replace(".",""),f=new p(1),f.e=d.length-s,f.d=ht(pe(f),10,o),f.e=f.d.length),l=ht(d,10,o),i=c=l.length;l[--c]==0;)l.pop();if(!l[0])d=m?"0p+0":"0";else{if(s<0?i--:(e=new p(e),e.d=l,e.e=i,e=Z(e,f,r,n,0,o),l=e.d,i=e.e,u=Zr),s=l[r],a=o/2,u=u||l[r+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(e.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&l[r-1]&1||n===(e.s<0?8:7)),l.length=r,u)for(;++l[--r]>o-1;)l[r]=0,r||(++i,l.unshift(1));for(c=l.length;!l[c-1];--c);for(s=0,d="";s<c;s++)d+=qt.charAt(l[s]);if(m){if(c>1)if(t==16||t==8){for(s=t==16?4:3,--c;c%s;c++)d+="0";for(l=ht(d,o,t),c=l.length;!l[c-1];--c);for(s=1,d="1.";s<c;s++)d+=qt.charAt(l[s])}else d=d.charAt(0)+"."+d.slice(1);d=d+(i<0?"p":"p+")+i}else if(i<0){for(;++i;)d="0"+d;d="0."+d}else if(++i>c)for(i-=c;i--;)d+="0";else i<c&&(d=d.slice(0,i)+"."+d.slice(i))}d=(t==16?"0x":t==2?"0b":t==8?"0o":"")+d}return e.s<0?"-"+d:d}function jr(e,t){if(e.length>t)return e.length=t,!0}function co(e){return new this(e).abs()}function lo(e){return new this(e).acos()}function fo(e){return new this(e).acosh()}function po(e,t){return new this(e).plus(t)}function mo(e){return new this(e).asin()}function go(e){return new this(e).asinh()}function yo(e){return new this(e).atan()}function ho(e){return new this(e).atanh()}function bo(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(Z(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(Z(e,t,i,1)),r}function wo(e){return new this(e).cbrt()}function To(e){return C(e=new this(e),e.e+1,2)}function xo(e,t,r){return new this(e).clamp(t,r)}function Po(e){if(!e||typeof e!="object")throw Error(xt+"Object expected");var t,r,n,o=e.defaults===!0,i=["precision",1,Ke,"rounding",0,8,"toExpNeg",-Oe,0,"toExpPos",0,Oe,"maxE",0,Oe,"minE",-Oe,0,"modulo",0,9];for(t=0;t<i.length;t+=3)if(r=i[t],o&&(this[r]=Gt[r]),(n=e[r])!==void 0)if(ie(n)===n&&n>=i[t+1]&&n<=i[t+2])this[r]=n;else throw Error(Be+r+": "+n);if(r="crypto",o&&(this[r]=Gt[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(Jr);else this[r]=!1;else throw Error(Be+r+": "+n);return this}function ko(e){return new this(e).cos()}function Io(e){return new this(e).cosh()}function on(e){var t,r,n;function o(i){var s,a,c,u=this;if(!(u instanceof o))return new o(i);if(u.constructor=o,Yr(i)){u.s=i.s,E?!i.d||i.e>o.maxE?(u.e=NaN,u.d=null):i.e<o.minE?(u.e=0,u.d=[0]):(u.e=i.e,u.d=i.d.slice()):(u.e=i.e,u.d=i.d?i.d.slice():i.d);return}if(c=typeof i,c==="number"){if(i===0){u.s=1/i<0?-1:1,u.e=0,u.d=[0];return}if(i<0?(i=-i,u.s=-1):u.s=1,i===~~i&&i<1e7){for(s=0,a=i;a>=10;a/=10)s++;E?s>o.maxE?(u.e=NaN,u.d=null):s<o.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[i]):(u.e=s,u.d=[i]);return}else if(i*0!==0){i||(u.s=NaN),u.e=NaN,u.d=null;return}return Yt(u,i.toString())}else if(c!=="string")throw Error(Be+i);return(a=i.charCodeAt(0))===45?(i=i.slice(1),u.s=-1):(a===43&&(i=i.slice(1)),u.s=1),Qr.test(i)?Yt(u,i):ao(u,i)}if(o.prototype=h,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=Po,o.clone=on,o.isDecimal=Yr,o.abs=co,o.acos=lo,o.acosh=fo,o.add=po,o.asin=mo,o.asinh=go,o.atan=yo,o.atanh=ho,o.atan2=bo,o.cbrt=wo,o.ceil=To,o.clamp=xo,o.cos=ko,o.cosh=Io,o.div=Ao,o.exp=So,o.floor=Lo,o.hypot=Ro,o.ln=Bo,o.log=Ko,o.log10=_o,o.log2=Co,o.max=Fo,o.min=No,o.mod=Vo,o.mul=Mo,o.pow=vo,o.random=Eo,o.round=Do,o.sign=Oo,o.sin=Wo,o.sinh=Uo,o.sqrt=qo,o.sub=Go,o.sum=Ho,o.tan=jo,o.tanh=Yo,o.trunc=Zo,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 Ao(e,t){return new this(e).div(t)}function So(e){return new this(e).exp()}function Lo(e){return C(e=new this(e),e.e+1,3)}function Ro(){var e,t,r=new this(0);for(E=!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 E=!0,new this(1/0);r=t}return E=!0,r.sqrt()}function Yr(e){return e instanceof Xe||e&&e.toStringTag===Xr||!1}function Bo(e){return new this(e).ln()}function Ko(e,t){return new this(e).log(t)}function Co(e){return new this(e).log(2)}function _o(e){return new this(e).log(10)}function Fo(){return tn(this,arguments,"lt")}function No(){return tn(this,arguments,"gt")}function Vo(e,t){return new this(e).mod(t)}function Mo(e,t){return new this(e).mul(t)}function vo(e,t){return new this(e).pow(t)}function Eo(e){var t,r,n,o,i=0,s=new this(1),a=[];if(e===void 0?e=this.precision:ae(e,1,Ke),n=Math.ceil(e/M),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(Jr);else for(;i<n;)a[i++]=Math.random()*1e7|0;for(n=a[--i],e%=M,n&&e&&(o=re(10,M-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-=M)a.shift();for(n=1,o=a[0];o>=10;o/=10)n++;n<M&&(r-=M-n)}return s.e=r,s.d=a,s}function Do(e){return C(e=new this(e),e.e+1,this.rounding)}function Oo(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 Uo(e){return new this(e).sinh()}function qo(e){return new this(e).sqrt()}function Go(e,t){return new this(e).sub(t)}function Ho(){var e=0,t=arguments,r=new this(t[e]);for(E=!1;r.s&&++e<t.length;)r=r.plus(t[e]);return E=!0,C(r,this.precision,this.rounding)}function jo(e){return new this(e).tan()}function Yo(e){return new this(e).tanh()}function Zo(e){return C(e=new this(e),e.e+1,1)}h[Symbol.for("nodejs.util.inspect.custom")]=h.toString;h[Symbol.toStringTag]="Decimal";var Xe=h.constructor=on(Gt);bt=new Xe(bt);wt=new Xe(wt);var zt=Xe;import ri from"big.js";import St from"bn.js";import zo from"toformat";var Jo=zo,Qe=Jo;import At from"big.js";import Qo from"bn.js";import $o from"decimal.js-light";import $e from"bn.js";var sn=9007199254740991;function U(e){let t=$("Raydium_parseBigNumberish");if(e instanceof $e)return e;if(typeof e=="string"){if(e.match(/^-?[0-9]+$/))return new $e(e);t.logWithError(`invalid BigNumberish string: ${e}`)}return typeof e=="number"?(e%1&&t.logWithError(`BigNumberish number underflow: ${e}`),(e>=sn||e<=-sn)&&t.logWithError(`BigNumberish number overflow: ${e}`),new $e(String(e))):typeof e=="bigint"?new $e(e.toString()):(t.error(`invalid BigNumberish value: ${e}`),new $e(0))}var It=$("module/fraction"),Jt=Qe(At),et=Qe($o),ei={[0]:et.ROUND_DOWN,[1]:et.ROUND_HALF_UP,[2]:et.ROUND_UP},ti={[0]:At.roundDown,[1]:At.roundHalfUp,[2]:At.roundUp},H=class{constructor(t,r=new Qo(1)){this.numerator=U(t),this.denominator=U(r)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new H(this.denominator,this.numerator)}add(t){let r=t instanceof H?t:new H(U(t));return this.denominator.eq(r.denominator)?new H(this.numerator.add(r.numerator),this.denominator):new H(this.numerator.mul(r.denominator).add(r.numerator.mul(this.denominator)),this.denominator.mul(r.denominator))}sub(t){let r=t instanceof H?t:new H(U(t));return this.denominator.eq(r.denominator)?new H(this.numerator.sub(r.numerator),this.denominator):new H(this.numerator.mul(r.denominator).sub(r.numerator.mul(this.denominator)),this.denominator.mul(r.denominator))}mul(t){let r=t instanceof H?t:new H(U(t));return new H(this.numerator.mul(r.numerator),this.denominator.mul(r.denominator))}div(t){let r=t instanceof H?t:new H(U(t));return new H(this.numerator.mul(r.denominator),this.denominator.mul(r.numerator))}toSignificant(t,r={groupSeparator:""},n=1){Number.isInteger(t)||It.logWithError(`${t} is not an integer.`),t<=0&&It.logWithError(`${t} is not positive.`),et.set({precision:t+1,rounding:ei[n]});let o=new et(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)||It.logWithError(`${t} is not an integer.`),t<0&&It.logWithError(`${t} is negative.`),Jt.DP=t,Jt.RM=ti[n]||1,new Jt(this.numerator.toString()).div(this.denominator.toString()).toFormat(t,r)}isZero(){return this.numerator.isZero()}};var ni=$("Raydium_amount"),an=Qe(ri);function oi(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")):ni.logWithError(`invalid number string, num: ${e}`)}else r=e;return[r,n.slice(0,t)||n]}var Te=class extends H{constructor(r,n,o=!0,i){let s=new St(0),a=Xt.pow(new St(r.decimals));if(o)s=U(n);else{let c=new St(0),u=new St(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[d,l]=oi(n.toString(),r.decimals);c=U(d),u=U(l)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=$(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 Te(this.token,this.raw.add(r.raw))}subtract(r){return this.token.equals(r.token)||this.logger.logWithError("sub token not equals"),new Te(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 an.DP=this.token.decimals,new an(this.numerator.toString()).div(this.denominator.toString()).toFormat(r)}};import{PublicKey as ii}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as un}from"@solana/spl-token";var cn={chainId:101,address:ii.default.toBase58(),programId:un.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},se={chainId:101,address:"So11111111111111111111111111111111111111112",programId:un.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as tr}from"@solana/web3.js";import{PublicKey as X,SystemProgram as ln,SYSVAR_RENT_PUBKEY as si}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ai}from"@solana/spl-token";function y({pubkey:e,isSigner:t=!1,isWritable:r=!0}){return{pubkey:e,isWritable:r,isSigner:t}}var Qt=[y({pubkey:ai,isWritable:!1}),y({pubkey:ln.programId,isWritable:!1}),y({pubkey:si,isWritable:!1})];function $t({publicKey:e,transformSol:t}){let r=er(e.toString());if(r instanceof X)return t&&r.equals(ne)?be:r;if(t&&r.toString()===ne.toBase58())return be;if(typeof r=="string"){if(r===X.default.toBase58())return X.default;try{return new X(r)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function er(e){try{return new X(e)}catch{return e}}var sa=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),aa=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ui=new X("SysvarRent111111111111111111111111111111111"),ua=new X("SysvarC1ock11111111111111111111111111111111"),ca=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ci=new X("Sysvar1nstructions1111111111111111111111111"),la=ln.programId,da=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),fa=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),pa=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ma=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ga=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),ya=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),ha=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ba=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),wa=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ta=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),xa=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),be=new X("So11111111111111111111111111111111111111112"),ne=X.default;function yt(e){return $t({publicKey:e,transformSol:!0})}var rr=class{constructor({mint:t,decimals:r,symbol:n,name:o,skipMint:i=!1,isToken2022:s=!1}){if(t===ne.toBase58()||t instanceof tr&&ne.equals(t)){this.decimals=se.decimals,this.symbol=se.symbol,this.name=se.name,this.mint=new tr(se.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?tr.default:$t({publicKey:t}),this.isToken2022=s}equals(t){return this===t?!0:this.mint.equals(t.mint)}},Ve=rr;Ve.WSOL=new rr(te(z({},se),{mint:se.address}));var nr=class{constructor({decimals:t,symbol:r="UNKNOWN",name:n="UNKNOWN"}){this.decimals=t,this.symbol=r,this.name=n}equals(t){return this===t}},Lt=nr;Lt.SOL=new nr(cn);import li from"bn.js";var dn=new H(new li(100)),Ue=class extends H{toSignificant(t=5,r,n){return this.mul(dn).toSignificant(t,r,n)}toFixed(t=2,r,n){return this.mul(dn).toFixed(t,r,n)}};var di=$("Raydium_price"),xe=class extends H{constructor(r){let{baseToken:n,quoteToken:o,numerator:i,denominator:s}=r;super(i,s);this.baseToken=n,this.quoteToken=o,this.scalar=new H(or(n.decimals),or(o.decimals))}get raw(){return new H(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new xe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(r){this.quoteToken!==r.baseToken&&di.logWithError("mul token not equals");let n=super.mul(r);return new xe({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)}};var ir=new Pe(0),lu=new Pe(1),du=new Pe(2),fu=new Pe(3),pu=new Pe(5),Xt=new Pe(10),mu=new Pe(100),gu=new Pe(1e3),yu=new Pe(1e4);function or(e){return Xt.pow(U(e))}function Ut(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 bi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as wi}from"@solana/spl-token";import{ComputeBudgetProgram as fn,Keypair as mn,PublicKey as fi,Transaction as gn,TransactionMessage as pi,VersionedTransaction as yn}from"@solana/web3.js";var Y={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",TransferTip:"TransferTip"};import{TOKEN_PROGRAM_ID as mi}from"@solana/spl-token";var pn=$("Raydium_txUtil"),hn=1644;function Rt(e){let t=[],r=[];return e.microLamports&&(t.push(fn.setComputeUnitPrice({microLamports:e.microLamports})),r.push(Y.SetComputeUnitPrice)),e.units&&(t.push(fn.setComputeUnitLimit({units:e.units})),r.push(Y.SetComputeUnitLimit)),{instructions:t,instructionTypes:r}}async function qe(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 Bt(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(Object.assign(i.err,{txId:t}))},"confirmed")})}function gi(e,t){e.length<1&&pn.logWithError(`no instructions provided: ${e.toString()}`),t.length<1&&pn.logWithError(`no signers provided:, ${t.toString()}`);let r=new gn;r.recentBlockhash="11111111111111111111111111111111",r.feePayer=t[0],r.add(...e);try{return Buffer.from(r.serialize({verifySignatures:!1})).toString("base64").length<hn}catch{return!1}}function Me(e,t){let[r,n]=fi.findProgramAddressSync(e,t);return{publicKey:r,nonce:n}}function tt({instructions:e,payer:t,signers:r}){return gi(e,[t,...r])}function rt({instructions:e,payer:t,lookupTableAddressAccount:r,recentBlockhash:n=mn.generate().publicKey.toString()}){let i=new pi({payerKey:t,recentBlockhash:n,instructions:e}).compileToV0Message(Object.values(r!=null?r:{}));try{return Buffer.from(new yn(i).serialize()).toString("base64").length<hn}catch{return!1}}var yi=e=>Buffer.isBuffer(e)?e:e instanceof Uint8Array?Buffer.from(e.buffer,e.byteOffset,e.byteLength):Buffer.from(e),hi=e=>{let t=e.serialize({requireAllSignatures:!1,verifySignatures:!1});e instanceof yn&&(t=yi(t));try{return t instanceof Buffer?t.toString("base64"):Buffer.from(t).toString("base64")}catch{return t.toString("base64")}};function ve(e){let t=[];return e.forEach(r=>{r instanceof gn&&(r.recentBlockhash||(r.recentBlockhash=mi.toBase58()),r.feePayer||(r.feePayer=mn.generate().publicKey)),t.push(hi(r))}),console.log("simulate tx string:",t),t}function Ge(e,t,r){return Me([e.toBuffer(),(r!=null?r:wi).toBuffer(),t.toBuffer()],new bi("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as F}from"@solana/web3.js";var bn=new F("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),wn=new F("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Tn=new F("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),nt=new F("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),vu=new F("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Eu=new F("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Du=new F("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ou=new F("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Wu=new F("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Uu=new F("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),qu=new F("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Gu=new F("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Hu=new F("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),ju=new F("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Yu=new F("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Zu=new F("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),zu=new F("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Ju=new F("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Xu=new F("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Qu=new F("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),$u=new F("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ec=new F("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),tc=new F("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),rc=new F("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),nc=new F("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),oc=new F("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),ic=new F("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),sc=new F("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),ac=new F("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),uc=new F("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),cc=new F("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Ee={OPEN_BOOK_PROGRAM:new F("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new F("Ray1111111111111111111111111111111111111111"),AMM_V4:new F("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new F("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new F("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new F("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new F("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new F("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new F("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new F("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new F("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new F("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:F.default,Router:new F("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new F("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new F("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new F("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new F("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new F("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new F("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new F("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new F("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new F("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new F("Ray1111111111111111111111111111111111111111")};import fc from"bn.js";import{PublicKey as sr,AddressLookupTableAccount as Ye}from"@solana/web3.js";async function ar({connection:e,address:t,cluster:r="mainnet"}){let n=await Gr(e,[...new Set(t.map(i=>i.toString()))].map(i=>new sr(i))),o={};for(let i=0;i<t.length;i++){let s=n[i],a=t[i];if(!s)continue;let c=new Ye({key:a,state:Ye.deserialize(s.data)});o[a.toString()]=c,r==="devnet"?je[a.toString()]=c:He[a.toString()]=c}return o}var He={},ur=async e=>{let t="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(He[t])return He;let r=new sr(t),n=await e.getAccountInfo(r);return n&&(He[t]=new Ye({key:r,state:Ye.deserialize(n.data)})),He},je={},cr=async e=>{let t="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(je[t])return je;let r=new sr(t),n=await e.getAccountInfo(r);return n&&(je[t]=new Ye({key:r,state:Ye.deserialize(n.data)})),je};import{PublicKey as Ze,sendAndConfirmTransaction as lr,SystemProgram as xi,Transaction as ot,TransactionMessage as it,VersionedTransaction as st}from"@solana/web3.js";import Pi from"axios";var Kt=2e3,Ct=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.loopMultiTxStatus=!!t.loopMultiTxStatus}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 Pi.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}=Rt(t);return this.instructions.unshift(...r),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(t){var r;return t?(this.endInstructions.push(xi.transfer({fromPubkey:(r=t.feePayer)!=null?r:this.feePayer,toPubkey:new Ze(t.address),lamports:BigInt(t.amount.toString())})),this.endInstructionTypes.push(Y.TransferTip),!0):!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!==Ze.default.toString())),this}async versionBuild({txVersion:t,extInfo:r}){return t===0?await this.buildV0(z({},r||{})):this.build(r)}build(t){var n;let r=new ot;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 d;let{recentBlockHash:i,skipPreflight:s=!0,sendAndConfirm:a,notSendToRpc:c}=o||{},u=i!=null?i:await qe(this.connection,this.blockhashCommitment);if(r.recentBlockhash=u,this.signers.length&&r.sign(...this.signers),ve([r]),(d=this.owner)!=null&&d.isKeyPair)return{txId:a?await lr(this.connection,r,this.signers.find(f=>f.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]);if(this.signers.length)for(let f of l)try{f.sign(...this.signers)}catch{}return{txId:c?"":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 u;let{extraPreBuildData:r=[],extInfo:n}=t,{transaction:o}=this.build(n),i=r.filter(d=>d.transaction.instructions.length>0),s=[o,...i.map(d=>d.transaction)],a=[this.signers,...i.map(d=>d.signers)],c=[...this.instructionTypes,...i.map(d=>d.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(d=>{d.some(l=>l.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async d=>{var P;let{sequentially:l,onTxUpdate:f,skipTxCount:p=0,recentBlockHash:m,skipPreflight:g=!0}=d||{},b=m!=null?m:await qe(this.connection,this.blockhashCommitment);if((P=this.owner)!=null&&P.isKeyPair){if(l){let A=[],x=0;for(let w of s){if(++x,x<=p)continue;let I=await lr(this.connection,w,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});A.push(I)}return{txIds:A,signedTxs:s}}return{txIds:await await Promise.all(s.map(async A=>(A.recentBlockhash=b,await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:g})))),signedTxs:s}}if(this.signAllTransactions){let A=s.map((w,I)=>(w.recentBlockhash=b,a[I].length&&w.sign(...a[I]),w));ve(A);let x=await this.signAllTransactions(A);if(l){let w=0,I=[],k=async()=>{if(!x[w])return;let R=await this.connection.sendRawTransaction(x[w].serialize(),{skipPreflight:g});I.push({txId:R,status:"sent",signedTx:x[w]}),f==null||f([...I]),w++;let K=!1,B=null,S=null,N=L=>{B!==null&&clearInterval(B),S!==null&&this.connection.removeSignatureListener(S);let v=I.findIndex(_=>_.txId===R);if(v>-1){if(I[v].status==="error"||I[v].status==="success")return;I[v].status=L.err?"error":"success"}f==null||f([...I]),L.err||k()};this.loopMultiTxStatus&&(B=setInterval(async()=>{var L;if(K){clearInterval(B);return}try{let v=await this.connection.getTransaction(R,{commitment:"confirmed",maxSupportedTransactionVersion:0});v&&(K=!0,clearInterval(B),N({err:((L=v.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",R))}catch(v){K=!0,clearInterval(B),console.error("getTransaction timeout:",v,R)}},Kt)),S=this.connection.onSignature(R,L=>{if(K){this.connection.removeSignatureListener(S);return}K=!0,N(L)},"confirmed"),this.connection.getSignatureStatus(R)};return await k(),{txIds:I.map(R=>R.txId),signedTxs:x}}else{let w=[];for(let I=0;I<x.length;I+=1){let k=await this.connection.sendRawTransaction(x[I].serialize(),{skipPreflight:g});w.push(k)}return{txIds:w,signedTxs:x}}}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 g;let m=t||{},{lookupTableCache:r={},lookupTableAddress:n=[],forerunCreate:o,recentBlockhash:i}=m,s=gt(m,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=z(z({},this.cluster==="devnet"?await cr(this.connection):await ur(this.connection)),r),c=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let b of c)a[b]===void 0&&u.push(new Ze(b));let d=await ar({connection:this.connection,address:u});for(let[b,P]of Object.entries(d))a[b]=P;let l=o?Ze.default.toBase58():i!=null?i:await qe(this.connection,this.blockhashCommitment),f=new it({payerKey:this.feePayer,recentBlockhash:l,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((g=this.owner)==null?void 0:g.signer)&&!this.signers.some(b=>b.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new st(f);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var w;let{skipPreflight:P=!0,sendAndConfirm:A,notSendToRpc:x}=b||{};if(ve([p]),(w=this.owner)!=null&&w.isKeyPair){let I=await this.connection.sendTransaction(p,{skipPreflight:P});return A&&await Bt(this.connection,I),{txId:I,signedTx:p}}if(this.signAllTransactions){let I=await this.signAllTransactions([p]);if(this.signers.length)for(let k of I)try{k.sign(this.signers)}catch{}return{txId:x?"":await this.connection.sendTransaction(I[0],{skipPreflight:P}),signedTx:I[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(t){var u;let{extraPreBuildData:r=[],buildProps:n}=t,{transaction:o}=await this.buildV0(n),i=r.filter(d=>d.builder.instructions.length>0),s=[o,...i.map(d=>d.transaction)],a=[this.signers,...i.map(d=>d.signers)],c=[...this.instructionTypes,...i.map(d=>d.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(d=>{d.some(l=>l.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(d,l)=>{d.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async d=>{var g;let{sequentially:l,onTxUpdate:f,recentBlockHash:p,skipPreflight:m=!0}=d||{};if(p&&s.forEach(b=>b.message.recentBlockhash=p),ve(s),(g=this.owner)!=null&&g.isKeyPair){if(l){let b=[];for(let P of s){let A=await this.connection.sendTransaction(P,{skipPreflight:m});await Bt(this.connection,A),b.push(A)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:m}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(l){let P=0,A=[],x=async()=>{if(!b[P])return;let w=await this.connection.sendTransaction(b[P],{skipPreflight:m});A.push({txId:w,status:"sent",signedTx:b[P]}),f==null||f([...A]),P++;let I=!1,k=null,R=null,K=B=>{k!==null&&clearInterval(k),R!==null&&this.connection.removeSignatureListener(R);let S=A.findIndex(N=>N.txId===w);if(S>-1){if(A[S].status==="error"||A[S].status==="success")return;A[S].status=B.err?"error":"success"}f==null||f([...A]),B.err||x()};this.loopMultiTxStatus&&(k=setInterval(async()=>{var B;if(I){clearInterval(k);return}try{let S=await this.connection.getTransaction(w,{commitment:"confirmed",maxSupportedTransactionVersion:0});S&&(I=!0,clearInterval(k),K({err:((B=S.meta)==null?void 0:B.err)||null}),console.log("tx status from getTransaction:",w))}catch(S){I=!0,clearInterval(k),console.error("getTransaction timeout:",S,w)}},Kt)),R=this.connection.onSignature(w,B=>{if(I){this.connection.removeSignatureListener(R);return}I=!0,K(B)},"confirmed"),this.connection.getSignatureStatus(w)};return x(),{txIds:[],signedTxs:b}}else{let P=[];for(let A=0;A<b.length;A+=1){let x=await this.connection.sendTransaction(b[A],{skipPreflight:m});P.push(x)}return{txIds:P,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(t){var f;let l=t||{},{splitIns:r=[],computeBudgetConfig:n}=l,o=gt(l,["splitIns","computeBudgetConfig"]),i=n?Rt(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((p,m)=>te(z({},p),{[m.publicKey.toBase58()]:m}),{}),a=[],c=[],u=[],d=0;if(this.allInstructions.forEach(p=>{let m=[...u,p],g=n?[...i.instructions,...m]:m,P=[...new Set(m.map(A=>A.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat()).values()].map(A=>new Ze(A));if(p!==r[d]&&u.length<12&&(tt({instructions:g,payer:this.feePayer,signers:P})||tt({instructions:m,payer:this.feePayer,signers:P})))u.push(p);else{if(u.length===0)throw Error("item ins too big");d+=p===r[d]?1:0,tt({instructions:n?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:P})?a.push(new ot().add(...i.instructions,...u)):a.push(new ot().add(...u)),c.push(Array.from(new Set(u.map(A=>A.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(A=>s[A]).filter(A=>A!==void 0)),u=[p]}}),u.length>0){let m=[...new Set(u.map(g=>g.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(g=>s[g]).filter(g=>g!==void 0);tt({instructions:n?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(g=>g.publicKey)})?a.push(new ot().add(...i.instructions,...u)):a.push(new ot().add(...u)),c.push(m)}return a.forEach(p=>p.feePayer=this.feePayer),(f=this.owner)!=null&&f.signer&&c.forEach(p=>{p.some(m=>m.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:a,signers:c,instructionTypes:this.instructionTypes,execute:async p=>{var w;let{sequentially:m,onTxUpdate:g,skipTxCount:b=0,recentBlockHash:P,skipPreflight:A=!0}=p||{},x=P!=null?P:await qe(this.connection,this.blockhashCommitment);if(a.forEach(async(I,k)=>{I.recentBlockhash=x,c[k].length&&I.sign(...c[k])}),ve(a),(w=this.owner)!=null&&w.isKeyPair){if(m){let I=0,k=[];for(let R of a){if(++I,I<=b){k.push("tx skipped");continue}let K=await lr(this.connection,R,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});k.push(K)}return{txIds:k,signedTxs:a}}return{txIds:await Promise.all(a.map(async I=>await this.connection.sendRawTransaction(I.serialize(),{skipPreflight:A}))),signedTxs:a}}if(this.signAllTransactions){let I=await this.signAllTransactions(a.slice(b,a.length)),k=[...a.slice(0,b),...I];if(m){let R=0,K=[],B=async()=>{if(!k[R])return;R<b&&(K.push({txId:"",status:"success",signedTx:k[R]}),g==null||g([...K]),R++,B());let S=await this.connection.sendRawTransaction(k[R].serialize(),{skipPreflight:A});K.push({txId:S,status:"sent",signedTx:k[R]}),g==null||g([...K]),R++;let N=!1,L=null,v=null,_=W=>{L!==null&&clearInterval(L),v!==null&&this.connection.removeSignatureListener(v);let V=K.findIndex(ge=>ge.txId===S);if(V>-1){if(K[V].status==="error"||K[V].status==="success")return;K[V].status=W.err?"error":"success"}g==null||g([...K]),W.err||B()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var W;if(N){clearInterval(L);return}try{let V=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(N=!0,clearInterval(L),_({err:((W=V.meta)==null?void 0:W.err)||null}),console.log("tx status from getTransaction:",S))}catch(V){N=!0,clearInterval(L),console.error("getTransaction timeout:",V,S)}},Kt)),v=this.connection.onSignature(S,W=>{if(N){this.connection.removeSignatureListener(v);return}N=!0,_(W)},"confirmed"),this.connection.getSignatureStatus(S)};return await B(),{txIds:K.map(S=>S.txId),signedTxs:k}}else{let R=[];for(let K=0;K<k.length;K+=1){let B=await this.connection.sendRawTransaction(k[K].serialize(),{skipPreflight:A});R.push(B)}return{txIds:R,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(t){var x;let A=t||{},{computeBudgetConfig:r,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:i=[]}=A,s=gt(A,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress"]),a=z(z({},this.cluster==="devnet"?await cr(this.connection):await ur(this.connection)),o),c=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let w of c)a[w]===void 0&&u.push(new Ze(w));let d=await ar({connection:this.connection,address:u});for(let[w,I]of Object.entries(d))a[w]=I;let l=r?Rt(r):{instructions:[],instructionTypes:[]},f=await qe(this.connection,this.blockhashCommitment),p=this.signers.reduce((w,I)=>te(z({},w),{[I.publicKey.toBase58()]:I}),{}),m=[],g=[],b=[],P=0;if(this.allInstructions.forEach(w=>{let I=[...b,w],k=r?[...l.instructions,...I]:I;if(w!==n[P]&&b.length<12&&(rt({instructions:k,payer:this.feePayer,lookupTableAddressAccount:a})||rt({instructions:I,payer:this.feePayer,lookupTableAddressAccount:a})))b.push(w);else{if(b.length===0)throw Error("item ins too big");P+=w===n[P]?1:0;let R={};for(let K of[...new Set(c)])a[K]!==void 0&&(R[K]=a[K]);if(r&&rt({instructions:[...l.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:f})){let K=new it({payerKey:this.feePayer,recentBlockhash:f,instructions:[...l.instructions,...b]}).compileToV0Message(Object.values(a));m.push(new st(K))}else{let K=new it({payerKey:this.feePayer,recentBlockhash:f,instructions:[...b]}).compileToV0Message(Object.values(a));m.push(new st(K))}g.push(Array.from(new Set(b.map(K=>K.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat())).map(K=>p[K]).filter(K=>K!==void 0)),b=[w]}}),b.length>0){let I=[...new Set(b.map(k=>k.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(k=>p[k]).filter(k=>k!==void 0);if(r&&rt({instructions:[...l.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:f})){let k=new it({payerKey:this.feePayer,recentBlockhash:f,instructions:[...l.instructions,...b]}).compileToV0Message(Object.values(a));m.push(new st(k))}else{let k=new it({payerKey:this.feePayer,recentBlockhash:f,instructions:[...b]}).compileToV0Message(Object.values(a));m.push(new st(k))}g.push(I)}return(x=this.owner)!=null&&x.signer&&g.forEach(w=>{w.some(I=>I.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),m.forEach((w,I)=>{w.sign(g[I])}),{builder:this,transactions:m,buildProps:t,signers:g,instructionTypes:this.instructionTypes,execute:async w=>{var S;let{sequentially:I,onTxUpdate:k,skipTxCount:R=0,recentBlockHash:K,skipPreflight:B=!0}=w||{};if(m.map(async(N,L)=>{g[L].length&&N.sign(g[L]),K&&(N.message.recentBlockhash=K)}),ve(m),(S=this.owner)!=null&&S.isKeyPair){if(I){let N=0,L=[];for(let v of m){if(++N,N<=R){console.log("skip tx: ",N),L.push("tx skipped");continue}let _=await this.connection.sendTransaction(v,{skipPreflight:B});await Bt(this.connection,_),L.push(_)}return{txIds:L,signedTxs:m}}return{txIds:await Promise.all(m.map(async N=>await this.connection.sendTransaction(N,{skipPreflight:B}))),signedTxs:m}}if(this.signAllTransactions){let N=await this.signAllTransactions(m.slice(R,m.length)),L=[...m.slice(0,R),...N];if(I){let v=0,_=[],W=async()=>{if(!L[v])return;if(v<R){_.push({txId:"",status:"success",signedTx:L[v]}),k==null||k([..._]),v++,W();return}let V=await this.connection.sendTransaction(L[v],{skipPreflight:B});_.push({txId:V,status:"sent",signedTx:L[v]}),k==null||k([..._]),v++;let ge=!1,ye=null,pt=null,Er=Ne=>{ye!==null&&clearInterval(ye),pt!==null&&this.connection.removeSignatureListener(pt);let he=_.findIndex(Zn=>Zn.txId===V);if(he>-1){if(_[he].status==="error"||_[he].status==="success")return;_[he].status=Ne.err?"error":"success"}k==null||k([..._]),Ne.err||W()};this.loopMultiTxStatus&&(ye=setInterval(async()=>{var Ne;if(ge){clearInterval(ye);return}try{let he=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});he&&(ge=!0,clearInterval(ye),Er({err:((Ne=he.meta)==null?void 0:Ne.err)||null}),console.log("tx status from getTransaction:",V))}catch(he){ge=!0,clearInterval(ye),console.error("getTransaction timeout:",he,V)}},Kt)),pt=this.connection.onSignature(V,Ne=>{if(ge){this.connection.removeSignatureListener(pt);return}ge=!0,Er(Ne)},"confirmed"),this.connection.getSignatureStatus(V)};return W(),{txIds:[],signedTxs:L}}else{let v=[];for(let _=0;_<L.length;_+=1){let W=await this.connection.sendTransaction(L[_],{skipPreflight:B});v.push(W)}return{txIds:v,signedTxs:L}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};import{PublicKey as ki}from"@solana/web3.js";import Ii from"bn.js";function Ai(e){return typeof e=="object"&&e!==null&&![Ve,Te,ki,H,Ii,xe,Ue].some(t=>typeof t=="object"&&e instanceof t)}function ke(e){return typeof e=="string"?er(e):Array.isArray(e)?e.map(t=>ke(t)):Ai(e)?Object.fromEntries(Object.entries(e).map(([t,r])=>[t,ke(r)])):e}import Si from"bn.js";var Mc=new Si(1e6);import{Keypair as Oi,PublicKey as Wi}from"@solana/web3.js";import Td from"bn.js";import{TOKEN_PROGRAM_ID as Ui}from"@solana/spl-token";function Li(e){return e instanceof Uint8Array||e!=null&&typeof e=="object"&&e.constructor.name==="Uint8Array"}function dr(e,...t){if(!Li(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${e.length}`)}function fr(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 xn(e,t){dr(e);let r=t.outputLen;if(e.length<r)throw new Error(`digestInto() expects output buffer of length at least ${r}`)}var Ft=e=>new DataView(e.buffer,e.byteOffset,e.byteLength),fe=(e,t)=>e<<32-t|e>>>t;var il=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ri(e){if(typeof e!="string")throw new Error(`utf8ToBytes expected string, got ${typeof e}`);return new Uint8Array(new TextEncoder().encode(e))}function pr(e){return typeof e=="string"&&(e=Ri(e)),dr(e),e}var _t=class{clone(){return this._cloneInto()}},sl={}.toString;function Pn(e){let t=n=>e().update(pr(n)).digest(),r=e();return t.outputLen=r.outputLen,t.blockLen=r.blockLen,t.create=()=>e(),t}function Bi(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),c=n?4:0,u=n?0:4;e.setUint32(t+c,s,n),e.setUint32(t+u,a,n)}var kn=(e,t,r)=>e&t^~e&r,In=(e,t,r)=>e&t^e&r^t&r,Nt=class extends _t{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=Ft(this.buffer)}update(t){fr(this);let{view:r,buffer:n,blockLen:o}=this;t=pr(t);let i=t.length;for(let s=0;s<i;){let a=Math.min(o-this.pos,i-s);if(a===o){let c=Ft(t);for(;o<=i-s;s+=o)this.process(c,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){fr(this),xn(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 l=s;l<o;l++)r[l]=0;Bi(n,o-8,BigInt(this.length*8),i),this.process(n,0);let a=Ft(t),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,d=this.get();if(u>d.length)throw new Error("_sha2: outputLen bigger than state");for(let l=0;l<u;l++)a.setUint32(4*l,d[l],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 Ki=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]),Ce=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),_e=new Uint32Array(64),mr=class extends Nt{constructor(){super(64,32,8,!1),this.A=Ce[0]|0,this.B=Ce[1]|0,this.C=Ce[2]|0,this.D=Ce[3]|0,this.E=Ce[4]|0,this.F=Ce[5]|0,this.G=Ce[6]|0,this.H=Ce[7]|0}get(){let{A:t,B:r,C:n,D:o,E:i,F:s,G:a,H:c}=this;return[t,r,n,o,i,s,a,c]}set(t,r,n,o,i,s,a,c){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=c|0}process(t,r){for(let l=0;l<16;l++,r+=4)_e[l]=t.getUint32(r,!1);for(let l=16;l<64;l++){let f=_e[l-15],p=_e[l-2],m=fe(f,7)^fe(f,18)^f>>>3,g=fe(p,17)^fe(p,19)^p>>>10;_e[l]=g+_e[l-7]+m+_e[l-16]|0}let{A:n,B:o,C:i,D:s,E:a,F:c,G:u,H:d}=this;for(let l=0;l<64;l++){let f=fe(a,6)^fe(a,11)^fe(a,25),p=d+f+kn(a,c,u)+Ki[l]+_e[l]|0,g=(fe(n,2)^fe(n,13)^fe(n,22))+In(n,o,i)|0;d=u,u=c,c=a,a=s+p|0,s=i,i=o,o=n,n=p+g|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,c=c+this.F|0,u=u+this.G|0,d=d+this.H|0,this.set(n,o,i,s,a,c,u,d)}roundClean(){_e.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var An=Pn(()=>new mr);import{PublicKey as vi}from"@solana/web3.js";import Bn,{isBN as Kn}from"bn.js";import{bits as gl,BitStructure as yl,blob as Ci,Blob as hl,cstr as bl,f32 as wl,f32be as Tl,f64 as xl,f64be as Pl,greedy as kl,Layout as _i,ns64 as Il,ns64be as Al,nu64 as Sl,nu64be as Ll,offset as Rl,s16 as Bl,s16be as Kl,s24 as Cl,s24be as _l,s32 as Fl,s32be as Nl,s40 as Vl,s40be as Ml,s48 as vl,s48be as El,s8 as Dl,seq as Fi,struct as Ol,Structure as Ni,u16 as Wl,u16be as Ul,u24 as ql,u24be as Gl,u32 as Hl,u32be as jl,u40 as Yl,u40be as Zl,u48 as zl,u48be as Jl,u8 as Vi,UInt as Mi,union as Xl,Union as Ql,unionLayoutDiscriminator as $l,utf8 as ed}from"@solana/buffer-layout";var gr=_i,Sn=Ni;var yr=Mi;var Ln=Vi;var Rn=Fi;var De=Ci;var ze=class extends gr{constructor(r,n,o){super(r,o);this.blob=De(r),this.signed=n}decode(r,n=0){let o=new Bn(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 Bn(r)),this.signed&&(r=r.toTwos(this.span*8)),this.blob.encode(r.toArrayLike(Buffer,"le",this.span),n,o)}};function ee(e){return new yr(1,e)}function at(e){return new yr(4,e)}function T(e){return new ze(8,!1,e)}function Ie(e){return new ze(16,!1,e)}function Cn(e){return new ze(1,!0,e)}function Mt(e){return new ze(8,!0,e)}var Vt=class extends gr{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 q(e){return new Vt(De(32),t=>new vi(t),t=>t.toBuffer(),e)}function vt(e){return new Vt(Ln(),Ei,Di,e)}function Ei(e){if(e===0)return!1;if(e===1)return!0;throw new Error("Invalid bool: "+e)}function Di(e){return e?1:0}var hr=class extends Sn{decode(t,r){return super.decode(t,r)}};function J(e,t,r){return new hr(e,t,r)}function Q(e,t,r){let n,o=typeof t=="number"?t:Kn(t)?t.toNumber():new Proxy(t,{get(i,s){if(!n){let a=Reflect.get(i,"count");n=Kn(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 Rn(e,o,r)}var ut=J([q("mint"),q("owner"),T("amount"),at("delegateOption"),q("delegate"),ee("state"),at("isNativeOption"),T("isNative"),T("delegatedAmount"),at("closeAuthorityOption"),q("closeAuthority")]);var Ad=$("Raydium_Util");function Et({fromPublicKey:e,programId:t=Ui,assignSeed:r}){let n=r?btoa(r).slice(0,32):Oi.generate().publicKey.toBase58().slice(0,32);return{publicKey:qi(e,n,t),seed:n}}function qi(e,t,r){let n=Buffer.concat([e.toBuffer(),Buffer.from(t),r.toBuffer()]),o=An(n);return new Wi(o)}import{PublicKey as Gi,SystemProgram as Hi}from"@solana/web3.js";import ji from"bn.js";import{createCloseAccountInstruction as Yi,createInitializeAccountInstruction as Zi,createTransferInstruction as Md,TOKEN_PROGRAM_ID as ct}from"@solana/spl-token";function zi(e){let{mint:t,tokenAccount:r,owner:n,programId:o=ct}=e;return Zi(r,t,n,o)}function Ji(e){let{tokenAccount:t,payer:r,multiSigners:n=[],owner:o,programId:i=ct}=e;return Yi(t,r,o,n,i)}async function br(e){let{connection:t,amount:r,commitment:n,payer:o,owner:i,skipCloseAccount:s}=e,a=await t.getMinimumBalanceForRentExemption(ut.span,n),c=U(r).add(new ji(a)),u=Et({fromPublicKey:o,programId:ct});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[Hi.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:ut.span,programId:ct}),zi({mint:new Gi(se.address),tokenAccount:u.publicKey,owner:i,programId:ct})],instructionTypes:[Y.CreateAccount,Y.InitAccount],endInstructionTypes:s?[]:[Y.CloseAccount],endInstructions:s?[]:[Ji({tokenAccount:u.publicKey,payer:o,owner:i})]}}var wr=(...e)=>e.map(t=>{try{return typeof t=="object"?JSON.stringify(t):t}catch{return t}}).join(", "),lt=class{constructor({scope:t,moduleName:r}){this.disabled=!1;this.scope=t,this.logger=$(r)}createTxBuilder(t){return this.scope.checkOwner(),new Ct({connection:this.scope.connection,feePayer:t||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...t){this.logger.debug(wr(t))}logInfo(...t){this.logger.info(wr(t))}logAndCreateError(...t){let r=wr(t);throw new Error(r)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Sr}from"@solana/web3.js";var Tr=J([ee("instruction")]),xr=J([ee("instruction")]),Xi=J([T("rewardState"),T("rewardOpenTime"),T("rewardEndTime"),T("rewardLastUpdateTime"),T("totalReward"),T("totalRewardEmissioned"),T("rewardClaimed"),T("rewardPerSecond"),Ie("accRewardPerShare"),q("rewardVault"),q("rewardMint"),q("rewardSender"),T("rewardType"),Q(T(),15,"padding")]),Qi=J([T("state"),T("nonce"),q("lpVault"),q("rewardVault"),q(),q(),T(),T(),T("totalReward"),Ie("perShareReward"),T("lastSlot"),T("perSlotReward")]),$i=J([T("state"),T("nonce"),q("lpVault"),q("rewardVaultA"),T("totalRewardA"),Ie("perShareRewardA"),T("perSlotRewardA"),ee("option"),q("rewardVaultB"),De(7),T("totalRewardB"),Ie("perShareRewardB"),T("perSlotRewardB"),T("lastSlot"),q()]),es=J([T(),T("state"),T("nonce"),T("validRewardTokenNum"),Ie("rewardMultiplier"),T("rewardPeriodMax"),T("rewardPeriodMin"),T("rewardPeriodExtend"),q("lpMint"),q("lpVault"),Q(Xi,5,"rewardInfos"),q("creator"),q(),Q(T(),32,"padding")]),ts=new Proxy(Qi,{get(e,t,r){return t==="decode"?(...n)=>{let o=e.decode(...n);return te(z({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(e,t,r)}}),rs=new Proxy($i,{get(e,t,r){return t==="decode"?(...n)=>{let o=e.decode(...n);return te(z({},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)}}),Dt=new Proxy(es,{get(e,t,r){return t==="decode"?(...n)=>{let o=e.decode(...n);return te(z({},o),{version:6,rewardInfos:o.rewardInfos.map(i=>{var s;return te(z({},i),{rewardType:((s=Object.entries(Fe).find(a=>String(a[1])===i.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(e,t,r)}}),ns=J([T("isSet"),T("rewardPerSecond"),T("rewardOpenTime"),T("rewardEndTime"),T("rewardType")]),Pr=J([ee("instruction"),T("nonce"),Q(ns,5,"rewardTimeInfo")]),kr=J([ee("instruction"),T("rewardReopenTime"),T("rewardEndTime"),T("rewardPerSecond")]),Ir=J([ee("instruction"),T("isSet"),T("rewardPerSecond"),T("rewardOpenTime"),T("rewardEndTime"),T("rewardType")]),Xd=J([T("state"),q("id"),q("owner"),T("deposited"),Q(T(),1,"rewardDebts")]),Ar=J([T("state"),q("id"),q("owner"),T("deposited"),Q(Ie(),1,"rewardDebts"),T(""),T("voteLockedBalance"),Q(T(),15)]),Qd=J([T("state"),q("id"),q("owner"),T("deposited"),Q(T(),2,"rewardDebts")]),_n=J([T("state"),q("id"),q("owner"),T("deposited"),Q(Ie(),2,"rewardDebts"),Q(T(),17)]),Fn=J([T(),T("state"),q("id"),q("owner"),T("deposited"),Q(Ie(),5,"rewardDebts"),Q(T(),16)]),ue=J([ee("instruction"),T("amount")]),os=J([q("mint"),q("grantAuthority"),T("baselineVoteWeightScaledFactor"),T("maxExtraLockupVoteWeightScaledFactor"),T("lockupSaturationSecs"),Cn("digitShift"),Q(ee(),7,"reserved1"),Q(T(),7,"reserved2")]),is=J([De(8),q("governanceProgramId"),q("realm"),q("realmGoverningTokenMint"),q("realmAuthority"),Q(ee(),32,"reserved1"),Q(os,4,"votingMints"),Mt("timeOffset"),ee("bump"),Q(ee(),7,"reserved2"),Q(T(),11,"reserved3")]),ss=J([Mt("startTime"),Mt("endTime"),ee("kind"),Q(ee(),15,"reserved")]),as=J([Q(ss,1,"lockup"),T("amountDeposited_native"),T("amountInitiallyLockedNative"),vt("isUsed"),vt("allowClawback"),ee("votingMintConfigIdx"),Q(ee(),29,"reserved")]),us=J([De(8),q("voterAuthority"),q("registrar"),Q(as,32,"deposits"),ee("voterBump"),ee("voterWweightRecordBump"),Q(ee(),94,"reserved")]);import{NATIVE_MINT as uf}from"@solana/spl-token";var cf=$("Raydium_farm_config"),Nn=new Sr("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Vn=new Sr("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var lf=new Sr("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var Mn={3:Ar,5:_n,6:Fn},Lr=e=>[3,4,5,6].indexOf(e)!==-1,Rr=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)},Fe={"Standard SPL":0,"Option tokens":1},Ae={[bn.toString()]:3,[wn.toString()]:4,[Tn.toString()]:5,[nt.toString()]:6,[Ee.FARM_PROGRAM_ID_V3.toString()]:3,[Ee.FARM_PROGRAM_ID_V4.toString()]:4,[Ee.FARM_PROGRAM_ID_V5.toString()]:5,[Ee.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as G,SystemProgram as Dn,SYSVAR_CLOCK_PUBKEY as ft,SYSVAR_RENT_PUBKEY as ds,TransactionInstruction as ce}from"@solana/web3.js";import On from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as qf,createAssociatedTokenAccountIdempotentInstruction as Gf,TOKEN_PROGRAM_ID as Se}from"@solana/spl-token";import cs from"bn.js";var ls=$("Raydium.farm.util");function dt({programId:e,poolId:t,mint:r,type:n}){let{publicKey:o}=Me([t.toBuffer(),r.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],e);return o}function me({programId:e,poolId:t,owner:r,version:n}){let{publicKey:o}=Me([t.toBuffer(),r.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],e);return o}var vn=({programId:e,poolId:t})=>Me([t.toBuffer()],e);function En(e){return{isSet:new cs(1),rewardPerSecond:U(e.perSecond),rewardOpenTime:U(e.openTime),rewardEndTime:U(e.endTime),rewardType:U(Fe[e.rewardType])}}function Br(e){return U(e.endTime).sub(U(e.openTime)).mul(U(e.perSecond))}function Kr(e){let t=Mn[e];return t||ls.logWithError("invalid version",e),t}var fs=$("Raydium_farm_instruction"),tp={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 Cr(e){let{version:t,id:r,ledger:n,programId:o,owner:i}=e,s={3:9,5:10}[t];s||fs.logWithError(`invalid farm pool version: ${t}`);let a=Buffer.alloc(Tr.span);Tr.encode({instruction:s},a);let c=[y({pubkey:r}),y({pubkey:n}),y({pubkey:i,isWritable:!1}),y({pubkey:Dn.programId,isWritable:!1}),y({pubkey:ds,isWritable:!1})];return{instruction:new ce({programId:o,keys:c,data:a}),instructionType:Y.FarmV3CreateLedger}}function Wn(e){var n;let t=Buffer.alloc(Pr.span);Pr.encode({instruction:0,nonce:new On(e.nonce),rewardTimeInfo:e.rewardInfoConfig},t);let r=[...Qt,y({pubkey:e.farmId}),y({pubkey:e.farmAuthority,isWritable:!1}),y({pubkey:e.lpVault}),y({pubkey:e.lpMint,isWritable:!1}),y({pubkey:e.lockVault}),y({pubkey:e.lockMint,isWritable:!1}),y({pubkey:(n=e.lockUserAccount)!=null?n:ne}),y({pubkey:e.owner,isWritable:!1,isSigner:!0})];for(let o of e.rewardInfo)r.push(y({pubkey:o.rewardMint,isWritable:!1}),y({pubkey:o.rewardVault}),y({pubkey:o.userRewardToken}));return{instruction:new ce({programId:e.programId,keys:r,data:t}),instructionType:Y.FarmV6Create}}function Un(e){let t=Buffer.alloc(xr.span);xr.encode({instruction:5},t);let r=[y({pubkey:Se,isWritable:!1}),y({pubkey:e.id}),y({pubkey:e.authority,isWritable:!1}),y({pubkey:e.lpVault,isWritable:!1}),y({pubkey:e.rewardVault}),y({pubkey:e.userRewardToken}),y({pubkey:e.owner,isWritable:!1,isSigner:!0})];return{instruction:new ce({programId:e.programId,keys:r,data:t}),instructionType:Y.FarmV6CreatorWithdraw}}function _r({payer:e,rewardVault:t,userRewardTokenPub:r,farmKeys:n,rewardInfo:o}){let i=Buffer.alloc(kr.span);kr.encode({instruction:3,rewardReopenTime:U(o.openTime),rewardEndTime:U(o.endTime),rewardPerSecond:U(o.perSecond)},i);let s=[y({pubkey:Se,isWritable:!1}),y({pubkey:n.id}),y({pubkey:n.lpVault,isWritable:!1}),y({pubkey:t}),y({pubkey:r}),y({pubkey:e,isWritable:!1,isSigner:!0})];return new ce({programId:n.programId,keys:s,data:i})}function Fr({payer:e,userRewardTokenPub:t,farmKeys:r,rewardVault:n,rewardInfo:o}){let i=Buffer.alloc(Ir.span);Ir.encode({instruction:4,isSet:new On(1),rewardPerSecond:U(o.perSecond),rewardOpenTime:U(o.openTime),rewardEndTime:U(o.endTime),rewardType:U(Fe[o.rewardType])},i);let s=[...Qt,y({pubkey:r.id}),y({pubkey:r.authority,isWritable:!1}),y({pubkey:o.mint,isWritable:!1}),y({pubkey:n}),y({pubkey:t}),y({pubkey:e,isWritable:!1,isSigner:!0})];return new ce({programId:r.programId,keys:s,data:i})}function Nr(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s}=e,[a,c]=[new G(t.programId),new G(t.id)],u=me({programId:a,poolId:c,owner:i,version:6}),d=Buffer.alloc(ue.span);ue.encode({instruction:2,amount:U(s)},d);let l=[y({pubkey:Se,isWritable:!1}),y({pubkey:c}),y({pubkey:new G(r.authority),isWritable:!1}),y({pubkey:new G(r.lpVault)}),y({pubkey:u}),y({pubkey:i,isWritable:!1,isSigner:!0}),y({pubkey:n})];for(let f=0;f<r.rewardInfos.length;f++)l.push(y({pubkey:new G(r.rewardInfos[f].vault)})),l.push(y({pubkey:o[f]}));return new ce({programId:a,keys:l,data:d})}function Vr(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=e,[c,u]=[new G(t.programId),new G(t.id)],d=me({programId:c,poolId:u,owner:i,version:5}),l=Buffer.alloc(ue.span);ue.encode({instruction:12,amount:U(s)},l);let f=[y({pubkey:u}),y({pubkey:new G(r.authority),isWritable:!1}),y({pubkey:d}),y({pubkey:i,isWritable:!1,isSigner:!0}),y({pubkey:n}),y({pubkey:new G(r.lpVault)}),y({pubkey:o[0]}),y({pubkey:new G(r.rewardInfos[0].vault)}),y({pubkey:ft,isWritable:!1}),y({pubkey:Se,isWritable:!1})];for(let p=1;p<r.rewardInfos.length;p++)f.push(y({pubkey:o[p]})),f.push(y({pubkey:new G(r.rewardInfos[p].vault)}));if(a)for(let p of a)f.push(y({pubkey:p}));return new ce({programId:c,keys:f,data:l})}function qn(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=e,[c,u]=[new G(t.programId),new G(t.id)],d=J([ee("instruction"),T("amount")]),l=[y({pubkey:u}),y({pubkey:new G(r.authority),isWritable:!1}),y({pubkey:a[0]}),y({pubkey:i,isSigner:!0,isWritable:!1}),y({pubkey:n}),y({pubkey:new G(r.lpVault)}),y({pubkey:o[0]}),y({pubkey:new G(r.rewardInfos[0].vault)}),y({pubkey:ft,isWritable:!1}),y({pubkey:Se,isWritable:!1}),y({pubkey:o[1]}),y({pubkey:new G(r.rewardInfos[1].vault)})],f=Buffer.alloc(d.span);return d.encode({instruction:2,amount:s},f),new ce({keys:l,programId:c,data:f})}function Mr(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=e,[c,u]=[new G(t.programId),new G(t.id)],d=me({programId:c,poolId:u,owner:i,version:3}),l=Buffer.alloc(ue.span);ue.encode({instruction:11,amount:U(s)},l);let f=[y({pubkey:u}),y({pubkey:new G(r.authority),isWritable:!1}),y({pubkey:d}),y({pubkey:i,isWritable:!1,isSigner:!0}),y({pubkey:n}),y({pubkey:new G(r.lpVault)}),y({pubkey:o[0]}),y({pubkey:new G(r.rewardInfos[0].vault)}),y({pubkey:ft,isWritable:!1}),y({pubkey:Se,isWritable:!1})];if(a)for(let p of a)f.push(y({pubkey:p}));return new ce({programId:c,keys:f,data:l})}function Gn(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=e,[c,u]=[new G(t.programId),new G(t.id)],d=me({programId:c,poolId:u,owner:i,version:3}),l=Buffer.alloc(ue.span);ue.encode({instruction:10,amount:U(s)},l);let f=[y({pubkey:u}),y({pubkey:new G(r.authority),isWritable:!1}),y({pubkey:d}),y({pubkey:i,isWritable:!1,isSigner:!0}),y({pubkey:n}),y({pubkey:new G(r.lpVault)}),y({pubkey:o[0]}),y({pubkey:new G(r.rewardInfos[0].vault)}),y({pubkey:ft,isWritable:!1}),y({pubkey:Se,isWritable:!1})];if(a)for(let p of a)f.push(y({pubkey:p}));return new ce({programId:c,keys:f,data:l})}function Hn(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s,userAuxiliaryLedgers:a}=e,[c,u]=[new G(t.programId),new G(t.id)],d=me({programId:c,poolId:u,owner:i,version:5}),l=Buffer.alloc(ue.span);ue.encode({instruction:11,amount:U(s)},l);let f=[y({pubkey:u}),y({pubkey:new G(r.authority),isWritable:!1}),y({pubkey:d}),y({pubkey:i,isWritable:!1,isSigner:!0}),y({pubkey:n}),y({pubkey:new G(r.lpVault)}),y({pubkey:o[0]}),y({pubkey:new G(r.rewardInfos[0].vault)}),y({pubkey:ft,isWritable:!1}),y({pubkey:Se,isWritable:!1})];for(let p=1;p<r.rewardInfos.length;p++)f.push(y({pubkey:o[p]})),f.push(y({pubkey:new G(r.rewardInfos[p].vault)}));if(a)for(let p of a)f.push(y({pubkey:p}));return new ce({programId:c,keys:f,data:l})}function jn(e){let{farmInfo:t,farmKeys:r,lpAccount:n,rewardAccounts:o,owner:i,amount:s}=e,[a,c]=[new G(t.programId),new G(t.id)],u=me({programId:a,poolId:c,owner:i,version:6}),d=Buffer.alloc(ue.span);ue.encode({instruction:1,amount:U(s)},d);let l=[y({pubkey:Se,isWritable:!1}),y({pubkey:Dn.programId,isWritable:!1}),y({pubkey:c}),y({pubkey:new G(r.authority),isWritable:!1}),y({pubkey:new G(r.lpVault)}),y({pubkey:u}),y({pubkey:i,isWritable:!1,isSigner:!0}),y({pubkey:n})];for(let f=0;f<r.rewardInfos.length;f++)l.push(y({pubkey:new G(r.rewardInfos[f].vault)})),l.push(y({pubkey:o[f]}));return new ce({programId:a,keys:l,data:d})}var vr=class extends lt{async _getUserRewardInfo({payer:t,rewardInfo:r}){if(r.mint.equals(ne)){let n=await br({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:t,amount:Br(te(z({},r),{openTime:r.openTime.toString(),endTime:r.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:r.mint,associatedOnly:!1})}}async create({poolInfo:t,rewardInfos:r,payer:n,programId:o=nt,txVersion:i,feePayer:s,lockProgram:a}){var R,K;this.checkDisabled(),this.scope.checkOwner();let u={lpMint:new j(t.lpMint.address),lockInfo:{lockMint:(R=a==null?void 0:a.mint)!=null?R:Nn,lockVault:(K=a==null?void 0:a.vault)!=null?K:Vn},version:6,rewardInfos:r,programId:o},d=this.createTxBuilder(s),l=n!=null?n:this.scope.ownerPubKey,f=Et({fromPublicKey:l,programId:u.programId}),p=await this.scope.connection.getMinimumBalanceForRentExemption(Dt.span);d.addInstruction({instructions:[ps.createAccountWithSeed({fromPubkey:l,basePubkey:l,seed:f.seed,newAccountPubkey:f.publicKey,lamports:p,space:Dt.span,programId:u.programId})]});let{publicKey:m,nonce:g}=vn({programId:new j(u.programId),poolId:f.publicKey}),b=dt({programId:u.programId,poolId:f.publicKey,mint:u.lpMint,type:"lpVault"}),P=[],A=[];for(let B of u.rewardInfos){B.openTime>=B.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",B.openTime.toString()),isNaN(Fe[B.rewardType])&&this.logAndCreateError("rewardType error",B.rewardType),Number(B.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",B.perSecond),P.push(En(B));let{rewardPubKey:S,newInstruction:N}=await this._getUserRewardInfo({rewardInfo:B,payer:l});N&&d.addInstruction(N),S||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let L=B.mint.equals(ne)?new j(se.address):B.mint;A.push({rewardMint:L,rewardVault:dt({programId:u.programId,poolId:f.publicKey,mint:L,type:"rewardVault"}),userRewardToken:S})}let{account:x,instructionParams:w}=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});w&&d.addInstruction(w),x||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:I,instructionType:k}=Wn({farmId:f.publicKey,owner:this.scope.ownerPubKey,farmAuthority:m,lpVault:b,lpMint:u.lpMint,lockVault:u.lockInfo.lockVault,lockMint:u.lockInfo.lockMint,lockUserAccount:x,programId:u.programId,rewardInfo:A,rewardInfoConfig:P,nonce:g});return d.addInstruction({instructions:[I],instructionTypes:[k]}).versionBuild({txVersion:i,extInfo:{farmId:f.publicKey,farmAuthority:m,lpVault:b,lockUserAccount:x,nonce:g}})}async restartReward({farmInfo:t,payer:r,newRewardInfo:n,txVersion:o,feePayer:i}){var P;let s=Ae[t.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ke((await this.scope.api.fetchFarmKeysById({ids:t.id}))[0]),c={id:a.id,rewardInfos:t.rewardInfos,lpVault:a.lpVault,programId:a.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=r||this.scope.ownerPubKey,d=n.mint.equals(ne)?new j(se.address):n.mint,l=c.rewardInfos.findIndex(A=>new j(A.mint.address).equals(d)),f=a.rewardInfos[l];f||this.logAndCreateError("configuration does not exist","rewardMint",d);let p=(P=f.vault)!=null?P:ne,m=this.createTxBuilder(i),{rewardPubKey:g,newInstruction:b}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return b&&m.addInstruction(b),g||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),m.addInstruction({instructions:[_r({payer:this.scope.ownerPubKey,rewardVault:p,userRewardTokenPub:g,farmKeys:c,rewardInfo:n})],instructionTypes:[Y.FarmV6Restart]}).versionBuild({txVersion:o})}async restartRewards({farmInfo:t,payer:r,newRewardInfos:n,txVersion:o,feePayer:i}){var l;let s=Ae[t.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=ke((await this.scope.api.fetchFarmKeysById({ids:t.id}))[0]),c={id:a.id,rewardInfos:t.rewardInfos,lpVault:a.lpVault,programId:a.programId};n.forEach(f=>{f.openTime>=f.endTime&&this.logAndCreateError("start time error","newRewardInfo",f)});let u=r||this.scope.ownerPubKey,d=this.createTxBuilder(i);for(let f of n){let p=f.mint.equals(ne)?new j(se.address):f.mint,m=c.rewardInfos.findIndex(w=>new j(w.mint.address).equals(p)),g=a.rewardInfos[m];g||this.logAndCreateError("configuration does not exist","rewardMint",p);let b=(l=g.vault)!=null?l:ne,{rewardPubKey:P,newInstruction:A}=await this._getUserRewardInfo({rewardInfo:f,payer:u});A&&d.addInstruction(A),P||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let x=_r({payer:this.scope.ownerPubKey,rewardVault:b,userRewardTokenPub:P,farmKeys:c,rewardInfo:f});d.addInstruction({instructions:[x],instructionTypes:[Y.FarmV6Restart]})}return d.versionBuild({txVersion:o})}async addNewRewardToken(t){let{txVersion:r,farmInfo:n,newRewardInfo:o,payer:i,feePayer:s}=t,a=Ae[n.programId];a!==6&&this.logAndCreateError("invalid farm version ",a);let c=ke((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=i!=null?i:this.scope.ownerPubKey,d=this.createTxBuilder(s),l=o.mint.equals(ne)?new j(se.address):o.mint,f=dt({programId:new j(n.programId),poolId:new j(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:p,newInstruction:m}=await this._getUserRewardInfo({rewardInfo:o,payer:u});return m&&d.addInstruction(m),p||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),o.mint=l,d.addInstruction({instructions:[Fr({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:c,rewardVault:f,rewardInfo:o})],instructionTypes:[Y.FarmV6CreatorAddReward]}).versionBuild({txVersion:r})}async addNewRewardsToken(t){let{txVersion:r,farmInfo:n,newRewardInfos:o,payer:i,feePayer:s}=t,a=Ae[n.programId];a!==6&&this.logAndCreateError("invalid farm version ",a);let c=ke((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=i!=null?i:this.scope.ownerPubKey,d=this.createTxBuilder(s);for(let l of o){let f=l.mint.equals(ne)?new j(se.address):l.mint,p=dt({programId:new j(n.programId),poolId:new j(n.id),mint:f,type:"rewardVault"}),{rewardPubKey:m,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:l,payer:u});g&&d.addInstruction(g),m||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let b=Fr({payer:this.scope.ownerPubKey,userRewardTokenPub:m,farmKeys:c,rewardVault:p,rewardInfo:te(z({},l),{mint:f})});d.addInstruction({instructions:[b],instructionTypes:[Y.FarmV6CreatorAddReward]})}return d.versionBuild({txVersion:r})}async deposit(t){let{txVersion:r,farmInfo:n,amount:o,feePayer:i,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:u,computeBudgetConfig:d,txTipConfig:l}=t;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:f,programId:p}=n,m=Ae[p];m===4&&this.logAndCreateError("V4 has suspended deposits:",n.programId),Lr(m)||this.logAndCreateError("invalid farm program:",n.programId);let[g,b]=[new j(n.programId),new j(n.id)],P=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],A=me({programId:g,poolId:b,owner:this.scope.ownerPubKey,version:m}),x=this.createTxBuilder(i);x.addCustomComputeBudget(d),x.addTipInstruction(l);let w={};for(let _ of this.scope.account.tokenAccounts)if(a){let W=Ge(this.scope.ownerPubKey,_.mint,_.programId).publicKey;_.publicKey&&W.equals(_.publicKey)&&(w[_.mint.toString()]=_.publicKey)}else w[_.mint.toString()]=_.publicKey;let I=P.lpMint,k=w[I.address];k||this.logAndCreateError("you don't have any lp","lp zero",w);let R=[];for(let _ of f){let W=s&&_.mint.address===be.toString(),V=w[_.mint.address];if(!V){let{account:ge,instructionParams:ye}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:_.mint.programId,mint:new j(_.mint.address),notUseTokenAccount:W,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!W,associatedOnly:W?!1:a,checkCreateATAOwner:c});V=ge,ye&&x.addInstruction(ye)}w[_.mint.address]=V,R.push(V)}let K,B=await this.scope.connection.getAccountInfo(A);if(B&&(K=Kr(m).decode(B.data)),n.programId!==nt.toString()&&n.programId!==Ee.FARM_PROGRAM_ID_V6.toString()&&!K){let{instruction:_,instructionType:W}=Cr({id:b,programId:g,version:m,ledger:A,owner:this.scope.ownerPubKey});x.addInstruction({instructions:[_],instructionTypes:[W]})}let S=Rr({version:m,rewardInfos:f,rewardTokenAccountsPublicKeys:R});S&&this.logAndCreateError(S);let N={amount:U(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:P,lpAccount:k,rewardAccounts:R,userAuxiliaryLedgers:u==null?void 0:u.map(_=>new j(_))},L=m===6?jn(N):m===5?Hn(N):Gn(N),v={3:Y.FarmV3Deposit,5:Y.FarmV5Deposit,6:Y.FarmV6Deposit};return x.addInstruction({instructions:[L],instructionTypes:[v[m]]}).versionBuild({txVersion:r})}async withdraw(t){let{txVersion:r,farmInfo:n,amount:o,deposited:i,useSOLBalance:s,feePayer:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:d,computeBudgetConfig:l,txTipConfig:f}=t,{rewardInfos:p}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let m=Ae[n.programId];Lr(m)||this.logAndCreateError("invalid farm program:",n.programId);let g=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],b=this.createTxBuilder(a);b.addCustomComputeBudget(l),b.addTipInstruction(f);let P={};for(let S of this.scope.account.tokenAccounts)if(c){let N=Ge(this.scope.ownerPubKey,S.mint).publicKey;S.publicKey&&N.equals(S.publicKey)&&(P[S.mint.toString()]=S.publicKey)}else P[S.mint.toString()]=S.publicKey;if(m!==4){let S=me({programId:new j(n.programId),poolId:new j(n.id),owner:this.scope.ownerPubKey,version:m}),N=await this.scope.connection.getAccountInfo(S);if(N)Kr(m).decode(N.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else if(m!==6){let{instruction:L,instructionType:v}=Cr({id:new j(g.id),programId:new j(g.programId),version:m,ledger:S,owner:this.scope.ownerPubKey});b.addInstruction({instructions:[L],instructionTypes:[v]})}}i&&i.isZero()&&!(d||[]).length&&this.logAndCreateError("no deposited lp",{farmId:n.id});let A=g.lpMint.address,x=s&&A===be.toString(),w=P[A.toString()];if(!w){let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:g.lpMint.programId,mint:new j(A),notUseTokenAccount:x,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:x?!1:c,checkCreateATAOwner:u});w=S,N&&b.addInstruction(N)}P[A.toString()]=w;let I=[];for(let S of p){let N=s&&S.mint.address===be.toString(),L=P[S.mint.address];if(!L){let{account:v,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:S.mint.programId,mint:new j(S.mint.address),notUseTokenAccount:N,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!N,associatedOnly:N?!1:c,checkCreateATAOwner:u});L=v,_&&b.addInstruction(_)}P[S.mint.address]=L,I.push(L)}let k=Rr({version:m,rewardInfos:p,rewardTokenAccountsPublicKeys:I});k&&this.logAndCreateError(k);let R={amount:U(o),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:g,lpAccount:w,rewardAccounts:I,userAuxiliaryLedgers:d==null?void 0:d.map(S=>new j(S))},K=m===6?Nr(R):m===5?Vr(R):m===4?qn(R):Mr(R),B={3:Y.FarmV3Withdraw,4:Y.FarmV4Withdraw,5:Y.FarmV5Withdraw,6:Y.FarmV6Withdraw};return b.addInstruction({instructions:[K],instructionTypes:[B[m]]}).versionBuild({txVersion:r})}async withdrawFarmReward({farmInfo:t,withdrawMint:r,txVersion:n,computeBudgetConfig:o,txTipConfig:i,feePayer:s}){var g;this.scope.checkOwner();let a=ke((await this.scope.api.fetchFarmKeysById({ids:t.id}))[0]),c=Ae[t.programId];c!==6&&this.logAndCreateError("invalid farm version",c);let u=a.rewardInfos.find(b=>yt(b.mint.address).equals(yt(r)));u||this.logAndCreateError("withdraw mint error","rewardInfos",t);let d=(g=u==null?void 0:u.vault)!=null?g:ne,l=this.createTxBuilder(s),f;if(r.equals(ne)||r.equals(j.default)){let b=await br({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Br(te(z({},u),{openTime:u.openTime,endTime:u.endTime,perSecond:new zt(u.perSecond).mul(10**u.mint.decimals).toString()}))});f=b.addresses.newAccount,l.addInstruction(b)}else{let b=await this.scope.account.getCreatedTokenAccount({mint:r});b?f=b:(f=await this.scope.account.getAssociatedTokenAccount(r),l.addInstruction({instructions:[Yn(this.scope.ownerPubKey,f,this.scope.ownerPubKey,r)],instructionTypes:[Y.CreateATA]}))}let{instruction:p,instructionType:m}=Un({programId:a.programId,id:a.id,authority:a.authority,lpVault:a.lpVault,rewardVault:d,userRewardToken:f,owner:this.scope.ownerPubKey});return l.addCustomComputeBudget(o),l.addTipInstruction(i),l.addInstruction({instructions:[p],instructionTypes:[m]}).versionBuild({txVersion:n})}async harvestAllRewards(t){let{farmInfoList:r,useSOLBalance:n,feePayer:o,associatedOnly:i=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:c,computeBudgetConfig:u}=t,d=this.createTxBuilder(o),l={};for(let m of this.scope.account.tokenAccounts)if(i){let g=Ge(this.scope.ownerPubKey,m.mint).publicKey;m.publicKey&&g.equals(m.publicKey)&&(l[m.mint.toString()]=m.publicKey)}else l[m.mint.toString()]=m.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(r).map(m=>m.id).join(",")})).reduce((m,g)=>te(z({},m),{[g.id]:g}),{});for(let m of Object.values(r)){let{programId:g,lpMint:b,rewardInfos:P,id:A}=m,x=Ae[g],w=b.address,I=n&&w===be.toString(),k=l[w];if(!k){let{account:L,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new j(w),notUseTokenAccount:I,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:I?!1:i,checkCreateATAOwner:s});k=L,v&&d.addInstruction(v)}l[w.toString()]=k;let R=[];for(let L of P){let v=n&&L.mint.address===be.toString(),_=l[L.mint.address];if(!_)if(v){let{account:W,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:L.mint.programId,mint:new j(L.mint.address),notUseTokenAccount:v,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!v,associatedOnly:v?!1:i,checkCreateATAOwner:s});_=W,V&&d.addInstruction(V)}else{let W=new j(L.mint.address);_=this.scope.account.getAssociatedTokenAccount(W),d.addInstruction({instructions:[Yn(this.scope.ownerPubKey,_,this.scope.ownerPubKey,W)]})}l[L.mint.address]=_,R.push(_)}let K=p[A],B={amount:ir,owner:this.scope.ownerPubKey,farmInfo:m,farmKeys:K,lpAccount:k,rewardAccounts:R,userAuxiliaryLedgers:a==null?void 0:a.map(L=>new j(L))},S=x===6?Nr(B):x===5?Vr(B):Mr(B),N={3:Y.FarmV3Withdraw,5:Y.FarmV5Withdraw,6:Y.FarmV6Withdraw};d.addInstruction({instructions:[S],instructionTypes:[N[x]]})}return c===1?d.sizeCheckBuild({computeBudgetConfig:u}):d.sizeCheckBuildV0({computeBudgetConfig:u})}};export{vr as default};
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=farm.mjs.map