@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 pr=Object.defineProperty,gr=Object.defineProperties;var br=Object.getOwnPropertyDescriptors;var Gt=Object.getOwnPropertySymbols;var ri=Object.prototype.hasOwnProperty,oi=Object.prototype.propertyIsEnumerable;var ii=(i,e,t)=>e in i?pr(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,v=(i,e)=>{for(var t in e||(e={}))ri.call(e,t)&&ii(i,t,e[t]);if(Gt)for(var t of Gt(e))oi.call(e,t)&&ii(i,t,e[t]);return i},Z=(i,e)=>gr(i,br(e));var Xt=(i,e)=>{var t={};for(var n in i)ri.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&Gt)for(var n of Gt(i))e.indexOf(n)<0&&oi.call(i,n)&&(t[n]=i[n]);return t};import{PublicKey as U}from"@solana/web3.js";var yt=9e15,tt=1e9,wn="0123456789abcdef",zt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",jt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",hn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-yt,maxE:yt,crypto:!1},ui,ze,_=!0,Yt="[DecimalError] ",et=Yt+"Invalid argument: ",li=Yt+"Precision limit exceeded",di=Yt+"crypto unavailable",mi="[object Decimal]",Pe=Math.floor,ue=Math.pow,yr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,wr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,hr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,fi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ee=1e7,L=7,Ar=9007199254740991,Pr=zt.length-1,An=jt.length-1,k={toStringTag:mi};k.absoluteValue=k.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),K(i)};k.ceil=function(){return K(new this.constructor(this),this.e+1,2)};k.clampedTo=k.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(et+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};k.comparedTo=k.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,c=o.s,u=i.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!==i.e)return o.e>i.e^c<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^c<0?1:-1;return n===r?0:n>r^c<0?1:-1};k.cosine=k.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+L,n.rounding=1,t=kr(n,wi(n,t)),n.precision=i,n.rounding=e,K(ze==2||ze==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};k.cubeRoot=k.cbrt=function(){var i,e,t,n,r,o,s,a,c,u,l=this,d=l.constructor;if(!l.isFinite()||l.isZero())return new d(l);for(_=!1,o=l.s*ue(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=ge(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ue(t,1/3),i=Pe((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new d(t),n.s=l.s):n=new d(o.toString()),s=(i=d.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=Y(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"||!r&&t=="4999"){if(!r&&(K(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(K(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return _=!0,K(n,i,d.rounding,e)};k.decimalPlaces=k.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-Pe(this.e/L))*L,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};k.dividedBy=k.div=function(i){return Y(this,new this.constructor(i))};k.dividedToIntegerBy=k.divToInt=function(i){var e=this,t=e.constructor;return K(Y(e,new t(i),0,1,1),t.precision,t.rounding)};k.equals=k.eq=function(i){return this.cmp(i)===0};k.floor=function(){return K(new this.constructor(this),this.e+1,3)};k.greaterThan=k.gt=function(i){return this.cmp(i)>0};k.greaterThanOrEqualTo=k.gte=function(i){var e=this.cmp(i);return e==1||e===0};k.hyperbolicCosine=k.cosh=function(){var i,e,t,n,r,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,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/$t(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=wt(s,1,o.times(e),new s(1),!0);for(var c,u=i,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)};k.hyperbolicSine=k.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=wt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/$t(5,i)),r=wt(o,2,r,r,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,K(r,e,t,!0)};k.hyperbolicTangent=k.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,Y(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};k.inverseCosine=k.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Me(t,r,o):new t(0):new t(NaN):e.isZero()?Me(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Me(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};k.inverseHyperbolicCosine=k.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,_=!1,t=t.times(t).minus(1).sqrt().plus(t),_=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};k.inverseHyperbolicSine=k.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,_=!1,t=t.times(t).plus(1).sqrt().plus(t),_=!0,n.precision=i,n.rounding=e,t.ln())};k.inverseHyperbolicTangent=k.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?K(new o(r),i,e,!0):(o.precision=t=n-r.e,r=Y(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};k.inverseSine=k.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=Me(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};k.inverseTangent=k.atan=function(){var i,e,t,n,r,o,s,a,c,u=this,l=u.constructor,d=l.precision,m=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&d+4<=An)return s=Me(l,d+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(d+4<=An)return s=Me(l,d+4,m).times(.5),s.s=u.s,s}for(l.precision=a=d+10,l.rounding=1,t=Math.min(28,a/L+2|0),i=t;i;--i)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(_=!1,e=Math.ceil(a/L),n=1,c=u.times(u),s=new l(u),r=u;i!==-1;)if(r=r.times(c),o=s.minus(r.div(n+=2)),r=r.times(c),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),_=!0,K(s,l.precision=d,l.rounding=m,!0)};k.isFinite=function(){return!!this.d};k.isInteger=k.isInt=function(){return!!this.d&&Pe(this.e/L)>this.d.length-2};k.isNaN=function(){return!this.s};k.isNegative=k.isNeg=function(){return this.s<0};k.isPositive=k.isPos=function(){return this.s>0};k.isZero=function(){return!!this.d&&this.d[0]===0};k.lessThan=k.lt=function(i){return this.cmp(i)<0};k.lessThanOrEqualTo=k.lte=function(i){return this.cmp(i)<1};k.logarithm=k.log=function(i){var e,t,n,r,o,s,a,c,u=this,l=u.constructor,d=l.precision,m=l.rounding,f=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.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(r=t[0];r%10===0;)r/=10;o=r!==1}if(_=!1,a=d+f,s=Je(u,a),n=e?Zt(l,a+10):Je(i,a),c=Y(s,n,a,1),Tt(c.d,r=d,m))do if(a+=10,s=Je(u,a),n=e?Zt(l,a+10):Je(i,a),c=Y(s,n,a,1),!o){+ge(c.d).slice(r+1,r+15)+1==1e14&&(c=K(c,d+1,0));break}while(Tt(c.d,r+=10,m));return _=!0,K(c,d,m)};k.minus=k.sub=function(i){var e,t,n,r,o,s,a,c,u,l,d,m,f=this,g=f.constructor;if(i=new g(i),!f.d||!i.d)return!f.s||!i.s?i=new g(NaN):f.d?i.s=-i.s:i=new g(i.d||f.s!==i.s?f:NaN),i;if(f.s!=i.s)return i.s=-i.s,f.plus(i);if(u=f.d,m=i.d,a=g.precision,c=g.rounding,!u[0]||!m[0]){if(m[0])i.s=-i.s;else if(u[0])i=new g(f);else return new g(c===3?-0:0);return _?K(i,a,c):i}if(t=Pe(i.e/L),l=Pe(f.e/L),u=u.slice(),o=l-t,o){for(d=o<0,d?(e=u,o=-o,s=m.length):(e=m,t=l,s=u.length),n=Math.max(Math.ceil(a/L),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=m.length,d=n<s,d&&(s=n),n=0;n<s;n++)if(u[n]!=m[n]){d=u[n]<m[n];break}o=0}for(d&&(e=u,u=m,m=e,i.s=-i.s),s=u.length,n=m.length-s;n>0;--n)u[s++]=0;for(n=m.length;n>o;){if(u[--n]<m[n]){for(r=n;r&&u[--r]===0;)u[r]=Ee-1;--u[r],u[n]+=Ee}u[n]-=m[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(i.d=u,i.e=Qt(u,t),_?K(i,a,c):i):new g(c===3?-0:0)};k.modulo=k.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?K(new n(t),n.precision,n.rounding):(_=!1,n.modulo==9?(e=Y(t,i.abs(),0,3,1),e.s*=i.s):e=Y(t,i,0,n.modulo,1),e=e.times(i),_=!0,t.minus(e))};k.naturalExponential=k.exp=function(){return Pn(this)};k.naturalLogarithm=k.ln=function(){return Je(this)};k.negated=k.neg=function(){var i=new this.constructor(this);return i.s=-i.s,K(i)};k.plus=k.add=function(i){var e,t,n,r,o,s,a,c,u,l,d=this,m=d.constructor;if(i=new m(i),!d.d||!i.d)return!d.s||!i.s?i=new m(NaN):d.d||(i=new m(i.d||d.s===i.s?d:NaN)),i;if(d.s!=i.s)return i.s=-i.s,d.minus(i);if(u=d.d,l=i.d,a=m.precision,c=m.rounding,!u[0]||!l[0])return l[0]||(i=new m(d)),_?K(i,a,c):i;if(o=Pe(d.e/L),n=Pe(i.e/L),u=u.slice(),r=o-n,r){for(r<0?(t=u,r=-r,s=l.length):(t=l,n=o,s=u.length),o=Math.ceil(a/L),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=u.length,r=l.length,s-r<0&&(r=s,t=l,l=u,u=t),e=0;r;)e=(u[--r]=u[r]+l[r]+e)/Ee|0,u[r]%=Ee;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return i.d=u,i.e=Qt(u,n),_?K(i,a,c):i};k.precision=k.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(et+i);return t.d?(e=pi(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};k.round=function(){var i=this,e=i.constructor;return K(new e(i),i.e+1,e.rounding)};k.sine=k.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+L,n.rounding=1,t=xr(n,wi(n,t)),n.precision=i,n.rounding=e,K(ze>2?t.neg():t,i,e,!0)):new n(NaN)};k.squareRoot=k.sqrt=function(){var i,e,t,n,r,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(_=!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(Y(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"||!r&&e=="4999"){if(!r&&(K(o,c+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(K(n,c+1,1),i=!n.times(n).eq(s));break}return _=!0,K(n,c,l.rounding,i)};k.tangent=k.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=Y(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,K(ze==2||ze==4?t.neg():t,i,e,!0)):new n(NaN)};k.times=k.mul=function(i){var e,t,n,r,o,s,a,c,u,l=this,d=l.constructor,m=l.d,f=(i=new d(i)).d;if(i.s*=l.s,!m||!m[0]||!f||!f[0])return new d(!i.s||m&&!m[0]&&!f||f&&!f[0]&&!m?NaN:!m||!f?i.s/0:i.s*0);for(t=Pe(l.e/L)+Pe(i.e/L),c=m.length,u=f.length,c<u&&(o=m,m=f,f=o,s=c,c=u,u=s),o=[],s=c+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,r=c+n;r>n;)a=o[r]+f[n]*m[r-n-1]+e,o[r--]=a%Ee|0,e=a/Ee|0;o[r]=(o[r]+e)%Ee|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=Qt(o,t),_?K(i,d.precision,d.rounding):i};k.toBinary=function(i,e){return Tn(this,2,i,e)};k.toDecimalPlaces=k.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ie(i,0,tt),e===void 0?e=n.rounding:Ie(e,0,8),K(t,i+t.e+1,e))};k.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=We(n,!0):(Ie(i,0,tt),e===void 0?e=r.rounding:Ie(e,0,8),n=K(new r(n),i+1,e),t=We(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};k.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=We(r):(Ie(i,0,tt),e===void 0?e=o.rounding:Ie(e,0,8),n=K(new o(r),i+r.e+1,e),t=We(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};k.toFraction=function(i){var e,t,n,r,o,s,a,c,u,l,d,m,f=this,g=f.d,p=f.constructor;if(!g)return new p(f);if(u=t=new p(1),n=c=new p(0),e=new p(n),o=e.e=pi(g)-f.e-1,s=o%L,e.d[0]=ue(10,s<0?L+s:s),i==null)i=o>0?e:u;else{if(a=new p(i),!a.isInt()||a.lt(u))throw Error(et+a);i=a.gt(e)?o>0?e:u:a}for(_=!1,a=new p(ge(g)),l=p.precision,p.precision=o=g.length*L*2;d=Y(a,e,0,1,1),r=t.plus(d.times(n)),r.cmp(i)!=1;)t=n,n=r,r=u,u=c.plus(d.times(r)),c=r,r=e,e=a.minus(d.times(r)),a=r;return r=Y(i.minus(t),n,0,1,1),c=c.plus(r.times(u)),t=t.plus(r.times(n)),c.s=u.s=f.s,m=Y(u,n,o,1).minus(f).abs().cmp(Y(c,t,o,1).minus(f).abs())<1?[u,n]:[c,t],p.precision=l,_=!0,m};k.toHexadecimal=k.toHex=function(i,e){return Tn(this,16,i,e)};k.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:Ie(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?(_=!1,t=Y(t,i,0,e,1).times(i),_=!0,K(t)):(i.s=t.s,t=i),t};k.toNumber=function(){return+this};k.toOctal=function(i,e){return Tn(this,8,i,e)};k.toPower=k.pow=function(i){var e,t,n,r,o,s,a=this,c=a.constructor,u=+(i=new c(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new c(ue(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,i.eq(1))return K(a,n,o);if(e=Pe(i.e/L),e>=i.d.length-1&&(t=u<0?-u:u)<=Ar)return r=gi(c,a,t,n),i.s<0?new c(1).div(r):K(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new c(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=ue(+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):(_=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=Pn(i.times(Je(a,n+t)),n),r.d&&(r=K(r,n+5,1),Tt(r.d,n,o)&&(e=n+10,r=K(Pn(i.times(Je(a,e+t)),e),e+5,1),+ge(r.d).slice(n+1,n+15)+1==1e14&&(r=K(r,n+1,0)))),r.s=s,_=!0,c.rounding=o,K(r,n,o))};k.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=We(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ie(i,1,tt),e===void 0?e=r.rounding:Ie(e,0,8),n=K(new r(n),i,e),t=We(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};k.toSignificantDigits=k.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Ie(i,1,tt),e===void 0?e=n.rounding:Ie(e,0,8)),K(new n(t),i,e)};k.toString=function(){var i=this,e=i.constructor,t=We(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};k.truncated=k.trunc=function(){return K(new this.constructor(this),this.e+1,1)};k.valueOf=k.toJSON=function(){var i=this,e=i.constructor,t=We(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function ge(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=L-n.length,t&&(o+=$e(t)),o+=n;s=i[e],n=s+"",t=L-n.length,t&&(o+=$e(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ie(i,e,t){if(i!==~~i||i<e||i>t)throw Error(et+i)}function Tt(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=L,r=0):(r=Math.ceil((e+1)/L),e%=L),o=ue(10,L-e),a=i[r]%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)&&(i[r+1]/o/100|0)==ue(10,e-2)-1||(a==o/2||a==0)&&(i[r+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)&&(i[r+1]/o/1e3|0)==ue(10,e-3)-1,s}function Ht(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=wn.indexOf(i.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function kr(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/$t(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=wt(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var Y=function(){function i(n,r,o){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*r+a,n[c]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(n[a]!=r[a]){c=n[a]>r[a]?1:-1;break}return c}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,c){var u,l,d,m,f,g,p,b,y,h,w,P,A,T,x,I,N,M,q,he,te=n.constructor,Ae=n.s==r.s?1:-1,ne=n.d,z=r.d;if(!ne||!ne[0]||!z||!z[0])return new te(!n.s||!r.s||(ne?z&&ne[0]==z[0]:!z)?NaN:ne&&ne[0]==0||!z?Ae*0:Ae/0);for(c?(f=1,l=n.e-r.e):(c=Ee,f=L,l=Pe(n.e/f)-Pe(r.e/f)),q=z.length,N=ne.length,y=new te(Ae),h=y.d=[],d=0;z[d]==(ne[d]||0);d++);if(z[d]>(ne[d]||0)&&l--,o==null?(T=o=te.precision,s=te.rounding):a?T=o+(n.e-r.e)+1:T=o,T<0)h.push(1),g=!0;else{if(T=T/f+2|0,d=0,q==1){for(m=0,z=z[0],T++;(d<N||m)&&T--;d++)x=m*c+(ne[d]||0),h[d]=x/z|0,m=x%z|0;g=m||d<N}else{for(m=c/(z[0]+1)|0,m>1&&(z=i(z,m,c),ne=i(ne,m,c),q=z.length,N=ne.length),I=q,w=ne.slice(0,q),P=w.length;P<q;)w[P++]=0;he=z.slice(),he.unshift(0),M=z[0],z[1]>=c/2&&++M;do m=0,u=e(z,w,q,P),u<0?(A=w[0],q!=P&&(A=A*c+(w[1]||0)),m=A/M|0,m>1?(m>=c&&(m=c-1),p=i(z,m,c),b=p.length,P=w.length,u=e(p,w,b,P),u==1&&(m--,t(p,q<b?he:z,b,c))):(m==0&&(u=m=1),p=z.slice()),b=p.length,b<P&&p.unshift(0),t(w,p,P,c),u==-1&&(P=w.length,u=e(z,w,q,P),u<1&&(m++,t(w,q<P?he:z,P,c))),P=w.length):u===0&&(m++,w=[0]),h[d++]=m,u&&w[0]?w[P++]=ne[I]||0:(w=[ne[I]],P=1);while((I++<N||w[0]!==void 0)&&T--);g=w[0]!==void 0}h[0]||h.shift()}if(f==1)y.e=l,ui=g;else{for(d=1,m=h[0];m>=10;m/=10)d++;y.e=d+l*f-1,K(y,a?o+y.e+1:o,s,g)}return y}}();function K(i,e,t,n){var r,o,s,a,c,u,l,d,m,f=i.constructor;e:if(e!=null){if(d=i.d,!d)return i;for(r=1,a=d[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=L,s=e,l=d[m=0],c=l/ue(10,r-s-1)%10|0;else if(m=Math.ceil((o+1)/L),a=d.length,m>=a)if(n){for(;a++<=m;)d.push(0);l=c=0,r=1,o%=L,s=o-L+1}else break e;else{for(l=a=d[m],r=1;a>=10;a/=10)r++;o%=L,s=o-L+r,c=s<0?0:l/ue(10,r-s-1)%10|0}if(n=n||e<0||d[m+1]!==void 0||(s<0?l:l%ue(10,r-s-1)),u=t<4?(c||n)&&(t==0||t==(i.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(o>0?s>0?l/ue(10,r-s):0:d[m-1])%10&1||t==(i.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=i.e+1,d[0]=ue(10,(L-e%L)%L),i.e=-e||0):d[0]=i.e=0,i;if(o==0?(d.length=m,a=1,m--):(d.length=m+1,a=ue(10,L-o),d[m]=s>0?(l/ue(10,r-s)%ue(10,s)|0)*a:0),u)for(;;)if(m==0){for(o=1,s=d[0];s>=10;s/=10)o++;for(s=d[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,d[0]==Ee&&(d[0]=1));break}else{if(d[m]+=a,d[m]!=Ee)break;d[m--]=0,a=1}for(o=d.length;d[--o]===0;)d.pop()}return _&&(i.e>f.maxE?(i.d=null,i.e=NaN):i.e<f.minE&&(i.e=0,i.d=[0])),i}function We(i,e,t){if(!i.isFinite())return yi(i);var n,r=i.e,o=ge(i.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+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+$e(-r-1)+o,t&&(n=t-s)>0&&(o+=$e(n))):r>=s?(o+=$e(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+$e(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=$e(n))),o}function Qt(i,e){var t=i[0];for(e*=L;t>=10;t/=10)e++;return e}function Zt(i,e,t){if(e>Pr)throw _=!0,t&&(i.precision=t),Error(li);return K(new i(zt),e,1,!0)}function Me(i,e,t){if(e>An)throw Error(li);return K(new i(jt),e,t,!0)}function pi(i){var e=i.length-1,t=e*L+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function $e(i){for(var e="";i--;)e+="0";return e}function gi(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/L+4);for(_=!1;;){if(t%2&&(o=o.times(e),ai(o.d,s)&&(r=!0)),t=Pe(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ai(e.d,s)}return _=!0,o}function si(i){return i.d[i.d.length-1]&1}function bi(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function Pn(i,e){var t,n,r,o,s,a,c,u=0,l=0,d=0,m=i.constructor,f=m.rounding,g=m.precision;if(!i.d||!i.d[0]||i.e>17)return new m(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(_=!1,c=g):c=e,a=new m(.03125);i.e>-2;)i=i.times(a),d+=5;for(n=Math.log(ue(2,d))/Math.LN10*2+5|0,c+=n,t=o=s=new m(1),m.precision=c;;){if(o=K(o.times(i),c,1),t=t.times(++l),a=s.plus(Y(o,t,c,1)),ge(a.d).slice(0,c)===ge(s.d).slice(0,c)){for(r=d;r--;)s=K(s.times(s),c,1);if(e==null)if(u<3&&Tt(s.d,c-n,f,u))m.precision=c+=10,t=o=a=new m(1),l=0,u++;else return K(s,m.precision=g,f,_=!0);else return m.precision=g,s}s=a}}function Je(i,e){var t,n,r,o,s,a,c,u,l,d,m,f=1,g=10,p=i,b=p.d,y=p.constructor,h=y.rounding,w=y.precision;if(p.s<0||!b||!b[0]||!p.e&&b[0]==1&&b.length==1)return new y(b&&!b[0]?-1/0:p.s!=1?NaN:b?0:p);if(e==null?(_=!1,l=w):l=e,y.precision=l+=g,t=ge(b),n=t.charAt(0),Math.abs(o=p.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)p=p.times(i),t=ge(p.d),n=t.charAt(0),f++;o=p.e,n>1?(p=new y("0."+t),o++):p=new y(n+"."+t.slice(1))}else return u=Zt(y,l+2,w).times(o+""),p=Je(new y(n+"."+t.slice(1)),l-g).plus(u),y.precision=w,e==null?K(p,w,h,_=!0):p;for(d=p,c=s=p=Y(p.minus(1),p.plus(1),l,1),m=K(p.times(p),l,1),r=3;;){if(s=K(s.times(m),l,1),u=c.plus(Y(s,new y(r),l,1)),ge(u.d).slice(0,l)===ge(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(Zt(y,l+2,w).times(o+""))),c=Y(c,new y(f),l,1),e==null)if(Tt(c.d,l-g,h,a))y.precision=l+=g,u=s=p=Y(d.minus(1),d.plus(1),l,1),m=K(p.times(p),l,1),r=a=1;else return K(c,y.precision=w,h,_=!0);else return y.precision=w,c;c=u,r+=2}}function yi(i){return String(i.s*i.s/0)}function kn(i,e){var t,n,r;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(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%L,t<0&&(n+=L),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=L;n<r;)i.d.push(+e.slice(n,n+=L));e=e.slice(n),n=L-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),_&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function Tr(i,e){var t,n,r,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),fi.test(e))return kn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(wr.test(e))t=16,e=e.toLowerCase();else if(yr.test(e))t=2;else if(hr.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=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=gi(n,new n(t),o,o*2)),u=Ht(e,t,Ee),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(i.s*0):(i.e=Qt(u,l),i.d=u,_=!1,s&&(i=Y(i,r,a*4)),c&&(i=i.times(Math.abs(c)<54?ue(2,c):xt.pow(2,c))),_=!0,i)}function xr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:wt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/$t(5,t)),e=wt(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function wt(i,e,t,n,r){var o,s,a,c,u=1,l=i.precision,d=Math.ceil(l/L);for(_=!1,c=t.times(t),a=new i(n);;){if(s=Y(a.times(c),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=Y(s.times(c),new i(e++*e++),l,1),s=a.plus(n),s.d[d]!==void 0){for(o=d;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return _=!0,s.d.length=d+1,s}function $t(i,e){for(var t=i;--e;)t*=i;return t}function wi(i,e){var t,n=e.s<0,r=Me(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return ze=n?4:1,e;if(t=e.divToInt(r),t.isZero())ze=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return ze=si(t)?n?2:3:n?4:1,e;ze=si(t)?n?1:4:n?3:2}return e.minus(r).abs()}function Tn(i,e,t,n){var r,o,s,a,c,u,l,d,m,f=i.constructor,g=t!==void 0;if(g?(Ie(t,1,tt),n===void 0?n=f.rounding:Ie(n,0,8)):(t=f.precision,n=f.rounding),!i.isFinite())l=yi(i);else{for(l=We(i),s=l.indexOf("."),g?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),m=new f(1),m.e=l.length-s,m.d=Ht(We(m),10,r),m.e=m.d.length),d=Ht(l,10,r),o=c=d.length;d[--c]==0;)d.pop();if(!d[0])l=g?"0p+0":"0";else{if(s<0?o--:(i=new f(i),i.d=d,i.e=o,i=Y(i,m,t,n,0,r),d=i.d,o=i.e,u=ui),s=d[t],a=r/2,u=u||d[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&d[t-1]&1||n===(i.s<0?8:7)),d.length=t,u)for(;++d[--t]>r-1;)d[t]=0,t||(++o,d.unshift(1));for(c=d.length;!d[c-1];--c);for(s=0,l="";s<c;s++)l+=wn.charAt(d[s]);if(g){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(d=Ht(l,r,e),c=d.length;!d[c-1];--c);for(s=1,l="1.";s<c;s++)l+=wn.charAt(d[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>c)for(o-=c;o--;)l+="0";else o<c&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function ai(i,e){if(i.length>e)return i.length=e,!0}function Br(i){return new this(i).abs()}function Ir(i){return new this(i).acos()}function Sr(i){return new this(i).acosh()}function Cr(i,e){return new this(i).plus(e)}function Kr(i){return new this(i).asin()}function Nr(i){return new this(i).asinh()}function Lr(i){return new this(i).atan()}function Rr(i){return new this(i).atanh()}function Mr(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=Me(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Me(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Me(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(Y(i,e,o,1)),e=Me(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(Y(i,e,o,1)),t}function Er(i){return new this(i).cbrt()}function Or(i){return K(i=new this(i),i.e+1,2)}function Fr(i,e,t){return new this(i).clamp(e,t)}function _r(i){if(!i||typeof i!="object")throw Error(Yt+"Object expected");var e,t,n,r=i.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],r&&(this[t]=hn[t]),(n=i[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",r&&(this[t]=hn[t]),(n=i[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(di);else this[t]=!1;else throw Error(et+t+": "+n);return this}function Dr(i){return new this(i).cos()}function vr(i){return new this(i).cosh()}function hi(i){var e,t,n;function r(o){var s,a,c,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,ci(o)){u.s=o.s,_?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.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++;_?s>r.maxE?(u.e=NaN,u.d=null):s<r.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),fi.test(o)?kn(u,o):Tr(u,o)}if(r.prototype=k,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=_r,r.clone=hi,r.isDecimal=ci,r.abs=Br,r.acos=Ir,r.acosh=Sr,r.add=Cr,r.asin=Kr,r.asinh=Nr,r.atan=Lr,r.atanh=Rr,r.atan2=Mr,r.cbrt=Er,r.ceil=Or,r.clamp=Fr,r.cos=Dr,r.cosh=vr,r.div=qr,r.exp=Wr,r.floor=Vr,r.hypot=Ur,r.ln=Gr,r.log=Xr,r.log10=zr,r.log2=Hr,r.max=jr,r.min=Zr,r.mod=Yr,r.mul=Qr,r.pow=$r,r.random=Jr,r.round=eo,r.sign=to,r.sin=no,r.sinh=io,r.sqrt=ro,r.sub=oo,r.sum=so,r.tan=ao,r.tanh=co,r.trunc=uo,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function qr(i,e){return new this(i).div(e)}function Wr(i){return new this(i).exp()}function Vr(i){return K(i=new this(i),i.e+1,3)}function Ur(){var i,e,t=new this(0);for(_=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return _=!0,new this(1/0);t=e}return _=!0,t.sqrt()}function ci(i){return i instanceof xt||i&&i.toStringTag===mi||!1}function Gr(i){return new this(i).ln()}function Xr(i,e){return new this(i).log(e)}function Hr(i){return new this(i).log(2)}function zr(i){return new this(i).log(10)}function jr(){return bi(this,arguments,"lt")}function Zr(){return bi(this,arguments,"gt")}function Yr(i,e){return new this(i).mod(e)}function Qr(i,e){return new this(i).mul(e)}function $r(i,e){return new this(i).pow(e)}function Jr(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ie(i,1,tt),n=Math.ceil(i/L),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error(di);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=L,n&&i&&(r=ue(10,L-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=L)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<L&&(t-=L-n)}return s.e=t,s.d=a,s}function eo(i){return K(i=new this(i),i.e+1,this.rounding)}function to(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function no(i){return new this(i).sin()}function io(i){return new this(i).sinh()}function ro(i){return new this(i).sqrt()}function oo(i,e){return new this(i).sub(e)}function so(){var i=0,e=arguments,t=new this(e[i]);for(_=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return _=!0,K(t,this.precision,this.rounding)}function ao(i){return new this(i).tan()}function co(i){return new this(i).tanh()}function uo(i){return K(i=new this(i),i.e+1,1)}k[Symbol.for("nodejs.util.inspect.custom")]=k.toString;k[Symbol.toStringTag]="Decimal";var xt=k.constructor=hi(hn);zt=new xt(zt);jt=new xt(jt);var S=xt;import{get as Ai,set as lo}from"lodash";import ki from"dayjs";import mo from"dayjs/plugin/utc";ki.extend(mo);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 ki().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}},Pi={},fo={};function le(i){let e=Ai(Pi,i);if(!e){let t=Ai(fo,i);e=new xn({name:i,logLevel:t}),lo(Pi,i,e)}return e}import{PublicKey as pc}from"@solana/web3.js";import bc from"bn.js";import So 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 po}from"@solana/spl-token";import{PublicKey as J,SystemProgram as Ti,SYSVAR_RENT_PUBKEY as go}from"@solana/web3.js";function Bn({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Cs=[Bn({pubkey:po,isWritable:!1}),Bn({pubkey:Ti.programId,isWritable:!1}),Bn({pubkey:go,isWritable:!1})];function In({publicKey:i,transformSol:e}){let t=xi(i.toString());if(t instanceof J)return e&&t.equals(Bt)?$:t;if(e&&t.toString()===Bt.toBase58())return $;if(typeof t=="string"){if(t===J.default.toBase58())return J.default;try{return new J(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function xi(i){try{return new J(i)}catch{return i}}var Jt=new J("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ks=new J("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),It=new J("SysvarRent111111111111111111111111111111111"),Ns=new J("SysvarC1ock11111111111111111111111111111111"),ht=new J("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ls=new J("Sysvar1nstructions1111111111111111111111111"),Rs=Ti.programId,Ms=new J("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Es=new J("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Os=new J("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Fs=new J("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),_s=new J("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ds=new J("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),vs=new J("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),qs=new J("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ws=new J("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Vs=new J("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Us=new J("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),$=new J("So11111111111111111111111111111111111111112"),Bt=J.default;function Sn(i){return In({publicKey:i,transformSol:!0})}import{PublicKey as bo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Bi}from"@solana/spl-token";var Ii={chainId:101,address:bo.default.toBase58(),programId:Bi.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:Bi.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:r,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=r||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)}},je=Kn;je.WSOL=new Kn(Z(v({},ut),{mint:ut.address}));import tn from"big.js";import ho from"bn.js";import Ao from"decimal.js-light";import yo from"toformat";var wo=yo,St=wo;var en=le("module/fraction"),Nn=St(tn),Ct=St(Ao),Po={[0]:Ct.ROUND_DOWN,[1]:Ct.ROUND_HALF_UP,[2]:Ct.ROUND_UP},ko={[0]:tn.roundDown,[1]:tn.roundHalfUp,[2]:tn.roundUp},H=class{constructor(e,t=new ho(1)){this.numerator=be(e),this.denominator=be(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new H(this.denominator,this.numerator)}add(e){let t=e instanceof H?e:new H(be(e));return this.denominator.eq(t.denominator)?new H(this.numerator.add(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof H?e:new H(be(e));return this.denominator.eq(t.denominator)?new H(this.numerator.sub(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof H?e:new H(be(e));return new H(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof H?e:new H(be(e));return new H(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:Po[n]});let r=new Ct(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.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 xo=le("Raydium_price"),Oe=class extends H{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new H(Ln(n.decimals),Ln(r.decimals))}get raw(){return new H(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&&xo.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,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var Rn=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=Rn;nn.SOL=new Rn(Ii);import Bo from"bn.js";var Si=new H(new Bo(100)),lt=class extends H{toSignificant(e=5,t,n){return this.mul(Si).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Si).toFixed(e,t,n)}};var Io=new Se(0),va=new Se(1),qa=new Se(2),Wa=new Se(3),Va=new Se(5),Mn=new Se(10),Ua=new Se(100),Ga=new Se(1e3),Xa=new Se(1e4),Ci=9007199254740991;function be(i){let e=le("Raydium_parseBigNumberish");if(i instanceof Se)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Se(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Ci||i<=-Ci)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Se(String(i))):typeof i=="bigint"?new Se(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Se(0))}function Ln(i){return Mn.pow(be(i))}var Co=le("Raydium_amount"),Ki=St(So);function Ko(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):Co.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ke=class extends H{constructor(t,n,r=!0,o){let s=new rn(0),a=Mn.pow(new rn(t.decimals));if(r)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,d]=Ko(n.toString(),t.decimals);c=be(l),u=be(d)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=le(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 ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return Ki.DP=this.token.decimals,new Ki(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Lt,sendAndConfirmTransaction as Dn,Transaction as Rt,TransactionMessage as Mt,VersionedTransaction as Et}from"@solana/web3.js";import _o from"axios";var se={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",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 No,ComputeBudgetProgram as Ni,Transaction as Ri,TransactionMessage as Lo,Keypair as Mi,VersionedTransaction as Ei}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ro}from"@solana/spl-token";var Li=le("Raydium_txUtil"),Oi=1644;function on(i){let e=[],t=[];return i.microLamports&&(e.push(Ni.setComputeUnitPrice({microLamports:i.microLamports})),t.push(se.SetComputeUnitPrice)),i.units&&(e.push(Ni.setComputeUnitLimit({units:i.units})),t.push(se.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function At(i){var e,t;try{return((t=await((e=i.getLatestBlockhash)==null?void 0:e.call(i)))==null?void 0:t.blockhash)||(await i.getRecentBlockhash()).blockhash}catch{return(await i.getRecentBlockhash()).blockhash}}function Mo(i,e){i.length<1&&Li.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Li.logWithError(`no signers provided:, ${e.toString()}`);let t=new Ri;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Oi}catch{return!1}}function Ke(i,e){let[t,n]=No.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Kt({instructions:i,payer:e,signers:t}){return Mo(i,[e,...t])}function Nt({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Mi.generate().publicKey.toString()}){let o=new Lo({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ei(o).serialize()).toString("base64").length<Oi}catch{return!1}}var Eo=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function dt(i){let e=[];return i.forEach(t=>{t instanceof Ri&&(t.recentBlockhash||(t.recentBlockhash=Ro.toBase58()),t.feePayer||(t.feePayer=Mi.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Ei&&(n=Eo(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as Fi,AddressLookupTableAccount as sn}from"@solana/web3.js";import{PublicKey as Oo}from"@solana/web3.js";import{getTransferFeeConfig as Oc,unpackMint as Fc}from"@solana/spl-token";var En=le("Raydium_accountInfo_util");async function nt(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=v({batchRequest:!1},t),o=On(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let d=i._buildArgs([l.map(m=>m.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=On(a,10);s=(await(await Promise.all(c.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&En.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(d=>{if(d){let{data:m,executable:f,lamports:g,owner:p,rentEpoch:b}=d;return m.length!==2&&m[1]!=="base64"&&En.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(m[0],"base64"),executable:f,lamports:g,owner:new Oo(p),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&En.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Fn(i,e,t){let n=await nt(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>Z(v({},r),{accountInfo:n[o]}))}async function _n({connection:i,address:e}){let t=await nt(i,[...new Set(e.map(r=>r.toString()))].map(r=>new Fi(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];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 Fi("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 _o.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:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Lt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(v({},t||{})):this.build(t)}build(e){let t=new Rt;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:r,skipPreflight:o=!0}=n||{},s=r!=null?r:await At(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),dt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Dn(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:r}=this.build(n),o=t.filter(u=>u.transaction.instructions.length>0),s=[r,...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 p;let{sequentially:l,onTxUpdate:d,recentBlockHash:m,skipPreflight:f=!0}=u||{},g=m!=null?m:await At(this.connection);if((p=this.owner)!=null&&p.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,y)=>(b.recentBlockhash=g,await Dn(this.connection,b,a[y].find(h=>h.publicKey.equals(this.owner.publicKey))?a[y]:[...a[y],this.owner.signer],{skipPreflight:f})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((h,w)=>(h.recentBlockhash=g,a[w].length&&h.sign(...a[w]),h));dt(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:f});w.push({txId:A,status:"sent",signedTx:y[h]}),d==null||d([...w]),h++,this.connection.onSignature(A,T=>{let x=w.findIndex(I=>I.txId===A);x>-1&&(w[x].status=T.err?"error":"success"),d==null||d([...w]),T.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:f});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 m=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=m,o=Xt(m,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=v(v({},this.cluster==="devnet"?{}:an),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let f of a)s[f]===void 0&&c.push(new Lt(f));let u=await _n({connection:this.connection,address:c});for(let[f,g]of Object.entries(u))s[f]=g;let l=new Mt({payerKey:this.feePayer,recentBlockhash:r?Lt.default.toBase58():await At(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),d=new Et(l);return d.sign(this.signers),{builder:this,transaction:d,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async f=>{var b;let{recentBlockHash:g,skipPreflight:p=!0}=f||{};if(g&&(d.message.recentBlockhash=g),dt([d]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))||d.sign([this.owner.signer]);let y=await this.connection.sendTransaction(d,{skipPreflight:p}),{lastValidBlockHeight:h,blockhash:w}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:w,lastValidBlockHeight:h,signature:y},"confirmed"),{txId:y,signedTx:d}}if(this.signAllTransactions){let y=await this.signAllTransactions([d]);return{txId:await this.connection.sendTransaction(y[0],{skipPreflight:p}),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:r}=await this.buildV0(n),o=t.filter(u=>u.builder.instructions.length>0),s=[r,...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:d,recentBlockHash:m,skipPreflight:f=!0}=u||{};if(m&&s.forEach(p=>p.message.recentBlockhash=m),dt(s),(g=this.owner)!=null&&g.isKeyPair){let{lastValidBlockHeight:p,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:f});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:p,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let p=await this.signAllTransactions(s);if(l){let b=0,y=[],h=async()=>{if(!p[b])return;let w=await this.connection.sendTransaction(p[b],{skipPreflight:f});y.push({txId:w,status:"sent",signedTx:p[b]}),d==null||d([...y]),b++,this.connection.onSignature(w,P=>{let A=y.findIndex(T=>T.txId===w);A>-1&&(y[A].status=P.err?"error":"success"),d==null||d([...y]),P.err||h()},"processed"),this.connection.getSignatureStatus(w)};return h(),{txIds:[],signedTxs:p}}else{let b=[];for(let y=0;y<p.length;y+=1){let h=await this.connection.sendTransaction(p[y],{skipPreflight:f});b.push(h)}return{txIds:b,signedTxs:p}}}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"]),r=t?on(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,d)=>Z(v({},l),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(l=>{let d=[...c,l],m=t?[...r.instructions,...d]:d,g=[...new Set(d.map(p=>p.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(p=>new Lt(p));if(c.length<12&&Kt({instructions:m,payer:this.feePayer,signers:g})||Kt({instructions:d,payer:this.feePayer,signers:g}))c.push(l);else{if(c.length===0)throw Error("item ins too big");Kt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:g})?s.push(new Rt().add(...r.instructions,...c)):s.push(new Rt().add(...c)),a.push(Array.from(new Set(c.map(p=>p.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(p=>o[p]).filter(p=>p!==void 0)),c=[l]}}),c.length>0){let d=[...new Set(c.map(m=>m.keys.filter(f=>f.isSigner).map(f=>f.pubkey.toString())).flat()).values()].map(m=>o[m]).filter(m=>m!==void 0);Kt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:d.map(m=>m.publicKey)})?s.push(new Rt().add(...r.instructions,...c)):s.push(new Rt().add(...c)),a.push(d)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:d,onTxUpdate:m,recentBlockHash:f,skipPreflight:g=!0}=l||{},p=f!=null?f:await At(this.connection);if(s.forEach(async(y,h)=>{y.recentBlockhash=p,a[h].length&&y.sign(...a[h])}),dt(s),(b=this.owner)!=null&&b.isKeyPair)return{txIds:await Promise.all(s.map(async(y,h)=>await Dn(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(d){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]}),m==null||m([...w]),h++,this.connection.onSignature(A,T=>{let x=w.findIndex(I=>I.txId===A);x>-1&&(w[x].status=T.err?"error":"success"),m==null||m([...w]),T.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:r=[]}=b,o=Xt(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=v(v({},this.cluster==="devnet"?{}:an),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),c=[];for(let y of a)s[y]===void 0&&c.push(new Lt(y));let u=await _n({connection:this.connection,address:c});for(let[y,h]of Object.entries(u))s[y]=h;let l=t?on(t):{instructions:[],instructionTypes:[]},d=await At(this.connection),m=this.signers.reduce((y,h)=>Z(v({},y),{[h.publicKey.toBase58()]:h}),{}),f=[],g=[],p=[];if(this.allInstructions.forEach(y=>{let h=[...p,y],w=t?[...l.instructions,...h]:h;if(p.length<12&&Nt({instructions:w,payer:this.feePayer,lookupTableAddressAccount:s})||Nt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))p.push(y);else{if(p.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,...p],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let A=new Mt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...p]}).compileToV0Message(Object.values(s));f.push(new Et(A))}else{let A=new Mt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...p]}).compileToV0Message(Object.values(s));f.push(new Et(A))}g.push(Array.from(new Set(p.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat())).map(A=>m[A]).filter(A=>A!==void 0)),p=[y]}}),p.length>0){let h=[...new Set(p.map(w=>w.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(w=>m[w]).filter(w=>w!==void 0);if(t&&Nt({instructions:[...l.instructions,...p],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let w=new Mt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...p]}).compileToV0Message(Object.values(s));f.push(new Et(w))}else{let w=new Mt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...p]}).compileToV0Message(Object.values(s));f.push(new Et(w))}g.push(h)}return{builder:this,transactions:f,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async y=>{var T;let{sequentially:h,onTxUpdate:w,recentBlockHash:P,skipPreflight:A=!0}=y||{};if(f.map(async(x,I)=>{g[I].length&&x.sign(g[I]),P&&(x.message.recentBlockhash=P)}),dt(f),(T=this.owner)!=null&&T.isKeyPair){let{lastValidBlockHeight:x,blockhash:I}=await this.connection.getLatestBlockhash();return f.forEach((N,M)=>{g[M].find(q=>q.publicKey.equals(this.owner.publicKey))||N.sign([this.owner.signer])}),{txIds:await Promise.all(f.map(async N=>{let M=await this.connection.sendTransaction(N,{skipPreflight:A});return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:x,signature:M},"confirmed"),M})),signedTxs:f}}if(this.signAllTransactions){let x=await this.signAllTransactions(f);if(h){let I=0,N=[],M=async()=>{if(!x[I])return;let q=await this.connection.sendTransaction(x[I],{skipPreflight:A});N.push({txId:q,status:"sent",signedTx:x[I]}),w==null||w([...N]),I++,this.connection.onSignature(q,he=>{let te=N.findIndex(Ae=>Ae.txId===q);te>-1&&(N[te].status=he.err?"error":"success"),w==null||w([...N]),he.err||M()},"processed"),this.connection.getSignatureStatus(q)};return M(),{txIds:[],signedTxs:x}}else{let I=[];for(let N=0;N<x.length;N+=1){let M=await this.connection.sendTransaction(x[N],{skipPreflight:A});I.push(M)}return{txIds:I,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function On(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ae}from"@solana/web3.js";var ru=new ae("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ou=new ae("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),su=new ae("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),au=new ae("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),cu=new ae("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),uu=new ae("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),lu=new ae("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),du=new ae("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),mu=new ae("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),fu=new ae("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),pu=new ae("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),gu=new ae("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),bu=new ae("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),yu=new ae("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),wu=new ae("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),hu=new ae("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Au=new ae("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Pu=new ae("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),ku=new ae("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Tu=new ae("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");import{PublicKey as Do}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vo}from"@solana/spl-token";function Fe(i,e,t){return Ke([i.toBuffer(),(t!=null?t:vo).toBuffer(),e.toBuffer()],new Do("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import _e from"bn.js";var Ot=1e4;function de(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=Z(v({},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<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new _e(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Ot){let c=new _e(o.maximumFee.toString());return{amount:i.add(c),fee:c,expirationTime:a}}else{let c=vn(i.mul(new _e(Ot)),new _e(Ot-o.transferFeeBasisPoints)),u=new _e(o.maximumFee.toString()),l=c.sub(i).gt(u)?i.add(u):c,d=vn(l.mul(new _e(o.transferFeeBasisPoints)),new _e(Ot)),m=d.gt(s)?s:d;return{amount:l,fee:m,expirationTime:a}}else{let c=vn(i.mul(new _e(o.transferFeeBasisPoints)),new _e(Ot)),u=c.gt(s)?s:c;return{amount:i,fee:u,expirationTime:a}}}function mt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function vn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new _e(0))?t.add(new _e(1)):t}var qn=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ft=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=le(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 Ve from"bn.js";var ce=new Ve(0),Ue=new Ve(1),Ze=new Ve(-1),Ce=new Ve(1).shln(64),un=new Ve(1).shln(128),Wn=Ce.sub(Ue),_t=64,_i=un.subn(1),Te=-443636,Be=-Te,it=new Ve("4295048016"),rt=new Ve("79226673521066979257578248091"),Di=16,vi="59543866431248",qi="184467440737095516",Wi="15793534762490258745",ln=new Ve(10).pow(new Ve(6));var Vi={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:[]},Ju=new Ve("18446744073700000000");import W from"bn.js";function dn(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Vn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Un(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Dt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Ui(i,e){return Dt(i,e)?null:Vn(i,e)}function Gi(i,e){return Dt(i,e)?null:Un(i,e)}var ol=Buffer.from("amm_config","utf8"),qo=Buffer.from("pool","utf8"),Wo=Buffer.from("pool_vault","utf8"),Vo=Buffer.from("pool_reward_vault","utf8"),Xi=Buffer.from("position","utf8"),Uo=Buffer.from("tick_array","utf8"),Go=Buffer.from("operation","utf8"),Xo=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Hi(i,e,t,n){return Ke([qo,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Gn(i,e,t){return Ke([Wo,e.toBuffer(),t.toBuffer()],i)}function zi(i,e,t){return Ke([Vo,e.toBuffer(),t.toBuffer()],i)}function j(i,e,t){return Ke([Uo,e.toBuffer(),dn(t)],i)}function ft(i,e,t,n){return Ke([Xi,e.toBuffer(),dn(t),dn(n)],i)}function Ne(i,e){return Ke([Xi,e.toBuffer()],i)}function mn(i){return Ke([Buffer.from("metadata","utf8"),ht.toBuffer(),i.toBuffer()],ht)}function vt(i){return Ke([Go],i)}function Ge(i,e){return Ke([Xo,e.toBuffer()],i)}import{PublicKey as ot}from"@solana/web3.js";import oe from"bn.js";import cs from"bn.js";import{PublicKey as es}from"@solana/web3.js";import Qi,{isBN as $i}from"bn.js";import{bits as cl,BitStructure as ul,blob as Ho,Blob as ll,cstr as dl,f32 as ml,f32be as fl,f64 as pl,f64be as gl,greedy as bl,Layout as zo,ns64 as yl,ns64be as wl,nu64 as hl,nu64be as Al,offset as Pl,s16 as kl,s16be as Tl,s24 as xl,s24be as Bl,s32 as jo,s32be as Il,s40 as Sl,s40be as Cl,s48 as Kl,s48be as Nl,s8 as Ll,seq as Zo,struct as Rl,Structure as Yo,u16 as Qo,u16be as Ml,u24 as El,u24be as Ol,u32 as Fl,u32be as _l,u40 as Dl,u40be as vl,u48 as ql,u48be as Wl,u8 as $o,UInt as Jo,union as Vl,Union as Ul,unionLayoutDiscriminator as Gl,utf8 as Xl}from"@solana/buffer-layout";var Xn=zo,ji=Yo;var Hn=Jo;var Zi=$o,Pt=Qo;var ye=jo;var Yi=Zo;var Le=Ho;var qt=class extends Xn{constructor(t,n,r){super(t,r);this.blob=Le(t),this.signed=n}decode(t,n=0){let r=new Qi(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new Qi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function re(i){return new Hn(1,i)}function Ye(i){return new Hn(4,i)}function R(i){return new qt(8,!1,i)}function V(i){return new qt(16,!1,i)}function Ji(i){return new qt(16,!0,i)}var fn=class extends Xn{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function ee(i){return new fn(Le(32),e=>new es(e),e=>e.toBuffer(),i)}function Xe(i){return new fn(Zi(),ts,ns,i)}function ts(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function ns(i){return i?1:0}var zn=class extends ji{decode(e,t){return super.decode(e,t)}};function Q(i,e,t){return new zn(i,e,t)}function ie(i,e,t){let n,r=typeof e=="number"?e:$i(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=$i(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 Yi(i,r,t)}var jn=14,Qe=class{static maxTickInTickarrayBitmap(e){return e*me*pt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!G.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-G.tickCount(n):t+G.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*me,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(r){let l=e.shln(1024-u-1),d=Ui(1024,l);if(d!==null){let m=(u-d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),d=Gi(1024,l);if(d!==null){let m=(u+d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o-G.tickCount(n)}}}},Wt=class{static getBitmapOffset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Qe.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&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<=Te)throw Error(`extensionTickBoundary check error: ${n}, ${Te}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:C.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=G.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=Qe.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let c=C.mergeTickArrayBitmap(e).shln(pt-1-a),u=Dt(512,c)?null:Vn(512,c);if(u!==null){let l=t-u*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=C.mergeTickArrayBitmap(e).shrn(a),u=Dt(512,c)?null:Un(512,c);if(u!==null){let l=t+u*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-G.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Qe.maxTickInTickarrayBitmap(t),r=Math.floor(n/G.tickCount(t));return e<0&&n!=0&&(r=pt-r),r}};var md=Q([Le(8),re("bump"),Pt("index"),ee(""),Ye("protocolFeeRate"),Ye("tradeFeeRate"),Pt("tickSpacing"),ie(R(),8,"")]),is=Q([Ye("blockTimestamp"),V("sqrtPriceX64"),V("cumulativeTimePriceX64"),ie(V(),1,"")]),Zn=Q([Le(8),Xe("initialized"),ee("poolId"),ie(is,1e3,"observations"),ie(V(),5,"")]),rs=Q([re("rewardState"),R("openTime"),R("endTime"),R("lastUpdateTime"),V("emissionsPerSecondX64"),R("rewardTotalEmissioned"),R("rewardClaimed"),ee("tokenMint"),ee("tokenVault"),ee("creator"),V("rewardGrowthGlobalX64")]),er=Q([Le(8),re("bump"),ee("ammConfig"),ee("creator"),ee("mintA"),ee("mintB"),ee("vaultA"),ee("vaultB"),ee("observationId"),re("mintDecimalsA"),re("mintDecimalsB"),Pt("tickSpacing"),V("liquidity"),V("sqrtPriceX64"),ye("tickCurrent"),Pt("observationIndex"),Pt("observationUpdateDuration"),V("feeGrowthGlobalX64A"),V("feeGrowthGlobalX64B"),R("protocolFeesTokenA"),R("protocolFeesTokenB"),V("swapInAmountTokenA"),V("swapOutAmountTokenB"),V("swapInAmountTokenB"),V("swapOutAmountTokenA"),re("status"),ie(re(),7,""),ie(rs,3,"rewardInfos"),ie(R(),16,"tickArrayBitmap"),R("totalFeesTokenA"),R("totalFeesClaimedTokenA"),R("totalFeesTokenB"),R("totalFeesClaimedTokenB"),R("fundFeesTokenA"),R("fundFeesTokenB"),R("startTime"),ie(R(),15*4-3,"padding")]),os=Q([V("growthInsideLastX64"),R("rewardAmountOwed")]),pn=Q([Le(8),re("bump"),ee("nftMint"),ee("poolId"),ye("tickLower"),ye("tickUpper"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),R("tokenFeesOwedA"),R("tokenFeesOwedB"),ie(os,3,"rewardInfos"),ie(R(),8,"")]),fd=Q([Le(8),re("bump"),ee("poolId"),ye("tickLowerIndex"),ye("tickUpperIndex"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),R("tokenFeesOwedA"),R("tokenFeesOwedB"),ie(V(),3,"rewardGrowthInside"),ie(R(),8,"")]),ss=Q([ye("tick"),Ji("liquidityNet"),V("liquidityGross"),V("feeGrowthOutsideX64A"),V("feeGrowthOutsideX64B"),ie(V(),3,"rewardGrowthsOutsideX64"),ie(Ye(),13,"")]),Vt=Q([Le(8),ee("poolId"),ye("startTickIndex"),ie(ss,me,"ticks"),re("initializedTickCount"),ie(re(),115,"")]),tr=Q([Le(329),ie(ee(),100,"whitelistMints")]),nr=Q([Le(8),ee("poolId"),ie(ie(R(),8),jn,"positiveTickArrayBitmap"),ie(ie(R(),8),jn,"negativeTickArrayBitmap")]);var as=15,G=class{static async getTickArrays(e,t,n,r,o,s,a){let c=[],u=C.getTickArrayStartIndexByTick(r,o),l=C.getInitializedTickArrayInRange(s,a,o,u,Math.floor(as/2));for(let f=0;f<l.length;f++){let{publicKey:g}=j(t,n,l[f]);c.push(g)}let d=(await nt(e,c)).map(f=>f!==null?Vt.decode(f.data):null),m={};for(let f=0;f<c.length;f++){let g=d[f];g!==null&&(m[g.startTickIndex]=Z(v({},g),{address:c[f]}))}return m}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,r,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:d,tickArrayAddress:m,tickArrayStartTickIndex:f}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[d,m,f]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/G.tickCount(t)),a=n?C.searchLowBitFromStart(r,o,s-1,1,t):C.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=me-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<me;){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,r,o,s){let a=C.getTickArrayStartIndexByTick(r,o),c=Math.floor((r-a)/o),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c-1}else for(c=c+1;c<me;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c+1}let{publicKey:d}=j(e,t,a);return{initializedTick:l,tickArrayAddress:d,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(C.checkIsOutOfBoundary(e)){if(e>Be)return!1;let n=C.getTickArrayStartIndexByTick(Te,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return me*e}};var me=60,pt=512,C=class{static getTickArrayAddressByTick(e,t,n,r){let o=C.getTickArrayStartIndexByTick(n,r),{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),r=Math.floor((e-n)/t);if(r<0||r>=me)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=G.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*G.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*me,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*me,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*me:e+t*me}static mergeTickArrayBitmap(e){let t=new cs(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*me));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,pt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=C.getAllInitializedTickArrayStartIndex(n,r,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,r,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===r)break}let c=G.tickCount(o);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,r,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===r)break}let c=G.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<Te||e>Be}static nextInitTick(e,t,n,r,o){if(G.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<me;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=me-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<me;){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 r=D.getSqrtPriceX64FromTick(t),o=D.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new S(1).div(t),o=gt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=D.getSqrtPriceX64FromTick(o),a=D.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 r=D.getSqrtPriceX64FromTick(t),o=D.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new S(1).div(t),o=gt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=D.getSqrtPriceX64FromTick(o),a=D.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 Ut=class{static getfeeGrowthInside(e,t,n){let r=new He(0),o=new He(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=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=F.wrappingSubU128(F.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),u=F.wrappingSubU128(F.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=F.mulDivFloor(F.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ce),c=t.tokenFeesOwedA.add(a),u=F.mulDivFloor(F.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ce),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=F.mulDivFloor(F.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ce),c=t.tokenFeesOwedA.add(a),u=F.mulDivFloor(F.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ce),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=F.wrappingSubU128(c,u.growthInsideLastX64),d=F.mulDivFloor(l,t.liquidity,Ce),m=u.rewardAmountOwed.add(d);o.push(m)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=F.wrappingSubU128(c,u.growthInsideLastX64),d=F.mulDivFloor(l,t.liquidity,Ce),m=u.rewardAmountOwed.add(d);o.push(m)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[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=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(F.wrappingSubU128(F.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[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=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(F.wrappingSubU128(F.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var b,y,h,w;let a=D.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),c=D.getSqrtPriceX64FromTick(t.tickLower),u=D.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,d=X.getAmountsFromLiquidity(a,c,u,n,o),[m,f]=[de(d.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),de(d.amountB,(y=e.mintB.extensions)==null?void 0:y.feeConfig,s,!0)],[g,p]=[de(new He(new S(d.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),de(new He(new S(d.amountB.toString()).mul(l).toFixed(0)),(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)];return{liquidity:n,amountA:m,amountB:f,amountSlippageA:g,amountSlippageB:p,expirationTime:mt(m.expirationTime,f.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as ir}from"@solana/spl-token";var xe=class{static getOutputAmountAndRemainAccounts(e,t,n,r,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:d,accounts:m,sqrtPriceX64:f,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,r,u,o);return a.push(...m),{expectedAmountOut:d.mul(Ze),remainingAccounts:a,executionPrice:f,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,r,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 p=this.preInitializedTickArrayStartIndex(e,s);if(p.isExist){let{publicKey:b}=j(e.programId,e.id,p.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:d,accounts:m,sqrtPriceX64:f,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,r.mul(Ze),u,o);return a.push(...m),{expectedAmountIn:d,remainingAccounts:a,executionPrice:f,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=xe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Wt.checkTickArrayIsInit(G.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,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,G.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/G.tickCount(e.tickSpacing)),r=t?C.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):C.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=G.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=Qe.nextInitializedTickArrayStartIndex(C.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Wt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Te||t>Be)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,c,u;let s=[];for(let l=0;l<o.length;l++){let d=o[l],m=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(d.tokenMint))==null?void 0:c.owner;if(m===void 0)throw Error("get new reward mint info error");let f=Z(v({},d),{perSecond:F.x64ToDecimal(d.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new ot(m)});if(f.tokenMint.equals(ot.default))continue;if(n<=f.openTime.toNumber()||r.eq(ce)){s.push(f);continue}let g=new oe(Math.min(f.endTime.toNumber(),n)),p=g.sub(f.lastUpdateTime),b=F.mulDivFloor(p,f.emissionsPerSecondX64,r),y=f.rewardGrowthGlobalX64.add(b),h=F.mulDivFloor(p,f.emissionsPerSecondX64,Ce),w=f.rewardTotalEmissioned.add(h);s.push(Z(v({},f),{rewardGrowthGlobalX64:y,rewardTotalEmissioned:w,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=C.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=Qe.maxTickInTickarrayBitmap(e),n=-t;return t>Be&&(t=G.getArrayStartIndex(Be,e)+G.tickCount(e)),n<Te&&(n=G.getArrayStartIndex(Te,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/G.tickCount(t)*pt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Fn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=nr.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},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 d of l){let{publicKey:m}=j(c.programId,c.id,d);o.push({pubkey:m}),r[m.toString()]=c.id}}let s=await Fn(e,o,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=r[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=Vt.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=Z(v({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(m=>m.accountInfo.mint),u=[];for(let m of c)for(let f of s)u.push(Ne(f,m).publicKey);let l=await nt(t,u,{batchRequest:r}),d={};for(let m of l){if(m===null)continue;let f=pn.decode(m.data),g=f.poolId.toString(),p=e.find(I=>I.state.id.toBase58()===g);if(p===void 0)continue;let b=p.state,y=C._getTickPriceLegacy({poolInfo:b,tick:f.tickLower,baseIn:!0}),h=C._getTickPriceLegacy({poolInfo:b,tick:f.tickUpper,baseIn:!0}),{amountA:w,amountB:P}=X.getAmountsFromLiquidity(b.sqrtPriceX64,y.tickSqrtPriceX64,h.tickSqrtPriceX64,f.liquidity,!1),A=1/(1-Math.sqrt(Math.sqrt(y.price.div(h.price).toNumber())));p.positionAccount=[...(a=p.positionAccount)!=null?a:[],{poolId:f.poolId,nftMint:f.nftMint,priceLower:y.price,priceUpper:h.price,amountA:w,amountB:P,tickLower:f.tickLower,tickUpper:f.tickUpper,liquidity:f.liquidity,feeGrowthInsideLastX64A:f.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:f.feeGrowthInsideLastX64B,tokenFeesOwedA:f.tokenFeesOwedA,tokenFeesOwedB:f.tokenFeesOwedB,rewardInfos:f.rewardInfos.map(I=>Z(v({},I),{pendingReward:new oe(0)})),leverage:A,tokenFeeAmountA:new oe(0),tokenFeeAmountB:new oe(0)}];let T=await C.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickLower,p.state.tickSpacing),x=await C.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickUpper,p.state.tickSpacing);d[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickLower}`]=T,d[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickUpper}`]=x}if(o){let m=Object.values(d),f=await nt(t,m,{batchRequest:r}),g={};for(let p=0;p<m.length;p++){let b=f[p];if(b===null)continue;let y=m[p].toString();g[y]=Vt.decode(b.data)}for(let{state:p,positionAccount:b}of e)if(!!b)for(let y of b){let h=`${p.programId.toString()}-${p.id.toString()}-${y.tickLower}`,w=`${p.programId.toString()}-${p.id.toString()}-${y.tickUpper}`,P=g[d[h].toString()],A=g[d[w].toString()],T=P.ticks[C.getTickOffsetInArray(y.tickLower,p.tickSpacing)],x=A.ticks[C.getTickOffsetInArray(y.tickUpper,p.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:N}=await Ut.GetPositionFees(p,y,T,x),M=await Ut.GetPositionRewards(p,y,T,x);y.tokenFeeAmountA=I.gte(new oe(0))?I:new oe(0),y.tokenFeeAmountB=N.gte(new oe(0))?N:new oe(0);for(let q=0;q<M.length;q++)y.rewardInfos[q].pendingReward=M[q].gte(new oe(0))?M[q]:new oe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new S(0)}){var M;let c,u=n.toBase58()===e.mintA.address,[l,d]=u?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new S(0))?c=u?it.add(new oe(1)):rt.sub(new oe(1)):c=D.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let m=de(o,l,r,!1),{expectedAmountOut:f,remainingAccounts:g,executionPrice:p,feeAmount:b}=xe.getOutputAmountAndRemainAccounts(e,t,n,m.amount.sub((M=m.fee)!=null?M:ce),c),y=de(f,d,r,!1),h=D.sqrtPriceX64ToPrice(p,e.mintA.decimals,e.mintB.decimals),w=u?h:new S(1).div(h),P=f.mul(new oe(Math.floor((1-s)*1e10))).div(new oe(1e10)),A=de(P,d,r,!1),T=u?e.currentPrice:new S(1).div(e.currentPrice),x=new S(w).sub(T).abs(),I=T,N=new lt(new S(x).mul(10**15).toFixed(0),new S(I).mul(10**15).toFixed(0));return{realAmountIn:m,amountOut:y,minAmountOut:A,expirationTime:mt(m.expirationTime,y.expirationTime),currentPrice:e.currentPrice,executionPrice:w,priceImpact:N,fee:b,remainingAccounts:g}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[c,u]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,d]=[new je(Z(v({},c),{mint:c.address,isToken2022:c.programId===ir.toBase58()})),new je(Z(v({},u),{mint:u.address,isToken2022:u.programId===ir.toBase58()}))],{realAmountIn:m,amountOut:f,minAmountOut:g,expirationTime:p,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(v({},m),{amount:new ke(l,m.amount),fee:m.fee===void 0?void 0:new ke(l,m.fee)}),T=Z(v({},f),{amount:new ke(d,f.amount),fee:f.fee===void 0?void 0:new ke(d,f.fee)}),x=Z(v({},g),{amount:new ke(d,g.amount),fee:g.fee===void 0?void 0:new ke(d,g.fee)}),I=new Oe({baseToken:l,denominator:new oe(10).pow(new oe(20+l.decimals)),quoteToken:d,numerator:b.mul(new S(10**(20+d.decimals))).toFixed(0)}),N=new Oe({baseToken:l,denominator:new oe(10).pow(new oe(20+l.decimals)),quoteToken:d,numerator:y.mul(new S(10**(20+d.decimals))).toFixed(0)}),M=new ke(l,w);return{realAmountIn:A,amountOut:T,minAmountOut:x,expirationTime:p,currentPrice:I,executionPrice:N,priceImpact:h,fee:M,remainingAccounts:P}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var g,p,b;let o=e[t],s=C.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=C.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,d=a-s,m=o.priceMax-o.priceMin,f;return l<=0?f=0:d===l?f=m/l:m===l?f=l/d:f=l/m*(l/d),{feeApr:o.feeApr*f,rewardsApr:[(g=o.rewardApr[0])!=null?g:0*f,(p=o.rewardApr[1])!=null?p:0*f,(b=o.rewardApr[2])!=null?b:0*f],apr:o.apr*f}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],d=r[Sn(e.mintA.address).toString()],m=r[Sn(e.mintB.address).toString()],f=e.mintA.decimals,g=e.mintB.decimals;if(!l||!d||!m)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let p=D.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),b=D.getSqrtPriceX64FromTick(s),y=D.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:w}=X.getAmountsFromLiquidityWithSlippage(p,b,y,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:A}=X.getAmountsFromLiquidityWithSlippage(p,b,y,o,!1,!1,0),T=new S(h.toString()).div(new S(10).pow(f)).mul(d.value).add(new S(w.toString()).div(new S(10).pow(g)).mul(m.value)),x=new S(P.toString()).div(new S(10).pow(f)).mul(d.value).add(new S(A.toString()).div(new S(10).pow(g)).mul(m.value)),I=x.div(T.add(x)).div(x),M=new S(l.volumeFee).mul(365).div(u).mul(I).mul(100).toNumber(),q=3600*24*365,he=e.rewardDefaultInfos.map(te=>{var z,ni;let Ae=te.mint.decimals,ne=r[te.mint.address];return c<((z=te.startTime)!=null?z:0)||c>((ni=te.endTime)!=null?ni:0)||!te.perSecond||!ne||Ae===void 0?0:new S(ne.value).mul(new S(te.perSecond).mul(q)).div(new S(10).pow(Ae)).mul(I).mul(100).toNumber()});return{feeApr:M,rewardsApr:he,apr:M+he.reduce((te,Ae)=>te+Ae,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var y,h;let l=D.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),d=D.getSqrtPriceX64FromTick(n),m=D.getSqrtPriceX64FromTick(r),f=a?1-s:1+s,g=de(o,(y=e[t?"mintA":"mintB"].extensions)==null?void 0:y.feeConfig,c,!u),p=new oe(new S(g.amount.sub((h=g.fee)!=null?h:ce).toString()).mul(f).toFixed(0)),b;if(l.lte(d))b=t?X.getLiquidityFromTokenAmountA(d,m,p,!a):new oe(0);else if(l.lte(m)){let w=X.getLiquidityFromTokenAmountA(l,m,p,!a),P=X.getLiquidityFromTokenAmountB(d,l,p);b=t?w:P}else b=t?new oe(0):X.getLiquidityFromTokenAmountB(d,m,p);return xe.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:r,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var b,y,h,w;let c=D.getSqrtPriceX64FromTick(n),u=D.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,d=X.getAmountsFromLiquidity(D.priceToSqrtPriceX64(new S(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[m,f]=[de(d.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),de(d.amountB,(y=t.mintB.extensions)==null?void 0:y.feeConfig,e,!0)],[g,p]=[de(d.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),de(d.amountB.muln(l),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:m,amountB:f,amountSlippageA:g,amountSlippageB:p,expirationTime:mt(m.expirationTime,f.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let r=await t.getAccountInfo(new ot(n.id));if(!r)throw new Error(`pool not found ${n.id}`);let o=er.decode(r.data),s=Ge(e,new ot(n.id)).publicKey,a=await xe.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return Z(v({},o),{id:new ot(n.id),programId:new ot(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:Z(v({},n.config),{id:new ot(n.config.id),fundOwner:""}),currentPrice:new S(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};var F=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(ce)||(o=o.add(Ue)),o}static mulDivFloor(e,t,n){if(n.eq(ce))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(ce))throw new Error("division by 0");return e.mul(t).add(n.sub(Ue)).div(n)}static x64ToDecimal(e,t){return new S(e.toString()).div(S.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new W(e.mul(S.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(un).sub(t).mod(un)}};function pe(i,e){return Yn(i.mul(e),64,256)}function us(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Yn(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var D=class{static sqrtPriceX64ToPrice(e,t,n){return F.x64ToDecimal(e).pow(2).mul(S.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return F.decimalToX64(e.mul(S.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(ce))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ce))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(ce))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ce))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(ce))return e;let o=t.shln(_t);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?F.mulDivCeil(s,e,a):F.mulDivRoundingUp(s,Ue,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 F.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(_t);if(r)return e.add(o.div(t));{let s=F.mulDivRoundingUp(o,Ue,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<Te||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 W("18445821805675395072"):new W("18446744073709551616");return(t&2)!=0&&(n=pe(n,new W("18444899583751176192"))),(t&4)!=0&&(n=pe(n,new W("18443055278223355904"))),(t&8)!=0&&(n=pe(n,new W("18439367220385607680"))),(t&16)!=0&&(n=pe(n,new W("18431993317065453568"))),(t&32)!=0&&(n=pe(n,new W("18417254355718170624"))),(t&64)!=0&&(n=pe(n,new W("18387811781193609216"))),(t&128)!=0&&(n=pe(n,new W("18329067761203558400"))),(t&256)!=0&&(n=pe(n,new W("18212142134806163456"))),(t&512)!=0&&(n=pe(n,new W("17980523815641700352"))),(t&1024)!=0&&(n=pe(n,new W("17526086738831433728"))),(t&2048)!=0&&(n=pe(n,new W("16651378430235570176"))),(t&4096)!=0&&(n=pe(n,new W("15030750278694412288"))),(t&8192)!=0&&(n=pe(n,new W("12247334978884435968"))),(t&16384)!=0&&(n=pe(n,new W("8131365268886854656"))),(t&32768)!=0&&(n=pe(n,new W("3584323654725218816"))),(t&65536)!=0&&(n=pe(n,new W("696457651848324352"))),(t&131072)!=0&&(n=pe(n,new W("26294789957507116"))),(t&262144)!=0&&(n=pe(n,new W("37481735321082"))),e>0&&(n=_i.div(n)),n}static getTickFromPrice(e,t,n){return D.getTickFromSqrtPriceX64(D.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(rt)||e.lt(it))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new W(t-64),r=us(n,32,128),o=new W("8000000000000000","hex"),s=0,a=new W(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new W(0))&&s<Di;){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),d=r.add(u).mul(new W(vi)),m=Yn(d.sub(new W(qi)),64,128).toNumber(),f=Yn(d.add(new W(Wi)),64,128).toNumber();return m==f?m:D.getSqrtPriceX64FromTick(f).lte(e)?f:m}},gt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=D.getTickFromSqrtPriceX64(D.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=gt.getTickWithPriceAndTickspacing(e,t,n,r),s=D.getSqrtPriceX64FromTick(o);return D.sqrtPriceX64ToPrice(s,n,r)}},X=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ce))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(_t),s=t.sub(e);return r?F.mulDivRoundingUp(F.mulDivCeil(o,s,t),Ue,e):F.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ce))throw new Error("sqrtPriceX64A must greater than 0");return r?F.mulDivCeil(n,t.sub(e),Ce):F.mulDivFloor(n,t.sub(e),Ce)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?F.mulDivRoundingUp(a,Ue,Wn):a.shrn(_t)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),F.mulDivFloor(n,Wn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return X.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=X.getLiquidityFromTokenAmountA(e,n,r,!1),a=X.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return X.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:X.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new W(0)};if(e.lt(n)){let s=X.getTokenAmountAFromLiquidity(e,n,r,o),a=X.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new W(0),amountB:X.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:c,amountB:u}=X.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,d=new W(new S(c.toString()).mul(l).toFixed(0)),m=new W(new S(u.toString()).mul(l).toFixed(0));return{amountSlippageA:d,amountSlippageB:m}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var h,w,P,A;let u=D.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),l=D.getSqrtPriceX64FromTick(t),d=D.getSqrtPriceX64FromTick(n),m=s?1+o:1-o,f=X.getAmountsFromLiquidity(u,l,d,r,s),[g,p]=[de(f.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),de(f.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,c)],[b,y]=[de(new W(new S(f.amountA.toString()).mul(m).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,c),de(new W(new S(f.amountB.toString()).mul(m).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,c)];return{liquidity:r,amountA:g,amountB:p,amountSlippageA:b,amountSlippageB:y,expirationTime:mt(g.expirationTime,p.expirationTime)}}},bt=class{static swapCompute(e,t,n,r,o,s,a,c,u,l,d,m,f,g){if(m.eq(ce))throw new Error("amountSpecified must not be 0");if(g||(g=s?it.add(Ue):rt.sub(Ue)),s){if(g.lt(it))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(d))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(rt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(d))throw new Error("sqrtPriceX64 must greater than current")}let p=m.gt(ce),b={amountSpecifiedRemaining:m,amountCalculated:ce,sqrtPriceX64:d,tick:u>f?Math.min(f+G.tickCount(l)-1,u):f,accounts:[],liquidity:c,feeAmount:new W(0)},y=f,h=n[f],w=0,P=!s&&h.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(ce)&&!b.sqrtPriceX64.eq(g);){if(w>10)throw Error("liquidity limit");let A={};A.sqrtPriceStartX64=b.sqrtPriceX64;let T=C.nextInitTick(h,b.tick,l,s,P),x=T||null,I=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let M=xe.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},y,s);if(!M.isExist)throw Error("swapCompute LiquidityInsufficient");y=M.nextStartIndex;let{publicKey:q}=j(e,t,y);I=q,h=n[y],x=C.firstInitializedTick(h,s)}A.tickNext=x.tick,A.initialized=x.liquidityGross.gtn(0),f!==y&&I&&(b.accounts.push(I),f=y),A.tickNext<Te?A.tickNext=Te:A.tickNext>Be&&(A.tickNext=Be),A.sqrtPriceNextX64=D.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),p?(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 M=x.liquidityNet;s&&(M=M.mul(Ze)),b.liquidity=X.addDelta(b.liquidity,M)}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 M=D.getTickFromSqrtPriceX64(b.sqrtPriceX64);P=M!=b.tick&&!s&&h.startTickIndex===M,b.tick=M}++w}try{let{nextStartIndex:A,isExist:T}=G.nextInitializedTickArray(b.tick,l,s,r,o);T&&f!==A&&(b.accounts.push(j(e,t,A).publicKey),f=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,r,o){let s={sqrtPriceX64Next:new W(0),amountIn:new W(0),amountOut:new W(0),feeAmount:new W(0)},a=e.gte(t),c=r.gte(ce);if(c){let l=F.mulDivFloor(r,ln.sub(new W(o.toString())),ln);s.amountIn=a?X.getTokenAmountAFromLiquidity(t,e,n,!0):X.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=D.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?X.getTokenAmountBFromLiquidity(t,e,n,!1):X.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Ze).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=D.getNextSqrtPriceX64FromOutput(e,n,r.mul(Ze),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=X.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=X.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:X.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:X.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(r.mul(Ze))&&(s.amountOut=r.mul(Ze)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=F.mulDivCeil(s.amountIn,new W(o),ln.sub(new W(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 lr}from"@solana/spl-token";import{PublicKey as B,TransactionInstruction as ve,SystemProgram as kt,Keypair as ti}from"@solana/web3.js";import dr from"bn.js";import{PublicKey as gs,Keypair as bs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ys}from"@solana/spl-token";import Rm from"bn.js";var ls=Q([ee("mint"),ee("owner"),R("amount"),Ye("delegateOption"),ee("delegate"),re("state"),Ye("isNativeOption"),R("isNative"),R("delegatedAmount"),Ye("closeAuthorityOption"),ee("closeAuthority")]);function ds(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function Qn(i,...e){if(!ds(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function $n(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function rr(i,e){Qn(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var bn=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),De=(i,e)=>i<<32-e|i>>>e;var ym=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ms(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Jn(i){return typeof i=="string"&&(i=ms(i)),Qn(i),i}var gn=class{clone(){return this._cloneInto()}},wm={}.toString;function or(i){let e=n=>i().update(Jn(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function fs(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),c=n?4:0,u=n?0:4;i.setUint32(e+c,s,n),i.setUint32(e+u,a,n)}var sr=(i,e,t)=>i&e^~i&t,ar=(i,e,t)=>i&e^i&t^e&t,yn=class extends gn{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,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:r}=this;e=Jn(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let c=bn(e);for(;r<=o-s;s+=r)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){$n(this),rr(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let d=s;d<r;d++)t[d]=0;fs(n,r-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 d=0;d<u;d++)a.setUint32(4*d,l[d],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:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var ps=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),ei=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:r,E:o,F:s,G:a,H:c}=this;return[e,t,n,r,o,s,a,c]}set(e,t,n,r,o,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=c|0}process(e,t){for(let d=0;d<16;d++,t+=4)at[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){let m=at[d-15],f=at[d-2],g=De(m,7)^De(m,18)^m>>>3,p=De(f,17)^De(f,19)^f>>>10;at[d]=p+at[d-7]+g+at[d-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:c,G:u,H:l}=this;for(let d=0;d<64;d++){let m=De(a,6)^De(a,11)^De(a,25),f=l+m+sr(a,c,u)+ps[d]+at[d]|0,p=(De(n,2)^De(n,13)^De(n,22))+ar(n,r,o)|0;l=u,u=c,c=a,a=s+f|0,s=o,o=r,r=n,n=f+p|0}n=n+this.A|0,r=r+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,r,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 cr=or(()=>new ei);var Fm=le("Raydium_Util");function ur({fromPublicKey:i,programId:e=ys}){let t=bs.generate().publicKey.toBase58().slice(0,32);return{publicKey:ws(i,t,e),seed:t}}function ws(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=cr(n);return new gs(r)}var mr=le("Raydium_Clmm"),qe={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],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]},fe=class{static createPoolInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g){let p=Q([V("sqrtPriceX64"),R("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,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:m,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({sqrtPriceX64:f,startTime:g},y);let h=Buffer.from([...qe.createPool,...y]);return new ve({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,d=ur({fromPublicKey:r,programId:n}),[m,f]=[new B(o.address),new B(s.address)],g=[kt.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:d.seed,newAccountPubkey:d.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Zn.span),space:Zn.span,programId:n})],{publicKey:p}=Hi(n,a,m,f),{publicKey:b}=Gn(n,p,m),{publicKey:y}=Gn(n,p,f);return g.push(this.createPoolInstruction(n,p,r,a,d.publicKey,m,b,new B(o.programId||we),f,y,new B(s.programId||we),Ge(n,p).publicKey,c,u)),{signers:[],instructions:g,instructionTypes:[se.CreateAccount,se.ClmmCreatePool],address:{poolId:p,observationId:d.publicKey,mintAVault:b,mintBVault:y},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g,p,b,y,h,w,P,A,T,x,I,N,M){let q=Q([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),V("liquidity"),R("amountMaxA"),R("amountMaxB"),Xe("withMetadata"),re("optionBaseFlag"),Xe("baseFlag")]),he=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],te=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:It,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:lr,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(q.span);q.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:T,amountMaxA:x,amountMaxB:I,withMetadata:N==="create",baseFlag:!1,optionBaseFlag:0},Ae);let ne=Buffer.from([...qe.openPosition,...Ae]);return new ve({keys:te,programId:e,data:ne})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,f]=[new B(e.programId),new B(e.id)],g;if(l)g=new B((await l(1))[0]);else{let I=ti.generate();d.push(I),g=I.publicKey}let p=C.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=j(m,f,p),{publicKey:h}=j(m,f,b),{publicKey:w}=Fe(n.wallet,g,we),{publicKey:P}=mn(g),{publicKey:A}=Ne(m,g),{publicKey:T}=ft(m,f,r,o),x=this.openPositionFromLiquidityInstruction(m,n.feePayer,f,n.wallet,g,w,P,T,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),r,o,p,b,s,a,c,u);return{signers:d,instructions:[x],instructionTypes:[se.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:T}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,f]=[new B(e.programId),new B(e.id)],g;if(l)g=new B((await l(1))[0]);else{let I=ti.generate();d.push(I),g=I.publicKey}let p=C.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=j(m,f,p),{publicKey:h}=j(m,f,b),{publicKey:w}=Fe(n.wallet,g,we),{publicKey:P}=mn(g),{publicKey:A}=Ne(m,g),{publicKey:T}=ft(m,f,r,o),x=this.openPositionFromBaseInstruction(m,n.feePayer,f,n.wallet,g,w,P,T,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),r,o,p,b,u,s,a,c,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[p,b])?Ge(m,f).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:T},instructions:[x],signers:d,instructionTypes:[se.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g,p,b,y,h,w,P,A,T,x,I,N,M){let q=Q([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),V("liquidity"),R("amountMaxA"),R("amountMaxB"),Xe("withMetadata"),re("optionBaseFlag"),Xe("baseFlag")]),he=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],te=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:It,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:lr,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(q.span);q.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:new dr(0),amountMaxA:x==="MintA"?I:N,amountMaxB:x==="MintA"?N:I,withMetadata:T==="create",baseFlag:x==="MintA",optionBaseFlag:1},Ae);let ne=Buffer.from([...qe.openPosition,...Ae]);return new ve({keys:te,programId:e,data:ne})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d,m=[];if(l)d=new B((await l(1))[0]);else{let I=ti.generate();m.push(I),d=I.publicKey}let[f,g]=[new B(e.programId),new B(e.id)],p=C.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=j(f,g,p),{publicKey:h}=j(f,g,b),{publicKey:w}=Fe(n.wallet,d,we),{publicKey:P}=mn(d),{publicKey:A}=Ne(f,d),{publicKey:T}=ft(f,g,r,o),x=this.openPositionFromLiquidityInstruction(f,n.wallet,g,n.wallet,d,w,P,T,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),r,o,p,b,s,a,c,u,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[p,b])?Ge(f,g).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:T},instructions:[x],signers:m,instructionTypes:[se.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=Q([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...qe.closePosition,...c]);return new ve({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new B(e.programId),{publicKey:s}=Fe(n.wallet,r.nftMint,we),{publicKey:a}=Ne(o,r.nftMint),c=[];return c.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[se.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g,p,b,y,h){let w=Q([V("liquidity"),R("amountMaxA"),R("amountMaxB"),re("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:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],T=Buffer.alloc(w.span);w.encode({liquidity:p,amountMaxA:b,amountMaxB:y,optionBaseFlag:0,baseFlag:!1},T);let x=Buffer.from([...qe.increaseLiquidity,...T]);return new ve({keys:A,programId:e,data:x})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,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),d=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=j(c,u,l),{publicKey:f}=j(c,u,d),{publicKey:g}=Fe(r.wallet,n.nftMint,we),{publicKey:p}=Ne(c,n.nftMint),{publicKey:b}=ft(c,u,n.tickLower,n.tickUpper),y=this.increasePositionFromLiquidityInstruction(c,r.wallet,g,p,u,b,m,f,r.tokenAccountA,r.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,d])?Ge(c,u).publicKey:void 0);return{address:{tickArrayLower:m,tickArrayUpper:f,positionNftAccount:g,personalPosition:p,protocolPosition:b},signers:[],instructions:[y],instructionTypes:[se.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,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),d=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=j(c,u,l),{publicKey:f}=j(c,u,d),{publicKey:g}=Fe(r.wallet,n.nftMint,we),{publicKey:p}=Ne(c,n.nftMint),{publicKey:b}=ft(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:m,tickArrayUpper:f,positionNftAccount:g,personalPosition:p,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(c,r.wallet,g,p,u,b,m,f,r.tokenAccountA,r.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,d])?Ge(c,u).publicKey:void 0)],signers:[],instructionTypes:[se.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g,p,b,y,h){let w=Q([V("liquidity"),R("amountMaxA"),R("amountMaxB"),re("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:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],T=Buffer.alloc(w.span);w.encode({liquidity:new dr(0),amountMaxA:p==="MintA"?b:y,amountMaxB:p==="MintA"?y:b,baseFlag:p==="MintA",optionBaseFlag:1},T);let x=Buffer.from([...qe.increaseLiquidity,...T]);return new ve({keys:A,programId:e,data:x})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g,p,b,y,h,w){let P=Q([V("liquidity"),R("amountMinA"),R("amountMinB")]),A=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...p.map(N=>[{pubkey:N.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:N.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:N.rewardMint,isSigner:!1,isWritable:!1}]).flat()],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:f,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([...qe.decreaseLiquidity,...x]);return new ve({keys:T,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new B(e.programId),new B(e.id)],d=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=j(u,l,d),{publicKey:g}=j(u,l,m),{publicKey:p}=Fe(r.wallet,n.nftMint,c),{publicKey:b}=Ne(u,n.nftMint),{publicKey:y}=ft(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:r.rewardAccounts[P],rewardMint:new B(e.rewardDefaultInfos[P].mint.address)});let w=[];return w.push(this.decreaseLiquidityInstruction(u,r.wallet,p,b,l,y,f,g,r.tokenAccountA,r.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,[d,m])?Ge(u,l).publicKey:void 0)),{address:{tickArrayLower:f,tickArrayUpper:g,positionNftAccount:p,personalPosition:b,protocolPosition:y},signers:[],instructions:w,instructionTypes:[se.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g,p,b,y){let h=Q([R("amount"),R("otherAmountThreshold"),V("sqrtPriceLimitX64"),Xe("isBaseInput")]),w=[...y?[{pubkey:y,isSigner:!1,isWritable:!0}]:[],...d.map(x=>({pubkey:x,isSigner:!1,isWritable:!0}))],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey: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:f,otherAmountThreshold:g,sqrtPriceLimitX64:p,isBaseInput:b},A);let T=Buffer.from([...qe.swap,...A]);return new ve({keys:P,programId:e,data:T})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:r,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new B(e.programId),new B(e.id)],[d,m]=[new B(t.vault.A),new B(t.vault.B)],[f,g]=[new B(e.mintA.address),new B(e.mintB.address)],p=e.mintA.address===r.toString(),b=[this.swapInstruction(u,n.wallet,l,new B(e.config.id),p?n.tokenAccountA:n.tokenAccountB,p?n.tokenAccountB:n.tokenAccountA,p?d:m,p?m:d,p?f:g,p?g:f,c,d,o,s,a,!0,Ge(u,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[se.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,c,u,l,d,m){let f=Q([R("openTime"),R("endTime"),V("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:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],p=Buffer.alloc(f.span);f.encode({openTime:be(l),endTime:be(d),emissionsPerSecondX64:m},p);let b=Buffer.from([...qe.initReward,...p]);return new ve({keys:g,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new B(e.programId),new B(e.id)],a=zi(o,s,r.mint).publicKey,c=vt(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new B(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[se.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,c,u,l,d,m){let f=Q([re("rewardIndex"),V("emissionsPerSecondX64"),R("openTime"),R("endTime")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,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}],p=Buffer.alloc(f.span);f.encode({rewardIndex:u,emissionsPerSecondX64:m,openTime:be(l),endTime:be(d)},p);let b=Buffer.from([...qe.setRewardEmissions,...p]);return new ve({keys:g,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new B(e.programId),new B(e.id)],a,c,u;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===r.mint.toString()&&(a=m,c=new B(t.rewardInfos[m].vault),u=new B(t.rewardInfos[m].mint.address));(a===void 0||c===void 0)&&mr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=vt(o).publicKey,d=[this.setRewardInstruction(o,n.wallet,s,l,new B(e.config.id),n.tokenAccount,c,u,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:d,instructionTypes:[se.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let c=Q([re("rewardIndex")]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,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 d=Buffer.from([...qe.collectReward,...l]);return new ve({keys:u,programId:e,data:d})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){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===r.toString()&&(a=l,c=new B(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&mr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,c,r,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[se.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new B(e.programId),new B(e.id)],[d,m]=[new B(t.vault.A),new B(t.vault.B)],[f,g]=[new B(e.mintA.address),new B(e.mintB.address)],p=e.mintA.address===r.toString(),b=[this.swapInstruction(u,n.wallet,l,new B(e.config.id),p?n.tokenAccountB:n.tokenAccountA,p?n.tokenAccountA:n.tokenAccountB,p?m:d,p?d:m,p?f:g,p?g:f,c,d,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[se.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import Re from"bn.js";var fr=class extends Ft{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)||U.default,mint1:r,mint2:o,ammConfig:s,initialPrice:a,startTime:c,computeBudgetConfig:u,forerunCreate:l,txVersion:d}=e,m=this.createTxBuilder(),[f,g,p]=new Re(new U(r.address).toBuffer()).gt(new Re(new U(o.address).toBuffer()))?[o,r,new S(1).div(a)]:[r,o,a],b=D.priceToSqrtPriceX64(p,f.decimals,g.decimals),y=await fe.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:f,mintB:g,ammConfigId:s.id,initialPriceX64:b,startTime:c,forerunCreate:l});return m.addInstruction(y),m.addCustomComputeBudget(u),m.versionBuild({txVersion:d,extInfo:{address:Z(v({},y.address),{programId:t.toString(),id:y.address.poolId.toString(),mintA:f,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:v({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:y.address.poolId.toString(),mintA:f,mintB:g,feeRate:s.tradeFeeRate,openTime:c.toString(),programId:t.toString(),price:p.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:[]}},Vi),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:d="create",getEphemeralSigners:m,computeBudgetConfig:f,txVersion:g}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let p=this.createTxBuilder(),b=null,y=null,h=n.useSOLBalance&&e.mintA.address===$.toString(),w=n.useSOLBalance&&e.mintB.address===$.toString(),[P,A]=s==="MintA"?[a,c]:[c,a],{account:T,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new U(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});T&&(b=T),p.addInstruction(x||{});let{account:I,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new U(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),p.addInstruction(N||{}),(!b||!y)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let M=t||await this.getClmmPoolKeys(e.id),q=await fe.openPositionFromBaseInstructions({poolInfo:e,poolKeys:M,ownerInfo:Z(v({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:y}),tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:d,getEphemeralSigners:m});return p.addInstruction(q),p.addCustomComputeBudget(f),p.versionBuild({txVersion:g,extInfo:q.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:r,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:d="create",txVersion:m,getEphemeralSigners:f}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let g=this.createTxBuilder(),p=null,b=null,y=n.useSOLBalance&&e.mintA.address===$.toBase58(),h=n.useSOLBalance&&e.mintB.address===$.toBase58(),{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new U(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:y?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:u,checkCreateATAOwner:l});w&&(p=w),g.addInstruction(P||{});let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new U(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(T||{}),(p===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 fe.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:x,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:r,amountMaxB:o,withMetadata:d,getEphemeralSigners:f});return g.addInstruction(I),g.versionBuild({txVersion:m,extInfo:{address:I.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:r,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:d}=e,m=this.createTxBuilder(),f,g,p=a.useSOLBalance&&t.mintA.address===$.toString(),b=a.useSOLBalance&&t.mintB.address===$.toString(),{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new U(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:p?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!p,associatedOnly:p?!1:c,checkCreateATAOwner:u});y&&(f=y),m.addInstruction(h||{});let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new U(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),m.addInstruction(P||{}),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getClmmPoolKeys(t.id),T=fe.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:A,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g},liquidity:s,amountMaxA:r,amountMaxB:o});return m.addInstruction(T),m.addCustomComputeBudget(l),m.versionBuild({txVersion:d,extInfo:{address:T.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:r,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:d}=e,m=this.createTxBuilder(),f,g,p=a.useSOLBalance&&t.mintA.address===$.toString(),b=a.useSOLBalance&&t.mintB.address===$.toString(),{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new U(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:p?{payer:this.scope.ownerPubKey,amount:r==="MintA"?o:s}:void 0,skipCloseAccount:!p,associatedOnly:p?!1:c,checkCreateATAOwner:u});y&&(f=y),m.addInstruction(h||{});let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new U(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:r==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});w&&(g=w),m.addInstruction(P||{}),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getClmmPoolKeys(t.id),T=fe.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:A,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g},base:r,baseAmount:o,otherAmountMax:s});return m.addInstruction(T),m.addCustomComputeBudget(l),m.versionBuild({txVersion:d,extInfo:{address:T.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:r,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:d}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let m=this.createTxBuilder(),f=r.useSOLBalance&&t.mintA.address===$.toString(),g=r.useSOLBalance&&t.mintB.address===$.toString(),p,b,{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new U(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});p=y,h&&m.addInstruction(h);let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new U(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&&m.addInstruction(P);let A=[];for(let N of t.rewardDefaultInfos){let M=r.useSOLBalance&&N.mint.address===$.toString(),q;if(N.mint.address===t.mintA.address)q=p;else if(N.mint.address===t.mintB.address)q=b;else{let{account:he,instructionParams:te}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new U(N.mint.programId),mint:new U(N.mint.address),notUseTokenAccount:M,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!M,associatedOnly:M?!1:c,checkCreateATAOwner:u});q=he,te&&m.addInstruction(te)}A.push(q)}!p&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let T=await this.getClmmPoolKeys(t.id),x=await fe.decreaseLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:b,rewardAccounts:A},liquidity:a,amountMinA:o,amountMinB:s});m.addInstruction({instructions:x.instructions,instructionTypes:[se.ClmmDecreasePosition]});let I=v({},x.address);if(r.closePosition){let N=await fe.closePositionInstructions({poolInfo:t,poolKeys:T,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});m.addInstruction({endInstructions:N.instructions,endInstructionTypes:N.instructionTypes}),I=v(v({},I),N.address)}return m.addCustomComputeBudget(l),m.versionBuild({txVersion:d,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 r=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=fe.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return r.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!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()===$.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:d,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new U(n.mint.address),mint:new U(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Re(new S(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:r,checkCreateATAOwner:o});m&&c.addInstruction(m),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),g=fe.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new U(n.mint.programId),mint:new U(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:F.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:r=!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 d=t.useSOLBalance&&l.mint.address===$.toString(),m=l.perSecond.mul(l.endTime-l.openTime),{account:f,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new U(l.mint.programId),mint:new U(l.mint.address),notUseTokenAccount:!!d,skipCloseAccount:!d,owner:this.scope.ownerPubKey,createInfo:d?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Re(new S(m.toFixed(0)).gte(m)?m.toFixed(0):m.add(1).toFixed(0))}:void 0,associatedOnly:d?!1:r,checkCreateATAOwner:o});g&&c.addInstruction(g),f||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),b=fe.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:f},rewardInfo:{programId:new U(l.mint.programId),mint:new U(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:F.decimalToX64(l.perSecond)}});u=v(v({},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:r=!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($),{account:l,instructionParams:d}=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 Re(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:r,checkCreateATAOwner:o});d&&c.addInstruction(d),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),f=fe.setRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:F.decimalToX64(n.perSecond)}});return c.addInstruction(f),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:f.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:r=!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 d=t.useSOLBalance&&l.mint.address===$.toString(),{account:m,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new U(l.mint.programId),mint:new U(l.mint.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:d?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Re(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:d?!1:r,checkCreateATAOwner:o});f&&c.addInstruction(f),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id),p=fe.setRewardInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{mint:new U(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:F.decimalToX64(l.perSecond)}});c.addInstruction(p),u=v(v({},u),p.address)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(f=>f.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),c=t.useSOLBalance&&n.equals($),{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new U(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:r,checkCreateATAOwner:o});l&&a.addInstruction(l),u||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),m=fe.collectRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:u},rewardMint:n});return a.addInstruction(m),a.build({address:m.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let c of n){let u=e.rewardDefaultInfos.find(p=>p.mint.address===c.toString());if(!u){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let l=t.useSOLBalance&&c.equals($),{account:d,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new U(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:r,checkCreateATAOwner:o});d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),m&&s.addInstruction(m);let f=await this.getClmmPoolKeys(e.id),g=fe.collectRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardMint:c});s.addInstruction(g),a=v(v({},a),g.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:r,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,txVersion:l}){let d=this.createTxBuilder(),m=s.useSOLBalance&&e.mintA.address===$.toBase58(),f=s.useSOLBalance&&e.mintB.address===$.toBase58(),g;!o||o.equals(new S(0))?g=t.toString()===e.mintA.address?it.add(new Re(1)):rt.sub(new Re(1)):g=D.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let p;if(!p){let{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new U(e.mintA.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!m,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:m?!1:c,checkCreateATAOwner:u});p=h,w&&d.addInstruction(w)}let b;if(!b){let{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new U(e.mintB.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,skipCloseAccount:!f,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:f?!1:c,checkCreateATAOwner:u});b=h,w&&d.addInstruction(w)}(!p||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id);return d.addInstruction(fe.makeSwapBaseInInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:b},inputMint:new U(t),amountIn:n,amountOutMin:r,sqrtPriceLimitX64:g,remainingAccounts:a})),d.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:c}){let u={};for(let d of this.scope.account.tokenAccountRawInfos)r?Fe(this.scope.ownerPubKey,d.accountInfo.mint,s).publicKey.equals(d.pubkey)&&(u[d.accountInfo.mint.toString()]=d.pubkey):u[d.accountInfo.mint.toString()]=d.pubkey;let l=this.createTxBuilder();for(let d of Object.values(e)){if(t[d.id]===void 0||!t[d.id].find(w=>!w.liquidity.isZero()||w.rewardInfos.find(P=>!P.rewardAmountOwed.isZero())))continue;let m=d,f=n.useSOLBalance&&m.mintA.address===$.toString(),g=n.useSOLBalance&&m.mintB.address===$.toString(),p=u[m.mintA.address];if(!p){let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:m.mintA.programId,mint:new U(m.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,skipCloseAccount:!f,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:f?!1:r,checkCreateATAOwner:o});p=w,P&&l.addInstruction(P)}let b=u[m.mintB.address];if(!b){let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:m.mintB.programId,mint:new U(m.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,skipCloseAccount:!g,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:g?!1:r,checkCreateATAOwner:o});b=w,P&&l.addInstruction(P)}u[m.mintA.address]=p,u[m.mintB.address]=b;let y=[];for(let w of m.rewardDefaultInfos){let P=n.useSOLBalance&&w.mint.address===$.toString(),A=u[w.mint.address];if(!A){let{account:T,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new U(w.mint.programId),mint:new U(w.mint.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:P?!1:r});A=T,x&&l.addInstruction(x)}u[w.mint.address]=A,y.push(A)}let h=await this.getClmmPoolKeys(m.id);for(let w of t[d.id]){let P=fe.decreaseLiquidityInstructions({poolInfo:m,poolKeys:h,ownerPosition:w,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:b,rewardAccounts:y},liquidity:new Re(0),amountMinA:new Re(0),amountMinB:new Re(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(vt(e).publicKey);return t?tr.decode(t.data).whitelistMints.filter(r=>!r.equals(U.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new Re(1))).map(s=>Ne(new U(e),s.accountInfo.mint).publicKey),r=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return r.forEach(s=>{if(!s)return;let a=pn.decode(s.data);o.push(a)}),o}};export{fr as Clmm};
|
|
1
|
+
var pr=Object.defineProperty,gr=Object.defineProperties;var br=Object.getOwnPropertyDescriptors;var Gt=Object.getOwnPropertySymbols;var oi=Object.prototype.hasOwnProperty,si=Object.prototype.propertyIsEnumerable;var ri=(i,e,t)=>e in i?pr(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,v=(i,e)=>{for(var t in e||(e={}))oi.call(e,t)&&ri(i,t,e[t]);if(Gt)for(var t of Gt(e))si.call(e,t)&&ri(i,t,e[t]);return i},j=(i,e)=>gr(i,br(e));var Xt=(i,e)=>{var t={};for(var n in i)oi.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&Gt)for(var n of Gt(i))e.indexOf(n)<0&&si.call(i,n)&&(t[n]=i[n]);return t};import{PublicKey as V}from"@solana/web3.js";var yt=9e15,tt=1e9,hn="0123456789abcdef",zt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",jt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",An={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-yt,maxE:yt,crypto:!1},li,ze,D=!0,Yt="[DecimalError] ",et=Yt+"Invalid argument: ",di=Yt+"Precision limit exceeded",mi=Yt+"crypto unavailable",fi="[object Decimal]",Pe=Math.floor,ue=Math.pow,yr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,wr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,hr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,pi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ee=1e7,L=7,Ar=9007199254740991,Pr=zt.length-1,Pn=jt.length-1,k={toStringTag:fi};k.absoluteValue=k.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),K(i)};k.ceil=function(){return K(new this.constructor(this),this.e+1,2)};k.clampedTo=k.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(et+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};k.comparedTo=k.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,c=o.s,u=i.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!==i.e)return o.e>i.e^c<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^c<0?1:-1;return n===r?0:n>r^c<0?1:-1};k.cosine=k.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+L,n.rounding=1,t=kr(n,hi(n,t)),n.precision=i,n.rounding=e,K(ze==2||ze==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};k.cubeRoot=k.cbrt=function(){var i,e,t,n,r,o,s,a,c,u,l=this,d=l.constructor;if(!l.isFinite()||l.isZero())return new d(l);for(D=!1,o=l.s*ue(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=ge(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ue(t,1/3),i=Pe((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new d(t),n.s=l.s):n=new d(o.toString()),s=(i=d.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=Y(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"||!r&&t=="4999"){if(!r&&(K(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(K(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return D=!0,K(n,i,d.rounding,e)};k.decimalPlaces=k.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-Pe(this.e/L))*L,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};k.dividedBy=k.div=function(i){return Y(this,new this.constructor(i))};k.dividedToIntegerBy=k.divToInt=function(i){var e=this,t=e.constructor;return K(Y(e,new t(i),0,1,1),t.precision,t.rounding)};k.equals=k.eq=function(i){return this.cmp(i)===0};k.floor=function(){return K(new this.constructor(this),this.e+1,3)};k.greaterThan=k.gt=function(i){return this.cmp(i)>0};k.greaterThanOrEqualTo=k.gte=function(i){var e=this.cmp(i);return e==1||e===0};k.hyperbolicCosine=k.cosh=function(){var i,e,t,n,r,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,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/$t(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=wt(s,1,o.times(e),new s(1),!0);for(var c,u=i,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)};k.hyperbolicSine=k.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=wt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/$t(5,i)),r=wt(o,2,r,r,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,K(r,e,t,!0)};k.hyperbolicTangent=k.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,Y(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};k.inverseCosine=k.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Me(t,r,o):new t(0):new t(NaN):e.isZero()?Me(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Me(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};k.inverseHyperbolicCosine=k.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,D=!1,t=t.times(t).minus(1).sqrt().plus(t),D=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};k.inverseHyperbolicSine=k.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,D=!1,t=t.times(t).plus(1).sqrt().plus(t),D=!0,n.precision=i,n.rounding=e,t.ln())};k.inverseHyperbolicTangent=k.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?K(new o(r),i,e,!0):(o.precision=t=n-r.e,r=Y(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};k.inverseSine=k.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=Me(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};k.inverseTangent=k.atan=function(){var i,e,t,n,r,o,s,a,c,u=this,l=u.constructor,d=l.precision,m=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&d+4<=Pn)return s=Me(l,d+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(d+4<=Pn)return s=Me(l,d+4,m).times(.5),s.s=u.s,s}for(l.precision=a=d+10,l.rounding=1,t=Math.min(28,a/L+2|0),i=t;i;--i)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(D=!1,e=Math.ceil(a/L),n=1,c=u.times(u),s=new l(u),r=u;i!==-1;)if(r=r.times(c),o=s.minus(r.div(n+=2)),r=r.times(c),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),D=!0,K(s,l.precision=d,l.rounding=m,!0)};k.isFinite=function(){return!!this.d};k.isInteger=k.isInt=function(){return!!this.d&&Pe(this.e/L)>this.d.length-2};k.isNaN=function(){return!this.s};k.isNegative=k.isNeg=function(){return this.s<0};k.isPositive=k.isPos=function(){return this.s>0};k.isZero=function(){return!!this.d&&this.d[0]===0};k.lessThan=k.lt=function(i){return this.cmp(i)<0};k.lessThanOrEqualTo=k.lte=function(i){return this.cmp(i)<1};k.logarithm=k.log=function(i){var e,t,n,r,o,s,a,c,u=this,l=u.constructor,d=l.precision,m=l.rounding,f=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.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(r=t[0];r%10===0;)r/=10;o=r!==1}if(D=!1,a=d+f,s=Je(u,a),n=e?Zt(l,a+10):Je(i,a),c=Y(s,n,a,1),Tt(c.d,r=d,m))do if(a+=10,s=Je(u,a),n=e?Zt(l,a+10):Je(i,a),c=Y(s,n,a,1),!o){+ge(c.d).slice(r+1,r+15)+1==1e14&&(c=K(c,d+1,0));break}while(Tt(c.d,r+=10,m));return D=!0,K(c,d,m)};k.minus=k.sub=function(i){var e,t,n,r,o,s,a,c,u,l,d,m,f=this,g=f.constructor;if(i=new g(i),!f.d||!i.d)return!f.s||!i.s?i=new g(NaN):f.d?i.s=-i.s:i=new g(i.d||f.s!==i.s?f:NaN),i;if(f.s!=i.s)return i.s=-i.s,f.plus(i);if(u=f.d,m=i.d,a=g.precision,c=g.rounding,!u[0]||!m[0]){if(m[0])i.s=-i.s;else if(u[0])i=new g(f);else return new g(c===3?-0:0);return D?K(i,a,c):i}if(t=Pe(i.e/L),l=Pe(f.e/L),u=u.slice(),o=l-t,o){for(d=o<0,d?(e=u,o=-o,s=m.length):(e=m,t=l,s=u.length),n=Math.max(Math.ceil(a/L),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=m.length,d=n<s,d&&(s=n),n=0;n<s;n++)if(u[n]!=m[n]){d=u[n]<m[n];break}o=0}for(d&&(e=u,u=m,m=e,i.s=-i.s),s=u.length,n=m.length-s;n>0;--n)u[s++]=0;for(n=m.length;n>o;){if(u[--n]<m[n]){for(r=n;r&&u[--r]===0;)u[r]=Ee-1;--u[r],u[n]+=Ee}u[n]-=m[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(i.d=u,i.e=Qt(u,t),D?K(i,a,c):i):new g(c===3?-0:0)};k.modulo=k.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?K(new n(t),n.precision,n.rounding):(D=!1,n.modulo==9?(e=Y(t,i.abs(),0,3,1),e.s*=i.s):e=Y(t,i,0,n.modulo,1),e=e.times(i),D=!0,t.minus(e))};k.naturalExponential=k.exp=function(){return kn(this)};k.naturalLogarithm=k.ln=function(){return Je(this)};k.negated=k.neg=function(){var i=new this.constructor(this);return i.s=-i.s,K(i)};k.plus=k.add=function(i){var e,t,n,r,o,s,a,c,u,l,d=this,m=d.constructor;if(i=new m(i),!d.d||!i.d)return!d.s||!i.s?i=new m(NaN):d.d||(i=new m(i.d||d.s===i.s?d:NaN)),i;if(d.s!=i.s)return i.s=-i.s,d.minus(i);if(u=d.d,l=i.d,a=m.precision,c=m.rounding,!u[0]||!l[0])return l[0]||(i=new m(d)),D?K(i,a,c):i;if(o=Pe(d.e/L),n=Pe(i.e/L),u=u.slice(),r=o-n,r){for(r<0?(t=u,r=-r,s=l.length):(t=l,n=o,s=u.length),o=Math.ceil(a/L),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=u.length,r=l.length,s-r<0&&(r=s,t=l,l=u,u=t),e=0;r;)e=(u[--r]=u[r]+l[r]+e)/Ee|0,u[r]%=Ee;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return i.d=u,i.e=Qt(u,n),D?K(i,a,c):i};k.precision=k.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(et+i);return t.d?(e=gi(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};k.round=function(){var i=this,e=i.constructor;return K(new e(i),i.e+1,e.rounding)};k.sine=k.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+L,n.rounding=1,t=xr(n,hi(n,t)),n.precision=i,n.rounding=e,K(ze>2?t.neg():t,i,e,!0)):new n(NaN)};k.squareRoot=k.sqrt=function(){var i,e,t,n,r,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(D=!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(Y(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"||!r&&e=="4999"){if(!r&&(K(o,c+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(K(n,c+1,1),i=!n.times(n).eq(s));break}return D=!0,K(n,c,l.rounding,i)};k.tangent=k.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=Y(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,K(ze==2||ze==4?t.neg():t,i,e,!0)):new n(NaN)};k.times=k.mul=function(i){var e,t,n,r,o,s,a,c,u,l=this,d=l.constructor,m=l.d,f=(i=new d(i)).d;if(i.s*=l.s,!m||!m[0]||!f||!f[0])return new d(!i.s||m&&!m[0]&&!f||f&&!f[0]&&!m?NaN:!m||!f?i.s/0:i.s*0);for(t=Pe(l.e/L)+Pe(i.e/L),c=m.length,u=f.length,c<u&&(o=m,m=f,f=o,s=c,c=u,u=s),o=[],s=c+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,r=c+n;r>n;)a=o[r]+f[n]*m[r-n-1]+e,o[r--]=a%Ee|0,e=a/Ee|0;o[r]=(o[r]+e)%Ee|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=Qt(o,t),D?K(i,d.precision,d.rounding):i};k.toBinary=function(i,e){return xn(this,2,i,e)};k.toDecimalPlaces=k.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ie(i,0,tt),e===void 0?e=n.rounding:Ie(e,0,8),K(t,i+t.e+1,e))};k.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=We(n,!0):(Ie(i,0,tt),e===void 0?e=r.rounding:Ie(e,0,8),n=K(new r(n),i+1,e),t=We(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};k.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=We(r):(Ie(i,0,tt),e===void 0?e=o.rounding:Ie(e,0,8),n=K(new o(r),i+r.e+1,e),t=We(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};k.toFraction=function(i){var e,t,n,r,o,s,a,c,u,l,d,m,f=this,g=f.d,p=f.constructor;if(!g)return new p(f);if(u=t=new p(1),n=c=new p(0),e=new p(n),o=e.e=gi(g)-f.e-1,s=o%L,e.d[0]=ue(10,s<0?L+s:s),i==null)i=o>0?e:u;else{if(a=new p(i),!a.isInt()||a.lt(u))throw Error(et+a);i=a.gt(e)?o>0?e:u:a}for(D=!1,a=new p(ge(g)),l=p.precision,p.precision=o=g.length*L*2;d=Y(a,e,0,1,1),r=t.plus(d.times(n)),r.cmp(i)!=1;)t=n,n=r,r=u,u=c.plus(d.times(r)),c=r,r=e,e=a.minus(d.times(r)),a=r;return r=Y(i.minus(t),n,0,1,1),c=c.plus(r.times(u)),t=t.plus(r.times(n)),c.s=u.s=f.s,m=Y(u,n,o,1).minus(f).abs().cmp(Y(c,t,o,1).minus(f).abs())<1?[u,n]:[c,t],p.precision=l,D=!0,m};k.toHexadecimal=k.toHex=function(i,e){return xn(this,16,i,e)};k.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:Ie(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?(D=!1,t=Y(t,i,0,e,1).times(i),D=!0,K(t)):(i.s=t.s,t=i),t};k.toNumber=function(){return+this};k.toOctal=function(i,e){return xn(this,8,i,e)};k.toPower=k.pow=function(i){var e,t,n,r,o,s,a=this,c=a.constructor,u=+(i=new c(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new c(ue(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,i.eq(1))return K(a,n,o);if(e=Pe(i.e/L),e>=i.d.length-1&&(t=u<0?-u:u)<=Ar)return r=bi(c,a,t,n),i.s<0?new c(1).div(r):K(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new c(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=ue(+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):(D=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=kn(i.times(Je(a,n+t)),n),r.d&&(r=K(r,n+5,1),Tt(r.d,n,o)&&(e=n+10,r=K(kn(i.times(Je(a,e+t)),e),e+5,1),+ge(r.d).slice(n+1,n+15)+1==1e14&&(r=K(r,n+1,0)))),r.s=s,D=!0,c.rounding=o,K(r,n,o))};k.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=We(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ie(i,1,tt),e===void 0?e=r.rounding:Ie(e,0,8),n=K(new r(n),i,e),t=We(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};k.toSignificantDigits=k.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Ie(i,1,tt),e===void 0?e=n.rounding:Ie(e,0,8)),K(new n(t),i,e)};k.toString=function(){var i=this,e=i.constructor,t=We(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};k.truncated=k.trunc=function(){return K(new this.constructor(this),this.e+1,1)};k.valueOf=k.toJSON=function(){var i=this,e=i.constructor,t=We(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function ge(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=L-n.length,t&&(o+=$e(t)),o+=n;s=i[e],n=s+"",t=L-n.length,t&&(o+=$e(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ie(i,e,t){if(i!==~~i||i<e||i>t)throw Error(et+i)}function Tt(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=L,r=0):(r=Math.ceil((e+1)/L),e%=L),o=ue(10,L-e),a=i[r]%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)&&(i[r+1]/o/100|0)==ue(10,e-2)-1||(a==o/2||a==0)&&(i[r+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)&&(i[r+1]/o/1e3|0)==ue(10,e-3)-1,s}function Ht(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=hn.indexOf(i.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function kr(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/$t(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=wt(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var Y=function(){function i(n,r,o){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*r+a,n[c]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(n[a]!=r[a]){c=n[a]>r[a]?1:-1;break}return c}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,c){var u,l,d,m,f,g,p,b,y,h,w,P,A,T,x,I,N,M,q,he,te=n.constructor,Ae=n.s==r.s?1:-1,ne=n.d,z=r.d;if(!ne||!ne[0]||!z||!z[0])return new te(!n.s||!r.s||(ne?z&&ne[0]==z[0]:!z)?NaN:ne&&ne[0]==0||!z?Ae*0:Ae/0);for(c?(f=1,l=n.e-r.e):(c=Ee,f=L,l=Pe(n.e/f)-Pe(r.e/f)),q=z.length,N=ne.length,y=new te(Ae),h=y.d=[],d=0;z[d]==(ne[d]||0);d++);if(z[d]>(ne[d]||0)&&l--,o==null?(T=o=te.precision,s=te.rounding):a?T=o+(n.e-r.e)+1:T=o,T<0)h.push(1),g=!0;else{if(T=T/f+2|0,d=0,q==1){for(m=0,z=z[0],T++;(d<N||m)&&T--;d++)x=m*c+(ne[d]||0),h[d]=x/z|0,m=x%z|0;g=m||d<N}else{for(m=c/(z[0]+1)|0,m>1&&(z=i(z,m,c),ne=i(ne,m,c),q=z.length,N=ne.length),I=q,w=ne.slice(0,q),P=w.length;P<q;)w[P++]=0;he=z.slice(),he.unshift(0),M=z[0],z[1]>=c/2&&++M;do m=0,u=e(z,w,q,P),u<0?(A=w[0],q!=P&&(A=A*c+(w[1]||0)),m=A/M|0,m>1?(m>=c&&(m=c-1),p=i(z,m,c),b=p.length,P=w.length,u=e(p,w,b,P),u==1&&(m--,t(p,q<b?he:z,b,c))):(m==0&&(u=m=1),p=z.slice()),b=p.length,b<P&&p.unshift(0),t(w,p,P,c),u==-1&&(P=w.length,u=e(z,w,q,P),u<1&&(m++,t(w,q<P?he:z,P,c))),P=w.length):u===0&&(m++,w=[0]),h[d++]=m,u&&w[0]?w[P++]=ne[I]||0:(w=[ne[I]],P=1);while((I++<N||w[0]!==void 0)&&T--);g=w[0]!==void 0}h[0]||h.shift()}if(f==1)y.e=l,li=g;else{for(d=1,m=h[0];m>=10;m/=10)d++;y.e=d+l*f-1,K(y,a?o+y.e+1:o,s,g)}return y}}();function K(i,e,t,n){var r,o,s,a,c,u,l,d,m,f=i.constructor;e:if(e!=null){if(d=i.d,!d)return i;for(r=1,a=d[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=L,s=e,l=d[m=0],c=l/ue(10,r-s-1)%10|0;else if(m=Math.ceil((o+1)/L),a=d.length,m>=a)if(n){for(;a++<=m;)d.push(0);l=c=0,r=1,o%=L,s=o-L+1}else break e;else{for(l=a=d[m],r=1;a>=10;a/=10)r++;o%=L,s=o-L+r,c=s<0?0:l/ue(10,r-s-1)%10|0}if(n=n||e<0||d[m+1]!==void 0||(s<0?l:l%ue(10,r-s-1)),u=t<4?(c||n)&&(t==0||t==(i.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(o>0?s>0?l/ue(10,r-s):0:d[m-1])%10&1||t==(i.s<0?8:7)),e<1||!d[0])return d.length=0,u?(e-=i.e+1,d[0]=ue(10,(L-e%L)%L),i.e=-e||0):d[0]=i.e=0,i;if(o==0?(d.length=m,a=1,m--):(d.length=m+1,a=ue(10,L-o),d[m]=s>0?(l/ue(10,r-s)%ue(10,s)|0)*a:0),u)for(;;)if(m==0){for(o=1,s=d[0];s>=10;s/=10)o++;for(s=d[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,d[0]==Ee&&(d[0]=1));break}else{if(d[m]+=a,d[m]!=Ee)break;d[m--]=0,a=1}for(o=d.length;d[--o]===0;)d.pop()}return D&&(i.e>f.maxE?(i.d=null,i.e=NaN):i.e<f.minE&&(i.e=0,i.d=[0])),i}function We(i,e,t){if(!i.isFinite())return wi(i);var n,r=i.e,o=ge(i.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+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+$e(-r-1)+o,t&&(n=t-s)>0&&(o+=$e(n))):r>=s?(o+=$e(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+$e(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=$e(n))),o}function Qt(i,e){var t=i[0];for(e*=L;t>=10;t/=10)e++;return e}function Zt(i,e,t){if(e>Pr)throw D=!0,t&&(i.precision=t),Error(di);return K(new i(zt),e,1,!0)}function Me(i,e,t){if(e>Pn)throw Error(di);return K(new i(jt),e,t,!0)}function gi(i){var e=i.length-1,t=e*L+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function $e(i){for(var e="";i--;)e+="0";return e}function bi(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/L+4);for(D=!1;;){if(t%2&&(o=o.times(e),ci(o.d,s)&&(r=!0)),t=Pe(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ci(e.d,s)}return D=!0,o}function ai(i){return i.d[i.d.length-1]&1}function yi(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function kn(i,e){var t,n,r,o,s,a,c,u=0,l=0,d=0,m=i.constructor,f=m.rounding,g=m.precision;if(!i.d||!i.d[0]||i.e>17)return new m(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(D=!1,c=g):c=e,a=new m(.03125);i.e>-2;)i=i.times(a),d+=5;for(n=Math.log(ue(2,d))/Math.LN10*2+5|0,c+=n,t=o=s=new m(1),m.precision=c;;){if(o=K(o.times(i),c,1),t=t.times(++l),a=s.plus(Y(o,t,c,1)),ge(a.d).slice(0,c)===ge(s.d).slice(0,c)){for(r=d;r--;)s=K(s.times(s),c,1);if(e==null)if(u<3&&Tt(s.d,c-n,f,u))m.precision=c+=10,t=o=a=new m(1),l=0,u++;else return K(s,m.precision=g,f,D=!0);else return m.precision=g,s}s=a}}function Je(i,e){var t,n,r,o,s,a,c,u,l,d,m,f=1,g=10,p=i,b=p.d,y=p.constructor,h=y.rounding,w=y.precision;if(p.s<0||!b||!b[0]||!p.e&&b[0]==1&&b.length==1)return new y(b&&!b[0]?-1/0:p.s!=1?NaN:b?0:p);if(e==null?(D=!1,l=w):l=e,y.precision=l+=g,t=ge(b),n=t.charAt(0),Math.abs(o=p.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)p=p.times(i),t=ge(p.d),n=t.charAt(0),f++;o=p.e,n>1?(p=new y("0."+t),o++):p=new y(n+"."+t.slice(1))}else return u=Zt(y,l+2,w).times(o+""),p=Je(new y(n+"."+t.slice(1)),l-g).plus(u),y.precision=w,e==null?K(p,w,h,D=!0):p;for(d=p,c=s=p=Y(p.minus(1),p.plus(1),l,1),m=K(p.times(p),l,1),r=3;;){if(s=K(s.times(m),l,1),u=c.plus(Y(s,new y(r),l,1)),ge(u.d).slice(0,l)===ge(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(Zt(y,l+2,w).times(o+""))),c=Y(c,new y(f),l,1),e==null)if(Tt(c.d,l-g,h,a))y.precision=l+=g,u=s=p=Y(d.minus(1),d.plus(1),l,1),m=K(p.times(p),l,1),r=a=1;else return K(c,y.precision=w,h,D=!0);else return y.precision=w,c;c=u,r+=2}}function wi(i){return String(i.s*i.s/0)}function Tn(i,e){var t,n,r;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(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%L,t<0&&(n+=L),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=L;n<r;)i.d.push(+e.slice(n,n+=L));e=e.slice(n),n=L-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),D&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function Tr(i,e){var t,n,r,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),pi.test(e))return Tn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(wr.test(e))t=16,e=e.toLowerCase();else if(yr.test(e))t=2;else if(hr.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=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=bi(n,new n(t),o,o*2)),u=Ht(e,t,Ee),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(i.s*0):(i.e=Qt(u,l),i.d=u,D=!1,s&&(i=Y(i,r,a*4)),c&&(i=i.times(Math.abs(c)<54?ue(2,c):xt.pow(2,c))),D=!0,i)}function xr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:wt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/$t(5,t)),e=wt(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function wt(i,e,t,n,r){var o,s,a,c,u=1,l=i.precision,d=Math.ceil(l/L);for(D=!1,c=t.times(t),a=new i(n);;){if(s=Y(a.times(c),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=Y(s.times(c),new i(e++*e++),l,1),s=a.plus(n),s.d[d]!==void 0){for(o=d;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return D=!0,s.d.length=d+1,s}function $t(i,e){for(var t=i;--e;)t*=i;return t}function hi(i,e){var t,n=e.s<0,r=Me(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return ze=n?4:1,e;if(t=e.divToInt(r),t.isZero())ze=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return ze=ai(t)?n?2:3:n?4:1,e;ze=ai(t)?n?1:4:n?3:2}return e.minus(r).abs()}function xn(i,e,t,n){var r,o,s,a,c,u,l,d,m,f=i.constructor,g=t!==void 0;if(g?(Ie(t,1,tt),n===void 0?n=f.rounding:Ie(n,0,8)):(t=f.precision,n=f.rounding),!i.isFinite())l=wi(i);else{for(l=We(i),s=l.indexOf("."),g?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),m=new f(1),m.e=l.length-s,m.d=Ht(We(m),10,r),m.e=m.d.length),d=Ht(l,10,r),o=c=d.length;d[--c]==0;)d.pop();if(!d[0])l=g?"0p+0":"0";else{if(s<0?o--:(i=new f(i),i.d=d,i.e=o,i=Y(i,m,t,n,0,r),d=i.d,o=i.e,u=li),s=d[t],a=r/2,u=u||d[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&d[t-1]&1||n===(i.s<0?8:7)),d.length=t,u)for(;++d[--t]>r-1;)d[t]=0,t||(++o,d.unshift(1));for(c=d.length;!d[c-1];--c);for(s=0,l="";s<c;s++)l+=hn.charAt(d[s]);if(g){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(d=Ht(l,r,e),c=d.length;!d[c-1];--c);for(s=1,l="1.";s<c;s++)l+=hn.charAt(d[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>c)for(o-=c;o--;)l+="0";else o<c&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function ci(i,e){if(i.length>e)return i.length=e,!0}function Br(i){return new this(i).abs()}function Ir(i){return new this(i).acos()}function Sr(i){return new this(i).acosh()}function Cr(i,e){return new this(i).plus(e)}function Kr(i){return new this(i).asin()}function Nr(i){return new this(i).asinh()}function Lr(i){return new this(i).atan()}function Rr(i){return new this(i).atanh()}function Mr(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=Me(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Me(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Me(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(Y(i,e,o,1)),e=Me(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(Y(i,e,o,1)),t}function Er(i){return new this(i).cbrt()}function Or(i){return K(i=new this(i),i.e+1,2)}function Fr(i,e,t){return new this(i).clamp(e,t)}function Dr(i){if(!i||typeof i!="object")throw Error(Yt+"Object expected");var e,t,n,r=i.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],r&&(this[t]=An[t]),(n=i[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",r&&(this[t]=An[t]),(n=i[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(mi);else this[t]=!1;else throw Error(et+t+": "+n);return this}function _r(i){return new this(i).cos()}function vr(i){return new this(i).cosh()}function Ai(i){var e,t,n;function r(o){var s,a,c,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,ui(o)){u.s=o.s,D?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.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++;D?s>r.maxE?(u.e=NaN,u.d=null):s<r.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),pi.test(o)?Tn(u,o):Tr(u,o)}if(r.prototype=k,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=Dr,r.clone=Ai,r.isDecimal=ui,r.abs=Br,r.acos=Ir,r.acosh=Sr,r.add=Cr,r.asin=Kr,r.asinh=Nr,r.atan=Lr,r.atanh=Rr,r.atan2=Mr,r.cbrt=Er,r.ceil=Or,r.clamp=Fr,r.cos=_r,r.cosh=vr,r.div=qr,r.exp=Wr,r.floor=Vr,r.hypot=Ur,r.ln=Gr,r.log=Xr,r.log10=zr,r.log2=Hr,r.max=jr,r.min=Zr,r.mod=Yr,r.mul=Qr,r.pow=$r,r.random=Jr,r.round=eo,r.sign=to,r.sin=no,r.sinh=io,r.sqrt=ro,r.sub=oo,r.sum=so,r.tan=ao,r.tanh=co,r.trunc=uo,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function qr(i,e){return new this(i).div(e)}function Wr(i){return new this(i).exp()}function Vr(i){return K(i=new this(i),i.e+1,3)}function Ur(){var i,e,t=new this(0);for(D=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return D=!0,new this(1/0);t=e}return D=!0,t.sqrt()}function ui(i){return i instanceof xt||i&&i.toStringTag===fi||!1}function Gr(i){return new this(i).ln()}function Xr(i,e){return new this(i).log(e)}function Hr(i){return new this(i).log(2)}function zr(i){return new this(i).log(10)}function jr(){return yi(this,arguments,"lt")}function Zr(){return yi(this,arguments,"gt")}function Yr(i,e){return new this(i).mod(e)}function Qr(i,e){return new this(i).mul(e)}function $r(i,e){return new this(i).pow(e)}function Jr(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ie(i,1,tt),n=Math.ceil(i/L),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error(mi);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=L,n&&i&&(r=ue(10,L-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=L)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<L&&(t-=L-n)}return s.e=t,s.d=a,s}function eo(i){return K(i=new this(i),i.e+1,this.rounding)}function to(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function no(i){return new this(i).sin()}function io(i){return new this(i).sinh()}function ro(i){return new this(i).sqrt()}function oo(i,e){return new this(i).sub(e)}function so(){var i=0,e=arguments,t=new this(e[i]);for(D=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return D=!0,K(t,this.precision,this.rounding)}function ao(i){return new this(i).tan()}function co(i){return new this(i).tanh()}function uo(i){return K(i=new this(i),i.e+1,1)}k[Symbol.for("nodejs.util.inspect.custom")]=k.toString;k[Symbol.toStringTag]="Decimal";var xt=k.constructor=Ai(An);zt=new xt(zt);jt=new xt(jt);var S=xt;import{get as Pi,set as lo}from"lodash";import Ti from"dayjs";import mo from"dayjs/plugin/utc";Ti.extend(mo);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 Ti().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}},ki={},fo={};function le(i){let e=Pi(ki,i);if(!e){let t=Pi(fo,i);e=new Bn({name:i,logLevel:t}),lo(ki,i,e)}return e}import{PublicKey as pc}from"@solana/web3.js";import bc from"bn.js";import So 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 po}from"@solana/spl-token";import{PublicKey as J,SystemProgram as xi,SYSVAR_RENT_PUBKEY as go}from"@solana/web3.js";function In({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Cs=[In({pubkey:po,isWritable:!1}),In({pubkey:xi.programId,isWritable:!1}),In({pubkey:go,isWritable:!1})];function Sn({publicKey:i,transformSol:e}){let t=Bi(i.toString());if(t instanceof J)return e&&t.equals(Bt)?$:t;if(e&&t.toString()===Bt.toBase58())return $;if(typeof t=="string"){if(t===J.default.toBase58())return J.default;try{return new J(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Bi(i){try{return new J(i)}catch{return i}}var Jt=new J("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ks=new J("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),It=new J("SysvarRent111111111111111111111111111111111"),Ns=new J("SysvarC1ock11111111111111111111111111111111"),ht=new J("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ls=new J("Sysvar1nstructions1111111111111111111111111"),Rs=xi.programId,Ms=new J("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Es=new J("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Os=new J("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Fs=new J("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ds=new J("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),_s=new J("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),vs=new J("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),qs=new J("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ws=new J("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Vs=new J("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Us=new J("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),$=new J("So11111111111111111111111111111111111111112"),Bt=J.default;function Cn(i){return Sn({publicKey:i,transformSol:!0})}import{PublicKey as bo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ii}from"@solana/spl-token";var Si={chainId:101,address:bo.default.toBase58(),programId:Ii.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:Ii.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:r,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=r||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)}},je=Nn;je.WSOL=new Nn(j(v({},ut),{mint:ut.address}));import tn from"big.js";import ho from"bn.js";import Ao from"decimal.js-light";import yo from"toformat";var wo=yo,St=wo;var en=le("module/fraction"),Ln=St(tn),Ct=St(Ao),Po={[0]:Ct.ROUND_DOWN,[1]:Ct.ROUND_HALF_UP,[2]:Ct.ROUND_UP},ko={[0]:tn.roundDown,[1]:tn.roundHalfUp,[2]:tn.roundUp},H=class{constructor(e,t=new ho(1)){this.numerator=be(e),this.denominator=be(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new H(this.denominator,this.numerator)}add(e){let t=e instanceof H?e:new H(be(e));return this.denominator.eq(t.denominator)?new H(this.numerator.add(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof H?e:new H(be(e));return this.denominator.eq(t.denominator)?new H(this.numerator.sub(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof H?e:new H(be(e));return new H(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof H?e:new H(be(e));return new H(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:Po[n]});let r=new Ct(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.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.`),Ln.DP=e,Ln.RM=ko[n]||1,new Ln(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var xo=le("Raydium_price"),Oe=class extends H{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new H(Rn(n.decimals),Rn(r.decimals))}get raw(){return new H(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&&xo.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,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var Mn=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=Mn;nn.SOL=new Mn(Si);import Bo from"bn.js";var Ci=new H(new Bo(100)),lt=class extends H{toSignificant(e=5,t,n){return this.mul(Ci).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ci).toFixed(e,t,n)}};var Io=new Se(0),va=new Se(1),qa=new Se(2),Wa=new Se(3),Va=new Se(5),En=new Se(10),Ua=new Se(100),Ga=new Se(1e3),Xa=new Se(1e4),Ki=9007199254740991;function be(i){let e=le("Raydium_parseBigNumberish");if(i instanceof Se)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Se(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Ki||i<=-Ki)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Se(String(i))):typeof i=="bigint"?new Se(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Se(0))}function Rn(i){return En.pow(be(i))}var Co=le("Raydium_amount"),Ni=St(So);function Ko(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):Co.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ke=class extends H{constructor(t,n,r=!0,o){let s=new rn(0),a=En.pow(new rn(t.decimals));if(r)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,d]=Ko(n.toString(),t.decimals);c=be(l),u=be(d)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=le(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 ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return Ni.DP=this.token.decimals,new Ni(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Lt,sendAndConfirmTransaction as vn,Transaction as Rt,TransactionMessage as Mt,VersionedTransaction as Et}from"@solana/web3.js";import Do from"axios";var se={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",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 No,ComputeBudgetProgram as Li,Transaction as Mi,TransactionMessage as Lo,Keypair as Ei,VersionedTransaction as Oi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ro}from"@solana/spl-token";var Ri=le("Raydium_txUtil"),Fi=1644;function on(i){let e=[],t=[];return i.microLamports&&(e.push(Li.setComputeUnitPrice({microLamports:i.microLamports})),t.push(se.SetComputeUnitPrice)),i.units&&(e.push(Li.setComputeUnitLimit({units:i.units})),t.push(se.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function At(i){var e,t;try{return((t=await((e=i.getLatestBlockhash)==null?void 0:e.call(i)))==null?void 0:t.blockhash)||(await i.getRecentBlockhash()).blockhash}catch{return(await i.getRecentBlockhash()).blockhash}}function Mo(i,e){i.length<1&&Ri.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Ri.logWithError(`no signers provided:, ${e.toString()}`);let t=new Mi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Fi}catch{return!1}}function Ke(i,e){let[t,n]=No.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Kt({instructions:i,payer:e,signers:t}){return Mo(i,[e,...t])}function Nt({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ei.generate().publicKey.toString()}){let o=new Lo({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Oi(o).serialize()).toString("base64").length<Fi}catch{return!1}}var Eo=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function dt(i){let e=[];return i.forEach(t=>{t instanceof Mi&&(t.recentBlockhash||(t.recentBlockhash=Ro.toBase58()),t.feePayer||(t.feePayer=Ei.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Oi&&(n=Eo(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as Di,AddressLookupTableAccount as sn}from"@solana/web3.js";import{PublicKey as Oo}from"@solana/web3.js";import{getTransferFeeConfig as Oc,unpackMint as Fc}from"@solana/spl-token";var On=le("Raydium_accountInfo_util");async function nt(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=v({batchRequest:!1},t),o=Fn(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let d=i._buildArgs([l.map(m=>m.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=Fn(a,10);s=(await(await Promise.all(c.map(async l=>await i._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(d=>{if(d){let{data:m,executable:f,lamports:g,owner:p,rentEpoch:b}=d;return m.length!==2&&m[1]!=="base64"&&On.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(m[0],"base64"),executable:f,lamports:g,owner:new Oo(p),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&On.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Dn(i,e,t){let n=await nt(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>j(v({},r),{accountInfo:n[o]}))}async function _n({connection:i,address:e}){let t=await nt(i,[...new Set(e.map(r=>r.toString()))].map(r=>new Di(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];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 Di("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 Do.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:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Lt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(v({},t||{})):this.build(t)}build(e){let t=new Rt;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:r,skipPreflight:o=!0}=n||{},s=r!=null?r:await At(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),dt([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:r}=this.build(n),o=t.filter(u=>u.transaction.instructions.length>0),s=[r,...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 p;let{sequentially:l,onTxUpdate:d,recentBlockHash:m,skipPreflight:f=!0}=u||{},g=m!=null?m:await At(this.connection);if((p=this.owner)!=null&&p.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:f})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((h,w)=>(h.recentBlockhash=g,a[w].length&&h.sign(...a[w]),h));dt(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:f});w.push({txId:A,status:"sent",signedTx:y[h]}),d==null||d([...w]),h++,this.connection.onSignature(A,T=>{let x=w.findIndex(I=>I.txId===A);x>-1&&(w[x].status=T.err?"error":"success"),d==null||d([...w]),T.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:f});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 m=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=m,o=Xt(m,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=v(v({},this.cluster==="devnet"?{}:an),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let f of a)s[f]===void 0&&c.push(new Lt(f));let u=await _n({connection:this.connection,address:c});for(let[f,g]of Object.entries(u))s[f]=g;let l=new Mt({payerKey:this.feePayer,recentBlockhash:r?Lt.default.toBase58():await At(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),d=new Et(l);return d.sign(this.signers),{builder:this,transaction:d,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async f=>{var b;let{recentBlockHash:g,skipPreflight:p=!0}=f||{};if(g&&(d.message.recentBlockhash=g),dt([d]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))||d.sign([this.owner.signer]);let y=await this.connection.sendTransaction(d,{skipPreflight:p}),{lastValidBlockHeight:h,blockhash:w}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:w,lastValidBlockHeight:h,signature:y},"confirmed"),{txId:y,signedTx:d}}if(this.signAllTransactions){let y=await this.signAllTransactions([d]);return{txId:await this.connection.sendTransaction(y[0],{skipPreflight:p}),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:r}=await this.buildV0(n),o=t.filter(u=>u.builder.instructions.length>0),s=[r,...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:d,recentBlockHash:m,skipPreflight:f=!0}=u||{};if(m&&s.forEach(p=>p.message.recentBlockhash=m),dt(s),(g=this.owner)!=null&&g.isKeyPair){let{lastValidBlockHeight:p,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:f});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:p,signature:h},"confirmed"),h})),signedTxs:s}}if(this.signAllTransactions){let p=await this.signAllTransactions(s);if(l){let b=0,y=[],h=async()=>{if(!p[b])return;let w=await this.connection.sendTransaction(p[b],{skipPreflight:f});y.push({txId:w,status:"sent",signedTx:p[b]}),d==null||d([...y]),b++,this.connection.onSignature(w,P=>{let A=y.findIndex(T=>T.txId===w);A>-1&&(y[A].status=P.err?"error":"success"),d==null||d([...y]),P.err||h()},"processed"),this.connection.getSignatureStatus(w)};return h(),{txIds:[],signedTxs:p}}else{let b=[];for(let y=0;y<p.length;y+=1){let h=await this.connection.sendTransaction(p[y],{skipPreflight:f});b.push(h)}return{txIds:b,signedTxs:p}}}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"]),r=t?on(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,d)=>j(v({},l),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(l=>{let d=[...c,l],m=t?[...r.instructions,...d]:d,g=[...new Set(d.map(p=>p.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(p=>new Lt(p));if(c.length<12&&Kt({instructions:m,payer:this.feePayer,signers:g})||Kt({instructions:d,payer:this.feePayer,signers:g}))c.push(l);else{if(c.length===0)throw Error("item ins too big");Kt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:g})?s.push(new Rt().add(...r.instructions,...c)):s.push(new Rt().add(...c)),a.push(Array.from(new Set(c.map(p=>p.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(p=>o[p]).filter(p=>p!==void 0)),c=[l]}}),c.length>0){let d=[...new Set(c.map(m=>m.keys.filter(f=>f.isSigner).map(f=>f.pubkey.toString())).flat()).values()].map(m=>o[m]).filter(m=>m!==void 0);Kt({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:d.map(m=>m.publicKey)})?s.push(new Rt().add(...r.instructions,...c)):s.push(new Rt().add(...c)),a.push(d)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:d,onTxUpdate:m,recentBlockHash:f,skipPreflight:g=!0}=l||{},p=f!=null?f:await At(this.connection);if(s.forEach(async(y,h)=>{y.recentBlockhash=p,a[h].length&&y.sign(...a[h])}),dt(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(d){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]}),m==null||m([...w]),h++,this.connection.onSignature(A,T=>{let x=w.findIndex(I=>I.txId===A);x>-1&&(w[x].status=T.err?"error":"success"),m==null||m([...w]),T.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:r=[]}=b,o=Xt(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=v(v({},this.cluster==="devnet"?{}:an),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),c=[];for(let y of a)s[y]===void 0&&c.push(new Lt(y));let u=await _n({connection:this.connection,address:c});for(let[y,h]of Object.entries(u))s[y]=h;let l=t?on(t):{instructions:[],instructionTypes:[]},d=await At(this.connection),m=this.signers.reduce((y,h)=>j(v({},y),{[h.publicKey.toBase58()]:h}),{}),f=[],g=[],p=[];if(this.allInstructions.forEach(y=>{let h=[...p,y],w=t?[...l.instructions,...h]:h;if(p.length<12&&Nt({instructions:w,payer:this.feePayer,lookupTableAddressAccount:s})||Nt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))p.push(y);else{if(p.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,...p],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let A=new Mt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...p]}).compileToV0Message(Object.values(s));f.push(new Et(A))}else{let A=new Mt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...p]}).compileToV0Message(Object.values(s));f.push(new Et(A))}g.push(Array.from(new Set(p.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat())).map(A=>m[A]).filter(A=>A!==void 0)),p=[y]}}),p.length>0){let h=[...new Set(p.map(w=>w.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(w=>m[w]).filter(w=>w!==void 0);if(t&&Nt({instructions:[...l.instructions,...p],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let w=new Mt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...l.instructions,...p]}).compileToV0Message(Object.values(s));f.push(new Et(w))}else{let w=new Mt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...p]}).compileToV0Message(Object.values(s));f.push(new Et(w))}g.push(h)}return{builder:this,transactions:f,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async y=>{var T;let{sequentially:h,onTxUpdate:w,recentBlockHash:P,skipPreflight:A=!0}=y||{};if(f.map(async(x,I)=>{g[I].length&&x.sign(g[I]),P&&(x.message.recentBlockhash=P)}),dt(f),(T=this.owner)!=null&&T.isKeyPair){let{lastValidBlockHeight:x,blockhash:I}=await this.connection.getLatestBlockhash();return f.forEach((N,M)=>{g[M].find(q=>q.publicKey.equals(this.owner.publicKey))||N.sign([this.owner.signer])}),{txIds:await Promise.all(f.map(async N=>{let M=await this.connection.sendTransaction(N,{skipPreflight:A});return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:x,signature:M},"confirmed"),M})),signedTxs:f}}if(this.signAllTransactions){let x=await this.signAllTransactions(f);if(h){let I=0,N=[],M=async()=>{if(!x[I])return;let q=await this.connection.sendTransaction(x[I],{skipPreflight:A});N.push({txId:q,status:"sent",signedTx:x[I]}),w==null||w([...N]),I++,this.connection.onSignature(q,he=>{let te=N.findIndex(Ae=>Ae.txId===q);te>-1&&(N[te].status=he.err?"error":"success"),w==null||w([...N]),he.err||M()},"processed"),this.connection.getSignatureStatus(q)};return M(),{txIds:[],signedTxs:x}}else{let I=[];for(let N=0;N<x.length;N+=1){let M=await this.connection.sendTransaction(x[N],{skipPreflight:A});I.push(M)}return{txIds:I,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};function Fn(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ae}from"@solana/web3.js";var ru=new ae("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ou=new ae("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),su=new ae("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),au=new ae("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),cu=new ae("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),uu=new ae("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),lu=new ae("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),du=new ae("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),mu=new ae("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),fu=new ae("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),pu=new ae("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),gu=new ae("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),bu=new ae("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),yu=new ae("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),wu=new ae("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),hu=new ae("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Au=new ae("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Pu=new ae("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),ku=new ae("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Tu=new ae("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");import{PublicKey as _o}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vo}from"@solana/spl-token";function Fe(i,e,t){return Ke([i.toBuffer(),(t!=null?t:vo).toBuffer(),e.toBuffer()],new _o("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import De from"bn.js";var Ot=1e4;function de(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=j(v({},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<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new De(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.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:i.add(c),fee:c,expirationTime:a}}else{let c=qn(i.mul(new De(Ot)),new De(Ot-o.transferFeeBasisPoints)),u=new De(o.maximumFee.toString()),l=c.sub(i).gt(u)?i.add(u):c,d=qn(l.mul(new De(o.transferFeeBasisPoints)),new De(Ot)),m=d.gt(s)?s:d;return{amount:l,fee:m,expirationTime:a}}else{let c=qn(i.mul(new De(o.transferFeeBasisPoints)),new De(Ot)),u=c.gt(s)?s:c;return{amount:i,fee:u,expirationTime:a}}}function mt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function qn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new De(0))?t.add(new De(1)):t}var Wn=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ft=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=le(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(Wn(e))}logInfo(...e){this.logger.info(Wn(e))}logAndCreateError(...e){let t=Wn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import Ve from"bn.js";var ce=new Ve(0),Ue=new Ve(1),Ze=new Ve(-1),Ce=new Ve(1).shln(64),un=new Ve(1).shln(128),Vn=Ce.sub(Ue),Dt=64,_i=un.subn(1),Te=-443636,Be=-Te,it=new Ve("4295048016"),rt=new Ve("79226673521066979257578248091"),vi=16,qi="59543866431248",Wi="184467440737095516",Vi="15793534762490258745",ln=new Ve(10).pow(new Ve(6));var Ui={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:[]},Ju=new Ve("18446744073700000000");import W from"bn.js";function dn(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Un(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Gn(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function _t(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Gi(i,e){return _t(i,e)?null:Un(i,e)}function Xi(i,e){return _t(i,e)?null:Gn(i,e)}var ol=Buffer.from("amm_config","utf8"),qo=Buffer.from("pool","utf8"),Wo=Buffer.from("pool_vault","utf8"),Vo=Buffer.from("pool_reward_vault","utf8"),Hi=Buffer.from("position","utf8"),Uo=Buffer.from("tick_array","utf8"),Go=Buffer.from("operation","utf8"),Xo=Buffer.from("pool_tick_array_bitmap_extension","utf8");function zi(i,e,t,n){return Ke([qo,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Xn(i,e,t){return Ke([Wo,e.toBuffer(),t.toBuffer()],i)}function ji(i,e,t){return Ke([Vo,e.toBuffer(),t.toBuffer()],i)}function Z(i,e,t){return Ke([Uo,e.toBuffer(),dn(t)],i)}function ft(i,e,t,n){return Ke([Hi,e.toBuffer(),dn(t),dn(n)],i)}function Ne(i,e){return Ke([Hi,e.toBuffer()],i)}function mn(i){return Ke([Buffer.from("metadata","utf8"),ht.toBuffer(),i.toBuffer()],ht)}function vt(i){return Ke([Go],i)}function Ge(i,e){return Ke([Xo,e.toBuffer()],i)}import{PublicKey as ot}from"@solana/web3.js";import oe from"bn.js";import cs from"bn.js";import{PublicKey as es}from"@solana/web3.js";import $i,{isBN as Ji}from"bn.js";import{bits as cl,BitStructure as ul,blob as Ho,Blob as ll,cstr as dl,f32 as ml,f32be as fl,f64 as pl,f64be as gl,greedy as bl,Layout as zo,ns64 as yl,ns64be as wl,nu64 as hl,nu64be as Al,offset as Pl,s16 as kl,s16be as Tl,s24 as xl,s24be as Bl,s32 as jo,s32be as Il,s40 as Sl,s40be as Cl,s48 as Kl,s48be as Nl,s8 as Ll,seq as Zo,struct as Rl,Structure as Yo,u16 as Qo,u16be as Ml,u24 as El,u24be as Ol,u32 as Fl,u32be as Dl,u40 as _l,u40be as vl,u48 as ql,u48be as Wl,u8 as $o,UInt as Jo,union as Vl,Union as Ul,unionLayoutDiscriminator as Gl,utf8 as Xl}from"@solana/buffer-layout";var Hn=zo,Zi=Yo;var zn=Jo;var Yi=$o,Pt=Qo;var ye=jo;var Qi=Zo;var Le=Ho;var qt=class extends Hn{constructor(t,n,r){super(t,r);this.blob=Le(t),this.signed=n}decode(t,n=0){let r=new $i(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new $i(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function re(i){return new zn(1,i)}function Ye(i){return new zn(4,i)}function R(i){return new qt(8,!1,i)}function U(i){return new qt(16,!1,i)}function er(i){return new qt(16,!0,i)}var fn=class extends Hn{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function ee(i){return new fn(Le(32),e=>new es(e),e=>e.toBuffer(),i)}function Xe(i){return new fn(Yi(),ts,ns,i)}function ts(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function ns(i){return i?1:0}var jn=class extends Zi{decode(e,t){return super.decode(e,t)}};function Q(i,e,t){return new jn(i,e,t)}function ie(i,e,t){let n,r=typeof e=="number"?e:Ji(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Ji(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 Qi(i,r,t)}var Zn=14,Qe=class{static maxTickInTickarrayBitmap(e){return e*me*pt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!G.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-G.tickCount(n):t+G.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*me,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(r){let l=e.shln(1024-u-1),d=Gi(1024,l);if(d!==null){let m=(u-d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),d=Xi(1024,l);if(d!==null){let m=(u+d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o-G.tickCount(n)}}}},Wt=class{static getBitmapOffset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Qe.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&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<=Te)throw Error(`extensionTickBoundary check error: ${n}, ${Te}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:C.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=G.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=Qe.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let c=C.mergeTickArrayBitmap(e).shln(pt-1-a),u=_t(512,c)?null:Un(512,c);if(u!==null){let l=t-u*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=C.mergeTickArrayBitmap(e).shrn(a),u=_t(512,c)?null:Gn(512,c);if(u!==null){let l=t+u*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-G.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Qe.maxTickInTickarrayBitmap(t),r=Math.floor(n/G.tickCount(t));return e<0&&n!=0&&(r=pt-r),r}};var md=Q([Le(8),re("bump"),Pt("index"),ee(""),Ye("protocolFeeRate"),Ye("tradeFeeRate"),Pt("tickSpacing"),ie(R(),8,"")]),is=Q([Ye("blockTimestamp"),U("sqrtPriceX64"),U("cumulativeTimePriceX64"),ie(U(),1,"")]),Yn=Q([Le(8),Xe("initialized"),ee("poolId"),ie(is,1e3,"observations"),ie(U(),5,"")]),rs=Q([re("rewardState"),R("openTime"),R("endTime"),R("lastUpdateTime"),U("emissionsPerSecondX64"),R("rewardTotalEmissioned"),R("rewardClaimed"),ee("tokenMint"),ee("tokenVault"),ee("creator"),U("rewardGrowthGlobalX64")]),pn=Q([Le(8),re("bump"),ee("ammConfig"),ee("creator"),ee("mintA"),ee("mintB"),ee("vaultA"),ee("vaultB"),ee("observationId"),re("mintDecimalsA"),re("mintDecimalsB"),Pt("tickSpacing"),U("liquidity"),U("sqrtPriceX64"),ye("tickCurrent"),Pt("observationIndex"),Pt("observationUpdateDuration"),U("feeGrowthGlobalX64A"),U("feeGrowthGlobalX64B"),R("protocolFeesTokenA"),R("protocolFeesTokenB"),U("swapInAmountTokenA"),U("swapOutAmountTokenB"),U("swapInAmountTokenB"),U("swapOutAmountTokenA"),re("status"),ie(re(),7,""),ie(rs,3,"rewardInfos"),ie(R(),16,"tickArrayBitmap"),R("totalFeesTokenA"),R("totalFeesClaimedTokenA"),R("totalFeesTokenB"),R("totalFeesClaimedTokenB"),R("fundFeesTokenA"),R("fundFeesTokenB"),R("startTime"),ie(R(),15*4-3,"padding")]),os=Q([U("growthInsideLastX64"),R("rewardAmountOwed")]),gn=Q([Le(8),re("bump"),ee("nftMint"),ee("poolId"),ye("tickLower"),ye("tickUpper"),U("liquidity"),U("feeGrowthInsideLastX64A"),U("feeGrowthInsideLastX64B"),R("tokenFeesOwedA"),R("tokenFeesOwedB"),ie(os,3,"rewardInfos"),ie(R(),8,"")]),fd=Q([Le(8),re("bump"),ee("poolId"),ye("tickLowerIndex"),ye("tickUpperIndex"),U("liquidity"),U("feeGrowthInsideLastX64A"),U("feeGrowthInsideLastX64B"),R("tokenFeesOwedA"),R("tokenFeesOwedB"),ie(U(),3,"rewardGrowthInside"),ie(R(),8,"")]),ss=Q([ye("tick"),er("liquidityNet"),U("liquidityGross"),U("feeGrowthOutsideX64A"),U("feeGrowthOutsideX64B"),ie(U(),3,"rewardGrowthsOutsideX64"),ie(Ye(),13,"")]),Vt=Q([Le(8),ee("poolId"),ye("startTickIndex"),ie(ss,me,"ticks"),re("initializedTickCount"),ie(re(),115,"")]),tr=Q([Le(329),ie(ee(),100,"whitelistMints")]),nr=Q([Le(8),ee("poolId"),ie(ie(R(),8),Zn,"positiveTickArrayBitmap"),ie(ie(R(),8),Zn,"negativeTickArrayBitmap")]);var as=15,G=class{static async getTickArrays(e,t,n,r,o,s,a){let c=[],u=C.getTickArrayStartIndexByTick(r,o),l=C.getInitializedTickArrayInRange(s,a,o,u,Math.floor(as/2));for(let f=0;f<l.length;f++){let{publicKey:g}=Z(t,n,l[f]);c.push(g)}let d=(await nt(e,c)).map(f=>f!==null?Vt.decode(f.data):null),m={};for(let f=0;f<c.length;f++){let g=d[f];g!==null&&(m[g.startTickIndex]=j(v({},g),{address:c[f]}))}return m}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,r,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:d,tickArrayAddress:m,tickArrayStartTickIndex:f}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[d,m,f]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/G.tickCount(t)),a=n?C.searchLowBitFromStart(r,o,s-1,1,t):C.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=me-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<me;){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,r,o,s){let a=C.getTickArrayStartIndexByTick(r,o),c=Math.floor((r-a)/o),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c-1}else for(c=c+1;c<me;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c+1}let{publicKey:d}=Z(e,t,a);return{initializedTick:l,tickArrayAddress:d,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(C.checkIsOutOfBoundary(e)){if(e>Be)return!1;let n=C.getTickArrayStartIndexByTick(Te,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return me*e}};var me=60,pt=512,C=class{static getTickArrayAddressByTick(e,t,n,r){let o=C.getTickArrayStartIndexByTick(n,r),{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),r=Math.floor((e-n)/t);if(r<0||r>=me)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=G.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*G.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*me,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*me,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*me:e+t*me}static mergeTickArrayBitmap(e){let t=new cs(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*me));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,pt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=C.getAllInitializedTickArrayStartIndex(n,r,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,r,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===r)break}let c=G.tickCount(o);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,r,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===r)break}let c=G.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<Te||e>Be}static nextInitTick(e,t,n,r,o){if(G.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<me;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=me-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<me;){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 r=_.getSqrtPriceX64FromTick(t),o=_.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new S(1).div(t),o=gt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=_.getSqrtPriceX64FromTick(o),a=_.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 r=_.getSqrtPriceX64FromTick(t),o=_.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new S(1).div(t),o=gt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=_.getSqrtPriceX64FromTick(o),a=_.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 Ut=class{static getfeeGrowthInside(e,t,n){let r=new He(0),o=new He(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=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=F.wrappingSubU128(F.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),u=F.wrappingSubU128(F.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=F.mulDivFloor(F.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ce),c=t.tokenFeesOwedA.add(a),u=F.mulDivFloor(F.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ce),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=F.mulDivFloor(F.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ce),c=t.tokenFeesOwedA.add(a),u=F.mulDivFloor(F.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ce),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=F.wrappingSubU128(c,u.growthInsideLastX64),d=F.mulDivFloor(l,t.liquidity,Ce),m=u.rewardAmountOwed.add(d);o.push(m)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=F.wrappingSubU128(c,u.growthInsideLastX64),d=F.mulDivFloor(l,t.liquidity,Ce),m=u.rewardAmountOwed.add(d);o.push(m)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[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=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(F.wrappingSubU128(F.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[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=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(F.wrappingSubU128(F.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var b,y,h,w;let a=_.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),c=_.getSqrtPriceX64FromTick(t.tickLower),u=_.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,d=X.getAmountsFromLiquidity(a,c,u,n,o),[m,f]=[de(d.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),de(d.amountB,(y=e.mintB.extensions)==null?void 0:y.feeConfig,s,!0)],[g,p]=[de(new He(new S(d.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),de(new He(new S(d.amountB.toString()).mul(l).toFixed(0)),(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)];return{liquidity:n,amountA:m,amountB:f,amountSlippageA:g,amountSlippageB:p,expirationTime:mt(m.expirationTime,f.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as ir}from"@solana/spl-token";var xe=class{static getOutputAmountAndRemainAccounts(e,t,n,r,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:d,accounts:m,sqrtPriceX64:f,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,r,u,o);return a.push(...m),{expectedAmountOut:d.mul(Ze),remainingAccounts:a,executionPrice:f,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,r,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 p=this.preInitializedTickArrayStartIndex(e,s);if(p.isExist){let{publicKey:b}=Z(e.programId,e.id,p.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:d,accounts:m,sqrtPriceX64:f,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,r.mul(Ze),u,o);return a.push(...m),{expectedAmountIn:d,remainingAccounts:a,executionPrice:f,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=xe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Wt.checkTickArrayIsInit(G.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,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,G.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/G.tickCount(e.tickSpacing)),r=t?C.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):C.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=G.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=Qe.nextInitializedTickArrayStartIndex(C.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Wt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Te||t>Be)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,c,u;let s=[];for(let l=0;l<o.length;l++){let d=o[l],m=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(d.tokenMint))==null?void 0:c.owner;if(m===void 0)throw Error("get new reward mint info error");let f=j(v({},d),{perSecond:F.x64ToDecimal(d.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new ot(m)});if(f.tokenMint.equals(ot.default))continue;if(n<=f.openTime.toNumber()||r.eq(ce)){s.push(f);continue}let g=new oe(Math.min(f.endTime.toNumber(),n)),p=g.sub(f.lastUpdateTime),b=F.mulDivFloor(p,f.emissionsPerSecondX64,r),y=f.rewardGrowthGlobalX64.add(b),h=F.mulDivFloor(p,f.emissionsPerSecondX64,Ce),w=f.rewardTotalEmissioned.add(h);s.push(j(v({},f),{rewardGrowthGlobalX64:y,rewardTotalEmissioned:w,lastUpdateTime:g}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=C.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=Qe.maxTickInTickarrayBitmap(e),n=-t;return t>Be&&(t=G.getArrayStartIndex(Be,e)+G.tickCount(e)),n<Te&&(n=G.getArrayStartIndex(Te,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/G.tickCount(t)*pt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Dn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=nr.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},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 d of l){let{publicKey:m}=Z(c.programId,c.id,d);o.push({pubkey:m}),r[m.toString()]=c.id}}let s=await Dn(e,o,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=r[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=Vt.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=j(v({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(m=>m.accountInfo.mint),u=[];for(let m of c)for(let f of s)u.push(Ne(f,m).publicKey);let l=await nt(t,u,{batchRequest:r}),d={};for(let m of l){if(m===null)continue;let f=gn.decode(m.data),g=f.poolId.toString(),p=e.find(I=>I.state.id.toBase58()===g);if(p===void 0)continue;let b=p.state,y=C._getTickPriceLegacy({poolInfo:b,tick:f.tickLower,baseIn:!0}),h=C._getTickPriceLegacy({poolInfo:b,tick:f.tickUpper,baseIn:!0}),{amountA:w,amountB:P}=X.getAmountsFromLiquidity(b.sqrtPriceX64,y.tickSqrtPriceX64,h.tickSqrtPriceX64,f.liquidity,!1),A=1/(1-Math.sqrt(Math.sqrt(y.price.div(h.price).toNumber())));p.positionAccount=[...(a=p.positionAccount)!=null?a:[],{poolId:f.poolId,nftMint:f.nftMint,priceLower:y.price,priceUpper:h.price,amountA:w,amountB:P,tickLower:f.tickLower,tickUpper:f.tickUpper,liquidity:f.liquidity,feeGrowthInsideLastX64A:f.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:f.feeGrowthInsideLastX64B,tokenFeesOwedA:f.tokenFeesOwedA,tokenFeesOwedB:f.tokenFeesOwedB,rewardInfos:f.rewardInfos.map(I=>j(v({},I),{pendingReward:new oe(0)})),leverage:A,tokenFeeAmountA:new oe(0),tokenFeeAmountB:new oe(0)}];let T=await C.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickLower,p.state.tickSpacing),x=await C.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickUpper,p.state.tickSpacing);d[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickLower}`]=T,d[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickUpper}`]=x}if(o){let m=Object.values(d),f=await nt(t,m,{batchRequest:r}),g={};for(let p=0;p<m.length;p++){let b=f[p];if(b===null)continue;let y=m[p].toString();g[y]=Vt.decode(b.data)}for(let{state:p,positionAccount:b}of e)if(!!b)for(let y of b){let h=`${p.programId.toString()}-${p.id.toString()}-${y.tickLower}`,w=`${p.programId.toString()}-${p.id.toString()}-${y.tickUpper}`,P=g[d[h].toString()],A=g[d[w].toString()],T=P.ticks[C.getTickOffsetInArray(y.tickLower,p.tickSpacing)],x=A.ticks[C.getTickOffsetInArray(y.tickUpper,p.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:N}=await Ut.GetPositionFees(p,y,T,x),M=await Ut.GetPositionRewards(p,y,T,x);y.tokenFeeAmountA=I.gte(new oe(0))?I:new oe(0),y.tokenFeeAmountB=N.gte(new oe(0))?N:new oe(0);for(let q=0;q<M.length;q++)y.rewardInfos[q].pendingReward=M[q].gte(new oe(0))?M[q]:new oe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new S(0)}){var M;let c,u=n.toBase58()===e.mintA.address,[l,d]=u?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new S(0))?c=u?it.add(new oe(1)):rt.sub(new oe(1)):c=_.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let m=de(o,l,r,!1),{expectedAmountOut:f,remainingAccounts:g,executionPrice:p,feeAmount:b}=xe.getOutputAmountAndRemainAccounts(e,t,n,m.amount.sub((M=m.fee)!=null?M:ce),c),y=de(f,d,r,!1),h=_.sqrtPriceX64ToPrice(p,e.mintA.decimals,e.mintB.decimals),w=u?h:new S(1).div(h),P=f.mul(new oe(Math.floor((1-s)*1e10))).div(new oe(1e10)),A=de(P,d,r,!1),T=u?e.currentPrice:new S(1).div(e.currentPrice),x=new S(w).sub(T).abs(),I=T,N=new lt(new S(x).mul(10**15).toFixed(0),new S(I).mul(10**15).toFixed(0));return{realAmountIn:m,amountOut:y,minAmountOut:A,expirationTime:mt(m.expirationTime,y.expirationTime),currentPrice:e.currentPrice,executionPrice:w,priceImpact:N,fee:b,remainingAccounts:g}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[c,u]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,d]=[new je(j(v({},c),{mint:c.address,isToken2022:c.programId===ir.toBase58()})),new je(j(v({},u),{mint:u.address,isToken2022:u.programId===ir.toBase58()}))],{realAmountIn:m,amountOut:f,minAmountOut:g,expirationTime:p,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(v({},m),{amount:new ke(l,m.amount),fee:m.fee===void 0?void 0:new ke(l,m.fee)}),T=j(v({},f),{amount:new ke(d,f.amount),fee:f.fee===void 0?void 0:new ke(d,f.fee)}),x=j(v({},g),{amount:new ke(d,g.amount),fee:g.fee===void 0?void 0:new ke(d,g.fee)}),I=new Oe({baseToken:l,denominator:new oe(10).pow(new oe(20+l.decimals)),quoteToken:d,numerator:b.mul(new S(10**(20+d.decimals))).toFixed(0)}),N=new Oe({baseToken:l,denominator:new oe(10).pow(new oe(20+l.decimals)),quoteToken:d,numerator:y.mul(new S(10**(20+d.decimals))).toFixed(0)}),M=new ke(l,w);return{realAmountIn:A,amountOut:T,minAmountOut:x,expirationTime:p,currentPrice:I,executionPrice:N,priceImpact:h,fee:M,remainingAccounts:P}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var g,p,b;let o=e[t],s=C.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=C.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,d=a-s,m=o.priceMax-o.priceMin,f;return l<=0?f=0:d===l?f=m/l:m===l?f=l/d:f=l/m*(l/d),{feeApr:o.feeApr*f,rewardsApr:[(g=o.rewardApr[0])!=null?g:0*f,(p=o.rewardApr[1])!=null?p:0*f,(b=o.rewardApr[2])!=null?b:0*f],apr:o.apr*f}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],d=r[Cn(e.mintA.address).toString()],m=r[Cn(e.mintB.address).toString()],f=e.mintA.decimals,g=e.mintB.decimals;if(!l||!d||!m)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let p=_.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),b=_.getSqrtPriceX64FromTick(s),y=_.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:w}=X.getAmountsFromLiquidityWithSlippage(p,b,y,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:A}=X.getAmountsFromLiquidityWithSlippage(p,b,y,o,!1,!1,0),T=new S(h.toString()).div(new S(10).pow(f)).mul(d.value).add(new S(w.toString()).div(new S(10).pow(g)).mul(m.value)),x=new S(P.toString()).div(new S(10).pow(f)).mul(d.value).add(new S(A.toString()).div(new S(10).pow(g)).mul(m.value)),I=x.div(T.add(x)).div(x),M=new S(l.volumeFee).mul(365).div(u).mul(I).mul(100).toNumber(),q=3600*24*365,he=e.rewardDefaultInfos.map(te=>{var z,ii;let Ae=te.mint.decimals,ne=r[te.mint.address];return c<((z=te.startTime)!=null?z:0)||c>((ii=te.endTime)!=null?ii:0)||!te.perSecond||!ne||Ae===void 0?0:new S(ne.value).mul(new S(te.perSecond).mul(q)).div(new S(10).pow(Ae)).mul(I).mul(100).toNumber()});return{feeApr:M,rewardsApr:he,apr:M+he.reduce((te,Ae)=>te+Ae,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var y,h;let l=_.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),d=_.getSqrtPriceX64FromTick(n),m=_.getSqrtPriceX64FromTick(r),f=a?1-s:1+s,g=de(o,(y=e[t?"mintA":"mintB"].extensions)==null?void 0:y.feeConfig,c,!u),p=new oe(new S(g.amount.sub((h=g.fee)!=null?h:ce).toString()).mul(f).toFixed(0)),b;if(l.lte(d))b=t?X.getLiquidityFromTokenAmountA(d,m,p,!a):new oe(0);else if(l.lte(m)){let w=X.getLiquidityFromTokenAmountA(l,m,p,!a),P=X.getLiquidityFromTokenAmountB(d,l,p);b=t?w:P}else b=t?new oe(0):X.getLiquidityFromTokenAmountB(d,m,p);return xe.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:r,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var b,y,h,w;let c=_.getSqrtPriceX64FromTick(n),u=_.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,d=X.getAmountsFromLiquidity(_.priceToSqrtPriceX64(new S(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[m,f]=[de(d.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),de(d.amountB,(y=t.mintB.extensions)==null?void 0:y.feeConfig,e,!0)],[g,p]=[de(d.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),de(d.amountB.muln(l),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:m,amountB:f,amountSlippageA:g,amountSlippageB:p,expirationTime:mt(m.expirationTime,f.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let r=await t.getAccountInfo(new ot(n.id));if(!r)throw new Error(`pool not found ${n.id}`);let o=pn.decode(r.data),s=Ge(e,new ot(n.id)).publicKey,a=await xe.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return j(v({},o),{id:new ot(n.id),programId:new ot(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:j(v({},n.config),{id:new ot(n.config.id),fundOwner:""}),currentPrice:new S(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};var F=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(ce)||(o=o.add(Ue)),o}static mulDivFloor(e,t,n){if(n.eq(ce))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(ce))throw new Error("division by 0");return e.mul(t).add(n.sub(Ue)).div(n)}static x64ToDecimal(e,t){return new S(e.toString()).div(S.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new W(e.mul(S.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(un).sub(t).mod(un)}};function pe(i,e){return Qn(i.mul(e),64,256)}function us(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Qn(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var _=class{static sqrtPriceX64ToPrice(e,t,n){return F.x64ToDecimal(e).pow(2).mul(S.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return F.decimalToX64(e.mul(S.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(ce))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ce))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(ce))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ce))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(ce))return e;let o=t.shln(Dt);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?F.mulDivCeil(s,e,a):F.mulDivRoundingUp(s,Ue,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 F.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Dt);if(r)return e.add(o.div(t));{let s=F.mulDivRoundingUp(o,Ue,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<Te||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 W("18445821805675395072"):new W("18446744073709551616");return(t&2)!=0&&(n=pe(n,new W("18444899583751176192"))),(t&4)!=0&&(n=pe(n,new W("18443055278223355904"))),(t&8)!=0&&(n=pe(n,new W("18439367220385607680"))),(t&16)!=0&&(n=pe(n,new W("18431993317065453568"))),(t&32)!=0&&(n=pe(n,new W("18417254355718170624"))),(t&64)!=0&&(n=pe(n,new W("18387811781193609216"))),(t&128)!=0&&(n=pe(n,new W("18329067761203558400"))),(t&256)!=0&&(n=pe(n,new W("18212142134806163456"))),(t&512)!=0&&(n=pe(n,new W("17980523815641700352"))),(t&1024)!=0&&(n=pe(n,new W("17526086738831433728"))),(t&2048)!=0&&(n=pe(n,new W("16651378430235570176"))),(t&4096)!=0&&(n=pe(n,new W("15030750278694412288"))),(t&8192)!=0&&(n=pe(n,new W("12247334978884435968"))),(t&16384)!=0&&(n=pe(n,new W("8131365268886854656"))),(t&32768)!=0&&(n=pe(n,new W("3584323654725218816"))),(t&65536)!=0&&(n=pe(n,new W("696457651848324352"))),(t&131072)!=0&&(n=pe(n,new W("26294789957507116"))),(t&262144)!=0&&(n=pe(n,new W("37481735321082"))),e>0&&(n=_i.div(n)),n}static getTickFromPrice(e,t,n){return _.getTickFromSqrtPriceX64(_.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(rt)||e.lt(it))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new W(t-64),r=us(n,32,128),o=new W("8000000000000000","hex"),s=0,a=new W(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new W(0))&&s<vi;){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),d=r.add(u).mul(new W(qi)),m=Qn(d.sub(new W(Wi)),64,128).toNumber(),f=Qn(d.add(new W(Vi)),64,128).toNumber();return m==f?m:_.getSqrtPriceX64FromTick(f).lte(e)?f:m}},gt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=_.getTickFromSqrtPriceX64(_.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=gt.getTickWithPriceAndTickspacing(e,t,n,r),s=_.getSqrtPriceX64FromTick(o);return _.sqrtPriceX64ToPrice(s,n,r)}},X=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ce))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Dt),s=t.sub(e);return r?F.mulDivRoundingUp(F.mulDivCeil(o,s,t),Ue,e):F.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ce))throw new Error("sqrtPriceX64A must greater than 0");return r?F.mulDivCeil(n,t.sub(e),Ce):F.mulDivFloor(n,t.sub(e),Ce)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?F.mulDivRoundingUp(a,Ue,Vn):a.shrn(Dt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),F.mulDivFloor(n,Vn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return X.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=X.getLiquidityFromTokenAmountA(e,n,r,!1),a=X.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return X.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:X.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new W(0)};if(e.lt(n)){let s=X.getTokenAmountAFromLiquidity(e,n,r,o),a=X.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new W(0),amountB:X.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:c,amountB:u}=X.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,d=new W(new S(c.toString()).mul(l).toFixed(0)),m=new W(new S(u.toString()).mul(l).toFixed(0));return{amountSlippageA:d,amountSlippageB:m}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var h,w,P,A;let u=_.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),l=_.getSqrtPriceX64FromTick(t),d=_.getSqrtPriceX64FromTick(n),m=s?1+o:1-o,f=X.getAmountsFromLiquidity(u,l,d,r,s),[g,p]=[de(f.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),de(f.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,c)],[b,y]=[de(new W(new S(f.amountA.toString()).mul(m).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,c),de(new W(new S(f.amountB.toString()).mul(m).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,c)];return{liquidity:r,amountA:g,amountB:p,amountSlippageA:b,amountSlippageB:y,expirationTime:mt(g.expirationTime,p.expirationTime)}}},bt=class{static swapCompute(e,t,n,r,o,s,a,c,u,l,d,m,f,g){if(m.eq(ce))throw new Error("amountSpecified must not be 0");if(g||(g=s?it.add(Ue):rt.sub(Ue)),s){if(g.lt(it))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(d))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(rt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(d))throw new Error("sqrtPriceX64 must greater than current")}let p=m.gt(ce),b={amountSpecifiedRemaining:m,amountCalculated:ce,sqrtPriceX64:d,tick:u>f?Math.min(f+G.tickCount(l)-1,u):f,accounts:[],liquidity:c,feeAmount:new W(0)},y=f,h=n[f],w=0,P=!s&&h.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(ce)&&!b.sqrtPriceX64.eq(g);){if(w>10)throw Error("liquidity limit");let A={};A.sqrtPriceStartX64=b.sqrtPriceX64;let T=C.nextInitTick(h,b.tick,l,s,P),x=T||null,I=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let M=xe.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},y,s);if(!M.isExist)throw Error("swapCompute LiquidityInsufficient");y=M.nextStartIndex;let{publicKey:q}=Z(e,t,y);I=q,h=n[y],x=C.firstInitializedTick(h,s)}A.tickNext=x.tick,A.initialized=x.liquidityGross.gtn(0),f!==y&&I&&(b.accounts.push(I),f=y),A.tickNext<Te?A.tickNext=Te:A.tickNext>Be&&(A.tickNext=Be),A.sqrtPriceNextX64=_.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),p?(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 M=x.liquidityNet;s&&(M=M.mul(Ze)),b.liquidity=X.addDelta(b.liquidity,M)}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 M=_.getTickFromSqrtPriceX64(b.sqrtPriceX64);P=M!=b.tick&&!s&&h.startTickIndex===M,b.tick=M}++w}try{let{nextStartIndex:A,isExist:T}=G.nextInitializedTickArray(b.tick,l,s,r,o);T&&f!==A&&(b.accounts.push(Z(e,t,A).publicKey),f=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,r,o){let s={sqrtPriceX64Next:new W(0),amountIn:new W(0),amountOut:new W(0),feeAmount:new W(0)},a=e.gte(t),c=r.gte(ce);if(c){let l=F.mulDivFloor(r,ln.sub(new W(o.toString())),ln);s.amountIn=a?X.getTokenAmountAFromLiquidity(t,e,n,!0):X.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=_.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?X.getTokenAmountBFromLiquidity(t,e,n,!1):X.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Ze).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=_.getNextSqrtPriceX64FromOutput(e,n,r.mul(Ze),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=X.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=X.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:X.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:X.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(r.mul(Ze))&&(s.amountOut=r.mul(Ze)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=F.mulDivCeil(s.amountIn,new W(o),ln.sub(new W(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 lr}from"@solana/spl-token";import{PublicKey as B,TransactionInstruction as ve,SystemProgram as kt,Keypair as ni}from"@solana/web3.js";import dr from"bn.js";import{PublicKey as gs,Keypair as bs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ys}from"@solana/spl-token";import Rm from"bn.js";var ls=Q([ee("mint"),ee("owner"),R("amount"),Ye("delegateOption"),ee("delegate"),re("state"),Ye("isNativeOption"),R("isNative"),R("delegatedAmount"),Ye("closeAuthorityOption"),ee("closeAuthority")]);function ds(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function $n(i,...e){if(!ds(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function Jn(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function rr(i,e){$n(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var yn=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),_e=(i,e)=>i<<32-e|i>>>e;var ym=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ms(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function ei(i){return typeof i=="string"&&(i=ms(i)),$n(i),i}var bn=class{clone(){return this._cloneInto()}},wm={}.toString;function or(i){let e=n=>i().update(ei(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function fs(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),c=n?4:0,u=n?0:4;i.setUint32(e+c,s,n),i.setUint32(e+u,a,n)}var sr=(i,e,t)=>i&e^~i&t,ar=(i,e,t)=>i&e^i&t^e&t,wn=class extends bn{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,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:r}=this;e=ei(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let c=yn(e);for(;r<=o-s;s+=r)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Jn(this),rr(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let d=s;d<r;d++)t[d]=0;fs(n,r-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 d=0;d<u;d++)a.setUint32(4*d,l[d],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:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var ps=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),ti=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:r,E:o,F:s,G:a,H:c}=this;return[e,t,n,r,o,s,a,c]}set(e,t,n,r,o,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=c|0}process(e,t){for(let d=0;d<16;d++,t+=4)at[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){let m=at[d-15],f=at[d-2],g=_e(m,7)^_e(m,18)^m>>>3,p=_e(f,17)^_e(f,19)^f>>>10;at[d]=p+at[d-7]+g+at[d-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:c,G:u,H:l}=this;for(let d=0;d<64;d++){let m=_e(a,6)^_e(a,11)^_e(a,25),f=l+m+sr(a,c,u)+ps[d]+at[d]|0,p=(_e(n,2)^_e(n,13)^_e(n,22))+ar(n,r,o)|0;l=u,u=c,c=a,a=s+f|0,s=o,o=r,r=n,n=f+p|0}n=n+this.A|0,r=r+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,r,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 cr=or(()=>new ti);var Fm=le("Raydium_Util");function ur({fromPublicKey:i,programId:e=ys}){let t=bs.generate().publicKey.toBase58().slice(0,32);return{publicKey:ws(i,t,e),seed:t}}function ws(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=cr(n);return new gs(r)}var mr=le("Raydium_Clmm"),qe={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],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]},fe=class{static createPoolInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g){let p=Q([U("sqrtPriceX64"),R("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,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:m,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({sqrtPriceX64:f,startTime:g},y);let h=Buffer.from([...qe.createPool,...y]);return new ve({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,d=ur({fromPublicKey:r,programId:n}),[m,f]=[new B(o.address),new B(s.address)],g=[kt.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:d.seed,newAccountPubkey:d.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Yn.span),space:Yn.span,programId:n})],{publicKey:p}=zi(n,a,m,f),{publicKey:b}=Xn(n,p,m),{publicKey:y}=Xn(n,p,f);return g.push(this.createPoolInstruction(n,p,r,a,d.publicKey,m,b,new B(o.programId||we),f,y,new B(s.programId||we),Ge(n,p).publicKey,c,u)),{signers:[],instructions:g,instructionTypes:[se.CreateAccount,se.ClmmCreatePool],address:{poolId:p,observationId:d.publicKey,mintAVault:b,mintBVault:y},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g,p,b,y,h,w,P,A,T,x,I,N,M){let q=Q([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),U("liquidity"),R("amountMaxA"),R("amountMaxB"),Xe("withMetadata"),re("optionBaseFlag"),Xe("baseFlag")]),he=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],te=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:It,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:lr,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(q.span);q.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:T,amountMaxA:x,amountMaxB:I,withMetadata:N==="create",baseFlag:!1,optionBaseFlag:0},Ae);let ne=Buffer.from([...qe.openPosition,...Ae]);return new ve({keys:te,programId:e,data:ne})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,f]=[new B(e.programId),new B(e.id)],g;if(l)g=new B((await l(1))[0]);else{let I=ni.generate();d.push(I),g=I.publicKey}let p=C.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=Z(m,f,p),{publicKey:h}=Z(m,f,b),{publicKey:w}=Fe(n.wallet,g,we),{publicKey:P}=mn(g),{publicKey:A}=Ne(m,g),{publicKey:T}=ft(m,f,r,o),x=this.openPositionFromLiquidityInstruction(m,n.feePayer,f,n.wallet,g,w,P,T,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),r,o,p,b,s,a,c,u);return{signers:d,instructions:[x],instructionTypes:[se.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:T}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let d=[],[m,f]=[new B(e.programId),new B(e.id)],g;if(l)g=new B((await l(1))[0]);else{let I=ni.generate();d.push(I),g=I.publicKey}let p=C.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=Z(m,f,p),{publicKey:h}=Z(m,f,b),{publicKey:w}=Fe(n.wallet,g,we),{publicKey:P}=mn(g),{publicKey:A}=Ne(m,g),{publicKey:T}=ft(m,f,r,o),x=this.openPositionFromBaseInstruction(m,n.feePayer,f,n.wallet,g,w,P,T,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),r,o,p,b,u,s,a,c,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[p,b])?Ge(m,f).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:T},instructions:[x],signers:d,instructionTypes:[se.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g,p,b,y,h,w,P,A,T,x,I,N,M){let q=Q([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),U("liquidity"),R("amountMaxA"),R("amountMaxB"),Xe("withMetadata"),re("optionBaseFlag"),Xe("baseFlag")]),he=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],te=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:It,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:lr,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(q.span);q.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:A,liquidity:new dr(0),amountMaxA:x==="MintA"?I:N,amountMaxB:x==="MintA"?N:I,withMetadata:T==="create",baseFlag:x==="MintA",optionBaseFlag:1},Ae);let ne=Buffer.from([...qe.openPosition,...Ae]);return new ve({keys:te,programId:e,data:ne})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let d,m=[];if(l)d=new B((await l(1))[0]);else{let I=ni.generate();m.push(I),d=I.publicKey}let[f,g]=[new B(e.programId),new B(e.id)],p=C.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:y}=Z(f,g,p),{publicKey:h}=Z(f,g,b),{publicKey:w}=Fe(n.wallet,d,we),{publicKey:P}=mn(d),{publicKey:A}=Ne(f,d),{publicKey:T}=ft(f,g,r,o),x=this.openPositionFromLiquidityInstruction(f,n.wallet,g,n.wallet,d,w,P,T,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),r,o,p,b,s,a,c,u,xe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[p,b])?Ge(f,g).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:y,tickArrayUpper:h,positionNftAccount:w,metadataAccount:P,personalPosition:A,protocolPosition:T},instructions:[x],signers:m,instructionTypes:[se.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=Q([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...qe.closePosition,...c]);return new ve({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new B(e.programId),{publicKey:s}=Fe(n.wallet,r.nftMint,we),{publicKey:a}=Ne(o,r.nftMint),c=[];return c.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[se.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g,p,b,y,h){let w=Q([U("liquidity"),R("amountMaxA"),R("amountMaxB"),re("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:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],T=Buffer.alloc(w.span);w.encode({liquidity:p,amountMaxA:b,amountMaxB:y,optionBaseFlag:0,baseFlag:!1},T);let x=Buffer.from([...qe.increaseLiquidity,...T]);return new ve({keys:A,programId:e,data:x})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,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),d=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=Z(c,u,l),{publicKey:f}=Z(c,u,d),{publicKey:g}=Fe(r.wallet,n.nftMint,we),{publicKey:p}=Ne(c,n.nftMint),{publicKey:b}=ft(c,u,n.tickLower,n.tickUpper),y=this.increasePositionFromLiquidityInstruction(c,r.wallet,g,p,u,b,m,f,r.tokenAccountA,r.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,d])?Ge(c,u).publicKey:void 0);return{address:{tickArrayLower:m,tickArrayUpper:f,positionNftAccount:g,personalPosition:p,protocolPosition:b},signers:[],instructions:[y],instructionTypes:[se.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,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),d=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:m}=Z(c,u,l),{publicKey:f}=Z(c,u,d),{publicKey:g}=Fe(r.wallet,n.nftMint,we),{publicKey:p}=Ne(c,n.nftMint),{publicKey:b}=ft(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:m,tickArrayUpper:f,positionNftAccount:g,personalPosition:p,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(c,r.wallet,g,p,u,b,m,f,r.tokenAccountA,r.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,d])?Ge(c,u).publicKey:void 0)],signers:[],instructionTypes:[se.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g,p,b,y,h){let w=Q([U("liquidity"),R("amountMaxA"),R("amountMaxB"),re("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:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...P],T=Buffer.alloc(w.span);w.encode({liquidity:new dr(0),amountMaxA:p==="MintA"?b:y,amountMaxB:p==="MintA"?y:b,baseFlag:p==="MintA",optionBaseFlag:1},T);let x=Buffer.from([...qe.increaseLiquidity,...T]);return new ve({keys:A,programId:e,data:x})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g,p,b,y,h,w){let P=Q([U("liquidity"),R("amountMinA"),R("amountMinB")]),A=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...p.map(N=>[{pubkey:N.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:N.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:N.rewardMint,isSigner:!1,isWritable:!1}]).flat()],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:ct,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:f,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([...qe.decreaseLiquidity,...x]);return new ve({keys:T,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new B(e.programId),new B(e.id)],d=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=Z(u,l,d),{publicKey:g}=Z(u,l,m),{publicKey:p}=Fe(r.wallet,n.nftMint,c),{publicKey:b}=Ne(u,n.nftMint),{publicKey:y}=ft(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:r.rewardAccounts[P],rewardMint:new B(e.rewardDefaultInfos[P].mint.address)});let w=[];return w.push(this.decreaseLiquidityInstruction(u,r.wallet,p,b,l,y,f,g,r.tokenAccountA,r.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,[d,m])?Ge(u,l).publicKey:void 0)),{address:{tickArrayLower:f,tickArrayUpper:g,positionNftAccount:p,personalPosition:b,protocolPosition:y},signers:[],instructions:w,instructionTypes:[se.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,c,u,l,d,m,f,g,p,b,y){let h=Q([R("amount"),R("otherAmountThreshold"),U("sqrtPriceLimitX64"),Xe("isBaseInput")]),w=[...y?[{pubkey:y,isSigner:!1,isWritable:!0}]:[],...d.map(x=>({pubkey:x,isSigner:!1,isWritable:!0}))],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey: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:f,otherAmountThreshold:g,sqrtPriceLimitX64:p,isBaseInput:b},A);let T=Buffer.from([...qe.swap,...A]);return new ve({keys:P,programId:e,data:T})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:r,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new B(e.programId),new B(e.id)],[d,m]=[new B(t.vault.A),new B(t.vault.B)],[f,g]=[new B(e.mintA.address),new B(e.mintB.address)],p=e.mintA.address===r.toString(),b=[this.swapInstruction(u,n.wallet,l,new B(e.config.id),p?n.tokenAccountA:n.tokenAccountB,p?n.tokenAccountB:n.tokenAccountA,p?d:m,p?m:d,p?f:g,p?g:f,c,d,o,s,a,!0,Ge(u,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[se.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,c,u,l,d,m){let f=Q([R("openTime"),R("endTime"),U("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:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:It,isSigner:!1,isWritable:!1}],p=Buffer.alloc(f.span);f.encode({openTime:be(l),endTime:be(d),emissionsPerSecondX64:m},p);let b=Buffer.from([...qe.initReward,...p]);return new ve({keys:g,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new B(e.programId),new B(e.id)],a=ji(o,s,r.mint).publicKey,c=vt(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new B(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[se.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,c,u,l,d,m){let f=Q([re("rewardIndex"),U("emissionsPerSecondX64"),R("openTime"),R("endTime")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,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}],p=Buffer.alloc(f.span);f.encode({rewardIndex:u,emissionsPerSecondX64:m,openTime:be(l),endTime:be(d)},p);let b=Buffer.from([...qe.setRewardEmissions,...p]);return new ve({keys:g,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new B(e.programId),new B(e.id)],a,c,u;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===r.mint.toString()&&(a=m,c=new B(t.rewardInfos[m].vault),u=new B(t.rewardInfos[m].mint.address));(a===void 0||c===void 0)&&mr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=vt(o).publicKey,d=[this.setRewardInstruction(o,n.wallet,s,l,new B(e.config.id),n.tokenAccount,c,u,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:d,instructionTypes:[se.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let c=Q([re("rewardIndex")]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,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 d=Buffer.from([...qe.collectReward,...l]);return new ve({keys:u,programId:e,data:d})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){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===r.toString()&&(a=l,c=new B(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&mr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,c,r,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[se.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new B(e.programId),new B(e.id)],[d,m]=[new B(t.vault.A),new B(t.vault.B)],[f,g]=[new B(e.mintA.address),new B(e.mintB.address)],p=e.mintA.address===r.toString(),b=[this.swapInstruction(u,n.wallet,l,new B(e.config.id),p?n.tokenAccountB:n.tokenAccountA,p?n.tokenAccountA:n.tokenAccountB,p?m:d,p?d:m,p?f:g,p?g:f,c,d,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[se.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import Re from"bn.js";var fr=class extends Ft{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)||V.default,mint1:r,mint2:o,ammConfig:s,initialPrice:a,startTime:c,computeBudgetConfig:u,forerunCreate:l,txVersion:d}=e,m=this.createTxBuilder(),[f,g,p]=new Re(new V(r.address).toBuffer()).gt(new Re(new V(o.address).toBuffer()))?[o,r,new S(1).div(a)]:[r,o,a],b=_.priceToSqrtPriceX64(p,f.decimals,g.decimals),y=await fe.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:f,mintB:g,ammConfigId:s.id,initialPriceX64:b,startTime:c,forerunCreate:l});return m.addInstruction(y),m.addCustomComputeBudget(u),m.versionBuild({txVersion:d,extInfo:{address:j(v({},y.address),{programId:t.toString(),id:y.address.poolId.toString(),mintA:f,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:v({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:y.address.poolId.toString(),mintA:f,mintB:g,feeRate:s.tradeFeeRate,openTime:c.toString(),programId:t.toString(),price:p.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:[]}},Ui),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:d="create",getEphemeralSigners:m,computeBudgetConfig:f,txVersion:g}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let p=this.createTxBuilder(),b=null,y=null,h=n.useSOLBalance&&e.mintA.address===$.toString(),w=n.useSOLBalance&&e.mintB.address===$.toString(),[P,A]=s==="MintA"?[a,c]:[c,a],{account:T,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new V(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});T&&(b=T),p.addInstruction(x||{});let{account:I,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new V(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),p.addInstruction(N||{}),(!b||!y)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let M=t||await this.getClmmPoolKeys(e.id),q=await fe.openPositionFromBaseInstructions({poolInfo:e,poolKeys:M,ownerInfo:j(v({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:y}),tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:d,getEphemeralSigners:m});return p.addInstruction(q),p.addCustomComputeBudget(f),p.versionBuild({txVersion:g,extInfo:q.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:r,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:d="create",txVersion:m,getEphemeralSigners:f}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let g=this.createTxBuilder(),p=null,b=null,y=n.useSOLBalance&&e.mintA.address===$.toBase58(),h=n.useSOLBalance&&e.mintB.address===$.toBase58(),{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new V(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:y?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:u,checkCreateATAOwner:l});w&&(p=w),g.addInstruction(P||{});let{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new V(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(T||{}),(p===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 fe.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:x,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:r,amountMaxB:o,withMetadata:d,getEphemeralSigners:f});return g.addInstruction(I),g.versionBuild({txVersion:m,extInfo:{address:I.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:r,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:d}=e,m=this.createTxBuilder(),f,g,p=a.useSOLBalance&&t.mintA.address===$.toString(),b=a.useSOLBalance&&t.mintB.address===$.toString(),{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new V(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:p?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!p,associatedOnly:p?!1:c,checkCreateATAOwner:u});y&&(f=y),m.addInstruction(h||{});let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new V(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),m.addInstruction(P||{}),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getClmmPoolKeys(t.id),T=fe.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:A,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g},liquidity:s,amountMaxA:r,amountMaxB:o});return m.addInstruction(T),m.addCustomComputeBudget(l),m.versionBuild({txVersion:d,extInfo:{address:T.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:r,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:d}=e,m=this.createTxBuilder(),f,g,p=a.useSOLBalance&&t.mintA.address===$.toString(),b=a.useSOLBalance&&t.mintB.address===$.toString(),{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new V(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:p?{payer:this.scope.ownerPubKey,amount:r==="MintA"?o:s}:void 0,skipCloseAccount:!p,associatedOnly:p?!1:c,checkCreateATAOwner:u});y&&(f=y),m.addInstruction(h||{});let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new V(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:r==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});w&&(g=w),m.addInstruction(P||{}),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getClmmPoolKeys(t.id),T=fe.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:A,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g},base:r,baseAmount:o,otherAmountMax:s});return m.addInstruction(T),m.addCustomComputeBudget(l),m.versionBuild({txVersion:d,extInfo:{address:T.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:r,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:d}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let m=this.createTxBuilder(),f=r.useSOLBalance&&t.mintA.address===$.toString(),g=r.useSOLBalance&&t.mintB.address===$.toString(),p,b,{account:y,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new V(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});p=y,h&&m.addInstruction(h);let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new V(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&&m.addInstruction(P);let A=[];for(let N of t.rewardDefaultInfos){let M=r.useSOLBalance&&N.mint.address===$.toString(),q;if(N.mint.address===t.mintA.address)q=p;else if(N.mint.address===t.mintB.address)q=b;else{let{account:he,instructionParams:te}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new V(N.mint.programId),mint:new V(N.mint.address),notUseTokenAccount:M,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!M,associatedOnly:M?!1:c,checkCreateATAOwner:u});q=he,te&&m.addInstruction(te)}A.push(q)}!p&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let T=await this.getClmmPoolKeys(t.id),x=await fe.decreaseLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:b,rewardAccounts:A},liquidity:a,amountMinA:o,amountMinB:s});m.addInstruction({instructions:x.instructions,instructionTypes:[se.ClmmDecreasePosition]});let I=v({},x.address);if(r.closePosition){let N=await fe.closePositionInstructions({poolInfo:t,poolKeys:T,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});m.addInstruction({endInstructions:N.instructions,endInstructionTypes:N.instructionTypes}),I=v(v({},I),N.address)}return m.addCustomComputeBudget(l),m.versionBuild({txVersion:d,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 r=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=fe.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return r.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!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()===$.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:d,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new V(n.mint.address),mint:new V(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Re(new S(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:r,checkCreateATAOwner:o});m&&c.addInstruction(m),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),g=fe.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new V(n.mint.programId),mint:new V(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:F.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:r=!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 d=t.useSOLBalance&&l.mint.address===$.toString(),m=l.perSecond.mul(l.endTime-l.openTime),{account:f,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new V(l.mint.programId),mint:new V(l.mint.address),notUseTokenAccount:!!d,skipCloseAccount:!d,owner:this.scope.ownerPubKey,createInfo:d?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Re(new S(m.toFixed(0)).gte(m)?m.toFixed(0):m.add(1).toFixed(0))}:void 0,associatedOnly:d?!1:r,checkCreateATAOwner:o});g&&c.addInstruction(g),f||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),b=fe.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:f},rewardInfo:{programId:new V(l.mint.programId),mint:new V(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:F.decimalToX64(l.perSecond)}});u=v(v({},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:r=!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($),{account:l,instructionParams:d}=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 Re(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:r,checkCreateATAOwner:o});d&&c.addInstruction(d),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),f=fe.setRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:F.decimalToX64(n.perSecond)}});return c.addInstruction(f),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:f.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:r=!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 d=t.useSOLBalance&&l.mint.address===$.toString(),{account:m,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new V(l.mint.programId),mint:new V(l.mint.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:d?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Re(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:d?!1:r,checkCreateATAOwner:o});f&&c.addInstruction(f),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id),p=fe.setRewardInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{mint:new V(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:F.decimalToX64(l.perSecond)}});c.addInstruction(p),u=v(v({},u),p.address)}return c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:u}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(f=>f.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),c=t.useSOLBalance&&n.equals($),{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new V(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:r,checkCreateATAOwner:o});l&&a.addInstruction(l),u||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),m=fe.collectRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:u},rewardMint:n});return a.addInstruction(m),a.build({address:m.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let c of n){let u=e.rewardDefaultInfos.find(p=>p.mint.address===c.toString());if(!u){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let l=t.useSOLBalance&&c.equals($),{account:d,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new V(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:r,checkCreateATAOwner:o});d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),m&&s.addInstruction(m);let f=await this.getClmmPoolKeys(e.id),g=fe.collectRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardMint:c});s.addInstruction(g),a=v(v({},a),g.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:r,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,txVersion:l}){let d=this.createTxBuilder(),m=s.useSOLBalance&&e.mintA.address===$.toBase58(),f=s.useSOLBalance&&e.mintB.address===$.toBase58(),g;!o||o.equals(new S(0))?g=t.toString()===e.mintA.address?it.add(new Re(1)):rt.sub(new Re(1)):g=_.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let p;if(!p){let{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new V(e.mintA.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!m,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:m?!1:c,checkCreateATAOwner:u});p=h,w&&d.addInstruction(w)}let b;if(!b){let{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new V(e.mintB.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,skipCloseAccount:!f,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:f?!1:c,checkCreateATAOwner:u});b=h,w&&d.addInstruction(w)}(!p||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id);return d.addInstruction(fe.makeSwapBaseInInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:b},inputMint:new V(t),amountIn:n,amountOutMin:r,sqrtPriceLimitX64:g,remainingAccounts:a})),d.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:c}){let u={};for(let d of this.scope.account.tokenAccountRawInfos)r?Fe(this.scope.ownerPubKey,d.accountInfo.mint,s).publicKey.equals(d.pubkey)&&(u[d.accountInfo.mint.toString()]=d.pubkey):u[d.accountInfo.mint.toString()]=d.pubkey;let l=this.createTxBuilder();for(let d of Object.values(e)){if(t[d.id]===void 0||!t[d.id].find(w=>!w.liquidity.isZero()||w.rewardInfos.find(P=>!P.rewardAmountOwed.isZero())))continue;let m=d,f=n.useSOLBalance&&m.mintA.address===$.toString(),g=n.useSOLBalance&&m.mintB.address===$.toString(),p=u[m.mintA.address];if(!p){let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:m.mintA.programId,mint:new V(m.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,skipCloseAccount:!f,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:f?!1:r,checkCreateATAOwner:o});p=w,P&&l.addInstruction(P)}let b=u[m.mintB.address];if(!b){let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:m.mintB.programId,mint:new V(m.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,skipCloseAccount:!g,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:g?!1:r,checkCreateATAOwner:o});b=w,P&&l.addInstruction(P)}u[m.mintA.address]=p,u[m.mintB.address]=b;let y=[];for(let w of m.rewardDefaultInfos){let P=n.useSOLBalance&&w.mint.address===$.toString(),A=u[w.mint.address];if(!A){let{account:T,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new V(w.mint.programId),mint:new V(w.mint.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:P?!1:r});A=T,x&&l.addInstruction(x)}u[w.mint.address]=A,y.push(A)}let h=await this.getClmmPoolKeys(m.id);for(let w of t[d.id]){let P=fe.decreaseLiquidityInstructions({poolInfo:m,poolKeys:h,ownerPosition:w,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:b,rewardAccounts:y},liquidity:new Re(0),amountMinA:new Re(0),amountMinB:new Re(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(vt(e).publicKey);return t?tr.decode(t.data).whitelistMints.filter(r=>!r.equals(V.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new Re(1))).map(s=>Ne(new V(e),s.accountInfo.mint).publicKey),r=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return r.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 V(e)),n=pn.decode(t.data),r=_.sqrtPriceX64ToPrice(n.sqrtPriceX64,n.mintDecimalsA,n.mintDecimalsB).toNumber();return j(v({},n),{currentPrice:r})}};export{fr as Clmm};
|
|
2
2
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
3
3
|
//# sourceMappingURL=clmm.mjs.map
|