UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 96.4 kB
var $n=Object.defineProperty,er=Object.defineProperties;var tr=Object.getOwnPropertyDescriptors;var an=Object.getOwnPropertySymbols;var nr=Object.prototype.hasOwnProperty,rr=Object.prototype.propertyIsEnumerable;var un=(r,e,t)=>e in r?$n(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,U=(r,e)=>{for(var t in e||(e={}))nr.call(e,t)&&un(r,t,e[t]);if(an)for(var t of an(e))rr.call(e,t)&&un(r,t,e[t]);return r},X=(r,e)=>er(r,tr(e));import{PublicKey as Te}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Qn}from"@solana/spl-token";import H from"bn.js";var je=9e15,Ke=1e9,Lt="0123456789abcdef",gt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",ht="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Rt={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-je,maxE:je,crypto:!1},dn,Le,N=!0,yt="[DecimalError] ",Oe=yt+"Invalid argument: ",fn=yt+"Precision limit exceeded",pn=yt+"crypto unavailable",gn="[object Decimal]",ae=Math.floor,ne=Math.pow,ir=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,or=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,sr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,hn=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Pe=1e7,k=7,ar=9007199254740991,ur=gt.length-1,Et=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(Oe+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};h.comparedTo=h.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};h.cosine=h.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+k,n.rounding=1,t=cr(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(N=!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 N=!0,A(n,r,l.rounding,e)};h.decimalPlaces=h.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-ae(this.e/k))*k,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};h.dividedBy=h.div=function(r){return 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=Je(s,1,o.times(e),new s(1),!0);for(var u,c=r,m=new s(8);c--;)u=o.times(o),o=a.minus(u.times(m.minus(u.times(m))));return A(o,s.precision=t,s.rounding=n,!0)};h.hyperbolicSine=h.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=Je(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/Tt(5,r)),i=Je(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,A(i,e,t,!0)};h.hyperbolicTangent=h.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,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,N=!1,t=t.times(t).minus(1).sqrt().plus(t),N=!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,N=!1,t=t.times(t).plus(1).sqrt().plus(t),N=!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<=Et)return s=Ae(m,l+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new m(NaN);if(l+4<=Et)return s=Ae(m,l+4,d).times(.5),s.s=c.s,s}for(m.precision=a=l+10,m.rounding=1,t=Math.min(28,a/k+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(N=!1,e=Math.ceil(a/k),n=1,u=c.times(c),s=new m(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),N=!0,A(s,m.precision=l,m.rounding=d,!0)};h.isFinite=function(){return!!this.d};h.isInteger=h.isInt=function(){return!!this.d&&ae(this.e/k)>this.d.length-2};h.isNaN=function(){return!this.s};h.isNegative=h.isNeg=function(){return this.s<0};h.isPositive=h.isPos=function(){return this.s>0};h.isZero=function(){return!!this.d&&this.d[0]===0};h.lessThan=h.lt=function(r){return this.cmp(r)<0};h.lessThanOrEqualTo=h.lte=function(r){return this.cmp(r)<1};h.logarithm=h.log=function(r){var e,t,n,i,o,s,a,u,c=this,m=c.constructor,l=m.precision,d=m.rounding,f=5;if(r==null)r=new m(10),e=!0;else{if(r=new m(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new m(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new m(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(N=!1,a=l+f,s=De(c,a),n=e?bt(m,a+10):De(r,a),u=W(s,n,a,1),et(u.d,i=l,d))do if(a+=10,s=De(c,a),n=e?bt(m,a+10):De(r,a),u=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 N=!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 N?A(r,a,u):r}if(t=ae(r.e/k),m=ae(f.e/k),c=c.slice(),o=m-t,o){for(l=o<0,l?(e=c,o=-o,s=d.length):(e=d,t=m,s=c.length),n=Math.max(Math.ceil(a/k),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,l=n<s,l&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){l=c[n]<d[n];break}o=0}for(l&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=Pe-1;--c[i],c[n]+=Pe}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=wt(c,t),N?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):(N=!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),N=!0,t.minus(e))};h.naturalExponential=h.exp=function(){return _t(this)};h.naturalLogarithm=h.ln=function(){return De(this)};h.negated=h.neg=function(){var r=new this.constructor(this);return r.s=-r.s,A(r)};h.plus=h.add=function(r){var e,t,n,i,o,s,a,u,c,m,l=this,d=l.constructor;if(r=new d(r),!l.d||!r.d)return!l.s||!r.s?r=new d(NaN):l.d||(r=new d(r.d||l.s===r.s?l:NaN)),r;if(l.s!=r.s)return r.s=-r.s,l.minus(r);if(c=l.d,m=r.d,a=d.precision,u=d.rounding,!c[0]||!m[0])return m[0]||(r=new d(l)),N?A(r,a,u):r;if(o=ae(l.e/k),n=ae(r.e/k),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=m.length):(t=m,n=o,s=c.length),o=Math.ceil(a/k),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=m.length,s-i<0&&(i=s,t=m,m=c,c=t),e=0;i;)e=(c[--i]=c[i]+m[i]+e)/Pe|0,c[i]%=Pe;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=wt(c,n),N?A(r,a,u):r};h.precision=h.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Oe+r);return t.d?(e=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())+k,n.rounding=1,t=lr(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(N=!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 N=!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/k)+ae(r.e/k),u=d.length,c=f.length,u<c&&(o=d,d=f,f=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+f[n]*d[i-n-1]+e,o[i--]=a%Pe|0,e=a/Pe|0;o[i]=(o[i]+e)%Pe|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=wt(o,t),N?A(r,l.precision,l.rounding):r};h.toBinary=function(r,e){return Mt(this,2,r,e)};h.toDecimalPlaces=h.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(pe(r,0,Ke),e===void 0?e=n.rounding:pe(e,0,8),A(t,r+t.e+1,e))};h.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ne(n,!0):(pe(r,0,Ke),e===void 0?e=i.rounding:pe(e,0,8),n=A(new i(n),r+1,e),t=Ne(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};h.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=Ne(i):(pe(r,0,Ke),e===void 0?e=o.rounding:pe(e,0,8),n=A(new o(i),r+i.e+1,e),t=Ne(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};h.toFraction=function(r){var e,t,n,i,o,s,a,u,c,m,l,d,f=this,b=f.d,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%k,e.d[0]=ne(10,s<0?k+s:s),r==null)r=o>0?e:c;else{if(a=new g(r),!a.isInt()||a.lt(c))throw Error(Oe+a);r=a.gt(e)?o>0?e:c:a}for(N=!1,a=new g(oe(b)),m=g.precision,g.precision=o=b.length*k*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,N=!0,d};h.toHexadecimal=h.toHex=function(r,e){return Mt(this,16,r,e)};h.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:pe(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(N=!1,t=W(t,r,0,e,1).times(r),N=!0,A(t)):(r.s=t.s,t=r),t};h.toNumber=function(){return+this};h.toOctal=function(r,e){return Mt(this,8,r,e)};h.toPower=h.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(ne(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return A(a,n,o);if(e=ae(r.e/k),e>=r.d.length-1&&(t=c<0?-c:c)<=ar)return i=yn(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):(N=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=_t(r.times(De(a,n+t)),n),i.d&&(i=A(i,n+5,1),et(i.d,n,o)&&(e=n+10,i=A(_t(r.times(De(a,e+t)),e),e+5,1),+oe(i.d).slice(n+1,n+15)+1==1e14&&(i=A(i,n+1,0)))),i.s=s,N=!0,u.rounding=o,A(i,n,o))};h.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ne(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(pe(r,1,Ke),e===void 0?e=i.rounding:pe(e,0,8),n=A(new i(n),r,e),t=Ne(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};h.toSignificantDigits=h.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(pe(r,1,Ke),e===void 0?e=n.rounding:pe(e,0,8)),A(new n(t),r,e)};h.toString=function(){var r=this,e=r.constructor,t=Ne(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};h.truncated=h.trunc=function(){return A(new this.constructor(this),this.e+1,1)};h.valueOf=h.toJSON=function(){var r=this,e=r.constructor,t=Ne(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function oe(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=k-n.length,t&&(o+=ve(t)),o+=n;s=r[e],n=s+"",t=k-n.length,t&&(o+=ve(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function pe(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Oe+r)}function et(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=k,i=0):(i=Math.ceil((e+1)/k),e%=k),o=ne(10,k-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==ne(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==ne(10,e-3)-1,s}function pt(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=Lt.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function cr(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Tt(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=Je(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var 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,y,p,B,w,R,V,T,Q,K,ee,$,M,fe,se=n.constructor,Me=n.s==i.s?1:-1,te=n.d,q=i.d;if(!te||!te[0]||!q||!q[0])return new se(!n.s||!i.s||(te?q&&te[0]==q[0]:!q)?NaN:te&&te[0]==0||!q?Me*0:Me/0);for(u?(f=1,m=n.e-i.e):(u=Pe,f=k,m=ae(n.e/f)-ae(i.e/f)),M=q.length,ee=te.length,p=new se(Me),B=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)B.push(1),b=!0;else{if(T=T/f+2|0,l=0,M==1){for(d=0,q=q[0],T++;(l<ee||d)&&T--;l++)Q=d*u+(te[l]||0),B[l]=Q/q|0,d=Q%q|0;b=d||l<ee}else{for(d=u/(q[0]+1)|0,d>1&&(q=r(q,d,u),te=r(te,d,u),M=q.length,ee=te.length),K=M,w=te.slice(0,M),R=w.length;R<M;)w[R++]=0;fe=q.slice(),fe.unshift(0),$=q[0],q[1]>=u/2&&++$;do d=0,c=e(q,w,M,R),c<0?(V=w[0],M!=R&&(V=V*u+(w[1]||0)),d=V/$|0,d>1?(d>=u&&(d=u-1),g=r(q,d,u),y=g.length,R=w.length,c=e(g,w,y,R),c==1&&(d--,t(g,M<y?fe:q,y,u))):(d==0&&(c=d=1),g=q.slice()),y=g.length,y<R&&g.unshift(0),t(w,g,R,u),c==-1&&(R=w.length,c=e(q,w,M,R),c<1&&(d++,t(w,M<R?fe:q,R,u))),R=w.length):c===0&&(d++,w=[0]),B[l++]=d,c&&w[0]?w[R++]=te[K]||0:(w=[te[K]],R=1);while((K++<ee||w[0]!==void 0)&&T--);b=w[0]!==void 0}B[0]||B.shift()}if(f==1)p.e=m,dn=b;else{for(l=1,d=B[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+=k,s=e,m=l[d=0],u=m/ne(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/k),a=l.length,d>=a)if(n){for(;a++<=d;)l.push(0);m=u=0,i=1,o%=k,s=o-k+1}else break e;else{for(m=a=l[d],i=1;a>=10;a/=10)i++;o%=k,s=o-k+i,u=s<0?0:m/ne(10,i-s-1)%10|0}if(n=n||e<0||l[d+1]!==void 0||(s<0?m:m%ne(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?m/ne(10,i-s):0:l[d-1])%10&1||t==(r.s<0?8:7)),e<1||!l[0])return l.length=0,c?(e-=r.e+1,l[0]=ne(10,(k-e%k)%k),r.e=-e||0):l[0]=r.e=0,r;if(o==0?(l.length=d,a=1,d--):(l.length=d+1,a=ne(10,k-o),l[d]=s>0?(m/ne(10,i-s)%ne(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=l[0];s>=10;s/=10)o++;for(s=l[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,l[0]==Pe&&(l[0]=1));break}else{if(l[d]+=a,l[d]!=Pe)break;l[d--]=0,a=1}for(o=l.length;l[--o]===0;)l.pop()}return N&&(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)+ve(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+ve(-i-1)+o,t&&(n=t-s)>0&&(o+=ve(n))):i>=s?(o+=ve(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+ve(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=ve(n))),o}function wt(r,e){var t=r[0];for(e*=k;t>=10;t/=10)e++;return e}function bt(r,e,t){if(e>ur)throw N=!0,t&&(r.precision=t),Error(fn);return A(new r(gt),e,1,!0)}function Ae(r,e,t){if(e>Et)throw Error(fn);return A(new r(ht),e,t,!0)}function bn(r){var e=r.length-1,t=e*k+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function ve(r){for(var e="";r--;)e+="0";return e}function yn(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/k+4);for(N=!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 N=!0,o}function cn(r){return r.d[r.d.length-1]&1}function wn(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function _t(r,e){var t,n,i,o,s,a,u,c=0,m=0,l=0,d=r.constructor,f=d.rounding,b=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(N=!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,N=!0);else return d.precision=b,s}s=a}}function De(r,e){var t,n,i,o,s,a,u,c,m,l,d,f=1,b=10,g=r,y=g.d,p=g.constructor,B=p.rounding,w=p.precision;if(g.s<0||!y||!y[0]||!g.e&&y[0]==1&&y.length==1)return new p(y&&!y[0]?-1/0:g.s!=1?NaN:y?0:g);if(e==null?(N=!1,m=w):m=e,p.precision=m+=b,t=oe(y),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,w).times(o+""),g=De(new p(n+"."+t.slice(1)),m-b).plus(c),p.precision=w,e==null?A(g,w,B,N=!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,w).times(o+""))),u=W(u,new p(f),m,1),e==null)if(et(u.d,m-b,B,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=w,B,N=!0);else return p.precision=w,u;u=c,i+=2}}function Tn(r){return String(r.s*r.s/0)}function Ft(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%k,t<0&&(n+=k),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=k;n<i;)r.d.push(+e.slice(n,n+=k));e=e.slice(n),n=k-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),N&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function mr(r,e){var t,n,i,o,s,a,u,c,m;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),hn.test(e))return Ft(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(or.test(e))t=16,e=e.toLowerCase();else if(ir.test(e))t=2;else if(sr.test(e))t=8;else throw Error(Oe+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=yn(n,new n(t),o,o*2)),c=pt(e,t,Pe),m=c.length-1,o=m;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=wt(c,m),r.d=c,N=!1,s&&(r=W(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?ne(2,u):tt.pow(2,u))),N=!0,r)}function lr(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Je(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Tt(5,t)),e=Je(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function Je(r,e,t,n,i){var o,s,a,u,c=1,m=r.precision,l=Math.ceil(m/k);for(N=!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 N=!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 Mt(r,e,t,n){var i,o,s,a,u,c,m,l,d,f=r.constructor,b=t!==void 0;if(b?(pe(t,1,Ke),n===void 0?n=f.rounding:pe(n,0,8)):(t=f.precision,n=f.rounding),!r.isFinite())m=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 dr(r){return new this(r).abs()}function fr(r){return new this(r).acos()}function pr(r){return new this(r).acosh()}function gr(r,e){return new this(r).plus(e)}function hr(r){return new this(r).asin()}function br(r){return new this(r).asinh()}function yr(r){return new this(r).atan()}function wr(r){return new this(r).atanh()}function Tr(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=Ae(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Ae(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Ae(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(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 xr(r){return new this(r).cbrt()}function Ar(r){return A(r=new this(r),r.e+1,2)}function Pr(r,e,t){return new this(r).clamp(e,t)}function kr(r){if(!r||typeof r!="object")throw Error(yt+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Ke,"rounding",0,8,"toExpNeg",-je,0,"toExpPos",0,je,"maxE",0,je,"minE",-je,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Rt[t]),(n=r[t])!==void 0)if(ae(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Oe+t+": "+n);if(t="crypto",i&&(this[t]=Rt[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(pn);else this[t]=!1;else throw Error(Oe+t+": "+n);return this}function Br(r){return new this(r).cos()}function Ir(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,N?!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++;N?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Ft(c,o.toString())}else if(u!=="string")throw Error(Oe+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),hn.test(o)?Ft(c,o):mr(c,o)}if(i.prototype=h,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=kr,i.clone=An,i.isDecimal=ln,i.abs=dr,i.acos=fr,i.acosh=pr,i.add=gr,i.asin=hr,i.asinh=br,i.atan=yr,i.atanh=wr,i.atan2=Tr,i.cbrt=xr,i.ceil=Ar,i.clamp=Pr,i.cos=Br,i.cosh=Ir,i.div=Nr,i.exp=Sr,i.floor=Cr,i.hypot=Lr,i.ln=Rr,i.log=Er,i.log10=Fr,i.log2=_r,i.max=Mr,i.min=vr,i.mod=Dr,i.mul=Or,i.pow=Kr,i.random=qr,i.round=Gr,i.sign=Vr,i.sin=Ur,i.sinh=Wr,i.sqrt=Xr,i.sub=Hr,i.sum=zr,i.tan=Zr,i.tanh=Yr,i.trunc=jr,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function Nr(r,e){return new this(r).div(e)}function Sr(r){return new this(r).exp()}function Cr(r){return A(r=new this(r),r.e+1,3)}function Lr(){var r,e,t=new this(0);for(N=!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 N=!0,new this(1/0);t=e}return N=!0,t.sqrt()}function ln(r){return r instanceof tt||r&&r.toStringTag===gn||!1}function Rr(r){return new this(r).ln()}function Er(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 Mr(){return wn(this,arguments,"lt")}function vr(){return wn(this,arguments,"gt")}function Dr(r,e){return new this(r).mod(e)}function Or(r,e){return new this(r).mul(e)}function Kr(r,e){return new this(r).pow(e)}function qr(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:pe(r,1,Ke),n=Math.ceil(r/k),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(pn);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=k,n&&r&&(i=ne(10,k-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=k)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<k&&(t-=k-n)}return s.e=t,s.d=a,s}function Gr(r){return A(r=new this(r),r.e+1,this.rounding)}function Vr(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Ur(r){return new this(r).sin()}function Wr(r){return new this(r).sinh()}function Xr(r){return new this(r).sqrt()}function Hr(r,e){return new this(r).sub(e)}function zr(){var r=0,e=arguments,t=new this(e[r]);for(N=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return N=!0,A(t,this.precision,this.rounding)}function Zr(r){return new this(r).tan()}function Yr(r){return new this(r).tanh()}function jr(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(Rt);gt=new tt(gt);ht=new tt(ht);var x=tt;import{PublicKey as $r}from"@solana/web3.js";import{get as Pn,set as Jr}from"lodash";var vt=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={},Qr={};function he(r){let e=Pn(kn,r);if(!e){let t=Pn(Qr,r);e=new vt({name:r,logLevel:t}),Jr(kn,r,e)}return e}import{MINT_SIZE as Qi,TOKEN_PROGRAM_ID as $i,getTransferFeeConfig as eo,unpackMint as to}from"@solana/spl-token";var Dt=he("Raydium_accountInfo_util");async function qe(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}=U({batchRequest:!1},t),s=Ot(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=Ot(u,10);a=(await(await Promise.all(c.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Dt.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:y,rentEpoch:p}=d;return f.length!==2&&f[1]!=="base64"&&Dt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(f[0],"base64"),executable:b,lamports:g,owner:new $r(y),rentEpoch:p}}return null})))}else try{a=await Promise.all(s.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&Dt.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 Ee from"bn.js";import ai from"big.js";import kt from"bn.js";import ei from"toformat";var ti=ei,nt=ti;import Pt from"big.js";import ri from"bn.js";import ii 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(ii),oi={[0]:it.ROUND_DOWN,[1]:it.ROUND_HALF_UP,[2]:it.ROUND_UP},si={[0]:Pt.roundDown,[1]:Pt.roundHalfUp,[2]:Pt.roundUp},O=class{constructor(e,t=new ri(1)){this.numerator=be(e),this.denominator=be(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new O(this.denominator,this.numerator)}add(e){let t=e instanceof O?e:new O(be(e));return this.denominator.eq(t.denominator)?new O(this.numerator.add(t.numerator),this.denominator):new O(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof O?e:new O(be(e));return this.denominator.eq(t.denominator)?new O(this.numerator.sub(t.numerator),this.denominator):new O(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof O?e:new O(be(e));return new O(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof O?e:new O(be(e));return new O(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:oi[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=si[n]||1,new Gt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ui=he("Raydium_amount"),In=nt(ai);function ci(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):ui.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var ue=class extends O{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]=ci(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 mi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Nn}from"@solana/spl-token";var Sn={chainId:101,address:mi.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 z,SystemProgram as Cn,SYSVAR_RENT_PUBKEY as li}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as di}from"@solana/spl-token";function Ut({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Fo=[Ut({pubkey:di,isWritable:!1}),Ut({pubkey:Cn.programId,isWritable:!1}),Ut({pubkey:li,isWritable:!1})];function Wt({publicKey:r,transformSol:e}){let t=Ln(r.toString());if(t instanceof z)return e&&t.equals(ot)?qt:t;if(e&&t.toString()===ot.toBase58())return qt;if(typeof t=="string"){if(t===z.default.toBase58())return z.default;try{return new z(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ln(r){try{return new z(r)}catch{return r}}var Mo=new z("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),vo=new z("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Do=new z("SysvarRent111111111111111111111111111111111"),Oo=new z("SysvarC1ock11111111111111111111111111111111"),fi=new z("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ko=new z("Sysvar1nstructions1111111111111111111111111"),qo=Cn.programId,Go=new z("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Vo=new z("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Uo=new z("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Wo=new z("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Xo=new z("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ho=new z("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),zo=new z("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Zo=new z("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Yo=new z("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),jo=new z("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Jo=new z("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),qt=new z("So11111111111111111111111111111111111111112"),ot=z.default;function xt(r){return Wt({publicKey:r,transformSol:!0})}var Ht=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)}},Re=Ht;Re.WSOL=new Ht(X(U({},We),{mint:We.address}));var zt=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Bt=zt;Bt.SOL=new zt(Sn);import pi from"bn.js";var Rn=new O(new pi(100)),Ge=class extends O{toSignificant(e=5,t,n){return this.mul(Rn).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Rn).toFixed(e,t,n)}};var gi=he("Raydium_price"),ke=class extends O{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new O(Zt(n.decimals),Zt(i.decimals))}get raw(){return new O(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&&gi.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)}};var hi=new Ee(0),qs=new Ee(1),Gs=new Ee(2),Vs=new Ee(3),Us=new Ee(5),Vt=new Ee(10),Ws=new Ee(100),Xs=new Ee(1e3),Hs=new Ee(1e4);function Zt(r){return Vt.pow(be(r))}function Ot(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 ha}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ya}from"@solana/spl-token";import{ComputeBudgetProgram as ea,Keypair as ra,PublicKey as yi,Transaction as oa,TransactionMessage as aa,VersionedTransaction as ua}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as da}from"@solana/spl-token";var fa=he("Raydium_txUtil");function st(r,e){let[t,n]=yi.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}import{PublicKey as P}from"@solana/web3.js";var Aa=new P("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Pa=new P("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),ka=new P("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ba=new P("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Ia=new P("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Na=new P("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Sa=new P("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ca=new P("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),La=new P("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ra=new P("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ea=new P("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),_a=new P("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Fa=new P("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Ma=new P("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),va=new P("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Da=new P("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Oa=new P("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Ka=new P("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),qa=new P("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ga=new P("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Va=new P("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ua=new P("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Wa=new P("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Xa=new P("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ha=new P("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),za=new P("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Za=new P("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Ya=new P("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),ja=new P("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Ja=new P("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Qa=new P("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var $a={OPEN_BOOK_PROGRAM:new P("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new P("Ray1111111111111111111111111111111111111111"),AMM_V4:new P("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new P("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new P("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new P("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new P("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new P("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new P("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new P("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new P("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new P("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:P.default,Router:new P("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new P("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new P("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new P("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new P("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new P("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new P("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new P("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new P("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new P("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new P("Ray1111111111111111111111111111111111111111")};import Be from"bn.js";var at=1e4;function Z(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=Yt(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=Yt(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=Yt(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 Yt(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 ou,AddressLookupTableAccount as su}from"@solana/web3.js";import{PublicKey as Pu,sendAndConfirmTransaction as ku,SystemProgram as Nu,Transaction as Su,TransactionMessage as Lu,VersionedTransaction as Ru}from"@solana/web3.js";import _u from"axios";import{PublicKey as qu}from"@solana/web3.js";import Vu from"bn.js";import wi from"bn.js";var zu=new wi(1e6);import{PublicKey as Si}from"@solana/web3.js";import Mn,{isBN as vn}from"bn.js";import{bits as gc,BitStructure as hc,blob as Ti,Blob as bc,cstr as yc,f32 as wc,f32be as Tc,f64 as xc,f64be as Ac,greedy as Pc,Layout as xi,ns64 as kc,ns64be as Bc,nu64 as Ic,nu64be as Nc,offset as Sc,s16 as Cc,s16be as Lc,s24 as Rc,s24be as Ec,s32 as Ai,s32be as _c,s40 as Fc,s40be as Mc,s48 as vc,s48be as Dc,s8 as Oc,seq as Pi,struct as Kc,Structure as ki,u16 as Bi,u16be as qc,u24 as Gc,u24be as Vc,u32 as Uc,u32be as Wc,u40 as Xc,u40be as Hc,u48 as zc,u48be as Zc,u8 as Ii,UInt as Ni,union as Yc,Union as jc,unionLayoutDiscriminator as Jc,utf8 as Qc}from"@solana/buffer-layout";var jt=xi,En=ki;var Jt=Ni;var _n=Ii,ut=Bi;var Ue=Ai;var Fn=Pi;var ye=Ti;var Qe=class extends jt{constructor(t,n,i){super(t,i);this.blob=ye(t),this.signed=n}decode(t,n=0){let i=new Mn(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 Mn(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 Jt(1,r)}function $e(r){return new Jt(4,r)}function v(r){return new Qe(8,!1,r)}function J(r){return new Qe(16,!1,r)}function Dn(r){return new Qe(8,!0,r)}function On(r){return new Qe(16,!0,r)}var It=class extends jt{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(ye(32),e=>new Si(e),e=>e.toBuffer(),r)}function Kn(r){return new It(_n(),Ci,Li,r)}function Ci(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function Li(r){return r?1:0}var Qt=class extends En{decode(e,t){return super.decode(e,t)}};function me(r,e,t){return new Qt(r,e,t)}function Y(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 vi from"bn.js";import xe from"bn.js";var j=new xe(0),Se=new xe(1),_e=new xe(-1),we=new xe(1).shln(64),Nt=new xe(1).shln(128),$t=we.sub(Se),ct=64,qn=Nt.subn(1),ce=-443636,le=-ce,Xe=new xe("4295048016"),He=new xe("79226673521066979257578248091"),dm=new xe("4295048017"),fm=new xe("79226673521066979257578248090"),Gn=16,Vn="59543866431248",Un="184467440737095516",Wn="15793534762490258745",St=new xe(10).pow(new xe(6));var pm=new xe("18446744073700000000");import C from"bn.js";function Xn(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 zn(r,e){return mt(r,e)?null:tn(r,e)}var Tm=Buffer.from("amm_config","utf8"),xm=Buffer.from("pool","utf8"),Am=Buffer.from("pool_vault","utf8"),Pm=Buffer.from("pool_reward_vault","utf8"),Ri=Buffer.from("position","utf8"),Ei=Buffer.from("tick_array","utf8"),km=Buffer.from("operation","utf8"),_i=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Bm=Buffer.from("observation","utf8");function de(r,e,t){return st([Ei,e.toBuffer(),Xn(t)],r)}function Zn(r,e){return st([Ri,e.toBuffer()],r)}function Ct(r,e){return st([_i,e.toBuffer()],r)}var Im=Buffer.from("locked_position","utf8");var Nm=Buffer.from("support_mint","utf8");var Fi=15,D=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=S.getTickArrayStartIndexByTick(i,o),m=S.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Fi/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=S.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/D.tickCount(t)),a=n?S.searchLowBitFromStart(i,o,s-1,1,t):S.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=S.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(S.checkIsOutOfBoundary(e)){if(e>le)return!1;let n=S.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(j)||(o=o.add(Se)),o}static mulDivFloor(e,t,n){if(n.eq(j))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(j))throw new Error("division by 0");return e.mul(t).add(n.sub(Se)).div(n)}static x64ToDecimal(e,t){return new x(e.toString()).div(x.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new 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 Mi(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 I=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(j))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(j))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(j))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(j))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(j))return e;let o=t.shln(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=qn.div(n)),n}static getTickFromPrice(e,t,n){return I.getTickFromSqrtPriceX64(I.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(He)||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=Mi(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<Gn;){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(Vn)),d=nn(l.sub(new C(Un)),64,128).toNumber(),f=nn(l.add(new C(Wn)),64,128).toNumber();return d==f?d:I.getSqrtPriceX64FromTick(f).lte(e)?f:d}},ze=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=I.getTickFromSqrtPriceX64(I.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=ze.getTickWithPriceAndTickspacing(e,t,n,i),s=I.getSqrtPriceX64FromTick(o);return I.sqrtPriceX64ToPrice(s,n,i)}},F=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(j))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(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(j))throw new Error("sqrtPriceX64A must greater than 0");return i?L.mulDivCeil(n,t.sub(e),we):L.mulDivFloor(n,t.sub(e),we)}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 F.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=F.getLiquidityFromTokenAmountA(e,n,i,!1),a=F.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return F.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:F.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new C(0)};if(e.lt(n)){let s=F.getTokenAmountAFromLiquidity(e,n,i,o),a=F.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new C(0),amountB:F.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=F.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 B,w,R,V;let c=I.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),m=I.getSqrtPriceX64FromTick(t),l=I.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,f=F.getAmountsFromLiquidity(c,m,l,i,s),[b,g]=[Z(f.amountA,(B=e.mintA.extensions)==null?void 0:B.feeConfig,a,u),Z(f.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,u)],[y,p]=[Z(new C(new x(f.amountA.toString()).mul(d).toFixed(0)),(R=e.mintA.extensions)==null?void 0:R.feeConfig,a,u),Z(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:y,amountSlippageB:p,expirationTime:Ve(b.expirationTime,g.expirationTime)}}},Ze=class{static swapCompute(e,t,n,i,o,s,a,u,c,m,l,d,f,b,g=!1){if(d.eq(j))throw new Error("amountSpecified must not be 0");if(b||(b=s?Xe.add(Se):He.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(He))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(l))throw new Error("sqrtPriceX64 must greater than current")}let y=d.gt(j),p={amountSpecifiedRemaining:d,amountCalculated:j,sqrtPriceX64:l,tick:c>f?Math.min(f+D.tickCount(m)-1,c):f,accounts:[],liquidity:u,feeAmount:new C(0)},B=f,w=n[f],R=0,V=!s&&w.startTickIndex===p.tick;for(;!p.amountSpecifiedRemaining.eq(j)&&!p.sqrtPriceX64.eq(b);){R>10;let T={};T.sqrtPriceStartX64=p.sqrtPriceX64;let Q=S.nextInitTick(w,p.tick,m,s,V),K=Q||null,ee=null;if(!(K!=null&&K.liquidityGross.gtn(0))){let M=Ie.nextInitializedTickArrayStartIndex({tickCurrent:p.tick,tickSpacing:m,tickArrayBitmap:i,exBitmapInfo:o},B,s);if(!M.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")}B=M.nextStartIndex;let{publicKey:fe}=de(e,t,B);ee=fe,w=n[B];try{K=S.firstInitializedTick(w,s)}catch{throw Error("not found next tick info")}}T.tickNext=K.tick,T.initialized=K.liquidityGross.gtn(0),f!==B&&ee&&(p.accounts.push(ee),f=B),T.tickNext<ce?T.tickNext=ce:T.tickNext>le&&(T.tickNext=le),T.sqrtPriceNextX64=I.getSqrtPriceX64FromTick(T.tickNext);let $;if(s&&T.sqrtPriceNextX64.lt(b)||!s&&T.sqrtPriceNextX64.gt(b)?$=b:$=T.sqrtPriceNextX64,[p.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=Ze.swapStepCompute(p.sqrtPriceX64,$,p.liquidity,p.amountSpecifiedRemaining,a,s),p.feeAmount=p.feeAmount.add(T.feeAmount),y?(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 M=K.liquidityNet;s&&(M=M.mul(_e)),p.liquidity=F.addDelta(p.liquidity,M)}V=T.tickNext!=p.tick&&!s&&w.startTickIndex===T.tickNext,p.tick=s?T.tickNext-1:T.tickNext}else if(p.sqrtPriceX64!=T.sqrtPriceStartX64){let M=I.getTickFromSqrtPriceX64(p.sqrtPriceX64);V=M!=p.tick&&!s&&w.startTickIndex===M,p.tick=M}++R}try{let{nextStartIndex:T,isExist:Q}=D.nextInitializedTickArray(p.tick,m,s,i,o);Q&&f!==T&&(p.accounts.push(de(e,t,T).publicKey),f=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:j,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(j);if(u){let m=L.mulDivFloor(i,St.sub(new C(o.toString())),St);a.amountIn=s?F.getTokenAmountAFromLiquidity(t,e,n,!0):F.getTokenAmountBFromLiquidity(e,t,n,!0),m.gte(a.amountIn)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=I.getNextSqrtPriceX64FromInput(e,n,m,s)}else a.amountOut=s?F.getTokenAmountBFromLiquidity(t,e,n,!1):F.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(_e).gte(a.amountOut)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=I.getNextSqrtPriceX64FromOutput(e,n,i.mul(_e),s);let c=t.eq(a.sqrtPriceX64Next);return s?(c&&u||(a.amountIn=F.getTokenAmountAFromLiquidity(a.sqrtPriceX64Next,e,n,!0)),c&&!u||(a.amountOut=F.getTokenAmountBFromLiquidity(a.sqrtPriceX64Next,e,n,!1))):(a.amountIn=c&&u?a.amountIn:F.getTokenAmountBFromLiquidity(e,a.sqrtPriceX64Next,n,!0),a.amountOut=c&&!u?a.amountOut:F.getTokenAmountAFromLiquidity(e,a.sqrtPriceX64Next,n,!1)),!u&&a.amountOut.gt(i.mul(_e))&&(a.amountOut=i.mul(_e)),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,Ye=512,S=class{static getTickArrayAddressByTick(e,t,n,i){let o=S.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=S.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=D.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)*D.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 vi(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[...S.searchLowBitFromStart(e,t,s-1,o,n),...S.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return S.searchHightBitFromStart(e,t,-7680,Ye,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=S.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=>S.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=D.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=>S.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=D.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<ce||e>le}static nextInitTick(e,t,n,i,o){if(D.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=I.getSqrtPriceX64FromTick(t),o=I.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new x(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new x(1).div(t),o=ze.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=I.getSqrtPriceX64FromTick(o),a=I.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=I.getSqrtPriceX64FromTick(t),o=I.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new x(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new x(1).div(t),o=ze.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=I.getSqrtPriceX64FromTick(o),a=I.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,Fe=class{static maxTickInTickarrayBitmap(e){return e*re*Ye}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(!D.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-D.tickCount(n):t+D.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=zn(1024,m);if(l!==null){let d=(c+l-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-D.tickCount(n)}}}},dt=class{static getBitmapOffset(e,t){if(!D.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Fe.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Fe.maxTickInTickarrayBitmap(e),n=-t;if(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:S.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=D.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=Fe.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=S.mergeTickArrayBitmap(e).shln(Ye-1-a),c=mt(512,u)?null:en(512,u);if(c!==null){let m=t-c*D.tickCount(n);return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o}}else{let u=S.mergeTickArrayBitmap(e).shrn(a),c=mt(512,u)?null:tn(512,u);if(c!==null){let m=t+c*D.tickCount(n);return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:s-D.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Fe.maxTickInTickarrayBitmap(t),i=Math.floor(n/D.tickCount(t));return e<0&&n!=0&&(i=Ye-i),i}};var ml=me([ye(8),ge("bump"),ut("index"),G(""),$e("protocolFeeRate"),$e("tradeFeeRate"),ut("tickSpacing"),Y(v(),8,"")]),Di=me([$e("blockTimestamp"),Dn("tickCumulative"),Y(v(),4)]),ll=me([ye(8),Kn("initialized"),v("recentEpoch"),ut("observationIndex"),G("poolId"),Y(Di,100,"observations"),Y(v(),4)]),Oi=me([ge("rewardState"),v("openTime"),v("endTime"),v("lastUpdateTime"),J("emissionsPerSecondX64"),v("rewardTotalEmissioned"),v("rewardClaimed"),G("tokenMint"),G("tokenVault"),G("creator"),J("rewardGrowthGlobalX64")]),Yn=me([ye(8),ge("bump"),G("ammConfig"),G("creator"),G("mintA"),G("mintB"),G("vaultA"),G("vaultB"),G("observationId"),ge("mintDecimalsA"),ge("mintDecimalsB"),ut("tickSpacing"),J("liquidity"),J("sqrtPriceX64"),Ue("tickCurrent"),$e(),J("feeGrowthGlobalX64A"),J("feeGrowthGlobalX64B"),v("protocolFeesTokenA"),v("protocolFeesTokenB"),J("swapInAmountTokenA"),J("swapOutAmountTokenB"),J("swapInAmountTokenB"),J("swapOutAmountTokenA"),ge("status"),Y(ge(),7,""),Y(Oi,3,"rewardInfos"),Y(v(),16,"tickArrayBitmap"),v("totalFeesTokenA"),v("totalFeesClaimedTokenA"),v("totalFeesTokenB"),v("totalFeesClaimedTokenB"),v("fundFeesTokenA"),v("fundFeesTokenB"),v("startTime"),Y(v(),15*4-3,"padding")]),Ki=me([J("growthInsideLastX64"),v("rewardAmountOwed")]),jn=me([ye(8),ge("bump"),G("nftMint"),G("poolId"),Ue("tickLower"),Ue("tickUpper"),J("liquidity"),J("feeGrowthInsideLastX64A"),J("feeGrowthInsideLastX64B"),v("tokenFeesOwedA"),v("tokenFeesOwedB"),Y(Ki,3,"rewardInfos"),Y(v(),8,"")]),dl=me([ye(8),ge("bump"),G("poolId"),Ue("tickLowerIndex"),Ue("tickUpperIndex"),J("liquidity"),J("feeGrowthInsideLastX64A"),J("feeGrowthInsideLastX64B"),v("tokenFeesOwedA"),v("tokenFeesOwedB"),Y(J(),3,"rewardGrowthInside"),Y(v(),8,"")]),qi=me([Ue("tick"),On("liquidityNet"),J("liquidityGross"),J("feeGrowthOutsideX64A"),J("feeGrowthOutsideX64B"),Y(J(),3,"rewardGrowthsOutsideX64"),Y($e(),13,"")]),lt=me([ye(8),G("poolId"),Ue("startTickIndex"),Y(qi,re,"ticks"),ge("initializedTickCount"),Y(ge(),115,"")]),fl=me([ye(329),Y(G(),100,"whitelistMints")]),Jn=me([ye(8),G("poolId"),Y(Y(v(),8),rn,"positiveTickArrayBitmap"),Y(Y(v(),8),rn,"negativeTickArrayBitmap")]),pl=me([v(),ge("bump"),G("owner"),G("poolId"),G("positionId"),G("nftAccount"),Y(v(),8)]),gl=me([ye(8),ge("bump"),G("lockOwner"),G("poolId"),G("positionId"),G("nftAccount"),G("lockNftMint"),v("recentEpoch"),Y(v(),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,we),u=t.tokenFeesOwedA.add(a),c=L.mulDivFloor(L.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,we),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,we),u=t.tokenFeesOwedA.add(a),c=L.mulDivFloor(L.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,we),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,we),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,we),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 y,p,B,w;let a=I.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),u=I.getSqrtPriceX64FromTick(t.tickLower),c=I.getSqrtPriceX64FromTick(t.tickUpper),m=o?1+i:1-i,l=F.getAmountsFromLiquidity(a,u,c,n,o),[d,f]=[Z(l.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),Z(l.amountB,(p=e.mintB.extensions)==null?void 0:p.feeConfig,s,!0)],[b,g]=[Z(new Ce(new x(l.amountA.toString()).mul(m).toFixed(0)),(B=e.mintA.extensions)==null?void 0:B.feeConfig,s,!0),Z(new Ce(new x(l.amountB.toString()).mul(m).toFixed(0)),(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:f,amountSlippageA:b,amountSlippageB: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:y}=Ze.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,m,o,s);return u.push(...b),{allTrade:d,expectedAmountOut:f.mul(_e),remainingAccounts:u,executionPrice:g,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!m)throw new Error("Invalid tick array");try{let g=this.preInitializedTickArrayStartIndex(e,s);if(g.isExist){let{publicKey:y}=de(e.programId,e.id,g.nextStartIndex);a.push(y)}}catch{}a.push(m);let{amountCalculated:l,accounts:d,sqrtPriceX64:f,feeAmount:b}=Ze.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(_e),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(D.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):S.checkTickArrayIsInitialized(S.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,D.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/D.tickCount(e.tickSpacing)),i=t?S.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):S.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=D.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Fe.nextInitializedTickArrayStartIndex(S.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(j)){s.push(f);continue}let b=new H(Math.min(f.endTime.toNumber(),n)),g=b.sub(f.lastUpdateTime),y=L.mulDivFloor(g,f.emissionsPerSecondX64,i),p=f.rewardGrowthGlobalX64.add(y),B=L.mulDivFloor(g,f.emissionsPerSecondX64,we),w=f.rewardTotalEmissioned.add(B);s.push(X(U({},f),{rewardGrowthGlobalX64:p,rewardTotalEmissioned:w,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=S.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Fe.maxTickInTickarrayBitmap(e),n=-t;return t>le&&(t=D.getArrayStartIndex(le,e)+D.tickCount(e)),n<ce&&(n=D.getArrayStartIndex(ce,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!D.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/D.tickCount(t)*Ye}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=S.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),m=S.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=jn.decode(d.data),b=f.poolId.toString(),g=e.find(K=>K.state.id.toBase58()===b);if(g===void 0)continue;let y=g.state,p=S._getTickPriceLegacy({poolInfo:y,tick:f.tickLower,baseIn:!0}),B=S._getTickPriceLegacy({poolInfo:y,tick:f.tickUpper,baseIn:!0}),{amountA:w,amountB:R}=F.getAmountsFromLiquidity(y.sqrtPriceX64,p.tickSqrtPriceX64,B.tickSqrtPriceX64,f.liquidity,!1),V=1/(1-Math.sqrt(Math.sqrt(p.price.div(B.price).toNumber())));g.positionAccount=[...(a=g.positionAccount)!=null?a:[],{poolId:f.poolId,nftMint:f.nftMint,priceLower:p.price,priceUpper:B.price,amountA:w,amountB:R,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 H(0)})),leverage:V,tokenFeeAmountA:new H(0),tokenFeeAmountB:new H(0)}];let T=await S.getTickArrayAddressByTick(g.state.programId,f.poolId,f.tickLower,g.state.tickSpacing),Q=await S.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}`]=Q}if(o){let d=Object.values(l),f=await qe(t,d,{batchRequest:i}),b={};for(let g=0;g<d.length;g++){let y=f[g];if(y===null)continue;let p=d[g].toString();b[p]=lt.decode(y.data)}for(let{state:g,positionAccount:y}of e)if(!!y)for(let p of y){let B=`${g.programId.toString()}-${g.id.toString()}-${p.tickLower}`,w=`${g.programId.toString()}-${g.id.toString()}-${p.tickUpper}`,R=b[l[B].toString()],V=b[l[w].toString()],T=R.ticks[S.getTickOffsetInArray(p.tickLower,g.tickSpacing)],Q=V.ticks[S.getTickOffsetInArray(p.tickUpper,g.tickSpacing)],{tokenFeeAmountA:K,tokenFeeAmountB:ee}=await ft.GetPositionFees(g,p,T,Q),$=await ft.GetPositionRewards(g,p,T,Q);p.tokenFeeAmountA=K.gte(new H(0))?K:new H(0),p.tokenFeeAmountB=ee.gte(new H(0))?ee:new H(0);for(let M=0;M<$.length;M++)p.rewardInfos[M].pendingReward=$[M].gte(new H(0))?$[M]:new H(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 H(1)):He.sub(new H(1)):c=I.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let f=Z(o,l,i,!1),{allTrade:b,expectedAmountOut:g,remainingAccounts:y,executionPrice:p,feeAmount:B}=Ie.getOutputAmountAndRemainAccounts(e,t,n,f.amount.sub((fe=f.fee)!=null?fe:j),c,u),w=Z(g,d,i,!1),R=I.sqrtPriceX64ToPrice(p,e.mintA.decimals,e.mintB.decimals),V=m?R:new x(1).div(R),T=g.mul(new H(Math.floor((1-s)*1e10))).div(new H(1e10)),Q=Z(T,d,i,!1),K=m?e.currentPrice:new x(1).div(e.currentPrice),ee=new x(V).sub(K).abs(),$=K,M=new Ge(new x(ee).mul(10**15).toFixed(0),new x($).mul(10**15).toFixed(0));return{allTrade:b,realAmountIn:f,amountOut:w,minAmountOut:Q,expirationTime:Ve(f.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:V,priceImpact:M,fee:B,remainingAccounts:y,executionPriceX64:p}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let u=i.address===e.mintB.address,[c,m]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,d]=[new Re(X(U({},c),{mint:c.address,isToken2022:c.programId===Qn.toBase58()})),new Re(X(U({},m),{mint:m.address,isToken2022:m.programId===Qn.toBase58()}))],{allTrade:f,realAmountIn:b,amountOut:g,minAmountOut:y,expirationTime:p,currentPrice:B,executionPrice:w,priceImpact:R,fee:V,remainingAccounts:T,executionPriceX64:Q}=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({},y),{amount:new ue(d,y.amount),fee:y.fee===void 0?void 0:new ue(d,y.fee)}),M=new ke({baseToken:l,denominator:new H(10).pow(new H(20+l.decimals)),quoteToken:d,numerator:B.mul(new x(10**(20+d.decimals))).toFixed(0)}),fe=new ke({baseToken:l,denominator:new H(10).pow(new H(20+l.decimals)),quoteToken:d,numerator:w.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:M,executionPrice:fe,priceImpact:R,fee:se,remainingAccounts:T,executionPriceX64:Q}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountOut:o,slippage:s,priceLimit:a=new x(0)}){var $;let u=n.toBase58()===e.mintA.address,c={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},m;a.equals(new x(0))?m=u?He.sub(new H(1)):Xe.add(new H(1)):m=I.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let l=Z(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?$:j),m),y=u?e.mintB.address:e.mintA.address,p=Z(d,c[y],i,!1),B=I.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),w=u?B:new x(1).div(B),R=d.mul(new H(Math.floor((1+s)*1e10))).div(new H(1e10)),V=Z(R,c[y],i,!0),T=u?e.currentPrice:new x(1).div(e.currentPrice),Q=new x(w).sub(T).abs(),K=T,ee=new Ge(new x(Q).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:w,priceImpact:ee,fee:g,remainingAccounts:f}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var b,g,y;let o=e[t],s=S.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=S.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,((y=o.rewardApr[2])!=null?y:0)*f],apr:o.apr*f}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,m=e[n],l=i[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=I.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),y=I.getSqrtPriceX64FromTick(s),p=I.getSqrtPriceX64FromTick(a),{amountSlippageA:B,amountSlippageB:w}=F.getAmountsFromLiquidityWithSlippage(g,y,p,t,!1,!1,0),{amountSlippageA:R,amountSlippageB:V}=F.getAmountsFromLiquidityWithSlippage(g,y,p,o,!1,!1,0),T=new x(B.toString()).div(new x(10).pow(f)).mul(l.value).add(new x(w.toString()).div(new x(10).pow(b)).mul(d.value)),Q=new x(R.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(Q)),$=new x(m.volumeFee).mul(365).div(c).mul(K).mul(100).toNumber(),M=3600*24*365,fe=e.rewardDefaultInfos.map(se=>{var q,sn;let Me=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||Me===void 0?0:new x(te.value).mul(new x(se.perSecond).mul(M)).div(new x(10).pow(Me)).mul(K).mul(100).toNumber()});return{feeApr:$,rewardsApr:fe,apr:$+fe.reduce((se,Me)=>se+Me,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var p,B;let m=I.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),l=I.getSqrtPriceX64FromTick(n),d=I.getSqrtPriceX64FromTick(i),f=Z(o,(p=e[t?"mintA":"mintB"].extensions)==null?void 0:p.feeConfig,u,!c),b=new H(new x(f.amount.sub((B=f.fee)!=null?B:j).toString()).toFixed(0)),g;if(m.lte(l))g=t?F.getLiquidityFromTokenAmountA(l,d,b,!a):new H(0);else if(m.lte(d)){let w=F.getLiquidityFromTokenAmountA(m,d,b,!a),R=F.getLiquidityFromTokenAmountB(l,m,b);g=t?w:R}else g=t?new H(0):F.getLiquidityFromTokenAmountB(l,d,b);let y=await Ie.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:g,slippage:s,add:a});return{liquidity:g,amountA:t?f:y.amountA,amountB:t?y.amountB:f,amountSlippageA:t?f:y.amountSlippageA,amountSlippageB:t?y.amountSlippageB:f,expirationTime:y.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var y,p,B,w;let u=I.getSqrtPriceX64FromTick(n),c=I.getSqrtPriceX64FromTick(i),m=a?1+s:1-s,l=F.getAmountsFromLiquidity(I.priceToSqrtPriceX64(new x(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,f]=[Z(l.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),Z(l.amountB,(p=t.mintB.extensions)==null?void 0:p.feeConfig,e,!0)],[b,g]=[Z(l.amountA.muln(m),(B=t.mintA.extensions)==null?void 0:B.feeConfig,e,!0),Z(l.amountB.muln(m),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:f,amountSlippageA:b,amountSlippageB: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 Vl({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var w,R,V,T;let[c,m,l,d]=e<t?[e,t,n,i]:[t,e,i,n],f=I.priceToSqrtPriceX64(new x(r.price),r.mintA.decimals,r.mintB.decimals),b=I.getSqrtPriceX64FromTick(c),g=I.getSqrtPriceX64FromTick(m),[y,p]=[Z(l,(w=r.mintA.extensions)==null?void 0:w.feeConfig,a,!u),Z(d,(R=r.mintB.extensions)==null?void 0:R.feeConfig,a,!u)],B=F.getLiquidityFromTokenAmounts(f,b,g,y.amount.sub((V=y.fee)!=null?V:j),p.amount.sub((T=p.fee)!=null?T:j));return F.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:B,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 Ul(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,Ul as clmmComputeInfoToApiInfo,Vl as getLiquidityFromAmounts};
//# sourceMappingURL=pool.mjs.map