UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 96.5 kB
var er=Object.defineProperty,tr=Object.defineProperties;var nr=Object.getOwnPropertyDescriptors;var an=Object.getOwnPropertySymbols;var rr=Object.prototype.hasOwnProperty,ir=Object.prototype.propertyIsEnumerable;var un=(r,e,t)=>e in r?er(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,U=(r,e)=>{for(var t in e||(e={}))rr.call(e,t)&&un(r,t,e[t]);if(an)for(var t of an(e))ir.call(e,t)&&un(r,t,e[t]);return r},X=(r,e)=>tr(r,nr(e));import{PublicKey as Te}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as $n}from"@solana/spl-token";import z 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},dn,Le,I=!0,wt="[DecimalError] ",De=wt+"Invalid argument: ",fn=wt+"Precision limit exceeded",pn=wt+"crypto unavailable",gn="[object Decimal]",ae=Math.floor,ne=Math.pow,or=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,sr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ar=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,hn=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Pe=1e7,P=7,ur=9007199254740991,cr=gt.length-1,Rt=ht.length-1,h={toStringTag:gn};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=mr(n,xn(n,t)),n.precision=r,n.rounding=e,A(Le==2||Le==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};h.cubeRoot=h.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,m=this,l=m.constructor;if(!m.isFinite()||m.isZero())return new l(m);for(I=!1,o=m.s*ne(m.s*m,1/3),!o||Math.abs(o)==1/0?(t=oe(m.d),r=m.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ne(t,1/3),r=ae((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new l(t),n.s=m.s):n=new l(o.toString()),s=(r=l.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(m),n=W(c.plus(m).times(a),c.plus(u),s+2,1),oe(a.d).slice(0,s)===(t=oe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(A(a,r+1,0),a.times(a).times(a).eq(m))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(A(n,r+1,1),e=!n.times(n).times(n).eq(m));break}return I=!0,A(n,r,l.rounding,e)};h.decimalPlaces=h.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-ae(this.e/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 W(this,new this.constructor(r))};h.dividedToIntegerBy=h.divToInt=function(r){var e=this,t=e.constructor;return A(W(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,W(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};h.inverseCosine=h.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Ae(t,i,o):new t(0):new t(NaN):e.isZero()?Ae(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Ae(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};h.inverseHyperbolicCosine=h.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,I=!1,t=t.times(t).minus(1).sqrt().plus(t),I=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};h.inverseHyperbolicSine=h.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,I=!1,t=t.times(t).plus(1).sqrt().plus(t),I=!0,n.precision=r,n.rounding=e,t.ln())};h.inverseHyperbolicTangent=h.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?A(new o(i),r,e,!0):(o.precision=t=n-i.e,i=W(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(I=!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)),I=!0,A(s,m.precision=l,m.rounding=d,!0)};h.isFinite=function(){return!!this.d};h.isInteger=h.isInt=function(){return!!this.d&&ae(this.e/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(I=!1,a=l+f,s=ve(c,a),n=e?bt(m,a+10):ve(r,a),u=W(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=W(s,n,a,1),!o){+oe(u.d).slice(i+1,i+15)+1==1e14&&(u=A(u,l+1,0));break}while(et(u.d,i+=10,d));return I=!0,A(u,l,d)};h.minus=h.sub=function(r){var e,t,n,i,o,s,a,u,c,m,l,d,f=this,b=f.constructor;if(r=new b(r),!f.d||!r.d)return!f.s||!r.s?r=new b(NaN):f.d?r.s=-r.s:r=new b(r.d||f.s!==r.s?f:NaN),r;if(f.s!=r.s)return r.s=-r.s,f.plus(r);if(c=f.d,d=r.d,a=b.precision,u=b.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new b(f);else return new b(u===3?-0:0);return I?A(r,a,u):r}if(t=ae(r.e/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),I?A(r,a,u):r):new b(u===3?-0:0)};h.modulo=h.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?A(new n(t),n.precision,n.rounding):(I=!1,n.modulo==9?(e=W(t,r.abs(),0,3,1),e.s*=r.s):e=W(t,r,0,n.modulo,1),e=e.times(r),I=!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)),I?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),I?A(r,a,u):r};h.precision=h.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(De+r);return t.d?(e=bn(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=dr(n,xn(n,t)),n.precision=r,n.rounding=e,A(Le>2?t.neg():t,r,e,!0)):new n(NaN)};h.squareRoot=h.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,m=s.constructor;if(c!==1||!a||!a[0])return new m(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(I=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=oe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=ae((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new m(e)):n=new m(c.toString()),t=(u=m.precision)+3;;)if(o=n,n=o.plus(W(s,o,t+2,1)).times(.5),oe(o.d).slice(0,t)===(e=oe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(A(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(A(n,u+1,1),r=!n.times(n).eq(s));break}return I=!0,A(n,u,m.rounding,r)};h.tangent=h.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=W(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),I?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=bn(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(I=!1,a=new g(oe(b)),m=g.precision,g.precision=o=b.length*P*2;l=W(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=W(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=W(c,n,o,1).minus(f).abs().cmp(W(u,t,o,1).minus(f).abs())<1?[c,n]:[u,t],g.precision=m,I=!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]?(I=!1,t=W(t,r,0,e,1).times(r),I=!0,A(t)):(r.s=t.s,t=r),t};h.toNumber=function(){return+this};h.toOctal=function(r,e){return 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)<=ur)return i=wn(u,a,t,n),r.s<0?new u(1).div(i):A(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=ne(+a,c),e=t==0||!isFinite(t)?ae(c*(Math.log("0."+oe(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(I=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=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,I=!0,u.rounding=o,A(i,n,o))};h.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ne(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(pe(r,1,Ke),e===void 0?e=i.rounding:pe(e,0,8),n=A(new i(n),r,e),t=Ne(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};h.toSignificantDigits=h.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(pe(r,1,Ke),e===void 0?e=n.rounding:pe(e,0,8)),A(new n(t),r,e)};h.toString=function(){var r=this,e=r.constructor,t=Ne(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};h.truncated=h.trunc=function(){return A(new this.constructor(this),this.e+1,1)};h.valueOf=h.toJSON=function(){var r=this,e=r.constructor,t=Ne(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function oe(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=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 mr(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 W=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,E,V,T,J,K,ee,$,F,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)),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,F==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),F=q.length,ee=te.length),K=F,y=te.slice(0,F),E=y.length;E<F;)y[E++]=0;fe=q.slice(),fe.unshift(0),$=q[0],q[1]>=u/2&&++$;do d=0,c=e(q,y,F,E),c<0?(V=y[0],F!=E&&(V=V*u+(y[1]||0)),d=V/$|0,d>1?(d>=u&&(d=u-1),g=r(q,d,u),w=g.length,E=y.length,c=e(g,y,w,E),c==1&&(d--,t(g,F<w?fe:q,w,u))):(d==0&&(c=d=1),g=q.slice()),w=g.length,w<E&&g.unshift(0),t(y,g,E,u),c==-1&&(E=y.length,c=e(q,y,F,E),c<1&&(d++,t(y,F<E?fe:q,E,u))),E=y.length):c===0&&(d++,y=[0]),k[l++]=d,c&&y[0]?y[E++]=te[K]||0:(y=[te[K]],E=1);while((K++<ee||y[0]!==void 0)&&T--);b=y[0]!==void 0}k[0]||k.shift()}if(f==1)p.e=m,dn=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 I&&(r.e>f.maxE?(r.d=null,r.e=NaN):r.e<f.minE&&(r.e=0,r.d=[0])),r}function Ne(r,e,t){if(!r.isFinite())return Tn(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>cr)throw I=!0,t&&(r.precision=t),Error(fn);return A(new r(gt),e,1,!0)}function Ae(r,e,t){if(e>Rt)throw Error(fn);return A(new r(ht),e,t,!0)}function bn(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 wn(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/P+4);for(I=!1;;){if(t%2&&(o=o.times(e),mn(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),mn(e.d,s)}return I=!0,o}function cn(r){return r.d[r.d.length-1]&1}function yn(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function 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?(I=!1,u=b):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),l+=5;for(n=Math.log(ne(2,l))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=A(o.times(r),u,1),t=t.times(++m),a=s.plus(W(o,t,u,1)),oe(a.d).slice(0,u)===oe(s.d).slice(0,u)){for(i=l;i--;)s=A(s.times(s),u,1);if(e==null)if(c<3&&et(s.d,u-n,f,c))d.precision=u+=10,t=o=a=new d(1),m=0,c++;else return A(s,d.precision=b,f,I=!0);else return d.precision=b,s}s=a}}function 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?(I=!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,I=!0):g;for(l=g,u=s=g=W(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(W(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=W(u,new p(f),m,1),e==null)if(et(u.d,m-b,k,a))p.precision=m+=b,c=s=g=W(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,I=!0);else return p.precision=y,u;u=c,i+=2}}function Tn(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),I&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function lr(r,e){var t,n,i,o,s,a,u,c,m;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),hn.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(sr.test(e))t=16,e=e.toLowerCase();else if(or.test(e))t=2;else if(ar.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=wn(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,I=!1,s&&(r=W(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?ne(2,u):tt.pow(2,u))),I=!0,r)}function dr(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(I=!1,u=t.times(t),a=new r(n);;){if(s=W(a.times(u),new r(e++*e++),m,1),a=i?n.plus(s):n.minus(s),n=W(s.times(u),new r(e++*e++),m,1),s=a.plus(n),s.d[l]!==void 0){for(o=l;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return I=!0,s.d.length=l+1,s}function Tt(r,e){for(var t=r;--e;)t*=r;return t}function xn(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=cn(t)?n?2:3:n?4:1,e;Le=cn(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=Tn(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=W(r,d,t,n,0,i),l=r.d,o=r.e,c=dn),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 mn(r,e){if(r.length>e)return r.length=e,!0}function fr(r){return new this(r).abs()}function pr(r){return new this(r).acos()}function gr(r){return new this(r).acosh()}function hr(r,e){return new this(r).plus(e)}function br(r){return new this(r).asin()}function wr(r){return new this(r).asinh()}function yr(r){return new this(r).atan()}function Tr(r){return new this(r).atanh()}function xr(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(W(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(W(r,e,o,1)),t}function Ar(r){return new this(r).cbrt()}function Pr(r){return A(r=new this(r),r.e+1,2)}function kr(r,e,t){return new this(r).clamp(e,t)}function Br(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(pn);else this[t]=!1;else throw Error(De+t+": "+n);return this}function Ir(r){return new this(r).cos()}function Nr(r){return new this(r).cosh()}function An(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,ln(o)){c.s=o.s,I?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;I?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return _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),hn.test(o)?_t(c,o):lr(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=Br,i.clone=An,i.isDecimal=ln,i.abs=fr,i.acos=pr,i.acosh=gr,i.add=hr,i.asin=br,i.asinh=wr,i.atan=yr,i.atanh=Tr,i.atan2=xr,i.cbrt=Ar,i.ceil=Pr,i.clamp=kr,i.cos=Ir,i.cosh=Nr,i.div=Sr,i.exp=Cr,i.floor=Lr,i.hypot=Er,i.ln=Rr,i.log=Mr,i.log10=Fr,i.log2=_r,i.max=Or,i.min=vr,i.mod=Dr,i.mul=Kr,i.pow=qr,i.random=Gr,i.round=Vr,i.sign=Ur,i.sin=Wr,i.sinh=Xr,i.sqrt=zr,i.sub=Hr,i.sum=jr,i.tan=Zr,i.tanh=Yr,i.trunc=Qr,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 Sr(r,e){return new this(r).div(e)}function Cr(r){return new this(r).exp()}function Lr(r){return A(r=new this(r),r.e+1,3)}function Er(){var r,e,t=new this(0);for(I=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return I=!0,new this(1/0);t=e}return I=!0,t.sqrt()}function ln(r){return r instanceof tt||r&&r.toStringTag===gn||!1}function Rr(r){return new this(r).ln()}function Mr(r,e){return new this(r).log(e)}function _r(r){return new this(r).log(2)}function Fr(r){return new this(r).log(10)}function Or(){return yn(this,arguments,"lt")}function vr(){return yn(this,arguments,"gt")}function Dr(r,e){return new this(r).mod(e)}function Kr(r,e){return new this(r).mul(e)}function qr(r,e){return new this(r).pow(e)}function Gr(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(pn);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 Vr(r){return A(r=new this(r),r.e+1,this.rounding)}function Ur(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Wr(r){return new this(r).sin()}function Xr(r){return new this(r).sinh()}function zr(r){return new this(r).sqrt()}function Hr(r,e){return new this(r).sub(e)}function jr(){var r=0,e=arguments,t=new this(e[r]);for(I=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return I=!0,A(t,this.precision,this.rounding)}function Zr(r){return new this(r).tan()}function Yr(r){return new this(r).tanh()}function Qr(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=An(Et);gt=new tt(gt);ht=new tt(ht);var x=tt;import{PublicKey as ei}from"@solana/web3.js";import{get as Pn,set as Jr}from"lodash";var Ot=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},kn={},$r={};function he(r){let e=Pn(kn,r);if(!e){let t=Pn($r,r);e=new Ot({name:r,logLevel:t}),Jr(kn,r,e)}return e}import{MINT_SIZE as oo,TOKEN_PROGRAM_ID as so,getTransferFeeConfig as ao,unpackMint as uo}from"@solana/spl-token";var vt=he("Raydium_accountInfo_util");async function qe(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}=U({batchRequest:!1},t),s=Dt(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=Dt(u,10);a=(await(await Promise.all(c.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&vt.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"&&vt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(f[0],"base64"),executable:b,lamports:g,owner:new ei(w),rentEpoch:p}}return null})))}else try{a=await Promise.all(s.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&vt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function Kt(r,e,t){let n=await qe(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>X(U({},i),{accountInfo:n[o]}))}import Re from"bn.js";import ui from"big.js";import kt from"bn.js";import ti from"toformat";var ni=ti,nt=ni;import Pt from"big.js";import ii from"bn.js";import oi from"decimal.js-light";import rt from"bn.js";var Bn=9007199254740991;function be(r){let e=he("Raydium_parseBigNumberish");if(r instanceof rt)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new rt(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Bn||r<=-Bn)&&e.logWithError(`BigNumberish number overflow: ${r}`),new rt(String(r))):typeof r=="bigint"?new rt(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new rt(0))}var At=he("module/fraction"),Gt=nt(Pt),it=nt(oi),si={[0]:it.ROUND_DOWN,[1]:it.ROUND_HALF_UP,[2]:it.ROUND_UP},ai={[0]:Pt.roundDown,[1]:Pt.roundHalfUp,[2]:Pt.roundUp},D=class{constructor(e,t=new ii(1)){this.numerator=be(e),this.denominator=be(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(be(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(be(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(be(e));return new D(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof D?e:new D(be(e));return new D(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||At.logWithError(`${e} is not an integer.`),e<=0&&At.logWithError(`${e} is not positive.`),it.set({precision:e+1,rounding:si[n]});let i=new it(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)||At.logWithError(`${e} is not an integer.`),e<0&&At.logWithError(`${e} is negative.`),Gt.DP=e,Gt.RM=ai[n]||1,new Gt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ci=he("Raydium_amount"),In=nt(ui);function mi(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")):ci.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var ue=class extends D{constructor(t,n,i=!0,o){let s=new kt(0),a=Vt.pow(new kt(t.decimals));if(i)s=be(n);else{let u=new kt(0),c=new kt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[m,l]=mi(n.toString(),t.decimals);u=be(m),c=be(l)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=he(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 ue(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ue(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 In.DP=this.token.decimals,new In(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as li}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Nn}from"@solana/spl-token";var Sn={chainId:101,address:li.default.toBase58(),programId:Nn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},We={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Nn.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 Xt}from"@solana/web3.js";import{PublicKey as H,SystemProgram as Cn,SYSVAR_RENT_PUBKEY as di}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fi}from"@solana/spl-token";function Ut({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Go=[Ut({pubkey:fi,isWritable:!1}),Ut({pubkey:Cn.programId,isWritable:!1}),Ut({pubkey:di,isWritable:!1})];function Wt({publicKey:r,transformSol:e}){let t=Ln(r.toString());if(t instanceof H)return e&&t.equals(ot)?qt:t;if(e&&t.toString()===ot.toBase58())return qt;if(typeof t=="string"){if(t===H.default.toBase58())return H.default;try{return new H(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ln(r){try{return new H(r)}catch{return r}}var Vo=new H("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Uo=new H("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Wo=new H("SysvarRent111111111111111111111111111111111"),Xo=new H("SysvarC1ock11111111111111111111111111111111"),pi=new H("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),zo=new H("Sysvar1nstructions1111111111111111111111111"),Ho=Cn.programId,jo=new H("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Zo=new H("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Yo=new H("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Qo=new H("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Jo=new H("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),$o=new H("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),es=new H("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ts=new H("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ns=new H("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),rs=new H("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),is=new H("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),qt=new H("So11111111111111111111111111111111111111112"),ot=H.default;function xt(r){return Wt({publicKey:r,transformSol:!0})}var zt=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===ot.toBase58()||e instanceof Xt&&ot.equals(e)){this.decimals=We.decimals,this.symbol=We.symbol,this.name=We.name,this.mint=new Xt(We.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?Xt.default:Wt({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ee=zt;Ee.WSOL=new zt(X(U({},We),{mint:We.address}));var Ht=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Bt=Ht;Bt.SOL=new Ht(Sn);import gi from"bn.js";var En=new D(new gi(100)),Ge=class extends D{toSignificant(e=5,t,n){return this.mul(En).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(En).toFixed(e,t,n)}};var hi=he("Raydium_price"),ke=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(jt(n.decimals),jt(i.decimals))}get raw(){return new D(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new ke({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&hi.logWithError("mul token not equals");let n=super.mul(t);return new ke({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 Os}from"@solana/web3.js";import Ds from"bn.js";var bi=new Re(0),na=new Re(1),ra=new Re(2),ia=new Re(3),oa=new Re(5),Vt=new Re(10),sa=new Re(100),aa=new Re(1e3),ua=new Re(1e4);function jt(r){return Vt.pow(be(r))}function Dt(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 Ra}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _a}from"@solana/spl-token";import{ComputeBudgetProgram as ha,Keypair as ya,PublicKey as yi,Transaction as xa,TransactionMessage as Pa,VersionedTransaction as ka}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Sa}from"@solana/spl-token";var Ca=he("Raydium_txUtil");function st(r,e){let[t,n]=yi.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}import{PublicKey as S}from"@solana/web3.js";var Da=new S("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ka=new S("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),qa=new S("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ga=new S("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Va=new S("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Ua=new S("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Wa=new S("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Xa=new S("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),za=new S("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ha=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ja=new S("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Za=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ya=new S("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Qa=new S("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ja=new S("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),$a=new S("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),eu=new S("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),tu=new S("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),nu=new S("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),ru=new S("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),iu=new S("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ou=new S("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ti=new S("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),xi=new S("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Ai=new S("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),su=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Pi=new S("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),au=new S("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),ki=new S("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var uu={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:Ti,CREATE_CPMM_POOL_AUTH:xi,CREATE_CPMM_POOL_FEE_ACC:Ai,FEE_DESTINATION_ID:new S("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:Pi,LCOK_CPMM_AUTH:ki};import Be from"bn.js";var at=1e4;function j(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=X(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 Be(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===at){let u=new Be(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Zt(r.mul(new Be(at)),new Be(at-o.transferFeeBasisPoints)),c=new Be(o.maximumFee.toString()),m=u.sub(r).gt(c)?r.add(c):u,l=Zt(m.mul(new Be(o.transferFeeBasisPoints)),new Be(at)),d=l.gt(s)?s:l;return{amount:m,fee:d,expirationTime:a}}else{let u=Zt(r.mul(new Be(o.transferFeeBasisPoints)),new Be(at)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function Ve(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Zt(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Be(0))?t.add(new Be(1)):t}import{PublicKey as Bi,AddressLookupTableAccount as Rn}from"@solana/web3.js";var Ii={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Rn({key:new Bi("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Rn.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 Su,sendAndConfirmTransaction as Cu,SystemProgram as Ru,Transaction as Mu,TransactionMessage as Fu,VersionedTransaction as Ou}from"@solana/web3.js";import Du from"axios";import{PublicKey as Fi}from"@solana/web3.js";import On,{isBN as vn}from"bn.js";import{bits as cc,BitStructure as mc,blob as Ni,Blob as lc,cstr as dc,f32 as fc,f32be as pc,f64 as gc,f64be as hc,greedy as bc,Layout as Si,ns64 as wc,ns64be as yc,nu64 as Tc,nu64be as xc,offset as Ac,s16 as Pc,s16be as kc,s24 as Bc,s24be as Ic,s32 as Ci,s32be as Nc,s40 as Sc,s40be as Cc,s48 as Lc,s48be as Ec,s8 as Rc,seq as Li,struct as Mc,Structure as Ei,u16 as Ri,u16be as _c,u24 as Fc,u24be as Oc,u32 as vc,u32be as Dc,u40 as Kc,u40be as qc,u48 as Gc,u48be as Vc,u8 as Mi,UInt as _i,union as Uc,Union as Wc,unionLayoutDiscriminator as Xc,utf8 as zc}from"@solana/buffer-layout";var Yt=Si,Mn=Ei;var Qt=_i;var _n=Mi,ut=Ri;var Ue=Ci;var Fn=Li;var we=Ni;var Je=class extends Yt{constructor(t,n,i){super(t,i);this.blob=we(t),this.signed=n}decode(t,n=0){let i=new On(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 On(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 Qt(1,r)}function $e(r){return new Qt(4,r)}function O(r){return new Je(8,!1,r)}function Q(r){return new Je(16,!1,r)}function Dn(r){return new Je(8,!0,r)}function Kn(r){return new Je(16,!0,r)}var It=class extends Yt{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 It(we(32),e=>new Fi(e),e=>e.toBuffer(),r)}function qn(r){return new It(_n(),Oi,vi,r)}function Oi(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function vi(r){return r?1:0}var Jt=class extends Mn{decode(e,t){return super.decode(e,t)}};function me(r,e,t){return new Jt(r,e,t)}function Z(r,e,t){let n,i=typeof e=="number"?e:vn(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=vn(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 Fn(r,i,t)}import Ui from"bn.js";import xe from"bn.js";var Y=new xe(0),Se=new xe(1),Me=new xe(-1),ye=new xe(1).shln(64),Nt=new xe(1).shln(128),$t=ye.sub(Se),ct=64,Gn=Nt.subn(1),ce=-443636,le=-ce,Xe=new xe("4295048016"),ze=new xe("79226673521066979257578248091"),sm=new xe("4295048017"),am=new xe("79226673521066979257578248090"),Vn=16,Un="59543866431248",Wn="184467440737095516",Xn="15793534762490258745",St=new xe(10).pow(new xe(6));var um=new xe("18446744073700000000");import C from"bn.js";function zn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function en(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function tn(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function mt(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Hn(r,e){return mt(r,e)?null:en(r,e)}function jn(r,e){return mt(r,e)?null:tn(r,e)}var pm=Buffer.from("amm_config","utf8"),gm=Buffer.from("pool","utf8"),hm=Buffer.from("pool_vault","utf8"),bm=Buffer.from("pool_reward_vault","utf8"),Di=Buffer.from("position","utf8"),Ki=Buffer.from("tick_array","utf8"),wm=Buffer.from("operation","utf8"),qi=Buffer.from("pool_tick_array_bitmap_extension","utf8"),ym=Buffer.from("observation","utf8");function de(r,e,t){return st([Ki,e.toBuffer(),zn(t)],r)}function Zn(r,e){return st([Di,e.toBuffer()],r)}function Ct(r,e){return st([qi,e.toBuffer()],r)}var Tm=Buffer.from("locked_position","utf8");var Gi=15,v=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=N.getTickArrayStartIndexByTick(i,o),m=N.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Gi/2));for(let f=0;f<m.length;f++){let{publicKey:b}=de(t,n,m[f]);u.push(b)}let l=(await qe(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]=X(U({},b),{address:u[f]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=N.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let m=n[c];if(m===void 0)continue;let{nextTick:l,tickArrayAddress:d,tickArrayStartTickIndex:f}=this.firstInitializedTickInOneArray(e,t,m,s);[a,u,c]=[l,d,f]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/v.tickCount(t)),a=n?N.searchLowBitFromStart(i,o,s-1,1,t):N.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=re-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<re;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=de(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=N.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let m;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){m=d;break}u=u-1}else for(u=u+1;u<re;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){m=d;break}u=u+1}let{publicKey:l}=de(e,t,a);return{initializedTick:m,tickArrayAddress:l,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(N.checkIsOutOfBoundary(e)){if(e>le)return!1;let n=N.getTickArrayStartIndexByTick(ce,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return re*e}};var L=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(Y)||(o=o.add(Se)),o}static mulDivFloor(e,t,n){if(n.eq(Y))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(Y))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 C(e.mul(x.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Nt).sub(t).mod(Nt)}};function ie(r,e){return nn(r.mul(e),64,256)}function Vi(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function nn(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var B=class{static sqrtPriceX64ToPrice(e,t,n){return L.x64ToDecimal(e).pow(2).mul(x.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return L.decimalToX64(e.mul(x.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(Y))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(Y))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(Y))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(Y))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(Y))return e;let o=t.shln(ct);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?L.mulDivCeil(s,e,a):L.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 L.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(ct);if(i)return e.add(o.div(t));{let s=L.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<ce||e>le)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new C("18445821805675395072"):new C("18446744073709551616");return(t&2)!=0&&(n=ie(n,new C("18444899583751176192"))),(t&4)!=0&&(n=ie(n,new C("18443055278223355904"))),(t&8)!=0&&(n=ie(n,new C("18439367220385607680"))),(t&16)!=0&&(n=ie(n,new C("18431993317065453568"))),(t&32)!=0&&(n=ie(n,new C("18417254355718170624"))),(t&64)!=0&&(n=ie(n,new C("18387811781193609216"))),(t&128)!=0&&(n=ie(n,new C("18329067761203558400"))),(t&256)!=0&&(n=ie(n,new C("18212142134806163456"))),(t&512)!=0&&(n=ie(n,new C("17980523815641700352"))),(t&1024)!=0&&(n=ie(n,new C("17526086738831433728"))),(t&2048)!=0&&(n=ie(n,new C("16651378430235570176"))),(t&4096)!=0&&(n=ie(n,new C("15030750278694412288"))),(t&8192)!=0&&(n=ie(n,new C("12247334978884435968"))),(t&16384)!=0&&(n=ie(n,new C("8131365268886854656"))),(t&32768)!=0&&(n=ie(n,new C("3584323654725218816"))),(t&65536)!=0&&(n=ie(n,new C("696457651848324352"))),(t&131072)!=0&&(n=ie(n,new C("26294789957507116"))),(t&262144)!=0&&(n=ie(n,new C("37481735321082"))),e>0&&(n=Gn.div(n)),n}static getTickFromPrice(e,t,n){return B.getTickFromSqrtPriceX64(B.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(ze)||e.lt(Xe))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new C(t-64),i=Vi(n,32,128),o=new C("8000000000000000","hex"),s=0,a=new C(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new C(0))&&s<Vn;){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 C(Un)),d=nn(l.sub(new C(Wn)),64,128).toNumber(),f=nn(l.add(new C(Xn)),64,128).toNumber();return d==f?d:B.getSqrtPriceX64FromTick(f).lte(e)?f:d}},He=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=B.getTickFromSqrtPriceX64(B.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=B.getSqrtPriceX64FromTick(o);return B.sqrtPriceX64ToPrice(s,n,i)}},_=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(Y))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(ct),s=t.sub(e);return i?L.mulDivRoundingUp(L.mulDivCeil(o,s,t),Se,e):L.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(Y))throw new Error("sqrtPriceX64A must greater than 0");return i?L.mulDivCeil(n,t.sub(e),ye):L.mulDivFloor(n,t.sub(e),ye)}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?L.mulDivRoundingUp(a,Se,$t):a.shrn(ct)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),L.mulDivFloor(n,$t,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return _.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=_.getLiquidityFromTokenAmountA(e,n,i,!1),a=_.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return _.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:_.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new C(0)};if(e.lt(n)){let s=_.getTokenAmountAFromLiquidity(e,n,i,o),a=_.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new C(0),amountB:_.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=_.getAmountsFromLiquidity(e,t,n,i,s),m=o?1+a:1-a,l=new C(new x(u.toString()).mul(m).toFixed(0)),d=new C(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,E,V;let c=B.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),m=B.getSqrtPriceX64FromTick(t),l=B.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,f=_.getAmountsFromLiquidity(c,m,l,i,s),[b,g]=[j(f.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),j(f.amountB,(y=e.mintB.extensions)==null?void 0:y.feeConfig,a,u)],[w,p]=[j(new C(new x(f.amountA.toString()).mul(d).toFixed(0)),(E=e.mintA.extensions)==null?void 0:E.feeConfig,a,u),j(new C(new x(f.amountB.toString()).mul(d).toFixed(0)),(V=e.mintB.extensions)==null?void 0:V.feeConfig,a,u)];return{liquidity:i,amountA:b,amountB:g,amountSlippageA:w,amountSlippageB:p,expirationTime:Ve(b.expirationTime,g.expirationTime)}}},je=class{static swapCompute(e,t,n,i,o,s,a,u,c,m,l,d,f,b,g=!1){if(d.eq(Y))throw new Error("amountSpecified must not be 0");if(b||(b=s?Xe.add(Se):ze.sub(Se)),s){if(b.lt(Xe))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(ze))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(Y),p={amountSpecifiedRemaining:d,amountCalculated:Y,sqrtPriceX64:l,tick:c>f?Math.min(f+v.tickCount(m)-1,c):f,accounts:[],liquidity:u,feeAmount:new C(0)},k=f,y=n[f],E=0,V=!s&&y.startTickIndex===p.tick;for(;!p.amountSpecifiedRemaining.eq(Y)&&!p.sqrtPriceX64.eq(b);){E>10;let T={};T.sqrtPriceStartX64=p.sqrtPriceX64;let J=N.nextInitTick(y,p.tick,m,s,V),K=J||null,ee=null;if(!(K!=null&&K.liquidityGross.gtn(0))){let F=Ie.nextInitializedTickArrayStartIndex({tickCurrent:p.tick,tickSpacing:m,tickArrayBitmap:i,exBitmapInfo:o},k,s);if(!F.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=F.nextStartIndex;let{publicKey:fe}=de(e,t,k);ee=fe,y=n[k];try{K=N.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<ce?T.tickNext=ce:T.tickNext>le&&(T.tickNext=le),T.sqrtPriceNextX64=B.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]=je.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 F=K.liquidityNet;s&&(F=F.mul(Me)),p.liquidity=_.addDelta(p.liquidity,F)}V=T.tickNext!=p.tick&&!s&&y.startTickIndex===T.tickNext,p.tick=s?T.tickNext-1:T.tickNext}else if(p.sqrtPriceX64!=T.sqrtPriceStartX64){let F=B.getTickFromSqrtPriceX64(p.sqrtPriceX64);V=F!=p.tick&&!s&&y.startTickIndex===F,p.tick=F}++E}try{let{nextStartIndex:T,isExist:J}=v.nextInitializedTickArray(p.tick,m,s,i,o);J&&f!==T&&(p.accounts.push(de(e,t,T).publicKey),f=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:Y,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 C(0),amountIn:new C(0),amountOut:new C(0),feeAmount:new C(0)},u=i.gte(Y);if(u){let m=L.mulDivFloor(i,St.sub(new C(o.toString())),St);a.amountIn=s?_.getTokenAmountAFromLiquidity(t,e,n,!0):_.getTokenAmountBFromLiquidity(e,t,n,!0),m.gte(a.amountIn)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=B.getNextSqrtPriceX64FromInput(e,n,m,s)}else a.amountOut=s?_.getTokenAmountBFromLiquidity(t,e,n,!1):_.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Me).gte(a.amountOut)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=B.getNextSqrtPriceX64FromOutput(e,n,i.mul(Me),s);let c=t.eq(a.sqrtPriceX64Next);return s?(c&&u||(a.amountIn=_.getTokenAmountAFromLiquidity(a.sqrtPriceX64Next,e,n,!0)),c&&!u||(a.amountOut=_.getTokenAmountBFromLiquidity(a.sqrtPriceX64Next,e,n,!1))):(a.amountIn=c&&u?a.amountIn:_.getTokenAmountBFromLiquidity(e,a.sqrtPriceX64Next,n,!0),a.amountOut=c&&!u?a.amountOut:_.getTokenAmountAFromLiquidity(e,a.sqrtPriceX64Next,n,!1)),!u&&a.amountOut.gt(i.mul(Me))&&(a.amountOut=i.mul(Me)),u&&!a.sqrtPriceX64Next.eq(t)?a.feeAmount=i.sub(a.amountIn):a.feeAmount=L.mulDivCeil(a.amountIn,new C(o),St.sub(new C(o))),[a.sqrtPriceX64Next,a.amountIn,a.amountOut,a.feeAmount]}};var re=60,Ze=512,N=class{static getTickArrayAddressByTick(e,t,n,i){let o=N.getTickArrayStartIndexByTick(n,i),{publicKey:s}=de(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=N.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=re)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=v.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*v.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*re,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*re,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*re:e+t*re}static mergeTickArrayBitmap(e){let t=new Ui(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*re));return[...N.searchLowBitFromStart(e,t,s-1,o,n),...N.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return N.searchHightBitFromStart(e,t,-7680,Ze,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=N.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=de(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>N.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),m=(n+7680)%512;if(s[c].testn(m)&&a.push(n),n--,a.length===i)break}let u=v.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>N.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),m=(n+7680)%512;if(s[c].testn(m)&&a.push(n),n++,a.length===i)break}let u=v.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<ce||e>le}static nextInitTick(e,t,n,i,o){if(v.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<re;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=re-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<re;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=B.getSqrtPriceX64FromTick(t),o=B.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=B.getSqrtPriceX64FromTick(o),a=B.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=B.getSqrtPriceX64FromTick(t),o=B.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=B.getSqrtPriceX64FromTick(o),a=B.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new x(1).div(a)}}};var rn=14,_e=class{static maxTickInTickarrayBitmap(e){return e*re*Ze}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!v.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-v.tickCount(n):t+v.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*re,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let m=e.shln(1024-c-1),l=Hn(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=jn(1024,m);if(l!==null){let d=(c+l-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-v.tickCount(n)}}}},dt=class{static getBitmapOffset(e,t){if(!v.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=_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(le<=t)throw Error(`extensionTickBoundary check error: ${le}, ${t}`);if(n<=ce)throw Error(`extensionTickBoundary check error: ${n}, ${ce}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:N.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=v.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=_e.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=N.mergeTickArrayBitmap(e).shln(Ze-1-a),c=mt(512,u)?null:en(512,u);if(c!==null){let m=t-c*v.tickCount(n);return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o}}else{let u=N.mergeTickArrayBitmap(e).shrn(a),c=mt(512,u)?null:tn(512,u);if(c!==null){let m=t+c*v.tickCount(n);return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:s-v.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%_e.maxTickInTickarrayBitmap(t),i=Math.floor(n/v.tickCount(t));return e<0&&n!=0&&(i=Ze-i),i}};var rl=me([we(8),ge("bump"),ut("index"),G(""),$e("protocolFeeRate"),$e("tradeFeeRate"),ut("tickSpacing"),Z(O(),8,"")]),Wi=me([$e("blockTimestamp"),Dn("tickCumulative"),Z(O(),4)]),il=me([we(8),qn("initialized"),O("recentEpoch"),ut("observationIndex"),G("poolId"),Z(Wi,100,"observations"),Z(O(),4)]),Xi=me([ge("rewardState"),O("openTime"),O("endTime"),O("lastUpdateTime"),Q("emissionsPerSecondX64"),O("rewardTotalEmissioned"),O("rewardClaimed"),G("tokenMint"),G("tokenVault"),G("creator"),Q("rewardGrowthGlobalX64")]),Yn=me([we(8),ge("bump"),G("ammConfig"),G("creator"),G("mintA"),G("mintB"),G("vaultA"),G("vaultB"),G("observationId"),ge("mintDecimalsA"),ge("mintDecimalsB"),ut("tickSpacing"),Q("liquidity"),Q("sqrtPriceX64"),Ue("tickCurrent"),$e(),Q("feeGrowthGlobalX64A"),Q("feeGrowthGlobalX64B"),O("protocolFeesTokenA"),O("protocolFeesTokenB"),Q("swapInAmountTokenA"),Q("swapOutAmountTokenB"),Q("swapInAmountTokenB"),Q("swapOutAmountTokenA"),ge("status"),Z(ge(),7,""),Z(Xi,3,"rewardInfos"),Z(O(),16,"tickArrayBitmap"),O("totalFeesTokenA"),O("totalFeesClaimedTokenA"),O("totalFeesTokenB"),O("totalFeesClaimedTokenB"),O("fundFeesTokenA"),O("fundFeesTokenB"),O("startTime"),Z(O(),15*4-3,"padding")]),zi=me([Q("growthInsideLastX64"),O("rewardAmountOwed")]),Qn=me([we(8),ge("bump"),G("nftMint"),G("poolId"),Ue("tickLower"),Ue("tickUpper"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),O("tokenFeesOwedA"),O("tokenFeesOwedB"),Z(zi,3,"rewardInfos"),Z(O(),8,"")]),ol=me([we(8),ge("bump"),G("poolId"),Ue("tickLowerIndex"),Ue("tickUpperIndex"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),O("tokenFeesOwedA"),O("tokenFeesOwedB"),Z(Q(),3,"rewardGrowthInside"),Z(O(),8,"")]),Hi=me([Ue("tick"),Kn("liquidityNet"),Q("liquidityGross"),Q("feeGrowthOutsideX64A"),Q("feeGrowthOutsideX64B"),Z(Q(),3,"rewardGrowthsOutsideX64"),Z($e(),13,"")]),lt=me([we(8),G("poolId"),Ue("startTickIndex"),Z(Hi,re,"ticks"),ge("initializedTickCount"),Z(ge(),115,"")]),sl=me([we(329),Z(G(),100,"whitelistMints")]),Jn=me([we(8),G("poolId"),Z(Z(O(),8),rn,"positiveTickArrayBitmap"),Z(Z(O(),8),rn,"negativeTickArrayBitmap")]),al=me([O(),ge("bump"),G("owner"),G("poolId"),G("positionId"),G("nftAccount"),Z(O(),8)]),ul=me([we(8),ge("bump"),G("lockOwner"),G("poolId"),G("positionId"),G("nftAccount"),G("lockNftMint"),O("recentEpoch"),Z(O(),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=L.wrappingSubU128(L.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=L.wrappingSubU128(L.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=L.mulDivFloor(L.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ye),u=t.tokenFeesOwedA.add(a),c=L.mulDivFloor(L.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ye),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=L.mulDivFloor(L.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,ye),u=t.tokenFeesOwedA.add(a),c=L.mulDivFloor(L.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,ye),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=L.wrappingSubU128(u,c.growthInsideLastX64),l=L.mulDivFloor(m,t.liquidity,ye),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=L.wrappingSubU128(u,c.growthInsideLastX64),l=L.mulDivFloor(m,t.liquidity,ye),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(L.wrappingSubU128(L.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(L.wrappingSubU128(L.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=B.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),u=B.getSqrtPriceX64FromTick(t.tickLower),c=B.getSqrtPriceX64FromTick(t.tickUpper),m=o?1+i:1-i,l=_.getAmountsFromLiquidity(a,u,c,n,o),[d,f]=[j(l.amountA,(w=e.mintA.extensions)==null?void 0:w.feeConfig,s,!0),j(l.amountB,(p=e.mintB.extensions)==null?void 0:p.feeConfig,s,!0)],[b,g]=[j(new Ce(new x(l.amountA.toString()).mul(m).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),j(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:Ve(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}=je.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(Me),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}=de(e.programId,e.id,g.nextStartIndex);a.push(w)}}catch{}a.push(m);let{amountCalculated:l,accounts:d,sqrtPriceX64:f,feeAmount:b}=je.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Me),c,o);return a.push(...d),{expectedAmountIn:l,remainingAccounts:a,executionPrice:f,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ie.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?dt.checkTickArrayIsInit(v.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):N.checkTickArrayIsInitialized(N.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=de(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,v.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=de(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/v.tickCount(e.tickSpacing)),i=t?N.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):N.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=v.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=_e.nextInitializedTickArrayStartIndex(N.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=dt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<ce||t>le)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let 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=X(U({},l),{perSecond:L.x64ToDecimal(l.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Te(d)});if(f.tokenMint.equals(Te.default))continue;if(n<=f.openTime.toNumber()||i.eq(Y)){s.push(f);continue}let b=new z(Math.min(f.endTime.toNumber(),n)),g=b.sub(f.lastUpdateTime),w=L.mulDivFloor(g,f.emissionsPerSecondX64,i),p=f.rewardGrowthGlobalX64.add(w),k=L.mulDivFloor(g,f.emissionsPerSecondX64,ye),y=f.rewardTotalEmissioned.add(k);s.push(X(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=N.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=_e.maxTickInTickarrayBitmap(e),n=-t;return t>le&&(t=v.getArrayStartIndex(le,e)+v.tickCount(e)),n<ce&&(n=v.getArrayStartIndex(ce,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!v.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/v.tickCount(t)*Ze}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Kt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=Jn.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=N.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),m=N.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let l of m){let{publicKey:d}=de(u.programId,u.id,l);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await Kt(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]=X(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(Zn(f,d).publicKey);let m=await qe(t,c,{batchRequest:i}),l={};for(let d of m){if(d===null)continue;let f=Qn.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=N._getTickPriceLegacy({poolInfo:w,tick:f.tickLower,baseIn:!0}),k=N._getTickPriceLegacy({poolInfo:w,tick:f.tickUpper,baseIn:!0}),{amountA:y,amountB:E}=_.getAmountsFromLiquidity(w.sqrtPriceX64,p.tickSqrtPriceX64,k.tickSqrtPriceX64,f.liquidity,!1),V=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:E,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=>X(U({},K),{pendingReward:new z(0)})),leverage:V,tokenFeeAmountA:new z(0),tokenFeeAmountB:new z(0)}];let T=await N.getTickArrayAddressByTick(g.state.programId,f.poolId,f.tickLower,g.state.tickSpacing),J=await N.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 qe(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}`,E=b[l[k].toString()],V=b[l[y].toString()],T=E.ticks[N.getTickOffsetInArray(p.tickLower,g.tickSpacing)],J=V.ticks[N.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 z(0))?K:new z(0),p.tokenFeeAmountB=ee.gte(new z(0))?ee:new z(0);for(let F=0;F<$.length;F++)p.rewardInfos[F].pendingReward=$[F].gte(new z(0))?$[F]:new z(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?Xe.add(new z(1)):ze.sub(new z(1)):c=B.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let f=j(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:Y),c,u),y=j(g,d,i,!1),E=B.sqrtPriceX64ToPrice(p,e.mintA.decimals,e.mintB.decimals),V=m?E:new x(1).div(E),T=g.mul(new z(Math.floor((1-s)*1e10))).div(new z(1e10)),J=j(T,d,i,!1),K=m?e.currentPrice:new x(1).div(e.currentPrice),ee=new x(V).sub(K).abs(),$=K,F=new Ge(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:Ve(f.expirationTime,y.expirationTime),currentPrice:e.currentPrice,executionPrice:V,priceImpact:F,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 Ee(X(U({},c),{mint:c.address,isToken2022:c.programId===$n.toBase58()})),new Ee(X(U({},m),{mint:m.address,isToken2022:m.programId===$n.toBase58()}))],{allTrade:f,realAmountIn:b,amountOut:g,minAmountOut:w,expirationTime:p,currentPrice:k,executionPrice:y,priceImpact:E,fee:V,remainingAccounts:T,executionPriceX64:J}=Ie.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Te(c.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),K=X(U({},b),{amount:new ue(l,b.amount),fee:b.fee===void 0?void 0:new ue(l,b.fee)}),ee=X(U({},g),{amount:new ue(d,g.amount),fee:g.fee===void 0?void 0:new ue(d,g.fee)}),$=X(U({},w),{amount:new ue(d,w.amount),fee:w.fee===void 0?void 0:new ue(d,w.fee)}),F=new ke({baseToken:l,denominator:new z(10).pow(new z(20+l.decimals)),quoteToken:d,numerator:k.mul(new x(10**(20+d.decimals))).toFixed(0)}),fe=new ke({baseToken:l,denominator:new z(10).pow(new z(20+l.decimals)),quoteToken:d,numerator:y.mul(new x(10**(20+d.decimals))).toFixed(0)}),se=new ue(l,V);return{allTrade:f,realAmountIn:K,amountOut:ee,minAmountOut:$,expirationTime:p,currentPrice:F,executionPrice:fe,priceImpact:E,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?ze.sub(new z(1)):Xe.add(new z(1)):m=B.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let l=j(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?$:Y),m),w=u?e.mintB.address:e.mintA.address,p=j(d,c[w],i,!1),k=B.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),y=u?k:new x(1).div(k),E=d.mul(new z(Math.floor((1+s)*1e10))).div(new z(1e10)),V=j(E,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 Ge(new x(J).mul(10**15).toFixed(0),new x(K).mul(10**15).toFixed(0));return{amountIn:p,maxAmountIn:V,realAmountOut:l,expirationTime:Ve(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=N.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=N.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),m=Math.min(a,o.priceMax)-u,l=a-s,d=o.priceMax-o.priceMin,f;return m<=0?f=0:l===m?f=d/m:d===m?f=m/l:f=m/d*(m/l),{feeApr:o.feeApr*f,rewardsApr:[((b=o.rewardApr[0])!=null?b:0)*f,((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[xt(e.mintA.address).toString()],d=i[xt(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=B.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),w=B.getSqrtPriceX64FromTick(s),p=B.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:y}=_.getAmountsFromLiquidityWithSlippage(g,w,p,t,!1,!1,0),{amountSlippageA:E,amountSlippageB: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(E.toString()).div(new x(10).pow(f)).mul(l.value).add(new x(V.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(),F=3600*24*365,fe=e.rewardDefaultInfos.map(se=>{var q,sn;let Fe=se.mint.decimals,te=i[se.mint.address];return u<((q=se.startTime)!=null?q:0)||u>((sn=se.endTime)!=null?sn:0)||!se.perSecond||!te||Fe===void 0?0:new x(te.value).mul(new x(se.perSecond).mul(F)).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=B.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),l=B.getSqrtPriceX64FromTick(n),d=B.getSqrtPriceX64FromTick(i),f=a?1-s:1+s,b=j(o,(p=e[t?"mintA":"mintB"].extensions)==null?void 0:p.feeConfig,u,!c),g=new z(new x(b.amount.sub((k=b.fee)!=null?k:Y).toString()).mul(f).toFixed(0)),w;if(m.lte(l))w=t?_.getLiquidityFromTokenAmountA(l,d,g,!a):new z(0);else if(m.lte(d)){let y=_.getLiquidityFromTokenAmountA(m,d,g,!a),E=_.getLiquidityFromTokenAmountB(l,m,g);w=t?y:E}else w=t?new z(0):_.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=B.getSqrtPriceX64FromTick(n),c=B.getSqrtPriceX64FromTick(i),m=a?1+s:1-s,l=_.getAmountsFromLiquidity(B.priceToSqrtPriceX64(new x(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,f]=[j(l.amountA,(w=t.mintA.extensions)==null?void 0:w.feeConfig,e,!0),j(l.amountB,(p=t.mintB.extensions)==null?void 0:p.feeConfig,e,!0)],[b,g]=[j(l.amountA.muln(m),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),j(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:Ve(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 qe(e,i)).forEach((u,c)=>{!u||(n[i[c].toBase58()]=Yn.decode(u.data))});let s=t.map(u=>Ct(new Te(u.programId),new Te(u.id)).publicKey),a=await Ie.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>X(U({},u),{[c.id]:X(U({},n[c.id]),{id:new Te(c.id),version:6,programId:new Te(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:X(U({},c.config),{id:new Te(c.config.id),fundOwner:""}),currentPrice:new x(c.price),exBitmapAccount:Ct(new Te(c.programId),new Te(c.id)).publicKey,exBitmapInfo:a[Ct(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]}};function _l({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var y,E,V,T;let[c,m,l,d]=e<t?[e,t,n,i]:[t,e,i,n],f=B.priceToSqrtPriceX64(new x(r.price),r.mintA.decimals,r.mintB.decimals),b=B.getSqrtPriceX64FromTick(c),g=B.getSqrtPriceX64FromTick(m),[w,p]=[j(l,(y=r.mintA.extensions)==null?void 0:y.feeConfig,a,!u),j(d,(E=r.mintB.extensions)==null?void 0:E.feeConfig,a,!u)],k=_.getLiquidityFromTokenAmounts(f,b,g,w.amount.sub((V=w.fee)!=null?V:Y),p.amount.sub((T=p.fee)!=null?T:Y));return _.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:k,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var on={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function Fl(r){return X(U({},r),{type:"Concentrated",programId:r.programId.toString(),id:r.id.toString(),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Clmm",price:r.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:r.ammConfig.tradeFeeRate,openTime:r.startTime.toString(),tvl:0,day:on,week:on,month:on,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,burnPercent:0,config:X(U({},r.ammConfig),{id:r.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]})})}export{Ie as PoolUtils,Fl as clmmComputeInfoToApiInfo,_l as getLiquidityFromAmounts};
//# sourceMappingURL=pool.mjs.map