UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 189 kB
var Cr=Object.defineProperty,Kr=Object.defineProperties;var Nr=Object.getOwnPropertyDescriptors;var sn=Object.getOwnPropertySymbols;var wi=Object.prototype.hasOwnProperty,hi=Object.prototype.propertyIsEnumerable;var yi=(r,e,t)=>e in r?Cr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,E=(r,e)=>{for(var t in e||(e={}))wi.call(e,t)&&yi(r,t,e[t]);if(sn)for(var t of sn(e))hi.call(e,t)&&yi(r,t,e[t]);return r},j=(r,e)=>Kr(r,Nr(e));var xt=(r,e)=>{var t={};for(var n in r)wi.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&sn)for(var n of sn(r))e.indexOf(n)<0&&hi.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as M}from"@solana/web3.js";import ve from"bn.js";var Bt=9e15,ft=1e9,On="0123456789abcdef",cn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",un="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",En={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Bt,maxE:Bt,crypto:!1},Ti,nt,G=!0,mn="[DecimalError] ",dt=mn+"Invalid argument: ",xi=mn+"Precision limit exceeded",Bi=mn+"crypto unavailable",Ii="[object Decimal]",Ce=Math.floor,he=Math.pow,Lr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Rr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Mr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Si=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,He=1e7,W=7,Or=9007199254740991,Er=cn.length-1,Fn=un.length-1,B={toStringTag:Ii};B.absoluteValue=B.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),F(r)};B.ceil=function(){return F(new this.constructor(this),this.e+1,2)};B.clampedTo=B.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(dt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};B.comparedTo=B.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,c=o.s,u=r.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==r.e)return o.e>r.e^c<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]^c<0?1:-1;return n===i?0:n>i^c<0?1:-1};B.cosine=B.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())+W,n.rounding=1,t=Fr(n,Ri(n,t)),n.precision=r,n.rounding=e,F(nt==2||nt==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};B.cubeRoot=B.cbrt=function(){var r,e,t,n,i,o,s,a,c,u,l=this,d=l.constructor;if(!l.isFinite()||l.isZero())return new d(l);for(G=!1,o=l.s*he(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=xe(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=he(t,1/3),r=Ce((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 d(t),n.s=l.s):n=new d(o.toString()),s=(r=d.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=oe(u.plus(l).times(a),u.plus(c),s+2,1),xe(a.d).slice(0,s)===(t=xe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(F(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(F(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return G=!0,F(n,r,d.rounding,e)};B.decimalPlaces=B.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ce(this.e/W))*W,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};B.dividedBy=B.div=function(r){return oe(this,new this.constructor(r))};B.dividedToIntegerBy=B.divToInt=function(r){var e=this,t=e.constructor;return F(oe(e,new t(r),0,1,1),t.precision,t.rounding)};B.equals=B.eq=function(r){return this.cmp(r)===0};B.floor=function(){return F(new this.constructor(this),this.e+1,3)};B.greaterThan=B.gt=function(r){return this.cmp(r)>0};B.greaterThanOrEqualTo=B.gte=function(r){var e=this.cmp(r);return e==1||e===0};B.hyperbolicCosine=B.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/fn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=It(s,1,o.times(e),new s(1),!0);for(var c,u=r,l=new s(8);u--;)c=o.times(o),o=a.minus(c.times(l.minus(c.times(l))));return F(o,s.precision=t,s.rounding=n,!0)};B.hyperbolicSine=B.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=It(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/fn(5,r)),i=It(o,2,i,i,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,F(i,e,t,!0)};B.hyperbolicTangent=B.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,oe(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};B.inverseCosine=B.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()?Xe(t,i,o):new t(0):new t(NaN):e.isZero()?Xe(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Xe(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};B.inverseHyperbolicCosine=B.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,G=!1,t=t.times(t).minus(1).sqrt().plus(t),G=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};B.inverseHyperbolicSine=B.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,G=!1,t=t.times(t).plus(1).sqrt().plus(t),G=!0,n.precision=r,n.rounding=e,t.ln())};B.inverseHyperbolicTangent=B.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?F(new o(i),r,e,!0):(o.precision=t=n-i.e,i=oe(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)};B.inverseSine=B.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=Xe(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)))};B.inverseTangent=B.atan=function(){var r,e,t,n,i,o,s,a,c,u=this,l=u.constructor,d=l.precision,m=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&d+4<=Fn)return s=Xe(l,d+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(d+4<=Fn)return s=Xe(l,d+4,m).times(.5),s.s=u.s,s}for(l.precision=a=d+10,l.rounding=1,t=Math.min(28,a/W+2|0),r=t;r;--r)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(G=!1,e=Math.ceil(a/W),n=1,c=u.times(u),s=new l(u),i=u;r!==-1;)if(i=i.times(c),o=s.minus(i.div(n+=2)),i=i.times(c),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)),G=!0,F(s,l.precision=d,l.rounding=m,!0)};B.isFinite=function(){return!!this.d};B.isInteger=B.isInt=function(){return!!this.d&&Ce(this.e/W)>this.d.length-2};B.isNaN=function(){return!this.s};B.isNegative=B.isNeg=function(){return this.s<0};B.isPositive=B.isPos=function(){return this.s>0};B.isZero=function(){return!!this.d&&this.d[0]===0};B.lessThan=B.lt=function(r){return this.cmp(r)<0};B.lessThanOrEqualTo=B.lte=function(r){return this.cmp(r)<1};B.logarithm=B.log=function(r){var e,t,n,i,o,s,a,c,u=this,l=u.constructor,d=l.precision,m=l.rounding,f=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.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(G=!1,a=d+f,s=mt(u,a),n=e?ln(l,a+10):mt(r,a),c=oe(s,n,a,1),Rt(c.d,i=d,m))do if(a+=10,s=mt(u,a),n=e?ln(l,a+10):mt(r,a),c=oe(s,n,a,1),!o){+xe(c.d).slice(i+1,i+15)+1==1e14&&(c=F(c,d+1,0));break}while(Rt(c.d,i+=10,m));return G=!0,F(c,d,m)};B.minus=B.sub=function(r){var e,t,n,i,o,s,a,c,u,l,d,m,f=this,p=f.constructor;if(r=new p(r),!f.d||!r.d)return!f.s||!r.s?r=new p(NaN):f.d?r.s=-r.s:r=new p(r.d||f.s!==r.s?f:NaN),r;if(f.s!=r.s)return r.s=-r.s,f.plus(r);if(u=f.d,m=r.d,a=p.precision,c=p.rounding,!u[0]||!m[0]){if(m[0])r.s=-r.s;else if(u[0])r=new p(f);else return new p(c===3?-0:0);return G?F(r,a,c):r}if(t=Ce(r.e/W),l=Ce(f.e/W),u=u.slice(),o=l-t,o){for(d=o<0,d?(e=u,o=-o,s=m.length):(e=m,t=l,s=u.length),n=Math.max(Math.ceil(a/W),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=m.length,d=n<s,d&&(s=n),n=0;n<s;n++)if(u[n]!=m[n]){d=u[n]<m[n];break}o=0}for(d&&(e=u,u=m,m=e,r.s=-r.s),s=u.length,n=m.length-s;n>0;--n)u[s++]=0;for(n=m.length;n>o;){if(u[--n]<m[n]){for(i=n;i&&u[--i]===0;)u[i]=He-1;--u[i],u[n]+=He}u[n]-=m[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(r.d=u,r.e=dn(u,t),G?F(r,a,c):r):new p(c===3?-0:0)};B.modulo=B.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?F(new n(t),n.precision,n.rounding):(G=!1,n.modulo==9?(e=oe(t,r.abs(),0,3,1),e.s*=r.s):e=oe(t,r,0,n.modulo,1),e=e.times(r),G=!0,t.minus(e))};B.naturalExponential=B.exp=function(){return vn(this)};B.naturalLogarithm=B.ln=function(){return mt(this)};B.negated=B.neg=function(){var r=new this.constructor(this);return r.s=-r.s,F(r)};B.plus=B.add=function(r){var e,t,n,i,o,s,a,c,u,l,d=this,m=d.constructor;if(r=new m(r),!d.d||!r.d)return!d.s||!r.s?r=new m(NaN):d.d||(r=new m(r.d||d.s===r.s?d:NaN)),r;if(d.s!=r.s)return r.s=-r.s,d.minus(r);if(u=d.d,l=r.d,a=m.precision,c=m.rounding,!u[0]||!l[0])return l[0]||(r=new m(d)),G?F(r,a,c):r;if(o=Ce(d.e/W),n=Ce(r.e/W),u=u.slice(),i=o-n,i){for(i<0?(t=u,i=-i,s=l.length):(t=l,n=o,s=u.length),o=Math.ceil(a/W),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=u.length,i=l.length,s-i<0&&(i=s,t=l,l=u,u=t),e=0;i;)e=(u[--i]=u[i]+l[i]+e)/He|0,u[i]%=He;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return r.d=u,r.e=dn(u,n),G?F(r,a,c):r};B.precision=B.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(dt+r);return t.d?(e=Ci(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};B.round=function(){var r=this,e=r.constructor;return F(new e(r),r.e+1,e.rounding)};B.sine=B.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())+W,n.rounding=1,t=Dr(n,Ri(n,t)),n.precision=r,n.rounding=e,F(nt>2?t.neg():t,r,e,!0)):new n(NaN)};B.squareRoot=B.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(G=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=xe(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=Ce((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(o=n,n=o.plus(oe(s,o,t+2,1)).times(.5),xe(o.d).slice(0,t)===(e=xe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(F(o,c+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(F(n,c+1,1),r=!n.times(n).eq(s));break}return G=!0,F(n,c,l.rounding,r)};B.tangent=B.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=oe(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,F(nt==2||nt==4?t.neg():t,r,e,!0)):new n(NaN)};B.times=B.mul=function(r){var e,t,n,i,o,s,a,c,u,l=this,d=l.constructor,m=l.d,f=(r=new d(r)).d;if(r.s*=l.s,!m||!m[0]||!f||!f[0])return new d(!r.s||m&&!m[0]&&!f||f&&!f[0]&&!m?NaN:!m||!f?r.s/0:r.s*0);for(t=Ce(l.e/W)+Ce(r.e/W),c=m.length,u=f.length,c<u&&(o=m,m=f,f=o,s=c,c=u,u=s),o=[],s=c+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,i=c+n;i>n;)a=o[i]+f[n]*m[i-n-1]+e,o[i--]=a%He|0,e=a/He|0;o[i]=(o[i]+e)%He|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=dn(o,t),G?F(r,d.precision,d.rounding):r};B.toBinary=function(r,e){return _n(this,2,r,e)};B.toDecimalPlaces=B.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Fe(r,0,ft),e===void 0?e=n.rounding:Fe(e,0,8),F(t,r+t.e+1,e))};B.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ye(n,!0):(Fe(r,0,ft),e===void 0?e=i.rounding:Fe(e,0,8),n=F(new i(n),r+1,e),t=Ye(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};B.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=Ye(i):(Fe(r,0,ft),e===void 0?e=o.rounding:Fe(e,0,8),n=F(new o(i),r+i.e+1,e),t=Ye(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};B.toFraction=function(r){var e,t,n,i,o,s,a,c,u,l,d,m,f=this,p=f.d,b=f.constructor;if(!p)return new b(f);if(u=t=new b(1),n=c=new b(0),e=new b(n),o=e.e=Ci(p)-f.e-1,s=o%W,e.d[0]=he(10,s<0?W+s:s),r==null)r=o>0?e:u;else{if(a=new b(r),!a.isInt()||a.lt(u))throw Error(dt+a);r=a.gt(e)?o>0?e:u:a}for(G=!1,a=new b(xe(p)),l=b.precision,b.precision=o=p.length*W*2;d=oe(a,e,0,1,1),i=t.plus(d.times(n)),i.cmp(r)!=1;)t=n,n=i,i=u,u=c.plus(d.times(i)),c=i,i=e,e=a.minus(d.times(i)),a=i;return i=oe(r.minus(t),n,0,1,1),c=c.plus(i.times(u)),t=t.plus(i.times(n)),c.s=u.s=f.s,m=oe(u,n,o,1).minus(f).abs().cmp(oe(c,t,o,1).minus(f).abs())<1?[u,n]:[c,t],b.precision=l,G=!0,m};B.toHexadecimal=B.toHex=function(r,e){return _n(this,16,r,e)};B.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:Fe(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]?(G=!1,t=oe(t,r,0,e,1).times(r),G=!0,F(t)):(r.s=t.s,t=r),t};B.toNumber=function(){return+this};B.toOctal=function(r,e){return _n(this,8,r,e)};B.toPower=B.pow=function(r){var e,t,n,i,o,s,a=this,c=a.constructor,u=+(r=new c(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new c(he(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,r.eq(1))return F(a,n,o);if(e=Ce(r.e/W),e>=r.d.length-1&&(t=u<0?-u:u)<=Or)return i=Ki(c,a,t,n),r.s<0?new c(1).div(i):F(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new c(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=he(+a,u),e=t==0||!isFinite(t)?Ce(u*(Math.log("0."+xe(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(G=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),i=vn(r.times(mt(a,n+t)),n),i.d&&(i=F(i,n+5,1),Rt(i.d,n,o)&&(e=n+10,i=F(vn(r.times(mt(a,e+t)),e),e+5,1),+xe(i.d).slice(n+1,n+15)+1==1e14&&(i=F(i,n+1,0)))),i.s=s,G=!0,c.rounding=o,F(i,n,o))};B.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ye(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Fe(r,1,ft),e===void 0?e=i.rounding:Fe(e,0,8),n=F(new i(n),r,e),t=Ye(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};B.toSignificantDigits=B.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Fe(r,1,ft),e===void 0?e=n.rounding:Fe(e,0,8)),F(new n(t),r,e)};B.toString=function(){var r=this,e=r.constructor,t=Ye(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};B.truncated=B.trunc=function(){return F(new this.constructor(this),this.e+1,1)};B.valueOf=B.toJSON=function(){var r=this,e=r.constructor,t=Ye(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function xe(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=W-n.length,t&&(o+=lt(t)),o+=n;s=r[e],n=s+"",t=W-n.length,t&&(o+=lt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Fe(r,e,t){if(r!==~~r||r<e||r>t)throw Error(dt+r)}function Rt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=W,i=0):(i=Math.ceil((e+1)/W),e%=W),o=he(10,W-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)==he(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)==he(10,e-3)-1,s}function an(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]+=On.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 Fr(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/fn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=It(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 oe=function(){function r(n,i,o){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*i+a,n[c]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(n[a]!=i[a]){c=n[a]>i[a]?1:-1;break}return c}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,c){var u,l,d,m,f,p,b,y,g,w,k,P,A,h,x,T,K,S,I,L,N=n.constructor,_=n.s==i.s?1:-1,U=n.d,D=i.d;if(!U||!U[0]||!D||!D[0])return new N(!n.s||!i.s||(U?D&&U[0]==D[0]:!D)?NaN:U&&U[0]==0||!D?_*0:_/0);for(c?(f=1,l=n.e-i.e):(c=He,f=W,l=Ce(n.e/f)-Ce(i.e/f)),I=D.length,K=U.length,g=new N(_),w=g.d=[],d=0;D[d]==(U[d]||0);d++);if(D[d]>(U[d]||0)&&l--,o==null?(h=o=N.precision,s=N.rounding):a?h=o+(n.e-i.e)+1:h=o,h<0)w.push(1),p=!0;else{if(h=h/f+2|0,d=0,I==1){for(m=0,D=D[0],h++;(d<K||m)&&h--;d++)x=m*c+(U[d]||0),w[d]=x/D|0,m=x%D|0;p=m||d<K}else{for(m=c/(D[0]+1)|0,m>1&&(D=r(D,m,c),U=r(U,m,c),I=D.length,K=U.length),T=I,k=U.slice(0,I),P=k.length;P<I;)k[P++]=0;L=D.slice(),L.unshift(0),S=D[0],D[1]>=c/2&&++S;do m=0,u=e(D,k,I,P),u<0?(A=k[0],I!=P&&(A=A*c+(k[1]||0)),m=A/S|0,m>1?(m>=c&&(m=c-1),b=r(D,m,c),y=b.length,P=k.length,u=e(b,k,y,P),u==1&&(m--,t(b,I<y?L:D,y,c))):(m==0&&(u=m=1),b=D.slice()),y=b.length,y<P&&b.unshift(0),t(k,b,P,c),u==-1&&(P=k.length,u=e(D,k,I,P),u<1&&(m++,t(k,I<P?L:D,P,c))),P=k.length):u===0&&(m++,k=[0]),w[d++]=m,u&&k[0]?k[P++]=U[T]||0:(k=[U[T]],P=1);while((T++<K||k[0]!==void 0)&&h--);p=k[0]!==void 0}w[0]||w.shift()}if(f==1)g.e=l,Ti=p;else{for(d=1,m=w[0];m>=10;m/=10)d++;g.e=d+l*f-1,F(g,a?o+g.e+1:o,s,p)}return g}}();function F(r,e,t,n){var i,o,s,a,c,u,l,d,m,f=r.constructor;e:if(e!=null){if(d=r.d,!d)return r;for(i=1,a=d[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=W,s=e,l=d[m=0],c=l/he(10,i-s-1)%10|0;else if(m=Math.ceil((o+1)/W),a=d.length,m>=a)if(n){for(;a++<=m;)d.push(0);l=c=0,i=1,o%=W,s=o-W+1}else break e;else{for(l=a=d[m],i=1;a>=10;a/=10)i++;o%=W,s=o-W+i,c=s<0?0:l/he(10,i-s-1)%10|0}if(n=n||e<0||d[m+1]!==void 0||(s<0?l:l%he(10,i-s-1)),u=t<4?(c||n)&&(t==0||t==(r.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(o>0?s>0?l/he(10,i-s):0:d[m-1])%10&1||t==(r.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=r.e+1,d[0]=he(10,(W-e%W)%W),r.e=-e||0):d[0]=r.e=0,r;if(o==0?(d.length=m,a=1,m--):(d.length=m+1,a=he(10,W-o),d[m]=s>0?(l/he(10,i-s)%he(10,s)|0)*a:0),u)for(;;)if(m==0){for(o=1,s=d[0];s>=10;s/=10)o++;for(s=d[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,d[0]==He&&(d[0]=1));break}else{if(d[m]+=a,d[m]!=He)break;d[m--]=0,a=1}for(o=d.length;d[--o]===0;)d.pop()}return G&&(r.e>f.maxE?(r.d=null,r.e=NaN):r.e<f.minE&&(r.e=0,r.d=[0])),r}function Ye(r,e,t){if(!r.isFinite())return Li(r);var n,i=r.e,o=xe(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+lt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+lt(-i-1)+o,t&&(n=t-s)>0&&(o+=lt(n))):i>=s?(o+=lt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+lt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=lt(n))),o}function dn(r,e){var t=r[0];for(e*=W;t>=10;t/=10)e++;return e}function ln(r,e,t){if(e>Er)throw G=!0,t&&(r.precision=t),Error(xi);return F(new r(cn),e,1,!0)}function Xe(r,e,t){if(e>Fn)throw Error(xi);return F(new r(un),e,t,!0)}function Ci(r){var e=r.length-1,t=e*W+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 lt(r){for(var e="";r--;)e+="0";return e}function Ki(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/W+4);for(G=!1;;){if(t%2&&(o=o.times(e),Pi(o.d,s)&&(i=!0)),t=Ce(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Pi(e.d,s)}return G=!0,o}function ki(r){return r.d[r.d.length-1]&1}function Ni(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 vn(r,e){var t,n,i,o,s,a,c,u=0,l=0,d=0,m=r.constructor,f=m.rounding,p=m.precision;if(!r.d||!r.d[0]||r.e>17)return new m(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(G=!1,c=p):c=e,a=new m(.03125);r.e>-2;)r=r.times(a),d+=5;for(n=Math.log(he(2,d))/Math.LN10*2+5|0,c+=n,t=o=s=new m(1),m.precision=c;;){if(o=F(o.times(r),c,1),t=t.times(++l),a=s.plus(oe(o,t,c,1)),xe(a.d).slice(0,c)===xe(s.d).slice(0,c)){for(i=d;i--;)s=F(s.times(s),c,1);if(e==null)if(u<3&&Rt(s.d,c-n,f,u))m.precision=c+=10,t=o=a=new m(1),l=0,u++;else return F(s,m.precision=p,f,G=!0);else return m.precision=p,s}s=a}}function mt(r,e){var t,n,i,o,s,a,c,u,l,d,m,f=1,p=10,b=r,y=b.d,g=b.constructor,w=g.rounding,k=g.precision;if(b.s<0||!y||!y[0]||!b.e&&y[0]==1&&y.length==1)return new g(y&&!y[0]?-1/0:b.s!=1?NaN:y?0:b);if(e==null?(G=!1,l=k):l=e,g.precision=l+=p,t=xe(y),n=t.charAt(0),Math.abs(o=b.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)b=b.times(r),t=xe(b.d),n=t.charAt(0),f++;o=b.e,n>1?(b=new g("0."+t),o++):b=new g(n+"."+t.slice(1))}else return u=ln(g,l+2,k).times(o+""),b=mt(new g(n+"."+t.slice(1)),l-p).plus(u),g.precision=k,e==null?F(b,k,w,G=!0):b;for(d=b,c=s=b=oe(b.minus(1),b.plus(1),l,1),m=F(b.times(b),l,1),i=3;;){if(s=F(s.times(m),l,1),u=c.plus(oe(s,new g(i),l,1)),xe(u.d).slice(0,l)===xe(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(ln(g,l+2,k).times(o+""))),c=oe(c,new g(f),l,1),e==null)if(Rt(c.d,l-p,w,a))g.precision=l+=p,u=s=b=oe(d.minus(1),d.plus(1),l,1),m=F(b.times(b),l,1),i=a=1;else return F(c,g.precision=k,w,G=!0);else return g.precision=k,c;c=u,i+=2}}function Li(r){return String(r.s*r.s/0)}function Dn(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)%W,t<0&&(n+=W),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=W;n<i;)r.d.push(+e.slice(n,n+=W));e=e.slice(n),n=W-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),G&&(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 vr(r,e){var t,n,i,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Si.test(e))return Dn(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Rr.test(e))t=16,e=e.toLowerCase();else if(Lr.test(e))t=2;else if(Mr.test(e))t=8;else throw Error(dt+e);for(o=e.search(/p/i),o>0?(c=+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=Ki(n,new n(t),o,o*2)),u=an(e,t,He),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(r.s*0):(r.e=dn(u,l),r.d=u,G=!1,s&&(r=oe(r,i,a*4)),c&&(r=r.times(Math.abs(c)<54?he(2,c):Mt.pow(2,c))),G=!0,r)}function Dr(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:It(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/fn(5,t)),e=It(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 It(r,e,t,n,i){var o,s,a,c,u=1,l=r.precision,d=Math.ceil(l/W);for(G=!1,c=t.times(t),a=new r(n);;){if(s=oe(a.times(c),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=oe(s.times(c),new r(e++*e++),l,1),s=a.plus(n),s.d[d]!==void 0){for(o=d;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return G=!0,s.d.length=d+1,s}function fn(r,e){for(var t=r;--e;)t*=r;return t}function Ri(r,e){var t,n=e.s<0,i=Xe(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return nt=n?4:1,e;if(t=e.divToInt(i),t.isZero())nt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return nt=ki(t)?n?2:3:n?4:1,e;nt=ki(t)?n?1:4:n?3:2}return e.minus(i).abs()}function _n(r,e,t,n){var i,o,s,a,c,u,l,d,m,f=r.constructor,p=t!==void 0;if(p?(Fe(t,1,ft),n===void 0?n=f.rounding:Fe(n,0,8)):(t=f.precision,n=f.rounding),!r.isFinite())l=Li(r);else{for(l=Ye(r),s=l.indexOf("."),p?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),m=new f(1),m.e=l.length-s,m.d=an(Ye(m),10,i),m.e=m.d.length),d=an(l,10,i),o=c=d.length;d[--c]==0;)d.pop();if(!d[0])l=p?"0p+0":"0";else{if(s<0?o--:(r=new f(r),r.d=d,r.e=o,r=oe(r,m,t,n,0,i),d=r.d,o=r.e,u=Ti),s=d[t],a=i/2,u=u||d[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&d[t-1]&1||n===(r.s<0?8:7)),d.length=t,u)for(;++d[--t]>i-1;)d[t]=0,t||(++o,d.unshift(1));for(c=d.length;!d[c-1];--c);for(s=0,l="";s<c;s++)l+=On.charAt(d[s]);if(p){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(d=an(l,i,e),c=d.length;!d[c-1];--c);for(s=1,l="1.";s<c;s++)l+=On.charAt(d[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>c)for(o-=c;o--;)l+="0";else o<c&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function Pi(r,e){if(r.length>e)return r.length=e,!0}function _r(r){return new this(r).abs()}function Wr(r){return new this(r).acos()}function qr(r){return new this(r).acosh()}function Vr(r,e){return new this(r).plus(e)}function Ur(r){return new this(r).asin()}function Gr(r){return new this(r).asinh()}function Xr(r){return new this(r).atan()}function Hr(r){return new this(r).atanh()}function zr(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=Xe(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Xe(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Xe(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(oe(r,e,o,1)),e=Xe(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(oe(r,e,o,1)),t}function Zr(r){return new this(r).cbrt()}function jr(r){return F(r=new this(r),r.e+1,2)}function Yr(r,e,t){return new this(r).clamp(e,t)}function Qr(r){if(!r||typeof r!="object")throw Error(mn+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,ft,"rounding",0,8,"toExpNeg",-Bt,0,"toExpPos",0,Bt,"maxE",0,Bt,"minE",-Bt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=En[t]),(n=r[t])!==void 0)if(Ce(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(dt+t+": "+n);if(t="crypto",i&&(this[t]=En[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(Bi);else this[t]=!1;else throw Error(dt+t+": "+n);return this}function Jr(r){return new this(r).cos()}function $r(r){return new this(r).cosh()}function Mi(r){var e,t,n;function i(o){var s,a,c,u=this;if(!(u instanceof i))return new i(o);if(u.constructor=i,Ai(o)){u.s=o.s,G?!o.d||o.e>i.maxE?(u.e=NaN,u.d=null):o.e<i.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;G?s>i.maxE?(u.e=NaN,u.d=null):s<i.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return Dn(u,o.toString())}else if(c!=="string")throw Error(dt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),Si.test(o)?Dn(u,o):vr(u,o)}if(i.prototype=B,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=Qr,i.clone=Mi,i.isDecimal=Ai,i.abs=_r,i.acos=Wr,i.acosh=qr,i.add=Vr,i.asin=Ur,i.asinh=Gr,i.atan=Xr,i.atanh=Hr,i.atan2=zr,i.cbrt=Zr,i.ceil=jr,i.clamp=Yr,i.cos=Jr,i.cosh=$r,i.div=eo,i.exp=to,i.floor=no,i.hypot=io,i.ln=ro,i.log=oo,i.log10=ao,i.log2=so,i.max=co,i.min=uo,i.mod=lo,i.mul=mo,i.pow=fo,i.random=po,i.round=bo,i.sign=go,i.sin=yo,i.sinh=wo,i.sqrt=ho,i.sub=ko,i.sum=Po,i.tan=Ao,i.tanh=To,i.trunc=xo,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 eo(r,e){return new this(r).div(e)}function to(r){return new this(r).exp()}function no(r){return F(r=new this(r),r.e+1,3)}function io(){var r,e,t=new this(0);for(G=!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 G=!0,new this(1/0);t=e}return G=!0,t.sqrt()}function Ai(r){return r instanceof Mt||r&&r.toStringTag===Ii||!1}function ro(r){return new this(r).ln()}function oo(r,e){return new this(r).log(e)}function so(r){return new this(r).log(2)}function ao(r){return new this(r).log(10)}function co(){return Ni(this,arguments,"lt")}function uo(){return Ni(this,arguments,"gt")}function lo(r,e){return new this(r).mod(e)}function mo(r,e){return new this(r).mul(e)}function fo(r,e){return new this(r).pow(e)}function po(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Fe(r,1,ft),n=Math.ceil(r/W),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(Bi);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=W,n&&r&&(i=he(10,W-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-=W)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<W&&(t-=W-n)}return s.e=t,s.d=a,s}function bo(r){return F(r=new this(r),r.e+1,this.rounding)}function go(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function yo(r){return new this(r).sin()}function wo(r){return new this(r).sinh()}function ho(r){return new this(r).sqrt()}function ko(r,e){return new this(r).sub(e)}function Po(){var r=0,e=arguments,t=new this(e[r]);for(G=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return G=!0,F(t,this.precision,this.rounding)}function Ao(r){return new this(r).tan()}function To(r){return new this(r).tanh()}function xo(r){return F(r=new this(r),r.e+1,1)}B[Symbol.for("nodejs.util.inspect.custom")]=B.toString;B[Symbol.toStringTag]="Decimal";var Mt=B.constructor=Mi(En);cn=new Mt(cn);un=new Mt(un);var R=Mt;import{PublicKey as Fi}from"@solana/web3.js";import{get as Oi,set as Bo}from"lodash";var Wn=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}},Ei={},Io={};function Be(r){let e=Oi(Ei,r);if(!e){let t=Oi(Io,r);e=new Wn({name:r,logLevel:t}),Bo(Ei,r,e)}return e}import{MINT_SIZE as So,TOKEN_PROGRAM_ID as Co,getTransferFeeConfig as Ko,unpackMint as No}from"@solana/spl-token";var qn=Be("Raydium_accountInfo_util");async function it(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}=E({batchRequest:!1},t),s=Vn(e,o),a=new Array(s.length).fill([]);if(n){let c=s.map(d=>{let m=r._buildArgs([d.map(f=>f.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Vn(c,10);a=(await(await Promise.all(u.map(async d=>await r._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&qn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(m=>{if(m){let{data:f,executable:p,lamports:b,owner:y,rentEpoch:g}=m;return f.length!==2&&f[1]!=="base64"&&qn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(f[0],"base64"),executable:p,lamports:b,owner:new Fi(y),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(c=>r.getMultipleAccountsInfo(c,i)))}catch(c){c instanceof Error&&qn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function rt(r,e,t){let n=await it(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>j(E({},i),{accountInfo:n[o]}))}async function vi({connection:r,mints:e,config:t}){var o,s,a;if(e.length===0)return{};let n=await rt(r,e.map(c=>({pubkey:wt(c)})),t),i={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<So){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=No(c.pubkey,c.accountInfo,(o=c.accountInfo)==null?void 0:o.owner);i[c.pubkey.toString()]=j(E({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||Co,feeConfig:(a=Ko(u))!=null?a:void 0})}return i[Fi.default.toBase58()]=i[ee.toBase58()],i}import ot from"bn.js";import Do from"big.js";import gn from"bn.js";import Lo from"toformat";var Ro=Lo,Ot=Ro;import bn from"big.js";import Oo from"bn.js";import Eo from"decimal.js-light";import Et from"bn.js";var Di=9007199254740991;function Pe(r){let e=Be("Raydium_parseBigNumberish");if(r instanceof Et)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Et(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Di||r<=-Di)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Et(String(r))):typeof r=="bigint"?new Et(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Et(0))}var pn=Be("module/fraction"),Un=Ot(bn),Ft=Ot(Eo),Fo={[0]:Ft.ROUND_DOWN,[1]:Ft.ROUND_HALF_UP,[2]:Ft.ROUND_UP},vo={[0]:bn.roundDown,[1]:bn.roundHalfUp,[2]:bn.roundUp},te=class{constructor(e,t=new Oo(1)){this.numerator=Pe(e),this.denominator=Pe(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new te(this.denominator,this.numerator)}add(e){let t=e instanceof te?e:new te(Pe(e));return this.denominator.eq(t.denominator)?new te(this.numerator.add(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof te?e:new te(Pe(e));return this.denominator.eq(t.denominator)?new te(this.numerator.sub(t.numerator),this.denominator):new te(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof te?e:new te(Pe(e));return new te(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof te?e:new te(Pe(e));return new te(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||pn.logWithError(`${e} is not an integer.`),e<=0&&pn.logWithError(`${e} is not positive.`),Ft.set({precision:e+1,rounding:Fo[n]});let i=new Ft(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)||pn.logWithError(`${e} is not an integer.`),e<0&&pn.logWithError(`${e} is negative.`),Un.DP=e,Un.RM=vo[n]||1,new Un(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var _o=Be("Raydium_amount"),_i=Ot(Do);function Wo(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")):_o.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Ie=class extends te{constructor(t,n,i=!0,o){let s=new gn(0),a=Gn.pow(new gn(t.decimals));if(i)s=Pe(n);else{let c=new gn(0),u=new gn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=Wo(n.toString(),t.decimals);c=Pe(l),u=Pe(d)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=Be(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Ie(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ie(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 _i.DP=this.token.decimals,new _i(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as qo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Wi}from"@solana/spl-token";var Xn={chainId:101,address:qo.default.toBase58(),programId:Wi.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},pt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Wi.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 jn}from"@solana/web3.js";import{PublicKey as me,SystemProgram as qi,SYSVAR_RENT_PUBKEY as Vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Uo}from"@solana/spl-token";function Hn({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Aa=[Hn({pubkey:Uo,isWritable:!1}),Hn({pubkey:qi.programId,isWritable:!1}),Hn({pubkey:Vo,isWritable:!1})];function zn({publicKey:r,transformSol:e}){let t=Vi(r.toString());if(t instanceof me)return e&&t.equals(vt)?ee:t;if(e&&t.toString()===vt.toBase58())return ee;if(typeof t=="string"){if(t===me.default.toBase58())return me.default;try{return new me(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Vi(r){try{return new me(r)}catch{return r}}var yn=new me("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Zn=new me("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),bt=new me("SysvarRent111111111111111111111111111111111"),Ta=new me("SysvarC1ock11111111111111111111111111111111"),ht=new me("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),xa=new me("Sysvar1nstructions1111111111111111111111111"),Ba=qi.programId,Ia=new me("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Sa=new me("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ca=new me("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ka=new me("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Na=new me("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),La=new me("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ra=new me("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ma=new me("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Oa=new me("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ea=new me("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Fa=new me("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ee=new me("So11111111111111111111111111111111111111112"),vt=me.default;function wt(r){return zn({publicKey:r,transformSol:!0})}var Yn=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===vt.toBase58()||e instanceof jn&&vt.equals(e)){this.decimals=pt.decimals,this.symbol=pt.symbol,this.name=pt.name,this.mint=new jn(pt.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?jn.default:zn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Qe=Yn;Qe.WSOL=new Yn(j(E({},pt),{mint:pt.address}));var Qn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},wn=Qn;wn.SOL=new Qn(Xn);import Go from"bn.js";var Ui=new te(new Go(100)),gt=class extends te{toSignificant(e=5,t,n){return this.mul(Ui).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ui).toFixed(e,t,n)}};var Xo=Be("Raydium_price"),ze=class extends te{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new te(Jn(n.decimals),Jn(i.decimals))}get raw(){return new te(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new ze({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Xo.logWithError("mul token not equals");let n=super.mul(t);return new ze({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};import{PublicKey as pc}from"@solana/web3.js";import gc from"bn.js";var Ho=new ot(0),Oc=new ot(1),Ec=new ot(2),Fc=new ot(3),vc=new ot(5),Gn=new ot(10),Dc=new ot(100),_c=new ot(1e3),Wc=new ot(1e4);function Jn(r){return Gn.pow(Pe(r))}function Vn(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 $o}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as es}from"@solana/spl-token";import{ComputeBudgetProgram as Gi,Keypair as Hi,PublicKey as zo,Transaction as zi,TransactionMessage as Zo,VersionedTransaction as Zi}from"@solana/web3.js";var se={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{TOKEN_PROGRAM_ID as jo}from"@solana/spl-token";var Xi=Be("Raydium_txUtil"),ji=1644;function hn(r){let e=[],t=[];return r.microLamports&&(e.push(Gi.setComputeUnitPrice({microLamports:r.microLamports})),t.push(se.SetComputeUnitPrice)),r.units&&(e.push(Gi.setComputeUnitLimit({units:r.units})),t.push(se.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function St(r,e){var n,i;let t=e!=null?e:"confirmed";return(i=await((n=r.getLatestBlockhash)==null?void 0:n.call(r,{commitment:t})))==null?void 0:i.blockhash}async function kn(r,e){return r.getSignatureStatuses([e]),new Promise((t,n)=>{let i=setTimeout(n,6e4);r.onSignature(e,o=>{if(clearTimeout(i),!o.err){t("");return}n(Object.assign(o.err,{txId:e}))},"confirmed")})}function Yo(r,e){r.length<1&&Xi.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Xi.logWithError(`no signers provided:, ${e.toString()}`);let t=new zi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<ji}catch{return!1}}function Ne(r,e){let[t,n]=zo.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Dt({instructions:r,payer:e,signers:t}){return Yo(r,[e,...t])}function _t({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Hi.generate().publicKey.toString()}){let o=new Zo({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Zi(o).serialize()).toString("base64").length<ji}catch{return!1}}var Qo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Jo=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof Zi&&(e=Qo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function kt(r){let e=[];return r.forEach(t=>{t instanceof zi&&(t.recentBlockhash||(t.recentBlockhash=jo.toBase58()),t.feePayer||(t.feePayer=Hi.generate().publicKey)),e.push(Jo(t))}),console.log("simulate tx string:",e),e}function ae(r,e,t){return Ne([r.toBuffer(),(t!=null?t:es).toBuffer(),e.toBuffer()],new $o("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as z}from"@solana/web3.js";var au=new z("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),cu=new z("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),uu=new z("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),lu=new z("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),mu=new z("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),du=new z("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),fu=new z("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),pu=new z("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),bu=new z("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),gu=new z("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Wt=new z("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),qt=new z("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Pn=new z("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),yu=new z("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),wu=new z("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),hu=new z("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),ku=new z("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Pu=new z("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Au=new z("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Tu=new z("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),xu=new z("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Bu=new z("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ts=new z("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),ns=new z("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),is=new z("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Iu=new z("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),rs=new z("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),Su=new z("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),os=new z("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var Cu={SERUM_MARKET:z.default,OPENBOOK_MARKET:new z("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:z.default,FarmV3:new z("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new z("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new z("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new z("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new z("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new z("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new z("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new z("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new z("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:ts,CREATE_CPMM_POOL_AUTH:ns,CREATE_CPMM_POOL_FEE_ACC:is,FEE_DESTINATION_ID:new z("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:rs,LCOK_CPMM_AUTH:os};import Ze from"bn.js";var Vt=1e4;function ye(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=j(E({},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 Ze(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===Vt){let c=new Ze(o.maximumFee.toString());return{amount:r.add(c),fee:c,expirationTime:a}}else{let c=$n(r.mul(new Ze(Vt)),new Ze(Vt-o.transferFeeBasisPoints)),u=new Ze(o.maximumFee.toString()),l=c.sub(r).gt(u)?r.add(u):c,d=$n(l.mul(new Ze(o.transferFeeBasisPoints)),new Ze(Vt)),m=d.gt(s)?s:d;return{amount:l,fee:m,expirationTime:a}}else{let c=$n(r.mul(new Ze(o.transferFeeBasisPoints)),new Ze(Vt)),u=c.gt(s)?s:c;return{amount:r,fee:u,expirationTime:a}}}function yt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function $n(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Ze(0))?t.add(new Ze(1)):t}import{PublicKey as Yi,AddressLookupTableAccount as An}from"@solana/web3.js";async function ei({connection:r,address:e}){let t=await it(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Yi(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new An({key:s,state:An.deserialize(o.data)});n[s.toString()]=a,Tn[s.toString()]=a}return n}var Tn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new An({key:new Yi("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:An.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};import{PublicKey as Ct,sendAndConfirmTransaction as ti,SystemProgram as as,Transaction as Ut,TransactionMessage as Gt,VersionedTransaction as Xt}from"@solana/web3.js";import cs from"axios";var xn=2e3,Bn=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await cs.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=hn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){return e?(this.endInstructions.push(as.transfer({fromPubkey:this.owner.publicKey,toPubkey:new Ct(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(se.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Ct.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(E({},t||{})):this.build(t)}build(e){var n;let t=new Ut;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var u;let{recentBlockHash:o,skipPreflight:s=!0,sendAndConfirm:a}=i||{},c=o!=null?o:await St(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),kt([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await ti(this.connection,t,this.signers.find(d=>d.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(l=>l.transaction.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],c=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async l=>{var g;let{sequentially:d,onTxUpdate:m,skipTxCount:f=0,recentBlockHash:p,skipPreflight:b=!0}=l||{},y=p!=null?p:await St(this.connection,this.blockhashCommitment);if((g=this.owner)!=null&&g.isKeyPair){if(d){let w=[],k=0;for(let P of s){if(++k,k<=f)continue;let A=await ti(this.connection,P,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});w.push(A)}return{txIds:w,signedTxs:s}}return{txIds:await await Promise.all(s.map(async w=>(w.recentBlockhash=y,await this.connection.sendRawTransaction(w.serialize(),{skipPreflight:b})))),signedTxs:s}}if(this.signAllTransactions){let w=s.map((P,A)=>(P.recentBlockhash=y,a[A].length&&P.sign(...a[A]),P));kt(w);let k=await this.signAllTransactions(w);if(d){let P=0,A=[],h=async()=>{if(!k[P])return;let x=await this.connection.sendRawTransaction(k[P].serialize(),{skipPreflight:b});A.push({txId:x,status:"sent",signedTx:k[P]}),m==null||m([...A]),P++;let T=!1,K=null,S=null,I=L=>{K!==null&&clearInterval(K),S!==null&&this.connection.removeSignatureListener(S);let N=A.findIndex(_=>_.txId===x);if(N>-1){if(A[N].status==="error"||A[N].status==="success")return;A[N].status=L.err?"error":"success"}m==null||m([...A]),L.err||h()};this.loopMultiTxStatus&&(K=setInterval(async()=>{var L;if(T){clearInterval(K);return}try{let N=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});N&&(T=!0,clearInterval(K),I({err:((L=N.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",x))}catch(N){T=!0,clearInterval(K),console.error("getTransaction timeout:",N,x)}},xn)),S=this.connection.onSignature(x,L=>{if(T){this.connection.removeSignatureListener(S);return}T=!0,I(L)},"confirmed"),this.connection.getSignatureStatus(x)};return await h(),{txIds:A.map(x=>x.txId),signedTxs:k}}else{let P=[];for(let A=0;A<k.length;A+=1){let h=await this.connection.sendRawTransaction(k[A].serialize(),{skipPreflight:b});P.push(h)}return{txIds:P,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var b;let p=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:o}=p,s=xt(p,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=E(E({},this.cluster==="devnet"?{}:Tn),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let y of c)a[y]===void 0&&u.push(new Ct(y));let l=await ei({connection:this.connection,address:u});for(let[y,g]of Object.entries(l))a[y]=g;let d=i?Ct.default.toBase58():o!=null?o:await St(this.connection,this.blockhashCommitment),m=new Gt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((b=this.owner)==null?void 0:b.signer)&&!this.signers.some(y=>y.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let f=new Xt(m);return f.sign(this.signers),{builder:this,transaction:f,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async y=>{var k;let{skipPreflight:g=!0,sendAndConfirm:w}=y||{};if(kt([f]),(k=this.owner)!=null&&k.isKeyPair){let P=await this.connection.sendTransaction(f,{skipPreflight:g});return w&&await kn(this.connection,P),{txId:P,signedTx:f}}if(this.signAllTransactions){let P=await this.signAllTransactions([f]);return{txId:await this.connection.sendTransaction(P[0],{skipPreflight:g}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(l=>l.builder.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],c=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,d)=>{l.sign(a[d])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async l=>{var b;let{sequentially:d,onTxUpdate:m,recentBlockHash:f,skipPreflight:p=!0}=l||{};if(f&&s.forEach(y=>y.message.recentBlockhash=f),kt(s),(b=this.owner)!=null&&b.isKeyPair){if(d){let y=[];for(let g of s){let w=await this.connection.sendTransaction(g,{skipPreflight:p});await kn(this.connection,w),y.push(w)}return{txIds:y,signedTxs:s}}return{txIds:await Promise.all(s.map(async y=>await this.connection.sendTransaction(y,{skipPreflight:p}))),signedTxs:s}}if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(d){let g=0,w=[],k=async()=>{if(!y[g])return;let P=await this.connection.sendTransaction(y[g],{skipPreflight:p});w.push({txId:P,status:"sent",signedTx:y[g]}),m==null||m([...w]),g++;let A=!1,h=null,x=null,T=K=>{h!==null&&clearInterval(h),x!==null&&this.connection.removeSignatureListener(x);let S=w.findIndex(I=>I.txId===P);if(S>-1){if(w[S].status==="error"||w[S].status==="success")return;w[S].status=K.err?"error":"success"}m==null||m([...w]),K.err||k()};this.loopMultiTxStatus&&(h=setInterval(async()=>{var K;if(A){clearInterval(h);return}try{let S=await this.connection.getTransaction(P,{commitment:"confirmed",maxSupportedTransactionVersion:0});S&&(A=!0,clearInterval(h),T({err:((K=S.meta)==null?void 0:K.err)||null}),console.log("tx status from getTransaction:",P))}catch(S){A=!0,clearInterval(h),console.error("getTransaction timeout:",S,P)}},xn)),x=this.connection.onSignature(P,K=>{if(A){this.connection.removeSignatureListener(x);return}A=!0,T(K)},"confirmed"),this.connection.getSignatureStatus(P)};return k(),{txIds:[],signedTxs:y}}else{let g=[];for(let w=0;w<y.length;w+=1){let k=await this.connection.sendTransaction(y[w],{skipPreflight:p});g.push(k)}return{txIds:g,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var m;let d=e||{},{splitIns:t=[],computeBudgetConfig:n}=d,i=xt(d,["splitIns","computeBudgetConfig"]),o=n?hn(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((f,p)=>j(E({},f),{[p.publicKey.toBase58()]:p}),{}),a=[],c=[],u=[],l=0;if(this.allInstructions.forEach(f=>{let p=[...u,f],b=n?[...o.instructions,...p]:p,g=[...new Set(p.map(w=>w.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(w=>new Ct(w));if(f!==t[l]&&u.length<12&&(Dt({instructions:b,payer:this.feePayer,signers:g})||Dt({instructions:p,payer:this.feePayer,signers:g})))u.push(f);else{if(u.length===0)throw Error("item ins too big");l+=f===t[l]?1:0,Dt({instructions:n?[...o.instructions,...u]:[...u],payer:this.feePayer,signers:g})?a.push(new Ut().add(...o.instructions,...u)):a.push(new Ut().add(...u)),c.push(Array.from(new Set(u.map(w=>w.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat())).map(w=>s[w]).filter(w=>w!==void 0)),u=[f]}}),u.length>0){let p=[...new Set(u.map(b=>b.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(b=>s[b]).filter(b=>b!==void 0);Dt({instructions:n?[...o.instructions,...u]:[...u],payer:this.feePayer,signers:p.map(b=>b.publicKey)})?a.push(new Ut().add(...o.instructions,...u)):a.push(new Ut().add(...u)),c.push(p)}return a.forEach(f=>f.feePayer=this.feePayer),(m=this.owner)!=null&&m.signer&&c.forEach(f=>{f.some(p=>p.publicKey.equals(this.owner.publicKey))||f.push(this.owner.signer)}),{builder:this,transactions:a,signers:c,instructionTypes:this.instructionTypes,execute:async f=>{var P;let{sequentially:p,onTxUpdate:b,skipTxCount:y=0,recentBlockHash:g,skipPreflight:w=!0}=f||{},k=g!=null?g:await St(this.connection,this.blockhashCommitment);if(a.forEach(async(A,h)=>{A.recentBlockhash=k,c[h].length&&A.sign(...c[h])}),kt(a),(P=this.owner)!=null&&P.isKeyPair){if(p){let A=0,h=[];for(let x of a){if(++A,A<=y){h.push("tx skipped");continue}let T=await ti(this.connection,x,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});h.push(T)}return{txIds:h,signedTxs:a}}return{txIds:await Promise.all(a.map(async A=>await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:w}))),signedTxs:a}}if(this.signAllTransactions){let A=await this.signAllTransactions(a.slice(y,a.length)),h=[...a.slice(0,y),...A];if(p){let x=0,T=[],K=async()=>{if(!h[x])return;x<y&&(T.push({txId:"",status:"success",signedTx:h[x]}),b==null||b([...T]),x++,K());let S=await this.connection.sendRawTransaction(h[x].serialize(),{skipPreflight:w});T.push({txId:S,status:"sent",signedTx:h[x]}),b==null||b([...T]),x++;let I=!1,L=null,N=null,_=U=>{L!==null&&clearInterval(L),N!==null&&this.connection.removeSignatureListener(N);let D=T.findIndex(Te=>Te.txId===S);if(D>-1){if(T[D].status==="error"||T[D].status==="success")return;T[D].status=U.err?"error":"success"}b==null||b([...T]),U.err||K()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var U;if(I){clearInterval(L);return}try{let D=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});D&&(I=!0,clearInterval(L),_({err:((U=D.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",S))}catch(D){I=!0,clearInterval(L),console.error("getTransaction timeout:",D,S)}},xn)),N=this.connection.onSignature(S,U=>{if(I){this.connection.removeSignatureListener(N);return}I=!0,_(U)},"confirmed"),this.connection.getSignatureStatus(S)};return await K(),{txIds:T.map(S=>S.txId),signedTxs:h}}else{let x=[];for(let T=0;T<h.length;T+=1){let K=await this.connection.sendRawTransaction(h[T].serialize(),{skipPreflight:w});x.push(K)}return{txIds:x,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var k;let w=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:o=[]}=w,s=xt(w,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress"]),a=E(E({},this.cluster==="devnet"?{}:Tn),i),c=Array.from(new Set([...this.lookupTableAddress,...o])),u=[];for(let P of c)a[P]===void 0&&u.push(new Ct(P));let l=await ei({connection:this.connection,address:u});for(let[P,A]of Object.entries(l))a[P]=A;let d=t?hn(t):{instructions:[],instructionTypes:[]},m=await St(this.connection,this.blockhashCommitment),f=this.signers.reduce((P,A)=>j(E({},P),{[A.publicKey.toBase58()]:A}),{}),p=[],b=[],y=[],g=0;if(this.allInstructions.forEach(P=>{let A=[...y,P],h=t?[...d.instructions,...A]:A;if(P!==n[g]&&y.length<12&&(_t({instructions:h,payer:this.feePayer,lookupTableAddressAccount:a})||_t({instructions:A,payer:this.feePayer,lookupTableAddressAccount:a})))y.push(P);else{if(y.length===0)throw Error("item ins too big");g+=P===n[g]?1:0;let x={};for(let T of[...new Set(c)])a[T]!==void 0&&(x[T]=a[T]);if(t&&_t({instructions:[...d.instructions,...y],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:m})){let T=new Gt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...d.instructions,...y]}).compileToV0Message(Object.values(a));p.push(new Xt(T))}else{let T=new Gt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...y]}).compileToV0Message(Object.values(a));p.push(new Xt(T))}b.push(Array.from(new Set(y.map(T=>T.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat())).map(T=>f[T]).filter(T=>T!==void 0)),y=[P]}}),y.length>0){let A=[...new Set(y.map(h=>h.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat()).values()].map(h=>f[h]).filter(h=>h!==void 0);if(t&&_t({instructions:[...d.instructions,...y],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:m})){let h=new Gt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...d.instructions,...y]}).compileToV0Message(Object.values(a));p.push(new Xt(h))}else{let h=new Gt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...y]}).compileToV0Message(Object.values(a));p.push(new Xt(h))}b.push(A)}return(k=this.owner)!=null&&k.signer&&b.forEach(P=>{P.some(A=>A.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),{builder:this,transactions:p,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async P=>{var S;let{sequentially:A,onTxUpdate:h,skipTxCount:x=0,recentBlockHash:T,skipPreflight:K=!0}=P||{};if(p.map(async(I,L)=>{b[L].length&&I.sign(b[L]),T&&(I.message.recentBlockhash=T)}),kt(p),(S=this.owner)!=null&&S.isKeyPair){if(A){let I=0,L=[];for(let N of p){if(++I,I<=x){console.log("skip tx: ",I),L.push("tx skipped");continue}let _=await this.connection.sendTransaction(N,{skipPreflight:K});await kn(this.connection,_),L.push(_)}return{txIds:L,signedTxs:p}}return{txIds:await Promise.all(p.map(async I=>await this.connection.sendTransaction(I,{skipPreflight:K}))),signedTxs:p}}if(this.signAllTransactions){let I=await this.signAllTransactions(p.slice(x,p.length)),L=[...p.slice(0,x),...I];if(A){let N=0,_=[],U=async()=>{if(!L[N])return;if(N<x){_.push({txId:"",status:"success",signedTx:L[N]}),h==null||h([..._]),N++,U();return}let D=await this.connection.sendTransaction(L[N],{skipPreflight:K});_.push({txId:D,status:"sent",signedTx:L[N]}),h==null||h([..._]),N++;let Te=!1,Ue=null,ut=null,Oe=Ge=>{Ue!==null&&clearInterval(Ue),ut!==null&&this.connection.removeSignatureListener(ut);let Ee=_.findIndex(Mn=>Mn.txId===D);if(Ee>-1){if(_[Ee].status==="error"||_[Ee].status==="success")return;_[Ee].status=Ge.err?"error":"success"}h==null||h([..._]),Ge.err||U()};this.loopMultiTxStatus&&(Ue=setInterval(async()=>{var Ge;if(Te){clearInterval(Ue);return}try{let Ee=await this.connection.getTransaction(D,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ee&&(Te=!0,clearInterval(Ue),Oe({err:((Ge=Ee.meta)==null?void 0:Ge.err)||null}),console.log("tx status from getTransaction:",D))}catch(Ee){Te=!0,clearInterval(Ue),console.error("getTransaction timeout:",Ee,D)}},xn)),ut=this.connection.onSignature(D,Ge=>{if(Te){this.connection.removeSignatureListener(ut);return}Te=!0,Oe(Ge)},"confirmed"),this.connection.getSignatureStatus(D)};return U(),{txIds:[],signedTxs:L}}else{let N=[];for(let _=0;_<L.length;_+=1){let U=await this.connection.sendTransaction(L[_],{skipPreflight:K});N.push(U)}return{txIds:N,signedTxs:L}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};import{AccountLayout as Ir,TOKEN_2022_PROGRAM_ID as Lt,TOKEN_PROGRAM_ID as on}from"@solana/spl-token";import{PublicKey as pl}from"@solana/web3.js";import{MintLayout as gl,TOKEN_PROGRAM_ID as wl}from"@solana/spl-token";var In=i=>{var o=i,{address:r,programId:e,decimals:t}=o,n=xt(o,["address","programId","decimals"]);return E({chainId:101,address:wt(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},ni=r=>r?j(E({},r),{transferFeeConfigAuthority:r.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:r.withdrawWithheldAuthority.toBase58(),withheldAmount:r.withheldAmount.toString(),olderTransferFee:j(E({},r.olderTransferFee),{epoch:r.olderTransferFee.epoch.toString(),maximumFee:r.olderTransferFee.maximumFee.toString()}),newerTransferFee:j(E({},r.newerTransferFee),{epoch:r.newerTransferFee.epoch.toString(),maximumFee:r.newerTransferFee.maximumFee.toString()})}):void 0;var ii=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ht=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=Be(t)}createTxBuilder(e){return this.scope.checkOwner(),new Bn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(ii(e))}logInfo(...e){this.logger.info(ii(e))}logAndCreateError(...e){let t=ii(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{Keypair as Rn,PublicKey as C,SystemProgram as ct,TransactionInstruction as Se}from"@solana/web3.js";import bi from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as rn,TOKEN_2022_PROGRAM_ID as ge,TOKEN_PROGRAM_ID as ie}from"@solana/spl-token";import{PublicKey as ys}from"@solana/web3.js";import er,{isBN as tr}from"bn.js";import{bits as Kl,BitStructure as Nl,blob as us,Blob as Ll,cstr as Rl,f32 as Ml,f32be as Ol,f64 as El,f64be as Fl,greedy as vl,Layout as ls,ns64 as Dl,ns64be as _l,nu64 as Wl,nu64be as ql,offset as Vl,s16 as Ul,s16be as Gl,s24 as Xl,s24be as Hl,s32 as ms,s32be as zl,s40 as Zl,s40be as jl,s48 as Yl,s48be as Ql,s8 as Jl,seq as ds,struct as $l,Structure as fs,u16 as ps,u16be as em,u24 as tm,u24be as nm,u32 as im,u32be as rm,u40 as om,u40be as sm,u48 as am,u48be as cm,u8 as bs,UInt as gs,union as um,Union as lm,unionLayoutDiscriminator as mm,utf8 as dm}from"@solana/buffer-layout";var ri=ls,Qi=fs;var oi=gs;var Ji=bs,zt=ps;var ce=ms;var $i=ds;var De=us;var Kt=class extends ri{constructor(t,n,i){super(t,i);this.blob=De(t),this.signed=n}decode(t,n=0){let i=new er(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 er(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function be(r){return new oi(1,r)}function Nt(r){return new oi(4,r)}function v(r){return new Kt(8,!1,r)}function Y(r){return new Kt(16,!1,r)}function nr(r){return new Kt(8,!0,r)}function ir(r){return new Kt(16,!0,r)}var Sn=class extends ri{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 re(r){return new Sn(De(32),e=>new ys(e),e=>e.toBuffer(),r)}function Le(r){return new Sn(Ji(),ws,hs,r)}function ws(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function hs(r){return r?1:0}var si=class extends Qi{decode(e,t){return super.decode(e,t)}};function ne(r,e,t){return new si(r,e,t)}function de(r,e,t){let n,i=typeof e=="number"?e:tr(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=tr(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 $i(r,i,t)}import Ks from"bn.js";import Ve from"bn.js";var fe=new Ve(0),Je=new Ve(1),st=new Ve(-1),_e=new Ve(1).shln(64),Cn=new Ve(1).shln(128),ai=_e.sub(Je),Zt=64,rr=Cn.subn(1),Ke=-443636,Re=-Ke,$e=new Ve("4295048016"),et=new Ve("79226673521066979257578248091"),Im=new Ve("4295048017"),Sm=new Ve("79226673521066979257578248090"),or=16,sr="59543866431248",ar="184467440737095516",cr="15793534762490258745",Kn=new Ve(10).pow(new Ve(6));var ur={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},Cm=new Ve("18446744073700000000");import Z from"bn.js";function Nn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function ci(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function ui(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function jt(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function lr(r,e){return jt(r,e)?null:ci(r,e)}function mr(r,e){return jt(r,e)?null:ui(r,e)}var Om=Buffer.from("amm_config","utf8"),ks=Buffer.from("pool","utf8"),Ps=Buffer.from("pool_vault","utf8"),As=Buffer.from("pool_reward_vault","utf8"),dr=Buffer.from("position","utf8"),Ts=Buffer.from("tick_array","utf8"),xs=Buffer.from("operation","utf8"),Bs=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Is=Buffer.from("observation","utf8");function fr(r,e,t,n){return Ne([ks,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function li(r,e,t){return Ne([Ps,e.toBuffer(),t.toBuffer()],r)}function pr(r,e,t){return Ne([As,e.toBuffer(),t.toBuffer()],r)}function Q(r,e,t){return Ne([Ts,e.toBuffer(),Nn(t)],r)}function je(r,e,t,n){return Ne([dr,e.toBuffer(),Nn(t),Nn(n)],r)}function Me(r,e){return Ne([dr,e.toBuffer()],r)}function Yt(r){return Ne([Buffer.from("metadata","utf8"),ht.toBuffer(),r.toBuffer()],ht)}function Qt(r){return Ne([xs],r)}function we(r,e){return Ne([Bs,e.toBuffer()],r)}function br(r,e){return Ne([Is,e.toBuffer()],r)}var gr=Buffer.from("locked_position","utf8");function mi(r,e){return Ne([gr,e.toBuffer()],r)}function Jt(r,e){return Ne([gr,e.toBuffer()],r)}import{PublicKey as We}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as yr}from"@solana/spl-token";import ue from"bn.js";import tt from"bn.js";var $t=class{static getfeeGrowthInside(e,t,n){let i=new tt(0),o=new tt(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 tt(0),a=new tt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let c=V.wrappingSubU128(V.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),u=V.wrappingSubU128(V.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=V.mulDivFloor(V.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,_e),c=t.tokenFeesOwedA.add(a),u=V.mulDivFloor(V.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,_e),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=V.mulDivFloor(V.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,_e),c=t.tokenFeesOwedA.add(a),u=V.mulDivFloor(V.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,_e),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=V.wrappingSubU128(c,u.growthInsideLastX64),d=V.mulDivFloor(l,t.liquidity,_e),m=u.rewardAmountOwed.add(d);o.push(m)}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 c=s[a],u=t.rewardInfos[a],l=V.wrappingSubU128(c,u.growthInsideLastX64),d=V.mulDivFloor(l,t.liquidity,_e),m=u.rewardAmountOwed.add(d);o.push(m)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new tt(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 c=new tt(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(V.wrappingSubU128(V.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new tt(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 c=new tt(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(V.wrappingSubU128(V.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var y,g,w,k;let a=q.priceToSqrtPriceX64(new R(e.price),e.mintA.decimals,e.mintB.decimals),c=q.getSqrtPriceX64FromTick(t.tickLower),u=q.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,d=$.getAmountsFromLiquidity(a,c,u,n,o),[m,f]=[ye(d.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),ye(d.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[p,b]=[ye(new tt(new R(d.amountA.toString()).mul(l).toFixed(0)),(w=e.mintA.extensions)==null?void 0:w.feeConfig,s,!0),ye(new tt(new R(d.amountB.toString()).mul(l).toFixed(0)),(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)];return{liquidity:n,amountA:m,amountB:f,amountSlippageA:p,amountSlippageB:b,expirationTime:yt(m.expirationTime,f.expirationTime)}}};var Ss=15,J=class{static async getTickArrays(e,t,n,i,o,s,a){let c=[],u=O.getTickArrayStartIndexByTick(i,o),l=O.getInitializedTickArrayInRange(s,a,o,u,Math.floor(Ss/2));for(let f=0;f<l.length;f++){let{publicKey:p}=Q(t,n,l[f]);c.push(p)}let d=(await it(e,c)).map(f=>f!==null?en.decode(f.data):null),m={};for(let f=0;f<c.length;f++){let p=d[f];p!==null&&(m[p.startTickIndex]=j(E({},p),{address:c[f]}))}return m}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(u=O.getNextTickArrayStartIndex(u,o,s),this.checkIsValidStartIndex(u,o))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:d,tickArrayAddress:m,tickArrayStartTickIndex:f}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[d,m,f]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/J.tickCount(t)),a=n?O.searchLowBitFromStart(i,o,s-1,1,t):O.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=ke-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a-1}}else{let a=0;for(;a<ke;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=Q(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=O.getTickArrayStartIndexByTick(i,o),c=Math.floor((i-a)/o),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c-1}else for(c=c+1;c<ke;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c+1}let{publicKey:d}=Q(e,t,a);return{initializedTick:l,tickArrayAddress:d,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(O.checkIsOutOfBoundary(e)){if(e>Re)return!1;let n=O.getTickArrayStartIndexByTick(Ke,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return ke*e}};var di=14,at=class{static maxTickInTickarrayBitmap(e){return e*ke*Pt}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(!J.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-J.tickCount(n):t+J.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*ke,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(i){let l=e.shln(1024-u-1),d=lr(1024,l);if(d!==null){let m=(u-d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),d=mr(1024,l);if(d!==null){let m=(u+d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o-J.tickCount(n)}}}},tn=class{static getBitmapOffset(e,t){if(!J.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=at.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=at.maxTickInTickarrayBitmap(e),n=-t;if(Re<=t)throw Error(`extensionTickBoundary check error: ${Re}, ${t}`);if(n<=Ke)throw Error(`extensionTickBoundary check error: ${n}, ${Ke}`);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:O.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=J.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}=at.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let c=O.mergeTickArrayBitmap(e).shln(Pt-1-a),u=jt(512,c)?null:ci(512,c);if(u!==null){let l=t-u*J.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=O.mergeTickArrayBitmap(e).shrn(a),u=jt(512,c)?null:ui(512,c);if(u!==null){let l=t+u*J.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-J.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%at.maxTickInTickarrayBitmap(t),i=Math.floor(n/J.tickCount(t));return e<0&&n!=0&&(i=Pt-i),i}};var pe=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:l,nextAccountMeta:d}=this.getFirstInitializedTickArray(e,a);if(!u||l===void 0||!d)throw new Error("Invalid tick array");c.push(d);let{allTrade:m,amountCalculated:f,accounts:p,sqrtPriceX64:b,feeAmount:y}=At.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,l,o,s);return c.push(...p),{allTrade:m,expectedAmountOut:f.mul(st),remainingAccounts:c,executionPrice:b,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let b=this.preInitializedTickArrayStartIndex(e,s);if(b.isExist){let{publicKey:y}=Q(e.programId,e.id,b.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:d,accounts:m,sqrtPriceX64:f,feeAmount:p}=At.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(st),u,o);return a.push(...m),{expectedAmountIn:d,remainingAccounts:a,executionPrice:f,feeAmount:p}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=pe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?tn.checkTickArrayIsInit(J.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):O.checkTickArrayIsInitialized(O.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Q(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,J.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=Q(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/J.tickCount(e.tickSpacing)),i=t?O.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):O.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=J.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=at.nextInitializedTickArrayStartIndex(O.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=tn.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ke||t>Re)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,c,u;let s=[];for(let l=0;l<o.length;l++){let d=o[l],m=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(d.tokenMint))==null?void 0:c.owner;if(m===void 0)throw Error("get new reward mint info error");let f=j(E({},d),{perSecond:V.x64ToDecimal(d.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new We(m)});if(f.tokenMint.equals(We.default))continue;if(n<=f.openTime.toNumber()||i.eq(fe)){s.push(f);continue}let p=new ue(Math.min(f.endTime.toNumber(),n)),b=p.sub(f.lastUpdateTime),y=V.mulDivFloor(b,f.emissionsPerSecondX64,i),g=f.rewardGrowthGlobalX64.add(y),w=V.mulDivFloor(b,f.emissionsPerSecondX64,_e),k=f.rewardTotalEmissioned.add(w);s.push(j(E({},f),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:k,lastUpdateTime:p}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=O.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=at.maxTickInTickarrayBitmap(e),n=-t;return t>Re&&(t=J.getArrayStartIndex(Re,e)+J.tickCount(e)),n<Ke&&(n=J.getArrayStartIndex(Ke,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!J.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/J.tickCount(t)*Pt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await rt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=hr.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let c of t){let u=O.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=O.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let d of l){let{publicKey:m}=Q(c.programId,c.id,d);o.push({pubkey:m}),i[m.toString()]=c.id}}let s=await rt(e,o,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=i[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=en.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=j(E({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(m=>m.accountInfo.mint),u=[];for(let m of c)for(let f of s)u.push(Me(f,m).publicKey);let l=await it(t,u,{batchRequest:i}),d={};for(let m of l){if(m===null)continue;let f=nn.decode(m.data),p=f.poolId.toString(),b=e.find(T=>T.state.id.toBase58()===p);if(b===void 0)continue;let y=b.state,g=O._getTickPriceLegacy({poolInfo:y,tick:f.tickLower,baseIn:!0}),w=O._getTickPriceLegacy({poolInfo:y,tick:f.tickUpper,baseIn:!0}),{amountA:k,amountB:P}=$.getAmountsFromLiquidity(y.sqrtPriceX64,g.tickSqrtPriceX64,w.tickSqrtPriceX64,f.liquidity,!1),A=1/(1-Math.sqrt(Math.sqrt(g.price.div(w.price).toNumber())));b.positionAccount=[...(a=b.positionAccount)!=null?a:[],{poolId:f.poolId,nftMint:f.nftMint,priceLower:g.price,priceUpper:w.price,amountA:k,amountB:P,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(T=>j(E({},T),{pendingReward:new ue(0)})),leverage:A,tokenFeeAmountA:new ue(0),tokenFeeAmountB:new ue(0)}];let h=await O.getTickArrayAddressByTick(b.state.programId,f.poolId,f.tickLower,b.state.tickSpacing),x=await O.getTickArrayAddressByTick(b.state.programId,f.poolId,f.tickUpper,b.state.tickSpacing);d[`${b.state.programId.toString()}-${f.poolId.toString()}-${f.tickLower}`]=h,d[`${b.state.programId.toString()}-${f.poolId.toString()}-${f.tickUpper}`]=x}if(o){let m=Object.values(d),f=await it(t,m,{batchRequest:i}),p={};for(let b=0;b<m.length;b++){let y=f[b];if(y===null)continue;let g=m[b].toString();p[g]=en.decode(y.data)}for(let{state:b,positionAccount:y}of e)if(!!y)for(let g of y){let w=`${b.programId.toString()}-${b.id.toString()}-${g.tickLower}`,k=`${b.programId.toString()}-${b.id.toString()}-${g.tickUpper}`,P=p[d[w].toString()],A=p[d[k].toString()],h=P.ticks[O.getTickOffsetInArray(g.tickLower,b.tickSpacing)],x=A.ticks[O.getTickOffsetInArray(g.tickUpper,b.tickSpacing)],{tokenFeeAmountA:T,tokenFeeAmountB:K}=await $t.GetPositionFees(b,g,h,x),S=await $t.GetPositionRewards(b,g,h,x);g.tokenFeeAmountA=T.gte(new ue(0))?T:new ue(0),g.tokenFeeAmountB=K.gte(new ue(0))?K:new ue(0);for(let I=0;I<S.length;I++)g.rewardInfos[I].pendingReward=S[I].gte(new ue(0))?S[I]:new ue(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new R(0),catchLiquidityInsufficient:c=!1}){var L;let u,l=n.toBase58()===e.mintA.address,[d,m]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new R(0))?u=l?$e.add(new ue(1)):et.sub(new ue(1)):u=q.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let f=ye(o,d,i,!1),{allTrade:p,expectedAmountOut:b,remainingAccounts:y,executionPrice:g,feeAmount:w}=pe.getOutputAmountAndRemainAccounts(e,t,n,f.amount.sub((L=f.fee)!=null?L:fe),u,c),k=ye(b,m,i,!1),P=q.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),A=l?P:new R(1).div(P),h=b.mul(new ue(Math.floor((1-s)*1e10))).div(new ue(1e10)),x=ye(h,m,i,!1),T=l?e.currentPrice:new R(1).div(e.currentPrice),K=new R(A).sub(T).abs(),S=T,I=new gt(new R(K).mul(10**15).toFixed(0),new R(S).mul(10**15).toFixed(0));return{allTrade:p,realAmountIn:f,amountOut:k,minAmountOut:x,expirationTime:yt(f.expirationTime,k.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:I,fee:w,remainingAccounts:y,executionPriceX64:g}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=i.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[d,m]=[new Qe(j(E({},u),{mint:u.address,isToken2022:u.programId===yr.toBase58()})),new Qe(j(E({},l),{mint:l.address,isToken2022:l.programId===yr.toBase58()}))],{allTrade:f,realAmountIn:p,amountOut:b,minAmountOut:y,expirationTime:g,currentPrice:w,executionPrice:k,priceImpact:P,fee:A,remainingAccounts:h,executionPriceX64:x}=pe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new We(u.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),T=j(E({},p),{amount:new Ie(d,p.amount),fee:p.fee===void 0?void 0:new Ie(d,p.fee)}),K=j(E({},b),{amount:new Ie(m,b.amount),fee:b.fee===void 0?void 0:new Ie(m,b.fee)}),S=j(E({},y),{amount:new Ie(m,y.amount),fee:y.fee===void 0?void 0:new Ie(m,y.fee)}),I=new ze({baseToken:d,denominator:new ue(10).pow(new ue(20+d.decimals)),quoteToken:m,numerator:w.mul(new R(10**(20+m.decimals))).toFixed(0)}),L=new ze({baseToken:d,denominator:new ue(10).pow(new ue(20+d.decimals)),quoteToken:m,numerator:k.mul(new R(10**(20+m.decimals))).toFixed(0)}),N=new Ie(d,A);return{allTrade:f,realAmountIn:T,amountOut:K,minAmountOut:S,expirationTime:g,currentPrice:I,executionPrice:L,priceImpact:P,fee:N,remainingAccounts:h,executionPriceX64:x}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountOut:o,slippage:s,priceLimit:a=new R(0)}){var S;let c=n.toBase58()===e.mintA.address,u={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;a.equals(new R(0))?l=c?et.sub(new ue(1)):$e.add(new ue(1)):l=q.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=ye(o,u[n.toString()],i,!0),{expectedAmountIn:m,remainingAccounts:f,executionPrice:p,feeAmount:b}=pe.getInputAmountAndRemainAccounts(e,t,n,d.amount.sub((S=d.fee)!=null?S:fe),l),y=c?e.mintB.address:e.mintA.address,g=ye(m,u[y],i,!1),w=q.sqrtPriceX64ToPrice(p,e.mintA.decimals,e.mintB.decimals),k=c?w:new R(1).div(w),P=m.mul(new ue(Math.floor((1+s)*1e10))).div(new ue(1e10)),A=ye(P,u[y],i,!0),h=c?e.currentPrice:new R(1).div(e.currentPrice),x=new R(k).sub(h).abs(),T=h,K=new gt(new R(x).mul(10**15).toFixed(0),new R(T).mul(10**15).toFixed(0));return{amountIn:g,maxAmountIn:A,realAmountOut:d,expirationTime:yt(g.expirationTime,d.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:K,fee:b,remainingAccounts:f}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var p,b,y;let o=e[t],s=O.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=O.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,d=a-s,m=o.priceMax-o.priceMin,f;return l<=0?f=0:d===l?f=m/l:m===l?f=l/d:f=l/m*(l/d),{feeApr:o.feeApr*f,rewardsApr:[((p=o.rewardApr[0])!=null?p:0)*f,((b=o.rewardApr[1])!=null?b: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:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],d=i[wt(e.mintA.address).toString()],m=i[wt(e.mintB.address).toString()],f=e.mintA.decimals,p=e.mintB.decimals;if(!l||!d||!m)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let b=q.priceToSqrtPriceX64(new R(e.price),e.mintA.decimals,e.mintB.decimals),y=q.getSqrtPriceX64FromTick(s),g=q.getSqrtPriceX64FromTick(a),{amountSlippageA:w,amountSlippageB:k}=$.getAmountsFromLiquidityWithSlippage(b,y,g,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:A}=$.getAmountsFromLiquidityWithSlippage(b,y,g,o,!1,!1,0),h=new R(w.toString()).div(new R(10).pow(f)).mul(d.value).add(new R(k.toString()).div(new R(10).pow(p)).mul(m.value)),x=new R(P.toString()).div(new R(10).pow(f)).mul(d.value).add(new R(A.toString()).div(new R(10).pow(p)).mul(m.value)),T=new R(1).div(h.add(x)),S=new R(l.volumeFee).mul(365).div(u).mul(T).mul(100).toNumber(),I=3600*24*365,L=e.rewardDefaultInfos.map(N=>{var D,Te;let _=N.mint.decimals,U=i[N.mint.address];return c<((D=N.startTime)!=null?D:0)||c>((Te=N.endTime)!=null?Te:0)||!N.perSecond||!U||_===void 0?0:new R(U.value).mul(new R(N.perSecond).mul(I)).div(new R(10).pow(_)).mul(T).mul(100).toNumber()});return{feeApr:S,rewardsApr:L,apr:S+L.reduce((N,_)=>N+_,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var g,w;let l=q.priceToSqrtPriceX64(new R(e.price),e.mintA.decimals,e.mintB.decimals),d=q.getSqrtPriceX64FromTick(n),m=q.getSqrtPriceX64FromTick(i),f=a?1-s:1+s,p=ye(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,c,!u),b=new ue(new R(p.amount.sub((w=p.fee)!=null?w:fe).toString()).mul(f).toFixed(0)),y;if(l.lte(d))y=t?$.getLiquidityFromTokenAmountA(d,m,b,!a):new ue(0);else if(l.lte(m)){let k=$.getLiquidityFromTokenAmountA(l,m,b,!a),P=$.getLiquidityFromTokenAmountB(d,l,b);y=t?k:P}else y=t?new ue(0):$.getLiquidityFromTokenAmountB(d,m,b);return pe.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:i,liquidity:y,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var y,g,w,k;let c=q.getSqrtPriceX64FromTick(n),u=q.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,d=$.getAmountsFromLiquidity(q.priceToSqrtPriceX64(new R(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[m,f]=[ye(d.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),ye(d.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[p,b]=[ye(d.amountA.muln(l),(w=t.mintA.extensions)==null?void 0:w.feeConfig,e,!0),ye(d.amountB.muln(l),(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)];return{liquidity:o,amountA:m,amountB:f,amountSlippageA:p,amountSlippageB:b,expirationTime:yt(m.expirationTime,f.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(c=>!n[c.id]).map(c=>new We(c.id));(await it(e,i)).forEach((c,u)=>{!c||(n[i[u].toBase58()]=Ln.decode(c.data))});let s=t.map(c=>we(new We(c.programId),new We(c.id)).publicKey),a=await pe.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>j(E({},c),{[u.id]:j(E({},n[u.id]),{id:new We(u.id),version:6,programId:new We(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:j(E({},u.config),{id:new We(u.config.id),fundOwner:""}),currentPrice:new R(u.price),exBitmapAccount:we(new We(u.programId),new We(u.id)).publicKey,exBitmapInfo:a[we(new We(u.programId),new We(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber(),rewardInfos:n[u.id].rewardInfos})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var fi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function wr(r){return j(E({},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:fi,week:fi,month:fi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,burnPercent:0,config:j(E({},r.ammConfig),{id:r.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]})})}var V=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(fe)||(o=o.add(Je)),o}static mulDivFloor(e,t,n){if(n.eq(fe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(fe))throw new Error("division by 0");return e.mul(t).add(n.sub(Je)).div(n)}static x64ToDecimal(e,t){return new R(e.toString()).div(R.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new Z(e.mul(R.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Cn).sub(t).mod(Cn)}};function Ae(r,e){return pi(r.mul(e),64,256)}function Cs(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function pi(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var q=class{static sqrtPriceX64ToPrice(e,t,n){return V.x64ToDecimal(e).pow(2).mul(R.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return V.decimalToX64(e.mul(R.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(fe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(fe))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(fe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(fe))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(fe))return e;let o=t.shln(Zt);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?V.mulDivCeil(s,e,a):V.mulDivRoundingUp(s,Je,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 V.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(Zt);if(i)return e.add(o.div(t));{let s=V.mulDivRoundingUp(o,Je,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<Ke||e>Re)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new Z("18445821805675395072"):new Z("18446744073709551616");return(t&2)!=0&&(n=Ae(n,new Z("18444899583751176192"))),(t&4)!=0&&(n=Ae(n,new Z("18443055278223355904"))),(t&8)!=0&&(n=Ae(n,new Z("18439367220385607680"))),(t&16)!=0&&(n=Ae(n,new Z("18431993317065453568"))),(t&32)!=0&&(n=Ae(n,new Z("18417254355718170624"))),(t&64)!=0&&(n=Ae(n,new Z("18387811781193609216"))),(t&128)!=0&&(n=Ae(n,new Z("18329067761203558400"))),(t&256)!=0&&(n=Ae(n,new Z("18212142134806163456"))),(t&512)!=0&&(n=Ae(n,new Z("17980523815641700352"))),(t&1024)!=0&&(n=Ae(n,new Z("17526086738831433728"))),(t&2048)!=0&&(n=Ae(n,new Z("16651378430235570176"))),(t&4096)!=0&&(n=Ae(n,new Z("15030750278694412288"))),(t&8192)!=0&&(n=Ae(n,new Z("12247334978884435968"))),(t&16384)!=0&&(n=Ae(n,new Z("8131365268886854656"))),(t&32768)!=0&&(n=Ae(n,new Z("3584323654725218816"))),(t&65536)!=0&&(n=Ae(n,new Z("696457651848324352"))),(t&131072)!=0&&(n=Ae(n,new Z("26294789957507116"))),(t&262144)!=0&&(n=Ae(n,new Z("37481735321082"))),e>0&&(n=rr.div(n)),n}static getTickFromPrice(e,t,n){return q.getTickFromSqrtPriceX64(q.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(et)||e.lt($e))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new Z(t-64),i=Cs(n,32,128),o=new Z("8000000000000000","hex"),s=0,a=new Z(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new Z(0))&&s<or;){c=c.mul(c);let p=c.shrn(127);c=c.shrn(63+p.toNumber()),a=a.add(o.mul(p)),o=o.shrn(1),s+=1}let u=a.shrn(32),d=i.add(u).mul(new Z(sr)),m=pi(d.sub(new Z(ar)),64,128).toNumber(),f=pi(d.add(new Z(cr)),64,128).toNumber();return m==f?m:q.getSqrtPriceX64FromTick(f).lte(e)?f:m}},Tt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=q.getTickFromSqrtPriceX64(q.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=Tt.getTickWithPriceAndTickspacing(e,t,n,i),s=q.getSqrtPriceX64FromTick(o);return q.sqrtPriceX64ToPrice(s,n,i)}},$=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(fe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Zt),s=t.sub(e);return i?V.mulDivRoundingUp(V.mulDivCeil(o,s,t),Je,e):V.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(fe))throw new Error("sqrtPriceX64A must greater than 0");return i?V.mulDivCeil(n,t.sub(e),_e):V.mulDivFloor(n,t.sub(e),_e)}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?V.mulDivRoundingUp(a,Je,ai):a.shrn(Zt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),V.mulDivFloor(n,ai,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return $.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=$.getLiquidityFromTokenAmountA(e,n,i,!1),a=$.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return $.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:$.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new Z(0)};if(e.lt(n)){let s=$.getTokenAmountAFromLiquidity(e,n,i,o),a=$.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new Z(0),amountB:$.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:c,amountB:u}=$.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,d=new Z(new R(c.toString()).mul(l).toFixed(0)),m=new Z(new R(u.toString()).mul(l).toFixed(0));return{amountSlippageA:d,amountSlippageB:m}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var w,k,P,A;let u=q.priceToSqrtPriceX64(new R(e.price),e.mintA.decimals,e.mintB.decimals),l=q.getSqrtPriceX64FromTick(t),d=q.getSqrtPriceX64FromTick(n),m=s?1+o:1-o,f=$.getAmountsFromLiquidity(u,l,d,i,s),[p,b]=[ye(f.amountA,(w=e.mintA.extensions)==null?void 0:w.feeConfig,a,c),ye(f.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,a,c)],[y,g]=[ye(new Z(new R(f.amountA.toString()).mul(m).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,c),ye(new Z(new R(f.amountB.toString()).mul(m).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,c)];return{liquidity:i,amountA:p,amountB:b,amountSlippageA:y,amountSlippageB:g,expirationTime:yt(p.expirationTime,b.expirationTime)}}},At=class{static swapCompute(e,t,n,i,o,s,a,c,u,l,d,m,f,p,b=!1){if(m.eq(fe))throw new Error("amountSpecified must not be 0");if(p||(p=s?$e.add(Je):et.sub(Je)),s){if(p.lt($e))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(p.gte(d))throw new Error("sqrtPriceX64 must smaller than current")}else{if(p.gt(et))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(p.lte(d))throw new Error("sqrtPriceX64 must greater than current")}let y=m.gt(fe),g={amountSpecifiedRemaining:m,amountCalculated:fe,sqrtPriceX64:d,tick:u>f?Math.min(f+J.tickCount(l)-1,u):f,accounts:[],liquidity:c,feeAmount:new Z(0)},w=f,k=n[f],P=0,A=!s&&k.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(fe)&&!g.sqrtPriceX64.eq(p);){P>10;let h={};h.sqrtPriceStartX64=g.sqrtPriceX64;let x=O.nextInitTick(k,g.tick,l,s,A),T=x||null,K=null;if(!(T!=null&&T.liquidityGross.gtn(0))){let I=pe.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},w,s);if(!I.isExist){if(b)return{allTrade:!1,amountSpecifiedRemaining:g.amountSpecifiedRemaining,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts};throw Error("swapCompute LiquidityInsufficient")}w=I.nextStartIndex;let{publicKey:L}=Q(e,t,w);K=L,k=n[w];try{T=O.firstInitializedTick(k,s)}catch{throw Error("not found next tick info")}}h.tickNext=T.tick,h.initialized=T.liquidityGross.gtn(0),f!==w&&K&&(g.accounts.push(K),f=w),h.tickNext<Ke?h.tickNext=Ke:h.tickNext>Re&&(h.tickNext=Re),h.sqrtPriceNextX64=q.getSqrtPriceX64FromTick(h.tickNext);let S;if(s&&h.sqrtPriceNextX64.lt(p)||!s&&h.sqrtPriceNextX64.gt(p)?S=p:S=h.sqrtPriceNextX64,[g.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=At.swapStepCompute(g.sqrtPriceX64,S,g.liquidity,g.amountSpecifiedRemaining,a,s),g.feeAmount=g.feeAmount.add(h.feeAmount),y?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),g.amountCalculated=g.amountCalculated.sub(h.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(h.amountOut),g.amountCalculated=g.amountCalculated.add(h.amountIn.add(h.feeAmount))),g.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let I=T.liquidityNet;s&&(I=I.mul(st)),g.liquidity=$.addDelta(g.liquidity,I)}A=h.tickNext!=g.tick&&!s&&k.startTickIndex===h.tickNext,g.tick=s?h.tickNext-1:h.tickNext}else if(g.sqrtPriceX64!=h.sqrtPriceStartX64){let I=q.getTickFromSqrtPriceX64(g.sqrtPriceX64);A=I!=g.tick&&!s&&k.startTickIndex===I,g.tick=I}++P}try{let{nextStartIndex:h,isExist:x}=J.nextInitializedTickArray(g.tick,l,s,i,o);x&&f!==h&&(g.accounts.push(Q(e,t,h).publicKey),f=h)}catch{}return{allTrade:!0,amountSpecifiedRemaining:fe,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,i,o,s){let a={sqrtPriceX64Next:new Z(0),amountIn:new Z(0),amountOut:new Z(0),feeAmount:new Z(0)},c=i.gte(fe);if(c){let l=V.mulDivFloor(i,Kn.sub(new Z(o.toString())),Kn);a.amountIn=s?$.getTokenAmountAFromLiquidity(t,e,n,!0):$.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(a.amountIn)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=q.getNextSqrtPriceX64FromInput(e,n,l,s)}else a.amountOut=s?$.getTokenAmountBFromLiquidity(t,e,n,!1):$.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(st).gte(a.amountOut)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=q.getNextSqrtPriceX64FromOutput(e,n,i.mul(st),s);let u=t.eq(a.sqrtPriceX64Next);return s?(u&&c||(a.amountIn=$.getTokenAmountAFromLiquidity(a.sqrtPriceX64Next,e,n,!0)),u&&!c||(a.amountOut=$.getTokenAmountBFromLiquidity(a.sqrtPriceX64Next,e,n,!1))):(a.amountIn=u&&c?a.amountIn:$.getTokenAmountBFromLiquidity(e,a.sqrtPriceX64Next,n,!0),a.amountOut=u&&!c?a.amountOut:$.getTokenAmountAFromLiquidity(e,a.sqrtPriceX64Next,n,!1)),!c&&a.amountOut.gt(i.mul(st))&&(a.amountOut=i.mul(st)),c&&!a.sqrtPriceX64Next.eq(t)?a.feeAmount=i.sub(a.amountIn):a.feeAmount=V.mulDivCeil(a.amountIn,new Z(o),Kn.sub(new Z(o))),[a.sqrtPriceX64Next,a.amountIn,a.amountOut,a.feeAmount]}};var ke=60,Pt=512,O=class{static getTickArrayAddressByTick(e,t,n,i){let o=O.getTickArrayStartIndexByTick(n,i),{publicKey:s}=Q(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=O.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=ke)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=J.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)*J.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*ke,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*ke,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*ke:e+t*ke}static mergeTickArrayBitmap(e){let t=new Ks(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*ke));return[...O.searchLowBitFromStart(e,t,s-1,o,n),...O.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return O.searchHightBitFromStart(e,t,-7680,Pt,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=O.getAllInitializedTickArrayStartIndex(n,i,o);for(let c of a){let{publicKey:u}=Q(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}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(u=>O.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===i)break}let c=J.tickCount(o);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>O.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===i)break}let c=J.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<Ke||e>Re}static nextInitTick(e,t,n,i,o){if(J.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<ke;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=ke-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<ke;){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=q.getSqrtPriceX64FromTick(t),o=q.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new R(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new R(1).div(t),o=Tt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=q.getSqrtPriceX64FromTick(o),a=q.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new R(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=q.getSqrtPriceX64FromTick(t),o=q.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new R(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new R(1).div(t),o=Tt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=q.getSqrtPriceX64FromTick(o),a=q.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new R(1).div(a)}}};var kr=ne([De(8),be("bump"),zt("index"),re(""),Nt("protocolFeeRate"),Nt("tradeFeeRate"),zt("tickSpacing"),de(v(),8,"")]),Ns=ne([Nt("blockTimestamp"),nr("tickCumulative"),de(v(),4)]),Pr=ne([De(8),Le("initialized"),v("recentEpoch"),zt("observationIndex"),re("poolId"),de(Ns,100,"observations"),de(v(),4)]),Ls=ne([be("rewardState"),v("openTime"),v("endTime"),v("lastUpdateTime"),Y("emissionsPerSecondX64"),v("rewardTotalEmissioned"),v("rewardClaimed"),re("tokenMint"),re("tokenVault"),re("creator"),Y("rewardGrowthGlobalX64")]),Ln=ne([De(8),be("bump"),re("ammConfig"),re("creator"),re("mintA"),re("mintB"),re("vaultA"),re("vaultB"),re("observationId"),be("mintDecimalsA"),be("mintDecimalsB"),zt("tickSpacing"),Y("liquidity"),Y("sqrtPriceX64"),ce("tickCurrent"),Nt(),Y("feeGrowthGlobalX64A"),Y("feeGrowthGlobalX64B"),v("protocolFeesTokenA"),v("protocolFeesTokenB"),Y("swapInAmountTokenA"),Y("swapOutAmountTokenB"),Y("swapInAmountTokenB"),Y("swapOutAmountTokenA"),be("status"),de(be(),7,""),de(Ls,3,"rewardInfos"),de(v(),16,"tickArrayBitmap"),v("totalFeesTokenA"),v("totalFeesClaimedTokenA"),v("totalFeesTokenB"),v("totalFeesClaimedTokenB"),v("fundFeesTokenA"),v("fundFeesTokenB"),v("startTime"),de(v(),15*4-3,"padding")]),Rs=ne([Y("growthInsideLastX64"),v("rewardAmountOwed")]),nn=ne([De(8),be("bump"),re("nftMint"),re("poolId"),ce("tickLower"),ce("tickUpper"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),v("tokenFeesOwedA"),v("tokenFeesOwedB"),de(Rs,3,"rewardInfos"),de(v(),8,"")]),Vd=ne([De(8),be("bump"),re("poolId"),ce("tickLowerIndex"),ce("tickUpperIndex"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),v("tokenFeesOwedA"),v("tokenFeesOwedB"),de(Y(),3,"rewardGrowthInside"),de(v(),8,"")]),Ms=ne([ce("tick"),ir("liquidityNet"),Y("liquidityGross"),Y("feeGrowthOutsideX64A"),Y("feeGrowthOutsideX64B"),de(Y(),3,"rewardGrowthsOutsideX64"),de(Nt(),13,"")]),en=ne([De(8),re("poolId"),ce("startTickIndex"),de(Ms,ke,"ticks"),be("initializedTickCount"),de(be(),115,"")]),Ar=ne([De(329),de(re(),100,"whitelistMints")]),hr=ne([De(8),re("poolId"),de(de(v(),8),di,"positiveTickArrayBitmap"),de(de(v(),8),di,"negativeTickArrayBitmap")]),Ud=ne([v(),be("bump"),re("owner"),re("poolId"),re("positionId"),re("nftAccount"),de(v(),8)]),Gd=ne([De(8),be("bump"),re("lockOwner"),re("poolId"),re("positionId"),re("nftAccount"),re("lockNftMint"),v("recentEpoch"),de(v(),8)]);Pr.span;var Tr=Be("Raydium_Clmm"),qe={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],openPositionWithTokenEx:[77,255,174,82,125,29,201,46],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},xr=[188,37,179,131,82,150,84,73],Br=[16,72,250,198,14,162,212,19],le=class{static createPoolInstruction(e,t,n,i,o,s,a,c,u,l,d,m,f){let p=ne([Y("sqrtPriceX64"),v("zero")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:ct.programId,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({sqrtPriceX64:f,zero:fe},y);let g=Buffer.from([...qe.createPool,...y]);return new Se({keys:b,programId:e,data:g})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:o,ammConfigId:s,initialPriceX64:a}=e,[c,u]=[new C(i.address),new C(o.address)],{publicKey:l}=fr(t,s,c,u),{publicKey:d}=br(t,l),{publicKey:m}=li(t,l,c),{publicKey:f}=li(t,l,u),p=we(t,l).publicKey,b=[this.createPoolInstruction(t,l,n,s,d,c,m,new C(i.programId||ie),u,f,new C(o.programId||ie),p,a)];return{signers:[],instructions:b,instructionTypes:[se.CreateAccount,se.ClmmCreatePool],address:{poolId:l,observationId:d,exBitmapAccount:p,mintAVault:m,mintBVault:f},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,d,m,f,p,b,y,g,w,k,P,A,h,x,T,K,S){let I=ne([ce("tickLowerIndex"),ce("tickUpperIndex"),ce("tickArrayLowerStartIndex"),ce("tickArrayUpperStartIndex"),Y("liquidity"),v("amountMaxA"),v("amountMaxB"),Le("withMetadata"),be("optionBaseFlag"),Le("baseFlag")]),L=[...S?[{pubkey:S,isSigner:!1,isWritable:!0}]:[]],N=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:ct.programId,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:ht,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...L],_=Buffer.alloc(I.span);I.encode({tickLowerIndex:w,tickUpperIndex:k,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:h,amountMaxA:x,amountMaxB:T,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},_);let U=Buffer.from([...qe.openPosition,..._]);return new Se({keys:N,programId:e,data:U})}static openPositionFromLiquidityInstruction22(e,t,n,i,o,s,a,c,u,l,d,m,f,p,b,y,g,w,k,P,A,h,x,T,K){let S=ne([ce("tickLowerIndex"),ce("tickUpperIndex"),ce("tickArrayLowerStartIndex"),ce("tickArrayUpperStartIndex"),Y("liquidity"),v("amountMaxA"),v("amountMaxB"),Le("withMetadata"),be("optionBaseFlag"),Le("baseFlag")]),I=[...K?[{pubkey:K,isSigner:!1,isWritable:!0}]:[]],L=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:ct.programId,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...I],N=Buffer.alloc(S.span);S.encode({tickLowerIndex:g,tickUpperIndex:w,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:P,liquidity:A,amountMaxA:h,amountMaxB:x,withMetadata:T==="create",baseFlag:!1,optionBaseFlag:0},N);let _=Buffer.from([...qe.openPositionWithTokenEx,...N]);return new Se({keys:L,programId:e,data:_})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l,nft2022:d}){let m=[],[f,p]=[new C(e.programId),new C(e.id)],b;if(l)b=new C((await l(1))[0]);else{let K=Rn.generate();m.push(K),b=K.publicKey}let y=O.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=O.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=Q(f,p,y),{publicKey:k}=Q(f,p,g),{publicKey:P}=d?ae(n.wallet,b,ge):ae(n.wallet,b,ie),{publicKey:A}=Yt(b),{publicKey:h}=Me(f,b),{publicKey:x}=je(f,p,i,o),T=d?this.openPositionFromLiquidityInstruction22(f,n.feePayer,p,n.wallet,b,P,x,w,k,h,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),i,o,y,g,s,a,c,u,pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?we(f,p).publicKey:void 0):this.openPositionFromLiquidityInstruction(f,n.feePayer,p,n.wallet,b,P,A,x,w,k,h,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),i,o,y,g,s,a,c,u,pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?we(f,p).publicKey:void 0);return{signers:m,instructions:[T],instructionTypes:[se.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:P,metadataAccount:A,personalPosition:h,protocolPosition:x}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l,nft2022:d}){let m=[],[f,p]=[new C(e.programId),new C(e.id)],b;if(l)b=new C((await l(1))[0]);else{let K=Rn.generate();m.push(K),b=K.publicKey}let y=O.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=O.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=Q(f,p,y),{publicKey:k}=Q(f,p,g),{publicKey:P}=d?ae(n.wallet,b,ge):ae(n.wallet,b,ie),{publicKey:A}=Yt(b),{publicKey:h}=Me(f,b),{publicKey:x}=je(f,p,i,o),T=d?this.openPositionFromBaseInstruction22(f,n.feePayer,p,n.wallet,b,P,x,w,k,h,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),i,o,y,g,u,s,a,c,pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?we(f,p).publicKey:void 0):this.openPositionFromBaseInstruction(f,n.feePayer,p,n.wallet,b,P,A,x,w,k,h,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),i,o,y,g,u,s,a,c,pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?we(f,p).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:P,metadataAccount:A,personalPosition:h,protocolPosition:x},instructions:[T],signers:m,instructionTypes:[se.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,c,u,l,d,m,f,p,b,y,g,w,k,P,A,h,x,T,K,S){let I=ne([ce("tickLowerIndex"),ce("tickUpperIndex"),ce("tickArrayLowerStartIndex"),ce("tickArrayUpperStartIndex"),Y("liquidity"),v("amountMaxA"),v("amountMaxB"),Le("withMetadata"),be("optionBaseFlag"),Le("baseFlag")]),L=[...S?[{pubkey:S,isSigner:!1,isWritable:!0}]:[]],N=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:ct.programId,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:ht,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...L],_=Buffer.alloc(I.span);I.encode({tickLowerIndex:w,tickUpperIndex:k,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:new bi(0),amountMaxA:x==="MintA"?T:K,amountMaxB:x==="MintA"?K:T,withMetadata:h==="create",baseFlag:x==="MintA",optionBaseFlag:1},_);let U=Buffer.from([...qe.openPosition,..._]);return new Se({keys:N,programId:e,data:U})}static openPositionFromBaseInstruction22(e,t,n,i,o,s,a,c,u,l,d,m,f,p,b,y,g,w,k,P,A,h,x,T,K){let S=ne([ce("tickLowerIndex"),ce("tickUpperIndex"),ce("tickArrayLowerStartIndex"),ce("tickArrayUpperStartIndex"),Y("liquidity"),v("amountMaxA"),v("amountMaxB"),Le("withMetadata"),be("optionBaseFlag"),Le("baseFlag")]),I=[...K?[{pubkey:K,isSigner:!1,isWritable:!0}]:[]],L=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:ct.programId,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...I],N=Buffer.alloc(S.span);S.encode({tickLowerIndex:g,tickUpperIndex:w,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:P,liquidity:new bi(0),amountMaxA:h==="MintA"?x:T,amountMaxB:h==="MintA"?T:x,withMetadata:A==="create",baseFlag:h==="MintA",optionBaseFlag:1},N);let _=Buffer.from([...qe.openPositionWithTokenEx,...N]);return new Se({keys:L,programId:e,data:_})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l,nft2022:d}){let m,f=[];if(l)m=new C((await l(1))[0]);else{let K=Rn.generate();f.push(K),m=K.publicKey}let[p,b]=[new C(e.programId),new C(e.id)],y=O.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=O.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=Q(p,b,y),{publicKey:k}=Q(p,b,g),{publicKey:P}=d?ae(n.wallet,m,ge):ae(n.wallet,m,ie),{publicKey:A}=Yt(m),{publicKey:h}=Me(p,m),{publicKey:x}=je(p,b,i,o),T=d?this.openPositionFromLiquidityInstruction22(p,n.wallet,b,n.wallet,m,P,x,w,k,h,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(t.mintA.address),new C(t.mintB.address),i,o,y,g,s,a,c,u,pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?we(p,b).publicKey:void 0):this.openPositionFromLiquidityInstruction(p,n.wallet,b,n.wallet,m,P,A,x,w,k,h,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(t.mintA.address),new C(t.mintB.address),i,o,y,g,s,a,c,u,pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?we(p,b).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:P,metadataAccount:A,personalPosition:h,protocolPosition:x},instructions:[T],signers:f,instructionTypes:[se.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o,s){let a=ne([]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:ct.programId,isSigner:!1,isWritable:!1},{pubkey:s?ge:ie,isSigner:!1,isWritable:!1}],u=Buffer.alloc(a.span);a.encode({},u);let l=Buffer.from([...qe.closePosition,...u]);return new Se({keys:c,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i,nft2022:o}){let s=new C(e.programId),a=o?ae(n.wallet,i.nftMint,ge).publicKey:ae(n.wallet,i.nftMint,ie).publicKey,{publicKey:c}=Me(s,i.nftMint),u=[];return u.push(this.closePositionInstruction(s,n.wallet,i.nftMint,a,c,o)),{address:{positionNftAccount:a,personalPosition:c},signers:[],instructions:u,instructionTypes:[se.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,d,m,f,p,b,y,g,w){let k=ne([Y("liquidity"),v("amountMaxA"),v("amountMaxB"),be("optionBaseFlag"),Le("baseFlag")]),P=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[]],A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},...P],h=Buffer.alloc(k.span);k.encode({liquidity:b,amountMaxA:y,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},h);let x=Buffer.from([...qe.increaseLiquidity,...h]);return new Se({keys:A,programId:e,data:x})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a,nft2022:c}){let[u,l]=[new C(e.programId),new C(e.id)],d=O.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=O.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=Q(u,l,d),{publicKey:p}=Q(u,l,m),{publicKey:b}=c?ae(i.wallet,n.nftMint,ge):ae(i.wallet,n.nftMint,ie),{publicKey:y}=Me(u,n.nftMint),{publicKey:g}=je(u,l,n.tickLower,n.tickUpper),w=this.increasePositionFromLiquidityInstruction(u,i.wallet,b,y,l,g,f,p,i.tokenAccountA,i.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),o,s,a,pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,m])?we(u,l).publicKey:void 0);return{address:{tickArrayLower:f,tickArrayUpper:p,positionNftAccount:b,personalPosition:y,protocolPosition:g},signers:[],instructions:[w],instructionTypes:[se.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a,nft2022:c}){let[u,l]=[new C(e.programId),new C(e.id)],d=O.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=O.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=Q(u,l,d),{publicKey:p}=Q(u,l,m),{publicKey:b}=c?ae(i.wallet,n.nftMint,ge):ae(i.wallet,n.nftMint,ie),{publicKey:y}=Me(u,n.nftMint),{publicKey:g}=je(u,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:f,tickArrayUpper:p,positionNftAccount:b,personalPosition:y,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,b,y,l,g,f,p,i.tokenAccountA,i.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),o,s,a,pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,m])?we(u,l).publicKey:void 0)],signers:[],instructionTypes:[se.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,c,u,l,d,m,f,p,b,y,g,w){let k=ne([Y("liquidity"),v("amountMaxA"),v("amountMaxB"),be("optionBaseFlag"),Le("baseFlag")]),P=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[]],A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},...P],h=Buffer.alloc(k.span);k.encode({liquidity:new bi(0),amountMaxA:b==="MintA"?y:g,amountMaxB:b==="MintA"?g:y,baseFlag:b==="MintA",optionBaseFlag:1},h);let x=Buffer.from([...qe.increaseLiquidity,...h]);return new Se({keys:A,programId:e,data:x})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,d,m,f,p,b,y,g,w,k){let P=ne([Y("liquidity"),v("amountMinA"),v("amountMinB")]),A=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...b.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.rewardMint,isSigner:!1,isWritable:!1}]).flat()],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:yn,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},...A],x=Buffer.alloc(P.span);P.encode({liquidity:y,amountMinA:g,amountMinB:w},x);let T=Buffer.from([...qe.decreaseLiquidity,...x]);return new Se({keys:h,programId:e,data:T})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:c,nft2022:u}){let[l,d]=[new C(e.programId),new C(e.id)],m=O.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),f=O.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Q(l,d,m),{publicKey:b}=Q(l,d,f),{publicKey:y}=u?ae(i.wallet,n.nftMint,ge):ae(i.wallet,n.nftMint,c),{publicKey:g}=Me(l,n.nftMint),{publicKey:w}=je(l,d,n.tickLower,n.tickUpper),k=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)k.push({poolRewardVault:new C(t.rewardInfos[h].vault),ownerRewardVault:i.rewardAccounts[h],rewardMint:new C(e.rewardDefaultInfos[h].mint.address)});let P=[],A=this.decreaseLiquidityInstruction(l,i.wallet,y,g,d,w,p,b,i.tokenAccountA,i.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),k,o,s,a,pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,f])?we(l,d).publicKey:void 0);return P.push(A),{address:{tickArrayLower:p,tickArrayUpper:b,positionNftAccount:y,personalPosition:g,protocolPosition:w},signers:[],instructions:P,instructionTypes:[se.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,c,u,l,d,m,f,p,b,y,g){let w=ne([v("amount"),v("otherAmountThreshold"),Y("sqrtPriceLimitX64"),Le("isBaseInput")]),k=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...d.map(x=>({pubkey:x,isSigner:!1,isWritable:!0}))],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:yn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...k],A=Buffer.alloc(w.span);w.encode({amount:f,otherAmountThreshold:p,sqrtPriceLimitX64:b,isBaseInput:y},A);let h=Buffer.from([...qe.swap,...A]);return new Se({keys:P,programId:e,data:h})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,d]=[new C(e.programId),new C(e.id)],[m,f]=[new C(t.vault.A),new C(t.vault.B)],[p,b]=[new C(e.mintA.address),new C(e.mintB.address)],y=e.mintA.address===o.toString(),g=[this.swapInstruction(l,i.wallet,d,new C(e.config.id),y?i.tokenAccountA:i.tokenAccountB,y?i.tokenAccountB:i.tokenAccountA,y?m:f,y?f:m,y?p:b,y?b:p,u,n,s,a,c,!0,we(l,d).publicKey)];return{signers:[],instructions:g,instructionTypes:[se.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,outputMint:o,amountOut:s,amountInMax:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,d]=[new C(e.programId),new C(e.id)],[m,f]=[new C(t.vault.A),new C(t.vault.B)],[p,b]=[new C(e.mintA.address),new C(e.mintB.address)],y=e.mintA.address===o.toBase58(),g=[this.swapInstruction(l,i.wallet,d,new C(e.config.id),y?i.tokenAccountB:i.tokenAccountA,y?i.tokenAccountA:i.tokenAccountB,y?f:m,y?m:f,y?b:p,y?p:b,u,n,s,a,c,!1,we(l,d).publicKey)];return{signers:[],instructions:g,instructionTypes:[se.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,c,u,l,d,m){let f=ne([v("openTime"),v("endTime"),Y("emissionsPerSecondX64")]),p=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:ct.programId,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({openTime:Pe(l),endTime:Pe(d),emissionsPerSecondX64:m},b);let y=Buffer.from([...qe.initReward,...b]);return new Se({keys:p,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new C(e.programId),new C(e.id)],a=pr(o,s,i.mint).publicKey,c=Qt(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new C(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[se.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,c,u,l,d,m){let f=ne([be("rewardIndex"),Y("emissionsPerSecondX64"),v("openTime"),v("endTime")]),p=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],b=Buffer.alloc(f.span);f.encode({rewardIndex:u,emissionsPerSecondX64:m,openTime:Pe(l),endTime:Pe(d)},b);let y=Buffer.from([...qe.setRewardEmissions,...b]);return new Se({keys:p,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new C(e.programId),new C(e.id)],a,c,u;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===i.mint.toString()&&(a=m,c=new C(t.rewardInfos[m].vault),u=new C(t.rewardInfos[m].mint.address));(a===void 0||c===void 0)&&Tr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Qt(o).publicKey,d=[this.setRewardInstruction(o,n.wallet,s,l,new C(e.config.id),n.tokenAccount,c,u,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:d,instructionTypes:[se.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let c=ne([be("rewardIndex")]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:yn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let d=Buffer.from([...qe.collectReward,...l]);return new Se({keys:u,programId:e,data:d})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new C(e.programId),new C(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,c=new C(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&Tr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,c,i,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[se.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:i,wallet:o,nftMint:s,nft2022:a,getEphemeralSigners:c}){let u=[],l;if(c)l=new C((await c(1))[0]);else{let g=Rn.generate();u.push(g),l=g.publicKey}let d=a?ae(o,s,ge).publicKey:ae(o,s,ie).publicKey,{publicKey:m}=Me(n,s),f=Jt(e,l).publicKey,p=ae(o,l,ie).publicKey,b=Yt(l).publicKey,y=le.lockPositionInstructionV2({programId:e,auth:t,payer:i,positionOwner:o,lockOwner:o,positionNftAccount:d,positionId:m,lockPositionId:f,lockNftMint:l,lockNftAccount:p,metadataAccount:b,withMetadata:!0,nft2022:a,positionNftMint:s,authPositionNftAccount:ae(t,s,a?ge:ie).publicKey,positionNftProgram:a?ge:ie});return{address:{positionId:m,lockPositionId:f,lockNftAccount:p,lockNftMint:l,positionNftAccount:d,metadataAccount:b},instructions:[y],signers:u,instructionTypes:[se.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:i,lockOwner:o,positionNftAccount:s,positionId:a,positionNftMint:c,authPositionNftAccount:u,positionNftProgram:l,lockPositionId:d,lockNftMint:m,lockNftAccount:f,metadataAccount:p,withMetadata:b}){let y=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ht,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:ct.programId,isSigner:!1,isWritable:!1}],g=ne([Le("withMetadata")]),w=Buffer.alloc(g.span);g.encode({withMetadata:b},w);let k=Buffer.from([...xr,...w]);return new Se({keys:y,programId:e,data:k})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:i,positionNft:o}){let{publicKey:s}=ae(i,o,ie),{publicKey:a}=Me(n,o),c=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:mi(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:ct.programId,isSigner:!1,isWritable:!1}];return new Se({keys:c,programId:e,data:Buffer.from(xr)})}static harvestLockPositionInstruction(e){let[t,n]=[new C(e.poolKeys.programId),new C(e.poolKeys.id)],i=O.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),o=O.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:s}=Q(t,n,i),{publicKey:a}=Q(t,n,o),{publicKey:c}=ae(e.owner,e.ownerPosition.nftMint,ie),{publicKey:u}=Me(t,e.ownerPosition.nftMint),{publicKey:l}=je(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),d=[];for(let p=0;p<e.poolKeys.rewardInfos.length;p++)d.push({poolRewardVault:new C(e.poolKeys.rewardInfos[p].vault),ownerRewardVault:e.ownerRewardAccounts[p],rewardMint:new C(e.poolKeys.rewardInfos[p].mint.address)});let m=[...d.map(p=>[{pubkey:p.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:p.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:p.rewardMint,isSigner:!1,isWritable:!1}]).flat()],f=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:mi(e.programId,u).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:new C(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new C(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Zn,isSigner:!1,isWritable:!1},{pubkey:new C(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new C(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...m];return new Se({keys:f,programId:e.programId,data:Buffer.from(Br)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:i,lockOwner:o,lockNftMint:s,lockNftAccount:a,positionNftAccount:c,positionId:u,poolId:l,protocolPosition:d,vaultA:m,vaultB:f,tickArrayLower:p,tickArrayUpper:b,userVaultA:y,userVaultB:g,mintA:w,mintB:k,rewardAccounts:P,exTickArrayBitmap:A}){let h=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...P.map(T=>[{pubkey:T.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:T.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:T.rewardMint,isSigner:!1,isWritable:!1}]).flat()],x=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Zn,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...h];return new Se({keys:x,programId:e,data:Buffer.from(Br)})}};var Sr=class extends Ht{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var k;let{programId:t,owner:n=((k=this.scope.owner)==null?void 0:k.publicKey)||M.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,computeBudgetConfig:c,forerunCreate:u,getObserveState:l,txVersion:d,txTipConfig:m}=e,f=this.createTxBuilder(),[p,b,y]=new ve(new M(i.address).toBuffer()).gt(new ve(new M(o.address).toBuffer()))?[o,i,new R(1).div(a)]:[i,o,a],g=q.priceToSqrtPriceX64(y,p.decimals,b.decimals),w=await le.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:b,ammConfigId:s.id,initialPriceX64:g,forerunCreate:!l&&u});return f.addInstruction(w),f.addCustomComputeBudget(c),f.addTipInstruction(m),f.versionBuild({txVersion:d,extInfo:{address:j(E({},w.address),{observationId:w.address.observationId.toBase58(),exBitmapAccount:w.address.exBitmapAccount.toBase58(),programId:t.toString(),id:w.address.poolId.toString(),mintA:p,mintB:b,openTime:"0",vault:{A:w.address.mintAVault.toString(),B:w.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:E({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:w.address.poolId.toString(),mintA:p,mintB:b,feeRate:s.tradeFeeRate,openTime:"0",programId:t.toString(),price:y.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]},burnPercent:0},ur),forerunCreate:u}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,nft2022:u,associatedOnly:l=!0,checkCreateATAOwner:d=!1,withMetadata:m="create",getEphemeralSigners:f,computeBudgetConfig:p,txTipConfig:b,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let g=this.createTxBuilder(),w=null,k=null,P=n.useSOLBalance&&e.mintA.address===ee.toString(),A=n.useSOLBalance&&e.mintB.address===ee.toString(),[h,x]=s==="MintA"?[a,c]:[c,a],{account:T,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new M(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:l,checkCreateATAOwner:d});T&&(w=T),g.addInstruction(K||{});let{account:S,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new M(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||x.isZero()?{payer:this.scope.ownerPubKey,amount:x}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:l,checkCreateATAOwner:d});S&&(k=S),g.addInstruction(I||{}),(!w||!k)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:w==null?void 0:w.toBase58(),ownerTokenAccountB:k==null?void 0:k.toBase58()});let L=t||await this.getClmmPoolKeys(e.id),N=await le.openPositionFromBaseInstructions({poolInfo:e,poolKeys:L,ownerInfo:j(E({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:w,tokenAccountB:k}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:m,getEphemeralSigners:f,nft2022:u});return g.addInstruction(N),g.addCustomComputeBudget(p),g.addTipInstruction(b),g.versionBuild({txVersion:y,extInfo:E({},N.address)})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:d="create",txVersion:m,computeBudgetConfig:f,txTipConfig:p,getEphemeralSigners:b,nft2022:y}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let g=this.createTxBuilder(),w=null,k=null,P=n.useSOLBalance&&e.mintA.address===ee.toBase58(),A=n.useSOLBalance&&e.mintB.address===ee.toBase58(),{account:h,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new M(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:u,checkCreateATAOwner:l});h&&(w=h),g.addInstruction(x||{});let{account:T,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new M(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:u,checkCreateATAOwner:l});T&&(k=T),g.addInstruction(K||{}),(w===void 0||k===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),I=await le.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:w,tokenAccountB:k},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:i,amountMaxB:o,withMetadata:d,getEphemeralSigners:b,nft2022:y});return g.addInstruction(I),g.addCustomComputeBudget(f),g.addTipInstruction(p),g.versionBuild({txVersion:m,extInfo:{address:I.address}})}async increasePositionFromLiquidity(e){var K;let{poolInfo:t,poolKeys:n,ownerPosition:i,amountMaxA:o,amountMaxB:s,liquidity:a,ownerInfo:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:d,txTipConfig:m,txVersion:f}=e,p=this.createTxBuilder(),b,y,g=c.useSOLBalance&&t.mintA.address===ee.toString(),w=c.useSOLBalance&&t.mintB.address===ee.toString(),{account:k,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new M(t.mintA.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:g||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:l});k&&(b=k),p.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new M(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:w||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:w,skipCloseAccount:!w,associatedOnly:w?!1:u,checkCreateATAOwner:l});A&&(y=A),p.addInstruction(h||{}),!b&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let x=n!=null?n:await this.getClmmPoolKeys(t.id),T=le.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:x,ownerPosition:i,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:y},liquidity:a,amountMaxA:o,amountMaxB:s,nft2022:(K=await this.scope.connection.getAccountInfo(i.nftMint))==null?void 0:K.owner.equals(Lt)});return p.addInstruction(T),p.addCustomComputeBudget(d),p.addTipInstruction(m),p.versionBuild({txVersion:f,extInfo:{address:T.address}})}async increasePositionFromBase(e){var T;let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txTipConfig:d,txVersion:m}=e,f=this.createTxBuilder(),p,b,y=a.useSOLBalance&&t.mintA.address===ee.toString(),g=a.useSOLBalance&&t.mintB.address===ee.toString(),{account:w,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new M(t.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:y||(i==="MintA"?o:s).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!y,associatedOnly:y?!1:c,checkCreateATAOwner:u});w&&(p=w),f.addInstruction(k||{});let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new M(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||(i==="MintA"?s:o).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:c,checkCreateATAOwner:u});P&&(b=P),f.addInstruction(A||{}),!p&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let h=await this.getClmmPoolKeys(t.id),x=le.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:h,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:b},base:i,baseAmount:o,otherAmountMax:s,nft2022:(T=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:T.owner.equals(Lt)});return f.addInstruction(x),f.addCustomComputeBudget(l),f.addTipInstruction(d),f.versionBuild({txVersion:m,extInfo:{address:x.address}})}async decreaseLiquidity(e){var L;let{poolInfo:t,poolKeys:n,ownerPosition:i,ownerInfo:o,amountMinA:s,amountMinB:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:d,txTipConfig:m,txVersion:f}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let p=this.createTxBuilder(),b=o.useSOLBalance&&t.mintA.address===ee.toString(),y=o.useSOLBalance&&t.mintB.address===ee.toString(),g,w,{account:k,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new M(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:l});g=k,P&&p.addInstruction(P);let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new M(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:l});w=A,h&&p.addInstruction(h);let x=[];for(let N of t.rewardDefaultInfos){let _=o.useSOLBalance&&N.mint.address===ee.toString(),U;if(N.mint.address===t.mintA.address)U=g;else if(N.mint.address===t.mintB.address)U=w;else{let{account:D,instructionParams:Te}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new M(N.mint.programId),mint:new M(N.mint.address),notUseTokenAccount:_,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!_,associatedOnly:_?!1:u,checkCreateATAOwner:l});U=D,Te&&p.addInstruction(Te)}x.push(U)}!g&&!w&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let T=n!=null?n:await this.getClmmPoolKeys(t.id),K=(L=await this.scope.connection.getAccountInfo(i.nftMint))==null?void 0:L.owner.equals(Lt),S=await le.decreaseLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:i,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:w,rewardAccounts:x},liquidity:c,amountMinA:s,amountMinB:a,nft2022:K});p.addInstruction({instructions:S.instructions,instructionTypes:[se.ClmmDecreasePosition]});let I=E({},S.address);if(o.closePosition){let N=await le.closePositionInstructions({poolInfo:t,poolKeys:T,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:i,nft2022:K});p.addInstruction({endInstructions:N.instructions,endInstructionTypes:N.instructionTypes}),I=E(E({},I),N.address)}return p.addCustomComputeBudget(d),p.addTipInstruction(m),p.versionBuild({txVersion:f,extInfo:{address:I}})}async lockPosition(e){var f;let{programId:t=qt,authProgramId:n=Pn,poolProgramId:i=Wt,ownerPosition:o,payer:s,computeBudgetConfig:a,txTipConfig:c,txVersion:u,getEphemeralSigners:l}=e,d=this.createTxBuilder(),m=await le.makeLockPositions({programId:t,authProgramId:n,poolProgramId:i,wallet:this.scope.ownerPubKey,payer:s!=null?s:this.scope.ownerPubKey,nftMint:o.nftMint,getEphemeralSigners:l,nft2022:(f=await this.scope.connection.getAccountInfo(o.nftMint))==null?void 0:f.owner.equals(Lt)});return d.addInstruction(m),d.addCustomComputeBudget(a),d.addTipInstruction(c),d.versionBuild({txVersion:u,extInfo:m.address})}async harvestLockPosition(e){let{programId:t=qt,authProgramId:n=Pn,clmmProgram:i=Wt,poolKeys:o,lockData:s,ownerInfo:a={useSOLBalance:!0},associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txTipConfig:d,txVersion:m}=e,f=o||await this.getClmmPoolKeys(s.poolId.toString()),p=this.createTxBuilder(),b=await this.scope.connection.getAccountInfo(s.positionId);b||this.logger.logWithError("position not found",s.positionId);let y=nn.decode(b.data),g=a.useSOLBalance&&f.mintA.address===ee.toString(),w=a.useSOLBalance&&f.mintB.address===ee.toString(),k,P,{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintA.programId,mint:new M(f.mintA.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!g,associatedOnly:g?!1:c,checkCreateATAOwner:u});k=A,h&&p.addInstruction(h);let{account:x,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintB.programId,mint:new M(f.mintB.address),notUseTokenAccount:w,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!w,associatedOnly:w?!1:c,checkCreateATAOwner:u});P=x,T&&p.addInstruction(T);let K={},S=[];for(let Oe of f.rewardInfos){let Ge=a.useSOLBalance&&Oe.mint.address===ee.toString(),Ee=K[Oe.mint.address];if(!Ee){let{account:Mn,instructionParams:gi}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new M(Oe.mint.programId),mint:new M(Oe.mint.address),notUseTokenAccount:Ge,owner:this.scope.ownerPubKey,skipCloseAccount:!Ge,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:Ge?!1:c});Ee=Mn,gi&&p.addInstruction(gi)}K[Oe.mint.address]=Ee,S.push(Ee)}let I=Jt(t,s.lockNftMint).publicKey,L=ae(this.scope.ownerPubKey,s.lockNftMint,on).publicKey,N=O.getTickArrayStartIndexByTick(y.tickLower,f.config.tickSpacing),_=O.getTickArrayStartIndexByTick(y.tickUpper,f.config.tickSpacing),{publicKey:U}=Q(new M(f.programId),s.poolId,N),{publicKey:D}=Q(new M(f.programId),s.poolId,_),{publicKey:Te}=je(new M(f.programId),s.poolId,y.tickLower,y.tickUpper),Ue=[];for(let Oe=0;Oe<f.rewardInfos.length;Oe++)Ue.push({poolRewardVault:new M(f.rewardInfos[Oe].vault),ownerRewardVault:S[Oe],rewardMint:new M(f.rewardInfos[Oe].mint.address)});let ut=await le.harvestLockPositionInstructionV2({programId:t,auth:n,lockPositionId:I,clmmProgram:i,lockOwner:this.scope.ownerPubKey,lockNftMint:s.lockNftMint,lockNftAccount:L,positionNftAccount:s.nftAccount,positionId:s.positionId,poolId:s.poolId,protocolPosition:Te,vaultA:new M(f.vault.A),vaultB:new M(f.vault.B),tickArrayLower:U,tickArrayUpper:D,userVaultA:k,userVaultB:P,mintA:new M(f.mintA.address),mintB:new M(f.mintB.address),rewardAccounts:Ue,exTickArrayBitmap:we(i,s.poolId).publicKey});return p.addInstruction({instructions:[ut],instructionTypes:[se.ClmmHarvestLockPosition]}),p.addCustomComputeBudget(l),p.addTipInstruction(d),p.versionBuild({txVersion:m})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:i,computeBudgetConfig:o,txTipConfig:s}){var l;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let a=this.createTxBuilder(),c=t!=null?t:await this.getClmmPoolKeys(e.id),u=le.closePositionInstructions({poolInfo:e,poolKeys:c,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n,nft2022:(l=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:l.owner.equals(Lt)});return a.addCustomComputeBudget(o),a.addTipInstruction(s),a.addInstruction(u).versionBuild({txVersion:i,extInfo:{address:u.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.address.toString()===ee.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:d,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new M(n.mint.address),mint:new M(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ve(new R(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:i,checkCreateATAOwner:o});m&&c.addInstruction(m),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),p=le.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new M(n.mint.programId),mint:new M(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:V.decimalToX64(n.perSecond)}});return c.addInstruction(p),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:p.address}})}async initRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txTipConfig:c,txVersion:u}){for(let m of i)m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let l=this.createTxBuilder(),d={};for(let m of i){let f=n.useSOLBalance&&m.mint.address===ee.toString(),p=m.perSecond.mul(m.endTime-m.openTime),{account:b,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new M(m.mint.programId),mint:new M(m.mint.address),notUseTokenAccount:!!f,skipCloseAccount:!f,owner:this.scope.ownerPubKey,createInfo:f?{payer:n.feePayer||this.scope.ownerPubKey,amount:new ve(new R(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:f?!1:o,checkCreateATAOwner:s});y&&l.addInstruction(y),b||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let g=t!=null?t:await this.getClmmPoolKeys(e.id),w=le.initRewardInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:b},rewardInfo:{programId:new M(m.mint.programId),mint:new M(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:V.decimalToX64(m.perSecond)}});d=E(E({},d),w.address),l.addInstruction(w)}return l.addCustomComputeBudget(a),l.addTipInstruction(c),l.versionBuild({txVersion:u,extInfo:{address:d}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txTipConfig:a,txVersion:c}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),l=t.useSOLBalance&&n.mint.equals(ee),{account:d,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:l,owner:this.scope.ownerPubKey,createInfo:l?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ve(new R(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:l?!1:i,checkCreateATAOwner:o});m&&u.addInstruction(m),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),p=le.setRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:V.decimalToX64(n.perSecond)}});return u.addInstruction(p),u.addCustomComputeBudget(s),u.addTipInstruction(a),u.versionBuild({txVersion:c,extInfo:{address:p.address}})}async setRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txTipConfig:c,txVersion:u}){let l=this.createTxBuilder(),d={};for(let m of i){m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let f=n.useSOLBalance&&m.mint.address===ee.toString(),{account:p,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new M(m.mint.programId),mint:new M(m.mint.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:n.feePayer||this.scope.ownerPubKey,amount:new ve(new R(m.perSecond.sub(m.endTime-m.openTime).toFixed(0)).gte(m.perSecond.sub(m.endTime-m.openTime))?m.perSecond.sub(m.endTime-m.openTime).toFixed(0):m.perSecond.sub(m.endTime-m.openTime).add(1).toFixed(0))}:void 0,associatedOnly:f?!1:o,checkCreateATAOwner:s});b&&l.addInstruction(b),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=t!=null?t:await this.getClmmPoolKeys(e.id),g=le.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new M(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:V.decimalToX64(m.perSecond)}});l.addInstruction(g),d=E(E({},d),g.address)}return l.addCustomComputeBudget(a),l.addTipInstruction(c),l.versionBuild({txVersion:u,extInfo:{address:d}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txTipConfig:a,txVersion:c}){let u=e.rewardDefaultInfos.find(y=>y.mint.address===n.toString());u||this.logAndCreateError("reward mint error","not found reward mint",n);let l=this.createTxBuilder(),d=t.useSOLBalance&&n.equals(ee),{account:m,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new M(u.mint.programId),mint:n,notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:i,checkCreateATAOwner:o});f&&l.addInstruction(f),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),b=le.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:n});return l.addInstruction(b),l.addCustomComputeBudget(s),l.addTipInstruction(a),l.versionBuild({txVersion:c,extInfo:{address:b.address}})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txTipConfig:a}){let c=this.createTxBuilder(),u={};for(let l of n){let d=e.rewardDefaultInfos.find(g=>g.mint.address===l.toString());if(!d){this.logAndCreateError("reward mint error","not found reward mint",l);continue}let m=t.useSOLBalance&&l.equals(ee),{account:f,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new M(d.mint.programId),mint:l,notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!m,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:m?!1:i,checkCreateATAOwner:o});f||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),p&&c.addInstruction(p);let b=await this.getClmmPoolKeys(e.id),y=le.collectRewardInstructions({poolInfo:e,poolKeys:b,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:f},rewardMint:l});c.addInstruction(y),u=E(E({},u),y.address)}return c.addCustomComputeBudget(s),c.addTipInstruction(a),c.build({address:u})}async swap({poolInfo:e,poolKeys:t,inputMint:n,amountIn:i,amountOutMin:o,priceLimit:s,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:l=!0,checkCreateATAOwner:d=!1,txVersion:m,computeBudgetConfig:f,txTipConfig:p}){let b=this.createTxBuilder(),y=n.toString()===e.mintA.address,g=c.useSOLBalance&&e.mintA.address===ee.toBase58(),w=c.useSOLBalance&&e.mintB.address===ee.toBase58(),k;!s||s.equals(new R(0))?k=y?$e.add(new ve(1)):et.sub(new ve(1)):k=q.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let P;if(!P){let{account:x,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new M(e.mintA.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,skipCloseAccount:!g,createInfo:g||!y?{payer:c.feePayer||this.scope.ownerPubKey,amount:y?i:0}:void 0,associatedOnly:g?!1:l,checkCreateATAOwner:d});P=x,T&&b.addInstruction(T)}let A;if(!A){let{account:x,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new M(e.mintB.address),notUseTokenAccount:w,owner:this.scope.ownerPubKey,skipCloseAccount:!w,createInfo:w||y?{payer:c.feePayer||this.scope.ownerPubKey,amount:y?0:i}:void 0,associatedOnly:w?!1:l,checkCreateATAOwner:d});A=x,T&&b.addInstruction(T)}(!P||!A)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.symbol||e.mintA.address,tokenB:e.mintB.symbol||e.mintB.address,ownerTokenAccountA:P,ownerTokenAccountB:A,mintAUseSOLBalance:g,mintBUseSOLBalance:w,associatedOnly:l});let h=t!=null?t:await this.getClmmPoolKeys(e.id);return b.addInstruction(le.makeSwapBaseInInstructions({poolInfo:e,poolKeys:h,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:P,tokenAccountB:A},inputMint:new M(n),amountIn:i,amountOutMin:o,sqrtPriceLimitX64:k,remainingAccounts:u})),b.addCustomComputeBudget(f),b.addTipInstruction(p),b.versionBuild({txVersion:m})}async swapBaseOut({poolInfo:e,poolKeys:t,outputMint:n,amountOut:i,amountInMax:o,priceLimit:s,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:l=!0,checkCreateATAOwner:d=!1,txVersion:m,computeBudgetConfig:f,txTipConfig:p}){let b=this.createTxBuilder(),y=n.toString()===e.mintB.address,g=c.useSOLBalance&&e.mintA.address===ee.toBase58(),w=c.useSOLBalance&&e.mintB.address===ee.toBase58(),k;!s||s.equals(new R(0))?k=n.toString()===e.mintB.address?$e.add(new ve(1)):et.sub(new ve(1)):k=q.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let P;if(!P){let{account:x,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new M(e.mintA.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,skipCloseAccount:!g,createInfo:g||!y?{payer:c.feePayer||this.scope.ownerPubKey,amount:y?o:0}:void 0,associatedOnly:g?!1:l,checkCreateATAOwner:d});P=x,T&&b.addInstruction(T)}let A;if(!A){let{account:x,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new M(e.mintB.address),notUseTokenAccount:w,owner:this.scope.ownerPubKey,skipCloseAccount:!w,createInfo:w||y?{payer:c.feePayer||this.scope.ownerPubKey,amount:y?0:o}:void 0,associatedOnly:w?!1:l,checkCreateATAOwner:d});A=x,T&&b.addInstruction(T)}(!P||!A)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.symbol||e.mintA.address,tokenB:e.mintB.symbol||e.mintB.address,ownerTokenAccountA:P,ownerTokenAccountB:A,mintAUseSOLBalance:g,mintBUseSOLBalance:w,associatedOnly:l});let h=t!=null?t:await this.getClmmPoolKeys(e.id);return b.addInstruction(le.makeSwapBaseOutInstructions({poolInfo:e,poolKeys:h,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:P,tokenAccountB:A},outputMint:new M(n),amountOut:i,amountInMax:o,sqrtPriceLimitX64:k,remainingAccounts:u})),b.addCustomComputeBudget(f),b.addTipInstruction(p),b.versionBuild({txVersion:m})}async harvestAllRewards({allPoolInfo:e,allPositions:t,lockInfo:n,ownerInfo:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,programId:a,txVersion:c,computeBudgetConfig:u}){var b,y;let l={};for(let g of this.scope.account.tokenAccountRawInfos)o?ae(this.scope.ownerPubKey,g.accountInfo.mint,a).publicKey.equals(g.pubkey)&&(l[g.accountInfo.mint.toString()]=g.pubkey):l[g.accountInfo.mint.toString()]=g.pubkey;let d=Object.values(t).flat().map(g=>g.nftMint),m=await rt(this.scope.connection,d.map(g=>({pubkey:g}))),f={};m.forEach(g=>{var w,k;f[g.pubkey.toBase58()]=(k=(w=g==null?void 0:g.accountInfo)==null?void 0:w.owner)!=null?k:null});let p=this.createTxBuilder();for(let g of Object.values(e)){if(t[g.id]===void 0||!t[g.id].find(S=>!S.liquidity.isZero()||S.rewardInfos.find(I=>!I.rewardAmountOwed.isZero())))continue;let w=g,k=i.useSOLBalance&&w.mintA.address===ee.toString(),P=i.useSOLBalance&&w.mintB.address===ee.toString(),A=l[w.mintA.address];if(!A){let{account:S,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:w.mintA.programId,mint:new M(w.mintA.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:i.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:k?!1:o,checkCreateATAOwner:s});A=S,I&&p.addInstruction(I)}let h=l[w.mintB.address];if(!h){let{account:S,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:w.mintB.programId,mint:new M(w.mintB.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:{payer:i.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:P?!1:o,checkCreateATAOwner:s});h=S,I&&p.addInstruction(I)}l[w.mintA.address]=A,l[w.mintB.address]=h;let x=[];for(let S of w.rewardDefaultInfos){let I=i.useSOLBalance&&S.mint.address===ee.toString(),L=l[S.mint.address];if(!L){let{account:N,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new M(S.mint.programId),mint:new M(S.mint.address),notUseTokenAccount:I,owner:this.scope.ownerPubKey,skipCloseAccount:!I,createInfo:{payer:i.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:I?!1:o});L=N,_&&p.addInstruction(_)}l[S.mint.address]=L,x.push(L)}let T=await this.getClmmPoolKeys(w.id),K=[];for(let S=0;S<T.rewardInfos.length;S++)K.push({poolRewardVault:new M(T.rewardInfos[S].vault),ownerRewardVault:x[S],rewardMint:new M(T.rewardInfos[S].mint.address)});for(let S of t[g.id]){let I=(b=n==null?void 0:n[g.id])==null?void 0:b[S.nftMint.toBase58()];if(I){let L=ae(this.scope.ownerPubKey,I.lockNftMint,on).publicKey,N=O.getTickArrayStartIndexByTick(S.tickLower,T.config.tickSpacing),_=O.getTickArrayStartIndexByTick(S.tickUpper,T.config.tickSpacing),{publicKey:U}=Q(new M(T.programId),I.poolId,N),{publicKey:D}=Q(new M(T.programId),I.poolId,_),{publicKey:Te}=je(new M(T.programId),I.poolId,S.tickLower,S.tickUpper),Ue=Jt(qt,I.lockNftMint).publicKey,ut=le.harvestLockPositionInstructionV2({programId:qt,auth:Pn,lockPositionId:Ue,clmmProgram:Wt,lockOwner:this.scope.ownerPubKey,lockNftMint:I.lockNftMint,lockNftAccount:L,positionNftAccount:I.nftAccount,positionId:I.positionId,poolId:I.poolId,protocolPosition:Te,vaultA:new M(T.vault.A),vaultB:new M(T.vault.B),tickArrayLower:U,tickArrayUpper:D,userVaultA:A,userVaultB:h,mintA:new M(T.mintA.address),mintB:new M(T.mintB.address),rewardAccounts:K,exTickArrayBitmap:we(Wt,I.poolId).publicKey});p.addInstruction({instructions:[ut],instructionTypes:[se.ClmmHarvestLockPosition],lookupTableAddress:T.lookupTableAccount?[T.lookupTableAccount]:[]})}else{let L=le.decreaseLiquidityInstructions({poolInfo:w,poolKeys:T,ownerPosition:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:A,tokenAccountB:h,rewardAccounts:x},liquidity:new ve(0),amountMinA:new ve(0),amountMinB:new ve(0),nft2022:(y=f[S.nftMint.toBase58()])==null?void 0:y.equals(Lt)});p.addInstruction(L)}}}return c===0?p.sizeCheckBuildV0({computeBudgetConfig:u}):p.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Qt(e).publicKey);return t?Ar.decode(t.data).whitelistMints.filter(i=>!i.equals(M.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new ve(1))).map(s=>Me(new M(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=nn.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await rt(this.scope.connection,e.map(o=>({pubkey:new M(o)})),t),i={};for(let o=0;o<e.length;o++){let s=n[o];if(s===null||!s.accountInfo)throw Error("fetch pool info error: "+String(e[o]));let a=Ln.decode(s.accountInfo.data),c=q.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();i[String(e[o])]=j(E({},a),{currentPrice:c,programId:s.accountInfo.owner})}return i}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(c=>e[c].ammConfig.toBase58())),i=await rt(this.scope.connection,Array.from(n).map(c=>({pubkey:new M(c)}))),o={};i.forEach(c=>{!c.accountInfo||(o[c.pubkey.toBase58()]=kr.decode(c.accountInfo.data))});let s=await pe.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(c=>{var d,m,f,p;let[u,l]=[e[c].mintA.toBase58(),e[c].mintB.toBase58()];return{id:c,programId:e[c].programId.toBase58(),mintA:In({address:u,decimals:e[c].mintDecimalsA,programId:t[u].programId.toBase58()||on.toBase58(),extensions:{feeConfig:(d=t[u])!=null&&d.feeConfig?ni((m=t[u])==null?void 0:m.feeConfig):void 0}}),mintB:In({address:l,decimals:e[c].mintDecimalsB,programId:t[l].programId.toBase58()||on.toBase58(),extensions:{feeConfig:(f=t[l])!=null&&f.feeConfig?ni((p=t[l])==null?void 0:p.feeConfig):void 0}}),price:e[c].currentPrice,config:j(E({},o[e[c].ammConfig.toBase58()]),{id:e[c].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await pe.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(s)});return{computeClmmPoolInfo:s,computePoolTickData:a}}async getPoolInfoFromRpc(e){var l;let t=await this.getRpcClmmPoolInfo({poolId:e}),n=new Set([t.mintA.toBase58(),t.mintB.toBase58()]),i=await vi({connection:this.scope.connection,mints:Array.from(n).map(d=>new M(d))}),{computeClmmPoolInfo:o,computePoolTickData:s}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:i}),a=await rt(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),c=wr(o[e]);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");c.mintAmountA=Number(Ir.decode(a[0].accountInfo.data).amount.toString()),c.mintAmountB=Number(Ir.decode((l=a[1].accountInfo)==null?void 0:l.data).amount.toString());let u=j(E({},o[e]),{exBitmapAccount:o[e].exBitmapAccount.toBase58(),observationId:o[e].observationId.toBase58(),id:e,programId:t.programId.toBase58(),openTime:t.startTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},config:c.config,rewardInfos:o[e].rewardInfos.filter(d=>!d.tokenVault.equals(M.default)).map(d=>({mint:In({address:d.tokenMint.toBase58(),programId:on.toBase58(),decimals:10}),vault:d.tokenVault.toBase58()}))});return{poolInfo:c,poolKeys:u,computePoolInfo:o[e],tickData:s}}};export{Sr as Clmm};
//# sourceMappingURL=clmm.mjs.map