@raydium-io/raydium-sdk-v2 0.0.36-alpha → 0.0.37-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/raydium/account/account.d.ts +1 -1
- package/lib/raydium/clmm/clmm.d.ts +1 -1
- package/lib/raydium/clmm/clmm.js +1 -1
- package/lib/raydium/clmm/clmm.js.map +1 -1
- package/lib/raydium/clmm/clmm.mjs +1 -1
- package/lib/raydium/clmm/clmm.mjs.map +1 -1
- package/lib/raydium/clmm/index.d.ts +1 -1
- package/lib/raydium/clmm/index.js +1 -1
- package/lib/raydium/clmm/index.js.map +1 -1
- package/lib/raydium/clmm/index.mjs +1 -1
- package/lib/raydium/clmm/index.mjs.map +1 -1
- package/lib/raydium/cpmm/cpmm.d.ts +1 -1
- package/lib/raydium/farm/farm.d.ts +1 -1
- package/lib/raydium/ido/ido.d.ts +1 -1
- package/lib/raydium/ido/index.d.ts +1 -1
- package/lib/raydium/index.d.ts +1 -1
- package/lib/raydium/index.js +1 -1
- package/lib/raydium/index.js.map +1 -1
- package/lib/raydium/index.mjs +1 -1
- package/lib/raydium/index.mjs.map +1 -1
- package/lib/raydium/liquidity/liquidity.d.ts +1 -1
- package/lib/raydium/marketV2/createMarket.d.ts +1 -1
- package/lib/raydium/marketV2/index.d.ts +1 -1
- package/lib/raydium/moduleBase.d.ts +1 -1
- package/lib/raydium/raydium.d.ts +1 -1
- package/lib/raydium/raydium.js +1 -1
- package/lib/raydium/raydium.js.map +1 -1
- package/lib/raydium/raydium.mjs +1 -1
- package/lib/raydium/raydium.mjs.map +1 -1
- package/lib/raydium/token/token.d.ts +1 -1
- package/lib/raydium/tradeV2/index.js +1 -1
- package/lib/raydium/tradeV2/index.js.map +1 -1
- package/lib/raydium/tradeV2/index.mjs +1 -1
- package/lib/raydium/tradeV2/index.mjs.map +1 -1
- package/lib/raydium/tradeV2/instrument.js +1 -1
- package/lib/raydium/tradeV2/instrument.js.map +1 -1
- package/lib/raydium/tradeV2/instrument.mjs +1 -1
- package/lib/raydium/tradeV2/instrument.mjs.map +1 -1
- package/lib/raydium/tradeV2/trade.d.ts +1 -1
- package/lib/raydium/utils1216/index.d.ts +1 -1
- package/lib/raydium/utils1216/utils1216.d.ts +1 -1
- package/lib/{raydium-5d4faf36.d.ts → raydium-3aa078dd.d.ts} +6 -1
- package/package.json +1 -1
- package/src/raydium/clmm/clmm.ts +19 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var gi=Object.defineProperty,bi=Object.defineProperties;var yi=Object.getOwnPropertyDescriptors;var Ut=Object.getOwnPropertySymbols;var or=Object.prototype.hasOwnProperty,sr=Object.prototype.propertyIsEnumerable;var ir=(r,e,t)=>e in r?gi(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,_=(r,e)=>{for(var t in e||(e={}))or.call(e,t)&&ir(r,t,e[t]);if(Ut)for(var t of Ut(e))sr.call(e,t)&&ir(r,t,e[t]);return r},Z=(r,e)=>bi(r,yi(e));var Xt=(r,e)=>{var t={};for(var n in r)or.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Ut)for(var n of Ut(r))e.indexOf(n)<0&&sr.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as G}from"@solana/web3.js";var yt=9e15,tt=1e9,wn="0123456789abcdef",zt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Yt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",hn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-yt,maxE:yt,crypto:!1},lr,ze,v=!0,Zt="[DecimalError] ",et=Zt+"Invalid argument: ",mr=Zt+"Precision limit exceeded",dr=Zt+"crypto unavailable",pr="[object Decimal]",Pe=Math.floor,le=Math.pow,wi=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,hi=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ai=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,fr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Me=1e7,R=7,Pi=9007199254740991,Ti=zt.length-1,An=Yt.length-1,T={toStringTag:pr};T.absoluteValue=T.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),K(r)};T.ceil=function(){return K(new this.constructor(this),this.e+1,2)};T.clampedTo=T.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(et+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};T.comparedTo=T.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};T.cosine=T.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())+R,n.rounding=1,t=ki(n,hr(n,t)),n.precision=r,n.rounding=e,K(ze==2||ze==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};T.cubeRoot=T.cbrt=function(){var r,e,t,n,i,o,s,a,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(v=!1,o=l.s*le(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=ge(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=le(t,1/3),r=Pe((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 m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=Q(u.plus(l).times(a),u.plus(c),s+2,1),ge(a.d).slice(0,s)===(t=ge(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(K(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")&&(K(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return v=!0,K(n,r,m.rounding,e)};T.decimalPlaces=T.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Pe(this.e/R))*R,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};T.dividedBy=T.div=function(r){return Q(this,new this.constructor(r))};T.dividedToIntegerBy=T.divToInt=function(r){var e=this,t=e.constructor;return K(Q(e,new t(r),0,1,1),t.precision,t.rounding)};T.equals=T.eq=function(r){return this.cmp(r)===0};T.floor=function(){return K(new this.constructor(this),this.e+1,3)};T.greaterThan=T.gt=function(r){return this.cmp(r)>0};T.greaterThanOrEqualTo=T.gte=function(r){var e=this.cmp(r);return e==1||e===0};T.hyperbolicCosine=T.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/$t(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=wt(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 K(o,s.precision=t,s.rounding=n,!0)};T.hyperbolicSine=T.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=wt(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/$t(5,r)),i=wt(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,K(i,e,t,!0)};T.hyperbolicTangent=T.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,Q(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};T.inverseCosine=T.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()?Fe(t,i,o):new t(0):new t(NaN):e.isZero()?Fe(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Fe(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};T.inverseHyperbolicCosine=T.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,v=!1,t=t.times(t).minus(1).sqrt().plus(t),v=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};T.inverseHyperbolicSine=T.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,v=!1,t=t.times(t).plus(1).sqrt().plus(t),v=!0,n.precision=r,n.rounding=e,t.ln())};T.inverseHyperbolicTangent=T.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?K(new o(i),r,e,!0):(o.precision=t=n-i.e,i=Q(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)};T.inverseSine=T.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=Fe(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)))};T.inverseTangent=T.atan=function(){var r,e,t,n,i,o,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&m+4<=An)return s=Fe(l,m+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=An)return s=Fe(l,m+4,d).times(.5),s.s=u.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/R+2|0),r=t;r;--r)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(v=!1,e=Math.ceil(a/R),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)),v=!0,K(s,l.precision=m,l.rounding=d,!0)};T.isFinite=function(){return!!this.d};T.isInteger=T.isInt=function(){return!!this.d&&Pe(this.e/R)>this.d.length-2};T.isNaN=function(){return!this.s};T.isNegative=T.isNeg=function(){return this.s<0};T.isPositive=T.isPos=function(){return this.s>0};T.isZero=function(){return!!this.d&&this.d[0]===0};T.lessThan=T.lt=function(r){return this.cmp(r)<0};T.lessThanOrEqualTo=T.lte=function(r){return this.cmp(r)<1};T.logarithm=T.log=function(r){var e,t,n,i,o,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding,p=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(v=!1,a=m+p,s=Je(u,a),n=e?jt(l,a+10):Je(r,a),c=Q(s,n,a,1),kt(c.d,i=m,d))do if(a+=10,s=Je(u,a),n=e?jt(l,a+10):Je(r,a),c=Q(s,n,a,1),!o){+ge(c.d).slice(i+1,i+15)+1==1e14&&(c=K(c,m+1,0));break}while(kt(c.d,i+=10,d));return v=!0,K(c,m,d)};T.minus=T.sub=function(r){var e,t,n,i,o,s,a,c,u,l,m,d,p=this,g=p.constructor;if(r=new g(r),!p.d||!r.d)return!p.s||!r.s?r=new g(NaN):p.d?r.s=-r.s:r=new g(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(u=p.d,d=r.d,a=g.precision,c=g.rounding,!u[0]||!d[0]){if(d[0])r.s=-r.s;else if(u[0])r=new g(p);else return new g(c===3?-0:0);return v?K(r,a,c):r}if(t=Pe(r.e/R),l=Pe(p.e/R),u=u.slice(),o=l-t,o){for(m=o<0,m?(e=u,o=-o,s=d.length):(e=d,t=l,s=u.length),n=Math.max(Math.ceil(a/R),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=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(u[n]!=d[n]){m=u[n]<d[n];break}o=0}for(m&&(e=u,u=d,d=e,r.s=-r.s),s=u.length,n=d.length-s;n>0;--n)u[s++]=0;for(n=d.length;n>o;){if(u[--n]<d[n]){for(i=n;i&&u[--i]===0;)u[i]=Me-1;--u[i],u[n]+=Me}u[n]-=d[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(r.d=u,r.e=Qt(u,t),v?K(r,a,c):r):new g(c===3?-0:0)};T.modulo=T.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]?K(new n(t),n.precision,n.rounding):(v=!1,n.modulo==9?(e=Q(t,r.abs(),0,3,1),e.s*=r.s):e=Q(t,r,0,n.modulo,1),e=e.times(r),v=!0,t.minus(e))};T.naturalExponential=T.exp=function(){return Pn(this)};T.naturalLogarithm=T.ln=function(){return Je(this)};T.negated=T.neg=function(){var r=new this.constructor(this);return r.s=-r.s,K(r)};T.plus=T.add=function(r){var e,t,n,i,o,s,a,c,u,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(u=m.d,l=r.d,a=d.precision,c=d.rounding,!u[0]||!l[0])return l[0]||(r=new d(m)),v?K(r,a,c):r;if(o=Pe(m.e/R),n=Pe(r.e/R),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/R),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)/Me|0,u[i]%=Me;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return r.d=u,r.e=Qt(u,n),v?K(r,a,c):r};T.precision=T.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(et+r);return t.d?(e=gr(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};T.round=function(){var r=this,e=r.constructor;return K(new e(r),r.e+1,e.rounding)};T.sine=T.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())+R,n.rounding=1,t=Bi(n,hr(n,t)),n.precision=r,n.rounding=e,K(ze>2?t.neg():t,r,e,!0)):new n(NaN)};T.squareRoot=T.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(v=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=ge(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=Pe((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(Q(s,o,t+2,1)).times(.5),ge(o.d).slice(0,t)===(e=ge(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(K(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")&&(K(n,c+1,1),r=!n.times(n).eq(s));break}return v=!0,K(n,c,l.rounding,r)};T.tangent=T.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=Q(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,K(ze==2||ze==4?t.neg():t,r,e,!0)):new n(NaN)};T.times=T.mul=function(r){var e,t,n,i,o,s,a,c,u,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Pe(l.e/R)+Pe(r.e/R),c=d.length,u=p.length,c<u&&(o=d,d=p,p=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]+p[n]*d[i-n-1]+e,o[i--]=a%Me|0,e=a/Me|0;o[i]=(o[i]+e)%Me|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Qt(o,t),v?K(r,m.precision,m.rounding):r};T.toBinary=function(r,e){return kn(this,2,r,e)};T.toDecimalPlaces=T.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Ie(r,0,tt),e===void 0?e=n.rounding:Ie(e,0,8),K(t,r+t.e+1,e))};T.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=qe(n,!0):(Ie(r,0,tt),e===void 0?e=i.rounding:Ie(e,0,8),n=K(new i(n),r+1,e),t=qe(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};T.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=qe(i):(Ie(r,0,tt),e===void 0?e=o.rounding:Ie(e,0,8),n=K(new o(i),r+i.e+1,e),t=qe(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};T.toFraction=function(r){var e,t,n,i,o,s,a,c,u,l,m,d,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),o=e.e=gr(g)-p.e-1,s=o%R,e.d[0]=le(10,s<0?R+s:s),r==null)r=o>0?e:u;else{if(a=new f(r),!a.isInt()||a.lt(u))throw Error(et+a);r=a.gt(e)?o>0?e:u:a}for(v=!1,a=new f(ge(g)),l=f.precision,f.precision=o=g.length*R*2;m=Q(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=u,u=c.plus(m.times(i)),c=i,i=e,e=a.minus(m.times(i)),a=i;return i=Q(r.minus(t),n,0,1,1),c=c.plus(i.times(u)),t=t.plus(i.times(n)),c.s=u.s=p.s,d=Q(u,n,o,1).minus(p).abs().cmp(Q(c,t,o,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=l,v=!0,d};T.toHexadecimal=T.toHex=function(r,e){return kn(this,16,r,e)};T.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:Ie(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]?(v=!1,t=Q(t,r,0,e,1).times(r),v=!0,K(t)):(r.s=t.s,t=r),t};T.toNumber=function(){return+this};T.toOctal=function(r,e){return kn(this,8,r,e)};T.toPower=T.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(le(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,r.eq(1))return K(a,n,o);if(e=Pe(r.e/R),e>=r.d.length-1&&(t=u<0?-u:u)<=Pi)return i=br(c,a,t,n),r.s<0?new c(1).div(i):K(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=le(+a,u),e=t==0||!isFinite(t)?Pe(u*(Math.log("0."+ge(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):(v=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Pn(r.times(Je(a,n+t)),n),i.d&&(i=K(i,n+5,1),kt(i.d,n,o)&&(e=n+10,i=K(Pn(r.times(Je(a,e+t)),e),e+5,1),+ge(i.d).slice(n+1,n+15)+1==1e14&&(i=K(i,n+1,0)))),i.s=s,v=!0,c.rounding=o,K(i,n,o))};T.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=qe(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ie(r,1,tt),e===void 0?e=i.rounding:Ie(e,0,8),n=K(new i(n),r,e),t=qe(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};T.toSignificantDigits=T.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Ie(r,1,tt),e===void 0?e=n.rounding:Ie(e,0,8)),K(new n(t),r,e)};T.toString=function(){var r=this,e=r.constructor,t=qe(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};T.truncated=T.trunc=function(){return K(new this.constructor(this),this.e+1,1)};T.valueOf=T.toJSON=function(){var r=this,e=r.constructor,t=qe(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function ge(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=R-n.length,t&&(o+=$e(t)),o+=n;s=r[e],n=s+"",t=R-n.length,t&&(o+=$e(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ie(r,e,t){if(r!==~~r||r<e||r>t)throw Error(et+r)}function kt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=R,i=0):(i=Math.ceil((e+1)/R),e%=R),o=le(10,R-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)==le(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)==le(10,e-3)-1,s}function Ht(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]+=wn.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 ki(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/$t(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=wt(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 Q=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,m,d,p,g,f,b,y,h,w,P,A,k,x,I,N,O,V,he,ne=n.constructor,Ae=n.s==i.s?1:-1,re=n.d,Y=i.d;if(!re||!re[0]||!Y||!Y[0])return new ne(!n.s||!i.s||(re?Y&&re[0]==Y[0]:!Y)?NaN:re&&re[0]==0||!Y?Ae*0:Ae/0);for(c?(p=1,l=n.e-i.e):(c=Me,p=R,l=Pe(n.e/p)-Pe(i.e/p)),V=Y.length,N=re.length,y=new ne(Ae),h=y.d=[],m=0;Y[m]==(re[m]||0);m++);if(Y[m]>(re[m]||0)&&l--,o==null?(k=o=ne.precision,s=ne.rounding):a?k=o+(n.e-i.e)+1:k=o,k<0)h.push(1),g=!0;else{if(k=k/p+2|0,m=0,V==1){for(d=0,Y=Y[0],k++;(m<N||d)&&k--;m++)x=d*c+(re[m]||0),h[m]=x/Y|0,d=x%Y|0;g=d||m<N}else{for(d=c/(Y[0]+1)|0,d>1&&(Y=r(Y,d,c),re=r(re,d,c),V=Y.length,N=re.length),I=V,w=re.slice(0,V),P=w.length;P<V;)w[P++]=0;he=Y.slice(),he.unshift(0),O=Y[0],Y[1]>=c/2&&++O;do d=0,u=e(Y,w,V,P),u<0?(A=w[0],V!=P&&(A=A*c+(w[1]||0)),d=A/O|0,d>1?(d>=c&&(d=c-1),f=r(Y,d,c),b=f.length,P=w.length,u=e(f,w,b,P),u==1&&(d--,t(f,V<b?he:Y,b,c))):(d==0&&(u=d=1),f=Y.slice()),b=f.length,b<P&&f.unshift(0),t(w,f,P,c),u==-1&&(P=w.length,u=e(Y,w,V,P),u<1&&(d++,t(w,V<P?he:Y,P,c))),P=w.length):u===0&&(d++,w=[0]),h[m++]=d,u&&w[0]?w[P++]=re[I]||0:(w=[re[I]],P=1);while((I++<N||w[0]!==void 0)&&k--);g=w[0]!==void 0}h[0]||h.shift()}if(p==1)y.e=l,lr=g;else{for(m=1,d=h[0];d>=10;d/=10)m++;y.e=m+l*p-1,K(y,a?o+y.e+1:o,s,g)}return y}}();function K(r,e,t,n){var i,o,s,a,c,u,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=R,s=e,l=m[d=0],c=l/le(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/R),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=c=0,i=1,o%=R,s=o-R+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=R,s=o-R+i,c=s<0?0:l/le(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%le(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/le(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,u?(e-=r.e+1,m[0]=le(10,(R-e%R)%R),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=le(10,R-o),m[d]=s>0?(l/le(10,i-s)%le(10,s)|0)*a:0),u)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==Me&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=Me)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return v&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function qe(r,e,t){if(!r.isFinite())return wr(r);var n,i=r.e,o=ge(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+$e(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+$e(-i-1)+o,t&&(n=t-s)>0&&(o+=$e(n))):i>=s?(o+=$e(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+$e(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=$e(n))),o}function Qt(r,e){var t=r[0];for(e*=R;t>=10;t/=10)e++;return e}function jt(r,e,t){if(e>Ti)throw v=!0,t&&(r.precision=t),Error(mr);return K(new r(zt),e,1,!0)}function Fe(r,e,t){if(e>An)throw Error(mr);return K(new r(Yt),e,t,!0)}function gr(r){var e=r.length-1,t=e*R+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 $e(r){for(var e="";r--;)e+="0";return e}function br(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/R+4);for(v=!1;;){if(t%2&&(o=o.times(e),cr(o.d,s)&&(i=!0)),t=Pe(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),cr(e.d,s)}return v=!0,o}function ar(r){return r.d[r.d.length-1]&1}function yr(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 Pn(r,e){var t,n,i,o,s,a,c,u=0,l=0,m=0,d=r.constructor,p=d.rounding,g=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(v=!1,c=g):c=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(le(2,m))/Math.LN10*2+5|0,c+=n,t=o=s=new d(1),d.precision=c;;){if(o=K(o.times(r),c,1),t=t.times(++l),a=s.plus(Q(o,t,c,1)),ge(a.d).slice(0,c)===ge(s.d).slice(0,c)){for(i=m;i--;)s=K(s.times(s),c,1);if(e==null)if(u<3&&kt(s.d,c-n,p,u))d.precision=c+=10,t=o=a=new d(1),l=0,u++;else return K(s,d.precision=g,p,v=!0);else return d.precision=g,s}s=a}}function Je(r,e){var t,n,i,o,s,a,c,u,l,m,d,p=1,g=10,f=r,b=f.d,y=f.constructor,h=y.rounding,w=y.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new y(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(v=!1,l=w):l=e,y.precision=l+=g,t=ge(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=ge(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new y("0."+t),o++):f=new y(n+"."+t.slice(1))}else return u=jt(y,l+2,w).times(o+""),f=Je(new y(n+"."+t.slice(1)),l-g).plus(u),y.precision=w,e==null?K(f,w,h,v=!0):f;for(m=f,c=s=f=Q(f.minus(1),f.plus(1),l,1),d=K(f.times(f),l,1),i=3;;){if(s=K(s.times(d),l,1),u=c.plus(Q(s,new y(i),l,1)),ge(u.d).slice(0,l)===ge(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(jt(y,l+2,w).times(o+""))),c=Q(c,new y(p),l,1),e==null)if(kt(c.d,l-g,h,a))y.precision=l+=g,u=s=f=Q(m.minus(1),m.plus(1),l,1),d=K(f.times(f),l,1),i=a=1;else return K(c,y.precision=w,h,v=!0);else return y.precision=w,c;c=u,i+=2}}function wr(r){return String(r.s*r.s/0)}function Tn(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)%R,t<0&&(n+=R),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=R;n<i;)r.d.push(+e.slice(n,n+=R));e=e.slice(n),n=R-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),v&&(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 xi(r,e){var t,n,i,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),fr.test(e))return Tn(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(hi.test(e))t=16,e=e.toLowerCase();else if(wi.test(e))t=2;else if(Ai.test(e))t=8;else throw Error(et+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=br(n,new n(t),o,o*2)),u=Ht(e,t,Me),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(r.s*0):(r.e=Qt(u,l),r.d=u,v=!1,s&&(r=Q(r,i,a*4)),c&&(r=r.times(Math.abs(c)<54?le(2,c):xt.pow(2,c))),v=!0,r)}function Bi(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:wt(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/$t(5,t)),e=wt(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 wt(r,e,t,n,i){var o,s,a,c,u=1,l=r.precision,m=Math.ceil(l/R);for(v=!1,c=t.times(t),a=new r(n);;){if(s=Q(a.times(c),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=Q(s.times(c),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return v=!0,s.d.length=m+1,s}function $t(r,e){for(var t=r;--e;)t*=r;return t}function hr(r,e){var t,n=e.s<0,i=Fe(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return ze=n?4:1,e;if(t=e.divToInt(i),t.isZero())ze=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return ze=ar(t)?n?2:3:n?4:1,e;ze=ar(t)?n?1:4:n?3:2}return e.minus(i).abs()}function kn(r,e,t,n){var i,o,s,a,c,u,l,m,d,p=r.constructor,g=t!==void 0;if(g?(Ie(t,1,tt),n===void 0?n=p.rounding:Ie(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=wr(r);else{for(l=qe(r),s=l.indexOf("."),g?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=Ht(qe(d),10,i),d.e=d.d.length),m=Ht(l,10,i),o=c=m.length;m[--c]==0;)m.pop();if(!m[0])l=g?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=Q(r,d,t,n,0,i),m=r.d,o=r.e,u=lr),s=m[t],a=i/2,u=u||m[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&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,u)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=wn.charAt(m[s]);if(g){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=Ht(l,i,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=wn.charAt(m[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 cr(r,e){if(r.length>e)return r.length=e,!0}function Ii(r){return new this(r).abs()}function Si(r){return new this(r).acos()}function Ci(r){return new this(r).acosh()}function Ki(r,e){return new this(r).plus(e)}function Ni(r){return new this(r).asin()}function Ri(r){return new this(r).asinh()}function Li(r){return new this(r).atan()}function Fi(r){return new this(r).atanh()}function Mi(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=Fe(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Fe(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Fe(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(Q(r,e,o,1)),e=Fe(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(Q(r,e,o,1)),t}function Oi(r){return new this(r).cbrt()}function Ei(r){return K(r=new this(r),r.e+1,2)}function Di(r,e,t){return new this(r).clamp(e,t)}function vi(r){if(!r||typeof r!="object")throw Error(Zt+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,tt,"rounding",0,8,"toExpNeg",-yt,0,"toExpPos",0,yt,"maxE",0,yt,"minE",-yt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=hn[t]),(n=r[t])!==void 0)if(Pe(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(et+t+": "+n);if(t="crypto",i&&(this[t]=hn[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(dr);else this[t]=!1;else throw Error(et+t+": "+n);return this}function _i(r){return new this(r).cos()}function Vi(r){return new this(r).cosh()}function Ar(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,ur(o)){u.s=o.s,v?!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++;v?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 Tn(u,o.toString())}else if(c!=="string")throw Error(et+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),fr.test(o)?Tn(u,o):xi(u,o)}if(i.prototype=T,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=vi,i.clone=Ar,i.isDecimal=ur,i.abs=Ii,i.acos=Si,i.acosh=Ci,i.add=Ki,i.asin=Ni,i.asinh=Ri,i.atan=Li,i.atanh=Fi,i.atan2=Mi,i.cbrt=Oi,i.ceil=Ei,i.clamp=Di,i.cos=_i,i.cosh=Vi,i.div=qi,i.exp=Wi,i.floor=Gi,i.hypot=Ui,i.ln=Xi,i.log=Hi,i.log10=Yi,i.log2=zi,i.max=ji,i.min=Zi,i.mod=Qi,i.mul=$i,i.pow=Ji,i.random=eo,i.round=to,i.sign=no,i.sin=ro,i.sinh=io,i.sqrt=oo,i.sub=so,i.sum=ao,i.tan=co,i.tanh=uo,i.trunc=lo,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 qi(r,e){return new this(r).div(e)}function Wi(r){return new this(r).exp()}function Gi(r){return K(r=new this(r),r.e+1,3)}function Ui(){var r,e,t=new this(0);for(v=!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 v=!0,new this(1/0);t=e}return v=!0,t.sqrt()}function ur(r){return r instanceof xt||r&&r.toStringTag===pr||!1}function Xi(r){return new this(r).ln()}function Hi(r,e){return new this(r).log(e)}function zi(r){return new this(r).log(2)}function Yi(r){return new this(r).log(10)}function ji(){return yr(this,arguments,"lt")}function Zi(){return yr(this,arguments,"gt")}function Qi(r,e){return new this(r).mod(e)}function $i(r,e){return new this(r).mul(e)}function Ji(r,e){return new this(r).pow(e)}function eo(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Ie(r,1,tt),n=Math.ceil(r/R),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(dr);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=R,n&&r&&(i=le(10,R-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-=R)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<R&&(t-=R-n)}return s.e=t,s.d=a,s}function to(r){return K(r=new this(r),r.e+1,this.rounding)}function no(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function ro(r){return new this(r).sin()}function io(r){return new this(r).sinh()}function oo(r){return new this(r).sqrt()}function so(r,e){return new this(r).sub(e)}function ao(){var r=0,e=arguments,t=new this(e[r]);for(v=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return v=!0,K(t,this.precision,this.rounding)}function co(r){return new this(r).tan()}function uo(r){return new this(r).tanh()}function lo(r){return K(r=new this(r),r.e+1,1)}T[Symbol.for("nodejs.util.inspect.custom")]=T.toString;T[Symbol.toStringTag]="Decimal";var xt=T.constructor=Ar(hn);zt=new xt(zt);Yt=new xt(Yt);var S=xt;import{get as Pr,set as mo}from"lodash";import kr from"dayjs";import po from"dayjs/plugin/utc";kr.extend(po);var xn=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 kr().utc().format("YYYY/MM/DD HH:mm:ss UTC")}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}},Tr={},fo={};function me(r){let e=Pr(Tr,r);if(!e){let t=Pr(fo,r);e=new xn({name:r,logLevel:t}),mo(Tr,r,e)}return e}import{PublicKey as yc}from"@solana/web3.js";import hc from"bn.js";import Co from"big.js";import rn from"bn.js";import Se from"bn.js";import{PublicKey as Cn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as go}from"@solana/spl-token";import{PublicKey as ee,SystemProgram as xr,SYSVAR_RENT_PUBKEY as bo}from"@solana/web3.js";function Bn({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Rs=[Bn({pubkey:go,isWritable:!1}),Bn({pubkey:xr.programId,isWritable:!1}),Bn({pubkey:bo,isWritable:!1})];function In({publicKey:r,transformSol:e}){let t=Br(r.toString());if(t instanceof ee)return e&&t.equals(Bt)?J:t;if(e&&t.toString()===Bt.toBase58())return J;if(typeof t=="string"){if(t===ee.default.toBase58())return ee.default;try{return new ee(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Br(r){try{return new ee(r)}catch{return r}}var Jt=new ee("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ls=new ee("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),It=new ee("SysvarRent111111111111111111111111111111111"),Fs=new ee("SysvarC1ock11111111111111111111111111111111"),ht=new ee("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ms=new ee("Sysvar1nstructions1111111111111111111111111"),Os=xr.programId,Es=new ee("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ds=new ee("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),vs=new ee("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),_s=new ee("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Vs=new ee("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),qs=new ee("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ws=new ee("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Gs=new ee("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Us=new ee("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Xs=new ee("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Hs=new ee("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new ee("So11111111111111111111111111111111111111112"),Bt=ee.default;function Sn(r){return In({publicKey:r,transformSol:!0})}import{PublicKey as yo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ir}from"@solana/spl-token";var Sr={chainId:101,address:yo.default.toBase58(),programId:Ir.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ut={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Ir.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var Kn=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Bt.toBase58()||e instanceof Cn&&Bt.equals(e)){this.decimals=ut.decimals,this.symbol=ut.symbol,this.name=ut.name,this.mint=new Cn(ut.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?Cn.default:In({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ye=Kn;Ye.WSOL=new Kn(Z(_({},ut),{mint:ut.address}));import tn from"big.js";import Ao from"bn.js";import Po from"decimal.js-light";import wo from"toformat";var ho=wo,St=ho;var en=me("module/fraction"),Nn=St(tn),Ct=St(Po),To={[0]:Ct.ROUND_DOWN,[1]:Ct.ROUND_HALF_UP,[2]:Ct.ROUND_UP},ko={[0]:tn.roundDown,[1]:tn.roundHalfUp,[2]:tn.roundUp},z=class{constructor(e,t=new Ao(1)){this.numerator=be(e),this.denominator=be(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new z(this.denominator,this.numerator)}add(e){let t=e instanceof z?e:new z(be(e));return this.denominator.eq(t.denominator)?new z(this.numerator.add(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof z?e:new z(be(e));return this.denominator.eq(t.denominator)?new z(this.numerator.sub(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof z?e:new z(be(e));return new z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof z?e:new z(be(e));return new z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||en.logWithError(`${e} is not an integer.`),e<=0&&en.logWithError(`${e} is not positive.`),Ct.set({precision:e+1,rounding:To[n]});let i=new Ct(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)||en.logWithError(`${e} is not an integer.`),e<0&&en.logWithError(`${e} is negative.`),Nn.DP=e,Nn.RM=ko[n]||1,new Nn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Bo=me("Raydium_price"),Oe=class extends z{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new z(Rn(n.decimals),Rn(i.decimals))}get raw(){return new z(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Oe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Bo.logWithError("mul token not equals");let n=super.mul(t);return new Oe({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Ln=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},nn=Ln;nn.SOL=new Ln(Sr);import Io from"bn.js";var Cr=new z(new Io(100)),lt=class extends z{toSignificant(e=5,t,n){return this.mul(Cr).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Cr).toFixed(e,t,n)}};var So=new Se(0),Wa=new Se(1),Ga=new Se(2),Ua=new Se(3),Xa=new Se(5),Fn=new Se(10),Ha=new Se(100),za=new Se(1e3),Ya=new Se(1e4),Kr=9007199254740991;function be(r){let e=me("Raydium_parseBigNumberish");if(r instanceof Se)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Se(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Kr||r<=-Kr)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Se(String(r))):typeof r=="bigint"?new Se(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Se(0))}function Rn(r){return Fn.pow(be(r))}var Ko=me("Raydium_amount"),Nr=St(Co);function No(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")):Ko.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Te=class extends z{constructor(t,n,i=!0,o){let s=new rn(0),a=Fn.pow(new rn(t.decimals));if(i)s=be(n);else{let c=new rn(0),u=new rn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=No(n.toString(),t.decimals);c=be(l),u=be(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=me(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 Te(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Te(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 Nr.DP=this.token.decimals,new Nr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Rt,sendAndConfirmTransaction as vn,Transaction as Lt,TransactionMessage as Ft,VersionedTransaction as Mt}from"@solana/web3.js";import vo from"axios";var ce={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",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",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"};import{PublicKey as Ro,ComputeBudgetProgram as Rr,Transaction as Fr,TransactionMessage as Lo,Keypair as Mr,VersionedTransaction as Or}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fo}from"@solana/spl-token";var Lr=me("Raydium_txUtil"),Er=1644;function on(r){let e=[],t=[];return r.microLamports&&(e.push(Rr.setComputeUnitPrice({microLamports:r.microLamports})),t.push(ce.SetComputeUnitPrice)),r.units&&(e.push(Rr.setComputeUnitLimit({units:r.units})),t.push(ce.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function At(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function Mo(r,e){r.length<1&&Lr.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Lr.logWithError(`no signers provided:, ${e.toString()}`);let t=new Fr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Er}catch{return!1}}function Ce(r,e){let[t,n]=Ro.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Kt({instructions:r,payer:e,signers:t}){return Mo(r,[e,...t])}function Nt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Mr.generate().publicKey.toString()}){let o=new Lo({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Or(o).serialize()).toString("base64").length<Er}catch{return!1}}var Oo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function mt(r){let e=[];return r.forEach(t=>{t instanceof Fr&&(t.recentBlockhash||(t.recentBlockhash=Fo.toBase58()),t.feePayer||(t.feePayer=Mr.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Or&&(n=Oo(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Dr,AddressLookupTableAccount as sn}from"@solana/web3.js";import{PublicKey as Eo}from"@solana/web3.js";import{getTransferFeeConfig as vc,unpackMint as _c}from"@solana/spl-token";var Mn=me("Raydium_accountInfo_util");async function nt(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=_({batchRequest:!1},t),o=On(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(d=>d.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),c=On(a,10);s=(await(await Promise.all(c.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Mn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:d,executable:p,lamports:g,owner:f,rentEpoch:b}=m;return d.length!==2&&d[1]!=="base64"&&Mn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:g,owner:new Eo(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Mn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function En(r,e,t){let n=await nt(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>Z(_({},i),{accountInfo:n[o]}))}async function Dn({connection:r,address:e}){let t=await nt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Dr(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new sn({key:s,state:sn.deserialize(o.data)});n[s.toString()]=a,an[s.toString()]=a}return n}var an={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new sn({key:new Dr("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:sn.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"))})};var cn=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}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 vo.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}=on(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!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!==Rt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(_({},t||{})):this.build(t)}build(e){let t=new Lt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=n||{},s=i!=null?i:await At(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),mt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await vn(this.connection,t,this.signers.find(c=>c.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let c=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(c[0].serialize(),{skipPreflight:o}),signedTx:c[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(u=>u.transaction.instructions.length>0),s=[i,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async u=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=u||{},g=d!=null?d:await At(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,y)=>(b.recentBlockhash=g,await vn(this.connection,b,a[y].find(h=>h.publicKey.equals(this.owner.publicKey))?a[y]:[...a[y],this.owner.signer],{skipPreflight:p})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((h,w)=>(h.recentBlockhash=g,a[w].length&&h.sign(...a[w]),h));mt(b);let y=await this.signAllTransactions(b);if(l){let h=0,w=[],P=async()=>{if(!y[h])return;let A=await this.connection.sendRawTransaction(y[h].serialize(),{skipPreflight:p});w.push({txId:A,status:"sent",signedTx:y[h]}),m==null||m([...w]),h++,this.connection.onSignature(A,k=>{let x=w.findIndex(I=>I.txId===A);x>-1&&(w[x].status=k.err?"error":"success"),m==null||m([...w]),k.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:w.map(A=>A.txId),signedTxs:y}}else{let h=[];for(let w=0;w<y.length;w+=1){let P=await this.connection.sendRawTransaction(y[w].serialize(),{skipPreflight:p});h.push(P)}return{txIds:h,signedTxs:y}}}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){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,o=Xt(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=_(_({},this.cluster==="devnet"?{}:an),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let p of a)s[p]===void 0&&c.push(new Rt(p));let u=await Dn({connection:this.connection,address:c});for(let[p,g]of Object.entries(u))s[p]=g;let l=new Ft({payerKey:this.feePayer,recentBlockhash:i?Rt.default.toBase58():await At(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Mt(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var b;let{recentBlockHash:g,skipPreflight:f=!0}=p||{};if(g&&(m.message.recentBlockhash=g),mt([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let y=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:w}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:w,lastValidBlockHeight:h,signature:y},"confirmed"),{txId:y,signedTx:m}}if(this.signAllTransactions){let y=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(y[0],{skipPreflight:f}),signedTx:y[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(u=>u.builder.instructions.length>0),s=[i,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return s.forEach(async(u,l)=>{u.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async u=>{var g;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=u||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),mt(s),(g=this.owner)!=null&&g.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return s.forEach((y,h)=>{a[h].find(w=>w.publicKey.equals(this.owner.publicKey))||y.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async y=>{let h=await this.connection.sendTransaction(y,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,y=[],h=async()=>{if(!f[b])return;let w=await this.connection.sendTransaction(f[b],{skipPreflight:p});y.push({txId:w,status:"sent",signedTx:f[b]}),m==null||m([...y]),b++,this.connection.onSignature(w,P=>{let A=y.findIndex(k=>k.txId===w);A>-1&&(y[A].status=P.err?"error":"success"),m==null||m([...y]),P.err||h()},"processed"),this.connection.getSignatureStatus(w)};return h(),{txIds:[],signedTxs:f}}else{let b=[];for(let y=0;y<f.length;y+=1){let h=await this.connection.sendTransaction(f[y],{skipPreflight:p});b.push(h)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let u=e||{},{computeBudgetConfig:t}=u,n=Xt(u,["computeBudgetConfig"]),i=t?on(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>Z(_({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(l=>{let m=[...c,l],d=t?[...i.instructions,...m]:m,g=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Rt(f));if(c.length<12&&Kt({instructions:d,payer:this.feePayer,signers:g})||Kt({instructions:m,payer:this.feePayer,signers:g}))c.push(l);else{if(c.length===0)throw Error("item ins too big");Kt({instructions:t?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:g})?s.push(new Lt().add(...i.instructions,...c)):s.push(new Lt().add(...c)),a.push(Array.from(new Set(c.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),c=[l]}}),c.length>0){let m=[...new Set(c.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);Kt({instructions:t?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new Lt().add(...i.instructions,...c)):s.push(new Lt().add(...c)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=l||{},f=p!=null?p:await At(this.connection);if(s.forEach(async(y,h)=>{y.recentBlockhash=f,a[h].length&&y.sign(...a[h])}),mt(s),(b=this.owner)!=null&&b.isKeyPair)return{txIds:await Promise.all(s.map(async(y,h)=>await vn(this.connection,y,a[h].find(w=>w.publicKey.equals(this.owner.publicKey))?a[h]:[...a[h],this.owner.signer],{skipPreflight:g}))),signedTxs:s};if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(m){let h=0,w=[],P=async()=>{if(!y[h])return;let A=await this.connection.sendRawTransaction(y[h].serialize(),{skipPreflight:g});w.push({txId:A,status:"sent",signedTx:y[h]}),d==null||d([...w]),h++,this.connection.onSignature(A,k=>{let x=w.findIndex(I=>I.txId===A);x>-1&&(w[x].status=k.err?"error":"success"),d==null||d([...w]),k.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:w.map(A=>A.txId),signedTxs:y}}else{let h=[];for(let w=0;w<y.length;w+=1){let P=await this.connection.sendRawTransaction(y[w].serialize(),{skipPreflight:g});h.push(P)}return{txIds:h,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=Xt(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=_(_({},this.cluster==="devnet"?{}:an),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),c=[];for(let y of a)s[y]===void 0&&c.push(new Rt(y));let u=await Dn({connection:this.connection,address:c});for(let[y,h]of Object.entries(u))s[y]=h;let l=t?on(t):{instructions:[],instructionTypes:[]},m=await At(this.connection),d=this.signers.reduce((y,h)=>Z(_({},y),{[h.publicKey.toBase58()]:h}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(y=>{let h=[...f,y],w=t?[...l.instructions,...h]:h;if(f.length<12&&Nt({instructions:w,payer:this.feePayer,lookupTableAddressAccount:s})||Nt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(y);else{if(f.length===0)throw Error("item ins too big");let P={};for(let A of[...new Set(a)])s[A]!==void 0&&(P[A]=s[A]);if(t&&Nt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Ft({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Mt(A))}else{let A=new Ft({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Mt(A))}g.push(Array.from(new Set(f.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat())).map(A=>d[A]).filter(A=>A!==void 0)),f=[y]}}),f.length>0){let h=[...new Set(f.map(w=>w.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(w=>d[w]).filter(w=>w!==void 0);if(t&&Nt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let w=new Ft({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Mt(w))}else{let w=new Ft({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Mt(w))}g.push(h)}return{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async y=>{var k;let{sequentially:h,onTxUpdate:w,recentBlockHash:P,skipPreflight:A=!0}=y||{};if(p.map(async(x,I)=>{g[I].length&&x.sign(g[I]),P&&(x.message.recentBlockhash=P)}),mt(p),(k=this.owner)!=null&&k.isKeyPair){let{lastValidBlockHeight:x,blockhash:I}=await this.connection.getLatestBlockhash();return p.forEach((N,O)=>{g[O].find(V=>V.publicKey.equals(this.owner.publicKey))||N.sign([this.owner.signer])}),{txIds:await Promise.all(p.map(async N=>{let O=await this.connection.sendTransaction(N,{skipPreflight:A});return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:x,signature:O},"confirmed"),O})),signedTxs:p}}if(this.signAllTransactions){let x=await this.signAllTransactions(p);if(h){let I=0,N=[],O=async()=>{if(!x[I])return;let V=await this.connection.sendTransaction(x[I],{skipPreflight:A});N.push({txId:V,status:"sent",signedTx:x[I]}),w==null||w([...N]),I++,this.connection.onSignature(V,he=>{let ne=N.findIndex(Ae=>Ae.txId===V);ne>-1&&(N[ne].status=he.err?"error":"success"),w==null||w([...N]),he.err||O()},"processed"),this.connection.getSignatureStatus(V)};return O(),{txIds:[],signedTxs:x}}else{let I=[];for(let N=0;N<x.length;N+=1){let O=await this.connection.sendTransaction(x[N],{skipPreflight:A});I.push(O)}return{txIds:I,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function On(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 ue}from"@solana/web3.js";var au=new ue("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),cu=new ue("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),uu=new ue("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),lu=new ue("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),mu=new ue("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),du=new ue("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),pu=new ue("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),fu=new ue("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),gu=new ue("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),bu=new ue("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),yu=new ue("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),wu=new ue("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),hu=new ue("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Au=new ue("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Pu=new ue("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Tu=new ue("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ku=new ue("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),xu=new ue("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Bu=new ue("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Iu=new ue("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");import{PublicKey as _o}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Vo}from"@solana/spl-token";function Ee(r,e,t){return Ce([r.toBuffer(),(t!=null?t:Vo).toBuffer(),e.toBuffer()],new _o("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import De from"bn.js";var Ot=1e4;function oe(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=Z(_({},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 De(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===Ot){let c=new De(o.maximumFee.toString());return{amount:r.add(c),fee:c,expirationTime:a}}else{let c=_n(r.mul(new De(Ot)),new De(Ot-o.transferFeeBasisPoints)),u=new De(o.maximumFee.toString()),l=c.sub(r).gt(u)?r.add(u):c,m=_n(l.mul(new De(o.transferFeeBasisPoints)),new De(Ot)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let c=_n(r.mul(new De(o.transferFeeBasisPoints)),new De(Ot)),u=c.gt(s)?s:c;return{amount:r,fee:u,expirationTime:a}}}function dt(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 De(0))?t.add(new De(1)):t}var Vn=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Et=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=me(t)}createTxBuilder(e){return this.scope.checkOwner(),new cn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Vn(e))}logInfo(...e){this.logger.info(Vn(e))}logAndCreateError(...e){let t=Vn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import We from"bn.js";var H=new We(0),Ge=new We(1),je=new We(-1),Ke=new We(1).shln(64),un=new We(1).shln(128),qn=Ke.sub(Ge),Dt=64,vr=un.subn(1),ke=-443636,Be=-ke,rt=new We("4295048016"),it=new We("79226673521066979257578248091"),_r=16,Vr="59543866431248",qr="184467440737095516",Wr="15793534762490258745",ln=new We(10).pow(new We(6)),qo=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(qo||{}),nl={[500]:10,[3e3]:60,[1e4]:200},rl={version:6,liquidity:H,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:H,feeGrowthGlobalX64B:H,protocolFeesTokenA:H,protocolFeesTokenB:H,swapInAmountTokenA:H,swapOutAmountTokenB:H,swapInAmountTokenB:H,swapOutAmountTokenA:H,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},Gr={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:[]},il=new We("18446744073700000000");import q from"bn.js";function Ur(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function sl(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function al(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function mn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Wn(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Gn(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function vt(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Xr(r,e){return vt(r,e)?null:Wn(r,e)}function Hr(r,e){return vt(r,e)?null:Gn(r,e)}var Wo=Buffer.from("amm_config","utf8"),Go=Buffer.from("pool","utf8"),Uo=Buffer.from("pool_vault","utf8"),Xo=Buffer.from("pool_reward_vault","utf8"),zr=Buffer.from("position","utf8"),Ho=Buffer.from("tick_array","utf8"),zo=Buffer.from("operation","utf8"),Yo=Buffer.from("pool_tick_array_bitmap_extension","utf8");function ml(r,e){return Ce([Wo,Ur(e)],r)}function Yr(r,e,t,n){return Ce([Go,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Un(r,e,t){return Ce([Uo,e.toBuffer(),t.toBuffer()],r)}function jr(r,e,t){return Ce([Xo,e.toBuffer(),t.toBuffer()],r)}function j(r,e,t){return Ce([Ho,e.toBuffer(),mn(t)],r)}function pt(r,e,t,n){return Ce([zr,e.toBuffer(),mn(t),mn(n)],r)}function Ne(r,e){return Ce([zr,e.toBuffer()],r)}function dn(r){return Ce([Buffer.from("metadata","utf8"),ht.toBuffer(),r.toBuffer()],ht)}function _t(r){return Ce([zo],r)}function Ue(r,e){return Ce([Yo,e.toBuffer()],r)}import{PublicKey as ot}from"@solana/web3.js";import ae from"bn.js";import ms from"bn.js";import{PublicKey as rs}from"@solana/web3.js";import Jr,{isBN as ei}from"bn.js";import{bits as fl,BitStructure as gl,blob as jo,Blob as bl,cstr as yl,f32 as wl,f32be as hl,f64 as Al,f64be as Pl,greedy as Tl,Layout as Zo,ns64 as kl,ns64be as xl,nu64 as Bl,nu64be as Il,offset as Sl,s16 as Cl,s16be as Kl,s24 as Nl,s24be as Rl,s32 as Qo,s32be as Ll,s40 as Fl,s40be as Ml,s48 as Ol,s48be as El,s8 as Dl,seq as $o,struct as vl,Structure as Jo,u16 as es,u16be as _l,u24 as Vl,u24be as ql,u32 as Wl,u32be as Gl,u40 as Ul,u40be as Xl,u48 as Hl,u48be as zl,u8 as ts,UInt as ns,union as Yl,Union as jl,unionLayoutDiscriminator as Zl,utf8 as Ql}from"@solana/buffer-layout";var Xn=Zo,Zr=Jo;var Hn=ns;var Qr=ts,Pt=es;var ye=Qo;var $r=$o;var Re=jo;var Vt=class extends Xn{constructor(t,n,i){super(t,i);this.blob=Re(t),this.signed=n}decode(t,n=0){let i=new Jr(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 Jr(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function se(r){return new Hn(1,r)}function Ze(r){return new Hn(4,r)}function M(r){return new Vt(8,!1,r)}function W(r){return new Vt(16,!1,r)}function ti(r){return new Vt(16,!0,r)}var pn=class extends Xn{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 te(r){return new pn(Re(32),e=>new rs(e),e=>e.toBuffer(),r)}function Xe(r){return new pn(Qr(),is,os,r)}function is(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function os(r){return r?1:0}var zn=class extends Zr{decode(e,t){return super.decode(e,t)}};function $(r,e,t){return new zn(r,e,t)}function ie(r,e,t){let n,i=typeof e=="number"?e:ei(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=ei(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 $r(r,i,t)}var Yn=14,Qe=class{static maxTickInTickarrayBitmap(e){return e*de*ft}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(!X.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-X.tickCount(n):t+X.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*de,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(i){let l=e.shln(1024-u-1),m=Xr(1024,l);if(m!==null){let d=(u-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),m=Hr(1024,l);if(m!==null){let d=(u+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-X.tickCount(n)}}}},qt=class{static getBitmapOffset(e,t){if(!X.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Qe.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=Qe.maxTickInTickarrayBitmap(e),n=-t;if(Be<=t)throw Error(`extensionTickBoundary check error: ${Be}, ${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:C.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=X.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}=Qe.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let c=C.mergeTickArrayBitmap(e).shln(ft-1-a),u=vt(512,c)?null:Wn(512,c);if(u!==null){let l=t-u*X.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=C.mergeTickArrayBitmap(e).shrn(a),u=vt(512,c)?null:Gn(512,c);if(u!==null){let l=t+u*X.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-X.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Qe.maxTickInTickarrayBitmap(t),i=Math.floor(n/X.tickCount(t));return e<0&&n!=0&&(i=ft-i),i}};var wm=$([Re(8),se("bump"),Pt("index"),te(""),Ze("protocolFeeRate"),Ze("tradeFeeRate"),Pt("tickSpacing"),ie(M(),8,"")]),ss=$([Ze("blockTimestamp"),W("sqrtPriceX64"),W("cumulativeTimePriceX64"),ie(W(),1,"")]),jn=$([Re(8),Xe("initialized"),te("poolId"),ie(ss,1e3,"observations"),ie(W(),5,"")]),as=$([se("rewardState"),M("openTime"),M("endTime"),M("lastUpdateTime"),W("emissionsPerSecondX64"),M("rewardTotalEmissioned"),M("rewardClaimed"),te("tokenMint"),te("tokenVault"),te("creator"),W("rewardGrowthGlobalX64")]),ni=$([Re(8),se("bump"),te("ammConfig"),te("creator"),te("mintA"),te("mintB"),te("vaultA"),te("vaultB"),te("observationId"),se("mintDecimalsA"),se("mintDecimalsB"),Pt("tickSpacing"),W("liquidity"),W("sqrtPriceX64"),ye("tickCurrent"),Pt("observationIndex"),Pt("observationUpdateDuration"),W("feeGrowthGlobalX64A"),W("feeGrowthGlobalX64B"),M("protocolFeesTokenA"),M("protocolFeesTokenB"),W("swapInAmountTokenA"),W("swapOutAmountTokenB"),W("swapInAmountTokenB"),W("swapOutAmountTokenA"),se("status"),ie(se(),7,""),ie(as,3,"rewardInfos"),ie(M(),16,"tickArrayBitmap"),M("totalFeesTokenA"),M("totalFeesClaimedTokenA"),M("totalFeesTokenB"),M("totalFeesClaimedTokenB"),M("fundFeesTokenA"),M("fundFeesTokenB"),M("startTime"),ie(M(),15*4-3,"padding")]),cs=$([W("growthInsideLastX64"),M("rewardAmountOwed")]),fn=$([Re(8),se("bump"),te("nftMint"),te("poolId"),ye("tickLower"),ye("tickUpper"),W("liquidity"),W("feeGrowthInsideLastX64A"),W("feeGrowthInsideLastX64B"),M("tokenFeesOwedA"),M("tokenFeesOwedB"),ie(cs,3,"rewardInfos"),ie(M(),8,"")]),hm=$([Re(8),se("bump"),te("poolId"),ye("tickLowerIndex"),ye("tickUpperIndex"),W("liquidity"),W("feeGrowthInsideLastX64A"),W("feeGrowthInsideLastX64B"),M("tokenFeesOwedA"),M("tokenFeesOwedB"),ie(W(),3,"rewardGrowthInside"),ie(M(),8,"")]),us=$([ye("tick"),ti("liquidityNet"),W("liquidityGross"),W("feeGrowthOutsideX64A"),W("feeGrowthOutsideX64B"),ie(W(),3,"rewardGrowthsOutsideX64"),ie(Ze(),13,"")]),Wt=$([Re(8),te("poolId"),ye("startTickIndex"),ie(us,de,"ticks"),se("initializedTickCount"),ie(se(),115,"")]),ri=$([Re(329),ie(te(),100,"whitelistMints")]),ii=$([Re(8),te("poolId"),ie(ie(M(),8),Yn,"positiveTickArrayBitmap"),ie(ie(M(),8),Yn,"negativeTickArrayBitmap")]);var ls=15,X=class{static async getTickArrays(e,t,n,i,o,s,a){let c=[],u=C.getTickArrayStartIndexByTick(i,o),l=C.getInitializedTickArrayInRange(s,a,o,u,Math.floor(ls/2));for(let p=0;p<l.length;p++){let{publicKey:g}=j(t,n,l[p]);c.push(g)}let m=(await nt(e,c)).map(p=>p!==null?Wt.decode(p.data):null),d={};for(let p=0;p<c.length;p++){let g=m[p];g!==null&&(d[g.startTickIndex]=Z(_({},g),{address:c[p]}))}return d}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=C.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:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[m,d,p]}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/X.tickCount(t)),a=n?C.searchLowBitFromStart(i,o,s-1,1,t):C.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=de-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<de;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=j(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=C.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 d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c-1}else for(c=c+1;c<de;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c+1}let{publicKey:m}=j(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(C.checkIsOutOfBoundary(e)){if(e>Be)return!1;let n=C.getTickArrayStartIndexByTick(ke,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return de*e}};var de=60,ft=512,C=class{static getTickArrayAddressByTick(e,t,n,i){let o=C.getTickArrayStartIndexByTick(n,i),{publicKey:s}=j(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=C.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=de)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=X.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)*X.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*de,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*de,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*de:e+t*de}static mergeTickArrayBitmap(e){let t=new ms(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*de));return[...C.searchLowBitFromStart(e,t,s-1,o,n),...C.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return C.searchHightBitFromStart(e,t,0,ft,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=C.getAllInitializedTickArrayStartIndex(n,i,o);for(let c of a){let{publicKey:u}=j(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=>C.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=X.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=>C.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=X.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<ke||e>Be}static nextInitTick(e,t,n,i,o){if(X.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<de;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=de-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<de;){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=E.getSqrtPriceX64FromTick(t),o=E.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),o=gt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=E.getSqrtPriceX64FromTick(o),a=E.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=E.getSqrtPriceX64FromTick(t),o=E.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),o=gt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=E.getSqrtPriceX64FromTick(o),a=E.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}};import He from"bn.js";var Gt=class{static getfeeGrowthInside(e,t,n){let i=new He(0),o=new He(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 He(0),a=new He(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=D.wrappingSubU128(D.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),u=D.wrappingSubU128(D.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=D.mulDivFloor(D.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ke),c=t.tokenFeesOwedA.add(a),u=D.mulDivFloor(D.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ke),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=D.mulDivFloor(D.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ke),c=t.tokenFeesOwedA.add(a),u=D.mulDivFloor(D.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ke),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=D.wrappingSubU128(c,u.growthInsideLastX64),m=D.mulDivFloor(l,t.liquidity,Ke),d=u.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=D.wrappingSubU128(c,u.growthInsideLastX64),m=D.mulDivFloor(l,t.liquidity,Ke),d=u.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new He(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 He(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(D.wrappingSubU128(D.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 He(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 He(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(D.wrappingSubU128(D.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,y,h,w;let a=E.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),c=E.getSqrtPriceX64FromTick(t.tickLower),u=E.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=U.getAmountsFromLiquidity(a,c,u,n,o),[d,p]=[oe(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),oe(m.amountB,(y=e.mintB.extensions)==null?void 0:y.feeConfig,s,!0)],[g,f]=[oe(new He(new S(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),oe(new He(new S(m.amountB.toString()).mul(l).toFixed(0)),(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:dt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as oi}from"@solana/spl-token";var xe=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=bt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,u,o);return a.push(...d),{expectedAmountOut:m.mul(je),remainingAccounts:a,executionPrice:p,feeAmount:g}}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 f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=j(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=bt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(je),u,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=xe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?qt.checkTickArrayIsInit(X.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):C.checkTickArrayIsInitialized(C.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=j(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,X.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=j(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/X.tickCount(e.tickSpacing)),i=t?C.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):C.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=X.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Qe.nextInitializedTickArrayStartIndex(C.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=qt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<ke||t>Be)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 m=o[l],d=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(m.tokenMint))==null?void 0:c.owner;if(d===void 0)throw Error("get new reward mint info error");let p=Z(_({},m),{perSecond:D.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new ot(d)});if(p.tokenMint.equals(ot.default))continue;if(n<=p.openTime.toNumber()||i.eq(H)){s.push(p);continue}let g=new ae(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),b=D.mulDivFloor(f,p.emissionsPerSecondX64,i),y=p.rewardGrowthGlobalX64.add(b),h=D.mulDivFloor(f,p.emissionsPerSecondX64,Ke),w=p.rewardTotalEmissioned.add(h);s.push(Z(_({},p),{rewardGrowthGlobalX64:y,rewardTotalEmissioned:w,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=C.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Qe.maxTickInTickarrayBitmap(e),n=-t;return t>Be&&(t=X.getArrayStartIndex(Be,e)+X.tickCount(e)),n<ke&&(n=X.getArrayStartIndex(ke,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!X.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/X.tickCount(t)*ft}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await En(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=ii.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=C.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=C.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let m of l){let{publicKey:d}=j(c.programId,c.id,m);o.push({pubkey:d}),i[d.toString()]=c.id}}let s=await En(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=Wt.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=Z(_({},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(d=>d.accountInfo.mint),u=[];for(let d of c)for(let p of s)u.push(Ne(p,d).publicKey);let l=await nt(t,u,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=fn.decode(d.data),g=p.poolId.toString(),f=e.find(I=>I.state.id.toBase58()===g);if(f===void 0)continue;let b=f.state,y=C._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=C._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:w,amountB:P}=U.getAmountsFromLiquidity(b.sqrtPriceX64,y.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),A=1/(1-Math.sqrt(Math.sqrt(y.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:y.price,priceUpper:h.price,amountA:w,amountB:P,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(I=>Z(_({},I),{pendingReward:new ae(0)})),leverage:A,tokenFeeAmountA:new ae(0),tokenFeeAmountB:new ae(0)}];let k=await C.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),x=await C.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=k,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=x}if(o){let d=Object.values(m),p=await nt(t,d,{batchRequest:i}),g={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let y=d[f].toString();g[y]=Wt.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let y of b){let h=`${f.programId.toString()}-${f.id.toString()}-${y.tickLower}`,w=`${f.programId.toString()}-${f.id.toString()}-${y.tickUpper}`,P=g[m[h].toString()],A=g[m[w].toString()],k=P.ticks[C.getTickOffsetInArray(y.tickLower,f.tickSpacing)],x=A.ticks[C.getTickOffsetInArray(y.tickUpper,f.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:N}=await Gt.GetPositionFees(f,y,k,x),O=await Gt.GetPositionRewards(f,y,k,x);y.tokenFeeAmountA=I.gte(new ae(0))?I:new ae(0),y.tokenFeeAmountB=N.gte(new ae(0))?N:new ae(0);for(let V=0;V<O.length;V++)y.rewardInfos[V].pendingReward=O[V].gte(new ae(0))?O[V]:new ae(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new S(0)}){var O;let c,u=n.toBase58()===e.mintA.address,[l,m]=u?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new S(0))?c=u?rt.add(new ae(1)):it.sub(new ae(1)):c=E.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=oe(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:g,executionPrice:f,feeAmount:b}=xe.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((O=d.fee)!=null?O:H),c),y=oe(p,m,i,!1),h=E.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),w=u?h:new S(1).div(h),P=p.mul(new ae(Math.floor((1-s)*1e10))).div(new ae(1e10)),A=oe(P,m,i,!1),k=u?e.currentPrice:new S(1).div(e.currentPrice),x=new S(w).sub(k).abs(),I=k,N=new lt(new S(x).mul(10**15).toFixed(0),new S(I).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:y,minAmountOut:A,expirationTime:dt(d.expirationTime,y.expirationTime),currentPrice:e.currentPrice,executionPrice:w,priceImpact:N,fee:b,remainingAccounts:g}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[c,u]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new Ye(Z(_({},c),{mint:c.address,isToken2022:c.programId===oi.toBase58()})),new Ye(Z(_({},u),{mint:u.address,isToken2022:u.programId===oi.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:g,expirationTime:f,currentPrice:b,executionPrice:y,priceImpact:h,fee:w,remainingAccounts:P}=await xe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new ot(c.address),amountIn:n,slippage:o,epochInfo:s}),A=Z(_({},d),{amount:new Te(l,d.amount),fee:d.fee===void 0?void 0:new Te(l,d.fee)}),k=Z(_({},p),{amount:new Te(m,p.amount),fee:p.fee===void 0?void 0:new Te(m,p.fee)}),x=Z(_({},g),{amount:new Te(m,g.amount),fee:g.fee===void 0?void 0:new Te(m,g.fee)}),I=new Oe({baseToken:l,denominator:new ae(10).pow(new ae(20+l.decimals)),quoteToken:m,numerator:b.mul(new S(10**(20+m.decimals))).toFixed(0)}),N=new Oe({baseToken:l,denominator:new ae(10).pow(new ae(20+l.decimals)),quoteToken:m,numerator:y.mul(new S(10**(20+m.decimals))).toFixed(0)}),O=new Te(l,w);return{realAmountIn:A,amountOut:k,minAmountOut:x,expirationTime:f,currentPrice:I,executionPrice:N,priceImpact:h,fee:O,remainingAccounts:P}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var g,f,b;let o=e[t],s=C.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=C.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(g=o.rewardApr[0])!=null?g:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}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],m=i[Sn(e.mintA.address).toString()],d=i[Sn(e.mintB.address).toString()],p=e.mintA.decimals,g=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=E.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),b=E.getSqrtPriceX64FromTick(s),y=E.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:w}=U.getAmountsFromLiquidityWithSlippage(f,b,y,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:A}=U.getAmountsFromLiquidityWithSlippage(f,b,y,o,!1,!1,0),k=new S(h.toString()).div(new S(10).pow(p)).mul(m.value).add(new S(w.toString()).div(new S(10).pow(g)).mul(d.value)),x=new S(P.toString()).div(new S(10).pow(p)).mul(m.value).add(new S(A.toString()).div(new S(10).pow(g)).mul(d.value)),I=x.div(k.add(x)).div(x),O=new S(l.volumeFee).mul(365).div(u).mul(I).mul(100).toNumber(),V=3600*24*365,he=e.rewardDefaultInfos.map(ne=>{var Y,rr;let Ae=ne.mint.decimals,re=i[ne.mint.address];return c<((Y=ne.startTime)!=null?Y:0)||c>((rr=ne.endTime)!=null?rr:0)||!ne.perSecond||!re||Ae===void 0?0:new S(re.value).mul(new S(ne.perSecond).mul(V)).div(new S(10).pow(Ae)).mul(I).mul(100).toNumber()});return{feeApr:O,rewardsApr:he,apr:O+he.reduce((ne,Ae)=>ne+Ae,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var y,h;let l=E.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),m=E.getSqrtPriceX64FromTick(n),d=E.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,g=oe(o,(y=e[t?"mintA":"mintB"].extensions)==null?void 0:y.feeConfig,c,!u),f=new ae(new S(g.amount.sub((h=g.fee)!=null?h:H).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?U.getLiquidityFromTokenAmountA(m,d,f,!a):new ae(0);else if(l.lte(d)){let w=U.getLiquidityFromTokenAmountA(l,d,f,!a),P=U.getLiquidityFromTokenAmountB(m,l,f);b=t?w:P}else b=t?new ae(0):U.getLiquidityFromTokenAmountB(m,d,f);return xe.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,y,h,w;let c=E.getSqrtPriceX64FromTick(n),u=E.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(E.priceToSqrtPriceX64(new S(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[d,p]=[oe(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),oe(m.amountB,(y=t.mintB.extensions)==null?void 0:y.feeConfig,e,!0)],[g,f]=[oe(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),oe(m.amountB.muln(l),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:dt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new ot(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=ni.decode(i.data),s=Ue(e,new ot(n.id)).publicKey,a=await xe.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return Z(_({},o),{id:new ot(n.id),programId:new ot(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:Z(_({},n.config),{id:new ot(n.config.id),fundOwner:""}),currentPrice:new S(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function sd({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:c}){var w,P,A,k;let[u,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=E.priceToSqrtPriceX64(new S(r.price),r.mintA.decimals,r.mintB.decimals),g=E.getSqrtPriceX64FromTick(u),f=E.getSqrtPriceX64FromTick(l),[b,y]=[oe(m,(w=r.mintA.extensions)==null?void 0:w.feeConfig,a,!c),oe(d,(P=r.mintB.extensions)==null?void 0:P.feeConfig,a,!c)],h=U.getLiquidityFromTokenAmounts(p,g,f,b.amount.sub((A=b.fee)!=null?A:H),y.amount.sub((k=y.fee)!=null?k:H));return U.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:h,slippage:o,add:s,epochInfo:a,amountAddFee:!c})}var D=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(H)||(o=o.add(Ge)),o}static mulDivFloor(e,t,n){if(n.eq(H))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(H))throw new Error("division by 0");return e.mul(t).add(n.sub(Ge)).div(n)}static x64ToDecimal(e,t){return new S(e.toString()).div(S.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new q(e.mul(S.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(un).sub(t).mod(un)}};function fe(r,e){return Zn(r.mul(e),64,256)}function ds(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Zn(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var E=class{static sqrtPriceX64ToPrice(e,t,n){return D.x64ToDecimal(e).pow(2).mul(S.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return D.decimalToX64(e.mul(S.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(H))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(H))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(H))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(H))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(H))return e;let o=t.shln(Dt);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?D.mulDivCeil(s,e,a):D.mulDivRoundingUp(s,Ge,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 D.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(Dt);if(i)return e.add(o.div(t));{let s=D.mulDivRoundingUp(o,Ge,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>Be)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new q("18445821805675395072"):new q("18446744073709551616");return(t&2)!=0&&(n=fe(n,new q("18444899583751176192"))),(t&4)!=0&&(n=fe(n,new q("18443055278223355904"))),(t&8)!=0&&(n=fe(n,new q("18439367220385607680"))),(t&16)!=0&&(n=fe(n,new q("18431993317065453568"))),(t&32)!=0&&(n=fe(n,new q("18417254355718170624"))),(t&64)!=0&&(n=fe(n,new q("18387811781193609216"))),(t&128)!=0&&(n=fe(n,new q("18329067761203558400"))),(t&256)!=0&&(n=fe(n,new q("18212142134806163456"))),(t&512)!=0&&(n=fe(n,new q("17980523815641700352"))),(t&1024)!=0&&(n=fe(n,new q("17526086738831433728"))),(t&2048)!=0&&(n=fe(n,new q("16651378430235570176"))),(t&4096)!=0&&(n=fe(n,new q("15030750278694412288"))),(t&8192)!=0&&(n=fe(n,new q("12247334978884435968"))),(t&16384)!=0&&(n=fe(n,new q("8131365268886854656"))),(t&32768)!=0&&(n=fe(n,new q("3584323654725218816"))),(t&65536)!=0&&(n=fe(n,new q("696457651848324352"))),(t&131072)!=0&&(n=fe(n,new q("26294789957507116"))),(t&262144)!=0&&(n=fe(n,new q("37481735321082"))),e>0&&(n=vr.div(n)),n}static getTickFromPrice(e,t,n){return E.getTickFromSqrtPriceX64(E.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(it)||e.lt(rt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new q(t-64),i=ds(n,32,128),o=new q("8000000000000000","hex"),s=0,a=new q(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new q(0))&&s<_r;){c=c.mul(c);let g=c.shrn(127);c=c.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let u=a.shrn(32),m=i.add(u).mul(new q(Vr)),d=Zn(m.sub(new q(qr)),64,128).toNumber(),p=Zn(m.add(new q(Wr)),64,128).toNumber();return d==p?d:E.getSqrtPriceX64FromTick(p).lte(e)?p:d}},gt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=E.getTickFromSqrtPriceX64(E.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=gt.getTickWithPriceAndTickspacing(e,t,n,i),s=E.getSqrtPriceX64FromTick(o);return E.sqrtPriceX64ToPrice(s,n,i)}},U=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(H))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Dt),s=t.sub(e);return i?D.mulDivRoundingUp(D.mulDivCeil(o,s,t),Ge,e):D.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(H))throw new Error("sqrtPriceX64A must greater than 0");return i?D.mulDivCeil(n,t.sub(e),Ke):D.mulDivFloor(n,t.sub(e),Ke)}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?D.mulDivRoundingUp(a,Ge,qn):a.shrn(Dt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),D.mulDivFloor(n,qn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,i,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new q(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,i,o),a=U.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new q(0),amountB:U.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:c,amountB:u}=U.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new q(new S(c.toString()).mul(l).toFixed(0)),d=new q(new S(u.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var h,w,P,A;let u=E.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),l=E.getSqrtPriceX64FromTick(t),m=E.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=U.getAmountsFromLiquidity(u,l,m,i,s),[g,f]=[oe(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),oe(p.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,c)],[b,y]=[oe(new q(new S(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,c),oe(new q(new S(p.amountB.toString()).mul(d).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,c)];return{liquidity:i,amountA:g,amountB:f,amountSlippageA:b,amountSlippageB:y,expirationTime:dt(g.expirationTime,f.expirationTime)}}},bt=class{static swapCompute(e,t,n,i,o,s,a,c,u,l,m,d,p,g){if(d.eq(H))throw new Error("amountSpecified must not be 0");if(g||(g=s?rt.add(Ge):it.sub(Ge)),s){if(g.lt(rt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(it))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=d.gt(H),b={amountSpecifiedRemaining:d,amountCalculated:H,sqrtPriceX64:m,tick:u>p?Math.min(p+X.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new q(0)},y=p,h=n[p],w=0,P=!s&&h.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(H)&&!b.sqrtPriceX64.eq(g);){if(w>10)throw Error("liquidity limit");let A={};A.sqrtPriceStartX64=b.sqrtPriceX64;let k=C.nextInitTick(h,b.tick,l,s,P),x=k||null,I=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let O=xe.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},y,s);if(!O.isExist)throw Error("swapCompute LiquidityInsufficient");y=O.nextStartIndex;let{publicKey:V}=j(e,t,y);I=V,h=n[y],x=C.firstInitializedTick(h,s)}A.tickNext=x.tick,A.initialized=x.liquidityGross.gtn(0),p!==y&&I&&(b.accounts.push(I),p=y),A.tickNext<ke?A.tickNext=ke:A.tickNext>Be&&(A.tickNext=Be),A.sqrtPriceNextX64=E.getSqrtPriceX64FromTick(A.tickNext);let N;if(s&&A.sqrtPriceNextX64.lt(g)||!s&&A.sqrtPriceNextX64.gt(g)?N=g:N=A.sqrtPriceNextX64,[b.sqrtPriceX64,A.amountIn,A.amountOut,A.feeAmount]=bt.swapStepCompute(b.sqrtPriceX64,N,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(A.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(A.amountIn.add(A.feeAmount)),b.amountCalculated=b.amountCalculated.sub(A.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(A.amountOut),b.amountCalculated=b.amountCalculated.add(A.amountIn.add(A.feeAmount))),b.sqrtPriceX64.eq(A.sqrtPriceNextX64)){if(A.initialized){let O=x.liquidityNet;s&&(O=O.mul(je)),b.liquidity=U.addDelta(b.liquidity,O)}P=A.tickNext!=b.tick&&!s&&h.startTickIndex===A.tickNext,b.tick=s?A.tickNext-1:A.tickNext}else if(b.sqrtPriceX64!=A.sqrtPriceStartX64){let O=E.getTickFromSqrtPriceX64(b.sqrtPriceX64);P=O!=b.tick&&!s&&h.startTickIndex===O,b.tick=O}++w}try{let{nextStartIndex:A,isExist:k}=X.nextInitializedTickArray(b.tick,l,s,i,o);k&&p!==A&&(b.accounts.push(j(e,t,A).publicKey),p=A)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new q(0),amountIn:new q(0),amountOut:new q(0),feeAmount:new q(0)},a=e.gte(t),c=i.gte(H);if(c){let l=D.mulDivFloor(i,ln.sub(new q(o.toString())),ln);s.amountIn=a?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=E.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(je).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=E.getNextSqrtPriceX64FromOutput(e,n,i.mul(je),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=U.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=U.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:U.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:U.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(i.mul(je))&&(s.amountOut=i.mul(je)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=D.mulDivCeil(s.amountIn,new q(o),ln.sub(new q(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};import{TOKEN_PROGRAM_ID as we,TOKEN_2022_PROGRAM_ID as ct,ASSOCIATED_TOKEN_PROGRAM_ID as di}from"@solana/spl-token";import{PublicKey as B,TransactionInstruction as _e,SystemProgram as Tt,Keypair as tr}from"@solana/web3.js";import pi from"bn.js";import{PublicKey as ws,Keypair as hs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as As}from"@solana/spl-token";import _d from"bn.js";var ps=$([te("mint"),te("owner"),M("amount"),Ze("delegateOption"),te("delegate"),se("state"),Ze("isNativeOption"),M("isNative"),M("delegatedAmount"),Ze("closeAuthorityOption"),te("closeAuthority")]);function fs(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Qn(r,...e){if(!fs(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function $n(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function si(r,e){Qn(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var bn=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),ve=(r,e)=>r<<32-e|r>>>e;var xd=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function gs(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Jn(r){return typeof r=="string"&&(r=gs(r)),Qn(r),r}var gn=class{clone(){return this._cloneInto()}},Bd={}.toString;function ai(r){let e=n=>r().update(Jn(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function bs(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),c=n?4:0,u=n?0:4;r.setUint32(e+c,s,n),r.setUint32(e+u,a,n)}var ci=(r,e,t)=>r&e^~r&t,ui=(r,e,t)=>r&e^r&t^e&t,yn=class extends gn{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=bn(this.buffer)}update(e){$n(this);let{view:t,buffer:n,blockLen:i}=this;e=Jn(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let c=bn(e);for(;i<=o-s;s+=i)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){$n(this),si(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;bs(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=bn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<u;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var ys=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),st=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),at=new Uint32Array(64),er=class extends yn{constructor(){super(64,32,8,!1),this.A=st[0]|0,this.B=st[1]|0,this.C=st[2]|0,this.D=st[3]|0,this.E=st[4]|0,this.F=st[5]|0,this.G=st[6]|0,this.H=st[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:c}=this;return[e,t,n,i,o,s,a,c]}set(e,t,n,i,o,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=c|0}process(e,t){for(let m=0;m<16;m++,t+=4)at[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=at[m-15],p=at[m-2],g=ve(d,7)^ve(d,18)^d>>>3,f=ve(p,17)^ve(p,19)^p>>>10;at[m]=f+at[m-7]+g+at[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:c,G:u,H:l}=this;for(let m=0;m<64;m++){let d=ve(a,6)^ve(a,11)^ve(a,25),p=l+d+ci(a,c,u)+ys[m]+at[m]|0,f=(ve(n,2)^ve(n,13)^ve(n,22))+ui(n,i,o)|0;l=u,u=c,c=a,a=s+p|0,s=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,c,u,l)}roundClean(){at.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var li=ai(()=>new er);var Gd=me("Raydium_Util");function mi({fromPublicKey:r,programId:e=As}){let t=hs.generate().publicKey.toBase58().slice(0,32);return{publicKey:Ps(r,t,e),seed:t}}function Ps(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=li(n);return new ws(i)}var fi=me("Raydium_Clmm"),Ve={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],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]},pe=class{static createPoolInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g){let f=$([W("sqrtPriceX64"),M("startTime")]),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:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Tt.programId,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],y=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},y);let h=Buffer.from([...Ve.createPool,...y]);return new _e({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,m=mi({fromPublicKey:i,programId:n}),[d,p]=[new B(o.address),new B(s.address)],g=[Tt.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(jn.span),space:jn.span,programId:n})],{publicKey:f}=Yr(n,a,d,p),{publicKey:b}=Un(n,f,d),{publicKey:y}=Un(n,f,p);return g.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,b,new B(o.programId||we),p,y,new B(s.programId||we),Ue(n,f).publicKey,c,u)),{signers:[],instructions:g,instructionTypes:[ce.CreateAccount,ce.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:y},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h,w,P,A,k,x,I,N,O){let V=$([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),W("liquidity"),M("amountMaxA"),M("amountMaxB"),Xe("withMetadata"),se("optionBaseFlag"),Xe("baseFlag")]),he=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],ne=[{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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:It,isSigner:!1,isWritable:!1},{pubkey:Tt.programId,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:di,isSigner:!1,isWritable:!1},{pubkey:ht,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...he],Ae=Buffer.alloc(V.span);V.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:k,amountMaxA:x,amountMaxB:I,withMetadata:N==="create",baseFlag:!1,optionBaseFlag:0},Ae);let re=Buffer.from([...Ve.openPosition,...Ae]);return new _e({keys:ne,programId:e,data:re})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,p]=[new B(e.programId),new B(e.id)],g;if(l)g=new B((await l(1))[0]);else{let I=tr.generate();m.push(I),g=I.publicKey}let f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=j(d,p,f),{publicKey:h}=j(d,p,b),{publicKey:w}=Ee(n.wallet,g,we),{publicKey:P}=dn(g),{publicKey:A}=Ne(d,g),{publicKey:k}=pt(d,p,i,o),x=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,g,w,P,k,y,h,A,n.tokenAccountA,n.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),i,o,f,b,s,a,c,u);return{signers:m,instructions:[x],instructionTypes:[ce.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:k}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,p]=[new B(e.programId),new B(e.id)],g;if(l)g=new B((await l(1))[0]);else{let I=tr.generate();m.push(I),g=I.publicKey}let f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=j(d,p,f),{publicKey:h}=j(d,p,b),{publicKey:w}=Ee(n.wallet,g,we),{publicKey:P}=dn(g),{publicKey:A}=Ne(d,g),{publicKey:k}=pt(d,p,i,o),x=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,g,w,P,k,y,h,A,n.tokenAccountA,n.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),i,o,f,b,u,s,a,c,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?Ue(d,p).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:k},instructions:[x],signers:m,instructionTypes:[ce.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h,w,P,A,k,x,I,N,O){let V=$([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),W("liquidity"),M("amountMaxA"),M("amountMaxB"),Xe("withMetadata"),se("optionBaseFlag"),Xe("baseFlag")]),he=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],ne=[{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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:It,isSigner:!1,isWritable:!1},{pubkey:Tt.programId,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:di,isSigner:!1,isWritable:!1},{pubkey:ht,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...he],Ae=Buffer.alloc(V.span);V.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:new pi(0),amountMaxA:x==="MintA"?I:N,amountMaxB:x==="MintA"?N:I,withMetadata:k==="create",baseFlag:x==="MintA",optionBaseFlag:1},Ae);let re=Buffer.from([...Ve.openPosition,...Ae]);return new _e({keys:ne,programId:e,data:re})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m,d=[];if(l)m=new B((await l(1))[0]);else{let I=tr.generate();d.push(I),m=I.publicKey}let[p,g]=[new B(e.programId),new B(e.id)],f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=j(p,g,f),{publicKey:h}=j(p,g,b),{publicKey:w}=Ee(n.wallet,m,we),{publicKey:P}=dn(m),{publicKey:A}=Ne(p,m),{publicKey:k}=pt(p,g,i,o),x=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,m,w,P,k,y,h,A,n.tokenAccountA,n.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(t.mintA.address),new B(t.mintB.address),i,o,f,b,s,a,c,u,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?Ue(p,g).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:k},instructions:[x],signers:d,instructionTypes:[ce.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=$([]),a=[{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:Tt.programId,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...Ve.closePosition,...c]);return new _e({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new B(e.programId),{publicKey:s}=Ee(n.wallet,i.nftMint,we),{publicKey:a}=Ne(o,i.nftMint),c=[];return c.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[ce.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h){let w=$([W("liquidity"),M("amountMaxA"),M("amountMaxB"),se("optionBaseFlag"),Xe("baseFlag")]),P=[...h?[{pubkey:h,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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],k=Buffer.alloc(w.span);w.encode({liquidity:f,amountMaxA:b,amountMaxB:y,optionBaseFlag:0,baseFlag:!1},k);let x=Buffer.from([...Ve.increaseLiquidity,...k]);return new _e({keys:A,programId:e,data:x})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[c,u]=[new B(e.programId),new B(e.id)],l=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=j(c,u,l),{publicKey:p}=j(c,u,m),{publicKey:g}=Ee(i.wallet,n.nftMint,we),{publicKey:f}=Ne(c,n.nftMint),{publicKey:b}=pt(c,u,n.tickLower,n.tickUpper),y=this.increasePositionFromLiquidityInstruction(c,i.wallet,g,f,u,b,d,p,i.tokenAccountA,i.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),o,s,a,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ue(c,u).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:b},signers:[],instructions:[y],instructionTypes:[ce.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[c,u]=[new B(e.programId),new B(e.id)],l=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=j(c,u,l),{publicKey:p}=j(c,u,m),{publicKey:g}=Ee(i.wallet,n.nftMint,we),{publicKey:f}=Ne(c,n.nftMint),{publicKey:b}=pt(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(c,i.wallet,g,f,u,b,d,p,i.tokenAccountA,i.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),o,s,a,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ue(c,u).publicKey:void 0)],signers:[],instructionTypes:[ce.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h){let w=$([W("liquidity"),M("amountMaxA"),M("amountMaxB"),se("optionBaseFlag"),Xe("baseFlag")]),P=[...h?[{pubkey:h,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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],k=Buffer.alloc(w.span);w.encode({liquidity:new pi(0),amountMaxA:f==="MintA"?b:y,amountMaxB:f==="MintA"?y:b,baseFlag:f==="MintA",optionBaseFlag:1},k);let x=Buffer.from([...Ve.increaseLiquidity,...k]);return new _e({keys:A,programId:e,data:x})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h,w){let P=$([W("liquidity"),M("amountMinA"),M("amountMinB")]),A=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...f.map(N=>[{pubkey:N.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:N.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:N.rewardMint,isSigner:!1,isWritable:!1}]).flat()],k=[{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:m,isSigner:!1,isWritable:!0},{pubkey:d,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:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],x=Buffer.alloc(P.span);P.encode({liquidity:b,amountMinA:y,amountMinB:h},x);let I=Buffer.from([...Ve.decreaseLiquidity,...x]);return new _e({keys:k,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new B(e.programId),new B(e.id)],m=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=j(u,l,m),{publicKey:g}=j(u,l,d),{publicKey:f}=Ee(i.wallet,n.nftMint,c),{publicKey:b}=Ne(u,n.nftMint),{publicKey:y}=pt(u,l,n.tickLower,n.tickUpper),h=[];for(let P=0;P<e.rewardDefaultInfos.length;P++)h.push({poolRewardVault:new B(t.rewardInfos[P].vault),ownerRewardVault:i.rewardAccounts[P],rewardMint:new B(e.rewardDefaultInfos[P].mint.address)});let w=[];return w.push(this.decreaseLiquidityInstruction(u,i.wallet,f,b,l,y,p,g,i.tokenAccountA,i.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),h,o,s,a,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ue(u,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:b,protocolPosition:y},signers:[],instructions:w,instructionTypes:[ce.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y){let h=$([M("amount"),M("otherAmountThreshold"),W("sqrtPriceLimitX64"),Xe("isBaseInput")]),w=[...y?[{pubkey:y,isSigner:!1,isWritable:!0}]:[],...m.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:d,isSigner:!1,isWritable:!0},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...w],A=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:b},A);let k=Buffer.from([...Ve.swap,...A]);return new _e({keys:P,programId:e,data:k})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new B(e.programId),new B(e.id)],[m,d]=[new B(t.vault.A),new B(t.vault.B)],[p,g]=[new B(e.mintA.address),new B(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(u,n.wallet,l,new B(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:d,f?d:m,f?p:g,f?g:p,c,m,o,s,a,!0,Ue(u,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[ce.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,c,u,l,m,d){let p=$([M("openTime"),M("endTime"),W("emissionsPerSecondX64")]),g=[{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:Tt.programId,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:be(l),endTime:be(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...Ve.initReward,...f]);return new _e({keys:g,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new B(e.programId),new B(e.id)],a=jr(o,s,i.mint).publicKey,c=_t(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new B(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:[ce.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,c,u,l,m,d){let p=$([se("rewardIndex"),W("emissionsPerSecondX64"),M("openTime"),M("endTime")]),g=[{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:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:d,openTime:be(l),endTime:be(m)},f);let b=Buffer.from([...Ve.setRewardEmissions,...f]);return new _e({keys:g,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new B(e.programId),new B(e.id)],a,c,u;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,c=new B(t.rewardInfos[d].vault),u=new B(t.rewardInfos[d].mint.address));(a===void 0||c===void 0)&&fi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=_t(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new B(e.config.id),n.tokenAccount,c,u,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:m,instructionTypes:[ce.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let c=$([se("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:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let m=Buffer.from([...Ve.collectReward,...l]);return new _e({keys:u,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new B(e.programId),new B(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,c=new B(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&fi.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:[ce.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new B(e.programId),new B(e.id)],[m,d]=[new B(t.vault.A),new B(t.vault.B)],[p,g]=[new B(e.mintA.address),new B(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(u,n.wallet,l,new B(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:g,f?g:p,c,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[ce.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import Le from"bn.js";var nr=class extends Et{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||G.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:c,computeBudgetConfig:u,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,g,f]=new Le(new G(i.address).toBuffer()).gt(new Le(new G(o.address).toBuffer()))?[o,i,new S(1).div(a)]:[i,o,a],b=E.priceToSqrtPriceX64(f,p.decimals,g.decimals),y=await pe.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:g,ammConfigId:s.id,initialPriceX64:b,startTime:c,forerunCreate:l});return d.addInstruction(y),d.addCustomComputeBudget(u),d.versionBuild({txVersion:m,extInfo:{address:Z(_({},y.address),{programId:t.toString(),id:y.address.poolId.toString(),mintA:p,mintB:g,openTime:c.toString(),vault:{A:y.address.mintAVault.toString(),B:y.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:_({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:y.address.poolId.toString(),mintA:p,mintB:g,feeRate:s.tradeFeeRate,openTime:c.toString(),programId:t.toString(),price:f.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:[]}},Gr),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:g}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,y=null,h=n.useSOLBalance&&e.mintA.address===J.toString(),w=n.useSOLBalance&&e.mintB.address===J.toString(),[P,A]=s==="MintA"?[a,c]:[c,a],{account:k,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new G(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||P.isZero()?{payer:this.scope.ownerPubKey,amount:P}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});k&&(b=k),f.addInstruction(x||{});let{account:I,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new G(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:w||A.isZero()?{payer:this.scope.ownerPubKey,amount:A}:void 0,skipCloseAccount:!w,notUseTokenAccount:w,associatedOnly:w?!1:u,checkCreateATAOwner:l});I&&(y=I),f.addInstruction(N||{}),(!b||!y)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let O=t||await this.getClmmPoolKeys(e.id),V=await pe.openPositionFromBaseInstructions({poolInfo:e,poolKeys:O,ownerInfo:Z(_({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:y}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(V),f.addCustomComputeBudget(p),f.versionBuild({txVersion:g,extInfo:V.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:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let g=this.createTxBuilder(),f=null,b=null,y=n.useSOLBalance&&e.mintA.address===J.toBase58(),h=n.useSOLBalance&&e.mintB.address===J.toBase58(),{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new G(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:y?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:u,checkCreateATAOwner:l});w&&(f=w),g.addInstruction(P||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new G(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});A&&(b=A),g.addInstruction(k||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let x=t||await this.getClmmPoolKeys(e.id),I=await pe.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:x,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:i,amountMaxB:o,withMetadata:m,getEphemeralSigners:p});return g.addInstruction(I),g.versionBuild({txVersion:d,extInfo:{address:I.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,g,f=a.useSOLBalance&&t.mintA.address===J.toString(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new G(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});y&&(p=y),d.addInstruction(h||{});let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new G(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});w&&(g=w),d.addInstruction(P||{}),!p&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getClmmPoolKeys(t.id),k=pe.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:A,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:g},liquidity:s,amountMaxA:i,amountMaxB:o});return d.addInstruction(k),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:k.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,g,f=a.useSOLBalance&&t.mintA.address===J.toString(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new G(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});y&&(p=y),d.addInstruction(h||{});let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new G(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});w&&(g=w),d.addInstruction(P||{}),!p&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getClmmPoolKeys(t.id),k=pe.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:A,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:g},base:i,baseAmount:o,otherAmountMax:s});return d.addInstruction(k),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:k.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let d=this.createTxBuilder(),p=i.useSOLBalance&&t.mintA.address===J.toString(),g=i.useSOLBalance&&t.mintB.address===J.toString(),f,b,{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new G(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:c,checkCreateATAOwner:u});f=y,h&&d.addInstruction(h);let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new G(t.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!g,associatedOnly:g?!1:c,checkCreateATAOwner:u});b=w,P&&d.addInstruction(P);let A=[];for(let N of t.rewardDefaultInfos){let O=i.useSOLBalance&&N.mint.address===J.toString(),V;if(N.mint.address===t.mintA.address)V=f;else if(N.mint.address===t.mintB.address)V=b;else{let{account:he,instructionParams:ne}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new G(N.mint.programId),mint:new G(N.mint.address),notUseTokenAccount:O,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!O,associatedOnly:O?!1:c,checkCreateATAOwner:u});V=he,ne&&d.addInstruction(ne)}A.push(V)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let k=await this.getClmmPoolKeys(t.id),x=await pe.decreaseLiquidityInstructions({poolInfo:t,poolKeys:k,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:A},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:x.instructions,instructionTypes:[ce.ClmmDecreasePosition]});let I=_({},x.address);if(i.closePosition){let N=await pe.closePositionInstructions({poolInfo:t,poolKeys:k,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:N.instructions,endInstructionTypes:N.instructionTypes}),I=_(_({},I),N.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=pe.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.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()===J.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new G(n.mint.address),mint:new G(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Le(new S(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:i,checkCreateATAOwner:o});d&&c.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),g=pe.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new G(n.mint.programId),mint:new G(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:D.decimalToX64(n.perSecond)}});return c.addInstruction(g),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:g.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let c=this.createTxBuilder(),u={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===J.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new G(l.mint.programId),mint:new G(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Le(new S(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});g&&c.addInstruction(g),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=pe.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new G(l.mint.programId),mint:new G(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:D.decimalToX64(l.perSecond)}});u=_(_({},u),b.address),c.addInstruction(b)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}async setReward({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.equals(J),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Le(new S(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:u?!1:i,checkCreateATAOwner:o});m&&c.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=pe.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:D.decimalToX64(n.perSecond)}});return c.addInstruction(p),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let c=this.createTxBuilder(),u={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===J.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new G(l.mint.programId),mint:new G(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Le(new S(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});p&&c.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id),f=pe.setRewardInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new G(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:D.decimalToX64(l.perSecond)}});c.addInstruction(f),u=_(_({},u),f.address)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),c=t.useSOLBalance&&n.equals(J),{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new G(s.mint.programId),mint:n,notUseTokenAccount:c,owner:this.scope.ownerPubKey,skipCloseAccount:!c,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:c?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),u||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=pe.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:u},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let c of n){let u=e.rewardDefaultInfos.find(f=>f.mint.address===c.toString());if(!u){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let l=t.useSOLBalance&&c.equals(J),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new G(u.mint.programId),mint:c,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),g=pe.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:c});s.addInstruction(g),a=_(_({},a),g.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,txVersion:l}){let m=this.createTxBuilder(),d=s.useSOLBalance&&e.mintA.address===J.toBase58(),p=s.useSOLBalance&&e.mintB.address===J.toBase58(),g;!o||o.equals(new S(0))?g=t.toString()===e.mintA.address?rt.add(new Le(1)):it.sub(new Le(1)):g=E.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new G(e.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:c,checkCreateATAOwner:u});f=h,w&&m.addInstruction(w)}let b;if(!b){let{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new G(e.mintB.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:c,checkCreateATAOwner:u});b=h,w&&m.addInstruction(w)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id);return m.addInstruction(pe.makeSwapBaseInInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new G(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:g,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:c}){let u={};for(let m of this.scope.account.tokenAccountRawInfos)i?Ee(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(u[m.accountInfo.mint.toString()]=m.pubkey):u[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(w=>!w.liquidity.isZero()||w.rewardInfos.find(P=>!P.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===J.toString(),g=n.useSOLBalance&&d.mintB.address===J.toString(),f=u[d.mintA.address];if(!f){let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new G(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:o});f=w,P&&l.addInstruction(P)}let b=u[d.mintB.address];if(!b){let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new G(d.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,skipCloseAccount:!g,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:g?!1:i,checkCreateATAOwner:o});b=w,P&&l.addInstruction(P)}u[d.mintA.address]=f,u[d.mintB.address]=b;let y=[];for(let w of d.rewardDefaultInfos){let P=n.useSOLBalance&&w.mint.address===J.toString(),A=u[w.mint.address];if(!A){let{account:k,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new G(w.mint.programId),mint:new G(w.mint.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:P?!1:i});A=k,x&&l.addInstruction(x)}u[w.mint.address]=A,y.push(A)}let h=await this.getClmmPoolKeys(d.id);for(let w of t[m.id]){let P=pe.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:w,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:y},liquidity:new Le(0),amountMinA:new Le(0),amountMinB:new Le(0)});l.addInstruction(P)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:c}):l.sizeCheckBuild({computeBudgetConfig:c})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(_t(e).publicKey);return t?ri.decode(t.data).whitelistMints.filter(i=>!i.equals(G.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new Le(1))).map(s=>Ne(new G(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=fn.decode(s.data);o.push(a)}),o}};export{Wo as AMM_CONFIG_SEED,wm as AmmConfigLayout,_r as BIT_PRECISION,nr as Clmm,pe as ClmmInstrument,Yn as EXTENSION_TICKARRAY_BITMAP_SIZE,ln as FEE_RATE_DENOMINATOR,ls as FETCH_TICKARRAY_COUNT,qo as Fee,Vr as LOG_B_2_X32,qr as LOG_B_P_ERR_MARGIN_LOWER_X64,Wr as LOG_B_P_ERR_MARGIN_UPPER_X64,U as LiquidityMath,it as MAX_SQRT_PRICE_X64,Be as MAX_TICK,rt as MIN_SQRT_PRICE_X64,ke as MIN_TICK,D as MathUtil,qn as MaxU64,vr as MaxUint128,je as NEGATIVE_ONE,Ge as ONE,zo as OPERATION_SEED,jn as ObservationInfoLayout,ss as ObservationLayout,ri as OperationLayout,Xo as POOL_REWARD_VAULT_SEED,Go as POOL_SEED,Yo as POOL_TICK_ARRAY_BITMAP_SEED,Uo as POOL_VAULT_SEED,zr as POSITION_SEED,ni as PoolInfoLayout,xe as PoolUtils,fn as PositionInfoLayout,cs as PositionRewardInfoLayout,Gt as PositionUtils,hm as ProtocolPositionLayout,un as Q128,Ke as Q64,as as RewardInfo,E as SqrtPriceMath,bt as SwapMath,ft as TICK_ARRAY_BITMAP_SIZE,Ho as TICK_ARRAY_SEED,de as TICK_ARRAY_SIZE,nl as TICK_SPACINGS,Qe as TickArrayBitmap,ii as TickArrayBitmapExtensionLayout,qt as TickArrayBitmapExtensionUtils,Wt as TickArrayLayout,us as TickLayout,gt as TickMath,X as TickQuery,C as TickUtils,Dt as U64Resolution,il as U64_IGNORE_RANGE,H as ZERO,sd as getLiquidityFromAmounts,ml as getPdaAmmConfigId,Ue as getPdaExBitmapAccount,dn as getPdaMetadataKey,_t as getPdaOperationAccount,Ne as getPdaPersonalPositionAddress,Yr as getPdaPoolId,jr as getPdaPoolRewardVaulId,Un as getPdaPoolVaultId,pt as getPdaProtocolPositionAddress,j as getPdaTickArrayAddress,sl as i16ToBytes,mn as i32ToBytes,vt as isZero,Wn as leadingZeros,Hr as leastSignificantBit,rl as mockCreatePoolInfo,Gr as mockV3CreatePoolInfo,Xr as mostSignificantBit,Gn as trailingZeros,Ur as u16ToBytes,al as u32ToBytes};
|
|
1
|
+
var gi=Object.defineProperty,bi=Object.defineProperties;var yi=Object.getOwnPropertyDescriptors;var Ut=Object.getOwnPropertySymbols;var sr=Object.prototype.hasOwnProperty,ar=Object.prototype.propertyIsEnumerable;var or=(r,e,t)=>e in r?gi(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,_=(r,e)=>{for(var t in e||(e={}))sr.call(e,t)&&or(r,t,e[t]);if(Ut)for(var t of Ut(e))ar.call(e,t)&&or(r,t,e[t]);return r},j=(r,e)=>bi(r,yi(e));var Xt=(r,e)=>{var t={};for(var n in r)sr.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Ut)for(var n of Ut(r))e.indexOf(n)<0&&ar.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as W}from"@solana/web3.js";var yt=9e15,tt=1e9,hn="0123456789abcdef",zt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Yt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",An={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-yt,maxE:yt,crypto:!1},mr,ze,v=!0,Zt="[DecimalError] ",et=Zt+"Invalid argument: ",dr=Zt+"Precision limit exceeded",pr=Zt+"crypto unavailable",fr="[object Decimal]",Pe=Math.floor,le=Math.pow,wi=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,hi=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ai=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,gr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Me=1e7,R=7,Pi=9007199254740991,Ti=zt.length-1,Pn=Yt.length-1,T={toStringTag:fr};T.absoluteValue=T.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),K(r)};T.ceil=function(){return K(new this.constructor(this),this.e+1,2)};T.clampedTo=T.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(et+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};T.comparedTo=T.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};T.cosine=T.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())+R,n.rounding=1,t=ki(n,Ar(n,t)),n.precision=r,n.rounding=e,K(ze==2||ze==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};T.cubeRoot=T.cbrt=function(){var r,e,t,n,i,o,s,a,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(v=!1,o=l.s*le(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=ge(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=le(t,1/3),r=Pe((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 m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=Q(u.plus(l).times(a),u.plus(c),s+2,1),ge(a.d).slice(0,s)===(t=ge(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(K(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")&&(K(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return v=!0,K(n,r,m.rounding,e)};T.decimalPlaces=T.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Pe(this.e/R))*R,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};T.dividedBy=T.div=function(r){return Q(this,new this.constructor(r))};T.dividedToIntegerBy=T.divToInt=function(r){var e=this,t=e.constructor;return K(Q(e,new t(r),0,1,1),t.precision,t.rounding)};T.equals=T.eq=function(r){return this.cmp(r)===0};T.floor=function(){return K(new this.constructor(this),this.e+1,3)};T.greaterThan=T.gt=function(r){return this.cmp(r)>0};T.greaterThanOrEqualTo=T.gte=function(r){var e=this.cmp(r);return e==1||e===0};T.hyperbolicCosine=T.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/$t(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=wt(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 K(o,s.precision=t,s.rounding=n,!0)};T.hyperbolicSine=T.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=wt(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/$t(5,r)),i=wt(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,K(i,e,t,!0)};T.hyperbolicTangent=T.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,Q(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};T.inverseCosine=T.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()?Fe(t,i,o):new t(0):new t(NaN):e.isZero()?Fe(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Fe(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};T.inverseHyperbolicCosine=T.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,v=!1,t=t.times(t).minus(1).sqrt().plus(t),v=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};T.inverseHyperbolicSine=T.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,v=!1,t=t.times(t).plus(1).sqrt().plus(t),v=!0,n.precision=r,n.rounding=e,t.ln())};T.inverseHyperbolicTangent=T.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?K(new o(i),r,e,!0):(o.precision=t=n-i.e,i=Q(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)};T.inverseSine=T.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=Fe(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)))};T.inverseTangent=T.atan=function(){var r,e,t,n,i,o,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&m+4<=Pn)return s=Fe(l,m+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=Pn)return s=Fe(l,m+4,d).times(.5),s.s=u.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/R+2|0),r=t;r;--r)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(v=!1,e=Math.ceil(a/R),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)),v=!0,K(s,l.precision=m,l.rounding=d,!0)};T.isFinite=function(){return!!this.d};T.isInteger=T.isInt=function(){return!!this.d&&Pe(this.e/R)>this.d.length-2};T.isNaN=function(){return!this.s};T.isNegative=T.isNeg=function(){return this.s<0};T.isPositive=T.isPos=function(){return this.s>0};T.isZero=function(){return!!this.d&&this.d[0]===0};T.lessThan=T.lt=function(r){return this.cmp(r)<0};T.lessThanOrEqualTo=T.lte=function(r){return this.cmp(r)<1};T.logarithm=T.log=function(r){var e,t,n,i,o,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding,p=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(v=!1,a=m+p,s=Je(u,a),n=e?jt(l,a+10):Je(r,a),c=Q(s,n,a,1),kt(c.d,i=m,d))do if(a+=10,s=Je(u,a),n=e?jt(l,a+10):Je(r,a),c=Q(s,n,a,1),!o){+ge(c.d).slice(i+1,i+15)+1==1e14&&(c=K(c,m+1,0));break}while(kt(c.d,i+=10,d));return v=!0,K(c,m,d)};T.minus=T.sub=function(r){var e,t,n,i,o,s,a,c,u,l,m,d,p=this,g=p.constructor;if(r=new g(r),!p.d||!r.d)return!p.s||!r.s?r=new g(NaN):p.d?r.s=-r.s:r=new g(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(u=p.d,d=r.d,a=g.precision,c=g.rounding,!u[0]||!d[0]){if(d[0])r.s=-r.s;else if(u[0])r=new g(p);else return new g(c===3?-0:0);return v?K(r,a,c):r}if(t=Pe(r.e/R),l=Pe(p.e/R),u=u.slice(),o=l-t,o){for(m=o<0,m?(e=u,o=-o,s=d.length):(e=d,t=l,s=u.length),n=Math.max(Math.ceil(a/R),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=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(u[n]!=d[n]){m=u[n]<d[n];break}o=0}for(m&&(e=u,u=d,d=e,r.s=-r.s),s=u.length,n=d.length-s;n>0;--n)u[s++]=0;for(n=d.length;n>o;){if(u[--n]<d[n]){for(i=n;i&&u[--i]===0;)u[i]=Me-1;--u[i],u[n]+=Me}u[n]-=d[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(r.d=u,r.e=Qt(u,t),v?K(r,a,c):r):new g(c===3?-0:0)};T.modulo=T.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]?K(new n(t),n.precision,n.rounding):(v=!1,n.modulo==9?(e=Q(t,r.abs(),0,3,1),e.s*=r.s):e=Q(t,r,0,n.modulo,1),e=e.times(r),v=!0,t.minus(e))};T.naturalExponential=T.exp=function(){return Tn(this)};T.naturalLogarithm=T.ln=function(){return Je(this)};T.negated=T.neg=function(){var r=new this.constructor(this);return r.s=-r.s,K(r)};T.plus=T.add=function(r){var e,t,n,i,o,s,a,c,u,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(u=m.d,l=r.d,a=d.precision,c=d.rounding,!u[0]||!l[0])return l[0]||(r=new d(m)),v?K(r,a,c):r;if(o=Pe(m.e/R),n=Pe(r.e/R),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/R),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)/Me|0,u[i]%=Me;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return r.d=u,r.e=Qt(u,n),v?K(r,a,c):r};T.precision=T.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(et+r);return t.d?(e=br(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};T.round=function(){var r=this,e=r.constructor;return K(new e(r),r.e+1,e.rounding)};T.sine=T.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())+R,n.rounding=1,t=Bi(n,Ar(n,t)),n.precision=r,n.rounding=e,K(ze>2?t.neg():t,r,e,!0)):new n(NaN)};T.squareRoot=T.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(v=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=ge(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=Pe((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(Q(s,o,t+2,1)).times(.5),ge(o.d).slice(0,t)===(e=ge(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(K(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")&&(K(n,c+1,1),r=!n.times(n).eq(s));break}return v=!0,K(n,c,l.rounding,r)};T.tangent=T.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=Q(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,K(ze==2||ze==4?t.neg():t,r,e,!0)):new n(NaN)};T.times=T.mul=function(r){var e,t,n,i,o,s,a,c,u,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Pe(l.e/R)+Pe(r.e/R),c=d.length,u=p.length,c<u&&(o=d,d=p,p=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]+p[n]*d[i-n-1]+e,o[i--]=a%Me|0,e=a/Me|0;o[i]=(o[i]+e)%Me|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Qt(o,t),v?K(r,m.precision,m.rounding):r};T.toBinary=function(r,e){return xn(this,2,r,e)};T.toDecimalPlaces=T.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Ie(r,0,tt),e===void 0?e=n.rounding:Ie(e,0,8),K(t,r+t.e+1,e))};T.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=qe(n,!0):(Ie(r,0,tt),e===void 0?e=i.rounding:Ie(e,0,8),n=K(new i(n),r+1,e),t=qe(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};T.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=qe(i):(Ie(r,0,tt),e===void 0?e=o.rounding:Ie(e,0,8),n=K(new o(i),r+i.e+1,e),t=qe(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};T.toFraction=function(r){var e,t,n,i,o,s,a,c,u,l,m,d,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),o=e.e=br(g)-p.e-1,s=o%R,e.d[0]=le(10,s<0?R+s:s),r==null)r=o>0?e:u;else{if(a=new f(r),!a.isInt()||a.lt(u))throw Error(et+a);r=a.gt(e)?o>0?e:u:a}for(v=!1,a=new f(ge(g)),l=f.precision,f.precision=o=g.length*R*2;m=Q(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=u,u=c.plus(m.times(i)),c=i,i=e,e=a.minus(m.times(i)),a=i;return i=Q(r.minus(t),n,0,1,1),c=c.plus(i.times(u)),t=t.plus(i.times(n)),c.s=u.s=p.s,d=Q(u,n,o,1).minus(p).abs().cmp(Q(c,t,o,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=l,v=!0,d};T.toHexadecimal=T.toHex=function(r,e){return xn(this,16,r,e)};T.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:Ie(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]?(v=!1,t=Q(t,r,0,e,1).times(r),v=!0,K(t)):(r.s=t.s,t=r),t};T.toNumber=function(){return+this};T.toOctal=function(r,e){return xn(this,8,r,e)};T.toPower=T.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(le(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,r.eq(1))return K(a,n,o);if(e=Pe(r.e/R),e>=r.d.length-1&&(t=u<0?-u:u)<=Pi)return i=yr(c,a,t,n),r.s<0?new c(1).div(i):K(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=le(+a,u),e=t==0||!isFinite(t)?Pe(u*(Math.log("0."+ge(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):(v=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Tn(r.times(Je(a,n+t)),n),i.d&&(i=K(i,n+5,1),kt(i.d,n,o)&&(e=n+10,i=K(Tn(r.times(Je(a,e+t)),e),e+5,1),+ge(i.d).slice(n+1,n+15)+1==1e14&&(i=K(i,n+1,0)))),i.s=s,v=!0,c.rounding=o,K(i,n,o))};T.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=qe(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ie(r,1,tt),e===void 0?e=i.rounding:Ie(e,0,8),n=K(new i(n),r,e),t=qe(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};T.toSignificantDigits=T.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Ie(r,1,tt),e===void 0?e=n.rounding:Ie(e,0,8)),K(new n(t),r,e)};T.toString=function(){var r=this,e=r.constructor,t=qe(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};T.truncated=T.trunc=function(){return K(new this.constructor(this),this.e+1,1)};T.valueOf=T.toJSON=function(){var r=this,e=r.constructor,t=qe(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function ge(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=R-n.length,t&&(o+=$e(t)),o+=n;s=r[e],n=s+"",t=R-n.length,t&&(o+=$e(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ie(r,e,t){if(r!==~~r||r<e||r>t)throw Error(et+r)}function kt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=R,i=0):(i=Math.ceil((e+1)/R),e%=R),o=le(10,R-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)==le(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)==le(10,e-3)-1,s}function Ht(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]+=hn.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 ki(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/$t(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=wt(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 Q=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,m,d,p,g,f,b,y,h,w,P,A,k,x,I,N,E,V,he,ne=n.constructor,Ae=n.s==i.s?1:-1,re=n.d,Y=i.d;if(!re||!re[0]||!Y||!Y[0])return new ne(!n.s||!i.s||(re?Y&&re[0]==Y[0]:!Y)?NaN:re&&re[0]==0||!Y?Ae*0:Ae/0);for(c?(p=1,l=n.e-i.e):(c=Me,p=R,l=Pe(n.e/p)-Pe(i.e/p)),V=Y.length,N=re.length,y=new ne(Ae),h=y.d=[],m=0;Y[m]==(re[m]||0);m++);if(Y[m]>(re[m]||0)&&l--,o==null?(k=o=ne.precision,s=ne.rounding):a?k=o+(n.e-i.e)+1:k=o,k<0)h.push(1),g=!0;else{if(k=k/p+2|0,m=0,V==1){for(d=0,Y=Y[0],k++;(m<N||d)&&k--;m++)x=d*c+(re[m]||0),h[m]=x/Y|0,d=x%Y|0;g=d||m<N}else{for(d=c/(Y[0]+1)|0,d>1&&(Y=r(Y,d,c),re=r(re,d,c),V=Y.length,N=re.length),I=V,w=re.slice(0,V),P=w.length;P<V;)w[P++]=0;he=Y.slice(),he.unshift(0),E=Y[0],Y[1]>=c/2&&++E;do d=0,u=e(Y,w,V,P),u<0?(A=w[0],V!=P&&(A=A*c+(w[1]||0)),d=A/E|0,d>1?(d>=c&&(d=c-1),f=r(Y,d,c),b=f.length,P=w.length,u=e(f,w,b,P),u==1&&(d--,t(f,V<b?he:Y,b,c))):(d==0&&(u=d=1),f=Y.slice()),b=f.length,b<P&&f.unshift(0),t(w,f,P,c),u==-1&&(P=w.length,u=e(Y,w,V,P),u<1&&(d++,t(w,V<P?he:Y,P,c))),P=w.length):u===0&&(d++,w=[0]),h[m++]=d,u&&w[0]?w[P++]=re[I]||0:(w=[re[I]],P=1);while((I++<N||w[0]!==void 0)&&k--);g=w[0]!==void 0}h[0]||h.shift()}if(p==1)y.e=l,mr=g;else{for(m=1,d=h[0];d>=10;d/=10)m++;y.e=m+l*p-1,K(y,a?o+y.e+1:o,s,g)}return y}}();function K(r,e,t,n){var i,o,s,a,c,u,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=R,s=e,l=m[d=0],c=l/le(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/R),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=c=0,i=1,o%=R,s=o-R+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=R,s=o-R+i,c=s<0?0:l/le(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%le(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/le(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,u?(e-=r.e+1,m[0]=le(10,(R-e%R)%R),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=le(10,R-o),m[d]=s>0?(l/le(10,i-s)%le(10,s)|0)*a:0),u)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==Me&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=Me)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return v&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function qe(r,e,t){if(!r.isFinite())return hr(r);var n,i=r.e,o=ge(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+$e(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+$e(-i-1)+o,t&&(n=t-s)>0&&(o+=$e(n))):i>=s?(o+=$e(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+$e(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=$e(n))),o}function Qt(r,e){var t=r[0];for(e*=R;t>=10;t/=10)e++;return e}function jt(r,e,t){if(e>Ti)throw v=!0,t&&(r.precision=t),Error(dr);return K(new r(zt),e,1,!0)}function Fe(r,e,t){if(e>Pn)throw Error(dr);return K(new r(Yt),e,t,!0)}function br(r){var e=r.length-1,t=e*R+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 $e(r){for(var e="";r--;)e+="0";return e}function yr(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/R+4);for(v=!1;;){if(t%2&&(o=o.times(e),ur(o.d,s)&&(i=!0)),t=Pe(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ur(e.d,s)}return v=!0,o}function cr(r){return r.d[r.d.length-1]&1}function wr(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 Tn(r,e){var t,n,i,o,s,a,c,u=0,l=0,m=0,d=r.constructor,p=d.rounding,g=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(v=!1,c=g):c=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(le(2,m))/Math.LN10*2+5|0,c+=n,t=o=s=new d(1),d.precision=c;;){if(o=K(o.times(r),c,1),t=t.times(++l),a=s.plus(Q(o,t,c,1)),ge(a.d).slice(0,c)===ge(s.d).slice(0,c)){for(i=m;i--;)s=K(s.times(s),c,1);if(e==null)if(u<3&&kt(s.d,c-n,p,u))d.precision=c+=10,t=o=a=new d(1),l=0,u++;else return K(s,d.precision=g,p,v=!0);else return d.precision=g,s}s=a}}function Je(r,e){var t,n,i,o,s,a,c,u,l,m,d,p=1,g=10,f=r,b=f.d,y=f.constructor,h=y.rounding,w=y.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new y(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(v=!1,l=w):l=e,y.precision=l+=g,t=ge(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=ge(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new y("0."+t),o++):f=new y(n+"."+t.slice(1))}else return u=jt(y,l+2,w).times(o+""),f=Je(new y(n+"."+t.slice(1)),l-g).plus(u),y.precision=w,e==null?K(f,w,h,v=!0):f;for(m=f,c=s=f=Q(f.minus(1),f.plus(1),l,1),d=K(f.times(f),l,1),i=3;;){if(s=K(s.times(d),l,1),u=c.plus(Q(s,new y(i),l,1)),ge(u.d).slice(0,l)===ge(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(jt(y,l+2,w).times(o+""))),c=Q(c,new y(p),l,1),e==null)if(kt(c.d,l-g,h,a))y.precision=l+=g,u=s=f=Q(m.minus(1),m.plus(1),l,1),d=K(f.times(f),l,1),i=a=1;else return K(c,y.precision=w,h,v=!0);else return y.precision=w,c;c=u,i+=2}}function hr(r){return String(r.s*r.s/0)}function kn(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)%R,t<0&&(n+=R),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=R;n<i;)r.d.push(+e.slice(n,n+=R));e=e.slice(n),n=R-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),v&&(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 xi(r,e){var t,n,i,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),gr.test(e))return kn(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(hi.test(e))t=16,e=e.toLowerCase();else if(wi.test(e))t=2;else if(Ai.test(e))t=8;else throw Error(et+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=yr(n,new n(t),o,o*2)),u=Ht(e,t,Me),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(r.s*0):(r.e=Qt(u,l),r.d=u,v=!1,s&&(r=Q(r,i,a*4)),c&&(r=r.times(Math.abs(c)<54?le(2,c):xt.pow(2,c))),v=!0,r)}function Bi(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:wt(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/$t(5,t)),e=wt(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 wt(r,e,t,n,i){var o,s,a,c,u=1,l=r.precision,m=Math.ceil(l/R);for(v=!1,c=t.times(t),a=new r(n);;){if(s=Q(a.times(c),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=Q(s.times(c),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return v=!0,s.d.length=m+1,s}function $t(r,e){for(var t=r;--e;)t*=r;return t}function Ar(r,e){var t,n=e.s<0,i=Fe(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return ze=n?4:1,e;if(t=e.divToInt(i),t.isZero())ze=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return ze=cr(t)?n?2:3:n?4:1,e;ze=cr(t)?n?1:4:n?3:2}return e.minus(i).abs()}function xn(r,e,t,n){var i,o,s,a,c,u,l,m,d,p=r.constructor,g=t!==void 0;if(g?(Ie(t,1,tt),n===void 0?n=p.rounding:Ie(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=hr(r);else{for(l=qe(r),s=l.indexOf("."),g?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=Ht(qe(d),10,i),d.e=d.d.length),m=Ht(l,10,i),o=c=m.length;m[--c]==0;)m.pop();if(!m[0])l=g?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=Q(r,d,t,n,0,i),m=r.d,o=r.e,u=mr),s=m[t],a=i/2,u=u||m[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&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,u)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=hn.charAt(m[s]);if(g){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=Ht(l,i,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=hn.charAt(m[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 ur(r,e){if(r.length>e)return r.length=e,!0}function Ii(r){return new this(r).abs()}function Si(r){return new this(r).acos()}function Ci(r){return new this(r).acosh()}function Ki(r,e){return new this(r).plus(e)}function Ni(r){return new this(r).asin()}function Ri(r){return new this(r).asinh()}function Li(r){return new this(r).atan()}function Fi(r){return new this(r).atanh()}function Mi(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=Fe(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Fe(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Fe(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(Q(r,e,o,1)),e=Fe(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(Q(r,e,o,1)),t}function Oi(r){return new this(r).cbrt()}function Ei(r){return K(r=new this(r),r.e+1,2)}function Di(r,e,t){return new this(r).clamp(e,t)}function vi(r){if(!r||typeof r!="object")throw Error(Zt+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,tt,"rounding",0,8,"toExpNeg",-yt,0,"toExpPos",0,yt,"maxE",0,yt,"minE",-yt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=An[t]),(n=r[t])!==void 0)if(Pe(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(et+t+": "+n);if(t="crypto",i&&(this[t]=An[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(pr);else this[t]=!1;else throw Error(et+t+": "+n);return this}function _i(r){return new this(r).cos()}function Vi(r){return new this(r).cosh()}function Pr(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,lr(o)){u.s=o.s,v?!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++;v?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 kn(u,o.toString())}else if(c!=="string")throw Error(et+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),gr.test(o)?kn(u,o):xi(u,o)}if(i.prototype=T,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=vi,i.clone=Pr,i.isDecimal=lr,i.abs=Ii,i.acos=Si,i.acosh=Ci,i.add=Ki,i.asin=Ni,i.asinh=Ri,i.atan=Li,i.atanh=Fi,i.atan2=Mi,i.cbrt=Oi,i.ceil=Ei,i.clamp=Di,i.cos=_i,i.cosh=Vi,i.div=qi,i.exp=Wi,i.floor=Gi,i.hypot=Ui,i.ln=Xi,i.log=Hi,i.log10=Yi,i.log2=zi,i.max=ji,i.min=Zi,i.mod=Qi,i.mul=$i,i.pow=Ji,i.random=eo,i.round=to,i.sign=no,i.sin=ro,i.sinh=io,i.sqrt=oo,i.sub=so,i.sum=ao,i.tan=co,i.tanh=uo,i.trunc=lo,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 qi(r,e){return new this(r).div(e)}function Wi(r){return new this(r).exp()}function Gi(r){return K(r=new this(r),r.e+1,3)}function Ui(){var r,e,t=new this(0);for(v=!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 v=!0,new this(1/0);t=e}return v=!0,t.sqrt()}function lr(r){return r instanceof xt||r&&r.toStringTag===fr||!1}function Xi(r){return new this(r).ln()}function Hi(r,e){return new this(r).log(e)}function zi(r){return new this(r).log(2)}function Yi(r){return new this(r).log(10)}function ji(){return wr(this,arguments,"lt")}function Zi(){return wr(this,arguments,"gt")}function Qi(r,e){return new this(r).mod(e)}function $i(r,e){return new this(r).mul(e)}function Ji(r,e){return new this(r).pow(e)}function eo(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Ie(r,1,tt),n=Math.ceil(r/R),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(pr);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=R,n&&r&&(i=le(10,R-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-=R)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<R&&(t-=R-n)}return s.e=t,s.d=a,s}function to(r){return K(r=new this(r),r.e+1,this.rounding)}function no(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function ro(r){return new this(r).sin()}function io(r){return new this(r).sinh()}function oo(r){return new this(r).sqrt()}function so(r,e){return new this(r).sub(e)}function ao(){var r=0,e=arguments,t=new this(e[r]);for(v=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return v=!0,K(t,this.precision,this.rounding)}function co(r){return new this(r).tan()}function uo(r){return new this(r).tanh()}function lo(r){return K(r=new this(r),r.e+1,1)}T[Symbol.for("nodejs.util.inspect.custom")]=T.toString;T[Symbol.toStringTag]="Decimal";var xt=T.constructor=Pr(An);zt=new xt(zt);Yt=new xt(Yt);var S=xt;import{get as Tr,set as mo}from"lodash";import xr from"dayjs";import po from"dayjs/plugin/utc";xr.extend(po);var Bn=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 xr().utc().format("YYYY/MM/DD HH:mm:ss UTC")}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}},kr={},fo={};function me(r){let e=Tr(kr,r);if(!e){let t=Tr(fo,r);e=new Bn({name:r,logLevel:t}),mo(kr,r,e)}return e}import{PublicKey as yc}from"@solana/web3.js";import hc from"bn.js";import Co from"big.js";import rn from"bn.js";import Se from"bn.js";import{PublicKey as Kn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as go}from"@solana/spl-token";import{PublicKey as ee,SystemProgram as Br,SYSVAR_RENT_PUBKEY as bo}from"@solana/web3.js";function In({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Rs=[In({pubkey:go,isWritable:!1}),In({pubkey:Br.programId,isWritable:!1}),In({pubkey:bo,isWritable:!1})];function Sn({publicKey:r,transformSol:e}){let t=Ir(r.toString());if(t instanceof ee)return e&&t.equals(Bt)?J:t;if(e&&t.toString()===Bt.toBase58())return J;if(typeof t=="string"){if(t===ee.default.toBase58())return ee.default;try{return new ee(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ir(r){try{return new ee(r)}catch{return r}}var Jt=new ee("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ls=new ee("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),It=new ee("SysvarRent111111111111111111111111111111111"),Fs=new ee("SysvarC1ock11111111111111111111111111111111"),ht=new ee("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ms=new ee("Sysvar1nstructions1111111111111111111111111"),Os=Br.programId,Es=new ee("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ds=new ee("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),vs=new ee("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),_s=new ee("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Vs=new ee("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),qs=new ee("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ws=new ee("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Gs=new ee("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Us=new ee("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Xs=new ee("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Hs=new ee("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new ee("So11111111111111111111111111111111111111112"),Bt=ee.default;function Cn(r){return Sn({publicKey:r,transformSol:!0})}import{PublicKey as yo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Sr}from"@solana/spl-token";var Cr={chainId:101,address:yo.default.toBase58(),programId:Sr.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ut={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Sr.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var Nn=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Bt.toBase58()||e instanceof Kn&&Bt.equals(e)){this.decimals=ut.decimals,this.symbol=ut.symbol,this.name=ut.name,this.mint=new Kn(ut.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?Kn.default:Sn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ye=Nn;Ye.WSOL=new Nn(j(_({},ut),{mint:ut.address}));import tn from"big.js";import Ao from"bn.js";import Po from"decimal.js-light";import wo from"toformat";var ho=wo,St=ho;var en=me("module/fraction"),Rn=St(tn),Ct=St(Po),To={[0]:Ct.ROUND_DOWN,[1]:Ct.ROUND_HALF_UP,[2]:Ct.ROUND_UP},ko={[0]:tn.roundDown,[1]:tn.roundHalfUp,[2]:tn.roundUp},z=class{constructor(e,t=new Ao(1)){this.numerator=be(e),this.denominator=be(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new z(this.denominator,this.numerator)}add(e){let t=e instanceof z?e:new z(be(e));return this.denominator.eq(t.denominator)?new z(this.numerator.add(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof z?e:new z(be(e));return this.denominator.eq(t.denominator)?new z(this.numerator.sub(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof z?e:new z(be(e));return new z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof z?e:new z(be(e));return new z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||en.logWithError(`${e} is not an integer.`),e<=0&&en.logWithError(`${e} is not positive.`),Ct.set({precision:e+1,rounding:To[n]});let i=new Ct(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)||en.logWithError(`${e} is not an integer.`),e<0&&en.logWithError(`${e} is negative.`),Rn.DP=e,Rn.RM=ko[n]||1,new Rn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Bo=me("Raydium_price"),Oe=class extends z{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new z(Ln(n.decimals),Ln(i.decimals))}get raw(){return new z(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Oe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Bo.logWithError("mul token not equals");let n=super.mul(t);return new Oe({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Fn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},nn=Fn;nn.SOL=new Fn(Cr);import Io from"bn.js";var Kr=new z(new Io(100)),lt=class extends z{toSignificant(e=5,t,n){return this.mul(Kr).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Kr).toFixed(e,t,n)}};var So=new Se(0),Wa=new Se(1),Ga=new Se(2),Ua=new Se(3),Xa=new Se(5),Mn=new Se(10),Ha=new Se(100),za=new Se(1e3),Ya=new Se(1e4),Nr=9007199254740991;function be(r){let e=me("Raydium_parseBigNumberish");if(r instanceof Se)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Se(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Nr||r<=-Nr)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Se(String(r))):typeof r=="bigint"?new Se(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Se(0))}function Ln(r){return Mn.pow(be(r))}var Ko=me("Raydium_amount"),Rr=St(Co);function No(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")):Ko.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Te=class extends z{constructor(t,n,i=!0,o){let s=new rn(0),a=Mn.pow(new rn(t.decimals));if(i)s=be(n);else{let c=new rn(0),u=new rn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=No(n.toString(),t.decimals);c=be(l),u=be(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=me(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 Te(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Te(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 Rr.DP=this.token.decimals,new Rr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Rt,sendAndConfirmTransaction as _n,Transaction as Lt,TransactionMessage as Ft,VersionedTransaction as Mt}from"@solana/web3.js";import vo from"axios";var ce={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",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",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"};import{PublicKey as Ro,ComputeBudgetProgram as Lr,Transaction as Mr,TransactionMessage as Lo,Keypair as Or,VersionedTransaction as Er}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fo}from"@solana/spl-token";var Fr=me("Raydium_txUtil"),Dr=1644;function on(r){let e=[],t=[];return r.microLamports&&(e.push(Lr.setComputeUnitPrice({microLamports:r.microLamports})),t.push(ce.SetComputeUnitPrice)),r.units&&(e.push(Lr.setComputeUnitLimit({units:r.units})),t.push(ce.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function At(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function Mo(r,e){r.length<1&&Fr.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Fr.logWithError(`no signers provided:, ${e.toString()}`);let t=new Mr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Dr}catch{return!1}}function Ce(r,e){let[t,n]=Ro.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Kt({instructions:r,payer:e,signers:t}){return Mo(r,[e,...t])}function Nt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Or.generate().publicKey.toString()}){let o=new Lo({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Er(o).serialize()).toString("base64").length<Dr}catch{return!1}}var Oo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function mt(r){let e=[];return r.forEach(t=>{t instanceof Mr&&(t.recentBlockhash||(t.recentBlockhash=Fo.toBase58()),t.feePayer||(t.feePayer=Or.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Er&&(n=Oo(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as vr,AddressLookupTableAccount as sn}from"@solana/web3.js";import{PublicKey as Eo}from"@solana/web3.js";import{getTransferFeeConfig as vc,unpackMint as _c}from"@solana/spl-token";var On=me("Raydium_accountInfo_util");async function nt(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=_({batchRequest:!1},t),o=En(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(d=>d.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),c=En(a,10);s=(await(await Promise.all(c.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&On.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:d,executable:p,lamports:g,owner:f,rentEpoch:b}=m;return d.length!==2&&d[1]!=="base64"&&On.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:g,owner:new Eo(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&On.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Dn(r,e,t){let n=await nt(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>j(_({},i),{accountInfo:n[o]}))}async function vn({connection:r,address:e}){let t=await nt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new vr(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new sn({key:s,state:sn.deserialize(o.data)});n[s.toString()]=a,an[s.toString()]=a}return n}var an={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new sn({key:new vr("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:sn.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"))})};var cn=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}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 vo.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}=on(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!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!==Rt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(_({},t||{})):this.build(t)}build(e){let t=new Lt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=n||{},s=i!=null?i:await At(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),mt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await _n(this.connection,t,this.signers.find(c=>c.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let c=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(c[0].serialize(),{skipPreflight:o}),signedTx:c[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(u=>u.transaction.instructions.length>0),s=[i,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async u=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=u||{},g=d!=null?d:await At(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,y)=>(b.recentBlockhash=g,await _n(this.connection,b,a[y].find(h=>h.publicKey.equals(this.owner.publicKey))?a[y]:[...a[y],this.owner.signer],{skipPreflight:p})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((h,w)=>(h.recentBlockhash=g,a[w].length&&h.sign(...a[w]),h));mt(b);let y=await this.signAllTransactions(b);if(l){let h=0,w=[],P=async()=>{if(!y[h])return;let A=await this.connection.sendRawTransaction(y[h].serialize(),{skipPreflight:p});w.push({txId:A,status:"sent",signedTx:y[h]}),m==null||m([...w]),h++,this.connection.onSignature(A,k=>{let x=w.findIndex(I=>I.txId===A);x>-1&&(w[x].status=k.err?"error":"success"),m==null||m([...w]),k.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:w.map(A=>A.txId),signedTxs:y}}else{let h=[];for(let w=0;w<y.length;w+=1){let P=await this.connection.sendRawTransaction(y[w].serialize(),{skipPreflight:p});h.push(P)}return{txIds:h,signedTxs:y}}}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){let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=d,o=Xt(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=_(_({},this.cluster==="devnet"?{}:an),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let p of a)s[p]===void 0&&c.push(new Rt(p));let u=await vn({connection:this.connection,address:c});for(let[p,g]of Object.entries(u))s[p]=g;let l=new Ft({payerKey:this.feePayer,recentBlockhash:i?Rt.default.toBase58():await At(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Mt(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var b;let{recentBlockHash:g,skipPreflight:f=!0}=p||{};if(g&&(m.message.recentBlockhash=g),mt([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let y=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:w}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:w,lastValidBlockHeight:h,signature:y},"confirmed"),{txId:y,signedTx:m}}if(this.signAllTransactions){let y=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(y[0],{skipPreflight:f}),signedTx:y[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(u=>u.builder.instructions.length>0),s=[i,...o.map(u=>u.transaction)],a=[this.signers,...o.map(u=>u.signers)],c=[...this.instructionTypes,...o.map(u=>u.instructionTypes).flat()];return s.forEach(async(u,l)=>{u.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async u=>{var g;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=u||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),mt(s),(g=this.owner)!=null&&g.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return s.forEach((y,h)=>{a[h].find(w=>w.publicKey.equals(this.owner.publicKey))||y.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async y=>{let h=await this.connection.sendTransaction(y,{skipPreflight:p});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,y=[],h=async()=>{if(!f[b])return;let w=await this.connection.sendTransaction(f[b],{skipPreflight:p});y.push({txId:w,status:"sent",signedTx:f[b]}),m==null||m([...y]),b++,this.connection.onSignature(w,P=>{let A=y.findIndex(k=>k.txId===w);A>-1&&(y[A].status=P.err?"error":"success"),m==null||m([...y]),P.err||h()},"processed"),this.connection.getSignatureStatus(w)};return h(),{txIds:[],signedTxs:f}}else{let b=[];for(let y=0;y<f.length;y+=1){let h=await this.connection.sendTransaction(f[y],{skipPreflight:p});b.push(h)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let u=e||{},{computeBudgetConfig:t}=u,n=Xt(u,["computeBudgetConfig"]),i=t?on(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>j(_({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(l=>{let m=[...c,l],d=t?[...i.instructions,...m]:m,g=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Rt(f));if(c.length<12&&Kt({instructions:d,payer:this.feePayer,signers:g})||Kt({instructions:m,payer:this.feePayer,signers:g}))c.push(l);else{if(c.length===0)throw Error("item ins too big");Kt({instructions:t?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:g})?s.push(new Lt().add(...i.instructions,...c)):s.push(new Lt().add(...c)),a.push(Array.from(new Set(c.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),c=[l]}}),c.length>0){let m=[...new Set(c.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);Kt({instructions:t?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new Lt().add(...i.instructions,...c)):s.push(new Lt().add(...c)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=l||{},f=p!=null?p:await At(this.connection);if(s.forEach(async(y,h)=>{y.recentBlockhash=f,a[h].length&&y.sign(...a[h])}),mt(s),(b=this.owner)!=null&&b.isKeyPair)return{txIds:await Promise.all(s.map(async(y,h)=>await _n(this.connection,y,a[h].find(w=>w.publicKey.equals(this.owner.publicKey))?a[h]:[...a[h],this.owner.signer],{skipPreflight:g}))),signedTxs:s};if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(m){let h=0,w=[],P=async()=>{if(!y[h])return;let A=await this.connection.sendRawTransaction(y[h].serialize(),{skipPreflight:g});w.push({txId:A,status:"sent",signedTx:y[h]}),d==null||d([...w]),h++,this.connection.onSignature(A,k=>{let x=w.findIndex(I=>I.txId===A);x>-1&&(w[x].status=k.err?"error":"success"),d==null||d([...w]),k.err||P()},"processed"),this.connection.getSignatureStatus(A)};return await P(),{txIds:w.map(A=>A.txId),signedTxs:y}}else{let h=[];for(let w=0;w<y.length;w+=1){let P=await this.connection.sendRawTransaction(y[w].serialize(),{skipPreflight:g});h.push(P)}return{txIds:h,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=Xt(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=_(_({},this.cluster==="devnet"?{}:an),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),c=[];for(let y of a)s[y]===void 0&&c.push(new Rt(y));let u=await vn({connection:this.connection,address:c});for(let[y,h]of Object.entries(u))s[y]=h;let l=t?on(t):{instructions:[],instructionTypes:[]},m=await At(this.connection),d=this.signers.reduce((y,h)=>j(_({},y),{[h.publicKey.toBase58()]:h}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(y=>{let h=[...f,y],w=t?[...l.instructions,...h]:h;if(f.length<12&&Nt({instructions:w,payer:this.feePayer,lookupTableAddressAccount:s})||Nt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(y);else{if(f.length===0)throw Error("item ins too big");let P={};for(let A of[...new Set(a)])s[A]!==void 0&&(P[A]=s[A]);if(t&&Nt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Ft({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Mt(A))}else{let A=new Ft({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Mt(A))}g.push(Array.from(new Set(f.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat())).map(A=>d[A]).filter(A=>A!==void 0)),f=[y]}}),f.length>0){let h=[...new Set(f.map(w=>w.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(w=>d[w]).filter(w=>w!==void 0);if(t&&Nt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let w=new Ft({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Mt(w))}else{let w=new Ft({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Mt(w))}g.push(h)}return{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async y=>{var k;let{sequentially:h,onTxUpdate:w,recentBlockHash:P,skipPreflight:A=!0}=y||{};if(p.map(async(x,I)=>{g[I].length&&x.sign(g[I]),P&&(x.message.recentBlockhash=P)}),mt(p),(k=this.owner)!=null&&k.isKeyPair){let{lastValidBlockHeight:x,blockhash:I}=await this.connection.getLatestBlockhash();return p.forEach((N,E)=>{g[E].find(V=>V.publicKey.equals(this.owner.publicKey))||N.sign([this.owner.signer])}),{txIds:await Promise.all(p.map(async N=>{let E=await this.connection.sendTransaction(N,{skipPreflight:A});return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:x,signature:E},"confirmed"),E})),signedTxs:p}}if(this.signAllTransactions){let x=await this.signAllTransactions(p);if(h){let I=0,N=[],E=async()=>{if(!x[I])return;let V=await this.connection.sendTransaction(x[I],{skipPreflight:A});N.push({txId:V,status:"sent",signedTx:x[I]}),w==null||w([...N]),I++,this.connection.onSignature(V,he=>{let ne=N.findIndex(Ae=>Ae.txId===V);ne>-1&&(N[ne].status=he.err?"error":"success"),w==null||w([...N]),he.err||E()},"processed"),this.connection.getSignatureStatus(V)};return E(),{txIds:[],signedTxs:x}}else{let I=[];for(let N=0;N<x.length;N+=1){let E=await this.connection.sendTransaction(x[N],{skipPreflight:A});I.push(E)}return{txIds:I,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function En(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 ue}from"@solana/web3.js";var au=new ue("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),cu=new ue("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),uu=new ue("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),lu=new ue("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),mu=new ue("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),du=new ue("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),pu=new ue("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),fu=new ue("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),gu=new ue("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),bu=new ue("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),yu=new ue("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),wu=new ue("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),hu=new ue("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Au=new ue("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Pu=new ue("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Tu=new ue("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ku=new ue("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),xu=new ue("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Bu=new ue("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Iu=new ue("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");import{PublicKey as _o}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Vo}from"@solana/spl-token";function Ee(r,e,t){return Ce([r.toBuffer(),(t!=null?t:Vo).toBuffer(),e.toBuffer()],new _o("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import De from"bn.js";var Ot=1e4;function oe(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=j(_({},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 De(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===Ot){let c=new De(o.maximumFee.toString());return{amount:r.add(c),fee:c,expirationTime:a}}else{let c=Vn(r.mul(new De(Ot)),new De(Ot-o.transferFeeBasisPoints)),u=new De(o.maximumFee.toString()),l=c.sub(r).gt(u)?r.add(u):c,m=Vn(l.mul(new De(o.transferFeeBasisPoints)),new De(Ot)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let c=Vn(r.mul(new De(o.transferFeeBasisPoints)),new De(Ot)),u=c.gt(s)?s:c;return{amount:r,fee:u,expirationTime:a}}}function dt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Vn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new De(0))?t.add(new De(1)):t}var qn=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Et=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=me(t)}createTxBuilder(e){return this.scope.checkOwner(),new cn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(qn(e))}logInfo(...e){this.logger.info(qn(e))}logAndCreateError(...e){let t=qn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import We from"bn.js";var H=new We(0),Ge=new We(1),je=new We(-1),Ke=new We(1).shln(64),un=new We(1).shln(128),Wn=Ke.sub(Ge),Dt=64,_r=un.subn(1),ke=-443636,Be=-ke,rt=new We("4295048016"),it=new We("79226673521066979257578248091"),Vr=16,qr="59543866431248",Wr="184467440737095516",Gr="15793534762490258745",ln=new We(10).pow(new We(6)),qo=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(qo||{}),nl={[500]:10,[3e3]:60,[1e4]:200},rl={version:6,liquidity:H,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:H,feeGrowthGlobalX64B:H,protocolFeesTokenA:H,protocolFeesTokenB:H,swapInAmountTokenA:H,swapOutAmountTokenB:H,swapInAmountTokenB:H,swapOutAmountTokenA:H,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},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:[]},il=new We("18446744073700000000");import q from"bn.js";function Xr(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function sl(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function al(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function mn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Gn(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Un(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function vt(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Hr(r,e){return vt(r,e)?null:Gn(r,e)}function zr(r,e){return vt(r,e)?null:Un(r,e)}var Wo=Buffer.from("amm_config","utf8"),Go=Buffer.from("pool","utf8"),Uo=Buffer.from("pool_vault","utf8"),Xo=Buffer.from("pool_reward_vault","utf8"),Yr=Buffer.from("position","utf8"),Ho=Buffer.from("tick_array","utf8"),zo=Buffer.from("operation","utf8"),Yo=Buffer.from("pool_tick_array_bitmap_extension","utf8");function ml(r,e){return Ce([Wo,Xr(e)],r)}function jr(r,e,t,n){return Ce([Go,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Xn(r,e,t){return Ce([Uo,e.toBuffer(),t.toBuffer()],r)}function Zr(r,e,t){return Ce([Xo,e.toBuffer(),t.toBuffer()],r)}function Z(r,e,t){return Ce([Ho,e.toBuffer(),mn(t)],r)}function pt(r,e,t,n){return Ce([Yr,e.toBuffer(),mn(t),mn(n)],r)}function Ne(r,e){return Ce([Yr,e.toBuffer()],r)}function dn(r){return Ce([Buffer.from("metadata","utf8"),ht.toBuffer(),r.toBuffer()],ht)}function _t(r){return Ce([zo],r)}function Ue(r,e){return Ce([Yo,e.toBuffer()],r)}import{PublicKey as ot}from"@solana/web3.js";import ae from"bn.js";import ms from"bn.js";import{PublicKey as rs}from"@solana/web3.js";import ei,{isBN as ti}from"bn.js";import{bits as fl,BitStructure as gl,blob as jo,Blob as bl,cstr as yl,f32 as wl,f32be as hl,f64 as Al,f64be as Pl,greedy as Tl,Layout as Zo,ns64 as kl,ns64be as xl,nu64 as Bl,nu64be as Il,offset as Sl,s16 as Cl,s16be as Kl,s24 as Nl,s24be as Rl,s32 as Qo,s32be as Ll,s40 as Fl,s40be as Ml,s48 as Ol,s48be as El,s8 as Dl,seq as $o,struct as vl,Structure as Jo,u16 as es,u16be as _l,u24 as Vl,u24be as ql,u32 as Wl,u32be as Gl,u40 as Ul,u40be as Xl,u48 as Hl,u48be as zl,u8 as ts,UInt as ns,union as Yl,Union as jl,unionLayoutDiscriminator as Zl,utf8 as Ql}from"@solana/buffer-layout";var Hn=Zo,Qr=Jo;var zn=ns;var $r=ts,Pt=es;var ye=Qo;var Jr=$o;var Re=jo;var Vt=class extends Hn{constructor(t,n,i){super(t,i);this.blob=Re(t),this.signed=n}decode(t,n=0){let i=new ei(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 ei(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function se(r){return new zn(1,r)}function Ze(r){return new zn(4,r)}function M(r){return new Vt(8,!1,r)}function G(r){return new Vt(16,!1,r)}function ni(r){return new Vt(16,!0,r)}var pn=class extends Hn{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 te(r){return new pn(Re(32),e=>new rs(e),e=>e.toBuffer(),r)}function Xe(r){return new pn($r(),is,os,r)}function is(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function os(r){return r?1:0}var Yn=class extends Qr{decode(e,t){return super.decode(e,t)}};function $(r,e,t){return new Yn(r,e,t)}function ie(r,e,t){let n,i=typeof e=="number"?e:ti(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=ti(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 Jr(r,i,t)}var jn=14,Qe=class{static maxTickInTickarrayBitmap(e){return e*de*ft}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(!X.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-X.tickCount(n):t+X.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*de,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(i){let l=e.shln(1024-u-1),m=Hr(1024,l);if(m!==null){let d=(u-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),m=zr(1024,l);if(m!==null){let d=(u+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-X.tickCount(n)}}}},qt=class{static getBitmapOffset(e,t){if(!X.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Qe.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=Qe.maxTickInTickarrayBitmap(e),n=-t;if(Be<=t)throw Error(`extensionTickBoundary check error: ${Be}, ${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:C.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=X.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}=Qe.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let c=C.mergeTickArrayBitmap(e).shln(ft-1-a),u=vt(512,c)?null:Gn(512,c);if(u!==null){let l=t-u*X.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=C.mergeTickArrayBitmap(e).shrn(a),u=vt(512,c)?null:Un(512,c);if(u!==null){let l=t+u*X.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-X.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Qe.maxTickInTickarrayBitmap(t),i=Math.floor(n/X.tickCount(t));return e<0&&n!=0&&(i=ft-i),i}};var wm=$([Re(8),se("bump"),Pt("index"),te(""),Ze("protocolFeeRate"),Ze("tradeFeeRate"),Pt("tickSpacing"),ie(M(),8,"")]),ss=$([Ze("blockTimestamp"),G("sqrtPriceX64"),G("cumulativeTimePriceX64"),ie(G(),1,"")]),Zn=$([Re(8),Xe("initialized"),te("poolId"),ie(ss,1e3,"observations"),ie(G(),5,"")]),as=$([se("rewardState"),M("openTime"),M("endTime"),M("lastUpdateTime"),G("emissionsPerSecondX64"),M("rewardTotalEmissioned"),M("rewardClaimed"),te("tokenMint"),te("tokenVault"),te("creator"),G("rewardGrowthGlobalX64")]),fn=$([Re(8),se("bump"),te("ammConfig"),te("creator"),te("mintA"),te("mintB"),te("vaultA"),te("vaultB"),te("observationId"),se("mintDecimalsA"),se("mintDecimalsB"),Pt("tickSpacing"),G("liquidity"),G("sqrtPriceX64"),ye("tickCurrent"),Pt("observationIndex"),Pt("observationUpdateDuration"),G("feeGrowthGlobalX64A"),G("feeGrowthGlobalX64B"),M("protocolFeesTokenA"),M("protocolFeesTokenB"),G("swapInAmountTokenA"),G("swapOutAmountTokenB"),G("swapInAmountTokenB"),G("swapOutAmountTokenA"),se("status"),ie(se(),7,""),ie(as,3,"rewardInfos"),ie(M(),16,"tickArrayBitmap"),M("totalFeesTokenA"),M("totalFeesClaimedTokenA"),M("totalFeesTokenB"),M("totalFeesClaimedTokenB"),M("fundFeesTokenA"),M("fundFeesTokenB"),M("startTime"),ie(M(),15*4-3,"padding")]),cs=$([G("growthInsideLastX64"),M("rewardAmountOwed")]),gn=$([Re(8),se("bump"),te("nftMint"),te("poolId"),ye("tickLower"),ye("tickUpper"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),M("tokenFeesOwedA"),M("tokenFeesOwedB"),ie(cs,3,"rewardInfos"),ie(M(),8,"")]),hm=$([Re(8),se("bump"),te("poolId"),ye("tickLowerIndex"),ye("tickUpperIndex"),G("liquidity"),G("feeGrowthInsideLastX64A"),G("feeGrowthInsideLastX64B"),M("tokenFeesOwedA"),M("tokenFeesOwedB"),ie(G(),3,"rewardGrowthInside"),ie(M(),8,"")]),us=$([ye("tick"),ni("liquidityNet"),G("liquidityGross"),G("feeGrowthOutsideX64A"),G("feeGrowthOutsideX64B"),ie(G(),3,"rewardGrowthsOutsideX64"),ie(Ze(),13,"")]),Wt=$([Re(8),te("poolId"),ye("startTickIndex"),ie(us,de,"ticks"),se("initializedTickCount"),ie(se(),115,"")]),ri=$([Re(329),ie(te(),100,"whitelistMints")]),ii=$([Re(8),te("poolId"),ie(ie(M(),8),jn,"positiveTickArrayBitmap"),ie(ie(M(),8),jn,"negativeTickArrayBitmap")]);var ls=15,X=class{static async getTickArrays(e,t,n,i,o,s,a){let c=[],u=C.getTickArrayStartIndexByTick(i,o),l=C.getInitializedTickArrayInRange(s,a,o,u,Math.floor(ls/2));for(let p=0;p<l.length;p++){let{publicKey:g}=Z(t,n,l[p]);c.push(g)}let m=(await nt(e,c)).map(p=>p!==null?Wt.decode(p.data):null),d={};for(let p=0;p<c.length;p++){let g=m[p];g!==null&&(d[g.startTickIndex]=j(_({},g),{address:c[p]}))}return d}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=C.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:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[m,d,p]}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/X.tickCount(t)),a=n?C.searchLowBitFromStart(i,o,s-1,1,t):C.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=de-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<de;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=Z(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=C.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 d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c-1}else for(c=c+1;c<de;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c+1}let{publicKey:m}=Z(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(C.checkIsOutOfBoundary(e)){if(e>Be)return!1;let n=C.getTickArrayStartIndexByTick(ke,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return de*e}};var de=60,ft=512,C=class{static getTickArrayAddressByTick(e,t,n,i){let o=C.getTickArrayStartIndexByTick(n,i),{publicKey:s}=Z(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=C.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=de)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=X.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)*X.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*de,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*de,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*de:e+t*de}static mergeTickArrayBitmap(e){let t=new ms(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*de));return[...C.searchLowBitFromStart(e,t,s-1,o,n),...C.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return C.searchHightBitFromStart(e,t,0,ft,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=C.getAllInitializedTickArrayStartIndex(n,i,o);for(let c of a){let{publicKey:u}=Z(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=>C.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=X.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=>C.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=X.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<ke||e>Be}static nextInitTick(e,t,n,i,o){if(X.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<de;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=de-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<de;){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=O.getSqrtPriceX64FromTick(t),o=O.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),o=gt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=O.getSqrtPriceX64FromTick(o),a=O.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=O.getSqrtPriceX64FromTick(t),o=O.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),o=gt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=O.getSqrtPriceX64FromTick(o),a=O.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}};import He from"bn.js";var Gt=class{static getfeeGrowthInside(e,t,n){let i=new He(0),o=new He(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 He(0),a=new He(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=D.wrappingSubU128(D.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),u=D.wrappingSubU128(D.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=D.mulDivFloor(D.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ke),c=t.tokenFeesOwedA.add(a),u=D.mulDivFloor(D.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ke),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=D.mulDivFloor(D.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ke),c=t.tokenFeesOwedA.add(a),u=D.mulDivFloor(D.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ke),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=D.wrappingSubU128(c,u.growthInsideLastX64),m=D.mulDivFloor(l,t.liquidity,Ke),d=u.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=D.wrappingSubU128(c,u.growthInsideLastX64),m=D.mulDivFloor(l,t.liquidity,Ke),d=u.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new He(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 He(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(D.wrappingSubU128(D.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 He(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 He(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(D.wrappingSubU128(D.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,y,h,w;let a=O.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),c=O.getSqrtPriceX64FromTick(t.tickLower),u=O.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=U.getAmountsFromLiquidity(a,c,u,n,o),[d,p]=[oe(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),oe(m.amountB,(y=e.mintB.extensions)==null?void 0:y.feeConfig,s,!0)],[g,f]=[oe(new He(new S(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),oe(new He(new S(m.amountB.toString()).mul(l).toFixed(0)),(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:dt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as oi}from"@solana/spl-token";var xe=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=bt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,u,o);return a.push(...d),{expectedAmountOut:m.mul(je),remainingAccounts:a,executionPrice:p,feeAmount:g}}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 f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=Z(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:g}=bt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(je),u,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=xe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?qt.checkTickArrayIsInit(X.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):C.checkTickArrayIsInitialized(C.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Z(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,X.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=Z(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/X.tickCount(e.tickSpacing)),i=t?C.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):C.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=X.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Qe.nextInitializedTickArrayStartIndex(C.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=qt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<ke||t>Be)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 m=o[l],d=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(m.tokenMint))==null?void 0:c.owner;if(d===void 0)throw Error("get new reward mint info error");let p=j(_({},m),{perSecond:D.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new ot(d)});if(p.tokenMint.equals(ot.default))continue;if(n<=p.openTime.toNumber()||i.eq(H)){s.push(p);continue}let g=new ae(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),b=D.mulDivFloor(f,p.emissionsPerSecondX64,i),y=p.rewardGrowthGlobalX64.add(b),h=D.mulDivFloor(f,p.emissionsPerSecondX64,Ke),w=p.rewardTotalEmissioned.add(h);s.push(j(_({},p),{rewardGrowthGlobalX64:y,rewardTotalEmissioned:w,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=C.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Qe.maxTickInTickarrayBitmap(e),n=-t;return t>Be&&(t=X.getArrayStartIndex(Be,e)+X.tickCount(e)),n<ke&&(n=X.getArrayStartIndex(ke,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!X.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/X.tickCount(t)*ft}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Dn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=ii.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=C.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=C.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let m of l){let{publicKey:d}=Z(c.programId,c.id,m);o.push({pubkey:d}),i[d.toString()]=c.id}}let s=await Dn(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=Wt.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=j(_({},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(d=>d.accountInfo.mint),u=[];for(let d of c)for(let p of s)u.push(Ne(p,d).publicKey);let l=await nt(t,u,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=gn.decode(d.data),g=p.poolId.toString(),f=e.find(I=>I.state.id.toBase58()===g);if(f===void 0)continue;let b=f.state,y=C._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=C._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:w,amountB:P}=U.getAmountsFromLiquidity(b.sqrtPriceX64,y.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),A=1/(1-Math.sqrt(Math.sqrt(y.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:y.price,priceUpper:h.price,amountA:w,amountB:P,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(I=>j(_({},I),{pendingReward:new ae(0)})),leverage:A,tokenFeeAmountA:new ae(0),tokenFeeAmountB:new ae(0)}];let k=await C.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),x=await C.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=k,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=x}if(o){let d=Object.values(m),p=await nt(t,d,{batchRequest:i}),g={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let y=d[f].toString();g[y]=Wt.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let y of b){let h=`${f.programId.toString()}-${f.id.toString()}-${y.tickLower}`,w=`${f.programId.toString()}-${f.id.toString()}-${y.tickUpper}`,P=g[m[h].toString()],A=g[m[w].toString()],k=P.ticks[C.getTickOffsetInArray(y.tickLower,f.tickSpacing)],x=A.ticks[C.getTickOffsetInArray(y.tickUpper,f.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:N}=await Gt.GetPositionFees(f,y,k,x),E=await Gt.GetPositionRewards(f,y,k,x);y.tokenFeeAmountA=I.gte(new ae(0))?I:new ae(0),y.tokenFeeAmountB=N.gte(new ae(0))?N:new ae(0);for(let V=0;V<E.length;V++)y.rewardInfos[V].pendingReward=E[V].gte(new ae(0))?E[V]:new ae(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new S(0)}){var E;let c,u=n.toBase58()===e.mintA.address,[l,m]=u?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new S(0))?c=u?rt.add(new ae(1)):it.sub(new ae(1)):c=O.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=oe(o,l,i,!1),{expectedAmountOut:p,remainingAccounts:g,executionPrice:f,feeAmount:b}=xe.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((E=d.fee)!=null?E:H),c),y=oe(p,m,i,!1),h=O.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),w=u?h:new S(1).div(h),P=p.mul(new ae(Math.floor((1-s)*1e10))).div(new ae(1e10)),A=oe(P,m,i,!1),k=u?e.currentPrice:new S(1).div(e.currentPrice),x=new S(w).sub(k).abs(),I=k,N=new lt(new S(x).mul(10**15).toFixed(0),new S(I).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:y,minAmountOut:A,expirationTime:dt(d.expirationTime,y.expirationTime),currentPrice:e.currentPrice,executionPrice:w,priceImpact:N,fee:b,remainingAccounts:g}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[c,u]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new Ye(j(_({},c),{mint:c.address,isToken2022:c.programId===oi.toBase58()})),new Ye(j(_({},u),{mint:u.address,isToken2022:u.programId===oi.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:g,expirationTime:f,currentPrice:b,executionPrice:y,priceImpact:h,fee:w,remainingAccounts:P}=await xe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new ot(c.address),amountIn:n,slippage:o,epochInfo:s}),A=j(_({},d),{amount:new Te(l,d.amount),fee:d.fee===void 0?void 0:new Te(l,d.fee)}),k=j(_({},p),{amount:new Te(m,p.amount),fee:p.fee===void 0?void 0:new Te(m,p.fee)}),x=j(_({},g),{amount:new Te(m,g.amount),fee:g.fee===void 0?void 0:new Te(m,g.fee)}),I=new Oe({baseToken:l,denominator:new ae(10).pow(new ae(20+l.decimals)),quoteToken:m,numerator:b.mul(new S(10**(20+m.decimals))).toFixed(0)}),N=new Oe({baseToken:l,denominator:new ae(10).pow(new ae(20+l.decimals)),quoteToken:m,numerator:y.mul(new S(10**(20+m.decimals))).toFixed(0)}),E=new Te(l,w);return{realAmountIn:A,amountOut:k,minAmountOut:x,expirationTime:f,currentPrice:I,executionPrice:N,priceImpact:h,fee:E,remainingAccounts:P}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var g,f,b;let o=e[t],s=C.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=C.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(g=o.rewardApr[0])!=null?g:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}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],m=i[Cn(e.mintA.address).toString()],d=i[Cn(e.mintB.address).toString()],p=e.mintA.decimals,g=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=O.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),b=O.getSqrtPriceX64FromTick(s),y=O.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:w}=U.getAmountsFromLiquidityWithSlippage(f,b,y,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:A}=U.getAmountsFromLiquidityWithSlippage(f,b,y,o,!1,!1,0),k=new S(h.toString()).div(new S(10).pow(p)).mul(m.value).add(new S(w.toString()).div(new S(10).pow(g)).mul(d.value)),x=new S(P.toString()).div(new S(10).pow(p)).mul(m.value).add(new S(A.toString()).div(new S(10).pow(g)).mul(d.value)),I=x.div(k.add(x)).div(x),E=new S(l.volumeFee).mul(365).div(u).mul(I).mul(100).toNumber(),V=3600*24*365,he=e.rewardDefaultInfos.map(ne=>{var Y,ir;let Ae=ne.mint.decimals,re=i[ne.mint.address];return c<((Y=ne.startTime)!=null?Y:0)||c>((ir=ne.endTime)!=null?ir:0)||!ne.perSecond||!re||Ae===void 0?0:new S(re.value).mul(new S(ne.perSecond).mul(V)).div(new S(10).pow(Ae)).mul(I).mul(100).toNumber()});return{feeApr:E,rewardsApr:he,apr:E+he.reduce((ne,Ae)=>ne+Ae,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var y,h;let l=O.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),m=O.getSqrtPriceX64FromTick(n),d=O.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,g=oe(o,(y=e[t?"mintA":"mintB"].extensions)==null?void 0:y.feeConfig,c,!u),f=new ae(new S(g.amount.sub((h=g.fee)!=null?h:H).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?U.getLiquidityFromTokenAmountA(m,d,f,!a):new ae(0);else if(l.lte(d)){let w=U.getLiquidityFromTokenAmountA(l,d,f,!a),P=U.getLiquidityFromTokenAmountB(m,l,f);b=t?w:P}else b=t?new ae(0):U.getLiquidityFromTokenAmountB(m,d,f);return xe.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,y,h,w;let c=O.getSqrtPriceX64FromTick(n),u=O.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(O.priceToSqrtPriceX64(new S(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[d,p]=[oe(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),oe(m.amountB,(y=t.mintB.extensions)==null?void 0:y.feeConfig,e,!0)],[g,f]=[oe(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),oe(m.amountB.muln(l),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:dt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new ot(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=fn.decode(i.data),s=Ue(e,new ot(n.id)).publicKey,a=await xe.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return j(_({},o),{id:new ot(n.id),programId:new ot(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:j(_({},n.config),{id:new ot(n.config.id),fundOwner:""}),currentPrice:new S(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function sd({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:c}){var w,P,A,k;let[u,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=O.priceToSqrtPriceX64(new S(r.price),r.mintA.decimals,r.mintB.decimals),g=O.getSqrtPriceX64FromTick(u),f=O.getSqrtPriceX64FromTick(l),[b,y]=[oe(m,(w=r.mintA.extensions)==null?void 0:w.feeConfig,a,!c),oe(d,(P=r.mintB.extensions)==null?void 0:P.feeConfig,a,!c)],h=U.getLiquidityFromTokenAmounts(p,g,f,b.amount.sub((A=b.fee)!=null?A:H),y.amount.sub((k=y.fee)!=null?k:H));return U.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:h,slippage:o,add:s,epochInfo:a,amountAddFee:!c})}var D=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(H)||(o=o.add(Ge)),o}static mulDivFloor(e,t,n){if(n.eq(H))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(H))throw new Error("division by 0");return e.mul(t).add(n.sub(Ge)).div(n)}static x64ToDecimal(e,t){return new S(e.toString()).div(S.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new q(e.mul(S.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(un).sub(t).mod(un)}};function fe(r,e){return Qn(r.mul(e),64,256)}function ds(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Qn(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var O=class{static sqrtPriceX64ToPrice(e,t,n){return D.x64ToDecimal(e).pow(2).mul(S.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return D.decimalToX64(e.mul(S.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(H))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(H))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(H))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(H))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(H))return e;let o=t.shln(Dt);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?D.mulDivCeil(s,e,a):D.mulDivRoundingUp(s,Ge,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 D.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(Dt);if(i)return e.add(o.div(t));{let s=D.mulDivRoundingUp(o,Ge,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>Be)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new q("18445821805675395072"):new q("18446744073709551616");return(t&2)!=0&&(n=fe(n,new q("18444899583751176192"))),(t&4)!=0&&(n=fe(n,new q("18443055278223355904"))),(t&8)!=0&&(n=fe(n,new q("18439367220385607680"))),(t&16)!=0&&(n=fe(n,new q("18431993317065453568"))),(t&32)!=0&&(n=fe(n,new q("18417254355718170624"))),(t&64)!=0&&(n=fe(n,new q("18387811781193609216"))),(t&128)!=0&&(n=fe(n,new q("18329067761203558400"))),(t&256)!=0&&(n=fe(n,new q("18212142134806163456"))),(t&512)!=0&&(n=fe(n,new q("17980523815641700352"))),(t&1024)!=0&&(n=fe(n,new q("17526086738831433728"))),(t&2048)!=0&&(n=fe(n,new q("16651378430235570176"))),(t&4096)!=0&&(n=fe(n,new q("15030750278694412288"))),(t&8192)!=0&&(n=fe(n,new q("12247334978884435968"))),(t&16384)!=0&&(n=fe(n,new q("8131365268886854656"))),(t&32768)!=0&&(n=fe(n,new q("3584323654725218816"))),(t&65536)!=0&&(n=fe(n,new q("696457651848324352"))),(t&131072)!=0&&(n=fe(n,new q("26294789957507116"))),(t&262144)!=0&&(n=fe(n,new q("37481735321082"))),e>0&&(n=_r.div(n)),n}static getTickFromPrice(e,t,n){return O.getTickFromSqrtPriceX64(O.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(it)||e.lt(rt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new q(t-64),i=ds(n,32,128),o=new q("8000000000000000","hex"),s=0,a=new q(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new q(0))&&s<Vr;){c=c.mul(c);let g=c.shrn(127);c=c.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let u=a.shrn(32),m=i.add(u).mul(new q(qr)),d=Qn(m.sub(new q(Wr)),64,128).toNumber(),p=Qn(m.add(new q(Gr)),64,128).toNumber();return d==p?d:O.getSqrtPriceX64FromTick(p).lte(e)?p:d}},gt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=O.getTickFromSqrtPriceX64(O.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=gt.getTickWithPriceAndTickspacing(e,t,n,i),s=O.getSqrtPriceX64FromTick(o);return O.sqrtPriceX64ToPrice(s,n,i)}},U=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(H))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Dt),s=t.sub(e);return i?D.mulDivRoundingUp(D.mulDivCeil(o,s,t),Ge,e):D.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(H))throw new Error("sqrtPriceX64A must greater than 0");return i?D.mulDivCeil(n,t.sub(e),Ke):D.mulDivFloor(n,t.sub(e),Ke)}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?D.mulDivRoundingUp(a,Ge,Wn):a.shrn(Dt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),D.mulDivFloor(n,Wn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,i,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new q(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,i,o),a=U.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new q(0),amountB:U.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:c,amountB:u}=U.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new q(new S(c.toString()).mul(l).toFixed(0)),d=new q(new S(u.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var h,w,P,A;let u=O.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),l=O.getSqrtPriceX64FromTick(t),m=O.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=U.getAmountsFromLiquidity(u,l,m,i,s),[g,f]=[oe(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),oe(p.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,c)],[b,y]=[oe(new q(new S(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,c),oe(new q(new S(p.amountB.toString()).mul(d).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,c)];return{liquidity:i,amountA:g,amountB:f,amountSlippageA:b,amountSlippageB:y,expirationTime:dt(g.expirationTime,f.expirationTime)}}},bt=class{static swapCompute(e,t,n,i,o,s,a,c,u,l,m,d,p,g){if(d.eq(H))throw new Error("amountSpecified must not be 0");if(g||(g=s?rt.add(Ge):it.sub(Ge)),s){if(g.lt(rt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(it))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=d.gt(H),b={amountSpecifiedRemaining:d,amountCalculated:H,sqrtPriceX64:m,tick:u>p?Math.min(p+X.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new q(0)},y=p,h=n[p],w=0,P=!s&&h.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(H)&&!b.sqrtPriceX64.eq(g);){if(w>10)throw Error("liquidity limit");let A={};A.sqrtPriceStartX64=b.sqrtPriceX64;let k=C.nextInitTick(h,b.tick,l,s,P),x=k||null,I=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let E=xe.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},y,s);if(!E.isExist)throw Error("swapCompute LiquidityInsufficient");y=E.nextStartIndex;let{publicKey:V}=Z(e,t,y);I=V,h=n[y],x=C.firstInitializedTick(h,s)}A.tickNext=x.tick,A.initialized=x.liquidityGross.gtn(0),p!==y&&I&&(b.accounts.push(I),p=y),A.tickNext<ke?A.tickNext=ke:A.tickNext>Be&&(A.tickNext=Be),A.sqrtPriceNextX64=O.getSqrtPriceX64FromTick(A.tickNext);let N;if(s&&A.sqrtPriceNextX64.lt(g)||!s&&A.sqrtPriceNextX64.gt(g)?N=g:N=A.sqrtPriceNextX64,[b.sqrtPriceX64,A.amountIn,A.amountOut,A.feeAmount]=bt.swapStepCompute(b.sqrtPriceX64,N,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(A.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(A.amountIn.add(A.feeAmount)),b.amountCalculated=b.amountCalculated.sub(A.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(A.amountOut),b.amountCalculated=b.amountCalculated.add(A.amountIn.add(A.feeAmount))),b.sqrtPriceX64.eq(A.sqrtPriceNextX64)){if(A.initialized){let E=x.liquidityNet;s&&(E=E.mul(je)),b.liquidity=U.addDelta(b.liquidity,E)}P=A.tickNext!=b.tick&&!s&&h.startTickIndex===A.tickNext,b.tick=s?A.tickNext-1:A.tickNext}else if(b.sqrtPriceX64!=A.sqrtPriceStartX64){let E=O.getTickFromSqrtPriceX64(b.sqrtPriceX64);P=E!=b.tick&&!s&&h.startTickIndex===E,b.tick=E}++w}try{let{nextStartIndex:A,isExist:k}=X.nextInitializedTickArray(b.tick,l,s,i,o);k&&p!==A&&(b.accounts.push(Z(e,t,A).publicKey),p=A)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new q(0),amountIn:new q(0),amountOut:new q(0),feeAmount:new q(0)},a=e.gte(t),c=i.gte(H);if(c){let l=D.mulDivFloor(i,ln.sub(new q(o.toString())),ln);s.amountIn=a?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=O.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(je).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=O.getNextSqrtPriceX64FromOutput(e,n,i.mul(je),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=U.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=U.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:U.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:U.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(i.mul(je))&&(s.amountOut=i.mul(je)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=D.mulDivCeil(s.amountIn,new q(o),ln.sub(new q(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};import{TOKEN_PROGRAM_ID as we,TOKEN_2022_PROGRAM_ID as ct,ASSOCIATED_TOKEN_PROGRAM_ID as di}from"@solana/spl-token";import{PublicKey as B,TransactionInstruction as _e,SystemProgram as Tt,Keypair as nr}from"@solana/web3.js";import pi from"bn.js";import{PublicKey as ws,Keypair as hs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as As}from"@solana/spl-token";import _d from"bn.js";var ps=$([te("mint"),te("owner"),M("amount"),Ze("delegateOption"),te("delegate"),se("state"),Ze("isNativeOption"),M("isNative"),M("delegatedAmount"),Ze("closeAuthorityOption"),te("closeAuthority")]);function fs(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function $n(r,...e){if(!fs(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function Jn(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function si(r,e){$n(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var yn=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),ve=(r,e)=>r<<32-e|r>>>e;var xd=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function gs(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function er(r){return typeof r=="string"&&(r=gs(r)),$n(r),r}var bn=class{clone(){return this._cloneInto()}},Bd={}.toString;function ai(r){let e=n=>r().update(er(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function bs(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),c=n?4:0,u=n?0:4;r.setUint32(e+c,s,n),r.setUint32(e+u,a,n)}var ci=(r,e,t)=>r&e^~r&t,ui=(r,e,t)=>r&e^r&t^e&t,wn=class extends bn{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=yn(this.buffer)}update(e){Jn(this);let{view:t,buffer:n,blockLen:i}=this;e=er(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let c=yn(e);for(;i<=o-s;s+=i)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Jn(this),si(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;bs(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=yn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<u;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var ys=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),st=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),at=new Uint32Array(64),tr=class extends wn{constructor(){super(64,32,8,!1),this.A=st[0]|0,this.B=st[1]|0,this.C=st[2]|0,this.D=st[3]|0,this.E=st[4]|0,this.F=st[5]|0,this.G=st[6]|0,this.H=st[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:c}=this;return[e,t,n,i,o,s,a,c]}set(e,t,n,i,o,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=c|0}process(e,t){for(let m=0;m<16;m++,t+=4)at[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=at[m-15],p=at[m-2],g=ve(d,7)^ve(d,18)^d>>>3,f=ve(p,17)^ve(p,19)^p>>>10;at[m]=f+at[m-7]+g+at[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:c,G:u,H:l}=this;for(let m=0;m<64;m++){let d=ve(a,6)^ve(a,11)^ve(a,25),p=l+d+ci(a,c,u)+ys[m]+at[m]|0,f=(ve(n,2)^ve(n,13)^ve(n,22))+ui(n,i,o)|0;l=u,u=c,c=a,a=s+p|0,s=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,c,u,l)}roundClean(){at.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var li=ai(()=>new tr);var Gd=me("Raydium_Util");function mi({fromPublicKey:r,programId:e=As}){let t=hs.generate().publicKey.toBase58().slice(0,32);return{publicKey:Ps(r,t,e),seed:t}}function Ps(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=li(n);return new ws(i)}var fi=me("Raydium_Clmm"),Ve={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],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]},pe=class{static createPoolInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g){let f=$([G("sqrtPriceX64"),M("startTime")]),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:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Tt.programId,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],y=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},y);let h=Buffer.from([...Ve.createPool,...y]);return new _e({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,m=mi({fromPublicKey:i,programId:n}),[d,p]=[new B(o.address),new B(s.address)],g=[Tt.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Zn.span),space:Zn.span,programId:n})],{publicKey:f}=jr(n,a,d,p),{publicKey:b}=Xn(n,f,d),{publicKey:y}=Xn(n,f,p);return g.push(this.createPoolInstruction(n,f,i,a,m.publicKey,d,b,new B(o.programId||we),p,y,new B(s.programId||we),Ue(n,f).publicKey,c,u)),{signers:[],instructions:g,instructionTypes:[ce.CreateAccount,ce.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:y},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h,w,P,A,k,x,I,N,E){let V=$([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),G("liquidity"),M("amountMaxA"),M("amountMaxB"),Xe("withMetadata"),se("optionBaseFlag"),Xe("baseFlag")]),he=[...E?[{pubkey:E,isSigner:!1,isWritable:!0}]:[]],ne=[{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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:It,isSigner:!1,isWritable:!1},{pubkey:Tt.programId,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:di,isSigner:!1,isWritable:!1},{pubkey:ht,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...he],Ae=Buffer.alloc(V.span);V.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:k,amountMaxA:x,amountMaxB:I,withMetadata:N==="create",baseFlag:!1,optionBaseFlag:0},Ae);let re=Buffer.from([...Ve.openPosition,...Ae]);return new _e({keys:ne,programId:e,data:re})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,p]=[new B(e.programId),new B(e.id)],g;if(l)g=new B((await l(1))[0]);else{let I=nr.generate();m.push(I),g=I.publicKey}let f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=Z(d,p,f),{publicKey:h}=Z(d,p,b),{publicKey:w}=Ee(n.wallet,g,we),{publicKey:P}=dn(g),{publicKey:A}=Ne(d,g),{publicKey:k}=pt(d,p,i,o),x=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,g,w,P,k,y,h,A,n.tokenAccountA,n.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),i,o,f,b,s,a,c,u);return{signers:m,instructions:[x],instructionTypes:[ce.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:k}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,p]=[new B(e.programId),new B(e.id)],g;if(l)g=new B((await l(1))[0]);else{let I=nr.generate();m.push(I),g=I.publicKey}let f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=Z(d,p,f),{publicKey:h}=Z(d,p,b),{publicKey:w}=Ee(n.wallet,g,we),{publicKey:P}=dn(g),{publicKey:A}=Ne(d,g),{publicKey:k}=pt(d,p,i,o),x=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,g,w,P,k,y,h,A,n.tokenAccountA,n.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),i,o,f,b,u,s,a,c,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?Ue(d,p).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:k},instructions:[x],signers:m,instructionTypes:[ce.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h,w,P,A,k,x,I,N,E){let V=$([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),G("liquidity"),M("amountMaxA"),M("amountMaxB"),Xe("withMetadata"),se("optionBaseFlag"),Xe("baseFlag")]),he=[...E?[{pubkey:E,isSigner:!1,isWritable:!0}]:[]],ne=[{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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:It,isSigner:!1,isWritable:!1},{pubkey:Tt.programId,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:di,isSigner:!1,isWritable:!1},{pubkey:ht,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...he],Ae=Buffer.alloc(V.span);V.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:new pi(0),amountMaxA:x==="MintA"?I:N,amountMaxB:x==="MintA"?N:I,withMetadata:k==="create",baseFlag:x==="MintA",optionBaseFlag:1},Ae);let re=Buffer.from([...Ve.openPosition,...Ae]);return new _e({keys:ne,programId:e,data:re})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m,d=[];if(l)m=new B((await l(1))[0]);else{let I=nr.generate();d.push(I),m=I.publicKey}let[p,g]=[new B(e.programId),new B(e.id)],f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=Z(p,g,f),{publicKey:h}=Z(p,g,b),{publicKey:w}=Ee(n.wallet,m,we),{publicKey:P}=dn(m),{publicKey:A}=Ne(p,m),{publicKey:k}=pt(p,g,i,o),x=this.openPositionFromLiquidityInstruction(p,n.wallet,g,n.wallet,m,w,P,k,y,h,A,n.tokenAccountA,n.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(t.mintA.address),new B(t.mintB.address),i,o,f,b,s,a,c,u,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?Ue(p,g).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:k},instructions:[x],signers:d,instructionTypes:[ce.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=$([]),a=[{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:Tt.programId,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...Ve.closePosition,...c]);return new _e({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new B(e.programId),{publicKey:s}=Ee(n.wallet,i.nftMint,we),{publicKey:a}=Ne(o,i.nftMint),c=[];return c.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[ce.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h){let w=$([G("liquidity"),M("amountMaxA"),M("amountMaxB"),se("optionBaseFlag"),Xe("baseFlag")]),P=[...h?[{pubkey:h,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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],k=Buffer.alloc(w.span);w.encode({liquidity:f,amountMaxA:b,amountMaxB:y,optionBaseFlag:0,baseFlag:!1},k);let x=Buffer.from([...Ve.increaseLiquidity,...k]);return new _e({keys:A,programId:e,data:x})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[c,u]=[new B(e.programId),new B(e.id)],l=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Z(c,u,l),{publicKey:p}=Z(c,u,m),{publicKey:g}=Ee(i.wallet,n.nftMint,we),{publicKey:f}=Ne(c,n.nftMint),{publicKey:b}=pt(c,u,n.tickLower,n.tickUpper),y=this.increasePositionFromLiquidityInstruction(c,i.wallet,g,f,u,b,d,p,i.tokenAccountA,i.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),o,s,a,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ue(c,u).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:b},signers:[],instructions:[y],instructionTypes:[ce.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[c,u]=[new B(e.programId),new B(e.id)],l=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Z(c,u,l),{publicKey:p}=Z(c,u,m),{publicKey:g}=Ee(i.wallet,n.nftMint,we),{publicKey:f}=Ne(c,n.nftMint),{publicKey:b}=pt(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:g,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(c,i.wallet,g,f,u,b,d,p,i.tokenAccountA,i.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),o,s,a,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Ue(c,u).publicKey:void 0)],signers:[],instructionTypes:[ce.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h){let w=$([G("liquidity"),M("amountMaxA"),M("amountMaxB"),se("optionBaseFlag"),Xe("baseFlag")]),P=[...h?[{pubkey:h,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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],k=Buffer.alloc(w.span);w.encode({liquidity:new pi(0),amountMaxA:f==="MintA"?b:y,amountMaxB:f==="MintA"?y:b,baseFlag:f==="MintA",optionBaseFlag:1},k);let x=Buffer.from([...Ve.increaseLiquidity,...k]);return new _e({keys:A,programId:e,data:x})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y,h,w){let P=$([G("liquidity"),M("amountMinA"),M("amountMinB")]),A=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...f.map(N=>[{pubkey:N.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:N.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:N.rewardMint,isSigner:!1,isWritable:!1}]).flat()],k=[{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:m,isSigner:!1,isWritable:!0},{pubkey:d,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:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...A],x=Buffer.alloc(P.span);P.encode({liquidity:b,amountMinA:y,amountMinB:h},x);let I=Buffer.from([...Ve.decreaseLiquidity,...x]);return new _e({keys:k,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new B(e.programId),new B(e.id)],m=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Z(u,l,m),{publicKey:g}=Z(u,l,d),{publicKey:f}=Ee(i.wallet,n.nftMint,c),{publicKey:b}=Ne(u,n.nftMint),{publicKey:y}=pt(u,l,n.tickLower,n.tickUpper),h=[];for(let P=0;P<e.rewardDefaultInfos.length;P++)h.push({poolRewardVault:new B(t.rewardInfos[P].vault),ownerRewardVault:i.rewardAccounts[P],rewardMint:new B(e.rewardDefaultInfos[P].mint.address)});let w=[];return w.push(this.decreaseLiquidityInstruction(u,i.wallet,f,b,l,y,p,g,i.tokenAccountA,i.tokenAccountB,new B(t.vault.A),new B(t.vault.B),new B(e.mintA.address),new B(e.mintB.address),h,o,s,a,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ue(u,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:b,protocolPosition:y},signers:[],instructions:w,instructionTypes:[ce.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,c,u,l,m,d,p,g,f,b,y){let h=$([M("amount"),M("otherAmountThreshold"),G("sqrtPriceLimitX64"),Xe("isBaseInput")]),w=[...y?[{pubkey:y,isSigner:!1,isWritable:!0}]:[],...m.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:d,isSigner:!1,isWritable:!0},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...w],A=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:b},A);let k=Buffer.from([...Ve.swap,...A]);return new _e({keys:P,programId:e,data:k})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new B(e.programId),new B(e.id)],[m,d]=[new B(t.vault.A),new B(t.vault.B)],[p,g]=[new B(e.mintA.address),new B(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(u,n.wallet,l,new B(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:d,f?d:m,f?p:g,f?g:p,c,m,o,s,a,!0,Ue(u,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[ce.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,c,u,l,m,d){let p=$([M("openTime"),M("endTime"),G("emissionsPerSecondX64")]),g=[{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:Tt.programId,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:be(l),endTime:be(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...Ve.initReward,...f]);return new _e({keys:g,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new B(e.programId),new B(e.id)],a=Zr(o,s,i.mint).publicKey,c=_t(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new B(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:[ce.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,c,u,l,m,d){let p=$([se("rewardIndex"),G("emissionsPerSecondX64"),M("openTime"),M("endTime")]),g=[{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:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:d,openTime:be(l),endTime:be(m)},f);let b=Buffer.from([...Ve.setRewardEmissions,...f]);return new _e({keys:g,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new B(e.programId),new B(e.id)],a,c,u;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,c=new B(t.rewardInfos[d].vault),u=new B(t.rewardInfos[d].mint.address));(a===void 0||c===void 0)&&fi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=_t(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new B(e.config.id),n.tokenAccount,c,u,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:m,instructionTypes:[ce.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let c=$([se("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:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let m=Buffer.from([...Ve.collectReward,...l]);return new _e({keys:u,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new B(e.programId),new B(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,c=new B(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&fi.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:[ce.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new B(e.programId),new B(e.id)],[m,d]=[new B(t.vault.A),new B(t.vault.B)],[p,g]=[new B(e.mintA.address),new B(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(u,n.wallet,l,new B(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:g,f?g:p,c,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[ce.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import Le from"bn.js";var rr=class extends Et{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||W.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:c,computeBudgetConfig:u,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,g,f]=new Le(new W(i.address).toBuffer()).gt(new Le(new W(o.address).toBuffer()))?[o,i,new S(1).div(a)]:[i,o,a],b=O.priceToSqrtPriceX64(f,p.decimals,g.decimals),y=await pe.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:g,ammConfigId:s.id,initialPriceX64:b,startTime:c,forerunCreate:l});return d.addInstruction(y),d.addCustomComputeBudget(u),d.versionBuild({txVersion:m,extInfo:{address:j(_({},y.address),{programId:t.toString(),id:y.address.poolId.toString(),mintA:p,mintB:g,openTime:c.toString(),vault:{A:y.address.mintAVault.toString(),B:y.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:_({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:y.address.poolId.toString(),mintA:p,mintB:g,feeRate:s.tradeFeeRate,openTime:c.toString(),programId:t.toString(),price:f.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:[]}},Ur),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:g}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,y=null,h=n.useSOLBalance&&e.mintA.address===J.toString(),w=n.useSOLBalance&&e.mintB.address===J.toString(),[P,A]=s==="MintA"?[a,c]:[c,a],{account:k,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||P.isZero()?{payer:this.scope.ownerPubKey,amount:P}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});k&&(b=k),f.addInstruction(x||{});let{account:I,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:w||A.isZero()?{payer:this.scope.ownerPubKey,amount:A}:void 0,skipCloseAccount:!w,notUseTokenAccount:w,associatedOnly:w?!1:u,checkCreateATAOwner:l});I&&(y=I),f.addInstruction(N||{}),(!b||!y)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let E=t||await this.getClmmPoolKeys(e.id),V=await pe.openPositionFromBaseInstructions({poolInfo:e,poolKeys:E,ownerInfo:j(_({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:y}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(V),f.addCustomComputeBudget(p),f.versionBuild({txVersion:g,extInfo:V.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:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let g=this.createTxBuilder(),f=null,b=null,y=n.useSOLBalance&&e.mintA.address===J.toBase58(),h=n.useSOLBalance&&e.mintB.address===J.toBase58(),{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:y?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:u,checkCreateATAOwner:l});w&&(f=w),g.addInstruction(P||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});A&&(b=A),g.addInstruction(k||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let x=t||await this.getClmmPoolKeys(e.id),I=await pe.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:x,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:i,amountMaxB:o,withMetadata:m,getEphemeralSigners:p});return g.addInstruction(I),g.versionBuild({txVersion:d,extInfo:{address:I.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,g,f=a.useSOLBalance&&t.mintA.address===J.toString(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});y&&(p=y),d.addInstruction(h||{});let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});w&&(g=w),d.addInstruction(P||{}),!p&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getClmmPoolKeys(t.id),k=pe.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:A,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:g},liquidity:s,amountMaxA:i,amountMaxB:o});return d.addInstruction(k),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:k.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,g,f=a.useSOLBalance&&t.mintA.address===J.toString(),b=a.useSOLBalance&&t.mintB.address===J.toString(),{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});y&&(p=y),d.addInstruction(h||{});let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});w&&(g=w),d.addInstruction(P||{}),!p&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getClmmPoolKeys(t.id),k=pe.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:A,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:g},base:i,baseAmount:o,otherAmountMax:s});return d.addInstruction(k),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:k.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let d=this.createTxBuilder(),p=i.useSOLBalance&&t.mintA.address===J.toString(),g=i.useSOLBalance&&t.mintB.address===J.toString(),f,b,{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new W(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:c,checkCreateATAOwner:u});f=y,h&&d.addInstruction(h);let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new W(t.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!g,associatedOnly:g?!1:c,checkCreateATAOwner:u});b=w,P&&d.addInstruction(P);let A=[];for(let N of t.rewardDefaultInfos){let E=i.useSOLBalance&&N.mint.address===J.toString(),V;if(N.mint.address===t.mintA.address)V=f;else if(N.mint.address===t.mintB.address)V=b;else{let{account:he,instructionParams:ne}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(N.mint.programId),mint:new W(N.mint.address),notUseTokenAccount:E,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!E,associatedOnly:E?!1:c,checkCreateATAOwner:u});V=he,ne&&d.addInstruction(ne)}A.push(V)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let k=await this.getClmmPoolKeys(t.id),x=await pe.decreaseLiquidityInstructions({poolInfo:t,poolKeys:k,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:A},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:x.instructions,instructionTypes:[ce.ClmmDecreasePosition]});let I=_({},x.address);if(i.closePosition){let N=await pe.closePositionInstructions({poolInfo:t,poolKeys:k,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:N.instructions,endInstructionTypes:N.instructionTypes}),I=_(_({},I),N.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=pe.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.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()===J.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(n.mint.address),mint:new W(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Le(new S(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:i,checkCreateATAOwner:o});d&&c.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),g=pe.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new W(n.mint.programId),mint:new W(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:D.decimalToX64(n.perSecond)}});return c.addInstruction(g),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:g.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let c=this.createTxBuilder(),u={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===J.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(l.mint.programId),mint:new W(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Le(new S(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});g&&c.addInstruction(g),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=pe.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new W(l.mint.programId),mint:new W(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:D.decimalToX64(l.perSecond)}});u=_(_({},u),b.address),c.addInstruction(b)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}async setReward({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.equals(J),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Le(new S(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:u?!1:i,checkCreateATAOwner:o});m&&c.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=pe.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:D.decimalToX64(n.perSecond)}});return c.addInstruction(p),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let c=this.createTxBuilder(),u={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===J.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(l.mint.programId),mint:new W(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Le(new S(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});p&&c.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id),f=pe.setRewardInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new W(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:D.decimalToX64(l.perSecond)}});c.addInstruction(f),u=_(_({},u),f.address)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),c=t.useSOLBalance&&n.equals(J),{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(s.mint.programId),mint:n,notUseTokenAccount:c,owner:this.scope.ownerPubKey,skipCloseAccount:!c,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:c?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),u||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=pe.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:u},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let c of n){let u=e.rewardDefaultInfos.find(f=>f.mint.address===c.toString());if(!u){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let l=t.useSOLBalance&&c.equals(J),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(u.mint.programId),mint:c,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),g=pe.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:c});s.addInstruction(g),a=_(_({},a),g.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,txVersion:l}){let m=this.createTxBuilder(),d=s.useSOLBalance&&e.mintA.address===J.toBase58(),p=s.useSOLBalance&&e.mintB.address===J.toBase58(),g;!o||o.equals(new S(0))?g=t.toString()===e.mintA.address?rt.add(new Le(1)):it.sub(new Le(1)):g=O.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new W(e.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:c,checkCreateATAOwner:u});f=h,w&&m.addInstruction(w)}let b;if(!b){let{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new W(e.mintB.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:c,checkCreateATAOwner:u});b=h,w&&m.addInstruction(w)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id);return m.addInstruction(pe.makeSwapBaseInInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new W(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:g,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:c}){let u={};for(let m of this.scope.account.tokenAccountRawInfos)i?Ee(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(u[m.accountInfo.mint.toString()]=m.pubkey):u[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(w=>!w.liquidity.isZero()||w.rewardInfos.find(P=>!P.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===J.toString(),g=n.useSOLBalance&&d.mintB.address===J.toString(),f=u[d.mintA.address];if(!f){let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new W(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:o});f=w,P&&l.addInstruction(P)}let b=u[d.mintB.address];if(!b){let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new W(d.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,skipCloseAccount:!g,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:g?!1:i,checkCreateATAOwner:o});b=w,P&&l.addInstruction(P)}u[d.mintA.address]=f,u[d.mintB.address]=b;let y=[];for(let w of d.rewardDefaultInfos){let P=n.useSOLBalance&&w.mint.address===J.toString(),A=u[w.mint.address];if(!A){let{account:k,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new W(w.mint.programId),mint:new W(w.mint.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:P?!1:i});A=k,x&&l.addInstruction(x)}u[w.mint.address]=A,y.push(A)}let h=await this.getClmmPoolKeys(d.id);for(let w of t[m.id]){let P=pe.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:w,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:y},liquidity:new Le(0),amountMinA:new Le(0),amountMinB:new Le(0)});l.addInstruction(P)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:c}):l.sizeCheckBuild({computeBudgetConfig:c})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(_t(e).publicKey);return t?ri.decode(t.data).whitelistMints.filter(i=>!i.equals(W.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new Le(1))).map(s=>Ne(new W(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=gn.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){let t=await this.scope.connection.getAccountInfo(new W(e)),n=fn.decode(t.data),i=O.sqrtPriceX64ToPrice(n.sqrtPriceX64,n.mintDecimalsA,n.mintDecimalsB).toNumber();return j(_({},n),{currentPrice:i})}};export{Wo as AMM_CONFIG_SEED,wm as AmmConfigLayout,Vr as BIT_PRECISION,rr as Clmm,pe as ClmmInstrument,jn as EXTENSION_TICKARRAY_BITMAP_SIZE,ln as FEE_RATE_DENOMINATOR,ls as FETCH_TICKARRAY_COUNT,qo as Fee,qr as LOG_B_2_X32,Wr as LOG_B_P_ERR_MARGIN_LOWER_X64,Gr as LOG_B_P_ERR_MARGIN_UPPER_X64,U as LiquidityMath,it as MAX_SQRT_PRICE_X64,Be as MAX_TICK,rt as MIN_SQRT_PRICE_X64,ke as MIN_TICK,D as MathUtil,Wn as MaxU64,_r as MaxUint128,je as NEGATIVE_ONE,Ge as ONE,zo as OPERATION_SEED,Zn as ObservationInfoLayout,ss as ObservationLayout,ri as OperationLayout,Xo as POOL_REWARD_VAULT_SEED,Go as POOL_SEED,Yo as POOL_TICK_ARRAY_BITMAP_SEED,Uo as POOL_VAULT_SEED,Yr as POSITION_SEED,fn as PoolInfoLayout,xe as PoolUtils,gn as PositionInfoLayout,cs as PositionRewardInfoLayout,Gt as PositionUtils,hm as ProtocolPositionLayout,un as Q128,Ke as Q64,as as RewardInfo,O as SqrtPriceMath,bt as SwapMath,ft as TICK_ARRAY_BITMAP_SIZE,Ho as TICK_ARRAY_SEED,de as TICK_ARRAY_SIZE,nl as TICK_SPACINGS,Qe as TickArrayBitmap,ii as TickArrayBitmapExtensionLayout,qt as TickArrayBitmapExtensionUtils,Wt as TickArrayLayout,us as TickLayout,gt as TickMath,X as TickQuery,C as TickUtils,Dt as U64Resolution,il as U64_IGNORE_RANGE,H as ZERO,sd as getLiquidityFromAmounts,ml as getPdaAmmConfigId,Ue as getPdaExBitmapAccount,dn as getPdaMetadataKey,_t as getPdaOperationAccount,Ne as getPdaPersonalPositionAddress,jr as getPdaPoolId,Zr as getPdaPoolRewardVaulId,Xn as getPdaPoolVaultId,pt as getPdaProtocolPositionAddress,Z as getPdaTickArrayAddress,sl as i16ToBytes,mn as i32ToBytes,vt as isZero,Gn as leadingZeros,zr as leastSignificantBit,rl as mockCreatePoolInfo,Ur as mockV3CreatePoolInfo,Hr as mostSignificantBit,Un as trailingZeros,Xr as u16ToBytes,al as u32ToBytes};
|
|
2
2
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|