UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 95.1 kB
var Qn=Object.defineProperty,$n=Object.defineProperties;var er=Object.getOwnPropertyDescriptors;var sn=Object.getOwnPropertySymbols;var tr=Object.prototype.hasOwnProperty,nr=Object.prototype.propertyIsEnumerable;var an=(r,e,t)=>e in r?Qn(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,U=(r,e)=>{for(var t in e||(e={}))tr.call(e,t)&&an(r,t,e[t]);if(sn)for(var t of sn(e))nr.call(e,t)&&an(r,t,e[t]);return r},Z=(r,e)=>$n(r,er(e));import L from"bn.js";var je=9e15,Ke=1e9,Lt="0123456789abcdef",gt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",ht="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Rt={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-je,maxE:je,crypto:!1},ln,Le,I=!0,yt="[DecimalError] ",Oe=yt+"Invalid argument: ",dn=yt+"Precision limit exceeded",fn=yt+"crypto unavailable",pn="[object Decimal]",ae=Math.floor,ne=Math.pow,rr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ir=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,or=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,gn=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Pe=1e7,k=7,sr=9007199254740991,ar=gt.length-1,Et=ht.length-1,h={toStringTag:pn};h.absoluteValue=h.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),A(r)};h.ceil=function(){return A(new this.constructor(this),this.e+1,2)};h.clampedTo=h.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(Oe+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};h.comparedTo=h.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};h.cosine=h.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())+k,n.rounding=1,t=ur(n,Tn(n,t)),n.precision=r,n.rounding=e,A(Le==2||Le==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};h.cubeRoot=h.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,m=this,l=m.constructor;if(!m.isFinite()||m.isZero())return new l(m);for(I=!1,o=m.s*ne(m.s*m,1/3),!o||Math.abs(o)==1/0?(t=oe(m.d),r=m.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ne(t,1/3),r=ae((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 l(t),n.s=m.s):n=new l(o.toString()),s=(r=l.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(m),n=V(c.plus(m).times(a),c.plus(u),s+2,1),oe(a.d).slice(0,s)===(t=oe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(A(a,r+1,0),a.times(a).times(a).eq(m))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(A(n,r+1,1),e=!n.times(n).times(n).eq(m));break}return I=!0,A(n,r,l.rounding,e)};h.decimalPlaces=h.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-ae(this.e/k))*k,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};h.dividedBy=h.div=function(r){return V(this,new this.constructor(r))};h.dividedToIntegerBy=h.divToInt=function(r){var e=this,t=e.constructor;return A(V(e,new t(r),0,1,1),t.precision,t.rounding)};h.equals=h.eq=function(r){return this.cmp(r)===0};h.floor=function(){return A(new this.constructor(this),this.e+1,3)};h.greaterThan=h.gt=function(r){return this.cmp(r)>0};h.greaterThanOrEqualTo=h.gte=function(r){var e=this.cmp(r);return e==1||e===0};h.hyperbolicCosine=h.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/Tt(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=Je(s,1,o.times(e),new s(1),!0);for(var u,c=r,m=new s(8);c--;)u=o.times(o),o=a.minus(u.times(m.minus(u.times(m))));return A(o,s.precision=t,s.rounding=n,!0)};h.hyperbolicSine=h.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=Je(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/Tt(5,r)),i=Je(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,A(i,e,t,!0)};h.hyperbolicTangent=h.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,V(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};h.inverseCosine=h.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()?Ae(t,i,o):new t(0):new t(NaN):e.isZero()?Ae(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Ae(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};h.inverseHyperbolicCosine=h.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,I=!1,t=t.times(t).minus(1).sqrt().plus(t),I=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};h.inverseHyperbolicSine=h.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,I=!1,t=t.times(t).plus(1).sqrt().plus(t),I=!0,n.precision=r,n.rounding=e,t.ln())};h.inverseHyperbolicTangent=h.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?A(new o(i),r,e,!0):(o.precision=t=n-i.e,i=V(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)};h.inverseSine=h.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=Ae(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)))};h.inverseTangent=h.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,m=c.constructor,l=m.precision,d=m.rounding;if(c.isFinite()){if(c.isZero())return new m(c);if(c.abs().eq(1)&&l+4<=Et)return s=Ae(m,l+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new m(NaN);if(l+4<=Et)return s=Ae(m,l+4,d).times(.5),s.s=c.s,s}for(m.precision=a=l+10,m.rounding=1,t=Math.min(28,a/k+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(I=!1,e=Math.ceil(a/k),n=1,u=c.times(c),s=new m(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)),I=!0,A(s,m.precision=l,m.rounding=d,!0)};h.isFinite=function(){return!!this.d};h.isInteger=h.isInt=function(){return!!this.d&&ae(this.e/k)>this.d.length-2};h.isNaN=function(){return!this.s};h.isNegative=h.isNeg=function(){return this.s<0};h.isPositive=h.isPos=function(){return this.s>0};h.isZero=function(){return!!this.d&&this.d[0]===0};h.lessThan=h.lt=function(r){return this.cmp(r)<0};h.lessThanOrEqualTo=h.lte=function(r){return this.cmp(r)<1};h.logarithm=h.log=function(r){var e,t,n,i,o,s,a,u,c=this,m=c.constructor,l=m.precision,d=m.rounding,f=5;if(r==null)r=new m(10),e=!0;else{if(r=new m(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new m(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new m(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(I=!1,a=l+f,s=De(c,a),n=e?bt(m,a+10):De(r,a),u=V(s,n,a,1),et(u.d,i=l,d))do if(a+=10,s=De(c,a),n=e?bt(m,a+10):De(r,a),u=V(s,n,a,1),!o){+oe(u.d).slice(i+1,i+15)+1==1e14&&(u=A(u,l+1,0));break}while(et(u.d,i+=10,d));return I=!0,A(u,l,d)};h.minus=h.sub=function(r){var e,t,n,i,o,s,a,u,c,m,l,d,f=this,b=f.constructor;if(r=new b(r),!f.d||!r.d)return!f.s||!r.s?r=new b(NaN):f.d?r.s=-r.s:r=new b(r.d||f.s!==r.s?f:NaN),r;if(f.s!=r.s)return r.s=-r.s,f.plus(r);if(c=f.d,d=r.d,a=b.precision,u=b.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new b(f);else return new b(u===3?-0:0);return I?A(r,a,u):r}if(t=ae(r.e/k),m=ae(f.e/k),c=c.slice(),o=m-t,o){for(l=o<0,l?(e=c,o=-o,s=d.length):(e=d,t=m,s=c.length),n=Math.max(Math.ceil(a/k),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,l=n<s,l&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){l=c[n]<d[n];break}o=0}for(l&&(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]=Pe-1;--c[i],c[n]+=Pe}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=wt(c,t),I?A(r,a,u):r):new b(u===3?-0:0)};h.modulo=h.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]?A(new n(t),n.precision,n.rounding):(I=!1,n.modulo==9?(e=V(t,r.abs(),0,3,1),e.s*=r.s):e=V(t,r,0,n.modulo,1),e=e.times(r),I=!0,t.minus(e))};h.naturalExponential=h.exp=function(){return _t(this)};h.naturalLogarithm=h.ln=function(){return De(this)};h.negated=h.neg=function(){var r=new this.constructor(this);return r.s=-r.s,A(r)};h.plus=h.add=function(r){var e,t,n,i,o,s,a,u,c,m,l=this,d=l.constructor;if(r=new d(r),!l.d||!r.d)return!l.s||!r.s?r=new d(NaN):l.d||(r=new d(r.d||l.s===r.s?l:NaN)),r;if(l.s!=r.s)return r.s=-r.s,l.minus(r);if(c=l.d,m=r.d,a=d.precision,u=d.rounding,!c[0]||!m[0])return m[0]||(r=new d(l)),I?A(r,a,u):r;if(o=ae(l.e/k),n=ae(r.e/k),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=m.length):(t=m,n=o,s=c.length),o=Math.ceil(a/k),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=m.length,s-i<0&&(i=s,t=m,m=c,c=t),e=0;i;)e=(c[--i]=c[i]+m[i]+e)/Pe|0,c[i]%=Pe;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=wt(c,n),I?A(r,a,u):r};h.precision=h.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Oe+r);return t.d?(e=hn(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};h.round=function(){var r=this,e=r.constructor;return A(new e(r),r.e+1,e.rounding)};h.sine=h.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())+k,n.rounding=1,t=mr(n,Tn(n,t)),n.precision=r,n.rounding=e,A(Le>2?t.neg():t,r,e,!0)):new n(NaN)};h.squareRoot=h.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,m=s.constructor;if(c!==1||!a||!a[0])return new m(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(I=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=oe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=ae((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 m(e)):n=new m(c.toString()),t=(u=m.precision)+3;;)if(o=n,n=o.plus(V(s,o,t+2,1)).times(.5),oe(o.d).slice(0,t)===(e=oe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(A(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")&&(A(n,u+1,1),r=!n.times(n).eq(s));break}return I=!0,A(n,u,m.rounding,r)};h.tangent=h.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=V(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,A(Le==2||Le==4?t.neg():t,r,e,!0)):new n(NaN)};h.times=h.mul=function(r){var e,t,n,i,o,s,a,u,c,m=this,l=m.constructor,d=m.d,f=(r=new l(r)).d;if(r.s*=m.s,!d||!d[0]||!f||!f[0])return new l(!r.s||d&&!d[0]&&!f||f&&!f[0]&&!d?NaN:!d||!f?r.s/0:r.s*0);for(t=ae(m.e/k)+ae(r.e/k),u=d.length,c=f.length,u<c&&(o=d,d=f,f=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]+f[n]*d[i-n-1]+e,o[i--]=a%Pe|0,e=a/Pe|0;o[i]=(o[i]+e)%Pe|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=wt(o,t),I?A(r,l.precision,l.rounding):r};h.toBinary=function(r,e){return Mt(this,2,r,e)};h.toDecimalPlaces=h.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(pe(r,0,Ke),e===void 0?e=n.rounding:pe(e,0,8),A(t,r+t.e+1,e))};h.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ne(n,!0):(pe(r,0,Ke),e===void 0?e=i.rounding:pe(e,0,8),n=A(new i(n),r+1,e),t=Ne(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};h.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=Ne(i):(pe(r,0,Ke),e===void 0?e=o.rounding:pe(e,0,8),n=A(new o(i),r+i.e+1,e),t=Ne(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};h.toFraction=function(r){var e,t,n,i,o,s,a,u,c,m,l,d,f=this,b=f.d,p=f.constructor;if(!b)return new p(f);if(c=t=new p(1),n=u=new p(0),e=new p(n),o=e.e=hn(b)-f.e-1,s=o%k,e.d[0]=ne(10,s<0?k+s:s),r==null)r=o>0?e:c;else{if(a=new p(r),!a.isInt()||a.lt(c))throw Error(Oe+a);r=a.gt(e)?o>0?e:c:a}for(I=!1,a=new p(oe(b)),m=p.precision,p.precision=o=b.length*k*2;l=V(a,e,0,1,1),i=t.plus(l.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(l.times(i)),u=i,i=e,e=a.minus(l.times(i)),a=i;return i=V(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=f.s,d=V(c,n,o,1).minus(f).abs().cmp(V(u,t,o,1).minus(f).abs())<1?[c,n]:[u,t],p.precision=m,I=!0,d};h.toHexadecimal=h.toHex=function(r,e){return Mt(this,16,r,e)};h.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:pe(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]?(I=!1,t=V(t,r,0,e,1).times(r),I=!0,A(t)):(r.s=t.s,t=r),t};h.toNumber=function(){return+this};h.toOctal=function(r,e){return Mt(this,8,r,e)};h.toPower=h.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(ne(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return A(a,n,o);if(e=ae(r.e/k),e>=r.d.length-1&&(t=c<0?-c:c)<=sr)return i=bn(u,a,t,n),r.s<0?new u(1).div(i):A(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=ne(+a,c),e=t==0||!isFinite(t)?ae(c*(Math.log("0."+oe(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):(I=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=_t(r.times(De(a,n+t)),n),i.d&&(i=A(i,n+5,1),et(i.d,n,o)&&(e=n+10,i=A(_t(r.times(De(a,e+t)),e),e+5,1),+oe(i.d).slice(n+1,n+15)+1==1e14&&(i=A(i,n+1,0)))),i.s=s,I=!0,u.rounding=o,A(i,n,o))};h.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ne(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(pe(r,1,Ke),e===void 0?e=i.rounding:pe(e,0,8),n=A(new i(n),r,e),t=Ne(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};h.toSignificantDigits=h.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(pe(r,1,Ke),e===void 0?e=n.rounding:pe(e,0,8)),A(new n(t),r,e)};h.toString=function(){var r=this,e=r.constructor,t=Ne(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};h.truncated=h.trunc=function(){return A(new this.constructor(this),this.e+1,1)};h.valueOf=h.toJSON=function(){var r=this,e=r.constructor,t=Ne(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function oe(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=k-n.length,t&&(o+=ve(t)),o+=n;s=r[e],n=s+"",t=k-n.length,t&&(o+=ve(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function pe(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Oe+r)}function et(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=k,i=0):(i=Math.ceil((e+1)/k),e%=k),o=ne(10,k-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)==ne(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)==ne(10,e-3)-1,s}function pt(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]+=Lt.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 ur(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Tt(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=Je(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 V=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,m,l,d,f,b,p,y,g,B,w,_,X,T,Q,K,ee,$,F,fe,se=n.constructor,Me=n.s==i.s?1:-1,te=n.d,q=i.d;if(!te||!te[0]||!q||!q[0])return new se(!n.s||!i.s||(te?q&&te[0]==q[0]:!q)?NaN:te&&te[0]==0||!q?Me*0:Me/0);for(u?(f=1,m=n.e-i.e):(u=Pe,f=k,m=ae(n.e/f)-ae(i.e/f)),F=q.length,ee=te.length,g=new se(Me),B=g.d=[],l=0;q[l]==(te[l]||0);l++);if(q[l]>(te[l]||0)&&m--,o==null?(T=o=se.precision,s=se.rounding):a?T=o+(n.e-i.e)+1:T=o,T<0)B.push(1),b=!0;else{if(T=T/f+2|0,l=0,F==1){for(d=0,q=q[0],T++;(l<ee||d)&&T--;l++)Q=d*u+(te[l]||0),B[l]=Q/q|0,d=Q%q|0;b=d||l<ee}else{for(d=u/(q[0]+1)|0,d>1&&(q=r(q,d,u),te=r(te,d,u),F=q.length,ee=te.length),K=F,w=te.slice(0,F),_=w.length;_<F;)w[_++]=0;fe=q.slice(),fe.unshift(0),$=q[0],q[1]>=u/2&&++$;do d=0,c=e(q,w,F,_),c<0?(X=w[0],F!=_&&(X=X*u+(w[1]||0)),d=X/$|0,d>1?(d>=u&&(d=u-1),p=r(q,d,u),y=p.length,_=w.length,c=e(p,w,y,_),c==1&&(d--,t(p,F<y?fe:q,y,u))):(d==0&&(c=d=1),p=q.slice()),y=p.length,y<_&&p.unshift(0),t(w,p,_,u),c==-1&&(_=w.length,c=e(q,w,F,_),c<1&&(d++,t(w,F<_?fe:q,_,u))),_=w.length):c===0&&(d++,w=[0]),B[l++]=d,c&&w[0]?w[_++]=te[K]||0:(w=[te[K]],_=1);while((K++<ee||w[0]!==void 0)&&T--);b=w[0]!==void 0}B[0]||B.shift()}if(f==1)g.e=m,ln=b;else{for(l=1,d=B[0];d>=10;d/=10)l++;g.e=l+m*f-1,A(g,a?o+g.e+1:o,s,b)}return g}}();function A(r,e,t,n){var i,o,s,a,u,c,m,l,d,f=r.constructor;e:if(e!=null){if(l=r.d,!l)return r;for(i=1,a=l[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=k,s=e,m=l[d=0],u=m/ne(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/k),a=l.length,d>=a)if(n){for(;a++<=d;)l.push(0);m=u=0,i=1,o%=k,s=o-k+1}else break e;else{for(m=a=l[d],i=1;a>=10;a/=10)i++;o%=k,s=o-k+i,u=s<0?0:m/ne(10,i-s-1)%10|0}if(n=n||e<0||l[d+1]!==void 0||(s<0?m:m%ne(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?m/ne(10,i-s):0:l[d-1])%10&1||t==(r.s<0?8:7)),e<1||!l[0])return l.length=0,c?(e-=r.e+1,l[0]=ne(10,(k-e%k)%k),r.e=-e||0):l[0]=r.e=0,r;if(o==0?(l.length=d,a=1,d--):(l.length=d+1,a=ne(10,k-o),l[d]=s>0?(m/ne(10,i-s)%ne(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=l[0];s>=10;s/=10)o++;for(s=l[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,l[0]==Pe&&(l[0]=1));break}else{if(l[d]+=a,l[d]!=Pe)break;l[d--]=0,a=1}for(o=l.length;l[--o]===0;)l.pop()}return I&&(r.e>f.maxE?(r.d=null,r.e=NaN):r.e<f.minE&&(r.e=0,r.d=[0])),r}function Ne(r,e,t){if(!r.isFinite())return wn(r);var n,i=r.e,o=oe(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+ve(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+ve(-i-1)+o,t&&(n=t-s)>0&&(o+=ve(n))):i>=s?(o+=ve(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+ve(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=ve(n))),o}function wt(r,e){var t=r[0];for(e*=k;t>=10;t/=10)e++;return e}function bt(r,e,t){if(e>ar)throw I=!0,t&&(r.precision=t),Error(dn);return A(new r(gt),e,1,!0)}function Ae(r,e,t){if(e>Et)throw Error(dn);return A(new r(ht),e,t,!0)}function hn(r){var e=r.length-1,t=e*k+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 ve(r){for(var e="";r--;)e+="0";return e}function bn(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/k+4);for(I=!1;;){if(t%2&&(o=o.times(e),cn(o.d,s)&&(i=!0)),t=ae(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),cn(e.d,s)}return I=!0,o}function un(r){return r.d[r.d.length-1]&1}function yn(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 _t(r,e){var t,n,i,o,s,a,u,c=0,m=0,l=0,d=r.constructor,f=d.rounding,b=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?(I=!1,u=b):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),l+=5;for(n=Math.log(ne(2,l))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=A(o.times(r),u,1),t=t.times(++m),a=s.plus(V(o,t,u,1)),oe(a.d).slice(0,u)===oe(s.d).slice(0,u)){for(i=l;i--;)s=A(s.times(s),u,1);if(e==null)if(c<3&&et(s.d,u-n,f,c))d.precision=u+=10,t=o=a=new d(1),m=0,c++;else return A(s,d.precision=b,f,I=!0);else return d.precision=b,s}s=a}}function De(r,e){var t,n,i,o,s,a,u,c,m,l,d,f=1,b=10,p=r,y=p.d,g=p.constructor,B=g.rounding,w=g.precision;if(p.s<0||!y||!y[0]||!p.e&&y[0]==1&&y.length==1)return new g(y&&!y[0]?-1/0:p.s!=1?NaN:y?0:p);if(e==null?(I=!1,m=w):m=e,g.precision=m+=b,t=oe(y),n=t.charAt(0),Math.abs(o=p.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)p=p.times(r),t=oe(p.d),n=t.charAt(0),f++;o=p.e,n>1?(p=new g("0."+t),o++):p=new g(n+"."+t.slice(1))}else return c=bt(g,m+2,w).times(o+""),p=De(new g(n+"."+t.slice(1)),m-b).plus(c),g.precision=w,e==null?A(p,w,B,I=!0):p;for(l=p,u=s=p=V(p.minus(1),p.plus(1),m,1),d=A(p.times(p),m,1),i=3;;){if(s=A(s.times(d),m,1),c=u.plus(V(s,new g(i),m,1)),oe(c.d).slice(0,m)===oe(u.d).slice(0,m))if(u=u.times(2),o!==0&&(u=u.plus(bt(g,m+2,w).times(o+""))),u=V(u,new g(f),m,1),e==null)if(et(u.d,m-b,B,a))g.precision=m+=b,c=s=p=V(l.minus(1),l.plus(1),m,1),d=A(p.times(p),m,1),i=a=1;else return A(u,g.precision=w,B,I=!0);else return g.precision=w,u;u=c,i+=2}}function wn(r){return String(r.s*r.s/0)}function Ft(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)%k,t<0&&(n+=k),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=k;n<i;)r.d.push(+e.slice(n,n+=k));e=e.slice(n),n=k-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),I&&(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 cr(r,e){var t,n,i,o,s,a,u,c,m;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),gn.test(e))return Ft(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(ir.test(e))t=16,e=e.toLowerCase();else if(rr.test(e))t=2;else if(or.test(e))t=8;else throw Error(Oe+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=bn(n,new n(t),o,o*2)),c=pt(e,t,Pe),m=c.length-1,o=m;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=wt(c,m),r.d=c,I=!1,s&&(r=V(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?ne(2,u):tt.pow(2,u))),I=!0,r)}function mr(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Je(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Tt(5,t)),e=Je(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 Je(r,e,t,n,i){var o,s,a,u,c=1,m=r.precision,l=Math.ceil(m/k);for(I=!1,u=t.times(t),a=new r(n);;){if(s=V(a.times(u),new r(e++*e++),m,1),a=i?n.plus(s):n.minus(s),n=V(s.times(u),new r(e++*e++),m,1),s=a.plus(n),s.d[l]!==void 0){for(o=l;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return I=!0,s.d.length=l+1,s}function Tt(r,e){for(var t=r;--e;)t*=r;return t}function Tn(r,e){var t,n=e.s<0,i=Ae(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Le=n?4:1,e;if(t=e.divToInt(i),t.isZero())Le=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Le=un(t)?n?2:3:n?4:1,e;Le=un(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Mt(r,e,t,n){var i,o,s,a,u,c,m,l,d,f=r.constructor,b=t!==void 0;if(b?(pe(t,1,Ke),n===void 0?n=f.rounding:pe(n,0,8)):(t=f.precision,n=f.rounding),!r.isFinite())m=wn(r);else{for(m=Ne(r),s=m.indexOf("."),b?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(m=m.replace(".",""),d=new f(1),d.e=m.length-s,d.d=pt(Ne(d),10,i),d.e=d.d.length),l=pt(m,10,i),o=u=l.length;l[--u]==0;)l.pop();if(!l[0])m=b?"0p+0":"0";else{if(s<0?o--:(r=new f(r),r.d=l,r.e=o,r=V(r,d,t,n,0,i),l=r.d,o=r.e,c=ln),s=l[t],a=i/2,c=c||l[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&&l[t-1]&1||n===(r.s<0?8:7)),l.length=t,c)for(;++l[--t]>i-1;)l[t]=0,t||(++o,l.unshift(1));for(u=l.length;!l[u-1];--u);for(s=0,m="";s<u;s++)m+=Lt.charAt(l[s]);if(b){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)m+="0";for(l=pt(m,i,e),u=l.length;!l[u-1];--u);for(s=1,m="1.";s<u;s++)m+=Lt.charAt(l[s])}else m=m.charAt(0)+"."+m.slice(1);m=m+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)m="0"+m;m="0."+m}else if(++o>u)for(o-=u;o--;)m+="0";else o<u&&(m=m.slice(0,o)+"."+m.slice(o))}m=(e==16?"0x":e==2?"0b":e==8?"0o":"")+m}return r.s<0?"-"+m:m}function cn(r,e){if(r.length>e)return r.length=e,!0}function lr(r){return new this(r).abs()}function dr(r){return new this(r).acos()}function fr(r){return new this(r).acosh()}function pr(r,e){return new this(r).plus(e)}function gr(r){return new this(r).asin()}function hr(r){return new this(r).asinh()}function br(r){return new this(r).atan()}function yr(r){return new this(r).atanh()}function wr(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=Ae(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Ae(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Ae(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(V(r,e,o,1)),e=Ae(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(V(r,e,o,1)),t}function Tr(r){return new this(r).cbrt()}function xr(r){return A(r=new this(r),r.e+1,2)}function Ar(r,e,t){return new this(r).clamp(e,t)}function Pr(r){if(!r||typeof r!="object")throw Error(yt+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Ke,"rounding",0,8,"toExpNeg",-je,0,"toExpPos",0,je,"maxE",0,je,"minE",-je,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Rt[t]),(n=r[t])!==void 0)if(ae(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Oe+t+": "+n);if(t="crypto",i&&(this[t]=Rt[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(fn);else this[t]=!1;else throw Error(Oe+t+": "+n);return this}function kr(r){return new this(r).cos()}function Br(r){return new this(r).cosh()}function xn(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,mn(o)){c.s=o.s,I?!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++;I?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 Ft(c,o.toString())}else if(u!=="string")throw Error(Oe+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),gn.test(o)?Ft(c,o):cr(c,o)}if(i.prototype=h,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=Pr,i.clone=xn,i.isDecimal=mn,i.abs=lr,i.acos=dr,i.acosh=fr,i.add=pr,i.asin=gr,i.asinh=hr,i.atan=br,i.atanh=yr,i.atan2=wr,i.cbrt=Tr,i.ceil=xr,i.clamp=Ar,i.cos=kr,i.cosh=Br,i.div=Ir,i.exp=Nr,i.floor=Sr,i.hypot=Cr,i.ln=Lr,i.log=Rr,i.log10=_r,i.log2=Er,i.max=Fr,i.min=Mr,i.mod=vr,i.mul=Dr,i.pow=Or,i.random=Kr,i.round=qr,i.sign=Gr,i.sin=Vr,i.sinh=Ur,i.sqrt=Wr,i.sub=Xr,i.sum=Hr,i.tan=zr,i.tanh=Zr,i.trunc=Yr,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 Ir(r,e){return new this(r).div(e)}function Nr(r){return new this(r).exp()}function Sr(r){return A(r=new this(r),r.e+1,3)}function Cr(){var r,e,t=new this(0);for(I=!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 I=!0,new this(1/0);t=e}return I=!0,t.sqrt()}function mn(r){return r instanceof tt||r&&r.toStringTag===pn||!1}function Lr(r){return new this(r).ln()}function Rr(r,e){return new this(r).log(e)}function Er(r){return new this(r).log(2)}function _r(r){return new this(r).log(10)}function Fr(){return yn(this,arguments,"lt")}function Mr(){return yn(this,arguments,"gt")}function vr(r,e){return new this(r).mod(e)}function Dr(r,e){return new this(r).mul(e)}function Or(r,e){return new this(r).pow(e)}function Kr(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:pe(r,1,Ke),n=Math.ceil(r/k),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(fn);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=k,n&&r&&(i=ne(10,k-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-=k)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<k&&(t-=k-n)}return s.e=t,s.d=a,s}function qr(r){return A(r=new this(r),r.e+1,this.rounding)}function Gr(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Vr(r){return new this(r).sin()}function Ur(r){return new this(r).sinh()}function Wr(r){return new this(r).sqrt()}function Xr(r,e){return new this(r).sub(e)}function Hr(){var r=0,e=arguments,t=new this(e[r]);for(I=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return I=!0,A(t,this.precision,this.rounding)}function zr(r){return new this(r).tan()}function Zr(r){return new this(r).tanh()}function Yr(r){return A(r=new this(r),r.e+1,1)}h[Symbol.for("nodejs.util.inspect.custom")]=h.toString;h[Symbol.toStringTag]="Decimal";var tt=h.constructor=xn(Rt);gt=new tt(gt);ht=new tt(ht);var x=tt;import ke from"bn.js";var nt=1e4;function j(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=Z(U({},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 ke(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===nt){let u=new ke(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=vt(r.mul(new ke(nt)),new ke(nt-o.transferFeeBasisPoints)),c=new ke(o.maximumFee.toString()),m=u.sub(r).gt(c)?r.add(c):u,l=vt(m.mul(new ke(o.transferFeeBasisPoints)),new ke(nt)),d=l.gt(s)?s:l;return{amount:m,fee:d,expirationTime:a}}else{let u=vt(r.mul(new ke(o.transferFeeBasisPoints)),new ke(nt)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function qe(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function vt(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new ke(0))?t.add(new ke(1)):t}import xe from"bn.js";var J=new xe(0),Se=new xe(1),Re=new xe(-1),he=new xe(1).shln(64),xt=new xe(1).shln(128),Dt=he.sub(Se),rt=64,An=xt.subn(1),ue=-443636,me=-ue,We=new xe("4295048016"),Xe=new xe("79226673521066979257578248091"),Xi=new xe("4295048017"),Hi=new xe("79226673521066979257578248090"),Pn=16,kn="59543866431248",Bn="184467440737095516",In="15793534762490258745",At=new xe(10).pow(new xe(6));var zi=new xe("18446744073700000000");import{PublicKey as Qr}from"@solana/web3.js";import{get as Nn,set as jr}from"lodash";var Ot=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}},Sn={},Jr={};function be(r){let e=Nn(Sn,r);if(!e){let t=Nn(Jr,r);e=new Ot({name:r,logLevel:t}),jr(Sn,r,e)}return e}import{MINT_SIZE as io,TOKEN_PROGRAM_ID as oo,getTransferFeeConfig as so,unpackMint as ao}from"@solana/spl-token";var Kt=be("Raydium_accountInfo_util");async function Ge(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}=U({batchRequest:!1},t),s=qt(e,o),a=new Array(s.length).fill([]);if(n){let u=s.map(l=>{let d=r._buildArgs([l.map(f=>f.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=qt(u,10);a=(await(await Promise.all(c.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Kt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(d=>{if(d){let{data:f,executable:b,lamports:p,owner:y,rentEpoch:g}=d;return f.length!==2&&f[1]!=="base64"&&Kt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(f[0],"base64"),executable:b,lamports:p,owner:new Qr(y),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&Kt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function Gt(r,e,t){let n=await Ge(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>Z(U({},i),{accountInfo:n[o]}))}import _e from"bn.js";import si from"big.js";import It from"bn.js";import $r from"toformat";var ei=$r,it=ei;import Bt from"big.js";import ni from"bn.js";import ri from"decimal.js-light";import ot from"bn.js";var Cn=9007199254740991;function ye(r){let e=be("Raydium_parseBigNumberish");if(r instanceof ot)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new ot(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Cn||r<=-Cn)&&e.logWithError(`BigNumberish number overflow: ${r}`),new ot(String(r))):typeof r=="bigint"?new ot(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new ot(0))}var kt=be("module/fraction"),Ut=it(Bt),st=it(ri),ii={[0]:st.ROUND_DOWN,[1]:st.ROUND_HALF_UP,[2]:st.ROUND_UP},oi={[0]:Bt.roundDown,[1]:Bt.roundHalfUp,[2]:Bt.roundUp},O=class{constructor(e,t=new ni(1)){this.numerator=ye(e),this.denominator=ye(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new O(this.denominator,this.numerator)}add(e){let t=e instanceof O?e:new O(ye(e));return this.denominator.eq(t.denominator)?new O(this.numerator.add(t.numerator),this.denominator):new O(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof O?e:new O(ye(e));return this.denominator.eq(t.denominator)?new O(this.numerator.sub(t.numerator),this.denominator):new O(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof O?e:new O(ye(e));return new O(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof O?e:new O(ye(e));return new O(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||kt.logWithError(`${e} is not an integer.`),e<=0&&kt.logWithError(`${e} is not positive.`),st.set({precision:e+1,rounding:ii[n]});let i=new st(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)||kt.logWithError(`${e} is not an integer.`),e<0&&kt.logWithError(`${e} is negative.`),Ut.DP=e,Ut.RM=oi[n]||1,new Ut(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ai=be("Raydium_amount"),Ln=it(si);function ui(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")):ai.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var ce=class extends O{constructor(t,n,i=!0,o){let s=new It(0),a=Wt.pow(new It(t.decimals));if(i)s=ye(n);else{let u=new It(0),c=new It(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[m,l]=ui(n.toString(),t.decimals);u=ye(m),c=ye(l)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=be(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 ce(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ce(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 Ln.DP=this.token.decimals,new Ln(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as ci}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Rn}from"@solana/spl-token";var En={chainId:101,address:ci.default.toBase58(),programId:Rn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},He={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Rn.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as zt}from"@solana/web3.js";import{PublicKey as H,SystemProgram as _n,SYSVAR_RENT_PUBKEY as mi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as li}from"@solana/spl-token";function Xt({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var qo=[Xt({pubkey:li,isWritable:!1}),Xt({pubkey:_n.programId,isWritable:!1}),Xt({pubkey:mi,isWritable:!1})];function Ht({publicKey:r,transformSol:e}){let t=Fn(r.toString());if(t instanceof H)return e&&t.equals(at)?Vt:t;if(e&&t.toString()===at.toBase58())return Vt;if(typeof t=="string"){if(t===H.default.toBase58())return H.default;try{return new H(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Fn(r){try{return new H(r)}catch{return r}}var Go=new H("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Vo=new H("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Uo=new H("SysvarRent111111111111111111111111111111111"),Wo=new H("SysvarC1ock11111111111111111111111111111111"),di=new H("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Xo=new H("Sysvar1nstructions1111111111111111111111111"),Ho=_n.programId,zo=new H("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Zo=new H("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Yo=new H("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),jo=new H("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Jo=new H("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Qo=new H("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),$o=new H("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),es=new H("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ts=new H("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),ns=new H("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),rs=new H("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Vt=new H("So11111111111111111111111111111111111111112"),at=H.default;function Pt(r){return Ht({publicKey:r,transformSol:!0})}var Zt=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===at.toBase58()||e instanceof zt&&at.equals(e)){this.decimals=He.decimals,this.symbol=He.symbol,this.name=He.name,this.mint=new zt(He.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?zt.default:Ht({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ee=Zt;Ee.WSOL=new Zt(Z(U({},He),{mint:He.address}));var Yt=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Nt=Yt;Nt.SOL=new Yt(En);import fi from"bn.js";var Mn=new O(new fi(100)),Ve=class extends O{toSignificant(e=5,t,n){return this.mul(Mn).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Mn).toFixed(e,t,n)}};var pi=be("Raydium_price"),Be=class extends O{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new O(jt(n.decimals),jt(i.decimals))}get raw(){return new O(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Be({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&pi.logWithError("mul token not equals");let n=super.mul(t);return new Be({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 gi=new _e(0),Hs=new _e(1),zs=new _e(2),Zs=new _e(3),Ys=new _e(5),Wt=new _e(10),js=new _e(100),Js=new _e(1e3),Qs=new _e(1e4);function jt(r){return Wt.pow(ye(r))}function qt(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 Aa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ka}from"@solana/spl-token";import{ComputeBudgetProgram as sa,Keypair as ca,PublicKey as bi,Transaction as la,TransactionMessage as fa,VersionedTransaction as pa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ya}from"@solana/spl-token";var wa=be("Raydium_txUtil");function ut(r,e){let[t,n]=bi.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}import{PublicKey as P}from"@solana/web3.js";var Sa=new P("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ca=new P("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),La=new P("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ra=new P("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Ea=new P("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),_a=new P("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Fa=new P("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ma=new P("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),va=new P("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Da=new P("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Oa=new P("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ka=new P("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),qa=new P("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Ga=new P("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Va=new P("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ua=new P("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Wa=new P("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Xa=new P("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ha=new P("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),za=new P("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Za=new P("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ya=new P("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ja=new P("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ja=new P("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Qa=new P("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),$a=new P("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),eu=new P("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),tu=new P("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),nu=new P("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),ru=new P("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),iu=new P("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var ou={OPEN_BOOK_PROGRAM:new P("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new P("Ray1111111111111111111111111111111111111111"),AMM_V4:new P("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new P("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new P("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new P("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new P("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new P("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new P("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new P("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new P("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new P("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:P.default,Router:new P("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new P("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new P("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new P("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new P("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new P("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new P("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new P("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new P("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new P("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new P("Ray1111111111111111111111111111111111111111")};import{PublicKey as cu,AddressLookupTableAccount as mu}from"@solana/web3.js";import{PublicKey as Nu,sendAndConfirmTransaction as Su,SystemProgram as Ru,Transaction as Eu,TransactionMessage as Fu,VersionedTransaction as Mu}from"@solana/web3.js";import Du from"axios";import{PublicKey as Wu}from"@solana/web3.js";import Hu from"bn.js";import yi from"bn.js";var Ju=new yi(1e6);function vn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Jt(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Qt(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function ct(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Dn(r,e){return ct(r,e)?null:Jt(r,e)}function On(r,e){return ct(r,e)?null:Qt(r,e)}var Ac=Buffer.from("amm_config","utf8"),Pc=Buffer.from("pool","utf8"),kc=Buffer.from("pool_vault","utf8"),Bc=Buffer.from("pool_reward_vault","utf8"),wi=Buffer.from("position","utf8"),Ti=Buffer.from("tick_array","utf8"),Ic=Buffer.from("operation","utf8"),xi=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Nc=Buffer.from("observation","utf8");function le(r,e,t){return ut([Ti,e.toBuffer(),vn(t)],r)}function Kn(r,e){return ut([wi,e.toBuffer()],r)}function St(r,e){return ut([xi,e.toBuffer()],r)}var Sc=Buffer.from("locked_position","utf8");var Cc=Buffer.from("support_mint","utf8");import{PublicKey as Te}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Jn}from"@solana/spl-token";import W from"bn.js";import{PublicKey as Li}from"@solana/web3.js";import Un,{isBN as Wn}from"bn.js";import{bits as Ec,BitStructure as _c,blob as Ai,Blob as Fc,cstr as Mc,f32 as vc,f32be as Dc,f64 as Oc,f64be as Kc,greedy as qc,Layout as Pi,ns64 as Gc,ns64be as Vc,nu64 as Uc,nu64be as Wc,offset as Xc,s16 as Hc,s16be as zc,s24 as Zc,s24be as Yc,s32 as ki,s32be as jc,s40 as Jc,s40be as Qc,s48 as $c,s48be as em,s8 as tm,seq as Bi,struct as nm,Structure as Ii,u16 as Ni,u16be as rm,u24 as im,u24be as om,u32 as sm,u32be as am,u40 as um,u40be as cm,u48 as mm,u48be as lm,u8 as Si,UInt as Ci,union as dm,Union as fm,unionLayoutDiscriminator as pm,utf8 as gm}from"@solana/buffer-layout";var $t=Pi,qn=Ii;var en=Ci;var Gn=Si,mt=Ni;var Ue=ki;var Vn=Bi;var we=Ai;var Qe=class extends $t{constructor(t,n,i){super(t,i);this.blob=we(t),this.signed=n}decode(t,n=0){let i=new Un(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 Un(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function ge(r){return new en(1,r)}function $e(r){return new en(4,r)}function M(r){return new Qe(8,!1,r)}function Y(r){return new Qe(16,!1,r)}function Xn(r){return new Qe(8,!0,r)}function Hn(r){return new Qe(16,!0,r)}var Ct=class extends $t{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 G(r){return new Ct(we(32),e=>new Li(e),e=>e.toBuffer(),r)}function zn(r){return new Ct(Gn(),Ri,Ei,r)}function Ri(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function Ei(r){return r?1:0}var tn=class extends qn{decode(e,t){return super.decode(e,t)}};function de(r,e,t){return new tn(r,e,t)}function z(r,e,t){let n,i=typeof e=="number"?e:Wn(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Wn(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 Vn(r,i,t)}import Fi from"bn.js";var _i=15,v=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=N.getTickArrayStartIndexByTick(i,o),m=N.getInitializedTickArrayInRange(s,a,o,c,Math.floor(_i/2));for(let f=0;f<m.length;f++){let{publicKey:b}=le(t,n,m[f]);u.push(b)}let l=(await Ge(e,u)).map(f=>f!==null?lt.decode(f.data):null),d={};for(let f=0;f<u.length;f++){let b=l[f];b!==null&&(d[b.startTickIndex]=Z(U({},b),{address:u[f]}))}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=N.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let m=n[c];if(m===void 0)continue;let{nextTick:l,tickArrayAddress:d,tickArrayStartTickIndex:f}=this.firstInitializedTickInOneArray(e,t,m,s);[a,u,c]=[l,d,f]}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/v.tickCount(t)),a=n?N.searchLowBitFromStart(i,o,s-1,1,t):N.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=re-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<re;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=le(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=N.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 m;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){m=d;break}u=u-1}else for(u=u+1;u<re;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){m=d;break}u=u+1}let{publicKey:l}=le(e,t,a);return{initializedTick:m,tickArrayAddress:l,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(N.checkIsOutOfBoundary(e)){if(e>me)return!1;let n=N.getTickArrayStartIndexByTick(ue,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return re*e}};var re=60,Ze=512,N=class{static getTickArrayAddressByTick(e,t,n,i){let o=N.getTickArrayStartIndexByTick(n,i),{publicKey:s}=le(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=N.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=re)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=v.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)*v.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*re,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*re,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*re:e+t*re}static mergeTickArrayBitmap(e){let t=new Fi(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*re));return[...N.searchLowBitFromStart(e,t,s-1,o,n),...N.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return N.searchHightBitFromStart(e,t,-7680,Ze,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=N.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=le(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=>N.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),m=(n+7680)%512;if(s[c].testn(m)&&a.push(n),n--,a.length===i)break}let u=v.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=>N.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),m=(n+7680)%512;if(s[c].testn(m)&&a.push(n),n++,a.length===i)break}let u=v.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<ue||e>me}static nextInitTick(e,t,n,i,o){if(v.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<re;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=re-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<re;){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=S.getSqrtPriceX64FromTick(t),o=S.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new x(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new x(1).div(t),o=ze.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=S.getSqrtPriceX64FromTick(o),a=S.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new x(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=S.getSqrtPriceX64FromTick(t),o=S.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new x(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new x(1).div(t),o=ze.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=S.getSqrtPriceX64FromTick(o),a=S.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new x(1).div(a)}}};var nn=14,Fe=class{static maxTickInTickarrayBitmap(e){return e*re*Ze}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(!v.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-v.tickCount(n):t+v.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*re,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let m=e.shln(1024-c-1),l=Dn(1024,m);if(l!==null){let d=(c-l-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let m=e.shrn(c),l=On(1024,m);if(l!==null){let d=(c+l-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-v.tickCount(n)}}}},dt=class{static getBitmapOffset(e,t){if(!v.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Fe.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=Fe.maxTickInTickarrayBitmap(e),n=-t;if(me<=t)throw Error(`extensionTickBoundary check error: ${me}, ${t}`);if(n<=ue)throw Error(`extensionTickBoundary check error: ${n}, ${ue}`);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:N.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=v.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}=Fe.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=N.mergeTickArrayBitmap(e).shln(Ze-1-a),c=ct(512,u)?null:Jt(512,u);if(c!==null){let m=t-c*v.tickCount(n);return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o}}else{let u=N.mergeTickArrayBitmap(e).shrn(a),c=ct(512,u)?null:Qt(512,u);if(c!==null){let m=t+c*v.tickCount(n);return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:s-v.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Fe.maxTickInTickarrayBitmap(t),i=Math.floor(n/v.tickCount(t));return e<0&&n!=0&&(i=Ze-i),i}};var Jm=de([we(8),ge("bump"),mt("index"),G(""),$e("protocolFeeRate"),$e("tradeFeeRate"),mt("tickSpacing"),z(M(),8,"")]),Mi=de([$e("blockTimestamp"),Xn("tickCumulative"),z(M(),4)]),Qm=de([we(8),zn("initialized"),M("recentEpoch"),mt("observationIndex"),G("poolId"),z(Mi,100,"observations"),z(M(),4)]),vi=de([ge("rewardState"),M("openTime"),M("endTime"),M("lastUpdateTime"),Y("emissionsPerSecondX64"),M("rewardTotalEmissioned"),M("rewardClaimed"),G("tokenMint"),G("tokenVault"),G("creator"),Y("rewardGrowthGlobalX64")]),Zn=de([we(8),ge("bump"),G("ammConfig"),G("creator"),G("mintA"),G("mintB"),G("vaultA"),G("vaultB"),G("observationId"),ge("mintDecimalsA"),ge("mintDecimalsB"),mt("tickSpacing"),Y("liquidity"),Y("sqrtPriceX64"),Ue("tickCurrent"),$e(),Y("feeGrowthGlobalX64A"),Y("feeGrowthGlobalX64B"),M("protocolFeesTokenA"),M("protocolFeesTokenB"),Y("swapInAmountTokenA"),Y("swapOutAmountTokenB"),Y("swapInAmountTokenB"),Y("swapOutAmountTokenA"),ge("status"),z(ge(),7,""),z(vi,3,"rewardInfos"),z(M(),16,"tickArrayBitmap"),M("totalFeesTokenA"),M("totalFeesClaimedTokenA"),M("totalFeesTokenB"),M("totalFeesClaimedTokenB"),M("fundFeesTokenA"),M("fundFeesTokenB"),M("startTime"),z(M(),15*4-3,"padding")]),Di=de([Y("growthInsideLastX64"),M("rewardAmountOwed")]),Yn=de([we(8),ge("bump"),G("nftMint"),G("poolId"),Ue("tickLower"),Ue("tickUpper"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),M("tokenFeesOwedA"),M("tokenFeesOwedB"),z(Di,3,"rewardInfos"),z(M(),8,"")]),$m=de([we(8),ge("bump"),G("poolId"),Ue("tickLowerIndex"),Ue("tickUpperIndex"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),M("tokenFeesOwedA"),M("tokenFeesOwedB"),z(Y(),3,"rewardGrowthInside"),z(M(),8,"")]),Oi=de([Ue("tick"),Hn("liquidityNet"),Y("liquidityGross"),Y("feeGrowthOutsideX64A"),Y("feeGrowthOutsideX64B"),z(Y(),3,"rewardGrowthsOutsideX64"),z($e(),13,"")]),lt=de([we(8),G("poolId"),Ue("startTickIndex"),z(Oi,re,"ticks"),ge("initializedTickCount"),z(ge(),115,"")]),el=de([we(329),z(G(),100,"whitelistMints")]),jn=de([we(8),G("poolId"),z(z(M(),8),nn,"positiveTickArrayBitmap"),z(z(M(),8),nn,"negativeTickArrayBitmap")]),tl=de([M(),ge("bump"),G("owner"),G("poolId"),G("positionId"),G("nftAccount"),z(M(),8)]),nl=de([we(8),ge("bump"),G("lockOwner"),G("poolId"),G("positionId"),G("nftAccount"),G("lockNftMint"),M("recentEpoch"),z(M(),8)]);import Ce from"bn.js";var ft=class{static getfeeGrowthInside(e,t,n){let i=new Ce(0),o=new Ce(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 Ce(0),a=new Ce(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=C.wrappingSubU128(C.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=C.wrappingSubU128(C.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=C.mulDivFloor(C.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,he),u=t.tokenFeesOwedA.add(a),c=C.mulDivFloor(C.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,he),m=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:m}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=C.mulDivFloor(C.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,he),u=t.tokenFeesOwedA.add(a),c=C.mulDivFloor(C.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,he),m=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:m}}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],m=C.wrappingSubU128(u,c.growthInsideLastX64),l=C.mulDivFloor(m,t.liquidity,he),d=c.rewardAmountOwed.add(l);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],m=C.wrappingSubU128(u,c.growthInsideLastX64),l=C.mulDivFloor(m,t.liquidity,he),d=c.rewardAmountOwed.add(l);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ce(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 Ce(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(C.wrappingSubU128(C.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 Ce(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 Ce(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(C.wrappingSubU128(C.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var y,g,B,w;let a=S.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),u=S.getSqrtPriceX64FromTick(t.tickLower),c=S.getSqrtPriceX64FromTick(t.tickUpper),m=o?1+i:1-i,l=D.getAmountsFromLiquidity(a,u,c,n,o),[d,f]=[j(l.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),j(l.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[b,p]=[j(new Ce(new x(l.amountA.toString()).mul(m).toFixed(0)),(B=e.mintA.extensions)==null?void 0:B.feeConfig,s,!0),j(new Ce(new x(l.amountB.toString()).mul(m).toFixed(0)),(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:f,amountSlippageA:b,amountSlippageB:p,expirationTime:qe(d.expirationTime,f.expirationTime)}}};var Ie=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o,s=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:m,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,a);if(!c||m===void 0||!l)throw new Error("Invalid tick array");u.push(l);let{allTrade:d,amountCalculated:f,accounts:b,sqrtPriceX64:p,feeAmount:y}=Ye.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,m,o,s);return u.push(...b),{allTrade:d,expectedAmountOut:f.mul(Re),remainingAccounts:u,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!m)throw new Error("Invalid tick array");try{let p=this.preInitializedTickArrayStartIndex(e,s);if(p.isExist){let{publicKey:y}=le(e.programId,e.id,p.nextStartIndex);a.push(y)}}catch{}a.push(m);let{amountCalculated:l,accounts:d,sqrtPriceX64:f,feeAmount:b}=Ye.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Re),c,o);return a.push(...d),{expectedAmountIn:l,remainingAccounts:a,executionPrice:f,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ie.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?dt.checkTickArrayIsInit(v.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):N.checkTickArrayIsInitialized(N.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=le(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,v.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=le(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/v.tickCount(e.tickSpacing)),i=t?N.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):N.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=v.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Fe.nextInitializedTickArrayStartIndex(N.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=dt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<ue||t>me)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 m=0;m<o.length;m++){let l=o[m],d=(c=(a=t.rewardDefaultInfos[m])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(l.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let f=Z(U({},l),{perSecond:C.x64ToDecimal(l.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Te(d)});if(f.tokenMint.equals(Te.default))continue;if(n<=f.openTime.toNumber()||i.eq(J)){s.push(f);continue}let b=new W(Math.min(f.endTime.toNumber(),n)),p=b.sub(f.lastUpdateTime),y=C.mulDivFloor(p,f.emissionsPerSecondX64,i),g=f.rewardGrowthGlobalX64.add(y),B=C.mulDivFloor(p,f.emissionsPerSecondX64,he),w=f.rewardTotalEmissioned.add(B);s.push(Z(U({},f),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:w,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=N.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Fe.maxTickInTickarrayBitmap(e),n=-t;return t>me&&(t=v.getArrayStartIndex(me,e)+v.tickCount(e)),n<ue&&(n=v.getArrayStartIndex(ue,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!v.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/v.tickCount(t)*Ze}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Gt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=jn.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=N.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),m=N.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let l of m){let{publicKey:d}=le(u.programId,u.id,l);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await Gt(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 m=lt.decode(u.accountInfo.data);a[c.toString()][m.startTickIndex]=Z(U({},m),{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(m=>m.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 f of s)c.push(Kn(f,d).publicKey);let m=await Ge(t,c,{batchRequest:i}),l={};for(let d of m){if(d===null)continue;let f=Yn.decode(d.data),b=f.poolId.toString(),p=e.find(K=>K.state.id.toBase58()===b);if(p===void 0)continue;let y=p.state,g=N._getTickPriceLegacy({poolInfo:y,tick:f.tickLower,baseIn:!0}),B=N._getTickPriceLegacy({poolInfo:y,tick:f.tickUpper,baseIn:!0}),{amountA:w,amountB:_}=D.getAmountsFromLiquidity(y.sqrtPriceX64,g.tickSqrtPriceX64,B.tickSqrtPriceX64,f.liquidity,!1),X=1/(1-Math.sqrt(Math.sqrt(g.price.div(B.price).toNumber())));p.positionAccount=[...(a=p.positionAccount)!=null?a:[],{poolId:f.poolId,nftMint:f.nftMint,priceLower:g.price,priceUpper:B.price,amountA:w,amountB:_,tickLower:f.tickLower,tickUpper:f.tickUpper,liquidity:f.liquidity,feeGrowthInsideLastX64A:f.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:f.feeGrowthInsideLastX64B,tokenFeesOwedA:f.tokenFeesOwedA,tokenFeesOwedB:f.tokenFeesOwedB,rewardInfos:f.rewardInfos.map(K=>Z(U({},K),{pendingReward:new W(0)})),leverage:X,tokenFeeAmountA:new W(0),tokenFeeAmountB:new W(0)}];let T=await N.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickLower,p.state.tickSpacing),Q=await N.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickUpper,p.state.tickSpacing);l[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickLower}`]=T,l[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickUpper}`]=Q}if(o){let d=Object.values(l),f=await Ge(t,d,{batchRequest:i}),b={};for(let p=0;p<d.length;p++){let y=f[p];if(y===null)continue;let g=d[p].toString();b[g]=lt.decode(y.data)}for(let{state:p,positionAccount:y}of e)if(!!y)for(let g of y){let B=`${p.programId.toString()}-${p.id.toString()}-${g.tickLower}`,w=`${p.programId.toString()}-${p.id.toString()}-${g.tickUpper}`,_=b[l[B].toString()],X=b[l[w].toString()],T=_.ticks[N.getTickOffsetInArray(g.tickLower,p.tickSpacing)],Q=X.ticks[N.getTickOffsetInArray(g.tickUpper,p.tickSpacing)],{tokenFeeAmountA:K,tokenFeeAmountB:ee}=await ft.GetPositionFees(p,g,T,Q),$=await ft.GetPositionRewards(p,g,T,Q);g.tokenFeeAmountA=K.gte(new W(0))?K:new W(0),g.tokenFeeAmountB=ee.gte(new W(0))?ee:new W(0);for(let F=0;F<$.length;F++)g.rewardInfos[F].pendingReward=$[F].gte(new W(0))?$[F]:new W(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new x(0),catchLiquidityInsufficient:u=!1}){var fe;let c,m=n.toBase58()===e.mintA.address,[l,d]=m?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new x(0))?c=m?We.add(new W(1)):Xe.sub(new W(1)):c=S.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let f=j(o,l,i,!1),{allTrade:b,expectedAmountOut:p,remainingAccounts:y,executionPrice:g,feeAmount:B}=Ie.getOutputAmountAndRemainAccounts(e,t,n,f.amount.sub((fe=f.fee)!=null?fe:J),c,u),w=j(p,d,i,!1),_=S.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),X=m?_:new x(1).div(_),T=p.mul(new W(Math.floor((1-s)*1e10))).div(new W(1e10)),Q=j(T,d,i,!1),K=m?e.currentPrice:new x(1).div(e.currentPrice),ee=new x(X).sub(K).abs(),$=K,F=new Ve(new x(ee).mul(10**15).toFixed(0),new x($).mul(10**15).toFixed(0));return{allTrade:b,realAmountIn:f,amountOut:w,minAmountOut:Q,expirationTime:qe(f.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:X,priceImpact:F,fee:B,remainingAccounts:y,executionPriceX64:g}}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,m]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,d]=[new Ee(Z(U({},c),{mint:c.address,isToken2022:c.programId===Jn.toBase58()})),new Ee(Z(U({},m),{mint:m.address,isToken2022:m.programId===Jn.toBase58()}))],{allTrade:f,realAmountIn:b,amountOut:p,minAmountOut:y,expirationTime:g,currentPrice:B,executionPrice:w,priceImpact:_,fee:X,remainingAccounts:T,executionPriceX64:Q}=Ie.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Te(c.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),K=Z(U({},b),{amount:new ce(l,b.amount),fee:b.fee===void 0?void 0:new ce(l,b.fee)}),ee=Z(U({},p),{amount:new ce(d,p.amount),fee:p.fee===void 0?void 0:new ce(d,p.fee)}),$=Z(U({},y),{amount:new ce(d,y.amount),fee:y.fee===void 0?void 0:new ce(d,y.fee)}),F=new Be({baseToken:l,denominator:new W(10).pow(new W(20+l.decimals)),quoteToken:d,numerator:B.mul(new x(10**(20+d.decimals))).toFixed(0)}),fe=new Be({baseToken:l,denominator:new W(10).pow(new W(20+l.decimals)),quoteToken:d,numerator:w.mul(new x(10**(20+d.decimals))).toFixed(0)}),se=new ce(l,X);return{allTrade:f,realAmountIn:K,amountOut:ee,minAmountOut:$,expirationTime:g,currentPrice:F,executionPrice:fe,priceImpact:_,fee:se,remainingAccounts:T,executionPriceX64:Q}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountOut:o,slippage:s,priceLimit:a=new x(0)}){var $;let u=n.toBase58()===e.mintA.address,c={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},m;a.equals(new x(0))?m=u?Xe.sub(new W(1)):We.add(new W(1)):m=S.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let l=j(o,c[n.toString()],i,!0),{expectedAmountIn:d,remainingAccounts:f,executionPrice:b,feeAmount:p}=Ie.getInputAmountAndRemainAccounts(e,t,n,l.amount.sub(($=l.fee)!=null?$:J),m),y=u?e.mintB.address:e.mintA.address,g=j(d,c[y],i,!1),B=S.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),w=u?B:new x(1).div(B),_=d.mul(new W(Math.floor((1+s)*1e10))).div(new W(1e10)),X=j(_,c[y],i,!0),T=u?e.currentPrice:new x(1).div(e.currentPrice),Q=new x(w).sub(T).abs(),K=T,ee=new Ve(new x(Q).mul(10**15).toFixed(0),new x(K).mul(10**15).toFixed(0));return{amountIn:g,maxAmountIn:X,realAmountOut:l,expirationTime:qe(g.expirationTime,l.expirationTime),currentPrice:e.currentPrice,executionPrice:w,priceImpact:ee,fee:p,remainingAccounts:f}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var b,p,y;let o=e[t],s=N.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=N.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),m=Math.min(a,o.priceMax)-u,l=a-s,d=o.priceMax-o.priceMin,f;return m<=0?f=0:l===m?f=d/m:d===m?f=m/l:f=m/d*(m/l),{feeApr:o.feeApr*f,rewardsApr:[((b=o.rewardApr[0])!=null?b:0)*f,((p=o.rewardApr[1])!=null?p:0)*f,((y=o.rewardApr[2])!=null?y:0)*f],apr:o.apr*f}}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,m=e[n],l=i[Pt(e.mintA.address).toString()],d=i[Pt(e.mintB.address).toString()],f=e.mintA.decimals,b=e.mintB.decimals;if(!m||!l||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let p=S.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),y=S.getSqrtPriceX64FromTick(s),g=S.getSqrtPriceX64FromTick(a),{amountSlippageA:B,amountSlippageB:w}=D.getAmountsFromLiquidityWithSlippage(p,y,g,t,!1,!1,0),{amountSlippageA:_,amountSlippageB:X}=D.getAmountsFromLiquidityWithSlippage(p,y,g,o,!1,!1,0),T=new x(B.toString()).div(new x(10).pow(f)).mul(l.value).add(new x(w.toString()).div(new x(10).pow(b)).mul(d.value)),Q=new x(_.toString()).div(new x(10).pow(f)).mul(l.value).add(new x(X.toString()).div(new x(10).pow(b)).mul(d.value)),K=new x(1).div(T.add(Q)),$=new x(m.volumeFee).mul(365).div(c).mul(K).mul(100).toNumber(),F=3600*24*365,fe=e.rewardDefaultInfos.map(se=>{var q,on;let Me=se.mint.decimals,te=i[se.mint.address];return u<((q=se.startTime)!=null?q:0)||u>((on=se.endTime)!=null?on:0)||!se.perSecond||!te||Me===void 0?0:new x(te.value).mul(new x(se.perSecond).mul(F)).div(new x(10).pow(Me)).mul(K).mul(100).toNumber()});return{feeApr:$,rewardsApr:fe,apr:$+fe.reduce((se,Me)=>se+Me,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,B;let m=S.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),l=S.getSqrtPriceX64FromTick(n),d=S.getSqrtPriceX64FromTick(i),f=j(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),b=new W(new x(f.amount.sub((B=f.fee)!=null?B:J).toString()).toFixed(0)),p;if(m.lte(l))p=t?D.getLiquidityFromTokenAmountA(l,d,b,!a):new W(0);else if(m.lte(d)){let w=D.getLiquidityFromTokenAmountA(m,d,b,!a),_=D.getLiquidityFromTokenAmountB(l,m,b);p=t?w:_}else p=t?new W(0):D.getLiquidityFromTokenAmountB(l,d,b);let y=await Ie.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:p,slippage:s,add:a});return{liquidity:p,amountA:t?f:y.amountA,amountB:t?y.amountB:f,amountSlippageA:t?f:y.amountSlippageA,amountSlippageB:t?y.amountSlippageB:f,expirationTime:y.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var y,g,B,w;let u=S.getSqrtPriceX64FromTick(n),c=S.getSqrtPriceX64FromTick(i),m=a?1+s:1-s,l=D.getAmountsFromLiquidity(S.priceToSqrtPriceX64(new x(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,f]=[j(l.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),j(l.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[b,p]=[j(l.amountA.muln(m),(B=t.mintA.extensions)==null?void 0:B.feeConfig,e,!0),j(l.amountB.muln(m),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:f,amountSlippageA:b,amountSlippageB:p,expirationTime:qe(d.expirationTime,f.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(u=>!n[u.id]).map(u=>new Te(u.id));(await Ge(e,i)).forEach((u,c)=>{!u||(n[i[c].toBase58()]=Zn.decode(u.data))});let s=t.map(u=>St(new Te(u.programId),new Te(u.id)).publicKey),a=await Ie.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>Z(U({},u),{[c.id]:Z(U({},n[c.id]),{id:new Te(c.id),version:6,programId:new Te(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:Z(U({},c.config),{id:new Te(c.config.id),fundOwner:""}),currentPrice:new x(c.price),exBitmapAccount:St(new Te(c.programId),new Te(c.id)).publicKey,exBitmapInfo:a[St(new Te(c.programId),new Te(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber(),rewardInfos:n[c.id].rewardInfos})}),{})}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 C=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(J)||(o=o.add(Se)),o}static mulDivFloor(e,t,n){if(n.eq(J))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(J))throw new Error("division by 0");return e.mul(t).add(n.sub(Se)).div(n)}static x64ToDecimal(e,t){return new x(e.toString()).div(x.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new L(e.mul(x.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(xt).sub(t).mod(xt)}};function ie(r,e){return rn(r.mul(e),64,256)}function Ki(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function rn(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var S=class{static sqrtPriceX64ToPrice(e,t,n){return C.x64ToDecimal(e).pow(2).mul(x.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return C.decimalToX64(e.mul(x.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(J))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(J))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(J))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(J))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(J))return e;let o=t.shln(rt);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?C.mulDivCeil(s,e,a):C.mulDivRoundingUp(s,Se,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 C.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(rt);if(i)return e.add(o.div(t));{let s=C.mulDivRoundingUp(o,Se,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<ue||e>me)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new L("18445821805675395072"):new L("18446744073709551616");return(t&2)!=0&&(n=ie(n,new L("18444899583751176192"))),(t&4)!=0&&(n=ie(n,new L("18443055278223355904"))),(t&8)!=0&&(n=ie(n,new L("18439367220385607680"))),(t&16)!=0&&(n=ie(n,new L("18431993317065453568"))),(t&32)!=0&&(n=ie(n,new L("18417254355718170624"))),(t&64)!=0&&(n=ie(n,new L("18387811781193609216"))),(t&128)!=0&&(n=ie(n,new L("18329067761203558400"))),(t&256)!=0&&(n=ie(n,new L("18212142134806163456"))),(t&512)!=0&&(n=ie(n,new L("17980523815641700352"))),(t&1024)!=0&&(n=ie(n,new L("17526086738831433728"))),(t&2048)!=0&&(n=ie(n,new L("16651378430235570176"))),(t&4096)!=0&&(n=ie(n,new L("15030750278694412288"))),(t&8192)!=0&&(n=ie(n,new L("12247334978884435968"))),(t&16384)!=0&&(n=ie(n,new L("8131365268886854656"))),(t&32768)!=0&&(n=ie(n,new L("3584323654725218816"))),(t&65536)!=0&&(n=ie(n,new L("696457651848324352"))),(t&131072)!=0&&(n=ie(n,new L("26294789957507116"))),(t&262144)!=0&&(n=ie(n,new L("37481735321082"))),e>0&&(n=An.div(n)),n}static getTickFromPrice(e,t,n){return S.getTickFromSqrtPriceX64(S.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Xe)||e.lt(We))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new L(t-64),i=Ki(n,32,128),o=new L("8000000000000000","hex"),s=0,a=new L(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new L(0))&&s<Pn;){u=u.mul(u);let b=u.shrn(127);u=u.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let c=a.shrn(32),l=i.add(c).mul(new L(kn)),d=rn(l.sub(new L(Bn)),64,128).toNumber(),f=rn(l.add(new L(In)),64,128).toNumber();return d==f?d:S.getSqrtPriceX64FromTick(f).lte(e)?f:d}},ze=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=S.getTickFromSqrtPriceX64(S.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=ze.getTickWithPriceAndTickspacing(e,t,n,i),s=S.getSqrtPriceX64FromTick(o);return S.sqrtPriceX64ToPrice(s,n,i)}},D=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(J))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(rt),s=t.sub(e);return i?C.mulDivRoundingUp(C.mulDivCeil(o,s,t),Se,e):C.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(J))throw new Error("sqrtPriceX64A must greater than 0");return i?C.mulDivCeil(n,t.sub(e),he):C.mulDivFloor(n,t.sub(e),he)}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?C.mulDivRoundingUp(a,Se,Dt):a.shrn(rt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),C.mulDivFloor(n,Dt,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return D.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=D.getLiquidityFromTokenAmountA(e,n,i,!1),a=D.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return D.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:D.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new L(0)};if(e.lt(n)){let s=D.getTokenAmountAFromLiquidity(e,n,i,o),a=D.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new L(0),amountB:D.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=D.getAmountsFromLiquidity(e,t,n,i,s),m=o?1+a:1-a,l=new L(new x(u.toString()).mul(m).toFixed(0)),d=new L(new x(c.toString()).mul(m).toFixed(0));return{amountSlippageA:l,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var B,w,_,X;let c=S.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),m=S.getSqrtPriceX64FromTick(t),l=S.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,f=D.getAmountsFromLiquidity(c,m,l,i,s),[b,p]=[j(f.amountA,(B=e.mintA.extensions)==null?void 0:B.feeConfig,a,u),j(f.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,u)],[y,g]=[j(new L(new x(f.amountA.toString()).mul(d).toFixed(0)),(_=e.mintA.extensions)==null?void 0:_.feeConfig,a,u),j(new L(new x(f.amountB.toString()).mul(d).toFixed(0)),(X=e.mintB.extensions)==null?void 0:X.feeConfig,a,u)];return{liquidity:i,amountA:b,amountB:p,amountSlippageA:y,amountSlippageB:g,expirationTime:qe(b.expirationTime,p.expirationTime)}}},Ye=class{static swapCompute(e,t,n,i,o,s,a,u,c,m,l,d,f,b,p=!1){if(d.eq(J))throw new Error("amountSpecified must not be 0");if(b||(b=s?We.add(Se):Xe.sub(Se)),s){if(b.lt(We))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(l))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(Xe))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(l))throw new Error("sqrtPriceX64 must greater than current")}let y=d.gt(J),g={amountSpecifiedRemaining:d,amountCalculated:J,sqrtPriceX64:l,tick:c>f?Math.min(f+v.tickCount(m)-1,c):f,accounts:[],liquidity:u,feeAmount:new L(0)},B=f,w=n[f],_=0,X=!s&&w.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(J)&&!g.sqrtPriceX64.eq(b);){_>10;let T={};T.sqrtPriceStartX64=g.sqrtPriceX64;let Q=N.nextInitTick(w,g.tick,m,s,X),K=Q||null,ee=null;if(!(K!=null&&K.liquidityGross.gtn(0))){let F=Ie.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:m,tickArrayBitmap:i,exBitmapInfo:o},B,s);if(!F.isExist){if(p)return{allTrade:!1,amountSpecifiedRemaining:g.amountSpecifiedRemaining,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts};throw Error("swapCompute LiquidityInsufficient")}B=F.nextStartIndex;let{publicKey:fe}=le(e,t,B);ee=fe,w=n[B];try{K=N.firstInitializedTick(w,s)}catch{throw Error("not found next tick info")}}T.tickNext=K.tick,T.initialized=K.liquidityGross.gtn(0),f!==B&&ee&&(g.accounts.push(ee),f=B),T.tickNext<ue?T.tickNext=ue:T.tickNext>me&&(T.tickNext=me),T.sqrtPriceNextX64=S.getSqrtPriceX64FromTick(T.tickNext);let $;if(s&&T.sqrtPriceNextX64.lt(b)||!s&&T.sqrtPriceNextX64.gt(b)?$=b:$=T.sqrtPriceNextX64,[g.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=Ye.swapStepCompute(g.sqrtPriceX64,$,g.liquidity,g.amountSpecifiedRemaining,a,s),g.feeAmount=g.feeAmount.add(T.feeAmount),y?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),g.amountCalculated=g.amountCalculated.sub(T.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(T.amountOut),g.amountCalculated=g.amountCalculated.add(T.amountIn.add(T.feeAmount))),g.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let F=K.liquidityNet;s&&(F=F.mul(Re)),g.liquidity=D.addDelta(g.liquidity,F)}X=T.tickNext!=g.tick&&!s&&w.startTickIndex===T.tickNext,g.tick=s?T.tickNext-1:T.tickNext}else if(g.sqrtPriceX64!=T.sqrtPriceStartX64){let F=S.getTickFromSqrtPriceX64(g.sqrtPriceX64);X=F!=g.tick&&!s&&w.startTickIndex===F,g.tick=F}++_}try{let{nextStartIndex:T,isExist:Q}=v.nextInitializedTickArray(g.tick,m,s,i,o);Q&&f!==T&&(g.accounts.push(le(e,t,T).publicKey),f=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:J,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,i,o,s){let a={sqrtPriceX64Next:new L(0),amountIn:new L(0),amountOut:new L(0),feeAmount:new L(0)},u=i.gte(J);if(u){let m=C.mulDivFloor(i,At.sub(new L(o.toString())),At);a.amountIn=s?D.getTokenAmountAFromLiquidity(t,e,n,!0):D.getTokenAmountBFromLiquidity(e,t,n,!0),m.gte(a.amountIn)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=S.getNextSqrtPriceX64FromInput(e,n,m,s)}else a.amountOut=s?D.getTokenAmountBFromLiquidity(t,e,n,!1):D.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Re).gte(a.amountOut)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=S.getNextSqrtPriceX64FromOutput(e,n,i.mul(Re),s);let c=t.eq(a.sqrtPriceX64Next);return s?(c&&u||(a.amountIn=D.getTokenAmountAFromLiquidity(a.sqrtPriceX64Next,e,n,!0)),c&&!u||(a.amountOut=D.getTokenAmountBFromLiquidity(a.sqrtPriceX64Next,e,n,!1))):(a.amountIn=c&&u?a.amountIn:D.getTokenAmountBFromLiquidity(e,a.sqrtPriceX64Next,n,!0),a.amountOut=c&&!u?a.amountOut:D.getTokenAmountAFromLiquidity(e,a.sqrtPriceX64Next,n,!1)),!u&&a.amountOut.gt(i.mul(Re))&&(a.amountOut=i.mul(Re)),u&&!a.sqrtPriceX64Next.eq(t)?a.feeAmount=i.sub(a.amountIn):a.feeAmount=C.mulDivCeil(a.amountIn,new L(o),At.sub(new L(o))),[a.sqrtPriceX64Next,a.amountIn,a.amountOut,a.feeAmount]}};export{D as LiquidityMath,C as MathUtil,S as SqrtPriceMath,Ye as SwapMath,ze as TickMath};
//# sourceMappingURL=math.mjs.map