@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 tr=Object.defineProperty,nr=Object.defineProperties;var ir=Object.getOwnPropertyDescriptors;var Yn=Object.getOwnPropertySymbols;var rr=Object.prototype.hasOwnProperty,or=Object.prototype.propertyIsEnumerable;var Zn=(i,e,t)=>e in i?tr(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,Q=(i,e)=>{for(var t in e||(e={}))rr.call(e,t)&&Zn(i,t,e[t]);if(Yn)for(var t of Yn(e))or.call(e,t)&&Zn(i,t,e[t]);return i},ee=(i,e)=>nr(i,ir(e));import{get as jn,set as sr}from"lodash";import $n from"dayjs";import ar from"dayjs/plugin/utc";$n.extend(ar);var nn=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 $n().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}},Jn={},ur={};function se(i){let e=jn(Jn,i);if(!e){let t=jn(ur,i);e=new nn({name:i,logLevel:t}),sr(Jn,i,e)}return e}import{PublicKey as ko}from"@solana/web3.js";import Ao from"bn.js";import yo from"big.js";import zt from"bn.js";import Be from"bn.js";var bt=9e15,nt=1e9,rn="0123456789abcdef",Ft="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Wt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",on={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-bt,maxE:bt,crypto:!1},ii,He,M=!0,Vt="[DecimalError] ",tt=Vt+"Invalid argument: ",ri=Vt+"Precision limit exceeded",oi=Vt+"crypto unavailable",si="[object Decimal]",we=Math.floor,ce=Math.pow,cr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,lr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,mr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ai=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ee=1e7,C=7,dr=9007199254740991,pr=Ft.length-1,sn=Wt.length-1,w={toStringTag:si};w.absoluteValue=w.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),K(i)};w.ceil=function(){return K(new this.constructor(this),this.e+1,2)};w.clampedTo=w.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(tt+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};w.comparedTo=w.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<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]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};w.cosine=w.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())+C,n.rounding=1,t=fr(n,di(n,t)),n.precision=i,n.rounding=e,K(He==2||He==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};w.cubeRoot=w.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(M=!1,o=l.s*ce(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=fe(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ce(t,1/3),i=we((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 m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=j(c.plus(l).times(a),c.plus(u),s+2,1),fe(a.d).slice(0,s)===(t=fe(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 M=!0,K(n,i,m.rounding,e)};w.decimalPlaces=w.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-we(this.e/C))*C,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};w.dividedBy=w.div=function(i){return j(this,new this.constructor(i))};w.dividedToIntegerBy=w.divToInt=function(i){var e=this,t=e.constructor;return K(j(e,new t(i),0,1,1),t.precision,t.rounding)};w.equals=w.eq=function(i){return this.cmp(i)===0};w.floor=function(){return K(new this.constructor(this),this.e+1,3)};w.greaterThan=w.gt=function(i){return this.cmp(i)>0};w.greaterThanOrEqualTo=w.gte=function(i){var e=this.cmp(i);return e==1||e===0};w.hyperbolicCosine=w.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=yt(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return K(o,s.precision=t,s.rounding=n,!0)};w.hyperbolicSine=w.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=yt(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=yt(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,K(r,e,t,!0)};w.hyperbolicTangent=w.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,j(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};w.inverseCosine=w.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()?Oe(t,r,o):new t(0):new t(NaN):e.isZero()?Oe(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Oe(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};w.inverseHyperbolicCosine=w.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,M=!1,t=t.times(t).minus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};w.inverseHyperbolicSine=w.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,M=!1,t=t.times(t).plus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln())};w.inverseHyperbolicTangent=w.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=j(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)};w.inverseSine=w.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=Oe(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)))};w.inverseTangent=w.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=sn)return s=Oe(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=sn)return s=Oe(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/C+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(M=!1,e=Math.ceil(a/C),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),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)),M=!0,K(s,l.precision=m,l.rounding=p,!0)};w.isFinite=function(){return!!this.d};w.isInteger=w.isInt=function(){return!!this.d&&we(this.e/C)>this.d.length-2};w.isNaN=function(){return!this.s};w.isNegative=w.isNeg=function(){return this.s<0};w.isPositive=w.isPos=function(){return this.s>0};w.isZero=function(){return!!this.d&&this.d[0]===0};w.lessThan=w.lt=function(i){return this.cmp(i)<0};w.lessThanOrEqualTo=w.lte=function(i){return this.cmp(i)<1};w.logarithm=w.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=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=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.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(M=!1,a=m+d,s=et(c,a),n=e?vt(l,a+10):et(i,a),u=j(s,n,a,1),ht(u.d,r=m,p))do if(a+=10,s=et(c,a),n=e?vt(l,a+10):et(i,a),u=j(s,n,a,1),!o){+fe(u.d).slice(r+1,r+15)+1==1e14&&(u=K(u,m+1,0));break}while(ht(u.d,r+=10,p));return M=!0,K(u,m,p)};w.minus=w.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.constructor;if(i=new b(i),!d.d||!i.d)return!d.s||!i.s?i=new b(NaN):d.d?i.s=-i.s:i=new b(i.d||d.s!==i.s?d:NaN),i;if(d.s!=i.s)return i.s=-i.s,d.plus(i);if(c=d.d,p=i.d,a=b.precision,u=b.rounding,!c[0]||!p[0]){if(p[0])i.s=-i.s;else if(c[0])i=new b(d);else return new b(u===3?-0:0);return M?K(i,a,u):i}if(t=we(i.e/C),l=we(d.e/C),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/C),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,i.s=-i.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(r=n;r&&c[--r]===0;)c[r]=Ee-1;--c[r],c[n]+=Ee}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=Dt(c,t),M?K(i,a,u):i):new b(u===3?-0:0)};w.modulo=w.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):(M=!1,n.modulo==9?(e=j(t,i.abs(),0,3,1),e.s*=i.s):e=j(t,i,0,n.modulo,1),e=e.times(i),M=!0,t.minus(e))};w.naturalExponential=w.exp=function(){return an(this)};w.naturalLogarithm=w.ln=function(){return et(this)};w.negated=w.neg=function(){var i=new this.constructor(this);return i.s=-i.s,K(i)};w.plus=w.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,p=m.constructor;if(i=new p(i),!m.d||!i.d)return!m.s||!i.s?i=new p(NaN):m.d||(i=new p(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(i=new p(m)),M?K(i,a,u):i;if(o=we(m.e/C),n=we(i.e/C),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/C),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/Ee|0,c[r]%=Ee;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=Dt(c,n),M?K(i,a,u):i};w.precision=w.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(tt+i);return t.d?(e=ui(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};w.round=function(){var i=this,e=i.constructor;return K(new e(i),i.e+1,e.rounding)};w.sine=w.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())+C,n.rounding=1,t=yr(n,di(n,t)),n.precision=i,n.rounding=e,K(He>2?t.neg():t,i,e,!0)):new n(NaN)};w.squareRoot=w.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(M=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=we((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(j(s,o,t+2,1)).times(.5),fe(o.d).slice(0,t)===(e=fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(K(o,u+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,u+1,1),i=!n.times(n).eq(s));break}return M=!0,K(n,u,l.rounding,i)};w.tangent=w.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=j(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,K(He==2||He==4?t.neg():t,i,e,!0)):new n(NaN)};w.times=w.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(i=new m(i)).d;if(i.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!i.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?i.s/0:i.s*0);for(t=we(l.e/C)+we(i.e/C),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=o[r]+d[n]*p[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=Dt(o,t),M?K(i,m.precision,m.rounding):i};w.toBinary=function(i,e){return cn(this,2,i,e)};w.toDecimalPlaces=w.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(xe(i,0,nt),e===void 0?e=n.rounding:xe(e,0,8),K(t,i+t.e+1,e))};w.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,!0):(xe(i,0,nt),e===void 0?e=r.rounding:xe(e,0,8),n=K(new r(n),i+1,e),t=_e(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=_e(r):(xe(i,0,nt),e===void 0?e=o.rounding:xe(e,0,8),n=K(new o(r),i+r.e+1,e),t=_e(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};w.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.d,f=d.constructor;if(!b)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=ui(b)-d.e-1,s=o%C,e.d[0]=ce(10,s<0?C+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(tt+a);i=a.gt(e)?o>0?e:c:a}for(M=!1,a=new f(fe(b)),l=f.precision,f.precision=o=b.length*C*2;m=j(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=j(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=d.s,p=j(c,n,o,1).minus(d).abs().cmp(j(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,M=!0,p};w.toHexadecimal=w.toHex=function(i,e){return cn(this,16,i,e)};w.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:xe(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]?(M=!1,t=j(t,i,0,e,1).times(i),M=!0,K(t)):(i.s=t.s,t=i),t};w.toNumber=function(){return+this};w.toOctal=function(i,e){return cn(this,8,i,e)};w.toPower=w.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(ce(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return K(a,n,o);if(e=we(i.e/C),e>=i.d.length-1&&(t=c<0?-c:c)<=dr)return r=ci(u,a,t,n),i.s<0?new u(1).div(r):K(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(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=ce(+a,c),e=t==0||!isFinite(t)?we(c*(Math.log("0."+fe(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(M=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=an(i.times(et(a,n+t)),n),r.d&&(r=K(r,n+5,1),ht(r.d,n,o)&&(e=n+10,r=K(an(i.times(et(a,e+t)),e),e+5,1),+fe(r.d).slice(n+1,n+15)+1==1e14&&(r=K(r,n+1,0)))),r.s=s,M=!0,u.rounding=o,K(r,n,o))};w.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(xe(i,1,nt),e===void 0?e=r.rounding:xe(e,0,8),n=K(new r(n),i,e),t=_e(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toSignificantDigits=w.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(xe(i,1,nt),e===void 0?e=n.rounding:xe(e,0,8)),K(new n(t),i,e)};w.toString=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};w.truncated=w.trunc=function(){return K(new this.constructor(this),this.e+1,1)};w.valueOf=w.toJSON=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function fe(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=C-n.length,t&&(o+=$e(t)),o+=n;s=i[e],n=s+"",t=C-n.length,t&&(o+=$e(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function xe(i,e,t){if(i!==~~i||i<e||i>t)throw Error(tt+i)}function ht(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=C,r=0):(r=Math.ceil((e+1)/C),e%=C),o=ce(10,C-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)==ce(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)==ce(10,e-3)-1,s}function Et(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]+=rn.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 fr(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=yt(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 j=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}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,u){var c,l,m,p,d,b,f,g,k,P,A,x,h,L,E,_,$,X,Z,Me,pe=n.constructor,Te=n.s==r.s?1:-1,ie=n.d,H=r.d;if(!ie||!ie[0]||!H||!H[0])return new pe(!n.s||!r.s||(ie?H&&ie[0]==H[0]:!H)?NaN:ie&&ie[0]==0||!H?Te*0:Te/0);for(u?(d=1,l=n.e-r.e):(u=Ee,d=C,l=we(n.e/d)-we(r.e/d)),Z=H.length,$=ie.length,k=new pe(Te),P=k.d=[],m=0;H[m]==(ie[m]||0);m++);if(H[m]>(ie[m]||0)&&l--,o==null?(L=o=pe.precision,s=pe.rounding):a?L=o+(n.e-r.e)+1:L=o,L<0)P.push(1),b=!0;else{if(L=L/d+2|0,m=0,Z==1){for(p=0,H=H[0],L++;(m<$||p)&&L--;m++)E=p*u+(ie[m]||0),P[m]=E/H|0,p=E%H|0;b=p||m<$}else{for(p=u/(H[0]+1)|0,p>1&&(H=i(H,p,u),ie=i(ie,p,u),Z=H.length,$=ie.length),_=Z,A=ie.slice(0,Z),x=A.length;x<Z;)A[x++]=0;Me=H.slice(),Me.unshift(0),X=H[0],H[1]>=u/2&&++X;do p=0,c=e(H,A,Z,x),c<0?(h=A[0],Z!=x&&(h=h*u+(A[1]||0)),p=h/X|0,p>1?(p>=u&&(p=u-1),f=i(H,p,u),g=f.length,x=A.length,c=e(f,A,g,x),c==1&&(p--,t(f,Z<g?Me:H,g,u))):(p==0&&(c=p=1),f=H.slice()),g=f.length,g<x&&f.unshift(0),t(A,f,x,u),c==-1&&(x=A.length,c=e(H,A,Z,x),c<1&&(p++,t(A,Z<x?Me:H,x,u))),x=A.length):c===0&&(p++,A=[0]),P[m++]=p,c&&A[0]?A[x++]=ie[_]||0:(A=[ie[_]],x=1);while((_++<$||A[0]!==void 0)&&L--);b=A[0]!==void 0}P[0]||P.shift()}if(d==1)k.e=l,ii=b;else{for(m=1,p=P[0];p>=10;p/=10)m++;k.e=m+l*d-1,K(k,a?o+k.e+1:o,s,b)}return k}}();function K(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=C,s=e,l=m[p=0],u=l/ce(10,r-s-1)%10|0;else if(p=Math.ceil((o+1)/C),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,r=1,o%=C,s=o-C+1}else break e;else{for(l=a=m[p],r=1;a>=10;a/=10)r++;o%=C,s=o-C+r,u=s<0?0:l/ce(10,r-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%ce(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/ce(10,r-s):0:m[p-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=ce(10,(C-e%C)%C),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=ce(10,C-o),m[p]=s>0?(l/ce(10,r-s)%ce(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==Ee&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=Ee)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return M&&(i.e>d.maxE?(i.d=null,i.e=NaN):i.e<d.minE&&(i.e=0,i.d=[0])),i}function _e(i,e,t){if(!i.isFinite())return mi(i);var n,r=i.e,o=fe(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 Dt(i,e){var t=i[0];for(e*=C;t>=10;t/=10)e++;return e}function vt(i,e,t){if(e>pr)throw M=!0,t&&(i.precision=t),Error(ri);return K(new i(Ft),e,1,!0)}function Oe(i,e,t){if(e>sn)throw Error(ri);return K(new i(Wt),e,t,!0)}function ui(i){var e=i.length-1,t=e*C+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 ci(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/C+4);for(M=!1;;){if(t%2&&(o=o.times(e),ti(o.d,s)&&(r=!0)),t=we(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ti(e.d,s)}return M=!0,o}function ei(i){return i.d[i.d.length-1]&1}function li(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 an(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,p=i.constructor,d=p.rounding,b=p.precision;if(!i.d||!i.d[0]||i.e>17)return new p(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(M=!1,u=b):u=e,a=new p(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(ce(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=K(o.times(i),u,1),t=t.times(++l),a=s.plus(j(o,t,u,1)),fe(a.d).slice(0,u)===fe(s.d).slice(0,u)){for(r=m;r--;)s=K(s.times(s),u,1);if(e==null)if(c<3&&ht(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return K(s,p.precision=b,d,M=!0);else return p.precision=b,s}s=a}}function et(i,e){var t,n,r,o,s,a,u,c,l,m,p,d=1,b=10,f=i,g=f.d,k=f.constructor,P=k.rounding,A=k.precision;if(f.s<0||!g||!g[0]||!f.e&&g[0]==1&&g.length==1)return new k(g&&!g[0]?-1/0:f.s!=1?NaN:g?0:f);if(e==null?(M=!1,l=A):l=e,k.precision=l+=b,t=fe(g),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(i),t=fe(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new k("0."+t),o++):f=new k(n+"."+t.slice(1))}else return c=vt(k,l+2,A).times(o+""),f=et(new k(n+"."+t.slice(1)),l-b).plus(c),k.precision=A,e==null?K(f,A,P,M=!0):f;for(m=f,u=s=f=j(f.minus(1),f.plus(1),l,1),p=K(f.times(f),l,1),r=3;;){if(s=K(s.times(p),l,1),c=u.plus(j(s,new k(r),l,1)),fe(c.d).slice(0,l)===fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(vt(k,l+2,A).times(o+""))),u=j(u,new k(d),l,1),e==null)if(ht(u.d,l-b,P,a))k.precision=l+=b,c=s=f=j(m.minus(1),m.plus(1),l,1),p=K(f.times(f),l,1),r=a=1;else return K(u,k.precision=A,P,M=!0);else return k.precision=A,u;u=c,r+=2}}function mi(i){return String(i.s*i.s/0)}function un(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)%C,t<0&&(n+=C),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=C;n<r;)i.d.push(+e.slice(n,n+=C));e=e.slice(n),n=C-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),M&&(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 br(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ai.test(e))return un(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(lr.test(e))t=16,e=e.toLowerCase();else if(cr.test(e))t=2;else if(mr.test(e))t=8;else throw Error(tt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=ci(n,new n(t),o,o*2)),c=Et(e,t,Ee),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=Dt(c,l),i.d=c,M=!1,s&&(i=j(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?ce(2,u):Tt.pow(2,u))),M=!0,i)}function yr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:yt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_t(5,t)),e=yt(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 yt(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/C);for(M=!1,u=t.times(t),a=new i(n);;){if(s=j(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=j(s.times(u),new i(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return M=!0,s.d.length=m+1,s}function _t(i,e){for(var t=i;--e;)t*=i;return t}function di(i,e){var t,n=e.s<0,r=Oe(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return He=n?4:1,e;if(t=e.divToInt(r),t.isZero())He=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return He=ei(t)?n?2:3:n?4:1,e;He=ei(t)?n?1:4:n?3:2}return e.minus(r).abs()}function cn(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor,b=t!==void 0;if(b?(xe(t,1,nt),n===void 0?n=d.rounding:xe(n,0,8)):(t=d.precision,n=d.rounding),!i.isFinite())l=mi(i);else{for(l=_e(i),s=l.indexOf("."),b?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Et(_e(p),10,r),p.e=p.d.length),m=Et(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=b?"0p+0":"0";else{if(s<0?o--:(i=new d(i),i.d=m,i.e=o,i=j(i,p,t,n,0,r),m=i.d,o=i.e,c=ii),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=rn.charAt(m[s]);if(b){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Et(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=rn.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(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 ti(i,e){if(i.length>e)return i.length=e,!0}function gr(i){return new this(i).abs()}function wr(i){return new this(i).acos()}function kr(i){return new this(i).acosh()}function Ar(i,e){return new this(i).plus(e)}function Pr(i){return new this(i).asin()}function hr(i){return new this(i).asinh()}function Tr(i){return new this(i).atan()}function xr(i){return new this(i).atanh()}function Br(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=Oe(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Oe(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Oe(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(j(i,e,o,1)),e=Oe(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(j(i,e,o,1)),t}function Ir(i){return new this(i).cbrt()}function Sr(i){return K(i=new this(i),i.e+1,2)}function Kr(i,e,t){return new this(i).clamp(e,t)}function Cr(i){if(!i||typeof i!="object")throw Error(Vt+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,nt,"rounding",0,8,"toExpNeg",-bt,0,"toExpPos",0,bt,"maxE",0,bt,"minE",-bt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=on[t]),(n=i[t])!==void 0)if(we(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(tt+t+": "+n);if(t="crypto",r&&(this[t]=on[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(oi);else this[t]=!1;else throw Error(tt+t+": "+n);return this}function Nr(i){return new this(i).cos()}function Lr(i){return new this(i).cosh()}function pi(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,ni(o)){c.s=o.s,M?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;M?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return un(c,o.toString())}else if(u!=="string")throw Error(tt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),ai.test(o)?un(c,o):br(c,o)}if(r.prototype=w,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=Cr,r.clone=pi,r.isDecimal=ni,r.abs=gr,r.acos=wr,r.acosh=kr,r.add=Ar,r.asin=Pr,r.asinh=hr,r.atan=Tr,r.atanh=xr,r.atan2=Br,r.cbrt=Ir,r.ceil=Sr,r.clamp=Kr,r.cos=Nr,r.cosh=Lr,r.div=Rr,r.exp=Mr,r.floor=Or,r.hypot=Er,r.ln=Fr,r.log=Wr,r.log10=Vr,r.log2=vr,r.max=Dr,r.min=_r,r.mod=qr,r.mul=Gr,r.pow=Ur,r.random=Xr,r.round=zr,r.sign=Hr,r.sin=Qr,r.sinh=Yr,r.sqrt=Zr,r.sub=jr,r.sum=Jr,r.tan=$r,r.tanh=eo,r.trunc=to,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 Rr(i,e){return new this(i).div(e)}function Mr(i){return new this(i).exp()}function Or(i){return K(i=new this(i),i.e+1,3)}function Er(){var i,e,t=new this(0);for(M=!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 M=!0,new this(1/0);t=e}return M=!0,t.sqrt()}function ni(i){return i instanceof Tt||i&&i.toStringTag===si||!1}function Fr(i){return new this(i).ln()}function Wr(i,e){return new this(i).log(e)}function vr(i){return new this(i).log(2)}function Vr(i){return new this(i).log(10)}function Dr(){return li(this,arguments,"lt")}function _r(){return li(this,arguments,"gt")}function qr(i,e){return new this(i).mod(e)}function Gr(i,e){return new this(i).mul(e)}function Ur(i,e){return new this(i).pow(e)}function Xr(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:xe(i,1,nt),n=Math.ceil(i/C),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(oi);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=C,n&&i&&(r=ce(10,C-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-=C)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<C&&(t-=C-n)}return s.e=t,s.d=a,s}function zr(i){return K(i=new this(i),i.e+1,this.rounding)}function Hr(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Qr(i){return new this(i).sin()}function Yr(i){return new this(i).sinh()}function Zr(i){return new this(i).sqrt()}function jr(i,e){return new this(i).sub(e)}function Jr(){var i=0,e=arguments,t=new this(e[i]);for(M=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return M=!0,K(t,this.precision,this.rounding)}function $r(i){return new this(i).tan()}function eo(i){return new this(i).tanh()}function to(i){return K(i=new this(i),i.e+1,1)}w[Symbol.for("nodejs.util.inspect.custom")]=w.toString;w[Symbol.toStringTag]="Decimal";var Tt=w.constructor=pi(on);Ft=new Tt(Ft);Wt=new Tt(Wt);var N=Tt;import{PublicKey as pn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as no}from"@solana/spl-token";import{PublicKey as te,SystemProgram as fi,SYSVAR_RENT_PUBKEY as io}from"@solana/web3.js";function V({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Ks=[V({pubkey:no,isWritable:!1}),V({pubkey:fi.programId,isWritable:!1}),V({pubkey:io,isWritable:!1})];function ln({publicKey:i,transformSol:e}){let t=mn(i.toString());if(t instanceof te)return e&&t.equals(xt)?qt:t;if(e&&t.toString()===xt.toBase58())return qt;if(typeof t=="string"){if(t===te.default.toBase58())return te.default;try{return new te(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function mn(i){try{return new te(i)}catch{return i}}var gt=new te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Cs=new te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),wt=new te("SysvarRent111111111111111111111111111111111"),Ns=new te("SysvarC1ock11111111111111111111111111111111"),kt=new te("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ls=new te("Sysvar1nstructions1111111111111111111111111"),Rs=fi.programId,Ms=new te("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Os=new te("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Es=new te("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Fs=new te("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ws=new te("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),vs=new te("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Vs=new te("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ds=new te("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),_s=new te("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),qs=new te("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Gs=new te("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),qt=new te("So11111111111111111111111111111111111111112"),xt=te.default;function dn(i){return ln({publicKey:i,transformSol:!0})}import{PublicKey as ro}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bi}from"@solana/spl-token";var yi={chainId:101,address:ro.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"}},it={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 fn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===xt.toBase58()||e instanceof pn&&xt.equals(e)){this.decimals=it.decimals,this.symbol=it.symbol,this.name=it.name,this.mint=new pn(it.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?pn.default:ln({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},qe=fn;qe.WSOL=new fn(ee(Q({},it),{mint:it.address}));import Ut from"big.js";import ao from"bn.js";import uo from"decimal.js-light";import oo from"toformat";var so=oo,Bt=so;var Gt=se("module/fraction"),bn=Bt(Ut),It=Bt(uo),co={[0]:It.ROUND_DOWN,[1]:It.ROUND_HALF_UP,[2]:It.ROUND_UP},lo={[0]:Ut.roundDown,[1]:Ut.roundHalfUp,[2]:Ut.roundUp},z=class{constructor(e,t=new ao(1)){this.numerator=ne(e),this.denominator=ne(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new z(this.denominator,this.numerator)}add(e){let t=e instanceof z?e:new z(ne(e));return this.denominator.eq(t.denominator)?new z(this.numerator.add(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof z?e:new z(ne(e));return this.denominator.eq(t.denominator)?new z(this.numerator.sub(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof z?e:new z(ne(e));return new z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof z?e:new z(ne(e));return new z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Gt.logWithError(`${e} is not an integer.`),e<=0&&Gt.logWithError(`${e} is not positive.`),It.set({precision:e+1,rounding:co[n]});let r=new It(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)||Gt.logWithError(`${e} is not an integer.`),e<0&&Gt.logWithError(`${e} is negative.`),bn.DP=e,bn.RM=lo[n]||1,new bn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var po=se("Raydium_price"),Ke=class extends z{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new z(yn(n.decimals),yn(r.decimals))}get raw(){return new z(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ke({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&po.logWithError("mul token not equals");let n=super.mul(t);return new Ke({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var gn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Xt=gn;Xt.SOL=new gn(yi);import fo from"bn.js";var gi=new z(new fo(100)),rt=class extends z{toSignificant(e=5,t,n){return this.mul(gi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(gi).toFixed(e,t,n)}};var wn=new Be(0),bo=new Be(1),Va=new Be(2),Da=new Be(3),_a=new Be(5),kn=new Be(10),qa=new Be(100),Ga=new Be(1e3),Ua=new Be(1e4),wi=9007199254740991;function ne(i){let e=se("Raydium_parseBigNumberish");if(i instanceof Be)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Be(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=wi||i<=-wi)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Be(String(i))):typeof i=="bigint"?new Be(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Be(0))}function yn(i){return kn.pow(ne(i))}var go=se("Raydium_amount"),Ai=Bt(yo);function wo(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")):go.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var be=class extends z{constructor(t,n,r=!0,o){let s=new zt(0),a=kn.pow(new zt(t.decimals));if(r)s=ne(n);else{let u=new zt(0),c=new zt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=wo(n.toString(),t.decimals);u=ne(l),c=ne(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=se(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 be(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new be(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 Ai.DP=this.token.decimals,new Ai(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function ki(i){return typeof i=="object"&&i!==null&&![qe,be,ko,z,Ao,Ke,rt].some(e=>typeof e=="object"&&i instanceof e)}function ke(i){return typeof i=="string"?mn(i):Array.isArray(i)?i.map(e=>ke(e)):ki(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,ke(t)])):i}import{PublicKey as nc,sendAndConfirmTransaction as ic,Transaction as oc,TransactionMessage as ac,VersionedTransaction as uc}from"@solana/web3.js";import lc from"axios";var re={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 Po,ComputeBudgetProgram as ku,Transaction as Pu,TransactionMessage as Tu,Keypair as xu,VersionedTransaction as Iu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ku}from"@solana/spl-token";var Lu=se("Raydium_txUtil");function Ce(i,e){let[t,n]=Po.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}import{PublicKey as To,AddressLookupTableAccount as Pi}from"@solana/web3.js";import{PublicKey as ho}from"@solana/web3.js";import{getTransferFeeConfig as vu,unpackMint as Vu}from"@solana/spl-token";var An=se("Raydium_accountInfo_util");async function ct(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=Q({batchRequest:!1},t),o=Pn(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Pn(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&An.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:b,owner:f,rentEpoch:g}=m;return p.length!==2&&p[1]!=="base64"&&An.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:b,owner:new ho(f),rentEpoch:g}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&An.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function hn(i,e,t){let n=await ct(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>ee(Q({},r),{accountInfo:n[o]}))}var xo={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Pi({key:new To("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Pi.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"))})};function Pn(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 Ac=new ae("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Pc=new ae("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),hc=new ae("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Tc=new ae("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),xc=new ae("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Bc=new ae("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ic=new ae("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Sc=new ae("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Kc=new ae("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Cc=new ae("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Nc=new ae("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Lc=new ae("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Rc=new ae("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Mc=new ae("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Oc=new ae("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ec=new ae("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Fc=new ae("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Wc=new ae("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),vc=new ae("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Vc=new ae("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");import{PublicKey as Io}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as So}from"@solana/spl-token";function Ge(i,e,t){return Ce([i.toBuffer(),(t!=null?t:So).toBuffer(),e.toBuffer()],new Io("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Fe from"bn.js";var St=1e4;function le(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=ee(Q({},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 Fe(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===St){let u=new Fe(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=Tn(i.mul(new Fe(St)),new Fe(St-o.transferFeeBasisPoints)),c=new Fe(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=Tn(l.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=Tn(i.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function lt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Tn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Fe(0))?t.add(new Fe(1)):t}import{createInitializeAccountInstruction as vm,createCloseAccountInstruction as Vm,createTransferInstruction as Dm,TOKEN_PROGRAM_ID as _m}from"@solana/spl-token";import{PublicKey as Xm,SystemProgram as Hm}from"@solana/web3.js";import Zm from"bn.js";import{PublicKey as Go,Keypair as Uo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Xo}from"@solana/spl-token";import Lm from"bn.js";import{PublicKey as Fo}from"@solana/web3.js";import Bi,{isBN as Ii}from"bn.js";import{bits as yl,BitStructure as gl,blob as Ko,Blob as wl,cstr as kl,f32 as Al,f32be as Pl,f64 as hl,f64be as Tl,greedy as xl,Layout as Co,ns64 as Bl,ns64be as Il,nu64 as Sl,nu64be as Kl,offset as Cl,s16 as Nl,s16be as Ll,s24 as Rl,s24be as Ml,s32 as No,s32be as Ol,s40 as El,s40be as Fl,s48 as Wl,s48be as vl,s8 as Vl,seq as Lo,struct as Dl,Structure as Ro,u16 as Mo,u16be as _l,u24 as ql,u24be as Gl,u32 as Ul,u32be as Xl,u40 as zl,u40be as Hl,u48 as Ql,u48be as Yl,u8 as Oo,UInt as Eo,union as Zl,Union as jl,unionLayoutDiscriminator as Jl,utf8 as $l}from"@solana/buffer-layout";var xn=Co,hi=Ro;var Bn=Eo;var Ti=Oo,At=Mo;var ye=No;var xi=Lo;var Ne=Ko;var Kt=class extends xn{constructor(t,n,r){super(t,r);this.blob=Ne(t),this.signed=n}decode(t,n=0){let r=new Bi(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 Bi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function q(i){return new Bn(1,i)}function Qe(i){return new Bn(4,i)}function y(i){return new Kt(8,!1,i)}function O(i){return new Kt(16,!1,i)}function Si(i){return new Kt(16,!0,i)}var Ht=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 R(i){return new Ht(Ne(32),e=>new Fo(e),e=>e.toBuffer(),i)}function Ue(i){return new Ht(Ti(),Wo,vo,i)}function Wo(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function vo(i){return i?1:0}var In=class extends hi{decode(e,t){return super.decode(e,t)}};function F(i,e,t){return new In(i,e,t)}function J(i,e,t){let n,r=typeof e=="number"?e:Ii(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Ii(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 xi(i,r,t)}var Ki=F([R("mint"),R("owner"),y("amount"),Qe("delegateOption"),R("delegate"),q("state"),Qe("isNativeOption"),y("isNative"),y("delegatedAmount"),Qe("closeAuthorityOption"),R("closeAuthority")]);function Vo(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function Sn(i,...e){if(!Vo(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 Kn(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 Ci(i,e){Sn(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Yt=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),We=(i,e)=>i<<32-e|i>>>e;var ym=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Do(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Cn(i){return typeof i=="string"&&(i=Do(i)),Sn(i),i}var Qt=class{clone(){return this._cloneInto()}},gm={}.toString;function Ni(i){let e=n=>i().update(Cn(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function _o(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),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var Li=(i,e,t)=>i&e^~i&t,Ri=(i,e,t)=>i&e^i&t^e&t,Zt=class extends Qt{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=Yt(this.buffer)}update(e){Kn(this);let{view:t,buffer:n,blockLen:r}=this;e=Cn(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=Yt(e);for(;r<=o-s;s+=r)this.process(u,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){Kn(this),Ci(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 m=s;m<r;m++)t[m]=0;_o(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Yt(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length: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 qo=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]),ot=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),st=new Uint32Array(64),Nn=class extends Zt{constructor(){super(64,32,8,!1),this.A=ot[0]|0,this.B=ot[1]|0,this.C=ot[2]|0,this.D=ot[3]|0,this.E=ot[4]|0,this.F=ot[5]|0,this.G=ot[6]|0,this.H=ot[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){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=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)st[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=st[m-15],d=st[m-2],b=We(p,7)^We(p,18)^p>>>3,f=We(d,17)^We(d,19)^d>>>10;st[m]=f+st[m-7]+b+st[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=We(a,6)^We(a,11)^We(a,25),d=l+p+Li(a,u,c)+qo[m]+st[m]|0,f=(We(n,2)^We(n,13)^We(n,22))+Ri(n,r,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=r,r=n,n=d+f|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,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,u,c,l)}roundClean(){st.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Mi=Ni(()=>new Nn);var Em=se("Raydium_Util");function Ln({fromPublicKey:i,programId:e=Xo}){let t=Uo.generate().publicKey.toBase58().slice(0,32);return{publicKey:zo(i,t,e),seed:t}}function zo(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Mi(n);return new Go(r)}import{TOKEN_PROGRAM_ID as zn,TOKEN_2022_PROGRAM_ID as Un}from"@solana/spl-token";import{PublicKey as Re,TransactionInstruction as Hn,SystemProgram as er}from"@solana/web3.js";import Xn from"bn.js";import{PublicKey as ef}from"@solana/web3.js";import Xe from"bn.js";var ue=new Xe(0),Ie=new Xe(1),Ye=new Xe(-1),Se=new Xe(1).shln(64),jt=new Xe(1).shln(128),Rn=Se.sub(Ie),Ct=64,Oi=jt.subn(1),Ae=-443636,he=-Ae,Ze=new Xe("4295048016"),je=new Xe("79226673521066979257578248091"),Ei=16,Fi="59543866431248",Wi="184467440737095516",vi="15793534762490258745",Jt=new Xe(10).pow(new Xe(6));var Ad=new Xe("18446744073700000000");import D from"bn.js";function $t(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Mn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function On(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Nt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Vi(i,e){return Nt(i,e)?null:Mn(i,e)}function Di(i,e){return Nt(i,e)?null:On(i,e)}var Id=Buffer.from("amm_config","utf8"),Qo=Buffer.from("pool","utf8"),Yo=Buffer.from("pool_vault","utf8"),Zo=Buffer.from("pool_reward_vault","utf8"),_i=Buffer.from("position","utf8"),jo=Buffer.from("tick_array","utf8"),Jo=Buffer.from("operation","utf8"),$o=Buffer.from("pool_tick_array_bitmap_extension","utf8");function qi(i,e,t,n){return Ce([Qo,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function En(i,e,t){return Ce([Yo,e.toBuffer(),t.toBuffer()],i)}function Gi(i,e,t){return Ce([Zo,e.toBuffer(),t.toBuffer()],i)}function Y(i,e,t){return Ce([jo,e.toBuffer(),$t(t)],i)}function mt(i,e,t,n){return Ce([_i,e.toBuffer(),$t(t),$t(n)],i)}function ve(i,e){return Ce([_i,e.toBuffer()],i)}function en(i){return Ce([Buffer.from("metadata","utf8"),kt.toBuffer(),i.toBuffer()],kt)}function tn(i){return Ce([Jo],i)}function Le(i,e){return Ce([$o,e.toBuffer()],i)}import{PublicKey as at}from"@solana/web3.js";import oe from"bn.js";import ss from"bn.js";var Fn=14,Je=class{static maxTickInTickarrayBitmap(e){return e*me*dt}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,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=Vi(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Di(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-G.tickCount(n)}}}},Lt=class{static getBitmapOffset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Je.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=Je.maxTickInTickarrayBitmap(e),n=-t;if(he<=t)throw Error(`extensionTickBoundary check error: ${he}, ${t}`);if(n<=Ae)throw Error(`extensionTickBoundary check error: ${n}, ${Ae}`);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:S.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}=Je.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=S.mergeTickArrayBitmap(e).shln(dt-1-a),c=Nt(512,u)?null:Mn(512,u);if(c!==null){let l=t-c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=S.mergeTickArrayBitmap(e).shrn(a),c=Nt(512,u)?null:On(512,u);if(c!==null){let l=t+c*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)%Je.maxTickInTickarrayBitmap(t),r=Math.floor(n/G.tickCount(t));return e<0&&n!=0&&(r=dt-r),r}};var Fd=F([Ne(8),q("bump"),At("index"),R(""),Qe("protocolFeeRate"),Qe("tradeFeeRate"),At("tickSpacing"),J(y(),8,"")]),es=F([Qe("blockTimestamp"),O("sqrtPriceX64"),O("cumulativeTimePriceX64"),J(O(),1,"")]),Wn=F([Ne(8),Ue("initialized"),R("poolId"),J(es,1e3,"observations"),J(O(),5,"")]),ts=F([q("rewardState"),y("openTime"),y("endTime"),y("lastUpdateTime"),O("emissionsPerSecondX64"),y("rewardTotalEmissioned"),y("rewardClaimed"),R("tokenMint"),R("tokenVault"),R("creator"),O("rewardGrowthGlobalX64")]),Ui=F([Ne(8),q("bump"),R("ammConfig"),R("creator"),R("mintA"),R("mintB"),R("vaultA"),R("vaultB"),R("observationId"),q("mintDecimalsA"),q("mintDecimalsB"),At("tickSpacing"),O("liquidity"),O("sqrtPriceX64"),ye("tickCurrent"),At("observationIndex"),At("observationUpdateDuration"),O("feeGrowthGlobalX64A"),O("feeGrowthGlobalX64B"),y("protocolFeesTokenA"),y("protocolFeesTokenB"),O("swapInAmountTokenA"),O("swapOutAmountTokenB"),O("swapInAmountTokenB"),O("swapOutAmountTokenA"),q("status"),J(q(),7,""),J(ts,3,"rewardInfos"),J(y(),16,"tickArrayBitmap"),y("totalFeesTokenA"),y("totalFeesClaimedTokenA"),y("totalFeesTokenB"),y("totalFeesClaimedTokenB"),y("fundFeesTokenA"),y("fundFeesTokenB"),y("startTime"),J(y(),15*4-3,"padding")]),ns=F([O("growthInsideLastX64"),y("rewardAmountOwed")]),vn=F([Ne(8),q("bump"),R("nftMint"),R("poolId"),ye("tickLower"),ye("tickUpper"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),J(ns,3,"rewardInfos"),J(y(),8,"")]),Wd=F([Ne(8),q("bump"),R("poolId"),ye("tickLowerIndex"),ye("tickUpperIndex"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),J(O(),3,"rewardGrowthInside"),J(y(),8,"")]),is=F([ye("tick"),Si("liquidityNet"),O("liquidityGross"),O("feeGrowthOutsideX64A"),O("feeGrowthOutsideX64B"),J(O(),3,"rewardGrowthsOutsideX64"),J(Qe(),13,"")]),Rt=F([Ne(8),R("poolId"),ye("startTickIndex"),J(is,me,"ticks"),q("initializedTickCount"),J(q(),115,"")]),rs=F([Ne(329),J(R(),100,"whitelistMints")]),Xi=F([Ne(8),R("poolId"),J(J(y(),8),Fn,"positiveTickArrayBitmap"),J(J(y(),8),Fn,"negativeTickArrayBitmap")]);var os=15,G=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=S.getTickArrayStartIndexByTick(r,o),l=S.getInitializedTickArrayInRange(s,a,o,c,Math.floor(os/2));for(let d=0;d<l.length;d++){let{publicKey:b}=Y(t,n,l[d]);u.push(b)}let m=(await ct(e,u)).map(d=>d!==null?Rt.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let b=m[d];b!==null&&(p[b.startTickIndex]=ee(Q({},b),{address:u[d]}))}return p}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=S.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/G.tickCount(t)),a=n?S.searchLowBitFromStart(r,o,s-1,1,t):S.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 u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<me;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=Y(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=S.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<me;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=Y(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(S.checkIsOutOfBoundary(e)){if(e>he)return!1;let n=S.getTickArrayStartIndexByTick(Ae,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return me*e}};var me=60,dt=512,S=class{static getTickArrayAddressByTick(e,t,n,r){let o=S.getTickArrayStartIndexByTick(n,r),{publicKey:s}=Y(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=S.getTickArrayStartIndexByTick(e,t),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 ss(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[...S.searchLowBitFromStart(e,t,s-1,o,n),...S.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return S.searchHightBitFromStart(e,t,0,dt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=S.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=Y(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>S.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===r)break}let u=G.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>S.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===r)break}let u=G.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Ae||e>he}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=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}};import ze from"bn.js";var Mt=class{static getfeeGrowthInside(e,t,n){let r=new ze(0),o=new ze(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 ze(0),a=new ze(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,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 u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}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 u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new ze(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 u=new ze(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new ze(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 u=new ze(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var g,k,P,A;let a=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=W.getSqrtPriceX64FromTick(t.tickLower),c=W.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=U.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[le(m.amountA,(g=e.mintA.extensions)==null?void 0:g.feeConfig,s,!0),le(m.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)],[b,f]=[le(new ze(new N(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),le(new ze(new N(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as zi}from"@solana/spl-token";var Pe=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,c,o);return a.push(...p),{expectedAmountOut:m.mul(Ye),remainingAccounts:a,executionPrice:d,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:g}=Y(e.programId,e.id,f.nextStartIndex);a.push(g)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Ye),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=Pe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Lt.checkTickArrayIsInit(G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):S.checkTickArrayIsInitialized(S.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Y(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}=Y(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?S.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):S.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}=Je.nextInitializedTickArrayStartIndex(S.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Lt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ae||t>he)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],p=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(p===void 0)throw Error("get new reward mint info error");let d=ee(Q({},m),{perSecond:v.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new at(p)});if(d.tokenMint.equals(at.default))continue;if(n<=d.openTime.toNumber()||r.eq(ue)){s.push(d);continue}let b=new oe(Math.min(d.endTime.toNumber(),n)),f=b.sub(d.lastUpdateTime),g=v.mulDivFloor(f,d.emissionsPerSecondX64,r),k=d.rewardGrowthGlobalX64.add(g),P=v.mulDivFloor(f,d.emissionsPerSecondX64,Se),A=d.rewardTotalEmissioned.add(P);s.push(ee(Q({},d),{rewardGrowthGlobalX64:k,rewardTotalEmissioned:A,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=S.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=Je.maxTickInTickarrayBitmap(e),n=-t;return t>he&&(t=G.getArrayStartIndex(he,e)+G.tickCount(e)),n<Ae&&(n=G.getArrayStartIndex(Ae,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)*dt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await hn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=Xi.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=S.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=S.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=Y(u.programId,u.id,m);o.push({pubkey:p}),r[p.toString()]=u.id}}let s=await hn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Rt.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=ee(Q({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(ve(d,p).publicKey);let l=await ct(t,c,{batchRequest:r}),m={};for(let p of l){if(p===null)continue;let d=vn.decode(p.data),b=d.poolId.toString(),f=e.find(_=>_.state.id.toBase58()===b);if(f===void 0)continue;let g=f.state,k=S._getTickPriceLegacy({poolInfo:g,tick:d.tickLower,baseIn:!0}),P=S._getTickPriceLegacy({poolInfo:g,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:x}=U.getAmountsFromLiquidity(g.sqrtPriceX64,k.tickSqrtPriceX64,P.tickSqrtPriceX64,d.liquidity,!1),h=1/(1-Math.sqrt(Math.sqrt(k.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:k.price,priceUpper:P.price,amountA:A,amountB:x,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(_=>ee(Q({},_),{pendingReward:new oe(0)})),leverage:h,tokenFeeAmountA:new oe(0),tokenFeeAmountB:new oe(0)}];let L=await S.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),E=await S.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=L,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=E}if(o){let p=Object.values(m),d=await ct(t,p,{batchRequest:r}),b={};for(let f=0;f<p.length;f++){let g=d[f];if(g===null)continue;let k=p[f].toString();b[k]=Rt.decode(g.data)}for(let{state:f,positionAccount:g}of e)if(!!g)for(let k of g){let P=`${f.programId.toString()}-${f.id.toString()}-${k.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${k.tickUpper}`,x=b[m[P].toString()],h=b[m[A].toString()],L=x.ticks[S.getTickOffsetInArray(k.tickLower,f.tickSpacing)],E=h.ticks[S.getTickOffsetInArray(k.tickUpper,f.tickSpacing)],{tokenFeeAmountA:_,tokenFeeAmountB:$}=await Mt.GetPositionFees(f,k,L,E),X=await Mt.GetPositionRewards(f,k,L,E);k.tokenFeeAmountA=_.gte(new oe(0))?_:new oe(0),k.tokenFeeAmountB=$.gte(new oe(0))?$:new oe(0);for(let Z=0;Z<X.length;Z++)k.rewardInfos[Z].pendingReward=X[Z].gte(new oe(0))?X[Z]:new oe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new N(0)}){var X;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new N(0))?u=c?Ze.add(new oe(1)):je.sub(new oe(1)):u=W.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=le(o,l,r,!1),{expectedAmountOut:d,remainingAccounts:b,executionPrice:f,feeAmount:g}=Pe.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((X=p.fee)!=null?X:ue),u),k=le(d,m,r,!1),P=W.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?P:new N(1).div(P),x=d.mul(new oe(Math.floor((1-s)*1e10))).div(new oe(1e10)),h=le(x,m,r,!1),L=c?e.currentPrice:new N(1).div(e.currentPrice),E=new N(A).sub(L).abs(),_=L,$=new rt(new N(E).mul(10**15).toFixed(0),new N(_).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:k,minAmountOut:h,expirationTime:lt(p.expirationTime,k.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:$,fee:g,remainingAccounts:b}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new qe(ee(Q({},u),{mint:u.address,isToken2022:u.programId===zi.toBase58()})),new qe(ee(Q({},c),{mint:c.address,isToken2022:c.programId===zi.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:b,expirationTime:f,currentPrice:g,executionPrice:k,priceImpact:P,fee:A,remainingAccounts:x}=await Pe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new at(u.address),amountIn:n,slippage:o,epochInfo:s}),h=ee(Q({},p),{amount:new be(l,p.amount),fee:p.fee===void 0?void 0:new be(l,p.fee)}),L=ee(Q({},d),{amount:new be(m,d.amount),fee:d.fee===void 0?void 0:new be(m,d.fee)}),E=ee(Q({},b),{amount:new be(m,b.amount),fee:b.fee===void 0?void 0:new be(m,b.fee)}),_=new Ke({baseToken:l,denominator:new oe(10).pow(new oe(20+l.decimals)),quoteToken:m,numerator:g.mul(new N(10**(20+m.decimals))).toFixed(0)}),$=new Ke({baseToken:l,denominator:new oe(10).pow(new oe(20+l.decimals)),quoteToken:m,numerator:k.mul(new N(10**(20+m.decimals))).toFixed(0)}),X=new be(l,A);return{realAmountIn:h,amountOut:L,minAmountOut:E,expirationTime:f,currentPrice:_,executionPrice:$,priceImpact:P,fee:X,remainingAccounts:x}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var b,f,g;let o=e[t],s=S.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=S.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(b=o.rewardApr[0])!=null?b:0*d,(f=o.rewardApr[1])!=null?f:0*d,(g=o.rewardApr[2])!=null?g:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[dn(e.mintA.address).toString()],p=r[dn(e.mintB.address).toString()],d=e.mintA.decimals,b=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),g=W.getSqrtPriceX64FromTick(s),k=W.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:A}=U.getAmountsFromLiquidityWithSlippage(f,g,k,t,!1,!1,0),{amountSlippageA:x,amountSlippageB:h}=U.getAmountsFromLiquidityWithSlippage(f,g,k,o,!1,!1,0),L=new N(P.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(A.toString()).div(new N(10).pow(b)).mul(p.value)),E=new N(x.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(h.toString()).div(new N(10).pow(b)).mul(p.value)),_=E.div(L.add(E)).div(E),X=new N(l.volumeFee).mul(365).div(c).mul(_).mul(100).toNumber(),Z=3600*24*365,Me=e.rewardDefaultInfos.map(pe=>{var H,Qn;let Te=pe.mint.decimals,ie=r[pe.mint.address];return u<((H=pe.startTime)!=null?H:0)||u>((Qn=pe.endTime)!=null?Qn:0)||!pe.perSecond||!ie||Te===void 0?0:new N(ie.value).mul(new N(pe.perSecond).mul(Z)).div(new N(10).pow(Te)).mul(_).mul(100).toNumber()});return{feeApr:X,rewardsApr:Me,apr:X+Me.reduce((pe,Te)=>pe+Te,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var k,P;let l=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=W.getSqrtPriceX64FromTick(n),p=W.getSqrtPriceX64FromTick(r),d=a?1-s:1+s,b=le(o,(k=e[t?"mintA":"mintB"].extensions)==null?void 0:k.feeConfig,u,!c),f=new oe(new N(b.amount.sub((P=b.fee)!=null?P:ue).toString()).mul(d).toFixed(0)),g;if(l.lte(m))g=t?U.getLiquidityFromTokenAmountA(m,p,f,!a):new oe(0);else if(l.lte(p)){let A=U.getLiquidityFromTokenAmountA(l,p,f,!a),x=U.getLiquidityFromTokenAmountB(m,l,f);g=t?A:x}else g=t?new oe(0):U.getLiquidityFromTokenAmountB(m,p,f);return Pe.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:g,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var g,k,P,A;let u=W.getSqrtPriceX64FromTick(n),c=W.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(W.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[le(m.amountA,(g=t.mintA.extensions)==null?void 0:g.feeConfig,e,!0),le(m.amountB,(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)],[b,f]=[le(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),le(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let r=await t.getAccountInfo(new at(n.id));if(!r)throw new Error(`pool not found ${n.id}`);let o=Ui.decode(r.data),s=Le(e,new at(n.id)).publicKey,a=await Pe.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return ee(Q({},o),{id:new at(n.id),programId:new at(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:ee(Q({},n.config),{id:new at(n.config.id),fundOwner:""}),currentPrice:new N(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};var v=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(ue)||(o=o.add(Ie)),o}static mulDivFloor(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).add(n.sub(Ie)).div(n)}static x64ToDecimal(e,t){return new N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new D(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(jt).sub(t).mod(jt)}};function de(i,e){return Vn(i.mul(e),64,256)}function as(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Vn(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var W=class{static sqrtPriceX64ToPrice(e,t,n){return v.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return v.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))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(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))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(ue))return e;let o=t.shln(Ct);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?v.mulDivCeil(s,e,a):v.mulDivRoundingUp(s,Ie,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return v.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Ct);if(r)return e.add(o.div(t));{let s=v.mulDivRoundingUp(o,Ie,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<Ae||e>he)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new D("18445821805675395072"):new D("18446744073709551616");return(t&2)!=0&&(n=de(n,new D("18444899583751176192"))),(t&4)!=0&&(n=de(n,new D("18443055278223355904"))),(t&8)!=0&&(n=de(n,new D("18439367220385607680"))),(t&16)!=0&&(n=de(n,new D("18431993317065453568"))),(t&32)!=0&&(n=de(n,new D("18417254355718170624"))),(t&64)!=0&&(n=de(n,new D("18387811781193609216"))),(t&128)!=0&&(n=de(n,new D("18329067761203558400"))),(t&256)!=0&&(n=de(n,new D("18212142134806163456"))),(t&512)!=0&&(n=de(n,new D("17980523815641700352"))),(t&1024)!=0&&(n=de(n,new D("17526086738831433728"))),(t&2048)!=0&&(n=de(n,new D("16651378430235570176"))),(t&4096)!=0&&(n=de(n,new D("15030750278694412288"))),(t&8192)!=0&&(n=de(n,new D("12247334978884435968"))),(t&16384)!=0&&(n=de(n,new D("8131365268886854656"))),(t&32768)!=0&&(n=de(n,new D("3584323654725218816"))),(t&65536)!=0&&(n=de(n,new D("696457651848324352"))),(t&131072)!=0&&(n=de(n,new D("26294789957507116"))),(t&262144)!=0&&(n=de(n,new D("37481735321082"))),e>0&&(n=Oi.div(n)),n}static getTickFromPrice(e,t,n){return W.getTickFromSqrtPriceX64(W.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(je)||e.lt(Ze))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new D(t-64),r=as(n,32,128),o=new D("8000000000000000","hex"),s=0,a=new D(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new D(0))&&s<Ei;){u=u.mul(u);let b=u.shrn(127);u=u.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new D(Fi)),p=Vn(m.sub(new D(Wi)),64,128).toNumber(),d=Vn(m.add(new D(vi)),64,128).toNumber();return p==d?p:W.getSqrtPriceX64FromTick(d).lte(e)?d:p}},pt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=W.getTickFromSqrtPriceX64(W.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=pt.getTickWithPriceAndTickspacing(e,t,n,r),s=W.getSqrtPriceX64FromTick(o);return W.sqrtPriceX64ToPrice(s,n,r)}},U=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(ue))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Ct),s=t.sub(e);return r?v.mulDivRoundingUp(v.mulDivCeil(o,s,t),Ie,e):v.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ue))throw new Error("sqrtPriceX64A must greater than 0");return r?v.mulDivCeil(n,t.sub(e),Se):v.mulDivFloor(n,t.sub(e),Se)}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?v.mulDivRoundingUp(a,Ie,Rn):a.shrn(Ct)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),v.mulDivFloor(n,Rn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,r,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new D(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,r,o),a=U.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new D(0),amountB:U.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=U.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new D(new N(u.toString()).mul(l).toFixed(0)),p=new D(new N(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,A,x,h;let c=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=W.getSqrtPriceX64FromTick(t),m=W.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=U.getAmountsFromLiquidity(c,l,m,r,s),[b,f]=[le(d.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),le(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[g,k]=[le(new D(new N(d.amountA.toString()).mul(p).toFixed(0)),(x=e.mintA.extensions)==null?void 0:x.feeConfig,a,u),le(new D(new N(d.amountB.toString()).mul(p).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)];return{liquidity:r,amountA:b,amountB:f,amountSlippageA:g,amountSlippageB:k,expirationTime:lt(b.expirationTime,f.expirationTime)}}},ft=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,p,d,b){if(p.eq(ue))throw new Error("amountSpecified must not be 0");if(b||(b=s?Ze.add(Ie):je.sub(Ie)),s){if(b.lt(Ze))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(je))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(ue),g={amountSpecifiedRemaining:p,amountCalculated:ue,sqrtPriceX64:m,tick:c>d?Math.min(d+G.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new D(0)},k=d,P=n[d],A=0,x=!s&&P.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(ue)&&!g.sqrtPriceX64.eq(b);){if(A>10)throw Error("liquidity limit");let h={};h.sqrtPriceStartX64=g.sqrtPriceX64;let L=S.nextInitTick(P,g.tick,l,s,x),E=L||null,_=null;if(!(E!=null&&E.liquidityGross.gtn(0))){let X=Pe.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},k,s);if(!X.isExist)throw Error("swapCompute LiquidityInsufficient");k=X.nextStartIndex;let{publicKey:Z}=Y(e,t,k);_=Z,P=n[k],E=S.firstInitializedTick(P,s)}h.tickNext=E.tick,h.initialized=E.liquidityGross.gtn(0),d!==k&&_&&(g.accounts.push(_),d=k),h.tickNext<Ae?h.tickNext=Ae:h.tickNext>he&&(h.tickNext=he),h.sqrtPriceNextX64=W.getSqrtPriceX64FromTick(h.tickNext);let $;if(s&&h.sqrtPriceNextX64.lt(b)||!s&&h.sqrtPriceNextX64.gt(b)?$=b:$=h.sqrtPriceNextX64,[g.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=ft.swapStepCompute(g.sqrtPriceX64,$,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(h.feeAmount),f?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),g.amountCalculated=g.amountCalculated.sub(h.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(h.amountOut),g.amountCalculated=g.amountCalculated.add(h.amountIn.add(h.feeAmount))),g.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let X=E.liquidityNet;s&&(X=X.mul(Ye)),g.liquidity=U.addDelta(g.liquidity,X)}x=h.tickNext!=g.tick&&!s&&P.startTickIndex===h.tickNext,g.tick=s?h.tickNext-1:h.tickNext}else if(g.sqrtPriceX64!=h.sqrtPriceStartX64){let X=W.getTickFromSqrtPriceX64(g.sqrtPriceX64);x=X!=g.tick&&!s&&P.startTickIndex===X,g.tick=X}++A}try{let{nextStartIndex:h,isExist:L}=G.nextInitializedTickArray(g.tick,l,s,r,o);L&&d!==h&&(g.accounts.push(Y(e,t,h).publicKey),d=h)}catch{}return{amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new D(0),amountIn:new D(0),amountOut:new D(0),feeAmount:new D(0)},a=e.gte(t),u=r.gte(ue);if(u){let l=v.mulDivFloor(r,Jt.sub(new D(o.toString())),Jt);s.amountIn=a?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Ye).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromOutput(e,n,r.mul(Ye),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=U.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=U.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:U.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:U.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Ye))&&(s.amountOut=r.mul(Ye)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=v.mulDivCeil(s.amountIn,new D(o),Jt.sub(new D(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};import{TOKEN_PROGRAM_ID as ge,TOKEN_2022_PROGRAM_ID as ut,ASSOCIATED_TOKEN_PROGRAM_ID as Hi}from"@solana/spl-token";import{PublicKey as T,TransactionInstruction as Ve,SystemProgram as Pt,Keypair as Dn}from"@solana/web3.js";import Qi from"bn.js";var Yi=se("Raydium_Clmm"),De={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]},Ot=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b){let f=F([O("sqrtPriceX64"),y("startTime")]),g=[{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:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Pt.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],k=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:b},k);let P=Buffer.from([...De.createPool,...k]);return new Ve({keys:g,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ln({fromPublicKey:r,programId:n}),[p,d]=[new T(o.address),new T(s.address)],b=[Pt.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Wn.span),space:Wn.span,programId:n})],{publicKey:f}=qi(n,a,p,d),{publicKey:g}=En(n,f,p),{publicKey:k}=En(n,f,d);return b.push(this.createPoolInstruction(n,f,r,a,m.publicKey,p,g,new T(o.programId||ge),d,k,new T(s.programId||ge),Le(n,f).publicKey,u,c)),{signers:[],instructions:b,instructionTypes:[re.CreateAccount,re.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:g,mintBVault:k},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,P,A,x,h,L,E,_,$,X){let Z=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),O("liquidity"),y("amountMaxA"),y("amountMaxB"),Ue("withMetadata"),q("optionBaseFlag"),Ue("baseFlag")]),Me=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:Pt.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Hi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Me],Te=Buffer.alloc(Z.span);Z.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:h,liquidity:L,amountMaxA:E,amountMaxB:_,withMetadata:$==="create",baseFlag:!1,optionBaseFlag:0},Te);let ie=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:ie})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=Dn.generate();m.push(_),b=_.publicKey}let f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Y(p,d,f),{publicKey:P}=Y(p,d,g),{publicKey:A}=Ge(n.wallet,b,ge),{publicKey:x}=en(b),{publicKey:h}=ve(p,b),{publicKey:L}=mt(p,d,r,o),E=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,b,A,x,L,k,P,h,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,g,s,a,u,c);return{signers:m,instructions:[E],instructionTypes:[re.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:k,tickArrayUpper:P,positionNftAccount:A,metadataAccount:x,personalPosition:h,protocolPosition:L}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=Dn.generate();m.push(_),b=_.publicKey}let f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Y(p,d,f),{publicKey:P}=Y(p,d,g),{publicKey:A}=Ge(n.wallet,b,ge),{publicKey:x}=en(b),{publicKey:h}=ve(p,b),{publicKey:L}=mt(p,d,r,o),E=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,b,A,x,L,k,P,h,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,g,c,s,a,u,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Le(p,d).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:k,tickArrayUpper:P,positionNftAccount:A,metadataAccount:x,personalPosition:h,protocolPosition:L},instructions:[E],signers:m,instructionTypes:[re.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,P,A,x,h,L,E,_,$,X){let Z=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),O("liquidity"),y("amountMaxA"),y("amountMaxB"),Ue("withMetadata"),q("optionBaseFlag"),Ue("baseFlag")]),Me=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:Pt.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Hi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Me],Te=Buffer.alloc(Z.span);Z.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:h,liquidity:new Qi(0),amountMaxA:E==="MintA"?_:$,amountMaxB:E==="MintA"?$:_,withMetadata:L==="create",baseFlag:E==="MintA",optionBaseFlag:1},Te);let ie=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:ie})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,p=[];if(l)m=new T((await l(1))[0]);else{let _=Dn.generate();p.push(_),m=_.publicKey}let[d,b]=[new T(e.programId),new T(e.id)],f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Y(d,b,f),{publicKey:P}=Y(d,b,g),{publicKey:A}=Ge(n.wallet,m,ge),{publicKey:x}=en(m),{publicKey:h}=ve(d,m),{publicKey:L}=mt(d,b,r,o),E=this.openPositionFromLiquidityInstruction(d,n.wallet,b,n.wallet,m,A,x,L,k,P,h,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(t.mintA.address),new T(t.mintB.address),r,o,f,g,s,a,u,c,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Le(d,b).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:k,tickArrayUpper:P,positionNftAccount:A,metadataAccount:x,personalPosition:h,protocolPosition:L},instructions:[E],signers:p,instructionTypes:[re.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=F([]),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:Pt.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...De.closePosition,...u]);return new Ve({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new T(e.programId),{publicKey:s}=Ge(n.wallet,r.nftMint,ge),{publicKey:a}=ve(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[re.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,P){let A=F([O("liquidity"),y("amountMaxA"),y("amountMaxB"),q("optionBaseFlag"),Ue("baseFlag")]),x=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:g,amountMaxB:k,optionBaseFlag:0,baseFlag:!1},L);let E=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:h,programId:e,data:E})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Y(u,c,l),{publicKey:d}=Y(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=ve(u,n.nftMint),{publicKey:g}=mt(u,c,n.tickLower,n.tickUpper),k=this.increasePositionFromLiquidityInstruction(u,r.wallet,b,f,c,g,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Le(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:g},signers:[],instructions:[k],instructionTypes:[re.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Y(u,c,l),{publicKey:d}=Y(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=ve(u,n.nftMint),{publicKey:g}=mt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,b,f,c,g,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Le(u,c).publicKey:void 0)],signers:[],instructionTypes:[re.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,P){let A=F([O("liquidity"),y("amountMaxA"),y("amountMaxB"),q("optionBaseFlag"),Ue("baseFlag")]),x=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(A.span);A.encode({liquidity:new Qi(0),amountMaxA:f==="MintA"?g:k,amountMaxB:f==="MintA"?k:g,baseFlag:f==="MintA",optionBaseFlag:1},L);let E=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:h,programId:e,data:E})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,P,A){let x=F([O("liquidity"),y("amountMinA"),y("amountMinB")]),h=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map($=>[{pubkey:$.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:$.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:$.rewardMint,isSigner:!1,isWritable:!1}]).flat()],L=[{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:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...h],E=Buffer.alloc(x.span);x.encode({liquidity:g,amountMinA:k,amountMinB:P},E);let _=Buffer.from([...De.decreaseLiquidity,...E]);return new Ve({keys:L,programId:e,data:_})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new T(e.programId),new T(e.id)],m=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Y(c,l,m),{publicKey:b}=Y(c,l,p),{publicKey:f}=Ge(r.wallet,n.nftMint,u),{publicKey:g}=ve(c,n.nftMint),{publicKey:k}=mt(c,l,n.tickLower,n.tickUpper),P=[];for(let x=0;x<e.rewardDefaultInfos.length;x++)P.push({poolRewardVault:new T(t.rewardInfos[x].vault),ownerRewardVault:r.rewardAccounts[x],rewardMint:new T(e.rewardDefaultInfos[x].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,g,l,k,d,b,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),P,o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?Le(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:b,positionNftAccount:f,personalPosition:g,protocolPosition:k},signers:[],instructions:A,instructionTypes:[re.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k){let P=F([y("amount"),y("otherAmountThreshold"),O("sqrtPriceLimitX64"),Ue("isBaseInput")]),A=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...m.map(E=>({pubkey:E,isSigner:!1,isWritable:!0}))],x=[{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:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],h=Buffer.alloc(P.span);P.encode({amount:d,otherAmountThreshold:b,sqrtPriceLimitX64:f,isBaseInput:g},h);let L=Buffer.from([...De.swap,...h]);return new Ve({keys:x,programId:e,data:L})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:r,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new T(e.programId),new T(e.id)],[m,p]=[new T(t.vault.A),new T(t.vault.B)],[d,b]=[new T(e.mintA.address),new T(e.mintB.address)],f=e.mintA.address===r.toString(),g=[this.swapInstruction(c,n.wallet,l,new T(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:p,f?p:m,f?d:b,f?b:d,u,m,o,s,a,!0,Le(c,l).publicKey)];return{signers:[],instructions:g,instructionTypes:[re.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([y("openTime"),y("endTime"),O("emissionsPerSecondX64")]),b=[{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:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Pt.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:ne(l),endTime:ne(m),emissionsPerSecondX64:p},f);let g=Buffer.from([...De.initReward,...f]);return new Ve({keys:b,programId:e,data:g})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a=Gi(o,s,r.mint).publicKey,u=tn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new T(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[re.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([q("rewardIndex"),O("emissionsPerSecondX64"),y("openTime"),y("endTime")]),b=[{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:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:ne(l),endTime:ne(m)},f);let g=Buffer.from([...De.setRewardEmissions,...f]);return new Ve({keys:b,programId:e,data:g})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===r.mint.toString()&&(a=p,u=new T(t.rewardInfos[p].vault),c=new T(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&Yi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=tn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new T(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[re.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=F([q("rewardIndex")]),c=[{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:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...De.collectReward,...l]);return new Ve({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new T(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Yi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[re.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new T(e.programId),new T(e.id)],[m,p]=[new T(t.vault.A),new T(t.vault.B)],[d,b]=[new T(e.mintA.address),new T(e.mintB.address)],f=e.mintA.address===r.toString(),g=[this.swapInstruction(c,n.wallet,l,new T(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:b,f?b:d,u,m,o,s,a,!1)];return{signers:[],instructions:g,instructionTypes:[re.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import yf from"bn.js";import{TOKEN_PROGRAM_ID as fs,ASSOCIATED_TOKEN_PROGRAM_ID as tb}from"@solana/spl-token";import{PublicKey as ib,TransactionInstruction as ji,SystemProgram as bs,SYSVAR_RENT_PUBKEY as rb}from"@solana/web3.js";var _n=F([q("instruction"),y("amountIn"),y("minAmountOut")]),qn=F([q("instruction"),y("maxAmountIn"),y("amountOut")]),Uf=F([q("instruction"),q("nonce")]),us=F([q("instruction"),q("nonce"),y("startTime")]),Xf=F([y("status"),y("nonce"),y("maxOrder"),y("depth"),y("baseDecimal"),y("quoteDecimal"),y("state"),y("resetFlag"),y("minSize"),y("volMaxCutRatio"),y("amountWaveRatio"),y("baseLotSize"),y("quoteLotSize"),y("minPriceMultiplier"),y("maxPriceMultiplier"),y("systemDecimalValue"),y("minSeparateNumerator"),y("minSeparateDenominator"),y("tradeFeeNumerator"),y("tradeFeeDenominator"),y("pnlNumerator"),y("pnlDenominator"),y("swapFeeNumerator"),y("swapFeeDenominator"),y("baseNeedTakePnl"),y("quoteNeedTakePnl"),y("quoteTotalPnl"),y("baseTotalPnl"),y("poolOpenTime"),y("punishPcAmount"),y("punishCoinAmount"),y("orderbookToInitTime"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),y("swapBase2QuoteFee"),O("swapQuoteInAmount"),O("swapBaseOutAmount"),y("swapQuote2BaseFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("withdrawQueue"),R("lpVault"),R("owner"),y("lpReserve"),J(y(),3,"padding")]),zf=F([y("accountType"),y("status"),y("nonce"),y("maxOrder"),y("depth"),y("baseDecimal"),y("quoteDecimal"),y("state"),y("resetFlag"),y("minSize"),y("volMaxCutRatio"),y("amountWaveRatio"),y("baseLotSize"),y("quoteLotSize"),y("minPriceMultiplier"),y("maxPriceMultiplier"),y("systemDecimalsValue"),y("abortTradeFactor"),y("priceTickMultiplier"),y("priceTick"),y("minSeparateNumerator"),y("minSeparateDenominator"),y("tradeFeeNumerator"),y("tradeFeeDenominator"),y("pnlNumerator"),y("pnlDenominator"),y("swapFeeNumerator"),y("swapFeeDenominator"),y("baseNeedTakePnl"),y("quoteNeedTakePnl"),y("quoteTotalPnl"),y("baseTotalPnl"),y("poolOpenTime"),y("punishPcAmount"),y("punishCoinAmount"),y("orderbookToInitTime"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),O("swapQuoteInAmount"),O("swapBaseOutAmount"),y("swapQuote2BaseFee"),y("swapBase2QuoteFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("modelDataAccount"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("owner"),J(y(),64,"padding")]),cs=F([q("instruction"),y("baseAmountIn"),y("quoteAmountIn"),y("fixedSide")]),ls=F([q("instruction"),y("amountIn")]);var Hf=F([y("fee")]);import{PublicKey as ms}from"@solana/web3.js";var Gn=new ms("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ds=5e4,ps=F([y("x"),y("y"),y("price")]),Jf=F([y("accountType"),y("status"),y("multiplier"),y("validDataCount"),J(ps,ds,"DataElement")]);var Zi=se("Raydium_liquidity_instruction");function ys({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=ke(i),s=Buffer.alloc(_n.span);_n.encode({instruction:9,amountIn:ne(t),minAmountOut:ne(n)},s);let a=[V({pubkey:fs,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders})];return r===4&&a.push(V({pubkey:o.targetOrders})),a.push(V({pubkey:o.vault.A}),V({pubkey:o.vault.B})),r===5&&a.push(V({pubkey:Gn})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1})),new ji({programId:o.programId,keys:a,data:s})}function gs({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=ke(i),s=Buffer.alloc(qn.span);qn.encode({instruction:11,maxAmountIn:ne(t),amountOut:ne(n)},s);let a=[V({pubkey:bs.programId,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders}),V({pubkey:o.targetOrders}),V({pubkey:o.vault.A}),V({pubkey:o.vault.B})];return r===5&&a.push(V({pubkey:Gn})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1,isSigner:!0})),new ji({programId:o.programId,keys:a,data:s})}function Ji(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return ys(ee(Q({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return gs(ee(Q({},a),{maxAmountIn:r,amountOut:o}),t);Zi.logWithError("invalid params","params",i)}throw Zi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function hb(i,e,t,n,r,o,s,a,u,c,l,m){let p=F([q("instruction"),y("amountIn"),y("amountOut")]),d=[{pubkey:er.programId,isSigner:!1,isWritable:!1},{pubkey:zn,isSigner:!1,isWritable:!1},{pubkey:new Re(t.programId),isSigner:!1,isWritable:!1},{pubkey:new Re(t.id),isSigner:!1,isWritable:!0},{pubkey:new Re(n.id),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=ke(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(g=>({pubkey:g,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let b=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},b),new Hn({keys:d,programId:i,data:b})}function Tb(i,e,t,n,r,o,s,a,u,c){let l=F([q("instruction")]),m=[{pubkey:er.programId,isSigner:!1,isWritable:!1},{pubkey:zn,isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new Re(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=ke(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Hn({keys:m,programId:i,data:p})}function $i(i,e,t,n,r,o){if(i.pooltype.includes("StablePool")){let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(i.type==="Concentrated"){let s=i,a=ke(e),u=s.mintA.address===t;return[{pubkey:new Re(String(i.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Un)||a.mintB.programId.equals(Un)?[{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:Le(new Re(String(i.programId)),new Re(i.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function ws(i,e,t,n,r,o,s,a,u,c,l,m,p,d){let b=F([q("instruction"),y("amountIn"),y("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:zn,isSigner:!1,isWritable:!1}];f.push(...$i(a,c,o,t,n,d[0])),f.push(...$i(u,l,s,n,r,d[1]));let g=Buffer.alloc(b.span);return b.encode({instruction:8,amountIn:m,amountOut:p},g),new Hn({keys:f,programId:i,data:g})}async function xb({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=ke(n.poolKey[0]),m=t.equals(l.mintA.address)?Ze.add(Ie):je.sub(Ie);return await Ot.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?o:new Xn(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[Ji({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new Xn(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?re.AmmV5SwapBaseIn:re.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[ws(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new Xn(0)),n.remainingAccounts)],instructionTypes:[re.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(b=>b!==void 0),address:{}}}else throw Error("route type error")}export{xb as makeSwapInstruction,hb as route1Instruction,Tb as route2Instruction,ws as routeInstruction};
|
|
1
|
+
var tr=Object.defineProperty,nr=Object.defineProperties;var ir=Object.getOwnPropertyDescriptors;var Zn=Object.getOwnPropertySymbols;var rr=Object.prototype.hasOwnProperty,or=Object.prototype.propertyIsEnumerable;var jn=(i,e,t)=>e in i?tr(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,Q=(i,e)=>{for(var t in e||(e={}))rr.call(e,t)&&jn(i,t,e[t]);if(Zn)for(var t of Zn(e))or.call(e,t)&&jn(i,t,e[t]);return i},ee=(i,e)=>nr(i,ir(e));import{get as Jn,set as sr}from"lodash";import ei from"dayjs";import ar from"dayjs/plugin/utc";ei.extend(ar);var nn=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 ei().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}},$n={},ur={};function se(i){let e=Jn($n,i);if(!e){let t=Jn(ur,i);e=new nn({name:i,logLevel:t}),sr($n,i,e)}return e}import{PublicKey as ko}from"@solana/web3.js";import Ao from"bn.js";import yo from"big.js";import zt from"bn.js";import Be from"bn.js";var bt=9e15,nt=1e9,rn="0123456789abcdef",Ft="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Wt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",on={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-bt,maxE:bt,crypto:!1},ri,He,M=!0,Vt="[DecimalError] ",tt=Vt+"Invalid argument: ",oi=Vt+"Precision limit exceeded",si=Vt+"crypto unavailable",ai="[object Decimal]",we=Math.floor,ce=Math.pow,cr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,lr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,mr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ui=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ee=1e7,C=7,dr=9007199254740991,pr=Ft.length-1,sn=Wt.length-1,w={toStringTag:ai};w.absoluteValue=w.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),K(i)};w.ceil=function(){return K(new this.constructor(this),this.e+1,2)};w.clampedTo=w.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(tt+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};w.comparedTo=w.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<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]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};w.cosine=w.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())+C,n.rounding=1,t=fr(n,pi(n,t)),n.precision=i,n.rounding=e,K(He==2||He==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};w.cubeRoot=w.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(M=!1,o=l.s*ce(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=fe(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ce(t,1/3),i=we((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 m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=j(c.plus(l).times(a),c.plus(u),s+2,1),fe(a.d).slice(0,s)===(t=fe(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 M=!0,K(n,i,m.rounding,e)};w.decimalPlaces=w.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-we(this.e/C))*C,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};w.dividedBy=w.div=function(i){return j(this,new this.constructor(i))};w.dividedToIntegerBy=w.divToInt=function(i){var e=this,t=e.constructor;return K(j(e,new t(i),0,1,1),t.precision,t.rounding)};w.equals=w.eq=function(i){return this.cmp(i)===0};w.floor=function(){return K(new this.constructor(this),this.e+1,3)};w.greaterThan=w.gt=function(i){return this.cmp(i)>0};w.greaterThanOrEqualTo=w.gte=function(i){var e=this.cmp(i);return e==1||e===0};w.hyperbolicCosine=w.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=yt(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return K(o,s.precision=t,s.rounding=n,!0)};w.hyperbolicSine=w.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=yt(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=yt(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,K(r,e,t,!0)};w.hyperbolicTangent=w.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,j(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};w.inverseCosine=w.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()?Oe(t,r,o):new t(0):new t(NaN):e.isZero()?Oe(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Oe(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};w.inverseHyperbolicCosine=w.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,M=!1,t=t.times(t).minus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};w.inverseHyperbolicSine=w.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,M=!1,t=t.times(t).plus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln())};w.inverseHyperbolicTangent=w.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=j(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)};w.inverseSine=w.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=Oe(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)))};w.inverseTangent=w.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=sn)return s=Oe(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=sn)return s=Oe(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/C+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(M=!1,e=Math.ceil(a/C),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),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)),M=!0,K(s,l.precision=m,l.rounding=p,!0)};w.isFinite=function(){return!!this.d};w.isInteger=w.isInt=function(){return!!this.d&&we(this.e/C)>this.d.length-2};w.isNaN=function(){return!this.s};w.isNegative=w.isNeg=function(){return this.s<0};w.isPositive=w.isPos=function(){return this.s>0};w.isZero=function(){return!!this.d&&this.d[0]===0};w.lessThan=w.lt=function(i){return this.cmp(i)<0};w.lessThanOrEqualTo=w.lte=function(i){return this.cmp(i)<1};w.logarithm=w.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=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=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.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(M=!1,a=m+d,s=et(c,a),n=e?vt(l,a+10):et(i,a),u=j(s,n,a,1),ht(u.d,r=m,p))do if(a+=10,s=et(c,a),n=e?vt(l,a+10):et(i,a),u=j(s,n,a,1),!o){+fe(u.d).slice(r+1,r+15)+1==1e14&&(u=K(u,m+1,0));break}while(ht(u.d,r+=10,p));return M=!0,K(u,m,p)};w.minus=w.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.constructor;if(i=new b(i),!d.d||!i.d)return!d.s||!i.s?i=new b(NaN):d.d?i.s=-i.s:i=new b(i.d||d.s!==i.s?d:NaN),i;if(d.s!=i.s)return i.s=-i.s,d.plus(i);if(c=d.d,p=i.d,a=b.precision,u=b.rounding,!c[0]||!p[0]){if(p[0])i.s=-i.s;else if(c[0])i=new b(d);else return new b(u===3?-0:0);return M?K(i,a,u):i}if(t=we(i.e/C),l=we(d.e/C),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/C),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,i.s=-i.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(r=n;r&&c[--r]===0;)c[r]=Ee-1;--c[r],c[n]+=Ee}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=Dt(c,t),M?K(i,a,u):i):new b(u===3?-0:0)};w.modulo=w.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):(M=!1,n.modulo==9?(e=j(t,i.abs(),0,3,1),e.s*=i.s):e=j(t,i,0,n.modulo,1),e=e.times(i),M=!0,t.minus(e))};w.naturalExponential=w.exp=function(){return an(this)};w.naturalLogarithm=w.ln=function(){return et(this)};w.negated=w.neg=function(){var i=new this.constructor(this);return i.s=-i.s,K(i)};w.plus=w.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,p=m.constructor;if(i=new p(i),!m.d||!i.d)return!m.s||!i.s?i=new p(NaN):m.d||(i=new p(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(i=new p(m)),M?K(i,a,u):i;if(o=we(m.e/C),n=we(i.e/C),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/C),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/Ee|0,c[r]%=Ee;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=Dt(c,n),M?K(i,a,u):i};w.precision=w.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(tt+i);return t.d?(e=ci(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};w.round=function(){var i=this,e=i.constructor;return K(new e(i),i.e+1,e.rounding)};w.sine=w.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())+C,n.rounding=1,t=yr(n,pi(n,t)),n.precision=i,n.rounding=e,K(He>2?t.neg():t,i,e,!0)):new n(NaN)};w.squareRoot=w.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(M=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=we((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(j(s,o,t+2,1)).times(.5),fe(o.d).slice(0,t)===(e=fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(K(o,u+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,u+1,1),i=!n.times(n).eq(s));break}return M=!0,K(n,u,l.rounding,i)};w.tangent=w.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=j(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,K(He==2||He==4?t.neg():t,i,e,!0)):new n(NaN)};w.times=w.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(i=new m(i)).d;if(i.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!i.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?i.s/0:i.s*0);for(t=we(l.e/C)+we(i.e/C),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=o[r]+d[n]*p[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=Dt(o,t),M?K(i,m.precision,m.rounding):i};w.toBinary=function(i,e){return cn(this,2,i,e)};w.toDecimalPlaces=w.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(xe(i,0,nt),e===void 0?e=n.rounding:xe(e,0,8),K(t,i+t.e+1,e))};w.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,!0):(xe(i,0,nt),e===void 0?e=r.rounding:xe(e,0,8),n=K(new r(n),i+1,e),t=_e(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=_e(r):(xe(i,0,nt),e===void 0?e=o.rounding:xe(e,0,8),n=K(new o(r),i+r.e+1,e),t=_e(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};w.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.d,f=d.constructor;if(!b)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=ci(b)-d.e-1,s=o%C,e.d[0]=ce(10,s<0?C+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(tt+a);i=a.gt(e)?o>0?e:c:a}for(M=!1,a=new f(fe(b)),l=f.precision,f.precision=o=b.length*C*2;m=j(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=j(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=d.s,p=j(c,n,o,1).minus(d).abs().cmp(j(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,M=!0,p};w.toHexadecimal=w.toHex=function(i,e){return cn(this,16,i,e)};w.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:xe(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]?(M=!1,t=j(t,i,0,e,1).times(i),M=!0,K(t)):(i.s=t.s,t=i),t};w.toNumber=function(){return+this};w.toOctal=function(i,e){return cn(this,8,i,e)};w.toPower=w.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(ce(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return K(a,n,o);if(e=we(i.e/C),e>=i.d.length-1&&(t=c<0?-c:c)<=dr)return r=li(u,a,t,n),i.s<0?new u(1).div(r):K(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(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=ce(+a,c),e=t==0||!isFinite(t)?we(c*(Math.log("0."+fe(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(M=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=an(i.times(et(a,n+t)),n),r.d&&(r=K(r,n+5,1),ht(r.d,n,o)&&(e=n+10,r=K(an(i.times(et(a,e+t)),e),e+5,1),+fe(r.d).slice(n+1,n+15)+1==1e14&&(r=K(r,n+1,0)))),r.s=s,M=!0,u.rounding=o,K(r,n,o))};w.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(xe(i,1,nt),e===void 0?e=r.rounding:xe(e,0,8),n=K(new r(n),i,e),t=_e(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toSignificantDigits=w.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(xe(i,1,nt),e===void 0?e=n.rounding:xe(e,0,8)),K(new n(t),i,e)};w.toString=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};w.truncated=w.trunc=function(){return K(new this.constructor(this),this.e+1,1)};w.valueOf=w.toJSON=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function fe(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=C-n.length,t&&(o+=$e(t)),o+=n;s=i[e],n=s+"",t=C-n.length,t&&(o+=$e(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function xe(i,e,t){if(i!==~~i||i<e||i>t)throw Error(tt+i)}function ht(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=C,r=0):(r=Math.ceil((e+1)/C),e%=C),o=ce(10,C-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)==ce(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)==ce(10,e-3)-1,s}function Et(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]+=rn.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 fr(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=yt(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 j=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}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,u){var c,l,m,p,d,b,f,g,k,P,A,x,h,L,E,_,$,X,Z,Me,pe=n.constructor,Te=n.s==r.s?1:-1,ie=n.d,H=r.d;if(!ie||!ie[0]||!H||!H[0])return new pe(!n.s||!r.s||(ie?H&&ie[0]==H[0]:!H)?NaN:ie&&ie[0]==0||!H?Te*0:Te/0);for(u?(d=1,l=n.e-r.e):(u=Ee,d=C,l=we(n.e/d)-we(r.e/d)),Z=H.length,$=ie.length,k=new pe(Te),P=k.d=[],m=0;H[m]==(ie[m]||0);m++);if(H[m]>(ie[m]||0)&&l--,o==null?(L=o=pe.precision,s=pe.rounding):a?L=o+(n.e-r.e)+1:L=o,L<0)P.push(1),b=!0;else{if(L=L/d+2|0,m=0,Z==1){for(p=0,H=H[0],L++;(m<$||p)&&L--;m++)E=p*u+(ie[m]||0),P[m]=E/H|0,p=E%H|0;b=p||m<$}else{for(p=u/(H[0]+1)|0,p>1&&(H=i(H,p,u),ie=i(ie,p,u),Z=H.length,$=ie.length),_=Z,A=ie.slice(0,Z),x=A.length;x<Z;)A[x++]=0;Me=H.slice(),Me.unshift(0),X=H[0],H[1]>=u/2&&++X;do p=0,c=e(H,A,Z,x),c<0?(h=A[0],Z!=x&&(h=h*u+(A[1]||0)),p=h/X|0,p>1?(p>=u&&(p=u-1),f=i(H,p,u),g=f.length,x=A.length,c=e(f,A,g,x),c==1&&(p--,t(f,Z<g?Me:H,g,u))):(p==0&&(c=p=1),f=H.slice()),g=f.length,g<x&&f.unshift(0),t(A,f,x,u),c==-1&&(x=A.length,c=e(H,A,Z,x),c<1&&(p++,t(A,Z<x?Me:H,x,u))),x=A.length):c===0&&(p++,A=[0]),P[m++]=p,c&&A[0]?A[x++]=ie[_]||0:(A=[ie[_]],x=1);while((_++<$||A[0]!==void 0)&&L--);b=A[0]!==void 0}P[0]||P.shift()}if(d==1)k.e=l,ri=b;else{for(m=1,p=P[0];p>=10;p/=10)m++;k.e=m+l*d-1,K(k,a?o+k.e+1:o,s,b)}return k}}();function K(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=C,s=e,l=m[p=0],u=l/ce(10,r-s-1)%10|0;else if(p=Math.ceil((o+1)/C),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,r=1,o%=C,s=o-C+1}else break e;else{for(l=a=m[p],r=1;a>=10;a/=10)r++;o%=C,s=o-C+r,u=s<0?0:l/ce(10,r-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%ce(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/ce(10,r-s):0:m[p-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=ce(10,(C-e%C)%C),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=ce(10,C-o),m[p]=s>0?(l/ce(10,r-s)%ce(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==Ee&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=Ee)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return M&&(i.e>d.maxE?(i.d=null,i.e=NaN):i.e<d.minE&&(i.e=0,i.d=[0])),i}function _e(i,e,t){if(!i.isFinite())return di(i);var n,r=i.e,o=fe(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 Dt(i,e){var t=i[0];for(e*=C;t>=10;t/=10)e++;return e}function vt(i,e,t){if(e>pr)throw M=!0,t&&(i.precision=t),Error(oi);return K(new i(Ft),e,1,!0)}function Oe(i,e,t){if(e>sn)throw Error(oi);return K(new i(Wt),e,t,!0)}function ci(i){var e=i.length-1,t=e*C+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 li(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/C+4);for(M=!1;;){if(t%2&&(o=o.times(e),ni(o.d,s)&&(r=!0)),t=we(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ni(e.d,s)}return M=!0,o}function ti(i){return i.d[i.d.length-1]&1}function mi(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 an(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,p=i.constructor,d=p.rounding,b=p.precision;if(!i.d||!i.d[0]||i.e>17)return new p(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(M=!1,u=b):u=e,a=new p(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(ce(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=K(o.times(i),u,1),t=t.times(++l),a=s.plus(j(o,t,u,1)),fe(a.d).slice(0,u)===fe(s.d).slice(0,u)){for(r=m;r--;)s=K(s.times(s),u,1);if(e==null)if(c<3&&ht(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return K(s,p.precision=b,d,M=!0);else return p.precision=b,s}s=a}}function et(i,e){var t,n,r,o,s,a,u,c,l,m,p,d=1,b=10,f=i,g=f.d,k=f.constructor,P=k.rounding,A=k.precision;if(f.s<0||!g||!g[0]||!f.e&&g[0]==1&&g.length==1)return new k(g&&!g[0]?-1/0:f.s!=1?NaN:g?0:f);if(e==null?(M=!1,l=A):l=e,k.precision=l+=b,t=fe(g),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(i),t=fe(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new k("0."+t),o++):f=new k(n+"."+t.slice(1))}else return c=vt(k,l+2,A).times(o+""),f=et(new k(n+"."+t.slice(1)),l-b).plus(c),k.precision=A,e==null?K(f,A,P,M=!0):f;for(m=f,u=s=f=j(f.minus(1),f.plus(1),l,1),p=K(f.times(f),l,1),r=3;;){if(s=K(s.times(p),l,1),c=u.plus(j(s,new k(r),l,1)),fe(c.d).slice(0,l)===fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(vt(k,l+2,A).times(o+""))),u=j(u,new k(d),l,1),e==null)if(ht(u.d,l-b,P,a))k.precision=l+=b,c=s=f=j(m.minus(1),m.plus(1),l,1),p=K(f.times(f),l,1),r=a=1;else return K(u,k.precision=A,P,M=!0);else return k.precision=A,u;u=c,r+=2}}function di(i){return String(i.s*i.s/0)}function un(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)%C,t<0&&(n+=C),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=C;n<r;)i.d.push(+e.slice(n,n+=C));e=e.slice(n),n=C-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),M&&(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 br(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ui.test(e))return un(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(lr.test(e))t=16,e=e.toLowerCase();else if(cr.test(e))t=2;else if(mr.test(e))t=8;else throw Error(tt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=li(n,new n(t),o,o*2)),c=Et(e,t,Ee),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=Dt(c,l),i.d=c,M=!1,s&&(i=j(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?ce(2,u):Tt.pow(2,u))),M=!0,i)}function yr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:yt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_t(5,t)),e=yt(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 yt(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/C);for(M=!1,u=t.times(t),a=new i(n);;){if(s=j(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=j(s.times(u),new i(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return M=!0,s.d.length=m+1,s}function _t(i,e){for(var t=i;--e;)t*=i;return t}function pi(i,e){var t,n=e.s<0,r=Oe(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return He=n?4:1,e;if(t=e.divToInt(r),t.isZero())He=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return He=ti(t)?n?2:3:n?4:1,e;He=ti(t)?n?1:4:n?3:2}return e.minus(r).abs()}function cn(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor,b=t!==void 0;if(b?(xe(t,1,nt),n===void 0?n=d.rounding:xe(n,0,8)):(t=d.precision,n=d.rounding),!i.isFinite())l=di(i);else{for(l=_e(i),s=l.indexOf("."),b?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Et(_e(p),10,r),p.e=p.d.length),m=Et(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=b?"0p+0":"0";else{if(s<0?o--:(i=new d(i),i.d=m,i.e=o,i=j(i,p,t,n,0,r),m=i.d,o=i.e,c=ri),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=rn.charAt(m[s]);if(b){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Et(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=rn.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(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 ni(i,e){if(i.length>e)return i.length=e,!0}function gr(i){return new this(i).abs()}function wr(i){return new this(i).acos()}function kr(i){return new this(i).acosh()}function Ar(i,e){return new this(i).plus(e)}function Pr(i){return new this(i).asin()}function hr(i){return new this(i).asinh()}function Tr(i){return new this(i).atan()}function xr(i){return new this(i).atanh()}function Br(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=Oe(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Oe(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Oe(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(j(i,e,o,1)),e=Oe(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(j(i,e,o,1)),t}function Ir(i){return new this(i).cbrt()}function Sr(i){return K(i=new this(i),i.e+1,2)}function Kr(i,e,t){return new this(i).clamp(e,t)}function Cr(i){if(!i||typeof i!="object")throw Error(Vt+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,nt,"rounding",0,8,"toExpNeg",-bt,0,"toExpPos",0,bt,"maxE",0,bt,"minE",-bt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=on[t]),(n=i[t])!==void 0)if(we(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(tt+t+": "+n);if(t="crypto",r&&(this[t]=on[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(si);else this[t]=!1;else throw Error(tt+t+": "+n);return this}function Nr(i){return new this(i).cos()}function Lr(i){return new this(i).cosh()}function fi(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,ii(o)){c.s=o.s,M?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;M?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return un(c,o.toString())}else if(u!=="string")throw Error(tt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),ui.test(o)?un(c,o):br(c,o)}if(r.prototype=w,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=Cr,r.clone=fi,r.isDecimal=ii,r.abs=gr,r.acos=wr,r.acosh=kr,r.add=Ar,r.asin=Pr,r.asinh=hr,r.atan=Tr,r.atanh=xr,r.atan2=Br,r.cbrt=Ir,r.ceil=Sr,r.clamp=Kr,r.cos=Nr,r.cosh=Lr,r.div=Rr,r.exp=Mr,r.floor=Or,r.hypot=Er,r.ln=Fr,r.log=Wr,r.log10=Vr,r.log2=vr,r.max=Dr,r.min=_r,r.mod=qr,r.mul=Gr,r.pow=Ur,r.random=Xr,r.round=zr,r.sign=Hr,r.sin=Qr,r.sinh=Yr,r.sqrt=Zr,r.sub=jr,r.sum=Jr,r.tan=$r,r.tanh=eo,r.trunc=to,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 Rr(i,e){return new this(i).div(e)}function Mr(i){return new this(i).exp()}function Or(i){return K(i=new this(i),i.e+1,3)}function Er(){var i,e,t=new this(0);for(M=!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 M=!0,new this(1/0);t=e}return M=!0,t.sqrt()}function ii(i){return i instanceof Tt||i&&i.toStringTag===ai||!1}function Fr(i){return new this(i).ln()}function Wr(i,e){return new this(i).log(e)}function vr(i){return new this(i).log(2)}function Vr(i){return new this(i).log(10)}function Dr(){return mi(this,arguments,"lt")}function _r(){return mi(this,arguments,"gt")}function qr(i,e){return new this(i).mod(e)}function Gr(i,e){return new this(i).mul(e)}function Ur(i,e){return new this(i).pow(e)}function Xr(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:xe(i,1,nt),n=Math.ceil(i/C),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(si);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=C,n&&i&&(r=ce(10,C-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-=C)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<C&&(t-=C-n)}return s.e=t,s.d=a,s}function zr(i){return K(i=new this(i),i.e+1,this.rounding)}function Hr(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Qr(i){return new this(i).sin()}function Yr(i){return new this(i).sinh()}function Zr(i){return new this(i).sqrt()}function jr(i,e){return new this(i).sub(e)}function Jr(){var i=0,e=arguments,t=new this(e[i]);for(M=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return M=!0,K(t,this.precision,this.rounding)}function $r(i){return new this(i).tan()}function eo(i){return new this(i).tanh()}function to(i){return K(i=new this(i),i.e+1,1)}w[Symbol.for("nodejs.util.inspect.custom")]=w.toString;w[Symbol.toStringTag]="Decimal";var Tt=w.constructor=fi(on);Ft=new Tt(Ft);Wt=new Tt(Wt);var N=Tt;import{PublicKey as pn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as no}from"@solana/spl-token";import{PublicKey as te,SystemProgram as bi,SYSVAR_RENT_PUBKEY as io}from"@solana/web3.js";function V({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Ks=[V({pubkey:no,isWritable:!1}),V({pubkey:bi.programId,isWritable:!1}),V({pubkey:io,isWritable:!1})];function ln({publicKey:i,transformSol:e}){let t=mn(i.toString());if(t instanceof te)return e&&t.equals(xt)?qt:t;if(e&&t.toString()===xt.toBase58())return qt;if(typeof t=="string"){if(t===te.default.toBase58())return te.default;try{return new te(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function mn(i){try{return new te(i)}catch{return i}}var gt=new te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Cs=new te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),wt=new te("SysvarRent111111111111111111111111111111111"),Ns=new te("SysvarC1ock11111111111111111111111111111111"),kt=new te("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ls=new te("Sysvar1nstructions1111111111111111111111111"),Rs=bi.programId,Ms=new te("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Os=new te("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Es=new te("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Fs=new te("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ws=new te("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),vs=new te("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Vs=new te("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ds=new te("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),_s=new te("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),qs=new te("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Gs=new te("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),qt=new te("So11111111111111111111111111111111111111112"),xt=te.default;function dn(i){return ln({publicKey:i,transformSol:!0})}import{PublicKey as ro}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yi}from"@solana/spl-token";var gi={chainId:101,address:ro.default.toBase58(),programId:yi.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},it={chainId:101,address:"So11111111111111111111111111111111111111112",programId:yi.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 fn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===xt.toBase58()||e instanceof pn&&xt.equals(e)){this.decimals=it.decimals,this.symbol=it.symbol,this.name=it.name,this.mint=new pn(it.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?pn.default:ln({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},qe=fn;qe.WSOL=new fn(ee(Q({},it),{mint:it.address}));import Ut from"big.js";import ao from"bn.js";import uo from"decimal.js-light";import oo from"toformat";var so=oo,Bt=so;var Gt=se("module/fraction"),bn=Bt(Ut),It=Bt(uo),co={[0]:It.ROUND_DOWN,[1]:It.ROUND_HALF_UP,[2]:It.ROUND_UP},lo={[0]:Ut.roundDown,[1]:Ut.roundHalfUp,[2]:Ut.roundUp},z=class{constructor(e,t=new ao(1)){this.numerator=ne(e),this.denominator=ne(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new z(this.denominator,this.numerator)}add(e){let t=e instanceof z?e:new z(ne(e));return this.denominator.eq(t.denominator)?new z(this.numerator.add(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof z?e:new z(ne(e));return this.denominator.eq(t.denominator)?new z(this.numerator.sub(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof z?e:new z(ne(e));return new z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof z?e:new z(ne(e));return new z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Gt.logWithError(`${e} is not an integer.`),e<=0&&Gt.logWithError(`${e} is not positive.`),It.set({precision:e+1,rounding:co[n]});let r=new It(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)||Gt.logWithError(`${e} is not an integer.`),e<0&&Gt.logWithError(`${e} is negative.`),bn.DP=e,bn.RM=lo[n]||1,new bn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var po=se("Raydium_price"),Ke=class extends z{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new z(yn(n.decimals),yn(r.decimals))}get raw(){return new z(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ke({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&po.logWithError("mul token not equals");let n=super.mul(t);return new Ke({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var gn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Xt=gn;Xt.SOL=new gn(gi);import fo from"bn.js";var wi=new z(new fo(100)),rt=class extends z{toSignificant(e=5,t,n){return this.mul(wi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(wi).toFixed(e,t,n)}};var wn=new Be(0),bo=new Be(1),Va=new Be(2),Da=new Be(3),_a=new Be(5),kn=new Be(10),qa=new Be(100),Ga=new Be(1e3),Ua=new Be(1e4),ki=9007199254740991;function ne(i){let e=se("Raydium_parseBigNumberish");if(i instanceof Be)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Be(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 Be(String(i))):typeof i=="bigint"?new Be(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Be(0))}function yn(i){return kn.pow(ne(i))}var go=se("Raydium_amount"),Pi=Bt(yo);function wo(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")):go.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var be=class extends z{constructor(t,n,r=!0,o){let s=new zt(0),a=kn.pow(new zt(t.decimals));if(r)s=ne(n);else{let u=new zt(0),c=new zt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=wo(n.toString(),t.decimals);u=ne(l),c=ne(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=se(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 be(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new be(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 Pi.DP=this.token.decimals,new Pi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Ai(i){return typeof i=="object"&&i!==null&&![qe,be,ko,z,Ao,Ke,rt].some(e=>typeof e=="object"&&i instanceof e)}function ke(i){return typeof i=="string"?mn(i):Array.isArray(i)?i.map(e=>ke(e)):Ai(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,ke(t)])):i}import{PublicKey as nc,sendAndConfirmTransaction as ic,Transaction as oc,TransactionMessage as ac,VersionedTransaction as uc}from"@solana/web3.js";import lc from"axios";var re={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 Po,ComputeBudgetProgram as ku,Transaction as Pu,TransactionMessage as Tu,Keypair as xu,VersionedTransaction as Iu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ku}from"@solana/spl-token";var Lu=se("Raydium_txUtil");function Ce(i,e){let[t,n]=Po.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}import{PublicKey as To,AddressLookupTableAccount as hi}from"@solana/web3.js";import{PublicKey as ho}from"@solana/web3.js";import{getTransferFeeConfig as vu,unpackMint as Vu}from"@solana/spl-token";var An=se("Raydium_accountInfo_util");async function ct(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=Q({batchRequest:!1},t),o=Pn(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Pn(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&An.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:b,owner:f,rentEpoch:g}=m;return p.length!==2&&p[1]!=="base64"&&An.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:b,owner:new ho(f),rentEpoch:g}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&An.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function hn(i,e,t){let n=await ct(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>ee(Q({},r),{accountInfo:n[o]}))}var xo={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new hi({key:new To("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:hi.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"))})};function Pn(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 Ac=new ae("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Pc=new ae("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),hc=new ae("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Tc=new ae("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),xc=new ae("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Bc=new ae("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ic=new ae("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Sc=new ae("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Kc=new ae("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Cc=new ae("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Nc=new ae("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Lc=new ae("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Rc=new ae("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Mc=new ae("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Oc=new ae("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ec=new ae("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Fc=new ae("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Wc=new ae("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),vc=new ae("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Vc=new ae("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");import{PublicKey as Io}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as So}from"@solana/spl-token";function Ge(i,e,t){return Ce([i.toBuffer(),(t!=null?t:So).toBuffer(),e.toBuffer()],new Io("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Fe from"bn.js";var St=1e4;function le(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=ee(Q({},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 Fe(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===St){let u=new Fe(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=Tn(i.mul(new Fe(St)),new Fe(St-o.transferFeeBasisPoints)),c=new Fe(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=Tn(l.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=Tn(i.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function lt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Tn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Fe(0))?t.add(new Fe(1)):t}import{createInitializeAccountInstruction as vm,createCloseAccountInstruction as Vm,createTransferInstruction as Dm,TOKEN_PROGRAM_ID as _m}from"@solana/spl-token";import{PublicKey as Xm,SystemProgram as Hm}from"@solana/web3.js";import Zm from"bn.js";import{PublicKey as Go,Keypair as Uo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Xo}from"@solana/spl-token";import Lm from"bn.js";import{PublicKey as Fo}from"@solana/web3.js";import Ii,{isBN as Si}from"bn.js";import{bits as yl,BitStructure as gl,blob as Ko,Blob as wl,cstr as kl,f32 as Al,f32be as Pl,f64 as hl,f64be as Tl,greedy as xl,Layout as Co,ns64 as Bl,ns64be as Il,nu64 as Sl,nu64be as Kl,offset as Cl,s16 as Nl,s16be as Ll,s24 as Rl,s24be as Ml,s32 as No,s32be as Ol,s40 as El,s40be as Fl,s48 as Wl,s48be as vl,s8 as Vl,seq as Lo,struct as Dl,Structure as Ro,u16 as Mo,u16be as _l,u24 as ql,u24be as Gl,u32 as Ul,u32be as Xl,u40 as zl,u40be as Hl,u48 as Ql,u48be as Yl,u8 as Oo,UInt as Eo,union as Zl,Union as jl,unionLayoutDiscriminator as Jl,utf8 as $l}from"@solana/buffer-layout";var xn=Co,Ti=Ro;var Bn=Eo;var xi=Oo,At=Mo;var ye=No;var Bi=Lo;var Ne=Ko;var Kt=class extends xn{constructor(t,n,r){super(t,r);this.blob=Ne(t),this.signed=n}decode(t,n=0){let r=new Ii(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 Ii(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function q(i){return new Bn(1,i)}function Qe(i){return new Bn(4,i)}function y(i){return new Kt(8,!1,i)}function O(i){return new Kt(16,!1,i)}function Ki(i){return new Kt(16,!0,i)}var Ht=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 R(i){return new Ht(Ne(32),e=>new Fo(e),e=>e.toBuffer(),i)}function Ue(i){return new Ht(xi(),Wo,vo,i)}function Wo(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function vo(i){return i?1:0}var In=class extends Ti{decode(e,t){return super.decode(e,t)}};function F(i,e,t){return new In(i,e,t)}function J(i,e,t){let n,r=typeof e=="number"?e:Si(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Si(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 Bi(i,r,t)}var Ci=F([R("mint"),R("owner"),y("amount"),Qe("delegateOption"),R("delegate"),q("state"),Qe("isNativeOption"),y("isNative"),y("delegatedAmount"),Qe("closeAuthorityOption"),R("closeAuthority")]);function Vo(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function Sn(i,...e){if(!Vo(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 Kn(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 Ni(i,e){Sn(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Yt=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),We=(i,e)=>i<<32-e|i>>>e;var ym=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Do(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Cn(i){return typeof i=="string"&&(i=Do(i)),Sn(i),i}var Qt=class{clone(){return this._cloneInto()}},gm={}.toString;function Li(i){let e=n=>i().update(Cn(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function _o(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),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var Ri=(i,e,t)=>i&e^~i&t,Mi=(i,e,t)=>i&e^i&t^e&t,Zt=class extends Qt{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=Yt(this.buffer)}update(e){Kn(this);let{view:t,buffer:n,blockLen:r}=this;e=Cn(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=Yt(e);for(;r<=o-s;s+=r)this.process(u,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){Kn(this),Ni(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 m=s;m<r;m++)t[m]=0;_o(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Yt(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length: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 qo=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]),ot=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),st=new Uint32Array(64),Nn=class extends Zt{constructor(){super(64,32,8,!1),this.A=ot[0]|0,this.B=ot[1]|0,this.C=ot[2]|0,this.D=ot[3]|0,this.E=ot[4]|0,this.F=ot[5]|0,this.G=ot[6]|0,this.H=ot[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){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=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)st[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=st[m-15],d=st[m-2],b=We(p,7)^We(p,18)^p>>>3,f=We(d,17)^We(d,19)^d>>>10;st[m]=f+st[m-7]+b+st[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=We(a,6)^We(a,11)^We(a,25),d=l+p+Ri(a,u,c)+qo[m]+st[m]|0,f=(We(n,2)^We(n,13)^We(n,22))+Mi(n,r,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=r,r=n,n=d+f|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,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,u,c,l)}roundClean(){st.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Oi=Li(()=>new Nn);var Em=se("Raydium_Util");function Ln({fromPublicKey:i,programId:e=Xo}){let t=Uo.generate().publicKey.toBase58().slice(0,32);return{publicKey:zo(i,t,e),seed:t}}function zo(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Oi(n);return new Go(r)}import{TOKEN_PROGRAM_ID as Hn,TOKEN_2022_PROGRAM_ID as Xn}from"@solana/spl-token";import{PublicKey as Re,TransactionInstruction as Qn,SystemProgram as er}from"@solana/web3.js";import zn from"bn.js";import{PublicKey as ef}from"@solana/web3.js";import Xe from"bn.js";var ue=new Xe(0),Ie=new Xe(1),Ye=new Xe(-1),Se=new Xe(1).shln(64),jt=new Xe(1).shln(128),Rn=Se.sub(Ie),Ct=64,Ei=jt.subn(1),Ae=-443636,he=-Ae,Ze=new Xe("4295048016"),je=new Xe("79226673521066979257578248091"),Fi=16,Wi="59543866431248",vi="184467440737095516",Vi="15793534762490258745",Jt=new Xe(10).pow(new Xe(6));var Ad=new Xe("18446744073700000000");import D from"bn.js";function $t(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Mn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function On(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Nt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Di(i,e){return Nt(i,e)?null:Mn(i,e)}function _i(i,e){return Nt(i,e)?null:On(i,e)}var Id=Buffer.from("amm_config","utf8"),Qo=Buffer.from("pool","utf8"),Yo=Buffer.from("pool_vault","utf8"),Zo=Buffer.from("pool_reward_vault","utf8"),qi=Buffer.from("position","utf8"),jo=Buffer.from("tick_array","utf8"),Jo=Buffer.from("operation","utf8"),$o=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Gi(i,e,t,n){return Ce([Qo,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function En(i,e,t){return Ce([Yo,e.toBuffer(),t.toBuffer()],i)}function Ui(i,e,t){return Ce([Zo,e.toBuffer(),t.toBuffer()],i)}function Y(i,e,t){return Ce([jo,e.toBuffer(),$t(t)],i)}function mt(i,e,t,n){return Ce([qi,e.toBuffer(),$t(t),$t(n)],i)}function ve(i,e){return Ce([qi,e.toBuffer()],i)}function en(i){return Ce([Buffer.from("metadata","utf8"),kt.toBuffer(),i.toBuffer()],kt)}function tn(i){return Ce([Jo],i)}function Le(i,e){return Ce([$o,e.toBuffer()],i)}import{PublicKey as at}from"@solana/web3.js";import oe from"bn.js";import ss from"bn.js";var Fn=14,Je=class{static maxTickInTickarrayBitmap(e){return e*me*dt}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,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=Di(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=_i(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-G.tickCount(n)}}}},Lt=class{static getBitmapOffset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Je.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=Je.maxTickInTickarrayBitmap(e),n=-t;if(he<=t)throw Error(`extensionTickBoundary check error: ${he}, ${t}`);if(n<=Ae)throw Error(`extensionTickBoundary check error: ${n}, ${Ae}`);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:S.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}=Je.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=S.mergeTickArrayBitmap(e).shln(dt-1-a),c=Nt(512,u)?null:Mn(512,u);if(c!==null){let l=t-c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=S.mergeTickArrayBitmap(e).shrn(a),c=Nt(512,u)?null:On(512,u);if(c!==null){let l=t+c*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)%Je.maxTickInTickarrayBitmap(t),r=Math.floor(n/G.tickCount(t));return e<0&&n!=0&&(r=dt-r),r}};var Fd=F([Ne(8),q("bump"),At("index"),R(""),Qe("protocolFeeRate"),Qe("tradeFeeRate"),At("tickSpacing"),J(y(),8,"")]),es=F([Qe("blockTimestamp"),O("sqrtPriceX64"),O("cumulativeTimePriceX64"),J(O(),1,"")]),Wn=F([Ne(8),Ue("initialized"),R("poolId"),J(es,1e3,"observations"),J(O(),5,"")]),ts=F([q("rewardState"),y("openTime"),y("endTime"),y("lastUpdateTime"),O("emissionsPerSecondX64"),y("rewardTotalEmissioned"),y("rewardClaimed"),R("tokenMint"),R("tokenVault"),R("creator"),O("rewardGrowthGlobalX64")]),vn=F([Ne(8),q("bump"),R("ammConfig"),R("creator"),R("mintA"),R("mintB"),R("vaultA"),R("vaultB"),R("observationId"),q("mintDecimalsA"),q("mintDecimalsB"),At("tickSpacing"),O("liquidity"),O("sqrtPriceX64"),ye("tickCurrent"),At("observationIndex"),At("observationUpdateDuration"),O("feeGrowthGlobalX64A"),O("feeGrowthGlobalX64B"),y("protocolFeesTokenA"),y("protocolFeesTokenB"),O("swapInAmountTokenA"),O("swapOutAmountTokenB"),O("swapInAmountTokenB"),O("swapOutAmountTokenA"),q("status"),J(q(),7,""),J(ts,3,"rewardInfos"),J(y(),16,"tickArrayBitmap"),y("totalFeesTokenA"),y("totalFeesClaimedTokenA"),y("totalFeesTokenB"),y("totalFeesClaimedTokenB"),y("fundFeesTokenA"),y("fundFeesTokenB"),y("startTime"),J(y(),15*4-3,"padding")]),ns=F([O("growthInsideLastX64"),y("rewardAmountOwed")]),Vn=F([Ne(8),q("bump"),R("nftMint"),R("poolId"),ye("tickLower"),ye("tickUpper"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),J(ns,3,"rewardInfos"),J(y(),8,"")]),Wd=F([Ne(8),q("bump"),R("poolId"),ye("tickLowerIndex"),ye("tickUpperIndex"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),J(O(),3,"rewardGrowthInside"),J(y(),8,"")]),is=F([ye("tick"),Ki("liquidityNet"),O("liquidityGross"),O("feeGrowthOutsideX64A"),O("feeGrowthOutsideX64B"),J(O(),3,"rewardGrowthsOutsideX64"),J(Qe(),13,"")]),Rt=F([Ne(8),R("poolId"),ye("startTickIndex"),J(is,me,"ticks"),q("initializedTickCount"),J(q(),115,"")]),rs=F([Ne(329),J(R(),100,"whitelistMints")]),Xi=F([Ne(8),R("poolId"),J(J(y(),8),Fn,"positiveTickArrayBitmap"),J(J(y(),8),Fn,"negativeTickArrayBitmap")]);var os=15,G=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=S.getTickArrayStartIndexByTick(r,o),l=S.getInitializedTickArrayInRange(s,a,o,c,Math.floor(os/2));for(let d=0;d<l.length;d++){let{publicKey:b}=Y(t,n,l[d]);u.push(b)}let m=(await ct(e,u)).map(d=>d!==null?Rt.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let b=m[d];b!==null&&(p[b.startTickIndex]=ee(Q({},b),{address:u[d]}))}return p}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=S.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/G.tickCount(t)),a=n?S.searchLowBitFromStart(r,o,s-1,1,t):S.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 u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<me;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=Y(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=S.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<me;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=Y(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(S.checkIsOutOfBoundary(e)){if(e>he)return!1;let n=S.getTickArrayStartIndexByTick(Ae,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return me*e}};var me=60,dt=512,S=class{static getTickArrayAddressByTick(e,t,n,r){let o=S.getTickArrayStartIndexByTick(n,r),{publicKey:s}=Y(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=S.getTickArrayStartIndexByTick(e,t),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 ss(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[...S.searchLowBitFromStart(e,t,s-1,o,n),...S.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return S.searchHightBitFromStart(e,t,0,dt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=S.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=Y(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>S.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===r)break}let u=G.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>S.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===r)break}let u=G.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Ae||e>he}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=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}};import ze from"bn.js";var Mt=class{static getfeeGrowthInside(e,t,n){let r=new ze(0),o=new ze(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 ze(0),a=new ze(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,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 u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}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 u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new ze(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 u=new ze(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new ze(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 u=new ze(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var g,k,P,A;let a=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=W.getSqrtPriceX64FromTick(t.tickLower),c=W.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=U.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[le(m.amountA,(g=e.mintA.extensions)==null?void 0:g.feeConfig,s,!0),le(m.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)],[b,f]=[le(new ze(new N(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),le(new ze(new N(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as zi}from"@solana/spl-token";var Pe=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,c,o);return a.push(...p),{expectedAmountOut:m.mul(Ye),remainingAccounts:a,executionPrice:d,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:g}=Y(e.programId,e.id,f.nextStartIndex);a.push(g)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Ye),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=Pe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Lt.checkTickArrayIsInit(G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):S.checkTickArrayIsInitialized(S.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Y(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}=Y(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?S.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):S.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}=Je.nextInitializedTickArrayStartIndex(S.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Lt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ae||t>he)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],p=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(p===void 0)throw Error("get new reward mint info error");let d=ee(Q({},m),{perSecond:v.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new at(p)});if(d.tokenMint.equals(at.default))continue;if(n<=d.openTime.toNumber()||r.eq(ue)){s.push(d);continue}let b=new oe(Math.min(d.endTime.toNumber(),n)),f=b.sub(d.lastUpdateTime),g=v.mulDivFloor(f,d.emissionsPerSecondX64,r),k=d.rewardGrowthGlobalX64.add(g),P=v.mulDivFloor(f,d.emissionsPerSecondX64,Se),A=d.rewardTotalEmissioned.add(P);s.push(ee(Q({},d),{rewardGrowthGlobalX64:k,rewardTotalEmissioned:A,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=S.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=Je.maxTickInTickarrayBitmap(e),n=-t;return t>he&&(t=G.getArrayStartIndex(he,e)+G.tickCount(e)),n<Ae&&(n=G.getArrayStartIndex(Ae,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)*dt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await hn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=Xi.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=S.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=S.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=Y(u.programId,u.id,m);o.push({pubkey:p}),r[p.toString()]=u.id}}let s=await hn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Rt.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=ee(Q({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(ve(d,p).publicKey);let l=await ct(t,c,{batchRequest:r}),m={};for(let p of l){if(p===null)continue;let d=Vn.decode(p.data),b=d.poolId.toString(),f=e.find(_=>_.state.id.toBase58()===b);if(f===void 0)continue;let g=f.state,k=S._getTickPriceLegacy({poolInfo:g,tick:d.tickLower,baseIn:!0}),P=S._getTickPriceLegacy({poolInfo:g,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:x}=U.getAmountsFromLiquidity(g.sqrtPriceX64,k.tickSqrtPriceX64,P.tickSqrtPriceX64,d.liquidity,!1),h=1/(1-Math.sqrt(Math.sqrt(k.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:k.price,priceUpper:P.price,amountA:A,amountB:x,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(_=>ee(Q({},_),{pendingReward:new oe(0)})),leverage:h,tokenFeeAmountA:new oe(0),tokenFeeAmountB:new oe(0)}];let L=await S.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),E=await S.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=L,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=E}if(o){let p=Object.values(m),d=await ct(t,p,{batchRequest:r}),b={};for(let f=0;f<p.length;f++){let g=d[f];if(g===null)continue;let k=p[f].toString();b[k]=Rt.decode(g.data)}for(let{state:f,positionAccount:g}of e)if(!!g)for(let k of g){let P=`${f.programId.toString()}-${f.id.toString()}-${k.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${k.tickUpper}`,x=b[m[P].toString()],h=b[m[A].toString()],L=x.ticks[S.getTickOffsetInArray(k.tickLower,f.tickSpacing)],E=h.ticks[S.getTickOffsetInArray(k.tickUpper,f.tickSpacing)],{tokenFeeAmountA:_,tokenFeeAmountB:$}=await Mt.GetPositionFees(f,k,L,E),X=await Mt.GetPositionRewards(f,k,L,E);k.tokenFeeAmountA=_.gte(new oe(0))?_:new oe(0),k.tokenFeeAmountB=$.gte(new oe(0))?$:new oe(0);for(let Z=0;Z<X.length;Z++)k.rewardInfos[Z].pendingReward=X[Z].gte(new oe(0))?X[Z]:new oe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new N(0)}){var X;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new N(0))?u=c?Ze.add(new oe(1)):je.sub(new oe(1)):u=W.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=le(o,l,r,!1),{expectedAmountOut:d,remainingAccounts:b,executionPrice:f,feeAmount:g}=Pe.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((X=p.fee)!=null?X:ue),u),k=le(d,m,r,!1),P=W.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?P:new N(1).div(P),x=d.mul(new oe(Math.floor((1-s)*1e10))).div(new oe(1e10)),h=le(x,m,r,!1),L=c?e.currentPrice:new N(1).div(e.currentPrice),E=new N(A).sub(L).abs(),_=L,$=new rt(new N(E).mul(10**15).toFixed(0),new N(_).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:k,minAmountOut:h,expirationTime:lt(p.expirationTime,k.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:$,fee:g,remainingAccounts:b}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new qe(ee(Q({},u),{mint:u.address,isToken2022:u.programId===zi.toBase58()})),new qe(ee(Q({},c),{mint:c.address,isToken2022:c.programId===zi.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:b,expirationTime:f,currentPrice:g,executionPrice:k,priceImpact:P,fee:A,remainingAccounts:x}=await Pe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new at(u.address),amountIn:n,slippage:o,epochInfo:s}),h=ee(Q({},p),{amount:new be(l,p.amount),fee:p.fee===void 0?void 0:new be(l,p.fee)}),L=ee(Q({},d),{amount:new be(m,d.amount),fee:d.fee===void 0?void 0:new be(m,d.fee)}),E=ee(Q({},b),{amount:new be(m,b.amount),fee:b.fee===void 0?void 0:new be(m,b.fee)}),_=new Ke({baseToken:l,denominator:new oe(10).pow(new oe(20+l.decimals)),quoteToken:m,numerator:g.mul(new N(10**(20+m.decimals))).toFixed(0)}),$=new Ke({baseToken:l,denominator:new oe(10).pow(new oe(20+l.decimals)),quoteToken:m,numerator:k.mul(new N(10**(20+m.decimals))).toFixed(0)}),X=new be(l,A);return{realAmountIn:h,amountOut:L,minAmountOut:E,expirationTime:f,currentPrice:_,executionPrice:$,priceImpact:P,fee:X,remainingAccounts:x}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var b,f,g;let o=e[t],s=S.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=S.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(b=o.rewardApr[0])!=null?b:0*d,(f=o.rewardApr[1])!=null?f:0*d,(g=o.rewardApr[2])!=null?g:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[dn(e.mintA.address).toString()],p=r[dn(e.mintB.address).toString()],d=e.mintA.decimals,b=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),g=W.getSqrtPriceX64FromTick(s),k=W.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:A}=U.getAmountsFromLiquidityWithSlippage(f,g,k,t,!1,!1,0),{amountSlippageA:x,amountSlippageB:h}=U.getAmountsFromLiquidityWithSlippage(f,g,k,o,!1,!1,0),L=new N(P.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(A.toString()).div(new N(10).pow(b)).mul(p.value)),E=new N(x.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(h.toString()).div(new N(10).pow(b)).mul(p.value)),_=E.div(L.add(E)).div(E),X=new N(l.volumeFee).mul(365).div(c).mul(_).mul(100).toNumber(),Z=3600*24*365,Me=e.rewardDefaultInfos.map(pe=>{var H,Yn;let Te=pe.mint.decimals,ie=r[pe.mint.address];return u<((H=pe.startTime)!=null?H:0)||u>((Yn=pe.endTime)!=null?Yn:0)||!pe.perSecond||!ie||Te===void 0?0:new N(ie.value).mul(new N(pe.perSecond).mul(Z)).div(new N(10).pow(Te)).mul(_).mul(100).toNumber()});return{feeApr:X,rewardsApr:Me,apr:X+Me.reduce((pe,Te)=>pe+Te,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var k,P;let l=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=W.getSqrtPriceX64FromTick(n),p=W.getSqrtPriceX64FromTick(r),d=a?1-s:1+s,b=le(o,(k=e[t?"mintA":"mintB"].extensions)==null?void 0:k.feeConfig,u,!c),f=new oe(new N(b.amount.sub((P=b.fee)!=null?P:ue).toString()).mul(d).toFixed(0)),g;if(l.lte(m))g=t?U.getLiquidityFromTokenAmountA(m,p,f,!a):new oe(0);else if(l.lte(p)){let A=U.getLiquidityFromTokenAmountA(l,p,f,!a),x=U.getLiquidityFromTokenAmountB(m,l,f);g=t?A:x}else g=t?new oe(0):U.getLiquidityFromTokenAmountB(m,p,f);return Pe.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:g,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var g,k,P,A;let u=W.getSqrtPriceX64FromTick(n),c=W.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(W.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[le(m.amountA,(g=t.mintA.extensions)==null?void 0:g.feeConfig,e,!0),le(m.amountB,(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)],[b,f]=[le(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),le(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let r=await t.getAccountInfo(new at(n.id));if(!r)throw new Error(`pool not found ${n.id}`);let o=vn.decode(r.data),s=Le(e,new at(n.id)).publicKey,a=await Pe.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return ee(Q({},o),{id:new at(n.id),programId:new at(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:ee(Q({},n.config),{id:new at(n.config.id),fundOwner:""}),currentPrice:new N(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};var v=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(ue)||(o=o.add(Ie)),o}static mulDivFloor(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).add(n.sub(Ie)).div(n)}static x64ToDecimal(e,t){return new N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new D(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(jt).sub(t).mod(jt)}};function de(i,e){return Dn(i.mul(e),64,256)}function as(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Dn(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var W=class{static sqrtPriceX64ToPrice(e,t,n){return v.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return v.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))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(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))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(ue))return e;let o=t.shln(Ct);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?v.mulDivCeil(s,e,a):v.mulDivRoundingUp(s,Ie,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return v.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Ct);if(r)return e.add(o.div(t));{let s=v.mulDivRoundingUp(o,Ie,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<Ae||e>he)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new D("18445821805675395072"):new D("18446744073709551616");return(t&2)!=0&&(n=de(n,new D("18444899583751176192"))),(t&4)!=0&&(n=de(n,new D("18443055278223355904"))),(t&8)!=0&&(n=de(n,new D("18439367220385607680"))),(t&16)!=0&&(n=de(n,new D("18431993317065453568"))),(t&32)!=0&&(n=de(n,new D("18417254355718170624"))),(t&64)!=0&&(n=de(n,new D("18387811781193609216"))),(t&128)!=0&&(n=de(n,new D("18329067761203558400"))),(t&256)!=0&&(n=de(n,new D("18212142134806163456"))),(t&512)!=0&&(n=de(n,new D("17980523815641700352"))),(t&1024)!=0&&(n=de(n,new D("17526086738831433728"))),(t&2048)!=0&&(n=de(n,new D("16651378430235570176"))),(t&4096)!=0&&(n=de(n,new D("15030750278694412288"))),(t&8192)!=0&&(n=de(n,new D("12247334978884435968"))),(t&16384)!=0&&(n=de(n,new D("8131365268886854656"))),(t&32768)!=0&&(n=de(n,new D("3584323654725218816"))),(t&65536)!=0&&(n=de(n,new D("696457651848324352"))),(t&131072)!=0&&(n=de(n,new D("26294789957507116"))),(t&262144)!=0&&(n=de(n,new D("37481735321082"))),e>0&&(n=Ei.div(n)),n}static getTickFromPrice(e,t,n){return W.getTickFromSqrtPriceX64(W.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(je)||e.lt(Ze))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new D(t-64),r=as(n,32,128),o=new D("8000000000000000","hex"),s=0,a=new D(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new D(0))&&s<Fi;){u=u.mul(u);let b=u.shrn(127);u=u.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new D(Wi)),p=Dn(m.sub(new D(vi)),64,128).toNumber(),d=Dn(m.add(new D(Vi)),64,128).toNumber();return p==d?p:W.getSqrtPriceX64FromTick(d).lte(e)?d:p}},pt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=W.getTickFromSqrtPriceX64(W.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=pt.getTickWithPriceAndTickspacing(e,t,n,r),s=W.getSqrtPriceX64FromTick(o);return W.sqrtPriceX64ToPrice(s,n,r)}},U=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(ue))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Ct),s=t.sub(e);return r?v.mulDivRoundingUp(v.mulDivCeil(o,s,t),Ie,e):v.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ue))throw new Error("sqrtPriceX64A must greater than 0");return r?v.mulDivCeil(n,t.sub(e),Se):v.mulDivFloor(n,t.sub(e),Se)}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?v.mulDivRoundingUp(a,Ie,Rn):a.shrn(Ct)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),v.mulDivFloor(n,Rn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,r,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new D(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,r,o),a=U.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new D(0),amountB:U.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=U.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new D(new N(u.toString()).mul(l).toFixed(0)),p=new D(new N(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,A,x,h;let c=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=W.getSqrtPriceX64FromTick(t),m=W.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=U.getAmountsFromLiquidity(c,l,m,r,s),[b,f]=[le(d.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),le(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[g,k]=[le(new D(new N(d.amountA.toString()).mul(p).toFixed(0)),(x=e.mintA.extensions)==null?void 0:x.feeConfig,a,u),le(new D(new N(d.amountB.toString()).mul(p).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,u)];return{liquidity:r,amountA:b,amountB:f,amountSlippageA:g,amountSlippageB:k,expirationTime:lt(b.expirationTime,f.expirationTime)}}},ft=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,p,d,b){if(p.eq(ue))throw new Error("amountSpecified must not be 0");if(b||(b=s?Ze.add(Ie):je.sub(Ie)),s){if(b.lt(Ze))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(je))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(ue),g={amountSpecifiedRemaining:p,amountCalculated:ue,sqrtPriceX64:m,tick:c>d?Math.min(d+G.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new D(0)},k=d,P=n[d],A=0,x=!s&&P.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(ue)&&!g.sqrtPriceX64.eq(b);){if(A>10)throw Error("liquidity limit");let h={};h.sqrtPriceStartX64=g.sqrtPriceX64;let L=S.nextInitTick(P,g.tick,l,s,x),E=L||null,_=null;if(!(E!=null&&E.liquidityGross.gtn(0))){let X=Pe.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},k,s);if(!X.isExist)throw Error("swapCompute LiquidityInsufficient");k=X.nextStartIndex;let{publicKey:Z}=Y(e,t,k);_=Z,P=n[k],E=S.firstInitializedTick(P,s)}h.tickNext=E.tick,h.initialized=E.liquidityGross.gtn(0),d!==k&&_&&(g.accounts.push(_),d=k),h.tickNext<Ae?h.tickNext=Ae:h.tickNext>he&&(h.tickNext=he),h.sqrtPriceNextX64=W.getSqrtPriceX64FromTick(h.tickNext);let $;if(s&&h.sqrtPriceNextX64.lt(b)||!s&&h.sqrtPriceNextX64.gt(b)?$=b:$=h.sqrtPriceNextX64,[g.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=ft.swapStepCompute(g.sqrtPriceX64,$,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(h.feeAmount),f?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),g.amountCalculated=g.amountCalculated.sub(h.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(h.amountOut),g.amountCalculated=g.amountCalculated.add(h.amountIn.add(h.feeAmount))),g.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let X=E.liquidityNet;s&&(X=X.mul(Ye)),g.liquidity=U.addDelta(g.liquidity,X)}x=h.tickNext!=g.tick&&!s&&P.startTickIndex===h.tickNext,g.tick=s?h.tickNext-1:h.tickNext}else if(g.sqrtPriceX64!=h.sqrtPriceStartX64){let X=W.getTickFromSqrtPriceX64(g.sqrtPriceX64);x=X!=g.tick&&!s&&P.startTickIndex===X,g.tick=X}++A}try{let{nextStartIndex:h,isExist:L}=G.nextInitializedTickArray(g.tick,l,s,r,o);L&&d!==h&&(g.accounts.push(Y(e,t,h).publicKey),d=h)}catch{}return{amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new D(0),amountIn:new D(0),amountOut:new D(0),feeAmount:new D(0)},a=e.gte(t),u=r.gte(ue);if(u){let l=v.mulDivFloor(r,Jt.sub(new D(o.toString())),Jt);s.amountIn=a?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Ye).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromOutput(e,n,r.mul(Ye),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=U.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=U.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:U.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:U.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Ye))&&(s.amountOut=r.mul(Ye)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=v.mulDivCeil(s.amountIn,new D(o),Jt.sub(new D(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};import{TOKEN_PROGRAM_ID as ge,TOKEN_2022_PROGRAM_ID as ut,ASSOCIATED_TOKEN_PROGRAM_ID as Hi}from"@solana/spl-token";import{PublicKey as T,TransactionInstruction as Ve,SystemProgram as Pt,Keypair as _n}from"@solana/web3.js";import Qi from"bn.js";var Yi=se("Raydium_Clmm"),De={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]},Ot=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b){let f=F([O("sqrtPriceX64"),y("startTime")]),g=[{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:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Pt.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],k=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:b},k);let P=Buffer.from([...De.createPool,...k]);return new Ve({keys:g,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ln({fromPublicKey:r,programId:n}),[p,d]=[new T(o.address),new T(s.address)],b=[Pt.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Wn.span),space:Wn.span,programId:n})],{publicKey:f}=Gi(n,a,p,d),{publicKey:g}=En(n,f,p),{publicKey:k}=En(n,f,d);return b.push(this.createPoolInstruction(n,f,r,a,m.publicKey,p,g,new T(o.programId||ge),d,k,new T(s.programId||ge),Le(n,f).publicKey,u,c)),{signers:[],instructions:b,instructionTypes:[re.CreateAccount,re.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:g,mintBVault:k},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,P,A,x,h,L,E,_,$,X){let Z=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),O("liquidity"),y("amountMaxA"),y("amountMaxB"),Ue("withMetadata"),q("optionBaseFlag"),Ue("baseFlag")]),Me=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:Pt.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Hi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Me],Te=Buffer.alloc(Z.span);Z.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:h,liquidity:L,amountMaxA:E,amountMaxB:_,withMetadata:$==="create",baseFlag:!1,optionBaseFlag:0},Te);let ie=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:ie})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=_n.generate();m.push(_),b=_.publicKey}let f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Y(p,d,f),{publicKey:P}=Y(p,d,g),{publicKey:A}=Ge(n.wallet,b,ge),{publicKey:x}=en(b),{publicKey:h}=ve(p,b),{publicKey:L}=mt(p,d,r,o),E=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,b,A,x,L,k,P,h,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,g,s,a,u,c);return{signers:m,instructions:[E],instructionTypes:[re.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:k,tickArrayUpper:P,positionNftAccount:A,metadataAccount:x,personalPosition:h,protocolPosition:L}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=_n.generate();m.push(_),b=_.publicKey}let f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Y(p,d,f),{publicKey:P}=Y(p,d,g),{publicKey:A}=Ge(n.wallet,b,ge),{publicKey:x}=en(b),{publicKey:h}=ve(p,b),{publicKey:L}=mt(p,d,r,o),E=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,b,A,x,L,k,P,h,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,g,c,s,a,u,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Le(p,d).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:k,tickArrayUpper:P,positionNftAccount:A,metadataAccount:x,personalPosition:h,protocolPosition:L},instructions:[E],signers:m,instructionTypes:[re.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,P,A,x,h,L,E,_,$,X){let Z=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),O("liquidity"),y("amountMaxA"),y("amountMaxB"),Ue("withMetadata"),q("optionBaseFlag"),Ue("baseFlag")]),Me=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:Pt.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Hi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Me],Te=Buffer.alloc(Z.span);Z.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:h,liquidity:new Qi(0),amountMaxA:E==="MintA"?_:$,amountMaxB:E==="MintA"?$:_,withMetadata:L==="create",baseFlag:E==="MintA",optionBaseFlag:1},Te);let ie=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:ie})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,p=[];if(l)m=new T((await l(1))[0]);else{let _=_n.generate();p.push(_),m=_.publicKey}let[d,b]=[new T(e.programId),new T(e.id)],f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Y(d,b,f),{publicKey:P}=Y(d,b,g),{publicKey:A}=Ge(n.wallet,m,ge),{publicKey:x}=en(m),{publicKey:h}=ve(d,m),{publicKey:L}=mt(d,b,r,o),E=this.openPositionFromLiquidityInstruction(d,n.wallet,b,n.wallet,m,A,x,L,k,P,h,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(t.mintA.address),new T(t.mintB.address),r,o,f,g,s,a,u,c,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?Le(d,b).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:k,tickArrayUpper:P,positionNftAccount:A,metadataAccount:x,personalPosition:h,protocolPosition:L},instructions:[E],signers:p,instructionTypes:[re.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=F([]),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:Pt.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...De.closePosition,...u]);return new Ve({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new T(e.programId),{publicKey:s}=Ge(n.wallet,r.nftMint,ge),{publicKey:a}=ve(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[re.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,P){let A=F([O("liquidity"),y("amountMaxA"),y("amountMaxB"),q("optionBaseFlag"),Ue("baseFlag")]),x=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:g,amountMaxB:k,optionBaseFlag:0,baseFlag:!1},L);let E=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:h,programId:e,data:E})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Y(u,c,l),{publicKey:d}=Y(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=ve(u,n.nftMint),{publicKey:g}=mt(u,c,n.tickLower,n.tickUpper),k=this.increasePositionFromLiquidityInstruction(u,r.wallet,b,f,c,g,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Le(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:g},signers:[],instructions:[k],instructionTypes:[re.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Y(u,c,l),{publicKey:d}=Y(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=ve(u,n.nftMint),{publicKey:g}=mt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,b,f,c,g,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Le(u,c).publicKey:void 0)],signers:[],instructionTypes:[re.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,P){let A=F([O("liquidity"),y("amountMaxA"),y("amountMaxB"),q("optionBaseFlag"),Ue("baseFlag")]),x=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],h=[{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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(A.span);A.encode({liquidity:new Qi(0),amountMaxA:f==="MintA"?g:k,amountMaxB:f==="MintA"?k:g,baseFlag:f==="MintA",optionBaseFlag:1},L);let E=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:h,programId:e,data:E})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k,P,A){let x=F([O("liquidity"),y("amountMinA"),y("amountMinB")]),h=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map($=>[{pubkey:$.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:$.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:$.rewardMint,isSigner:!1,isWritable:!1}]).flat()],L=[{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:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...h],E=Buffer.alloc(x.span);x.encode({liquidity:g,amountMinA:k,amountMinB:P},E);let _=Buffer.from([...De.decreaseLiquidity,...E]);return new Ve({keys:L,programId:e,data:_})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new T(e.programId),new T(e.id)],m=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Y(c,l,m),{publicKey:b}=Y(c,l,p),{publicKey:f}=Ge(r.wallet,n.nftMint,u),{publicKey:g}=ve(c,n.nftMint),{publicKey:k}=mt(c,l,n.tickLower,n.tickUpper),P=[];for(let x=0;x<e.rewardDefaultInfos.length;x++)P.push({poolRewardVault:new T(t.rewardInfos[x].vault),ownerRewardVault:r.rewardAccounts[x],rewardMint:new T(e.rewardDefaultInfos[x].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,g,l,k,d,b,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),P,o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?Le(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:b,positionNftAccount:f,personalPosition:g,protocolPosition:k},signers:[],instructions:A,instructionTypes:[re.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,g,k){let P=F([y("amount"),y("otherAmountThreshold"),O("sqrtPriceLimitX64"),Ue("isBaseInput")]),A=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...m.map(E=>({pubkey:E,isSigner:!1,isWritable:!0}))],x=[{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:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],h=Buffer.alloc(P.span);P.encode({amount:d,otherAmountThreshold:b,sqrtPriceLimitX64:f,isBaseInput:g},h);let L=Buffer.from([...De.swap,...h]);return new Ve({keys:x,programId:e,data:L})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:r,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new T(e.programId),new T(e.id)],[m,p]=[new T(t.vault.A),new T(t.vault.B)],[d,b]=[new T(e.mintA.address),new T(e.mintB.address)],f=e.mintA.address===r.toString(),g=[this.swapInstruction(c,n.wallet,l,new T(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:p,f?p:m,f?d:b,f?b:d,u,m,o,s,a,!0,Le(c,l).publicKey)];return{signers:[],instructions:g,instructionTypes:[re.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([y("openTime"),y("endTime"),O("emissionsPerSecondX64")]),b=[{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:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Pt.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:ne(l),endTime:ne(m),emissionsPerSecondX64:p},f);let g=Buffer.from([...De.initReward,...f]);return new Ve({keys:b,programId:e,data:g})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a=Ui(o,s,r.mint).publicKey,u=tn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new T(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[re.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([q("rewardIndex"),O("emissionsPerSecondX64"),y("openTime"),y("endTime")]),b=[{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:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:ne(l),endTime:ne(m)},f);let g=Buffer.from([...De.setRewardEmissions,...f]);return new Ve({keys:b,programId:e,data:g})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===r.mint.toString()&&(a=p,u=new T(t.rewardInfos[p].vault),c=new T(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&Yi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=tn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new T(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[re.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=F([q("rewardIndex")]),c=[{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:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...De.collectReward,...l]);return new Ve({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new T(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Yi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[re.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new T(e.programId),new T(e.id)],[m,p]=[new T(t.vault.A),new T(t.vault.B)],[d,b]=[new T(e.mintA.address),new T(e.mintB.address)],f=e.mintA.address===r.toString(),g=[this.swapInstruction(c,n.wallet,l,new T(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:b,f?b:d,u,m,o,s,a,!1)];return{signers:[],instructions:g,instructionTypes:[re.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import yf from"bn.js";import{TOKEN_PROGRAM_ID as fs,ASSOCIATED_TOKEN_PROGRAM_ID as tb}from"@solana/spl-token";import{PublicKey as ib,TransactionInstruction as ji,SystemProgram as bs,SYSVAR_RENT_PUBKEY as rb}from"@solana/web3.js";var qn=F([q("instruction"),y("amountIn"),y("minAmountOut")]),Gn=F([q("instruction"),y("maxAmountIn"),y("amountOut")]),Uf=F([q("instruction"),q("nonce")]),us=F([q("instruction"),q("nonce"),y("startTime")]),Xf=F([y("status"),y("nonce"),y("maxOrder"),y("depth"),y("baseDecimal"),y("quoteDecimal"),y("state"),y("resetFlag"),y("minSize"),y("volMaxCutRatio"),y("amountWaveRatio"),y("baseLotSize"),y("quoteLotSize"),y("minPriceMultiplier"),y("maxPriceMultiplier"),y("systemDecimalValue"),y("minSeparateNumerator"),y("minSeparateDenominator"),y("tradeFeeNumerator"),y("tradeFeeDenominator"),y("pnlNumerator"),y("pnlDenominator"),y("swapFeeNumerator"),y("swapFeeDenominator"),y("baseNeedTakePnl"),y("quoteNeedTakePnl"),y("quoteTotalPnl"),y("baseTotalPnl"),y("poolOpenTime"),y("punishPcAmount"),y("punishCoinAmount"),y("orderbookToInitTime"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),y("swapBase2QuoteFee"),O("swapQuoteInAmount"),O("swapBaseOutAmount"),y("swapQuote2BaseFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("withdrawQueue"),R("lpVault"),R("owner"),y("lpReserve"),J(y(),3,"padding")]),zf=F([y("accountType"),y("status"),y("nonce"),y("maxOrder"),y("depth"),y("baseDecimal"),y("quoteDecimal"),y("state"),y("resetFlag"),y("minSize"),y("volMaxCutRatio"),y("amountWaveRatio"),y("baseLotSize"),y("quoteLotSize"),y("minPriceMultiplier"),y("maxPriceMultiplier"),y("systemDecimalsValue"),y("abortTradeFactor"),y("priceTickMultiplier"),y("priceTick"),y("minSeparateNumerator"),y("minSeparateDenominator"),y("tradeFeeNumerator"),y("tradeFeeDenominator"),y("pnlNumerator"),y("pnlDenominator"),y("swapFeeNumerator"),y("swapFeeDenominator"),y("baseNeedTakePnl"),y("quoteNeedTakePnl"),y("quoteTotalPnl"),y("baseTotalPnl"),y("poolOpenTime"),y("punishPcAmount"),y("punishCoinAmount"),y("orderbookToInitTime"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),O("swapQuoteInAmount"),O("swapBaseOutAmount"),y("swapQuote2BaseFee"),y("swapBase2QuoteFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("modelDataAccount"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("owner"),J(y(),64,"padding")]),cs=F([q("instruction"),y("baseAmountIn"),y("quoteAmountIn"),y("fixedSide")]),ls=F([q("instruction"),y("amountIn")]);var Hf=F([y("fee")]);import{PublicKey as ms}from"@solana/web3.js";var Un=new ms("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ds=5e4,ps=F([y("x"),y("y"),y("price")]),Jf=F([y("accountType"),y("status"),y("multiplier"),y("validDataCount"),J(ps,ds,"DataElement")]);var Zi=se("Raydium_liquidity_instruction");function ys({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=ke(i),s=Buffer.alloc(qn.span);qn.encode({instruction:9,amountIn:ne(t),minAmountOut:ne(n)},s);let a=[V({pubkey:fs,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders})];return r===4&&a.push(V({pubkey:o.targetOrders})),a.push(V({pubkey:o.vault.A}),V({pubkey:o.vault.B})),r===5&&a.push(V({pubkey:Un})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1})),new ji({programId:o.programId,keys:a,data:s})}function gs({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=ke(i),s=Buffer.alloc(Gn.span);Gn.encode({instruction:11,maxAmountIn:ne(t),amountOut:ne(n)},s);let a=[V({pubkey:bs.programId,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders}),V({pubkey:o.targetOrders}),V({pubkey:o.vault.A}),V({pubkey:o.vault.B})];return r===5&&a.push(V({pubkey:Un})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1,isSigner:!0})),new ji({programId:o.programId,keys:a,data:s})}function Ji(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return ys(ee(Q({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return gs(ee(Q({},a),{maxAmountIn:r,amountOut:o}),t);Zi.logWithError("invalid params","params",i)}throw Zi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function hb(i,e,t,n,r,o,s,a,u,c,l,m){let p=F([q("instruction"),y("amountIn"),y("amountOut")]),d=[{pubkey:er.programId,isSigner:!1,isWritable:!1},{pubkey:Hn,isSigner:!1,isWritable:!1},{pubkey:new Re(t.programId),isSigner:!1,isWritable:!1},{pubkey:new Re(t.id),isSigner:!1,isWritable:!0},{pubkey:new Re(n.id),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=ke(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(g=>({pubkey:g,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let b=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},b),new Qn({keys:d,programId:i,data:b})}function Tb(i,e,t,n,r,o,s,a,u,c){let l=F([q("instruction")]),m=[{pubkey:er.programId,isSigner:!1,isWritable:!1},{pubkey:Hn,isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new Re(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=ke(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Qn({keys:m,programId:i,data:p})}function $i(i,e,t,n,r,o){if(i.pooltype.includes("StablePool")){let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(i.type==="Concentrated"){let s=i,a=ke(e),u=s.mintA.address===t;return[{pubkey:new Re(String(i.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Xn)||a.mintB.programId.equals(Xn)?[{pubkey:Xn,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:Le(new Re(String(i.programId)),new Re(i.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function ws(i,e,t,n,r,o,s,a,u,c,l,m,p,d){let b=F([q("instruction"),y("amountIn"),y("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:Hn,isSigner:!1,isWritable:!1}];f.push(...$i(a,c,o,t,n,d[0])),f.push(...$i(u,l,s,n,r,d[1]));let g=Buffer.alloc(b.span);return b.encode({instruction:8,amountIn:m,amountOut:p},g),new Qn({keys:f,programId:i,data:g})}async function xb({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=ke(n.poolKey[0]),m=t.equals(l.mintA.address)?Ze.add(Ie):je.sub(Ie);return await Ot.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?o:new zn(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[Ji({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new zn(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?re.AmmV5SwapBaseIn:re.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[ws(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new zn(0)),n.remainingAccounts)],instructionTypes:[re.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(b=>b!==void 0),address:{}}}else throw Error("route type error")}export{xb as makeSwapInstruction,hb as route1Instruction,Tb as route2Instruction,ws as routeInstruction};
|
|
2
2
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|