@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 95.3 kB
JavaScript
var $n=Object.defineProperty,er=Object.defineProperties;var tr=Object.getOwnPropertyDescriptors;var sn=Object.getOwnPropertySymbols;var nr=Object.prototype.hasOwnProperty,rr=Object.prototype.propertyIsEnumerable;var an=(r,e,t)=>e in r?$n(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,U=(r,e)=>{for(var t in e||(e={}))nr.call(e,t)&&an(r,t,e[t]);if(sn)for(var t of sn(e))rr.call(e,t)&&an(r,t,e[t]);return r},j=(r,e)=>er(r,tr(e));import L from"bn.js";var Ye=9e15,Ke=1e9,Lt="0123456789abcdef",gt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",ht="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Et={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Ye,maxE:Ye,crypto:!1},ln,Le,B=!0,wt="[DecimalError] ",De=wt+"Invalid argument: ",dn=wt+"Precision limit exceeded",fn=wt+"crypto unavailable",pn="[object Decimal]",ae=Math.floor,ne=Math.pow,ir=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,or=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,sr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,gn=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Pe=1e7,P=7,ar=9007199254740991,ur=gt.length-1,Rt=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(De+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())+P,n.rounding=1,t=cr(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(B=!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 B=!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/P))*P,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=Qe(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=Qe(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=Qe(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,B=!1,t=t.times(t).minus(1).sqrt().plus(t),B=!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,B=!1,t=t.times(t).plus(1).sqrt().plus(t),B=!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<=Rt)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<=Rt)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/P+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(B=!1,e=Math.ceil(a/P),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)),B=!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/P)>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(B=!1,a=l+f,s=ve(c,a),n=e?bt(m,a+10):ve(r,a),u=V(s,n,a,1),et(u.d,i=l,d))do if(a+=10,s=ve(c,a),n=e?bt(m,a+10):ve(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 B=!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 B?A(r,a,u):r}if(t=ae(r.e/P),m=ae(f.e/P),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/P),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=yt(c,t),B?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):(B=!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),B=!0,t.minus(e))};h.naturalExponential=h.exp=function(){return Mt(this)};h.naturalLogarithm=h.ln=function(){return ve(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)),B?A(r,a,u):r;if(o=ae(l.e/P),n=ae(r.e/P),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/P),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=yt(c,n),B?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(De+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())+P,n.rounding=1,t=lr(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(B=!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 B=!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/P)+ae(r.e/P),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=yt(o,t),B?A(r,l.precision,l.rounding):r};h.toBinary=function(r,e){return Ft(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,g=f.constructor;if(!b)return new g(f);if(c=t=new g(1),n=u=new g(0),e=new g(n),o=e.e=hn(b)-f.e-1,s=o%P,e.d[0]=ne(10,s<0?P+s:s),r==null)r=o>0?e:c;else{if(a=new g(r),!a.isInt()||a.lt(c))throw Error(De+a);r=a.gt(e)?o>0?e:c:a}for(B=!1,a=new g(oe(b)),m=g.precision,g.precision=o=b.length*P*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],g.precision=m,B=!0,d};h.toHexadecimal=h.toHex=function(r,e){return Ft(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]?(B=!1,t=V(t,r,0,e,1).times(r),B=!0,A(t)):(r.s=t.s,t=r),t};h.toNumber=function(){return+this};h.toOctal=function(r,e){return Ft(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/P),e>=r.d.length-1&&(t=c<0?-c:c)<=ar)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):(B=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Mt(r.times(ve(a,n+t)),n),i.d&&(i=A(i,n+5,1),et(i.d,n,o)&&(e=n+10,i=A(Mt(r.times(ve(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,B=!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=P-n.length,t&&(o+=Oe(t)),o+=n;s=r[e],n=s+"",t=P-n.length,t&&(o+=Oe(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(De+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+=P,i=0):(i=Math.ceil((e+1)/P),e%=P),o=ne(10,P-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 cr(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=Qe(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,g,w,p,k,y,M,X,T,J,K,ee,$,_,fe,se=n.constructor,Fe=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?Fe*0:Fe/0);for(u?(f=1,m=n.e-i.e):(u=Pe,f=P,m=ae(n.e/f)-ae(i.e/f)),_=q.length,ee=te.length,p=new se(Fe),k=p.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)k.push(1),b=!0;else{if(T=T/f+2|0,l=0,_==1){for(d=0,q=q[0],T++;(l<ee||d)&&T--;l++)J=d*u+(te[l]||0),k[l]=J/q|0,d=J%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),_=q.length,ee=te.length),K=_,y=te.slice(0,_),M=y.length;M<_;)y[M++]=0;fe=q.slice(),fe.unshift(0),$=q[0],q[1]>=u/2&&++$;do d=0,c=e(q,y,_,M),c<0?(X=y[0],_!=M&&(X=X*u+(y[1]||0)),d=X/$|0,d>1?(d>=u&&(d=u-1),g=r(q,d,u),w=g.length,M=y.length,c=e(g,y,w,M),c==1&&(d--,t(g,_<w?fe:q,w,u))):(d==0&&(c=d=1),g=q.slice()),w=g.length,w<M&&g.unshift(0),t(y,g,M,u),c==-1&&(M=y.length,c=e(q,y,_,M),c<1&&(d++,t(y,_<M?fe:q,M,u))),M=y.length):c===0&&(d++,y=[0]),k[l++]=d,c&&y[0]?y[M++]=te[K]||0:(y=[te[K]],M=1);while((K++<ee||y[0]!==void 0)&&T--);b=y[0]!==void 0}k[0]||k.shift()}if(f==1)p.e=m,ln=b;else{for(l=1,d=k[0];d>=10;d/=10)l++;p.e=l+m*f-1,A(p,a?o+p.e+1:o,s,b)}return p}}();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+=P,s=e,m=l[d=0],u=m/ne(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/P),a=l.length,d>=a)if(n){for(;a++<=d;)l.push(0);m=u=0,i=1,o%=P,s=o-P+1}else break e;else{for(m=a=l[d],i=1;a>=10;a/=10)i++;o%=P,s=o-P+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,(P-e%P)%P),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,P-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 B&&(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 yn(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)+Oe(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Oe(-i-1)+o,t&&(n=t-s)>0&&(o+=Oe(n))):i>=s?(o+=Oe(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Oe(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Oe(n))),o}function yt(r,e){var t=r[0];for(e*=P;t>=10;t/=10)e++;return e}function bt(r,e,t){if(e>ur)throw B=!0,t&&(r.precision=t),Error(dn);return A(new r(gt),e,1,!0)}function Ae(r,e,t){if(e>Rt)throw Error(dn);return A(new r(ht),e,t,!0)}function hn(r){var e=r.length-1,t=e*P+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 Oe(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/P+4);for(B=!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 B=!0,o}function un(r){return r.d[r.d.length-1]&1}function wn(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 Mt(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?(B=!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,B=!0);else return d.precision=b,s}s=a}}function ve(r,e){var t,n,i,o,s,a,u,c,m,l,d,f=1,b=10,g=r,w=g.d,p=g.constructor,k=p.rounding,y=p.precision;if(g.s<0||!w||!w[0]||!g.e&&w[0]==1&&w.length==1)return new p(w&&!w[0]?-1/0:g.s!=1?NaN:w?0:g);if(e==null?(B=!1,m=y):m=e,p.precision=m+=b,t=oe(w),n=t.charAt(0),Math.abs(o=g.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)g=g.times(r),t=oe(g.d),n=t.charAt(0),f++;o=g.e,n>1?(g=new p("0."+t),o++):g=new p(n+"."+t.slice(1))}else return c=bt(p,m+2,y).times(o+""),g=ve(new p(n+"."+t.slice(1)),m-b).plus(c),p.precision=y,e==null?A(g,y,k,B=!0):g;for(l=g,u=s=g=V(g.minus(1),g.plus(1),m,1),d=A(g.times(g),m,1),i=3;;){if(s=A(s.times(d),m,1),c=u.plus(V(s,new p(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(p,m+2,y).times(o+""))),u=V(u,new p(f),m,1),e==null)if(et(u.d,m-b,k,a))p.precision=m+=b,c=s=g=V(l.minus(1),l.plus(1),m,1),d=A(g.times(g),m,1),i=a=1;else return A(u,p.precision=y,k,B=!0);else return p.precision=y,u;u=c,i+=2}}function yn(r){return String(r.s*r.s/0)}function _t(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)%P,t<0&&(n+=P),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=P;n<i;)r.d.push(+e.slice(n,n+=P));e=e.slice(n),n=P-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),B&&(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 mr(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 _t(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(or.test(e))t=16,e=e.toLowerCase();else if(ir.test(e))t=2;else if(sr.test(e))t=8;else throw Error(De+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=yt(c,m),r.d=c,B=!1,s&&(r=V(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?ne(2,u):tt.pow(2,u))),B=!0,r)}function lr(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Qe(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Tt(5,t)),e=Qe(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 Qe(r,e,t,n,i){var o,s,a,u,c=1,m=r.precision,l=Math.ceil(m/P);for(B=!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 B=!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 Ft(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=yn(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 dr(r){return new this(r).abs()}function fr(r){return new this(r).acos()}function pr(r){return new this(r).acosh()}function gr(r,e){return new this(r).plus(e)}function hr(r){return new this(r).asin()}function br(r){return new this(r).asinh()}function wr(r){return new this(r).atan()}function yr(r){return new this(r).atanh()}function Tr(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 xr(r){return new this(r).cbrt()}function Ar(r){return A(r=new this(r),r.e+1,2)}function Pr(r,e,t){return new this(r).clamp(e,t)}function kr(r){if(!r||typeof r!="object")throw Error(wt+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Ke,"rounding",0,8,"toExpNeg",-Ye,0,"toExpPos",0,Ye,"maxE",0,Ye,"minE",-Ye,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Et[t]),(n=r[t])!==void 0)if(ae(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(De+t+": "+n);if(t="crypto",i&&(this[t]=Et[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(De+t+": "+n);return this}function Br(r){return new this(r).cos()}function Ir(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,B?!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++;B?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 _t(c,o.toString())}else if(u!=="string")throw Error(De+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)?_t(c,o):mr(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=kr,i.clone=xn,i.isDecimal=mn,i.abs=dr,i.acos=fr,i.acosh=pr,i.add=gr,i.asin=hr,i.asinh=br,i.atan=wr,i.atanh=yr,i.atan2=Tr,i.cbrt=xr,i.ceil=Ar,i.clamp=Pr,i.cos=Br,i.cosh=Ir,i.div=Nr,i.exp=Sr,i.floor=Cr,i.hypot=Lr,i.ln=Er,i.log=Rr,i.log10=_r,i.log2=Mr,i.max=Fr,i.min=Or,i.mod=vr,i.mul=Dr,i.pow=Kr,i.random=qr,i.round=Gr,i.sign=Vr,i.sin=Ur,i.sinh=Wr,i.sqrt=Xr,i.sub=zr,i.sum=Hr,i.tan=jr,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 Nr(r,e){return new this(r).div(e)}function Sr(r){return new this(r).exp()}function Cr(r){return A(r=new this(r),r.e+1,3)}function Lr(){var r,e,t=new this(0);for(B=!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 B=!0,new this(1/0);t=e}return B=!0,t.sqrt()}function mn(r){return r instanceof tt||r&&r.toStringTag===pn||!1}function Er(r){return new this(r).ln()}function Rr(r,e){return new this(r).log(e)}function Mr(r){return new this(r).log(2)}function _r(r){return new this(r).log(10)}function Fr(){return wn(this,arguments,"lt")}function Or(){return wn(this,arguments,"gt")}function vr(r,e){return new this(r).mod(e)}function Dr(r,e){return new this(r).mul(e)}function Kr(r,e){return new this(r).pow(e)}function qr(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/P),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%=P,n&&r&&(i=ne(10,P-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-=P)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<P&&(t-=P-n)}return s.e=t,s.d=a,s}function Gr(r){return A(r=new this(r),r.e+1,this.rounding)}function Vr(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Ur(r){return new this(r).sin()}function Wr(r){return new this(r).sinh()}function Xr(r){return new this(r).sqrt()}function zr(r,e){return new this(r).sub(e)}function Hr(){var r=0,e=arguments,t=new this(e[r]);for(B=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return B=!0,A(t,this.precision,this.rounding)}function jr(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(Et);gt=new tt(gt);ht=new tt(ht);var x=tt;import ke from"bn.js";var nt=1e4;function Y(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=j(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=Ot(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=Ot(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=Ot(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 Ot(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 Q=new xe(0),Se=new xe(1),Ee=new xe(-1),he=new xe(1).shln(64),xt=new xe(1).shln(128),vt=he.sub(Se),rt=64,An=xt.subn(1),ue=-443636,me=-ue,We=new xe("4295048016"),Xe=new xe("79226673521066979257578248091"),Ji=new xe("4295048017"),$i=new xe("79226673521066979257578248090"),Pn=16,kn="59543866431248",Bn="184467440737095516",In="15793534762490258745",At=new xe(10).pow(new xe(6));var eo=new xe("18446744073700000000");import{PublicKey as $r}from"@solana/web3.js";import{get as Nn,set as Qr}from"lodash";var Dt=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 Dt({name:r,logLevel:t}),Qr(Sn,r,e)}return e}import{MINT_SIZE as lo,TOKEN_PROGRAM_ID as fo,getTransferFeeConfig as po,unpackMint as go}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:g,owner:w,rentEpoch:p}=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:g,owner:new $r(w),rentEpoch:p}}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)=>j(U({},i),{accountInfo:n[o]}))}import Me from"bn.js";import ai from"big.js";import It from"bn.js";import ei from"toformat";var ti=ei,it=ti;import Bt from"big.js";import ri from"bn.js";import ii from"decimal.js-light";import ot from"bn.js";var Cn=9007199254740991;function we(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(ii),oi={[0]:st.ROUND_DOWN,[1]:st.ROUND_HALF_UP,[2]:st.ROUND_UP},si={[0]:Bt.roundDown,[1]:Bt.roundHalfUp,[2]:Bt.roundUp},D=class{constructor(e,t=new ri(1)){this.numerator=we(e),this.denominator=we(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new D(this.denominator,this.numerator)}add(e){let t=e instanceof D?e:new D(we(e));return this.denominator.eq(t.denominator)?new D(this.numerator.add(t.numerator),this.denominator):new D(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof D?e:new D(we(e));return this.denominator.eq(t.denominator)?new D(this.numerator.sub(t.numerator),this.denominator):new D(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof D?e:new D(we(e));return new D(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof D?e:new D(we(e));return new D(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:oi[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=si[n]||1,new Ut(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ui=be("Raydium_amount"),Ln=it(ai);function ci(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")):ui.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var ce=class extends D{constructor(t,n,i=!0,o){let s=new It(0),a=Wt.pow(new It(t.decimals));if(i)s=we(n);else{let u=new It(0),c=new It(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[m,l]=ci(n.toString(),t.decimals);u=we(m),c=we(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 mi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as En}from"@solana/spl-token";var Rn={chainId:101,address:mi.default.toBase58(),programId:En.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ze={chainId:101,address:"So11111111111111111111111111111111111111112",programId:En.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 Ht}from"@solana/web3.js";import{PublicKey as z,SystemProgram as Mn,SYSVAR_RENT_PUBKEY as li}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as di}from"@solana/spl-token";function Xt({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Ho=[Xt({pubkey:di,isWritable:!1}),Xt({pubkey:Mn.programId,isWritable:!1}),Xt({pubkey:li,isWritable:!1})];function zt({publicKey:r,transformSol:e}){let t=_n(r.toString());if(t instanceof z)return e&&t.equals(at)?Vt:t;if(e&&t.toString()===at.toBase58())return Vt;if(typeof t=="string"){if(t===z.default.toBase58())return z.default;try{return new z(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function _n(r){try{return new z(r)}catch{return r}}var jo=new z("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Zo=new z("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Yo=new z("SysvarRent111111111111111111111111111111111"),Qo=new z("SysvarC1ock11111111111111111111111111111111"),fi=new z("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Jo=new z("Sysvar1nstructions1111111111111111111111111"),$o=Mn.programId,es=new z("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ts=new z("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ns=new z("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),rs=new z("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),is=new z("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),os=new z("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),ss=new z("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),as=new z("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),us=new z("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),cs=new z("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ms=new z("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Vt=new z("So11111111111111111111111111111111111111112"),at=z.default;function Pt(r){return zt({publicKey:r,transformSol:!0})}var jt=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===at.toBase58()||e instanceof Ht&&at.equals(e)){this.decimals=ze.decimals,this.symbol=ze.symbol,this.name=ze.name,this.mint=new Ht(ze.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?Ht.default:zt({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Re=jt;Re.WSOL=new jt(j(U({},ze),{mint:ze.address}));var Zt=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=Zt;Nt.SOL=new Zt(Rn);import pi from"bn.js";var Fn=new D(new pi(100)),Ve=class extends D{toSignificant(e=5,t,n){return this.mul(Fn).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Fn).toFixed(e,t,n)}};var gi=be("Raydium_price"),Be=class extends D{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new D(Yt(n.decimals),Yt(i.decimals))}get raw(){return new D(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&&gi.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)}};import{PublicKey as Vs}from"@solana/web3.js";import Ws from"bn.js";var hi=new Me(0),ua=new Me(1),ca=new Me(2),ma=new Me(3),la=new Me(5),Wt=new Me(10),da=new Me(100),fa=new Me(1e3),pa=new Me(1e4);function Yt(r){return Wt.pow(we(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 Da}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qa}from"@solana/spl-token";import{ComputeBudgetProgram as Aa,Keypair as Ba,PublicKey as wi,Transaction as Na,TransactionMessage as Ca,VersionedTransaction as La}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _a}from"@solana/spl-token";var Fa=be("Raydium_txUtil");function ut(r,e){let[t,n]=wi.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}import{PublicKey as S}from"@solana/web3.js";var Wa=new S("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Xa=new S("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),za=new S("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ha=new S("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),ja=new S("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Za=new S("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Ya=new S("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Qa=new S("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ja=new S("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),$a=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),eu=new S("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),tu=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),nu=new S("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),ru=new S("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),iu=new S("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),ou=new S("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),su=new S("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),au=new S("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),uu=new S("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),cu=new S("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),mu=new S("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),lu=new S("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),yi=new S("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Ti=new S("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),xi=new S("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),du=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ai=new S("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),fu=new S("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Pi=new S("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var pu={SERUM_MARKET:S.default,OPENBOOK_MARKET:new S("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:S.default,FarmV3:new S("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new S("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new S("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new S("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new S("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new S("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new S("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new S("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new S("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:yi,CREATE_CPMM_POOL_AUTH:Ti,CREATE_CPMM_POOL_FEE_ACC:xi,FEE_DESTINATION_ID:new S("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:Ai,LCOK_CPMM_AUTH:Pi};import{PublicKey as ki,AddressLookupTableAccount as On}from"@solana/web3.js";var Bi={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new On({key:new ki("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:On.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};import{PublicKey as Ru,sendAndConfirmTransaction as Mu,SystemProgram as Ou,Transaction as vu,TransactionMessage as Ku,VersionedTransaction as qu}from"@solana/web3.js";import Vu from"axios";function vn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Qt(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Jt(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:Qt(r,e)}function Kn(r,e){return ct(r,e)?null:Jt(r,e)}var hc=Buffer.from("amm_config","utf8"),bc=Buffer.from("pool","utf8"),wc=Buffer.from("pool_vault","utf8"),yc=Buffer.from("pool_reward_vault","utf8"),Ii=Buffer.from("position","utf8"),Ni=Buffer.from("tick_array","utf8"),Tc=Buffer.from("operation","utf8"),Si=Buffer.from("pool_tick_array_bitmap_extension","utf8"),xc=Buffer.from("observation","utf8");function le(r,e,t){return ut([Ni,e.toBuffer(),vn(t)],r)}function qn(r,e){return ut([Ii,e.toBuffer()],r)}function St(r,e){return ut([Si,e.toBuffer()],r)}var Ac=Buffer.from("locked_position","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 vi}from"@solana/web3.js";import Wn,{isBN as Xn}from"bn.js";import{bits as Bc,BitStructure as Ic,blob as Ci,Blob as Nc,cstr as Sc,f32 as Cc,f32be as Lc,f64 as Ec,f64be as Rc,greedy as Mc,Layout as Li,ns64 as _c,ns64be as Fc,nu64 as Oc,nu64be as vc,offset as Dc,s16 as Kc,s16be as qc,s24 as Gc,s24be as Vc,s32 as Ei,s32be as Uc,s40 as Wc,s40be as Xc,s48 as zc,s48be as Hc,s8 as jc,seq as Ri,struct as Zc,Structure as Mi,u16 as _i,u16be as Yc,u24 as Qc,u24be as Jc,u32 as $c,u32be as em,u40 as tm,u40be as nm,u48 as rm,u48be as im,u8 as Fi,UInt as Oi,union as om,Union as sm,unionLayoutDiscriminator as am,utf8 as um}from"@solana/buffer-layout";var $t=Li,Gn=Mi;var en=Oi;var Vn=Fi,mt=_i;var Ue=Ei;var Un=Ri;var ye=Ci;var Je=class extends $t{constructor(t,n,i){super(t,i);this.blob=ye(t),this.signed=n}decode(t,n=0){let i=new Wn(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 Wn(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 F(r){return new Je(8,!1,r)}function Z(r){return new Je(16,!1,r)}function zn(r){return new Je(8,!0,r)}function Hn(r){return new Je(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(ye(32),e=>new vi(e),e=>e.toBuffer(),r)}function jn(r){return new Ct(Vn(),Di,Ki,r)}function Di(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function Ki(r){return r?1:0}var tn=class extends Gn{decode(e,t){return super.decode(e,t)}};function de(r,e,t){return new tn(r,e,t)}function H(r,e,t){let n,i=typeof e=="number"?e:Xn(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Xn(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 Un(r,i,t)}import Gi from"bn.js";var qi=15,O=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=I.getTickArrayStartIndexByTick(i,o),m=I.getInitializedTickArrayInRange(s,a,o,c,Math.floor(qi/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]=j(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=I.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/O.tickCount(t)),a=n?I.searchLowBitFromStart(i,o,s-1,1,t):I.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=I.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(I.checkIsOutOfBoundary(e)){if(e>me)return!1;let n=I.getTickArrayStartIndexByTick(ue,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return re*e}};var re=60,je=512,I=class{static getTickArrayAddressByTick(e,t,n,i){let o=I.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=I.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=O.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)*O.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 Gi(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[...I.searchLowBitFromStart(e,t,s-1,o,n),...I.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return I.searchHightBitFromStart(e,t,-7680,je,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=I.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=>I.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=O.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=>I.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=O.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<ue||e>me}static nextInitTick(e,t,n,i,o){if(O.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=N.getSqrtPriceX64FromTick(t),o=N.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=He.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=N.getSqrtPriceX64FromTick(o),a=N.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=N.getSqrtPriceX64FromTick(t),o=N.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=He.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=N.getSqrtPriceX64FromTick(o),a=N.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,_e=class{static maxTickInTickarrayBitmap(e){return e*re*je}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(!O.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-O.tickCount(n):t+O.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=Kn(1024,m);if(l!==null){let d=(c+l-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-O.tickCount(n)}}}},dt=class{static getBitmapOffset(e,t){if(!O.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=_e.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=_e.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:I.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=O.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}=_e.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=I.mergeTickArrayBitmap(e).shln(je-1-a),c=ct(512,u)?null:Qt(512,u);if(c!==null){let m=t-c*O.tickCount(n);return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o}}else{let u=I.mergeTickArrayBitmap(e).shrn(a),c=ct(512,u)?null:Jt(512,u);if(c!==null){let m=t+c*O.tickCount(n);return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:s-O.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%_e.maxTickInTickarrayBitmap(t),i=Math.floor(n/O.tickCount(t));return e<0&&n!=0&&(i=je-i),i}};var Wm=de([ye(8),ge("bump"),mt("index"),G(""),$e("protocolFeeRate"),$e("tradeFeeRate"),mt("tickSpacing"),H(F(),8,"")]),Vi=de([$e("blockTimestamp"),zn("tickCumulative"),H(F(),4)]),Xm=de([ye(8),jn("initialized"),F("recentEpoch"),mt("observationIndex"),G("poolId"),H(Vi,100,"observations"),H(F(),4)]),Ui=de([ge("rewardState"),F("openTime"),F("endTime"),F("lastUpdateTime"),Z("emissionsPerSecondX64"),F("rewardTotalEmissioned"),F("rewardClaimed"),G("tokenMint"),G("tokenVault"),G("creator"),Z("rewardGrowthGlobalX64")]),Zn=de([ye(8),ge("bump"),G("ammConfig"),G("creator"),G("mintA"),G("mintB"),G("vaultA"),G("vaultB"),G("observationId"),ge("mintDecimalsA"),ge("mintDecimalsB"),mt("tickSpacing"),Z("liquidity"),Z("sqrtPriceX64"),Ue("tickCurrent"),$e(),Z("feeGrowthGlobalX64A"),Z("feeGrowthGlobalX64B"),F("protocolFeesTokenA"),F("protocolFeesTokenB"),Z("swapInAmountTokenA"),Z("swapOutAmountTokenB"),Z("swapInAmountTokenB"),Z("swapOutAmountTokenA"),ge("status"),H(ge(),7,""),H(Ui,3,"rewardInfos"),H(F(),16,"tickArrayBitmap"),F("totalFeesTokenA"),F("totalFeesClaimedTokenA"),F("totalFeesTokenB"),F("totalFeesClaimedTokenB"),F("fundFeesTokenA"),F("fundFeesTokenB"),F("startTime"),H(F(),15*4-3,"padding")]),Wi=de([Z("growthInsideLastX64"),F("rewardAmountOwed")]),Yn=de([ye(8),ge("bump"),G("nftMint"),G("poolId"),Ue("tickLower"),Ue("tickUpper"),Z("liquidity"),Z("feeGrowthInsideLastX64A"),Z("feeGrowthInsideLastX64B"),F("tokenFeesOwedA"),F("tokenFeesOwedB"),H(Wi,3,"rewardInfos"),H(F(),8,"")]),zm=de([ye(8),ge("bump"),G("poolId"),Ue("tickLowerIndex"),Ue("tickUpperIndex"),Z("liquidity"),Z("feeGrowthInsideLastX64A"),Z("feeGrowthInsideLastX64B"),F("tokenFeesOwedA"),F("tokenFeesOwedB"),H(Z(),3,"rewardGrowthInside"),H(F(),8,"")]),Xi=de([Ue("tick"),Hn("liquidityNet"),Z("liquidityGross"),Z("feeGrowthOutsideX64A"),Z("feeGrowthOutsideX64B"),H(Z(),3,"rewardGrowthsOutsideX64"),H($e(),13,"")]),lt=de([ye(8),G("poolId"),Ue("startTickIndex"),H(Xi,re,"ticks"),ge("initializedTickCount"),H(ge(),115,"")]),Hm=de([ye(329),H(G(),100,"whitelistMints")]),Qn=de([ye(8),G("poolId"),H(H(F(),8),nn,"positiveTickArrayBitmap"),H(H(F(),8),nn,"negativeTickArrayBitmap")]),jm=de([F(),ge("bump"),G("owner"),G("poolId"),G("positionId"),G("nftAccount"),H(F(),8)]),Zm=de([ye(8),ge("bump"),G("lockOwner"),G("poolId"),G("positionId"),G("nftAccount"),G("lockNftMint"),F("recentEpoch"),H(F(),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 w,p,k,y;let a=N.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),u=N.getSqrtPriceX64FromTick(t.tickLower),c=N.getSqrtPriceX64FromTick(t.tickUpper),m=o?1+i:1-i,l=v.getAmountsFromLiquidity(a,u,c,n,o),[d,f]=[Y(l.amountA,(w=e.mintA.extensions)==null?void 0:w.feeConfig,s,!0),Y(l.amountB,(p=e.mintB.extensions)==null?void 0:p.feeConfig,s,!0)],[b,g]=[Y(new Ce(new x(l.amountA.toString()).mul(m).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),Y(new Ce(new x(l.amountB.toString()).mul(m).toFixed(0)),(y=e.mintB.extensions)==null?void 0:y.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:f,amountSlippageA:b,amountSlippageB:g,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:g,feeAmount:w}=Ze.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(Ee),remainingAccounts:u,executionPrice:g,feeAmount:w}}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 g=this.preInitializedTickArrayStartIndex(e,s);if(g.isExist){let{publicKey:w}=le(e.programId,e.id,g.nextStartIndex);a.push(w)}}catch{}a.push(m);let{amountCalculated:l,accounts:d,sqrtPriceX64:f,feeAmount:b}=Ze.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Ee),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(O.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):I.checkTickArrayIsInitialized(I.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,O.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/O.tickCount(e.tickSpacing)),i=t?I.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):I.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=O.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=_e.nextInitializedTickArrayStartIndex(I.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=j(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(Q)){s.push(f);continue}let b=new W(Math.min(f.endTime.toNumber(),n)),g=b.sub(f.lastUpdateTime),w=C.mulDivFloor(g,f.emissionsPerSecondX64,i),p=f.rewardGrowthGlobalX64.add(w),k=C.mulDivFloor(g,f.emissionsPerSecondX64,he),y=f.rewardTotalEmissioned.add(k);s.push(j(U({},f),{rewardGrowthGlobalX64:p,rewardTotalEmissioned:y,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=I.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=_e.maxTickInTickarrayBitmap(e),n=-t;return t>me&&(t=O.getArrayStartIndex(me,e)+O.tickCount(e)),n<ue&&(n=O.getArrayStartIndex(ue,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!O.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/O.tickCount(t)*je}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()]=Qn.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=I.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),m=I.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]=j(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(qn(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(),g=e.find(K=>K.state.id.toBase58()===b);if(g===void 0)continue;let w=g.state,p=I._getTickPriceLegacy({poolInfo:w,tick:f.tickLower,baseIn:!0}),k=I._getTickPriceLegacy({poolInfo:w,tick:f.tickUpper,baseIn:!0}),{amountA:y,amountB:M}=v.getAmountsFromLiquidity(w.sqrtPriceX64,p.tickSqrtPriceX64,k.tickSqrtPriceX64,f.liquidity,!1),X=1/(1-Math.sqrt(Math.sqrt(p.price.div(k.price).toNumber())));g.positionAccount=[...(a=g.positionAccount)!=null?a:[],{poolId:f.poolId,nftMint:f.nftMint,priceLower:p.price,priceUpper:k.price,amountA:y,amountB:M,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=>j(U({},K),{pendingReward:new W(0)})),leverage:X,tokenFeeAmountA:new W(0),tokenFeeAmountB:new W(0)}];let T=await I.getTickArrayAddressByTick(g.state.programId,f.poolId,f.tickLower,g.state.tickSpacing),J=await I.getTickArrayAddressByTick(g.state.programId,f.poolId,f.tickUpper,g.state.tickSpacing);l[`${g.state.programId.toString()}-${f.poolId.toString()}-${f.tickLower}`]=T,l[`${g.state.programId.toString()}-${f.poolId.toString()}-${f.tickUpper}`]=J}if(o){let d=Object.values(l),f=await Ge(t,d,{batchRequest:i}),b={};for(let g=0;g<d.length;g++){let w=f[g];if(w===null)continue;let p=d[g].toString();b[p]=lt.decode(w.data)}for(let{state:g,positionAccount:w}of e)if(!!w)for(let p of w){let k=`${g.programId.toString()}-${g.id.toString()}-${p.tickLower}`,y=`${g.programId.toString()}-${g.id.toString()}-${p.tickUpper}`,M=b[l[k].toString()],X=b[l[y].toString()],T=M.ticks[I.getTickOffsetInArray(p.tickLower,g.tickSpacing)],J=X.ticks[I.getTickOffsetInArray(p.tickUpper,g.tickSpacing)],{tokenFeeAmountA:K,tokenFeeAmountB:ee}=await ft.GetPositionFees(g,p,T,J),$=await ft.GetPositionRewards(g,p,T,J);p.tokenFeeAmountA=K.gte(new W(0))?K:new W(0),p.tokenFeeAmountB=ee.gte(new W(0))?ee:new W(0);for(let _=0;_<$.length;_++)p.rewardInfos[_].pendingReward=$[_].gte(new W(0))?$[_]: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=N.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let f=Y(o,l,i,!1),{allTrade:b,expectedAmountOut:g,remainingAccounts:w,executionPrice:p,feeAmount:k}=Ie.getOutputAmountAndRemainAccounts(e,t,n,f.amount.sub((fe=f.fee)!=null?fe:Q),c,u),y=Y(g,d,i,!1),M=N.sqrtPriceX64ToPrice(p,e.mintA.decimals,e.mintB.decimals),X=m?M:new x(1).div(M),T=g.mul(new W(Math.floor((1-s)*1e10))).div(new W(1e10)),J=Y(T,d,i,!1),K=m?e.currentPrice:new x(1).div(e.currentPrice),ee=new x(X).sub(K).abs(),$=K,_=new Ve(new x(ee).mul(10**15).toFixed(0),new x($).mul(10**15).toFixed(0));return{allTrade:b,realAmountIn:f,amountOut:y,minAmountOut:J,expirationTime:qe(f.expirationTime,y.expirationTime),currentPrice:e.currentPrice,executionPrice:X,priceImpact:_,fee:k,remainingAccounts:w,executionPriceX64:p}}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 Re(j(U({},c),{mint:c.address,isToken2022:c.programId===Jn.toBase58()})),new Re(j(U({},m),{mint:m.address,isToken2022:m.programId===Jn.toBase58()}))],{allTrade:f,realAmountIn:b,amountOut:g,minAmountOut:w,expirationTime:p,currentPrice:k,executionPrice:y,priceImpact:M,fee:X,remainingAccounts:T,executionPriceX64:J}=Ie.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Te(c.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),K=j(U({},b),{amount:new ce(l,b.amount),fee:b.fee===void 0?void 0:new ce(l,b.fee)}),ee=j(U({},g),{amount:new ce(d,g.amount),fee:g.fee===void 0?void 0:new ce(d,g.fee)}),$=j(U({},w),{amount:new ce(d,w.amount),fee:w.fee===void 0?void 0:new ce(d,w.fee)}),_=new Be({baseToken:l,denominator:new W(10).pow(new W(20+l.decimals)),quoteToken:d,numerator:k.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:y.mul(new x(10**(20+d.decimals))).toFixed(0)}),se=new ce(l,X);return{allTrade:f,realAmountIn:K,amountOut:ee,minAmountOut:$,expirationTime:p,currentPrice:_,executionPrice:fe,priceImpact:M,fee:se,remainingAccounts:T,executionPriceX64:J}}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=N.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let l=Y(o,c[n.toString()],i,!0),{expectedAmountIn:d,remainingAccounts:f,executionPrice:b,feeAmount:g}=Ie.getInputAmountAndRemainAccounts(e,t,n,l.amount.sub(($=l.fee)!=null?$:Q),m),w=u?e.mintB.address:e.mintA.address,p=Y(d,c[w],i,!1),k=N.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),y=u?k:new x(1).div(k),M=d.mul(new W(Math.floor((1+s)*1e10))).div(new W(1e10)),X=Y(M,c[w],i,!0),T=u?e.currentPrice:new x(1).div(e.currentPrice),J=new x(y).sub(T).abs(),K=T,ee=new Ve(new x(J).mul(10**15).toFixed(0),new x(K).mul(10**15).toFixed(0));return{amountIn:p,maxAmountIn:X,realAmountOut:l,expirationTime:qe(p.expirationTime,l.expirationTime),currentPrice:e.currentPrice,executionPrice:y,priceImpact:ee,fee:g,remainingAccounts:f}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var b,g,w;let o=e[t],s=I.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=I.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,((g=o.rewardApr[1])!=null?g:0)*f,((w=o.rewardApr[2])!=null?w: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 g=N.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),w=N.getSqrtPriceX64FromTick(s),p=N.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:y}=v.getAmountsFromLiquidityWithSlippage(g,w,p,t,!1,!1,0),{amountSlippageA:M,amountSlippageB:X}=v.getAmountsFromLiquidityWithSlippage(g,w,p,o,!1,!1,0),T=new x(k.toString()).div(new x(10).pow(f)).mul(l.value).add(new x(y.toString()).div(new x(10).pow(b)).mul(d.value)),J=new x(M.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(J)),$=new x(m.volumeFee).mul(365).div(c).mul(K).mul(100).toNumber(),_=3600*24*365,fe=e.rewardDefaultInfos.map(se=>{var q,on;let Fe=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||Fe===void 0?0:new x(te.value).mul(new x(se.perSecond).mul(_)).div(new x(10).pow(Fe)).mul(K).mul(100).toNumber()});return{feeApr:$,rewardsApr:fe,apr:$+fe.reduce((se,Fe)=>se+Fe,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var p,k;let m=N.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),l=N.getSqrtPriceX64FromTick(n),d=N.getSqrtPriceX64FromTick(i),f=a?1-s:1+s,b=Y(o,(p=e[t?"mintA":"mintB"].extensions)==null?void 0:p.feeConfig,u,!c),g=new W(new x(b.amount.sub((k=b.fee)!=null?k:Q).toString()).mul(f).toFixed(0)),w;if(m.lte(l))w=t?v.getLiquidityFromTokenAmountA(l,d,g,!a):new W(0);else if(m.lte(d)){let y=v.getLiquidityFromTokenAmountA(m,d,g,!a),M=v.getLiquidityFromTokenAmountB(l,m,g);w=t?y:M}else w=t?new W(0):v.getLiquidityFromTokenAmountB(l,d,g);return Ie.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:w,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var w,p,k,y;let u=N.getSqrtPriceX64FromTick(n),c=N.getSqrtPriceX64FromTick(i),m=a?1+s:1-s,l=v.getAmountsFromLiquidity(N.priceToSqrtPriceX64(new x(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,f]=[Y(l.amountA,(w=t.mintA.extensions)==null?void 0:w.feeConfig,e,!0),Y(l.amountB,(p=t.mintB.extensions)==null?void 0:p.feeConfig,e,!0)],[b,g]=[Y(l.amountA.muln(m),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),Y(l.amountB.muln(m),(y=t.mintB.extensions)==null?void 0:y.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:f,amountSlippageA:b,amountSlippageB:g,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)=>j(U({},u),{[c.id]:j(U({},n[c.id]),{id:new Te(c.id),version:6,programId:new Te(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:j(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(Q)||(o=o.add(Se)),o}static mulDivFloor(e,t,n){if(n.eq(Q))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(Q))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 zi(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 N=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(Q))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(Q))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(Q))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(Q))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(Q))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 N.getTickFromSqrtPriceX64(N.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=zi(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:N.getSqrtPriceX64FromTick(f).lte(e)?f:d}},He=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=N.getTickFromSqrtPriceX64(N.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=He.getTickWithPriceAndTickspacing(e,t,n,i),s=N.getSqrtPriceX64FromTick(o);return N.sqrtPriceX64ToPrice(s,n,i)}},v=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(Q))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(Q))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,vt):a.shrn(rt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),C.mulDivFloor(n,vt,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return v.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=v.getLiquidityFromTokenAmountA(e,n,i,!1),a=v.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return v.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:v.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new L(0)};if(e.lt(n)){let s=v.getTokenAmountAFromLiquidity(e,n,i,o),a=v.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new L(0),amountB:v.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=v.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 k,y,M,X;let c=N.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),m=N.getSqrtPriceX64FromTick(t),l=N.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,f=v.getAmountsFromLiquidity(c,m,l,i,s),[b,g]=[Y(f.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),Y(f.amountB,(y=e.mintB.extensions)==null?void 0:y.feeConfig,a,u)],[w,p]=[Y(new L(new x(f.amountA.toString()).mul(d).toFixed(0)),(M=e.mintA.extensions)==null?void 0:M.feeConfig,a,u),Y(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:g,amountSlippageA:w,amountSlippageB:p,expirationTime:qe(b.expirationTime,g.expirationTime)}}},Ze=class{static swapCompute(e,t,n,i,o,s,a,u,c,m,l,d,f,b,g=!1){if(d.eq(Q))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 w=d.gt(Q),p={amountSpecifiedRemaining:d,amountCalculated:Q,sqrtPriceX64:l,tick:c>f?Math.min(f+O.tickCount(m)-1,c):f,accounts:[],liquidity:u,feeAmount:new L(0)},k=f,y=n[f],M=0,X=!s&&y.startTickIndex===p.tick;for(;!p.amountSpecifiedRemaining.eq(Q)&&!p.sqrtPriceX64.eq(b);){M>10;let T={};T.sqrtPriceStartX64=p.sqrtPriceX64;let J=I.nextInitTick(y,p.tick,m,s,X),K=J||null,ee=null;if(!(K!=null&&K.liquidityGross.gtn(0))){let _=Ie.nextInitializedTickArrayStartIndex({tickCurrent:p.tick,tickSpacing:m,tickArrayBitmap:i,exBitmapInfo:o},k,s);if(!_.isExist){if(g)return{allTrade:!1,amountSpecifiedRemaining:p.amountSpecifiedRemaining,amountCalculated:p.amountCalculated,feeAmount:p.feeAmount,sqrtPriceX64:p.sqrtPriceX64,liquidity:p.liquidity,tickCurrent:p.tick,accounts:p.accounts};throw Error("swapCompute LiquidityInsufficient")}k=_.nextStartIndex;let{publicKey:fe}=le(e,t,k);ee=fe,y=n[k];try{K=I.firstInitializedTick(y,s)}catch{throw Error("not found next tick info")}}T.tickNext=K.tick,T.initialized=K.liquidityGross.gtn(0),f!==k&&ee&&(p.accounts.push(ee),f=k),T.tickNext<ue?T.tickNext=ue:T.tickNext>me&&(T.tickNext=me),T.sqrtPriceNextX64=N.getSqrtPriceX64FromTick(T.tickNext);let $;if(s&&T.sqrtPriceNextX64.lt(b)||!s&&T.sqrtPriceNextX64.gt(b)?$=b:$=T.sqrtPriceNextX64,[p.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=Ze.swapStepCompute(p.sqrtPriceX64,$,p.liquidity,p.amountSpecifiedRemaining,a,s),p.feeAmount=p.feeAmount.add(T.feeAmount),w?(p.amountSpecifiedRemaining=p.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),p.amountCalculated=p.amountCalculated.sub(T.amountOut)):(p.amountSpecifiedRemaining=p.amountSpecifiedRemaining.add(T.amountOut),p.amountCalculated=p.amountCalculated.add(T.amountIn.add(T.feeAmount))),p.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let _=K.liquidityNet;s&&(_=_.mul(Ee)),p.liquidity=v.addDelta(p.liquidity,_)}X=T.tickNext!=p.tick&&!s&&y.startTickIndex===T.tickNext,p.tick=s?T.tickNext-1:T.tickNext}else if(p.sqrtPriceX64!=T.sqrtPriceStartX64){let _=N.getTickFromSqrtPriceX64(p.sqrtPriceX64);X=_!=p.tick&&!s&&y.startTickIndex===_,p.tick=_}++M}try{let{nextStartIndex:T,isExist:J}=O.nextInitializedTickArray(p.tick,m,s,i,o);J&&f!==T&&(p.accounts.push(le(e,t,T).publicKey),f=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:Q,amountCalculated:p.amountCalculated,feeAmount:p.feeAmount,sqrtPriceX64:p.sqrtPriceX64,liquidity:p.liquidity,tickCurrent:p.tick,accounts:p.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(Q);if(u){let m=C.mulDivFloor(i,At.sub(new L(o.toString())),At);a.amountIn=s?v.getTokenAmountAFromLiquidity(t,e,n,!0):v.getTokenAmountBFromLiquidity(e,t,n,!0),m.gte(a.amountIn)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=N.getNextSqrtPriceX64FromInput(e,n,m,s)}else a.amountOut=s?v.getTokenAmountBFromLiquidity(t,e,n,!1):v.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Ee).gte(a.amountOut)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=N.getNextSqrtPriceX64FromOutput(e,n,i.mul(Ee),s);let c=t.eq(a.sqrtPriceX64Next);return s?(c&&u||(a.amountIn=v.getTokenAmountAFromLiquidity(a.sqrtPriceX64Next,e,n,!0)),c&&!u||(a.amountOut=v.getTokenAmountBFromLiquidity(a.sqrtPriceX64Next,e,n,!1))):(a.amountIn=c&&u?a.amountIn:v.getTokenAmountBFromLiquidity(e,a.sqrtPriceX64Next,n,!0),a.amountOut=c&&!u?a.amountOut:v.getTokenAmountAFromLiquidity(e,a.sqrtPriceX64Next,n,!1)),!u&&a.amountOut.gt(i.mul(Ee))&&(a.amountOut=i.mul(Ee)),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{v as LiquidityMath,C as MathUtil,N as SqrtPriceMath,Ze as SwapMath,He as TickMath};
//# sourceMappingURL=math.mjs.map