UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 179 kB
var Ao=Object.defineProperty,Po=Object.defineProperties;var To=Object.getOwnPropertyDescriptors;var fn=Object.getOwnPropertySymbols;var Vr=Object.prototype.hasOwnProperty,Dr=Object.prototype.propertyIsEnumerable;var Or=(r,e,t)=>e in r?Ao(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,G=(r,e)=>{for(var t in e||(e={}))Vr.call(e,t)&&Or(r,t,e[t]);if(fn)for(var t of fn(e))Dr.call(e,t)&&Or(r,t,e[t]);return r},Q=(r,e)=>Po(r,To(e));var Ee=(r,e)=>{var t={};for(var n in r)Vr.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&fn)for(var n of fn(r))e.indexOf(n)<0&&Dr.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as Ke}from"@solana/web3.js";import{AccountLayout as fu,NATIVE_MINT as ho,TOKEN_PROGRAM_ID as Vt}from"@solana/spl-token";import Es from"big.js";import Sn from"bn.js";import Re from"bn.js";var Kt=9e15,st=1e9,Xn="0123456789abcdef",yn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",gn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",zn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Kt,maxE:Kt,crypto:!1},Ur,$e,U=!0,hn="[DecimalError] ",ot=hn+"Invalid argument: ",Xr=hn+"Precision limit exceeded",zr=hn+"crypto unavailable",Yr="[object Decimal]",Te=Math.floor,be=Math.pow,xo=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Io=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Bo=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Hr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,We=1e7,D=7,So=9007199254740991,Ko=yn.length-1,Yn=gn.length-1,I={toStringTag:Yr};I.absoluteValue=I.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),F(r)};I.ceil=function(){return F(new this.constructor(this),this.e+1,2)};I.clampedTo=I.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(ot+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};I.comparedTo=I.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};I.cosine=I.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+D,n.rounding=1,t=Lo(n,Jr(n,t)),n.precision=r,n.rounding=e,F($e==2||$e==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};I.cubeRoot=I.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(U=!1,o=l.s*be(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=we(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=be(t,1/3),r=Te((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=ae(c.plus(l).times(a),c.plus(u),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(F(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(F(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return U=!0,F(n,r,m.rounding,e)};I.decimalPlaces=I.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Te(this.e/D))*D,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};I.dividedBy=I.div=function(r){return ae(this,new this.constructor(r))};I.dividedToIntegerBy=I.divToInt=function(r){var e=this,t=e.constructor;return F(ae(e,new t(r),0,1,1),t.precision,t.rounding)};I.equals=I.eq=function(r){return this.cmp(r)===0};I.floor=function(){return F(new this.constructor(this),this.e+1,3)};I.greaterThan=I.gt=function(r){return this.cmp(r)>0};I.greaterThanOrEqualTo=I.gte=function(r){var e=this.cmp(r);return e==1||e===0};I.hyperbolicCosine=I.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/An(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=Lt(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return F(o,s.precision=t,s.rounding=n,!0)};I.hyperbolicSine=I.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=Lt(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/An(5,r)),i=Lt(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,F(i,e,t,!0)};I.hyperbolicTangent=I.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,ae(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};I.inverseCosine=I.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?De(t,i,o):new t(0):new t(NaN):e.isZero()?De(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=De(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};I.inverseHyperbolicCosine=I.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,U=!1,t=t.times(t).minus(1).sqrt().plus(t),U=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};I.inverseHyperbolicSine=I.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,U=!1,t=t.times(t).plus(1).sqrt().plus(t),U=!0,n.precision=r,n.rounding=e,t.ln())};I.inverseHyperbolicTangent=I.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?F(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ae(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};I.inverseSine=I.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=De(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};I.inverseTangent=I.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Yn)return s=De(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Yn)return s=De(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/D+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(U=!1,e=Math.ceil(a/D),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),U=!0,F(s,l.precision=m,l.rounding=d,!0)};I.isFinite=function(){return!!this.d};I.isInteger=I.isInt=function(){return!!this.d&&Te(this.e/D)>this.d.length-2};I.isNaN=function(){return!this.s};I.isNegative=I.isNeg=function(){return this.s<0};I.isPositive=I.isPos=function(){return this.s>0};I.isZero=function(){return!!this.d&&this.d[0]===0};I.lessThan=I.lt=function(r){return this.cmp(r)<0};I.lessThanOrEqualTo=I.lte=function(r){return this.cmp(r)<1};I.logarithm=I.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(U=!1,a=m+p,s=it(c,a),n=e?wn(l,a+10):it(r,a),u=ae(s,n,a,1),Wt(u.d,i=m,d))do if(a+=10,s=it(c,a),n=e?wn(l,a+10):it(r,a),u=ae(s,n,a,1),!o){+we(u.d).slice(i+1,i+15)+1==1e14&&(u=F(u,m+1,0));break}while(Wt(u.d,i+=10,d));return U=!0,F(u,m,d)};I.minus=I.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,g=p.constructor;if(r=new g(r),!p.d||!r.d)return!p.s||!r.s?r=new g(NaN):p.d?r.s=-r.s:r=new g(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=g.precision,u=g.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new g(p);else return new g(u===3?-0:0);return U?F(r,a,u):r}if(t=Te(r.e/D),l=Te(p.e/D),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/D),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=We-1;--c[i],c[n]+=We}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=kn(c,t),U?F(r,a,u):r):new g(u===3?-0:0)};I.modulo=I.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?F(new n(t),n.precision,n.rounding):(U=!1,n.modulo==9?(e=ae(t,r.abs(),0,3,1),e.s*=r.s):e=ae(t,r,0,n.modulo,1),e=e.times(r),U=!0,t.minus(e))};I.naturalExponential=I.exp=function(){return Hn(this)};I.naturalLogarithm=I.ln=function(){return it(this)};I.negated=I.neg=function(){var r=new this.constructor(this);return r.s=-r.s,F(r)};I.plus=I.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),U?F(r,a,u):r;if(o=Te(m.e/D),n=Te(r.e/D),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/D),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/We|0,c[i]%=We;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=kn(c,n),U?F(r,a,u):r};I.precision=I.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(ot+r);return t.d?(e=Qr(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};I.round=function(){var r=this,e=r.constructor;return F(new e(r),r.e+1,e.rounding)};I.sine=I.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+D,n.rounding=1,t=Ro(n,Jr(n,t)),n.precision=r,n.rounding=e,F($e>2?t.neg():t,r,e,!0)):new n(NaN)};I.squareRoot=I.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(U=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=we(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Te((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(ae(s,o,t+2,1)).times(.5),we(o.d).slice(0,t)===(e=we(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(F(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(F(n,u+1,1),r=!n.times(n).eq(s));break}return U=!0,F(n,u,l.rounding,r)};I.tangent=I.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=ae(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,F($e==2||$e==4?t.neg():t,r,e,!0)):new n(NaN)};I.times=I.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Te(l.e/D)+Te(r.e/D),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*d[i-n-1]+e,o[i--]=a%We|0,e=a/We|0;o[i]=(o[i]+e)%We|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=kn(o,t),U?F(r,m.precision,m.rounding):r};I.toBinary=function(r,e){return Zn(this,2,r,e)};I.toDecimalPlaces=I.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Ne(r,0,st),e===void 0?e=n.rounding:Ne(e,0,8),F(t,r+t.e+1,e))};I.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ye(n,!0):(Ne(r,0,st),e===void 0?e=i.rounding:Ne(e,0,8),n=F(new i(n),r+1,e),t=Ye(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};I.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=Ye(i):(Ne(r,0,st),e===void 0?e=o.rounding:Ne(e,0,8),n=F(new o(i),r+i.e+1,e),t=Ye(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};I.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Qr(g)-p.e-1,s=o%D,e.d[0]=be(10,s<0?D+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(ot+a);r=a.gt(e)?o>0?e:c:a}for(U=!1,a=new f(we(g)),l=f.precision,f.precision=o=g.length*D*2;m=ae(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=ae(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=ae(c,n,o,1).minus(p).abs().cmp(ae(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,U=!0,d};I.toHexadecimal=I.toHex=function(r,e){return Zn(this,16,r,e)};I.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:Ne(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(U=!1,t=ae(t,r,0,e,1).times(r),U=!0,F(t)):(r.s=t.s,t=r),t};I.toNumber=function(){return+this};I.toOctal=function(r,e){return Zn(this,8,r,e)};I.toPower=I.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(be(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return F(a,n,o);if(e=Te(r.e/D),e>=r.d.length-1&&(t=c<0?-c:c)<=So)return i=Zr(u,a,t,n),r.s<0?new u(1).div(i):F(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=be(+a,c),e=t==0||!isFinite(t)?Te(c*(Math.log("0."+we(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(U=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Hn(r.times(it(a,n+t)),n),i.d&&(i=F(i,n+5,1),Wt(i.d,n,o)&&(e=n+10,i=F(Hn(r.times(it(a,e+t)),e),e+5,1),+we(i.d).slice(n+1,n+15)+1==1e14&&(i=F(i,n+1,0)))),i.s=s,U=!0,u.rounding=o,F(i,n,o))};I.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ye(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ne(r,1,st),e===void 0?e=i.rounding:Ne(e,0,8),n=F(new i(n),r,e),t=Ye(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};I.toSignificantDigits=I.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Ne(r,1,st),e===void 0?e=n.rounding:Ne(e,0,8)),F(new n(t),r,e)};I.toString=function(){var r=this,e=r.constructor,t=Ye(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};I.truncated=I.trunc=function(){return F(new this.constructor(this),this.e+1,1)};I.valueOf=I.toJSON=function(){var r=this,e=r.constructor,t=Ye(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function we(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=D-n.length,t&&(o+=rt(t)),o+=n;s=r[e],n=s+"",t=D-n.length,t&&(o+=rt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ne(r,e,t){if(r!==~~r||r<e||r>t)throw Error(ot+r)}function Wt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=D,i=0):(i=Math.ceil((e+1)/D),e%=D),o=be(10,D-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==be(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==be(10,e-3)-1,s}function bn(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=Xn.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function Lo(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/An(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=Lt(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var ae=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,g,f,w,b,k,h,A,B,P,L,x,C,_,V,$,Z=n.constructor,se=n.s==i.s?1:-1,j=n.d,z=i.d;if(!j||!j[0]||!z||!z[0])return new Z(!n.s||!i.s||(j?z&&j[0]==z[0]:!z)?NaN:j&&j[0]==0||!z?se*0:se/0);for(u?(p=1,l=n.e-i.e):(u=We,p=D,l=Te(n.e/p)-Te(i.e/p)),V=z.length,C=j.length,b=new Z(se),k=b.d=[],m=0;z[m]==(j[m]||0);m++);if(z[m]>(j[m]||0)&&l--,o==null?(P=o=Z.precision,s=Z.rounding):a?P=o+(n.e-i.e)+1:P=o,P<0)k.push(1),g=!0;else{if(P=P/p+2|0,m=0,V==1){for(d=0,z=z[0],P++;(m<C||d)&&P--;m++)L=d*u+(j[m]||0),k[m]=L/z|0,d=L%z|0;g=d||m<C}else{for(d=u/(z[0]+1)|0,d>1&&(z=r(z,d,u),j=r(j,d,u),V=z.length,C=j.length),x=V,h=j.slice(0,V),A=h.length;A<V;)h[A++]=0;$=z.slice(),$.unshift(0),_=z[0],z[1]>=u/2&&++_;do d=0,c=e(z,h,V,A),c<0?(B=h[0],V!=A&&(B=B*u+(h[1]||0)),d=B/_|0,d>1?(d>=u&&(d=u-1),f=r(z,d,u),w=f.length,A=h.length,c=e(f,h,w,A),c==1&&(d--,t(f,V<w?$:z,w,u))):(d==0&&(c=d=1),f=z.slice()),w=f.length,w<A&&f.unshift(0),t(h,f,A,u),c==-1&&(A=h.length,c=e(z,h,V,A),c<1&&(d++,t(h,V<A?$:z,A,u))),A=h.length):c===0&&(d++,h=[0]),k[m++]=d,c&&h[0]?h[A++]=j[x]||0:(h=[j[x]],A=1);while((x++<C||h[0]!==void 0)&&P--);g=h[0]!==void 0}k[0]||k.shift()}if(p==1)b.e=l,Ur=g;else{for(m=1,d=k[0];d>=10;d/=10)m++;b.e=m+l*p-1,F(b,a?o+b.e+1:o,s,g)}return b}}();function F(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=D,s=e,l=m[d=0],u=l/be(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/D),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=D,s=o-D+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=D,s=o-D+i,u=s<0?0:l/be(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%be(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/be(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=be(10,(D-e%D)%D),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=be(10,D-o),m[d]=s>0?(l/be(10,i-s)%be(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==We&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=We)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return U&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function Ye(r,e,t){if(!r.isFinite())return $r(r);var n,i=r.e,o=we(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+rt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+rt(-i-1)+o,t&&(n=t-s)>0&&(o+=rt(n))):i>=s?(o+=rt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+rt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=rt(n))),o}function kn(r,e){var t=r[0];for(e*=D;t>=10;t/=10)e++;return e}function wn(r,e,t){if(e>Ko)throw U=!0,t&&(r.precision=t),Error(Xr);return F(new r(yn),e,1,!0)}function De(r,e,t){if(e>Yn)throw Error(Xr);return F(new r(gn),e,t,!0)}function Qr(r){var e=r.length-1,t=e*D+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function rt(r){for(var e="";r--;)e+="0";return e}function Zr(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/D+4);for(U=!1;;){if(t%2&&(o=o.times(e),qr(o.d,s)&&(i=!0)),t=Te(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),qr(e.d,s)}return U=!0,o}function Wr(r){return r.d[r.d.length-1]&1}function jr(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Hn(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,g=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(U=!1,u=g):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(be(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=F(o.times(r),u,1),t=t.times(++l),a=s.plus(ae(o,t,u,1)),we(a.d).slice(0,u)===we(s.d).slice(0,u)){for(i=m;i--;)s=F(s.times(s),u,1);if(e==null)if(c<3&&Wt(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return F(s,d.precision=g,p,U=!0);else return d.precision=g,s}s=a}}function it(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=1,g=10,f=r,w=f.d,b=f.constructor,k=b.rounding,h=b.precision;if(f.s<0||!w||!w[0]||!f.e&&w[0]==1&&w.length==1)return new b(w&&!w[0]?-1/0:f.s!=1?NaN:w?0:f);if(e==null?(U=!1,l=h):l=e,b.precision=l+=g,t=we(w),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=we(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new b("0."+t),o++):f=new b(n+"."+t.slice(1))}else return c=wn(b,l+2,h).times(o+""),f=it(new b(n+"."+t.slice(1)),l-g).plus(c),b.precision=h,e==null?F(f,h,k,U=!0):f;for(m=f,u=s=f=ae(f.minus(1),f.plus(1),l,1),d=F(f.times(f),l,1),i=3;;){if(s=F(s.times(d),l,1),c=u.plus(ae(s,new b(i),l,1)),we(c.d).slice(0,l)===we(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(wn(b,l+2,h).times(o+""))),u=ae(u,new b(p),l,1),e==null)if(Wt(u.d,l-g,k,a))b.precision=l+=g,c=s=f=ae(m.minus(1),m.plus(1),l,1),d=F(f.times(f),l,1),i=a=1;else return F(u,b.precision=h,k,U=!0);else return b.precision=h,u;u=c,i+=2}}function $r(r){return String(r.s*r.s/0)}function Qn(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%D,t<0&&(n+=D),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=D;n<i;)r.d.push(+e.slice(n,n+=D));e=e.slice(n),n=D-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),U&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function No(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Hr.test(e))return Qn(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Io.test(e))t=16,e=e.toLowerCase();else if(xo.test(e))t=2;else if(Bo.test(e))t=8;else throw Error(ot+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=Zr(n,new n(t),o,o*2)),c=bn(e,t,We),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=kn(c,l),r.d=c,U=!1,s&&(r=ae(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?be(2,u):qt.pow(2,u))),U=!0,r)}function Ro(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Lt(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/An(5,t)),e=Lt(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function Lt(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/D);for(U=!1,u=t.times(t),a=new r(n);;){if(s=ae(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ae(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return U=!0,s.d.length=m+1,s}function An(r,e){for(var t=r;--e;)t*=r;return t}function Jr(r,e){var t,n=e.s<0,i=De(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return $e=n?4:1,e;if(t=e.divToInt(i),t.isZero())$e=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return $e=Wr(t)?n?2:3:n?4:1,e;$e=Wr(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Zn(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,g=t!==void 0;if(g?(Ne(t,1,st),n===void 0?n=p.rounding:Ne(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=$r(r);else{for(l=Ye(r),s=l.indexOf("."),g?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=bn(Ye(d),10,i),d.e=d.d.length),m=bn(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=g?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=ae(r,d,t,n,0,i),m=r.d,o=r.e,c=Ur),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Xn.charAt(m[s]);if(g){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=bn(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Xn.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function qr(r,e){if(r.length>e)return r.length=e,!0}function Co(r){return new this(r).abs()}function vo(r){return new this(r).acos()}function Mo(r){return new this(r).acosh()}function Eo(r,e){return new this(r).plus(e)}function _o(r){return new this(r).asin()}function Fo(r){return new this(r).asinh()}function Oo(r){return new this(r).atan()}function Vo(r){return new this(r).atanh()}function Do(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=De(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?De(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=De(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ae(r,e,o,1)),e=De(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ae(r,e,o,1)),t}function Wo(r){return new this(r).cbrt()}function qo(r){return F(r=new this(r),r.e+1,2)}function Go(r,e,t){return new this(r).clamp(e,t)}function Uo(r){if(!r||typeof r!="object")throw Error(hn+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,st,"rounding",0,8,"toExpNeg",-Kt,0,"toExpPos",0,Kt,"maxE",0,Kt,"minE",-Kt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=zn[t]),(n=r[t])!==void 0)if(Te(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(ot+t+": "+n);if(t="crypto",i&&(this[t]=zn[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(zr);else this[t]=!1;else throw Error(ot+t+": "+n);return this}function Xo(r){return new this(r).cos()}function zo(r){return new this(r).cosh()}function ei(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,Gr(o)){c.s=o.s,U?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;U?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Qn(c,o.toString())}else if(u!=="string")throw Error(ot+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Hr.test(o)?Qn(c,o):No(c,o)}if(i.prototype=I,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=Uo,i.clone=ei,i.isDecimal=Gr,i.abs=Co,i.acos=vo,i.acosh=Mo,i.add=Eo,i.asin=_o,i.asinh=Fo,i.atan=Oo,i.atanh=Vo,i.atan2=Do,i.cbrt=Wo,i.ceil=qo,i.clamp=Go,i.cos=Xo,i.cosh=zo,i.div=Yo,i.exp=Ho,i.floor=Qo,i.hypot=Zo,i.ln=jo,i.log=$o,i.log10=es,i.log2=Jo,i.max=ts,i.min=ns,i.mod=rs,i.mul=is,i.pow=os,i.random=ss,i.round=as,i.sign=us,i.sin=cs,i.sinh=ls,i.sqrt=ms,i.sub=ds,i.sum=ps,i.tan=fs,i.tanh=bs,i.trunc=ys,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function Yo(r,e){return new this(r).div(e)}function Ho(r){return new this(r).exp()}function Qo(r){return F(r=new this(r),r.e+1,3)}function Zo(){var r,e,t=new this(0);for(U=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return U=!0,new this(1/0);t=e}return U=!0,t.sqrt()}function Gr(r){return r instanceof qt||r&&r.toStringTag===Yr||!1}function jo(r){return new this(r).ln()}function $o(r,e){return new this(r).log(e)}function Jo(r){return new this(r).log(2)}function es(r){return new this(r).log(10)}function ts(){return jr(this,arguments,"lt")}function ns(){return jr(this,arguments,"gt")}function rs(r,e){return new this(r).mod(e)}function is(r,e){return new this(r).mul(e)}function os(r,e){return new this(r).pow(e)}function ss(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Ne(r,1,st),n=Math.ceil(r/D),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(zr);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=D,n&&r&&(i=be(10,D-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=D)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<D&&(t-=D-n)}return s.e=t,s.d=a,s}function as(r){return F(r=new this(r),r.e+1,this.rounding)}function us(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function cs(r){return new this(r).sin()}function ls(r){return new this(r).sinh()}function ms(r){return new this(r).sqrt()}function ds(r,e){return new this(r).sub(e)}function ps(){var r=0,e=arguments,t=new this(e[r]);for(U=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return U=!0,F(t,this.precision,this.rounding)}function fs(r){return new this(r).tan()}function bs(r){return new this(r).tanh()}function ys(r){return F(r=new this(r),r.e+1,1)}I[Symbol.for("nodejs.util.inspect.custom")]=I.toString;I[Symbol.toStringTag]="Decimal";var qt=I.constructor=ei(zn);yn=new qt(yn);gn=new qt(gn);var S=qt;import{PublicKey as er}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as gs}from"@solana/spl-token";import{PublicKey as le,SystemProgram as ti,SYSVAR_RENT_PUBKEY as ws}from"@solana/web3.js";function T({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var hs=[T({pubkey:gs,isWritable:!1}),T({pubkey:ti.programId,isWritable:!1}),T({pubkey:ws,isWritable:!1})];function jn({publicKey:r,transformSol:e}){let t=$n(r.toString());if(t instanceof le)return e&&t.equals(Rt)?Nt:t;if(e&&t.toString()===Rt.toBase58())return Nt;if(typeof t=="string"){if(t===le.default.toBase58())return le.default;try{return new le(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function $n(r){try{return new le(r)}catch{return r}}var Pn=new le("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ku=new le("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),at=new le("SysvarRent111111111111111111111111111111111"),Au=new le("SysvarC1ock11111111111111111111111111111111"),Ct=new le("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ks=new le("Sysvar1nstructions1111111111111111111111111"),Pu=ti.programId,Tu=new le("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),xu=new le("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Iu=new le("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Bu=new le("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Su=new le("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ku=new le("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Lu=new le("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Nu=new le("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ru=new le("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Cu=new le("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),vu=new le("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Nt=new le("So11111111111111111111111111111111111111112"),Rt=le.default;function vt(r){return jn({publicKey:r,transformSol:!0})}import{PublicKey as As}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ni}from"@solana/spl-token";var Jn={chainId:101,address:As.default.toBase58(),programId:ni.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ut={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ni.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var tr=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Rt.toBase58()||e instanceof er&&Rt.equals(e)){this.decimals=ut.decimals,this.symbol=ut.symbol,this.name=ut.name,this.mint=new er(ut.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?er.default:jn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},xe=tr;xe.WSOL=new tr(Q(G({},ut),{mint:ut.address}));import{get as ri,set as Ps}from"lodash";var nr=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},ii={},Ts={};function ue(r){let e=ri(ii,r);if(!e){let t=ri(Ts,r);e=new nr({name:r,logLevel:t}),Ps(ii,r,e)}return e}import xn from"big.js";import Bs from"bn.js";import Ss from"decimal.js-light";import xs from"toformat";var Is=xs,Gt=Is;var Tn=ue("module/fraction"),rr=Gt(xn),Ut=Gt(Ss),Ks={[0]:Ut.ROUND_DOWN,[1]:Ut.ROUND_HALF_UP,[2]:Ut.ROUND_UP},Ls={[0]:xn.roundDown,[1]:xn.roundHalfUp,[2]:xn.roundUp},re=class{constructor(e,t=new Bs(1)){this.numerator=ie(e),this.denominator=ie(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new re(this.denominator,this.numerator)}add(e){let t=e instanceof re?e:new re(ie(e));return this.denominator.eq(t.denominator)?new re(this.numerator.add(t.numerator),this.denominator):new re(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof re?e:new re(ie(e));return this.denominator.eq(t.denominator)?new re(this.numerator.sub(t.numerator),this.denominator):new re(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof re?e:new re(ie(e));return new re(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof re?e:new re(ie(e));return new re(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Tn.logWithError(`${e} is not an integer.`),e<=0&&Tn.logWithError(`${e} is not positive.`),Ut.set({precision:e+1,rounding:Ks[n]});let i=new Ut(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Tn.logWithError(`${e} is not an integer.`),e<0&&Tn.logWithError(`${e} is negative.`),rr.DP=e,rr.RM=Ls[n]||1,new rr(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Rs=ue("Raydium_price"),_e=class extends re{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new re(ir(n.decimals),ir(i.decimals))}get raw(){return new re(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new _e({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Rs.logWithError("mul token not equals");let n=super.mul(t);return new _e({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var or=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},In=or;In.SOL=new or(Jn);import Cs from"bn.js";var oi=new re(new Cs(100)),qe=class extends re{toSignificant(e=5,t,n){return this.mul(oi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(oi).toFixed(e,t,n)}};import{PublicKey as vs}from"@solana/web3.js";import Ms from"bn.js";function si(r){return typeof r=="object"&&r!==null&&![xe,pe,vs,re,Ms,_e,qe].some(e=>typeof e=="object"&&r instanceof e)}function dt(r){return typeof r=="string"?$n(r):Array.isArray(r)?r.map(e=>dt(e)):si(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,dt(t)])):r}var Xt=new Re(0),ui=new Re(1),_c=new Re(2),Fc=new Re(3),Oc=new Re(5),sr=new Re(10),Vc=new Re(100),Dc=new Re(1e3),Wc=new Re(1e4),ai=9007199254740991;function ie(r){let e=ue("Raydium_parseBigNumberish");if(r instanceof Re)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Re(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ai||r<=-ai)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Re(String(r))):typeof r=="bigint"?new Re(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Re(0))}function ir(r){return sr.pow(ie(r))}function Bn(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var _s=ue("Raydium_amount"),ci=Gt(Es);function Fs(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):_s.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var pe=class extends re{constructor(t,n,i=!0,o){let s=new Sn(0),a=sr.pow(new Sn(t.decimals));if(i)s=ie(n);else{let u=new Sn(0),c=new Sn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Fs(n.toString(),t.decimals);u=ie(l),c=ie(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ue(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new pe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new pe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return ci.DP=this.token.decimals,new ci(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as zs}from"@solana/web3.js";import pi,{isBN as fi}from"bn.js";import{bits as cl,BitStructure as ll,blob as Os,Blob as ml,cstr as dl,f32 as pl,f32be as fl,f64 as bl,f64be as yl,greedy as gl,Layout as Vs,ns64 as wl,ns64be as hl,nu64 as kl,nu64be as Al,offset as Pl,s16 as Tl,s16be as xl,s24 as Il,s24be as Bl,s32 as Ds,s32be as Sl,s40 as Kl,s40be as Ll,s48 as Nl,s48be as Rl,s8 as Cl,seq as Ws,struct as vl,Structure as qs,u16 as Gs,u16be as Ml,u24 as El,u24be as _l,u32 as Fl,u32be as Ol,u40 as Vl,u40be as Dl,u48 as Wl,u48be as ql,u8 as Us,UInt as Xs,union as Gl,Union as Ul,unionLayoutDiscriminator as Xl,utf8 as zl}from"@solana/buffer-layout";var ar=Vs,li=qs;var ur=Xs;var mi=Us,zt=Gs;var he=Ds;var di=Ws;var Ie=Os;var pt=class extends ar{constructor(t,n,i){super(t,i);this.blob=Ie(t),this.signed=n}decode(t,n=0){let i=new pi(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new pi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function O(r){return new ur(1,r)}function Ce(r){return new ur(4,r)}function y(r){return new pt(8,!1,r)}function W(r){return new pt(16,!1,r)}function bi(r){return new pt(1,!0,r)}function Mt(r){return new pt(8,!0,r)}function yi(r){return new pt(16,!0,r)}var Kn=class extends ar{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function K(r){return new Kn(Ie(32),e=>new zs(e),e=>e.toBuffer(),r)}function ve(r){return new Kn(mi(),Ys,Hs,r)}function Ys(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function Hs(r){return r?1:0}var cr=class extends li{decode(e,t){return super.decode(e,t)}};function R(r,e,t){return new cr(r,e,t)}function q(r,e,t){let n,i=typeof e=="number"?e:fi(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=fi(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return di(r,i,t)}var sm=R([Ce("mintAuthorityOption"),K("mintAuthority"),y("supply"),O("decimals"),O("isInitialized"),Ce("freezeAuthorityOption"),K("freezeAuthority")]);import{PublicKey as Vd}from"@solana/web3.js";import{MintLayout as Wd,TOKEN_PROGRAM_ID as Gd}from"@solana/spl-token";import{PublicKey as Qt,sendAndConfirmTransaction as pr,Transaction as Zt,TransactionMessage as jt,VersionedTransaction as $t}from"@solana/web3.js";import ra from"axios";var J={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",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",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"};import{PublicKey as Qs,ComputeBudgetProgram as gi,Transaction as hi,TransactionMessage as Zs,Keypair as ki,VersionedTransaction as Ai}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as js}from"@solana/spl-token";var wi=ue("Raydium_txUtil"),Pi=1644;function Ln(r){let e=[],t=[];return r.microLamports&&(e.push(gi.setComputeUnitPrice({microLamports:r.microLamports})),t.push(J.SetComputeUnitPrice)),r.units&&(e.push(gi.setComputeUnitLimit({units:r.units})),t.push(J.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Et(r,e){var n,i;let t=e!=null?e:"confirmed";try{return((i=await((n=r.getLatestBlockhash)==null?void 0:n.call(r,{commitment:t})))==null?void 0:i.blockhash)||(await r.getRecentBlockhash(t)).blockhash}catch{return(await r.getRecentBlockhash(t)).blockhash}}function $s(r,e){r.length<1&&wi.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&wi.logWithError(`no signers provided:, ${e.toString()}`);let t=new hi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Pi}catch{return!1}}function fe(r,e){let[t,n]=Qs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Yt({instructions:r,payer:e,signers:t}){return $s(r,[e,...t])}function Ht({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=ki.generate().publicKey.toString()}){let o=new Zs({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ai(o).serialize()).toString("base64").length<Pi}catch{return!1}}var Js=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),ea=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof Ai&&(e=Js(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function ft(r){let e=[];return r.forEach(t=>{t instanceof hi&&(t.recentBlockhash||(t.recentBlockhash=js.toBase58()),t.feePayer||(t.feePayer=ki.generate().publicKey)),e.push(ea(t))}),console.log("simulate tx string:",e),e}import{PublicKey as Ti,AddressLookupTableAccount as Nn}from"@solana/web3.js";import{PublicKey as ta}from"@solana/web3.js";import{MINT_SIZE as xm,TOKEN_PROGRAM_ID as Im,getTransferFeeConfig as Bm,unpackMint as Sm}from"@solana/spl-token";var lr=ue("Raydium_accountInfo_util");async function Je(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}=G({batchRequest:!1},t),s=mr(e,o),a=new Array(s.length).fill([]);if(n){let u=s.map(m=>{let d=r._buildArgs([m.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=mr(u,10);a=(await(await Promise.all(c.map(async m=>await r._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&lr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:g,lamports:f,owner:w,rentEpoch:b}=d;return p.length!==2&&p[1]!=="base64"&&lr.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:f,owner:new ta(w),rentEpoch:b}}return null})))}else try{a=await Promise.all(s.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&lr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function bt(r,e,t){let n=await Je(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>Q(G({},i),{accountInfo:n[o]}))}async function dr({connection:r,address:e}){let t=await Je(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Ti(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Nn({key:s,state:Nn.deserialize(o.data)});n[s.toString()]=a,Rn[s.toString()]=a}return n}var Rn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Nn({key:new Ti("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Nn.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var Cn=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.api=e.api}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 e=(await ra.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Ln(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Qt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(G({},t||{})):this.build(t)}build(e){var n;let t=new Zt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var c;let{recentBlockHash:o,skipPreflight:s=!0,sendAndConfirm:a}=i||{},u=o!=null?o:await Et(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),ft([t]),(c=this.owner)!=null&&c.isKeyPair)return{txId:a?await pr(this.connection,t,this.signers.find(m=>m.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var c;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(l=>l.transaction.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async l=>{var w;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=l||{},f=p!=null?p:await Et(this.connection,this.blockhashCommitment);if((w=this.owner)!=null&&w.isKeyPair){if(m){let b=[];for(let k of s){let h=await pr(this.connection,k,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});b.push(h)}return{txIds:b,signedTxs:s}}return{txIds:await await Promise.all(s.map(async b=>(b.recentBlockhash=f,await this.connection.sendRawTransaction(b.serialize(),{skipPreflight:g})))),signedTxs:s}}if(this.signAllTransactions){let b=s.map((h,A)=>(h.recentBlockhash=f,a[A].length&&h.sign(...a[A]),h));ft(b);let k=await this.signAllTransactions(b);if(m){let h=0,A=[],B=async()=>{if(!k[h])return;let P=await this.connection.sendRawTransaction(k[h].serialize(),{skipPreflight:g});A.push({txId:P,status:"sent",signedTx:k[h]}),d==null||d([...A]),h++,this.connection.onSignature(P,L=>{let x=A.findIndex(C=>C.txId===P);x>-1&&(A[x].status=L.err?"error":"success"),d==null||d([...A]),L.err||B()},"processed"),this.connection.getSignatureStatus(P)};return await B(),{txIds:A.map(P=>P.txId),signedTxs:k}}else{let h=[];for(let A=0;A<k.length;A+=1){let B=await this.connection.sendRawTransaction(k[A].serialize(),{skipPreflight:g});h.push(B)}return{txIds:h,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var f;let g=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:o}=g,s=Ee(g,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=G(G({},this.cluster==="devnet"?{}:Rn),t),u=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let w of u)a[w]===void 0&&c.push(new Qt(w));let l=await dr({connection:this.connection,address:c});for(let[w,b]of Object.entries(l))a[w]=b;let m=i?Qt.default.toBase58():o!=null?o:await Et(this.connection,this.blockhashCommitment),d=new jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((f=this.owner)==null?void 0:f.signer)&&!this.signers.some(w=>w.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new $t(d);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async w=>{var h;let{skipPreflight:b=!0,sendAndConfirm:k}=w||{};if(ft([p]),(h=this.owner)!=null&&h.isKeyPair){let A=await this.connection.sendTransaction(p,{skipPreflight:b});if(k){let{lastValidBlockHeight:B,blockhash:P}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:P,lastValidBlockHeight:B,signature:A},"confirmed")}return{txId:A,signedTx:p}}if(this.signAllTransactions){let A=await this.signAllTransactions([p]);return{txId:await this.connection.sendTransaction(A[0],{skipPreflight:b}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var c;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(l=>l.builder.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async l=>{var f;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=l||{};if(p&&s.forEach(w=>w.message.recentBlockhash=p),ft(s),(f=this.owner)!=null&&f.isKeyPair){if(m){let w=[];for(let b of s){let k=await this.connection.sendTransaction(b,{skipPreflight:g}),{lastValidBlockHeight:h,blockhash:A}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:h,signature:k},"confirmed"),w.push(k)}return{txIds:w,signedTxs:s}}return{txIds:await Promise.all(s.map(async w=>await this.connection.sendTransaction(w,{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let w=await this.signAllTransactions(s);if(m){let b=0,k=[],h=async()=>{if(!w[b])return;let A=await this.connection.sendTransaction(w[b],{skipPreflight:g});k.push({txId:A,status:"sent",signedTx:w[b]}),d==null||d([...k]),b++,this.connection.onSignature(A,B=>{let P=k.findIndex(L=>L.txId===A);P>-1&&(k[P].status=B.err?"error":"success"),d==null||d([...k]),B.err||h()},"processed"),this.connection.getSignatureStatus(A)};return h(),{txIds:[],signedTxs:w}}else{let b=[];for(let k=0;k<w.length;k+=1){let h=await this.connection.sendTransaction(w[k],{skipPreflight:g});b.push(h)}return{txIds:b,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var l;let c=e||{},{computeBudgetConfig:t}=c,n=Ee(c,["computeBudgetConfig"]),i=t?Ln(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((m,d)=>Q(G({},m),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(m=>{let d=[...u,m],p=t?[...i.instructions,...d]:d,f=[...new Set(d.map(w=>w.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(w=>new Qt(w));if(u.length<12&&Yt({instructions:p,payer:this.feePayer,signers:f})||Yt({instructions:d,payer:this.feePayer,signers:f}))u.push(m);else{if(u.length===0)throw Error("item ins too big");Yt({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:f})?s.push(new Zt().add(...i.instructions,...u)):s.push(new Zt().add(...u)),a.push(Array.from(new Set(u.map(w=>w.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(w=>o[w]).filter(w=>w!==void 0)),u=[m]}}),u.length>0){let d=[...new Set(u.map(p=>p.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Yt({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:d.map(p=>p.publicKey)})?s.push(new Zt().add(...i.instructions,...u)):s.push(new Zt().add(...u)),a.push(d)}return s.forEach(m=>m.feePayer=this.feePayer),(l=this.owner)!=null&&l.signer&&a.forEach(m=>{m.some(d=>d.publicKey.equals(this.owner.publicKey))||m.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async m=>{var b;let{sequentially:d,onTxUpdate:p,recentBlockHash:g,skipPreflight:f=!0}=m||{},w=g!=null?g:await Et(this.connection,this.blockhashCommitment);if(s.forEach(async(k,h)=>{k.recentBlockhash=w,a[h].length&&k.sign(...a[h])}),ft(s),(b=this.owner)!=null&&b.isKeyPair){if(d){let k=[];for(let h of s){let A=await pr(this.connection,h,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});k.push(A)}return{txIds:k,signedTxs:s}}return{txIds:await Promise.all(s.map(async k=>await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let k=await this.signAllTransactions(s);if(d){let h=0,A=[],B=async()=>{if(!k[h])return;let P=await this.connection.sendRawTransaction(k[h].serialize(),{skipPreflight:f});A.push({txId:P,status:"sent",signedTx:k[h]}),p==null||p([...A]),h++,this.connection.onSignature(P,L=>{let x=A.findIndex(C=>C.txId===P);x>-1&&(A[x].status=L.err?"error":"success"),p==null||p([...A]),L.err||B()},"processed"),this.connection.getSignatureStatus(P)};return await B(),{txIds:A.map(P=>P.txId),signedTxs:k}}else{let h=[];for(let A=0;A<k.length;A+=1){let B=await this.connection.sendRawTransaction(k[A].serialize(),{skipPreflight:f});h.push(B)}return{txIds:h,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){var b;let w=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=w,o=Ee(w,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=G(G({},this.cluster==="devnet"?{}:Rn),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let k of a)s[k]===void 0&&u.push(new Qt(k));let c=await dr({connection:this.connection,address:u});for(let[k,h]of Object.entries(c))s[k]=h;let l=t?Ln(t):{instructions:[],instructionTypes:[]},m=await Et(this.connection,this.blockhashCommitment),d=this.signers.reduce((k,h)=>Q(G({},k),{[h.publicKey.toBase58()]:h}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(k=>{let h=[...f,k],A=t?[...l.instructions,...h]:h;if(f.length<12&&Ht({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Ht({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(k);else{if(f.length===0)throw Error("item ins too big");let B={};for(let P of[...new Set(a)])s[P]!==void 0&&(B[P]=s[P]);if(t&&Ht({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let P=new jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new $t(P))}else{let P=new jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new $t(P))}g.push(Array.from(new Set(f.map(P=>P.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat())).map(P=>d[P]).filter(P=>P!==void 0)),f=[k]}}),f.length>0){let h=[...new Set(f.map(A=>A.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&Ht({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new $t(A))}else{let A=new jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new $t(A))}g.push(h)}return(b=this.owner)!=null&&b.signer&&g.forEach(k=>{k.some(h=>h.publicKey.equals(this.owner.publicKey))||k.push(this.owner.signer)}),{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async k=>{var L;let{sequentially:h,onTxUpdate:A,recentBlockHash:B,skipPreflight:P=!0}=k||{};if(p.map(async(x,C)=>{g[C].length&&x.sign(g[C]),B&&(x.message.recentBlockhash=B)}),ft(p),(L=this.owner)!=null&&L.isKeyPair){if(h){let x=[];for(let C of p){let _=await this.connection.sendTransaction(C,{skipPreflight:P}),{lastValidBlockHeight:V,blockhash:$}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:$,lastValidBlockHeight:V,signature:_},"confirmed"),x.push(_)}return{txIds:x,signedTxs:p}}return{txIds:await Promise.all(p.map(async x=>await this.connection.sendTransaction(x,{skipPreflight:P}))),signedTxs:p}}if(this.signAllTransactions){let x=await this.signAllTransactions(p);if(h){let C=0,_=[],V=async()=>{if(!x[C])return;let $=await this.connection.sendTransaction(x[C],{skipPreflight:P});_.push({txId:$,status:"sent",signedTx:x[C]}),A==null||A([..._]),C++,this.connection.onSignature($,Z=>{let se=_.findIndex(j=>j.txId===$);se>-1&&(_[se].status=Z.err?"error":"success"),A==null||A([..._]),Z.err||V()},"processed"),this.connection.getSignatureStatus($)};return V(),{txIds:[],signedTxs:x}}else{let C=[];for(let _=0;_<x.length;_+=1){let V=await this.connection.sendTransaction(x[_],{skipPreflight:P});C.push(V)}return{txIds:C,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function mr(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as te}from"@solana/web3.js";var xi=new te("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ii=new te("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Bi=new te("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Zm=new te("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),jm=new te("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),$m=new te("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Jm=new te("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),ed=new te("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),td=new te("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),nd=new te("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),rd=new te("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),id=new te("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),od=new te("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),sd=new te("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ad=new te("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),ud=new te("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),cd=new te("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ld=new te("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),md=new te("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ia=new te("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),oa=new te("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),sa=new te("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var dd={SERUM_MARKET:te.default,OPENBOOK_MARKET:new te("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:te.default,FarmV3:new te("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new te("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new te("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new te("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new te("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new te("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new te("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ia,CREATE_CPMM_POOL_AUTH:oa,CREATE_CPMM_POOL_FEE_ACC:sa,FEE_DESTINATION_ID:new te("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as aa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ua}from"@solana/spl-token";function Fe(r,e,t){return fe([r.toBuffer(),(t!=null?t:ua).toBuffer(),e.toBuffer()],new aa("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Ge from"bn.js";var Jt=1e4;function me(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=Q(G({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new Ge(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Jt){let u=new Ge(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=en(r.mul(new Ge(Jt)),new Ge(Jt-o.transferFeeBasisPoints)),c=new Ge(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=en(l.mul(new Ge(o.transferFeeBasisPoints)),new Ge(Jt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=en(r.mul(new Ge(o.transferFeeBasisPoints)),new Ge(Jt)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function ct(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function en(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Ge(0))?t.add(new Ge(1)):t}var Si=r=>new xe({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name});var vn=i=>{var o=i,{address:r,programId:e,decimals:t}=o,n=Ee(o,["address","programId","decimals"]);return G({chainId:101,address:vt(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};var fr=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),tn=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ue(t)}createTxBuilder(e){return this.scope.checkOwner(),new Cn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(fr(e))}logInfo(...e){this.logger.info(fr(e))}logAndCreateError(...e){let t=fr(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{TOKEN_PROGRAM_ID as rn,ASSOCIATED_TOKEN_PROGRAM_ID as Pa}from"@solana/spl-token";import{PublicKey as He,TransactionInstruction as Ft,SystemProgram as Ta,SYSVAR_RENT_PUBKEY as wp}from"@solana/web3.js";var br=R([O("instruction"),y("amountIn"),y("minAmountOut")]),yr=R([O("instruction"),y("maxAmountIn"),y("amountOut")]),cp=R([O("instruction"),O("nonce")]),ca=R([O("instruction"),O("nonce"),y("startTime")]),Ki=R([y("status"),y("nonce"),y("maxOrder"),y("depth"),y("baseDecimal"),y("quoteDecimal"),y("state"),y("resetFlag"),y("minSize"),y("volMaxCutRatio"),y("amountWaveRatio"),y("baseLotSize"),y("quoteLotSize"),y("minPriceMultiplier"),y("maxPriceMultiplier"),y("systemDecimalValue"),y("minSeparateNumerator"),y("minSeparateDenominator"),y("tradeFeeNumerator"),y("tradeFeeDenominator"),y("pnlNumerator"),y("pnlDenominator"),y("swapFeeNumerator"),y("swapFeeDenominator"),y("baseNeedTakePnl"),y("quoteNeedTakePnl"),y("quoteTotalPnl"),y("baseTotalPnl"),y("poolOpenTime"),y("punishPcAmount"),y("punishCoinAmount"),y("orderbookToInitTime"),W("swapBaseInAmount"),W("swapQuoteOutAmount"),y("swapBase2QuoteFee"),W("swapQuoteInAmount"),W("swapBaseOutAmount"),y("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),y("lpReserve"),q(y(),3,"padding")]),lp=R([y("accountType"),y("status"),y("nonce"),y("maxOrder"),y("depth"),y("baseDecimal"),y("quoteDecimal"),y("state"),y("resetFlag"),y("minSize"),y("volMaxCutRatio"),y("amountWaveRatio"),y("baseLotSize"),y("quoteLotSize"),y("minPriceMultiplier"),y("maxPriceMultiplier"),y("systemDecimalsValue"),y("abortTradeFactor"),y("priceTickMultiplier"),y("priceTick"),y("minSeparateNumerator"),y("minSeparateDenominator"),y("tradeFeeNumerator"),y("tradeFeeDenominator"),y("pnlNumerator"),y("pnlDenominator"),y("swapFeeNumerator"),y("swapFeeDenominator"),y("baseNeedTakePnl"),y("quoteNeedTakePnl"),y("quoteTotalPnl"),y("baseTotalPnl"),y("poolOpenTime"),y("punishPcAmount"),y("punishCoinAmount"),y("orderbookToInitTime"),W("swapBaseInAmount"),W("swapQuoteOutAmount"),W("swapQuoteInAmount"),W("swapBaseOutAmount"),y("swapQuote2BaseFee"),y("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),q(y(),64,"padding")]),gr=R([O("instruction"),y("baseAmountIn"),y("quoteAmountIn"),y("fixedSide")]),wr=R([O("instruction"),y("amountIn")]);var Li=R([y("fee")]);import{PublicKey as la}from"@solana/web3.js";var _t=new la("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),gt=5e4,ma=R([y("x"),y("y"),y("price")]),da=R([y("accountType"),y("status"),y("multiplier"),y("validDataCount"),q(ma,gt,"DataElement")]);function pa(r,e){return[0,gt-2]}function fa(r){return[0,gt-2]}function ba(r){return[0,gt-2]}function ya(r,e,t){let[n,i]=pa(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=gt-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function hr(r,e,t){let[n,i,o]=ya(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*r.multiplier*l/p}}function yt(r,e,t){return e*r.multiplier/t}function Ni(r,e,t){return e*t/r.multiplier}function ga(r,e){let[t,n]=fa(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>gt-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function wa(r,e){let[t,n]=ba(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=gt-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function Ri(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=ga(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let g,f;return n?(g=l+(m-l)*(e-u)/(c-u),f=d-(i-u)*r.multiplier/m):(g=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[g,f,!1,a]}}}function ha(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=wa(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let g,f;return n?(g=l+(m-l)*(d-e)/(d-p),f=u+m*(d-i)/r.multiplier):(g=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[g,f,!1,a]}}}function ka(r,e){let t=Ri(r,e,0,!1);return t[3]?t[0]:0}function Ci(r,e,t,n){let i=hr(r,e,t),o=yt(r,e,i),s=yt(r,t,i),a=yt(r,n,i),u=!0,[c,l,m,d]=Ri(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return Ni(r,p,i)}}function vi(r,e,t,n){let i=hr(r,e,t),o=yt(r,e,i),s=yt(r,t,i),a=yt(r,n,i),u=!1,[c,l,m,d]=ha(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Ni(r,p,i)}}function Aa(r){let e=da.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Mi(r,e,t,n){let i=ka(r,yt(r,e,hr(r,e,t)))/r.multiplier;return n?i:1/i}var nn=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(_t);e&&(this._layoutData=Aa(e==null?void 0:e.data))}}};var Ei=ue("Raydium_liquidity_instruction");function _i(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(gr.span);gr.encode({instruction:3,baseAmountIn:ie(i),quoteAmountIn:ie(o),fixedSide:s==="base"?Xt:ui},a);let u=[T({pubkey:rn,isWritable:!1}),T({pubkey:new He(e.id)}),T({pubkey:new He(t.authority),isWritable:!1}),T({pubkey:new He(t.openOrders),isWritable:!1}),T({pubkey:new He(t.targetOrders)}),T({pubkey:new He(e.lpMint.address)}),T({pubkey:new He(t.vault.A)}),T({pubkey:new He(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(T({pubkey:_t})),u.push(T({pubkey:new He(e.marketId),isWritable:!1}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:new He(t.marketEventQueue),isWritable:!1})),new Ft({programId:new He(e.programId),keys:u,data:a})}function kr(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=dt(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(wr.span);wr.encode({instruction:4,amountIn:ie(i)},a);let u=[T({pubkey:rn,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.mintLp.address}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return s===5?u.push(T({pubkey:_t})):(u.push(T({pubkey:o.id})),u.push(T({pubkey:o.id}))),u.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks})),new Ft({programId:o.programId,keys:u,data:a})}return new Ft({programId:o.programId,keys:[]})}function Fi({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:g,userCoinVault:f,userPcVault:w,userLpVault:b,nonce:k,openTime:h,coinAmount:A,pcAmount:B,ammConfigId:P,feeDestinationId:L}){let x=R([O("instruction"),O("nonce"),y("openTime"),y("pcAmount"),y("coinAmount")]),C=[{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:Pa,isSigner:!1,isWritable:!1},{pubkey:Ta.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:L,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0}],_=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:k,openTime:h,coinAmount:A,pcAmount:B},_),{instruction:new Ft({keys:C,programId:r,data:_}),instructionType:J.AmmV4CreatePool}}function xa({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=dt(r),s=Buffer.alloc(br.span);br.encode({instruction:9,amountIn:ie(t),minAmountOut:ie(n)},s);let a=[T({pubkey:rn,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders})];return i===4&&a.push(T({pubkey:o.targetOrders})),a.push(T({pubkey:o.vault.A}),T({pubkey:o.vault.B})),i===5&&a.push(T({pubkey:_t})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1})),new Ft({programId:o.programId,keys:a,data:s})}function Ia({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=dt(r),s=Buffer.alloc(yr.span);yr.encode({instruction:11,maxAmountIn:ie(t),amountOut:ie(n)},s);let a=[T({pubkey:rn,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return i===5&&a.push(T({pubkey:_t})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Ft({programId:o.programId,keys:a,data:s})}function Oi(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return xa(Q(G({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Ia(Q(G({},a),{maxAmountIn:i,amountOut:o}),t);Ei.logWithError("invalid params","params",r)}throw Ei.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{ASSOCIATED_TOKEN_PROGRAM_ID as to,TOKEN_2022_PROGRAM_ID as lt,TOKEN_PROGRAM_ID as Ae}from"@solana/spl-token";import{Keypair as Kr,PublicKey as N,SystemProgram as ln,TransactionInstruction as Xe}from"@solana/web3.js";import no from"bn.js";import Ea from"bn.js";function Mn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Ar(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Pr(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function on(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Vi(r,e){return on(r,e)?null:Ar(r,e)}function Di(r,e){return on(r,e)?null:Pr(r,e)}var Cp=Buffer.from("amm_config","utf8"),Ba=Buffer.from("pool","utf8"),Sa=Buffer.from("pool_vault","utf8"),Ka=Buffer.from("pool_reward_vault","utf8"),Wi=Buffer.from("position","utf8"),La=Buffer.from("tick_array","utf8"),Na=Buffer.from("operation","utf8"),Ra=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Ca=Buffer.from("observation","utf8");function qi(r,e,t,n){return fe([Ba,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Tr(r,e,t){return fe([Sa,e.toBuffer(),t.toBuffer()],r)}function Gi(r,e,t){return fe([Ka,e.toBuffer(),t.toBuffer()],r)}function oe(r,e,t){return fe([La,e.toBuffer(),Mn(t)],r)}function wt(r,e,t,n){return fe([Wi,e.toBuffer(),Mn(t),Mn(n)],r)}function Qe(r,e){return fe([Wi,e.toBuffer()],r)}function En(r){return fe([Buffer.from("metadata","utf8"),Ct.toBuffer(),r.toBuffer()],Ct)}function xr(r){return fe([Na],r)}function Oe(r,e){return fe([Ra,e.toBuffer()],r)}function Ui(r,e){return fe([Ca,e.toBuffer()],r)}import Ve from"bn.js";var de=new Ve(0),Ze=new Ve(1),et=new Ve(-1),Me=new Ve(1).shln(64),_n=new Ve(1).shln(128),Ir=Me.sub(Ze),sn=64,Xi=_n.subn(1),Be=-443636,Le=-Be,ht=new Ve("4295048016"),kt=new Ve("79226673521066979257578248091"),Ep=new Ve("4295048017"),_p=new Ve("79226673521066979257578248090"),zi=16,Yi="59543866431248",Hi="184467440737095516",Qi="15793534762490258745",Fn=new Ve(10).pow(new Ve(6));var Fp=new Ve("18446744073700000000");var va=15,ee=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=E.getTickArrayStartIndexByTick(i,o),l=E.getInitializedTickArrayInRange(s,a,o,c,Math.floor(va/2));for(let p=0;p<l.length;p++){let{publicKey:g}=oe(t,n,l[p]);u.push(g)}let m=(await Je(e,u)).map(p=>p!==null?an.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let g=m[p];g!==null&&(d[g.startTickIndex]=Q(G({},g),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=E.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/ee.tickCount(t)),a=n?E.searchLowBitFromStart(i,o,s-1,1,t):E.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=ye-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<ye;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=oe(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=E.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<ye;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=oe(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(E.checkIsOutOfBoundary(e)){if(e>Le)return!1;let n=E.getTickArrayStartIndexByTick(Be,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return ye*e}};import H from"bn.js";import{PublicKey as Ue}from"@solana/web3.js";import ce from"bn.js";var Br=14,tt=class{static maxTickInTickarrayBitmap(e){return e*ye*At}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!ee.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-ee.tickCount(n):t+ee.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*ye,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=Vi(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Di(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-ee.tickCount(n)}}}},un=class{static getBitmapOffset(e,t){if(!ee.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=tt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=tt.maxTickInTickarrayBitmap(e),n=-t;if(Le<=t)throw Error(`extensionTickBoundary check error: ${Le}, ${t}`);if(n<=Be)throw Error(`extensionTickBoundary check error: ${n}, ${Be}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:E.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=ee.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=tt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=E.mergeTickArrayBitmap(e).shln(At-1-a),c=on(512,u)?null:Ar(512,u);if(c!==null){let l=t-c*ee.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=E.mergeTickArrayBitmap(e).shrn(a),c=on(512,u)?null:Pr(512,u);if(c!==null){let l=t+c*ee.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-ee.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%tt.maxTickInTickarrayBitmap(t),i=Math.floor(n/ee.tickCount(t));return e<0&&n!=0&&(i=At-i),i}};import je from"bn.js";var cn=class{static getfeeGrowthInside(e,t,n){let i=new je(0),o=new je(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new je(0),a=new je(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=Y.wrappingSubU128(Y.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=Y.wrappingSubU128(Y.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=Y.mulDivFloor(Y.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Me),u=t.tokenFeesOwedA.add(a),c=Y.mulDivFloor(Y.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Me),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=Y.mulDivFloor(Y.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Me),u=t.tokenFeesOwedA.add(a),c=Y.mulDivFloor(Y.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Me),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Y.wrappingSubU128(u,c.growthInsideLastX64),m=Y.mulDivFloor(l,t.liquidity,Me),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Y.wrappingSubU128(u,c.growthInsideLastX64),m=Y.mulDivFloor(l,t.liquidity,Me),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new je(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Y.wrappingSubU128(Y.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new je(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Y.wrappingSubU128(Y.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var w,b,k,h;let a=X.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),u=X.getSqrtPriceX64FromTick(t.tickLower),c=X.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ne.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[me(m.amountA,(w=e.mintA.extensions)==null?void 0:w.feeConfig,s,!0),me(m.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,s,!0)],[g,f]=[me(new je(new S(m.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),me(new je(new S(m.amountB.toString()).mul(l).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:ct(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Zi}from"@solana/spl-token";var ke=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o,s=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:d,amountCalculated:p,accounts:g,sqrtPriceX64:f,feeAmount:w}=Pt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,l,o,s);return u.push(...g),{allTrade:d,expectedAmountOut:p.mul(et),remainingAccounts:u,executionPrice:f,feeAmount:w}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:w}=oe(e.programId,e.id,f.nextStartIndex);a.push(w)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=Pt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(et),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=ke.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?un.checkTickArrayIsInit(ee.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):E.checkTickArrayIsInitialized(E.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=oe(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,ee.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=oe(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/ee.tickCount(e.tickSpacing)),i=t?E.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):E.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=ee.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=tt.nextInitializedTickArrayStartIndex(E.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=un.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Be||t>Le)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=Q(G({},m),{perSecond:Y.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Ue(d)});if(p.tokenMint.equals(Ue.default))continue;if(n<=p.openTime.toNumber()||i.eq(de)){s.push(p);continue}let g=new ce(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),w=Y.mulDivFloor(f,p.emissionsPerSecondX64,i),b=p.rewardGrowthGlobalX64.add(w),k=Y.mulDivFloor(f,p.emissionsPerSecondX64,Me),h=p.rewardTotalEmissioned.add(k);s.push(Q(G({},p),{rewardGrowthGlobalX64:b,rewardTotalEmissioned:h,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=E.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=tt.maxTickInTickarrayBitmap(e),n=-t;return t>Le&&(t=ee.getArrayStartIndex(Le,e)+ee.tickCount(e)),n<Be&&(n=ee.getArrayStartIndex(Be,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ee.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ee.tickCount(t)*At}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await bt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=Ji.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=E.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=E.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=oe(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await bt(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=an.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=Q(G({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(Qe(p,d).publicKey);let l=await Je(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=$i.decode(d.data),g=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===g);if(f===void 0)continue;let w=f.state,b=E._getTickPriceLegacy({poolInfo:w,tick:p.tickLower,baseIn:!0}),k=E._getTickPriceLegacy({poolInfo:w,tick:p.tickUpper,baseIn:!0}),{amountA:h,amountB:A}=ne.getAmountsFromLiquidity(w.sqrtPriceX64,b.tickSqrtPriceX64,k.tickSqrtPriceX64,p.liquidity,!1),B=1/(1-Math.sqrt(Math.sqrt(b.price.div(k.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:b.price,priceUpper:k.price,amountA:h,amountB:A,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>Q(G({},x),{pendingReward:new ce(0)})),leverage:B,tokenFeeAmountA:new ce(0),tokenFeeAmountB:new ce(0)}];let P=await E.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),L=await E.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=P,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=L}if(o){let d=Object.values(m),p=await Je(t,d,{batchRequest:i}),g={};for(let f=0;f<d.length;f++){let w=p[f];if(w===null)continue;let b=d[f].toString();g[b]=an.decode(w.data)}for(let{state:f,positionAccount:w}of e)if(!!w)for(let b of w){let k=`${f.programId.toString()}-${f.id.toString()}-${b.tickLower}`,h=`${f.programId.toString()}-${f.id.toString()}-${b.tickUpper}`,A=g[m[k].toString()],B=g[m[h].toString()],P=A.ticks[E.getTickOffsetInArray(b.tickLower,f.tickSpacing)],L=B.ticks[E.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:C}=await cn.GetPositionFees(f,b,P,L),_=await cn.GetPositionRewards(f,b,P,L);b.tokenFeeAmountA=x.gte(new ce(0))?x:new ce(0),b.tokenFeeAmountB=C.gte(new ce(0))?C:new ce(0);for(let V=0;V<_.length;V++)b.rewardInfos[V].pendingReward=_[V].gte(new ce(0))?_[V]:new ce(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new S(0),catchLiquidityInsufficient:u=!1}){var $;let c,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new S(0))?c=l?ht.add(new ce(1)):kt.sub(new ce(1)):c=X.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=me(o,m,i,!1),{allTrade:g,expectedAmountOut:f,remainingAccounts:w,executionPrice:b,feeAmount:k}=ke.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub(($=p.fee)!=null?$:de),c,u),h=me(f,d,i,!1),A=X.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),B=l?A:new S(1).div(A),P=f.mul(new ce(Math.floor((1-s)*1e10))).div(new ce(1e10)),L=me(P,d,i,!1),x=l?e.currentPrice:new S(1).div(e.currentPrice),C=new S(B).sub(x).abs(),_=x,V=new qe(new S(C).mul(10**15).toFixed(0),new S(_).mul(10**15).toFixed(0));return{allTrade:g,realAmountIn:p,amountOut:h,minAmountOut:L,expirationTime:ct(p.expirationTime,h.expirationTime),currentPrice:e.currentPrice,executionPrice:B,priceImpact:V,fee:k,remainingAccounts:w,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let u=i.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new xe(Q(G({},c),{mint:c.address,isToken2022:c.programId===Zi.toBase58()})),new xe(Q(G({},l),{mint:l.address,isToken2022:l.programId===Zi.toBase58()}))],{allTrade:p,realAmountIn:g,amountOut:f,minAmountOut:w,expirationTime:b,currentPrice:k,executionPrice:h,priceImpact:A,fee:B,remainingAccounts:P,executionPriceX64:L}=ke.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Ue(c.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),x=Q(G({},g),{amount:new pe(m,g.amount),fee:g.fee===void 0?void 0:new pe(m,g.fee)}),C=Q(G({},f),{amount:new pe(d,f.amount),fee:f.fee===void 0?void 0:new pe(d,f.fee)}),_=Q(G({},w),{amount:new pe(d,w.amount),fee:w.fee===void 0?void 0:new pe(d,w.fee)}),V=new _e({baseToken:m,denominator:new ce(10).pow(new ce(20+m.decimals)),quoteToken:d,numerator:k.mul(new S(10**(20+d.decimals))).toFixed(0)}),$=new _e({baseToken:m,denominator:new ce(10).pow(new ce(20+m.decimals)),quoteToken:d,numerator:h.mul(new S(10**(20+d.decimals))).toFixed(0)}),Z=new pe(m,B);return{allTrade:p,realAmountIn:x,amountOut:C,minAmountOut:_,expirationTime:b,currentPrice:V,executionPrice:$,priceImpact:A,fee:Z,remainingAccounts:P,executionPriceX64:L}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountOut:o,slippage:s,priceLimit:a=new S(0)}){var _;let u=n.toBase58()===e.mintA.address,c={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;a.equals(new S(0))?l=u?kt.sub(new ce(1)):ht.add(new ce(1)):l=X.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let m=me(o,c[n.toString()],i,!0),{expectedAmountIn:d,remainingAccounts:p,executionPrice:g,feeAmount:f}=ke.getInputAmountAndRemainAccounts(e,t,n,m.amount.sub((_=m.fee)!=null?_:de),l),w=u?e.mintB.address:e.mintA.address,b=me(d,c[w],i,!1),k=X.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),h=u?k:new S(1).div(k),A=d.mul(new ce(Math.floor((1+s)*1e10))).div(new ce(1e10)),B=me(A,c[w],i,!0),P=u?e.currentPrice:new S(1).div(e.currentPrice),L=new S(h).sub(P).abs(),x=P,C=new qe(new S(L).mul(10**15).toFixed(0),new S(x).mul(10**15).toFixed(0));return{amountIn:b,maxAmountIn:B,realAmountOut:m,expirationTime:ct(b.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:h,priceImpact:C,fee:f,remainingAccounts:p}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var g,f,w;let o=e[t],s=E.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=E.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[((g=o.rewardApr[0])!=null?g:0)*p,((f=o.rewardApr[1])!=null?f:0)*p,((w=o.rewardApr[2])!=null?w:0)*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[vt(e.mintA.address).toString()],d=i[vt(e.mintB.address).toString()],p=e.mintA.decimals,g=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=X.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),w=X.getSqrtPriceX64FromTick(s),b=X.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:h}=ne.getAmountsFromLiquidityWithSlippage(f,w,b,t,!1,!1,0),{amountSlippageA:A,amountSlippageB:B}=ne.getAmountsFromLiquidityWithSlippage(f,w,b,o,!1,!1,0),P=new S(k.toString()).div(new S(10).pow(p)).mul(m.value).add(new S(h.toString()).div(new S(10).pow(g)).mul(d.value)),L=new S(A.toString()).div(new S(10).pow(p)).mul(m.value).add(new S(B.toString()).div(new S(10).pow(g)).mul(d.value)),x=new S(1).div(P.add(L)),_=new S(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),V=3600*24*365,$=e.rewardDefaultInfos.map(Z=>{var z,mt;let se=Z.mint.decimals,j=i[Z.mint.address];return u<((z=Z.startTime)!=null?z:0)||u>((mt=Z.endTime)!=null?mt:0)||!Z.perSecond||!j||se===void 0?0:new S(j.value).mul(new S(Z.perSecond).mul(V)).div(new S(10).pow(se)).mul(x).mul(100).toNumber()});return{feeApr:_,rewardsApr:$,apr:_+$.reduce((Z,se)=>Z+se,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var b,k;let l=X.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),m=X.getSqrtPriceX64FromTick(n),d=X.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,g=me(o,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,u,!c),f=new ce(new S(g.amount.sub((k=g.fee)!=null?k:de).toString()).mul(p).toFixed(0)),w;if(l.lte(m))w=t?ne.getLiquidityFromTokenAmountA(m,d,f,!a):new ce(0);else if(l.lte(d)){let h=ne.getLiquidityFromTokenAmountA(l,d,f,!a),A=ne.getLiquidityFromTokenAmountB(m,l,f);w=t?h:A}else w=t?new ce(0):ne.getLiquidityFromTokenAmountB(m,d,f);return ke.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:w,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var w,b,k,h;let u=X.getSqrtPriceX64FromTick(n),c=X.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ne.getAmountsFromLiquidity(X.priceToSqrtPriceX64(new S(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[me(m.amountA,(w=t.mintA.extensions)==null?void 0:w.feeConfig,e,!0),me(m.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[g,f]=[me(m.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),me(m.amountB.muln(l),(h=t.mintB.extensions)==null?void 0:h.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:ct(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(u=>!n[u.id]).map(u=>new Ue(u.id));(await Je(e,i)).forEach((u,c)=>{!u||(n[i[c].toBase58()]=ji.decode(u.data))});let s=t.map(u=>Oe(new Ue(u.programId),new Ue(u.id)).publicKey),a=await ke.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>Q(G({},u),{[c.id]:Q(G({},n[c.id]),{id:new Ue(c.id),version:6,programId:new Ue(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:Q(G({},c.config),{id:new Ue(c.config.id),fundOwner:""}),currentPrice:new S(c.price),exBitmapInfo:a[Oe(new Ue(c.programId),new Ue(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var Y=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(de)||(o=o.add(Ze)),o}static mulDivFloor(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).add(n.sub(Ze)).div(n)}static x64ToDecimal(e,t){return new S(e.toString()).div(S.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new H(e.mul(S.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(_n).sub(t).mod(_n)}};function ge(r,e){return Sr(r.mul(e),64,256)}function Ma(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Sr(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var X=class{static sqrtPriceX64ToPrice(e,t,n){return Y.x64ToDecimal(e).pow(2).mul(S.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Y.decimalToX64(e.mul(S.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(de))return e;let o=t.shln(sn);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?Y.mulDivCeil(s,e,a):Y.mulDivRoundingUp(s,Ze,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return Y.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(sn);if(i)return e.add(o.div(t));{let s=Y.mulDivRoundingUp(o,Ze,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Be||e>Le)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new H("18445821805675395072"):new H("18446744073709551616");return(t&2)!=0&&(n=ge(n,new H("18444899583751176192"))),(t&4)!=0&&(n=ge(n,new H("18443055278223355904"))),(t&8)!=0&&(n=ge(n,new H("18439367220385607680"))),(t&16)!=0&&(n=ge(n,new H("18431993317065453568"))),(t&32)!=0&&(n=ge(n,new H("18417254355718170624"))),(t&64)!=0&&(n=ge(n,new H("18387811781193609216"))),(t&128)!=0&&(n=ge(n,new H("18329067761203558400"))),(t&256)!=0&&(n=ge(n,new H("18212142134806163456"))),(t&512)!=0&&(n=ge(n,new H("17980523815641700352"))),(t&1024)!=0&&(n=ge(n,new H("17526086738831433728"))),(t&2048)!=0&&(n=ge(n,new H("16651378430235570176"))),(t&4096)!=0&&(n=ge(n,new H("15030750278694412288"))),(t&8192)!=0&&(n=ge(n,new H("12247334978884435968"))),(t&16384)!=0&&(n=ge(n,new H("8131365268886854656"))),(t&32768)!=0&&(n=ge(n,new H("3584323654725218816"))),(t&65536)!=0&&(n=ge(n,new H("696457651848324352"))),(t&131072)!=0&&(n=ge(n,new H("26294789957507116"))),(t&262144)!=0&&(n=ge(n,new H("37481735321082"))),e>0&&(n=Xi.div(n)),n}static getTickFromPrice(e,t,n){return X.getTickFromSqrtPriceX64(X.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(kt)||e.lt(ht))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new H(t-64),i=Ma(n,32,128),o=new H("8000000000000000","hex"),s=0,a=new H(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new H(0))&&s<zi;){u=u.mul(u);let g=u.shrn(127);u=u.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new H(Yi)),d=Sr(m.sub(new H(Hi)),64,128).toNumber(),p=Sr(m.add(new H(Qi)),64,128).toNumber();return d==p?d:X.getSqrtPriceX64FromTick(p).lte(e)?p:d}},Tt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=X.getTickFromSqrtPriceX64(X.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=Tt.getTickWithPriceAndTickspacing(e,t,n,i),s=X.getSqrtPriceX64FromTick(o);return X.sqrtPriceX64ToPrice(s,n,i)}},ne=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(sn),s=t.sub(e);return i?Y.mulDivRoundingUp(Y.mulDivCeil(o,s,t),Ze,e):Y.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");return i?Y.mulDivCeil(n,t.sub(e),Me):Y.mulDivFloor(n,t.sub(e),Me)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?Y.mulDivRoundingUp(a,Ze,Ir):a.shrn(sn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Y.mulDivFloor(n,Ir,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ne.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ne.getLiquidityFromTokenAmountA(e,n,i,!1),a=ne.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ne.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ne.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new H(0)};if(e.lt(n)){let s=ne.getTokenAmountAFromLiquidity(e,n,i,o),a=ne.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new H(0),amountB:ne.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ne.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new H(new S(u.toString()).mul(l).toFixed(0)),d=new H(new S(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var k,h,A,B;let c=X.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),l=X.getSqrtPriceX64FromTick(t),m=X.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ne.getAmountsFromLiquidity(c,l,m,i,s),[g,f]=[me(p.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),me(p.amountB,(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)],[w,b]=[me(new H(new S(p.amountA.toString()).mul(d).toFixed(0)),(A=e.mintA.extensions)==null?void 0:A.feeConfig,a,u),me(new H(new S(p.amountB.toString()).mul(d).toFixed(0)),(B=e.mintB.extensions)==null?void 0:B.feeConfig,a,u)];return{liquidity:i,amountA:g,amountB:f,amountSlippageA:w,amountSlippageB:b,expirationTime:ct(g.expirationTime,f.expirationTime)}}},Pt=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f=!1){if(d.eq(de))throw new Error("amountSpecified must not be 0");if(g||(g=s?ht.add(Ze):kt.sub(Ze)),s){if(g.lt(ht))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(kt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let w=d.gt(de),b={amountSpecifiedRemaining:d,amountCalculated:de,sqrtPriceX64:m,tick:c>p?Math.min(p+ee.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new H(0)},k=p,h=n[p],A=0,B=!s&&h.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(de)&&!b.sqrtPriceX64.eq(g);){A>10;let P={};P.sqrtPriceStartX64=b.sqrtPriceX64;let L=E.nextInitTick(h,b.tick,l,s,B),x=L||null,C=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let V=ke.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},k,s);if(!V.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts};throw Error("swapCompute LiquidityInsufficient")}k=V.nextStartIndex;let{publicKey:$}=oe(e,t,k);C=$,h=n[k];try{x=E.firstInitializedTick(h,s)}catch{throw Error("not found next tick info")}}P.tickNext=x.tick,P.initialized=x.liquidityGross.gtn(0),p!==k&&C&&(b.accounts.push(C),p=k),P.tickNext<Be?P.tickNext=Be:P.tickNext>Le&&(P.tickNext=Le),P.sqrtPriceNextX64=X.getSqrtPriceX64FromTick(P.tickNext);let _;if(s&&P.sqrtPriceNextX64.lt(g)||!s&&P.sqrtPriceNextX64.gt(g)?_=g:_=P.sqrtPriceNextX64,[b.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=Pt.swapStepCompute(b.sqrtPriceX64,_,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(P.feeAmount),w?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),b.amountCalculated=b.amountCalculated.sub(P.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(P.amountOut),b.amountCalculated=b.amountCalculated.add(P.amountIn.add(P.feeAmount))),b.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let V=x.liquidityNet;s&&(V=V.mul(et)),b.liquidity=ne.addDelta(b.liquidity,V)}B=P.tickNext!=b.tick&&!s&&h.startTickIndex===P.tickNext,b.tick=s?P.tickNext-1:P.tickNext}else if(b.sqrtPriceX64!=P.sqrtPriceStartX64){let V=X.getTickFromSqrtPriceX64(b.sqrtPriceX64);B=V!=b.tick&&!s&&h.startTickIndex===V,b.tick=V}++A}try{let{nextStartIndex:P,isExist:L}=ee.nextInitializedTickArray(b.tick,l,s,i,o);L&&p!==P&&(b.accounts.push(oe(e,t,P).publicKey),p=P)}catch{}return{allTrade:!0,amountSpecifiedRemaining:de,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new H(0),amountIn:new H(0),amountOut:new H(0),feeAmount:new H(0)},a=e.gte(t),u=i.gte(de);if(u){let l=Y.mulDivFloor(i,Fn.sub(new H(o.toString())),Fn);s.amountIn=a?ne.getTokenAmountAFromLiquidity(t,e,n,!0):ne.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=X.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ne.getTokenAmountBFromLiquidity(t,e,n,!1):ne.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(et).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=X.getNextSqrtPriceX64FromOutput(e,n,i.mul(et),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ne.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ne.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ne.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ne.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(et))&&(s.amountOut=i.mul(et)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=Y.mulDivCeil(s.amountIn,new H(o),Fn.sub(new H(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var ye=60,At=512,E=class{static getTickArrayAddressByTick(e,t,n,i){let o=E.getTickArrayStartIndexByTick(n,i),{publicKey:s}=oe(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=E.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=ye)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=ee.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*ee.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*ye,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*ye,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*ye:e+t*ye}static mergeTickArrayBitmap(e){let t=new Ea(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*ye));return[...E.searchLowBitFromStart(e,t,s-1,o,n),...E.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return E.searchHightBitFromStart(e,t,0,At,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=E.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=oe(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>E.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=ee.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>E.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=ee.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Be||e>Le}static nextInitTick(e,t,n,i,o){if(ee.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<ye;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=ye-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<ye;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=X.getSqrtPriceX64FromTick(t),o=X.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),o=Tt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=X.getSqrtPriceX64FromTick(o),a=X.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=X.getSqrtPriceX64FromTick(t),o=X.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),o=Tt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=X.getSqrtPriceX64FromTick(o),a=X.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}};var zf=R([Ie(8),O("bump"),zt("index"),K(""),Ce("protocolFeeRate"),Ce("tradeFeeRate"),zt("tickSpacing"),q(y(),8,"")]),_a=R([Ce("blockTimestamp"),Mt("tickCumulative"),q(y(),4)]),eo=R([Ie(8),ve("initialized"),y("recentEpoch"),zt("observationIndex"),K("poolId"),q(_a,100,"observations"),q(y(),4)]),Fa=R([O("rewardState"),y("openTime"),y("endTime"),y("lastUpdateTime"),W("emissionsPerSecondX64"),y("rewardTotalEmissioned"),y("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),W("rewardGrowthGlobalX64")]),ji=R([Ie(8),O("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),O("mintDecimalsA"),O("mintDecimalsB"),zt("tickSpacing"),W("liquidity"),W("sqrtPriceX64"),he("tickCurrent"),Ce(),W("feeGrowthGlobalX64A"),W("feeGrowthGlobalX64B"),y("protocolFeesTokenA"),y("protocolFeesTokenB"),W("swapInAmountTokenA"),W("swapOutAmountTokenB"),W("swapInAmountTokenB"),W("swapOutAmountTokenA"),O("status"),q(O(),7,""),q(Fa,3,"rewardInfos"),q(y(),16,"tickArrayBitmap"),y("totalFeesTokenA"),y("totalFeesClaimedTokenA"),y("totalFeesTokenB"),y("totalFeesClaimedTokenB"),y("fundFeesTokenA"),y("fundFeesTokenB"),y("startTime"),q(y(),15*4-3,"padding")]),Oa=R([W("growthInsideLastX64"),y("rewardAmountOwed")]),$i=R([Ie(8),O("bump"),K("nftMint"),K("poolId"),he("tickLower"),he("tickUpper"),W("liquidity"),W("feeGrowthInsideLastX64A"),W("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),q(Oa,3,"rewardInfos"),q(y(),8,"")]),Yf=R([Ie(8),O("bump"),K("poolId"),he("tickLowerIndex"),he("tickUpperIndex"),W("liquidity"),W("feeGrowthInsideLastX64A"),W("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),q(W(),3,"rewardGrowthInside"),q(y(),8,"")]),Va=R([he("tick"),yi("liquidityNet"),W("liquidityGross"),W("feeGrowthOutsideX64A"),W("feeGrowthOutsideX64B"),q(W(),3,"rewardGrowthsOutsideX64"),q(Ce(),13,"")]),an=R([Ie(8),K("poolId"),he("startTickIndex"),q(Va,ye,"ticks"),O("initializedTickCount"),q(O(),115,"")]),Hf=R([Ie(329),q(K(),100,"whitelistMints")]),Ji=R([Ie(8),K("poolId"),q(q(y(),8),Br,"positiveTickArrayBitmap"),q(q(y(),8),Br,"negativeTickArrayBitmap")]);eo.span;var ro=ue("Raydium_Clmm"),ze={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},On=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g){let f=R([W("sqrtPriceX64"),y("startTime")]),w=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:ln.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},b);let k=Buffer.from([...ze.createPool,...b]);return new Xe({keys:w,programId:e,data:k})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:o,ammConfigId:s,initialPriceX64:a,startTime:u}=e,[c,l]=[new N(i.address),new N(o.address)],{publicKey:m}=qi(t,s,c,l),{publicKey:d}=Ui(t,m),{publicKey:p}=Tr(t,m,c),{publicKey:g}=Tr(t,m,l),f=[this.createPoolInstruction(t,m,n,s,d,c,p,new N(i.programId||Ae),l,g,new N(o.programId||Ae),Oe(t,m).publicKey,a,u)];return{signers:[],instructions:f,instructionTypes:[J.CreateAccount,J.ClmmCreatePool],address:{poolId:m,observationId:d,mintAVault:p,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,b,k,h,A,B,P,L,x,C,_){let V=R([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),W("liquidity"),y("amountMaxA"),y("amountMaxB"),ve("withMetadata"),O("optionBaseFlag"),ve("baseFlag")]),$=[..._?[{pubkey:_,isSigner:!1,isWritable:!0}]:[]],Z=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:to,isSigner:!1,isWritable:!1},{pubkey:Ct,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...$],se=Buffer.alloc(V.span);V.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:B,liquidity:P,amountMaxA:L,amountMaxB:x,withMetadata:C==="create",baseFlag:!1,optionBaseFlag:0},se);let j=Buffer.from([...ze.openPosition,...se]);return new Xe({keys:Z,programId:e,data:j})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new N(e.programId),new N(e.id)],g;if(l)g=new N((await l(1))[0]);else{let x=Kr.generate();m.push(x),g=x.publicKey}let f=E.getTickArrayStartIndexByTick(i,e.config.tickSpacing),w=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=oe(d,p,f),{publicKey:k}=oe(d,p,w),{publicKey:h}=Fe(n.wallet,g,Ae),{publicKey:A}=En(g),{publicKey:B}=Qe(d,g),{publicKey:P}=wt(d,p,i,o),L=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,g,h,A,P,b,k,B,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),i,o,f,w,s,a,u,c);return{signers:m,instructions:[L],instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:b,tickArrayUpper:k,positionNftAccount:h,metadataAccount:A,personalPosition:B,protocolPosition:P}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new N(e.programId),new N(e.id)],g;if(l)g=new N((await l(1))[0]);else{let x=Kr.generate();m.push(x),g=x.publicKey}let f=E.getTickArrayStartIndexByTick(i,e.config.tickSpacing),w=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=oe(d,p,f),{publicKey:k}=oe(d,p,w),{publicKey:h}=Fe(n.wallet,g,Ae),{publicKey:A}=En(g),{publicKey:B}=Qe(d,g),{publicKey:P}=wt(d,p,i,o),L=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,g,h,A,P,b,k,B,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),i,o,f,w,c,s,a,u,ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,w])?Oe(d,p).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:b,tickArrayUpper:k,positionNftAccount:h,metadataAccount:A,personalPosition:B,protocolPosition:P},instructions:[L],signers:m,instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,b,k,h,A,B,P,L,x,C,_){let V=R([he("tickLowerIndex"),he("tickUpperIndex"),he("tickArrayLowerStartIndex"),he("tickArrayUpperStartIndex"),W("liquidity"),y("amountMaxA"),y("amountMaxB"),ve("withMetadata"),O("optionBaseFlag"),ve("baseFlag")]),$=[..._?[{pubkey:_,isSigner:!1,isWritable:!0}]:[]],Z=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:to,isSigner:!1,isWritable:!1},{pubkey:Ct,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...$],se=Buffer.alloc(V.span);V.encode({tickLowerIndex:k,tickUpperIndex:h,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:B,liquidity:new no(0),amountMaxA:L==="MintA"?x:C,amountMaxB:L==="MintA"?C:x,withMetadata:P==="create",baseFlag:L==="MintA",optionBaseFlag:1},se);let j=Buffer.from([...ze.openPosition,...se]);return new Xe({keys:Z,programId:e,data:j})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new N((await l(1))[0]);else{let x=Kr.generate();d.push(x),m=x.publicKey}let[p,g]=[new N(e.programId),new N(e.id)],f=E.getTickArrayStartIndexByTick(i,e.config.tickSpacing),w=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=oe(p,g,f),{publicKey:k}=oe(p,g,w),{publicKey:h}=Fe(n.wallet,m,Ae),{publicKey:A}=En(m),{publicKey:B}=Qe(p,m),{publicKey:P}=wt(p,g,i,o),L=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,m,h,A,P,b,k,B,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(t.mintA.address),new N(t.mintB.address),i,o,f,w,s,a,u,c,ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,w])?Oe(p,g).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:b,tickArrayUpper:k,positionNftAccount:h,metadataAccount:A,personalPosition:B,protocolPosition:P},instructions:[L],signers:d,instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=R([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:ln.programId,isSigner:!1,isWritable:!1},{pubkey:Ae,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...ze.closePosition,...u]);return new Xe({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new N(e.programId),{publicKey:s}=Fe(n.wallet,i.nftMint,Ae),{publicKey:a}=Qe(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[J.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,b,k){let h=R([W("liquidity"),y("amountMaxA"),y("amountMaxB"),O("optionBaseFlag"),ve("baseFlag")]),A=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],P=Buffer.alloc(h.span);h.encode({liquidity:f,amountMaxA:w,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},P);let L=Buffer.from([...ze.increaseLiquidity,...P]);return new Xe({keys:B,programId:e,data:L})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new N(e.programId),new N(e.id)],l=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=oe(u,c,l),{publicKey:p}=oe(u,c,m),{publicKey:g}=Fe(i.wallet,n.nftMint,Ae),{publicKey:f}=Qe(u,n.nftMint),{publicKey:w}=wt(u,c,n.tickLower,n.tickUpper),b=this.increasePositionFromLiquidityInstruction(u,i.wallet,g,f,c,w,d,p,i.tokenAccountA,i.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),o,s,a,ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Oe(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:w},signers:[],instructions:[b],instructionTypes:[J.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new N(e.programId),new N(e.id)],l=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=oe(u,c,l),{publicKey:p}=oe(u,c,m),{publicKey:g}=Fe(i.wallet,n.nftMint,Ae),{publicKey:f}=Qe(u,n.nftMint),{publicKey:w}=wt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:w},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,g,f,c,w,d,p,i.tokenAccountA,i.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),o,s,a,ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Oe(u,c).publicKey:void 0)],signers:[],instructionTypes:[J.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,b,k){let h=R([W("liquidity"),y("amountMaxA"),y("amountMaxB"),O("optionBaseFlag"),ve("baseFlag")]),A=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],P=Buffer.alloc(h.span);h.encode({liquidity:new no(0),amountMaxA:f==="MintA"?w:b,amountMaxB:f==="MintA"?b:w,baseFlag:f==="MintA",optionBaseFlag:1},P);let L=Buffer.from([...ze.increaseLiquidity,...P]);return new Xe({keys:B,programId:e,data:L})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,b,k,h){let A=R([W("liquidity"),y("amountMinA"),y("amountMinB")]),B=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[],...f.map(C=>[{pubkey:C.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.rewardMint,isSigner:!1,isWritable:!1}]).flat()],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:Pn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...B],L=Buffer.alloc(A.span);A.encode({liquidity:w,amountMinA:b,amountMinB:k},L);let x=Buffer.from([...ze.decreaseLiquidity,...L]);return new Xe({keys:P,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new N(e.programId),new N(e.id)],m=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=oe(c,l,m),{publicKey:g}=oe(c,l,d),{publicKey:f}=Fe(i.wallet,n.nftMint,u),{publicKey:w}=Qe(c,n.nftMint),{publicKey:b}=wt(c,l,n.tickLower,n.tickUpper),k=[];for(let A=0;A<e.rewardDefaultInfos.length;A++)k.push({poolRewardVault:new N(t.rewardInfos[A].vault),ownerRewardVault:i.rewardAccounts[A],rewardMint:new N(e.rewardDefaultInfos[A].mint.address)});let h=[];return h.push(this.decreaseLiquidityInstruction(c,i.wallet,f,w,l,b,p,g,i.tokenAccountA,i.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),k,o,s,a,ke.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Oe(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:w,protocolPosition:b},signers:[],instructions:h,instructionTypes:[J.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,g,f,w,b){let k=R([y("amount"),y("otherAmountThreshold"),W("sqrtPriceLimitX64"),ve("isBaseInput")]),h=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...m.map(L=>({pubkey:L,isSigner:!1,isWritable:!0}))],A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:Pn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...h],B=Buffer.alloc(k.span);k.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:w},B);let P=Buffer.from([...ze.swap,...B]);return new Xe({keys:A,programId:e,data:P})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new N(e.programId),new N(e.id)],[d,p]=[new N(t.vault.A),new N(t.vault.B)],[g,f]=[new N(e.mintA.address),new N(e.mintB.address)],w=e.mintA.address===o.toString(),b=[this.swapInstruction(l,i.wallet,m,new N(e.config.id),w?i.tokenAccountA:i.tokenAccountB,w?i.tokenAccountB:i.tokenAccountA,w?d:p,w?p:d,w?g:f,w?f:g,c,n,s,a,u,!0,Oe(l,m).publicKey)];return{signers:[],instructions:b,instructionTypes:[J.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,outputMint:o,amountOut:s,amountInMax:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new N(e.programId),new N(e.id)],[d,p]=[new N(t.vault.A),new N(t.vault.B)],[g,f]=[new N(e.mintA.address),new N(e.mintB.address)],w=e.mintA.address===o.toBase58(),b=[this.swapInstruction(l,i.wallet,m,new N(e.config.id),w?i.tokenAccountB:i.tokenAccountA,w?i.tokenAccountA:i.tokenAccountB,w?p:d,w?d:p,w?f:g,w?g:f,c,n,s,a,u,!1,Oe(l,m).publicKey)];return{signers:[],instructions:b,instructionTypes:[J.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([y("openTime"),y("endTime"),W("emissionsPerSecondX64")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:ln.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:ie(l),endTime:ie(m),emissionsPerSecondX64:d},f);let w=Buffer.from([...ze.initReward,...f]);return new Xe({keys:g,programId:e,data:w})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new N(e.programId),new N(e.id)],a=Gi(o,s,i.mint).publicKey,u=xr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new N(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[J.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=R([O("rewardIndex"),W("emissionsPerSecondX64"),y("openTime"),y("endTime")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:ie(l),endTime:ie(m)},f);let w=Buffer.from([...ze.setRewardEmissions,...f]);return new Xe({keys:g,programId:e,data:w})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new N(e.programId),new N(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,u=new N(t.rewardInfos[d].vault),c=new N(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&ro.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=xr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new N(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[J.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=R([O("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:Pn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...ze.collectReward,...l]);return new Xe({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new N(e.programId),new N(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new N(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&ro.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[J.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}};import{PublicKey as qa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ga}from"@solana/spl-token";import{PublicKey as Da}from"@solana/web3.js";import io from"bn.js";var Lr=new io(25),Vn=new io(1e4);var Wa=ue("Raydium_liquidity_serum");function oo({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=Da.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw Wa.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import Lb from"bn.js";function Dn({programId:r}){let{publicKey:e}=fe([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function xt({name:r,programId:e,marketId:t}){let{publicKey:n}=fe([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function Ua({programId:r,marketId:e}){let{publicKey:t}=fe([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function Xa({programId:r}){return fe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function so({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=xt({name:"amm_associated_seed",programId:a,marketId:t}),l=xt({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Xa({programId:a}),p=xt({name:"coin_vault_associated_seed",programId:a,marketId:t}),g=xt({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=xt({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),w=Ua({programId:a,marketId:t}),b=xt({name:"target_associated_seed",programId:a,marketId:t}),k=xt({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:h}=oo({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:g,lpVault:f,openOrders:w,targetOrders:b,withdrawQueue:k,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:h,lookupTableAccount:qa.default,configId:Dn({programId:a})}}var Nr={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},ao=r=>{let e={},t=Ga.toBase58();return Object.keys(r).map(n=>{let i=r[n],[o,s]=[i.baseMint.toBase58(),i.quoteMint.toBase58()];e[n]={id:n,version:4,status:i.status.toNumber(),programId:i.programId.toBase58(),mintA:vn({address:o,programId:t,decimals:i.baseDecimal.toNumber()}),mintB:vn({address:s,programId:t,decimals:i.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:i.poolPrice.toNumber(),mintAmountA:new S(i.mintAAmount.toString()).div(10**i.baseDecimal.toNumber()).toNumber(),mintAmountB:new S(i.mintBAmount.toString()).div(10**i.quoteDecimal.toNumber()).toNumber(),baseReserve:i.baseReserve,quoteReserve:i.quoteReserve,feeRate:new S(i.tradeFeeNumerator.toString()).div(i.tradeFeeDenominator.toString()).toNumber(),openTime:i.poolOpenTime.toString(),tvl:0,day:Nr,week:Nr,month:Nr,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:i.marketId.toBase58(),configId:Dn({programId:i.programId}).toBase58(),lpPrice:0,lpAmount:0,lpMint:vn({address:i.lpMint.toBase58(),programId:t,decimals:Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())})}}),e};import{PublicKey as uo}from"@solana/web3.js";var Ob=ue("Raydium_farm_config"),Vb=new uo("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Db=new uo("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var co={3:Cr,5:lo,6:mo};var Wn={"Standard SPL":0,"Option tokens":1},Rr={[xi.toString()]:3,[Ii.toString()]:5,[Bi.toString()]:6};var vr=R([O("instruction")]),Qa=R([O("instruction")]),Za=R([y("rewardState"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardLastUpdateTime"),y("totalReward"),y("totalRewardEmissioned"),y("rewardClaimed"),y("rewardPerSecond"),W("accRewardPerShare"),K("rewardVault"),K("rewardMint"),K("rewardSender"),y("rewardType"),q(y(),15,"padding")]),ja=R([y("state"),y("nonce"),K("lpVault"),K("rewardVault"),K(),K(),y(),y(),y("totalReward"),W("perShareReward"),y("lastSlot"),y("perSlotReward")]),$a=R([y("state"),y("nonce"),K("lpVault"),K("rewardVaultA"),y("totalRewardA"),W("perShareRewardA"),y("perSlotRewardA"),O("option"),K("rewardVaultB"),Ie(7),y("totalRewardB"),W("perShareRewardB"),y("perSlotRewardB"),y("lastSlot"),K()]),Ja=R([y(),y("state"),y("nonce"),y("validRewardTokenNum"),W("rewardMultiplier"),y("rewardPeriodMax"),y("rewardPeriodMin"),y("rewardPeriodExtend"),K("lpMint"),K("lpVault"),q(Za,5,"rewardInfos"),K("creator"),K(),q(y(),32,"padding")]),za=new Proxy(ja,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Q(G({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Ya=new Proxy($a,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Q(G({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),Ha=new Proxy(Ja,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Q(G({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return Q(G({},o),{rewardType:((s=Object.entries(Wn).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),eu=R([y("isSet"),y("rewardPerSecond"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardType")]),tu=R([O("instruction"),y("nonce"),q(eu,5,"rewardTimeInfo")]),nu=R([O("instruction"),y("rewardReopenTime"),y("rewardEndTime"),y("rewardPerSecond")]),ru=R([O("instruction"),y("isSet"),y("rewardPerSecond"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardType")]),Yb=R([y("state"),K("id"),K("owner"),y("deposited"),q(y(),1,"rewardDebts")]),Cr=R([y("state"),K("id"),K("owner"),y("deposited"),q(W(),1,"rewardDebts"),y(""),y("voteLockedBalance"),q(y(),15)]),Hb=R([y("state"),K("id"),K("owner"),y("deposited"),q(y(),2,"rewardDebts")]),lo=R([y("state"),K("id"),K("owner"),y("deposited"),q(W(),2,"rewardDebts"),q(y(),17)]),mo=R([y(),y("state"),K("id"),K("owner"),y("deposited"),q(W(),5,"rewardDebts"),q(y(),16)]),It=R([O("instruction"),y("amount")]),iu=R([K("mint"),K("grantAuthority"),y("baselineVoteWeightScaledFactor"),y("maxExtraLockupVoteWeightScaledFactor"),y("lockupSaturationSecs"),bi("digitShift"),q(O(),7,"reserved1"),q(y(),7,"reserved2")]),ou=R([Ie(8),K("governanceProgramId"),K("realm"),K("realmGoverningTokenMint"),K("realmAuthority"),q(O(),32,"reserved1"),q(iu,4,"votingMints"),Mt("timeOffset"),O("bump"),q(O(),7,"reserved2"),q(y(),11,"reserved3")]),su=R([Mt("startTime"),Mt("endTime"),O("kind"),q(O(),15,"reserved")]),au=R([q(su,1,"lockup"),y("amountDeposited_native"),y("amountInitiallyLockedNative"),ve("isUsed"),ve("allowClawback"),O("votingMintConfigIdx"),q(O(),29,"reserved")]),uu=R([Ie(8),K("voterAuthority"),K("registrar"),q(au,32,"deposits"),O("voterBump"),O("voterWweightRecordBump"),q(O(),94,"reserved")]);import ny from"bn.js";var cu=R([K("mint"),K("owner"),y("amount"),Ce("delegateOption"),K("delegate"),O("state"),Ce("isNativeOption"),y("isNative"),y("delegatedAmount"),Ce("closeAuthorityOption"),K("closeAuthority")]);var lu=ue("Raydium.farm.util");function Ot({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=fe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}function po(r){let e=co[r];return e||lu.logWithError("invalid version",r),e}import{PublicKey as Se,SystemProgram as mu,SYSVAR_RENT_PUBKEY as du,SYSVAR_CLOCK_PUBKEY as fo,TransactionInstruction as qn}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Ky,TOKEN_PROGRAM_ID as Mr,ASSOCIATED_TOKEN_PROGRAM_ID as Ly}from"@solana/spl-token";import Ry from"bn.js";var pu=ue("Raydium_farm_instruction"),Gy={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 bo(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||pu.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(vr.span);vr.encode({instruction:s},a);let u=[T({pubkey:t}),T({pubkey:n}),T({pubkey:o,isWritable:!1}),T({pubkey:mu.programId,isWritable:!1}),T({pubkey:du,isWritable:!1})];return{instruction:new qn({programId:i,keys:u,data:a}),instructionType:J.FarmV3CreateLedger}}function yo(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new Se(e.programId),new Se(e.id)],c=Ot({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(It.span);It.encode({instruction:2,amount:ie(s)},l);let m=[T({pubkey:Mr,isWritable:!1}),T({pubkey:u}),T({pubkey:new Se(t.authority),isWritable:!1}),T({pubkey:new Se(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new Se(t.rewardInfos[d].vault)})),m.push(T({pubkey:i[d]}));return new qn({programId:a,keys:m,data:l})}function go(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Se(e.programId),new Se(e.id)],l=Ot({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(It.span);It.encode({instruction:12,amount:ie(s)},m);let d=[T({pubkey:c}),T({pubkey:new Se(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new Se(t.lpVault)}),T({pubkey:i[0]}),T({pubkey:new Se(t.rewardInfos[0].vault)}),T({pubkey:fo,isWritable:!1}),T({pubkey:Mr,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:i[p]})),d.push(T({pubkey:new Se(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new qn({programId:u,keys:d,data:m})}function wo(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Se(e.programId),new Se(e.id)],l=Ot({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(It.span);It.encode({instruction:11,amount:ie(s)},m);let d=[T({pubkey:c}),T({pubkey:new Se(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new Se(t.lpVault)}),T({pubkey:i[0]}),T({pubkey:new Se(t.rewardInfos[0].vault)}),T({pubkey:fo,isWritable:!1}),T({pubkey:Mr,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new qn({programId:u,keys:d,data:m})}import Pe from"bn.js";var Er=class extends tn{constructor(t){super(t);this.stableLayout=new nn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new Pe(new S(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Si(t[o?"mintB":"mintA"]),[u,c]=[new Pe(new S(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Pe(new S(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new Pe(new S(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,S.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=Xt;s.isZero()||(d=m==="base"?Bn(s.mul(c),u):Bn(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Bn(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new qe(new Pe(1)).add(i).mul(d).quotient,w=new pe(a,d),b=new pe(a,f);return this.logDebug("anotherAmount:",w.toFixed(),"maxAnotherAmount:",b.toFixed()),{anotherAmount:w,maxAnotherAmount:b,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,poolKeys:i,amountInA:o,amountInB:s,fixedSide:a,config:u,txVersion:c,computeBudgetConfig:l}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",o,"amountInB:",s),(o.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:o.toFixed(),amountInB:s.toFixed()});let{account:m}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:p}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),[g,f]=[o.token,s.token],w=await m.getCreatedTokenAccount({mint:g.mint,associatedOnly:!1}),b=await m.getCreatedTokenAccount({mint:f.mint,associatedOnly:!1});!w&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let k=await m.getCreatedTokenAccount({mint:new Ke(n.lpMint.address)}),h=[g,f],A=[w,b],B=[o.raw,s.raw],P=o.token.mint.toBase58()===n.mintA.address?"base":"quote",L="base";["quote","base"].includes(P)||this.logAndCreateError("invalid fixedSide","fixedSide",a),P==="quote"?(h.reverse(),A.reverse(),B.reverse(),L=a==="a"?"quote":"base"):P==="base"&&(L=a==="a"?"base":"quote");let[x,C]=h,[_,V]=A,[$,Z]=B,se=i!=null?i:await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Bt=await m.handleTokenAccount({side:"in",amount:$,mint:x.mint,tokenAccount:_,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:z}=Bt,mt=Ee(Bt,["tokenAccount"]);j.addInstruction(mt);let St=await m.handleTokenAccount({side:"in",amount:Z,mint:C.mint,tokenAccount:V,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:mn}=St,dn=Ee(St,["tokenAccount"]);j.addInstruction(dn);let pn=await m.handleTokenAccount({side:"out",amount:0,mint:new Ke(n.lpMint.address),tokenAccount:k,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:Dt}=pn,Gn=Ee(pn,["tokenAccount"]);return j.addInstruction(Gn),j.addInstruction({instructions:[_i({poolInfo:n,poolKeys:se,userKeys:{baseTokenAccount:z,quoteTokenAccount:mn,lpTokenAccount:Dt,owner:this.scope.ownerPubKey},baseAmountIn:$,quoteAmountIn:Z,fixedSide:L})],instructionTypes:[n.pooltype.includes("StablePool")?J.AmmV5AddLiquidity:J.AmmV4AddLiquidity],lookupTableAddress:se.lookupTableAccount?[se.lookupTableAccount]:[]}),j.addCustomComputeBudget(l),c===0&&await j.buildV0(),j.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:i,amountIn:o,config:s,txVersion:a,computeBudgetConfig:u}=t,c=i!=null?i:await this.getAmmPoolKeys(n.id),[l,m,d]=[new Ke(n.mintA.address),new Ke(n.mintB.address),new Ke(n.lpMint.address)];this.logDebug("amountIn:",o),o.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",o.toString());let{account:p}=this.scope,g=await p.getCreatedTokenAccount({mint:d,associatedOnly:!1});g||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let f=await p.getCreatedTokenAccount({mint:l}),w=await p.getCreatedTokenAccount({mint:m}),b=this.createTxBuilder(),{bypassAssociatedCheck:k,checkCreateATAOwner:h}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:k,checkCreateATAOwner:h}),{tokenAccount:A}=x,B=Ee(x,["tokenAccount"]);b.addInstruction(B);let C=await p.handleTokenAccount({side:"out",amount:0,mint:m,tokenAccount:w,bypassAssociatedCheck:k,checkCreateATAOwner:h}),{tokenAccount:P}=C,L=Ee(C,["tokenAccount"]);return b.addInstruction(L),b.addInstruction({instructions:[kr({poolInfo:n,poolKeys:c,userKeys:{lpTokenAccount:g,baseTokenAccount:A,quoteTokenAccount:P,owner:this.scope.ownerPubKey},amountIn:o})],lookupTableAddress:c.lookupTableAccount?[c.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?J.AmmV5RemoveLiquidity:J.AmmV4RemoveLiquidity]}),b.addCustomComputeBudget(u),a===0?await b.buildV0():b.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=Vt,checkCreateATAOwner:p=!0,getEphemeralSigners:g,txVersion:f}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let w=this.createTxBuilder();w.addCustomComputeBudget(c);let b={};for(let z of this.scope.account.tokenAccountRawInfos)(b[z.accountInfo.mint.toString()]===void 0||Fe(this.scope.ownerPubKey,z.accountInfo.mint,Vt).publicKey.equals(z.pubkey))&&(b[z.accountInfo.mint.toString()]=z.pubkey);let k=b[t.lpMint.address];if(k===void 0)throw Error("find lp account error in trade accounts");let h=i.add(a!=null?a:new Pe(0)),A=t.mintA.address===xe.WSOL.mint.toString(),B=t.mintB.address===xe.WSOL.mint.toString(),{account:P,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Vt,mint:new Ke(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});if(w.addInstruction(L||{}),P===void 0)throw new Error("base token account not found");let{account:x,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Vt,mint:new Ke(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:B?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:!0,checkCreateATAOwner:p});if(w.addInstruction(C||{}),x===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=P,b[t.mintB.address]=x,s!==void 0&&!(a!=null&&a.isZero())){let z=Rr[s.programId],mt=Ot({programId:new Ke(s.programId),poolId:new Ke(s.id),owner:this.scope.ownerPubKey,version:z}),mn,dn=await this.scope.connection.getAccountInfo(mt);if(dn&&(mn=po(z).decode(dn.data)),z!==6&&!mn){let{instruction:nt,instructionType:Un}=bo({id:new Ke(s.id),programId:new Ke(s.programId),version:z,ledger:mt,owner:this.scope.ownerPubKey});w.addInstruction({instructions:[nt],instructionTypes:[Un]})}let Dt=[];for(let nt of s.rewardInfos){let Un=nt.mint.address===xe.WSOL.mint.toString();if(b[nt.mint.address])Dt.push(b[nt.mint.address]);else{let{account:_r,instructionParams:Fr}=await this.scope.account.getOrCreateTokenAccount({mint:new Ke(nt.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!Un,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});_r||this.logAndCreateError("farm reward account not found:",nt.mint.address),Fr&&w.addInstruction(Fr),Dt.push(_r)}}let Gn=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],Bt={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:Gn,lpAccount:k,rewardAccounts:Dt},St=Rr[s.programId],pn=St===6?yo(Bt):St===5?go(Bt):wo(Bt),ko={3:J.FarmV3Withdraw,5:J.FarmV5Withdraw,6:J.FarmV6Withdraw};w.addInstruction({instructions:[pn],instructionTypes:[ko[St]]})}let _=await this.getAmmPoolKeys(t.id),V=kr({poolInfo:t,poolKeys:_,userKeys:{lpTokenAccount:k,baseTokenAccount:P,quoteTokenAccount:x,owner:this.scope.ownerPubKey},amountIn:h});w.addInstruction({instructions:[V],instructionTypes:[t.pooltype.includes("StablePool")?J.AmmV5RemoveLiquidity:J.AmmV4RemoveLiquidity],lookupTableAddress:_.lookupTableAccount?[_.lookupTableAccount]:[]});let[$,Z]=t.mintA.address===n.mintA.address?[P,x]:[x,P],se=await this.scope.clmm.getClmmPoolKeys(n.id),j=await On.openPositionFromBaseInstructions(Q(G({poolInfo:n,poolKeys:se,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:$,tokenAccountB:Z},withMetadata:"create"},o),{base:u,getEphemeralSigners:g}));return w.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:se.lookupTableAccount?[se.lookupTableAccount]:[]}),f===0?w.sizeCheckBuildV0():w.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:g,computeBudgetConfig:f}){var $;let w=c.feePayer||(($=this.scope.owner)==null?void 0:$.publicKey),b=c.useSOLBalance&&i.mint.equals(ho),k=c.useSOLBalance&&o.mint.equals(ho),h=this.createTxBuilder(),{account:A,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:b?{payer:w,amount:s}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:l,checkCreateATAOwner:m});h.addInstruction(B||{});let{account:P,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:k?{payer:w,amount:a}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:l,checkCreateATAOwner:m});if(h.addInstruction(L||{}),A===void 0||P===void 0)throw Error("you don't has some token account");let x=so({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),C={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:g},{instruction:_,instructionType:V}=Fi(Q(G({},C),{userWallet:this.scope.ownerPubKey,userCoinVault:A,userPcVault:P,userLpVault:Fe(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return h.addInstruction({instructions:[_],instructionTypes:[V]}),h.addCustomComputeBudget(f),h.versionBuild({txVersion:p,extInfo:{address:C}})}async getCreatePoolFee({programId:t}){let n=Dn({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Li.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){let[a,u]=[i.toString(),o.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(u!==t.mintA.address&&u!==t.mintB.address)throw new Error("toke not match");let{baseReserve:c,quoteReserve:l}=t,m=[c,l],d=[t.mintA.decimals,t.mintB.decimals],p=a==t.mintA.address?"base":"quote";p==="quote"&&(m.reverse(),d.reverse());let[g,f]=m,[w,b]=d,k=t.version===4,h;if(k)h=new S(f.toString()).div(10**b).div(new S(g.toString()).div(10**w));else{let Z=Mi(this.stableLayout.stableModelData,c.toNumber(),l.toNumber(),!1);p==="quote"?h=new S(1e6).div(Z*1e6):h=new S(Z*1e6).div(1e6)}let A=n,B=new Pe(0),P=new Pe(0);if(!A.isZero())if(k){P=en(A.mul(Lr),Vn);let Z=A.sub(P),se=g.add(Z);B=f.mul(Z).div(se)}else{P=A.mul(new Pe(2)).div(new Pe(1e4));let Z=A.sub(P);p==="quote"?B=new Pe(Ci(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),Z.toNumber())):B=new Pe(vi(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),Z.toNumber()))}let L=new Pe(new S(B.toString()).mul(1-s).toFixed(0)),x=B,C=L,_=new S(B.toString()).div(new S(A.sub(P).toString()).toFixed(0));!A.isZero()&&!B.isZero()&&(_=new S(B.toString()).div(10**b).div(new S(A.sub(P).toString()).div(10**w)));let V=h.sub(_).div(h).mul(100);return{amountOut:x,minAmountOut:C,currentPrice:h,executionPrice:_,priceImpact:V,fee:P}}computeAmountIn({poolInfo:t,amountOut:n,mintIn:i,mintOut:o,slippage:s}){let{baseReserve:a,quoteReserve:u}=t;i.toString()!==t.mintA.address&&i.toString()!==t.mintB.address&&this.logAndCreateError("mintIn does not match pool"),o.toString()!==t.mintA.address&&o.toString()!==t.mintB.address&&this.logAndCreateError("mintOut does not match pool"),this.logDebug("baseReserve:",a.toString()),this.logDebug("quoteReserve:",u.toString());let c=i.toString()===t.mintA.address,[l,m]=c?[t.mintA,t.mintB]:[t.mintB,t.mintA];this.logDebug("currencyOut:",m.symbol||m.address),this.logDebug("amountOut:",new S(n.toString()).div(10**m.decimals).toDecimalPlaces(m.decimals).toString(),l.symbol||l.address),this.logDebug("slippage:",`${s*100}%`);let d=[a,u],p=c?"quote":"base";p==="base"&&d.reverse(),this.logDebug("output side:",p);let[g,f]=d,w=new S(f.toString()).div(10**t[c?"mintB":"mintA"].decimals).div(new S(g.toString()).div(10**t[c?"mintA":"mintB"].decimals));this.logDebug("currentPrice:",`1 ${l.symbol||l.address} \u2248 ${w.toString()} ${m.symbol||m.address}`),this.logDebug("currentPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new S(1).div(w).toString()} ${l.symbol||l.address}`);let b=new Pe(0),k=n;if(!k.isZero()){k.gt(f)&&(k=f.sub(new Pe(1)));let C=f.sub(k);b=g.mul(k).div(C).mul(Vn).div(Vn.sub(Lr))}let h=new Pe(new S(b.toString()).mul(1+s).toFixed(0)),A=b,B=h;this.logDebug("amountIn:",new S(A.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString()),this.logDebug("maxAmountIn:",new S(B.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString());let P=null;!b.isZero()&&!k.isZero()&&(P=new S(k.toString()).div(10**m.decimals).div(new S(b.toString()).div(10**l.decimals)),this.logDebug("executionPrice:",`1 ${m.symbol||m.address} \u2248 ${P.toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`),this.logDebug("executionPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new S(1).div(P).toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`));let L=w.mul(A.toString()),x=L.sub(n.toString()).abs().div(L);return this.logDebug("priceImpact:",`${x.toString()}%`),{amountIn:A,maxAmountIn:B,currentPrice:w,executionPrice:P,priceImpact:x}}async swap({poolInfo:t,poolKeys:n,amountIn:i,amountOut:o,inputMint:s,fixedSide:a,txVersion:u,config:c,computeBudgetConfig:l}){let m=this.createTxBuilder(),{associatedOnly:d=!0,inputUseSolBalance:p=!0,outputUseSolBalance:g=!0}=c||{},[f,w]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],b=p&&f.address===Nt.toBase58(),k=g&&w.address===Nt.toBase58(),{account:h,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Vt,mint:new Ke(f.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!b,notUseTokenAccount:b,associatedOnly:d});m.addInstruction(A||{}),h||this.logAndCreateError("input token account not found",{token:f.symbol||f.address,tokenAccountIn:h,inputTokenUseSolBalance:b,associatedOnly:d});let{account:B,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Vt,mint:new Ke(w.address),owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:d});m.addInstruction(P||{}),B===void 0&&this.logAndCreateError("output token account not found",{token:w.symbol||w.address,tokenAccountOut:B,outputTokenUseSolBalance:k,associatedOnly:d});let L=n||await this.getAmmPoolKeys(t.id),x=4;return t.pooltype.includes("StablePool")&&(x=5),m.addInstruction({instructions:[Oi({version:x,poolKeys:L,userKeys:{tokenAccountIn:h,tokenAccountOut:B,owner:this.scope.ownerPubKey},amountIn:i,amountOut:o,fixedSide:a})],instructionTypes:[x===4?J.AmmV4SwapBaseIn:J.AmmV5SwapBaseIn]}),m.addCustomComputeBudget(l),m.versionBuild({txVersion:u})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let i=await bt(this.scope.connection,t.map(l=>({pubkey:new Ke(l)})),n),o={},s=[];for(let l=0;l<t.length;l++){let m=i[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=Ki.decode(m.accountInfo.data);o[String(t[l])]=Q(G({},d),{programId:m.accountInfo.owner}),s.push(d.baseVault,d.quoteVault)}let a={},u=await bt(this.scope.connection,s.map(l=>({pubkey:new Ke(l)})),n);for(let l=0;l<s.length;l++){let m=u[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+s[l]);a[String(s[l])]=new Pe(fu.decode(m.data).amount.toString())}let c={};for(let[l,m]of Object.entries(o)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);c[l]=Q(G({},m),{baseReserve:d,mintAAmount:a[m.baseVault.toString()],mintBAmount:a[m.quoteVault.toString()],quoteReserve:p,poolPrice:new S(p.toString()).div(new S(10).pow(m.quoteDecimal.toString())).div(new S(d.toString()).div(new S(10).pow(m.baseDecimal.toString())))})}return c}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),i=ao({[t]:n}),o=i[t],s=await this.scope.tradeV2.computePoolToPoolKeys({pools:[i[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:o,poolKeys:s[0]}}};export{Er as default};
//# sourceMappingURL=liquidity.mjs.map