@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
3 lines • 212 kB
JavaScript
var Ts=Object.defineProperty,xs=Object.defineProperties;var Ss=Object.getOwnPropertyDescriptors;var _n=Object.getOwnPropertySymbols;var Ni=Object.prototype.hasOwnProperty,Ci=Object.prototype.propertyIsEnumerable;var Ri=(r,e,t)=>e in r?Ts(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,G=(r,e)=>{for(var t in e||(e={}))Ni.call(e,t)&&Ri(r,t,e[t]);if(_n)for(var t of _n(e))Ci.call(e,t)&&Ri(r,t,e[t]);return r},te=(r,e)=>xs(r,Ss(e));var Ye=(r,e)=>{var t={};for(var n in r)Ni.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&_n)for(var n of _n(r))e.indexOf(n)<0&&Ci.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as Ae}from"@solana/web3.js";import{AccountLayout as Rc,NATIVE_MINT as gr,TOKEN_PROGRAM_ID as Ct}from"@solana/spl-token";import{PublicKey as $a}from"@solana/web3.js";import bt from"bn.js";var Jt=9e15,St=1e9,kr="0123456789abcdef",Vn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Wn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",hr={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Jt,maxE:Jt,crypto:!1},Ei,pt,j=!0,On="[DecimalError] ",xt=On+"Invalid argument: ",Vi=On+"Precision limit exceeded",Wi=On+"crypto unavailable",Fi="[object Decimal]",ve=Math.floor,Ie=Math.pow,Is=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Bs=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ks=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Oi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,tt=1e7,H=7,Ls=9007199254740991,Rs=Vn.length-1,Pr=Wn.length-1,K={toStringTag:Fi};K.absoluteValue=K.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),q(r)};K.ceil=function(){return q(new this.constructor(this),this.e+1,2)};K.clampedTo=K.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(xt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};K.comparedTo=K.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};K.cosine=K.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+H,n.rounding=1,t=Ns(n,Xi(n,t)),n.precision=r,n.rounding=e,q(pt==2||pt==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};K.cubeRoot=K.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(j=!1,o=l.s*Ie(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Re(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Ie(t,1/3),r=ve((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=le(c.plus(l).times(a),c.plus(u),s+2,1),Re(a.d).slice(0,s)===(t=Re(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(q(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(q(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return j=!0,q(n,r,m.rounding,e)};K.decimalPlaces=K.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-ve(this.e/H))*H,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};K.dividedBy=K.div=function(r){return le(this,new this.constructor(r))};K.dividedToIntegerBy=K.divToInt=function(r){var e=this,t=e.constructor;return q(le(e,new t(r),0,1,1),t.precision,t.rounding)};K.equals=K.eq=function(r){return this.cmp(r)===0};K.floor=function(){return q(new this.constructor(this),this.e+1,3)};K.greaterThan=K.gt=function(r){return this.cmp(r)>0};K.greaterThanOrEqualTo=K.gte=function(r){var e=this.cmp(r);return e==1||e===0};K.hyperbolicCosine=K.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/qn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=en(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return q(o,s.precision=t,s.rounding=n,!0)};K.hyperbolicSine=K.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=en(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/qn(5,r)),i=en(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,q(i,e,t,!0)};K.hyperbolicTangent=K.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,le(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};K.inverseCosine=K.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?et(t,i,o):new t(0):new t(NaN):e.isZero()?et(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=et(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};K.inverseHyperbolicCosine=K.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,j=!1,t=t.times(t).minus(1).sqrt().plus(t),j=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};K.inverseHyperbolicSine=K.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,j=!1,t=t.times(t).plus(1).sqrt().plus(t),j=!0,n.precision=r,n.rounding=e,t.ln())};K.inverseHyperbolicTangent=K.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?q(new o(i),r,e,!0):(o.precision=t=n-i.e,i=le(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};K.inverseSine=K.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=et(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};K.inverseTangent=K.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Pr)return s=et(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Pr)return s=et(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/H+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(j=!1,e=Math.ceil(a/H),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),j=!0,q(s,l.precision=m,l.rounding=d,!0)};K.isFinite=function(){return!!this.d};K.isInteger=K.isInt=function(){return!!this.d&&ve(this.e/H)>this.d.length-2};K.isNaN=function(){return!this.s};K.isNegative=K.isNeg=function(){return this.s<0};K.isPositive=K.isPos=function(){return this.s>0};K.isZero=function(){return!!this.d&&this.d[0]===0};K.lessThan=K.lt=function(r){return this.cmp(r)<0};K.lessThanOrEqualTo=K.lte=function(r){return this.cmp(r)<1};K.logarithm=K.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=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(i=t[0];i%10===0;)i/=10;o=i!==1}if(j=!1,a=m+p,s=Tt(c,a),n=e?Fn(l,a+10):Tt(r,a),u=le(s,n,a,1),bn(u.d,i=m,d))do if(a+=10,s=Tt(c,a),n=e?Fn(l,a+10):Tt(r,a),u=le(s,n,a,1),!o){+Re(u.d).slice(i+1,i+15)+1==1e14&&(u=q(u,m+1,0));break}while(bn(u.d,i+=10,d));return j=!0,q(u,m,d)};K.minus=K.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,f=p.constructor;if(r=new f(r),!p.d||!r.d)return!p.s||!r.s?r=new f(NaN):p.d?r.s=-r.s:r=new f(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=f.precision,u=f.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new f(p);else return new f(u===3?-0:0);return j?q(r,a,u):r}if(t=ve(r.e/H),l=ve(p.e/H),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/H),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=tt-1;--c[i],c[n]+=tt}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Dn(c,t),j?q(r,a,u):r):new f(u===3?-0:0)};K.modulo=K.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?q(new n(t),n.precision,n.rounding):(j=!1,n.modulo==9?(e=le(t,r.abs(),0,3,1),e.s*=r.s):e=le(t,r,0,n.modulo,1),e=e.times(r),j=!0,t.minus(e))};K.naturalExponential=K.exp=function(){return Ar(this)};K.naturalLogarithm=K.ln=function(){return Tt(this)};K.negated=K.neg=function(){var r=new this.constructor(this);return r.s=-r.s,q(r)};K.plus=K.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),j?q(r,a,u):r;if(o=ve(m.e/H),n=ve(r.e/H),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/H),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/tt|0,c[i]%=tt;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Dn(c,n),j?q(r,a,u):r};K.precision=K.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(xt+r);return t.d?(e=Di(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};K.round=function(){var r=this,e=r.constructor;return q(new e(r),r.e+1,e.rounding)};K.sine=K.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+H,n.rounding=1,t=Ms(n,Xi(n,t)),n.precision=r,n.rounding=e,q(pt>2?t.neg():t,r,e,!0)):new n(NaN)};K.squareRoot=K.sqrt=function(){var r,e,t,n,i,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(j=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Re(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=ve((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(le(s,o,t+2,1)).times(.5),Re(o.d).slice(0,t)===(e=Re(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(q(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(q(n,u+1,1),r=!n.times(n).eq(s));break}return j=!0,q(n,u,l.rounding,r)};K.tangent=K.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=le(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,q(pt==2||pt==4?t.neg():t,r,e,!0)):new n(NaN)};K.times=K.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=ve(l.e/H)+ve(r.e/H),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*d[i-n-1]+e,o[i--]=a%tt|0,e=a/tt|0;o[i]=(o[i]+e)%tt|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Dn(o,t),j?q(r,m.precision,m.rounding):r};K.toBinary=function(r,e){return xr(this,2,r,e)};K.toDecimalPlaces=K.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Ge(r,0,St),e===void 0?e=n.rounding:Ge(e,0,8),q(t,r+t.e+1,e))};K.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=at(n,!0):(Ge(r,0,St),e===void 0?e=i.rounding:Ge(e,0,8),n=q(new i(n),r+1,e),t=at(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};K.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=at(i):(Ge(r,0,St),e===void 0?e=o.rounding:Ge(e,0,8),n=q(new o(i),r+i.e+1,e),t=at(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};K.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,f=p.d,b=p.constructor;if(!f)return new b(p);if(c=t=new b(1),n=u=new b(0),e=new b(n),o=e.e=Di(f)-p.e-1,s=o%H,e.d[0]=Ie(10,s<0?H+s:s),r==null)r=o>0?e:c;else{if(a=new b(r),!a.isInt()||a.lt(c))throw Error(xt+a);r=a.gt(e)?o>0?e:c:a}for(j=!1,a=new b(Re(f)),l=b.precision,b.precision=o=f.length*H*2;m=le(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=le(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=le(c,n,o,1).minus(p).abs().cmp(le(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],b.precision=l,j=!0,d};K.toHexadecimal=K.toHex=function(r,e){return xr(this,16,r,e)};K.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:Ge(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(j=!1,t=le(t,r,0,e,1).times(r),j=!0,q(t)):(r.s=t.s,t=r),t};K.toNumber=function(){return+this};K.toOctal=function(r,e){return xr(this,8,r,e)};K.toPower=K.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Ie(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return q(a,n,o);if(e=ve(r.e/H),e>=r.d.length-1&&(t=c<0?-c:c)<=Ls)return i=qi(u,a,t,n),r.s<0?new u(1).div(i):q(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Ie(+a,c),e=t==0||!isFinite(t)?ve(c*(Math.log("0."+Re(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):(j=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Ar(r.times(Tt(a,n+t)),n),i.d&&(i=q(i,n+5,1),bn(i.d,n,o)&&(e=n+10,i=q(Ar(r.times(Tt(a,e+t)),e),e+5,1),+Re(i.d).slice(n+1,n+15)+1==1e14&&(i=q(i,n+1,0)))),i.s=s,j=!0,u.rounding=o,q(i,n,o))};K.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=at(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ge(r,1,St),e===void 0?e=i.rounding:Ge(e,0,8),n=q(new i(n),r,e),t=at(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};K.toSignificantDigits=K.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Ge(r,1,St),e===void 0?e=n.rounding:Ge(e,0,8)),q(new n(t),r,e)};K.toString=function(){var r=this,e=r.constructor,t=at(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};K.truncated=K.trunc=function(){return q(new this.constructor(this),this.e+1,1)};K.valueOf=K.toJSON=function(){var r=this,e=r.constructor,t=at(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Re(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=H-n.length,t&&(o+=At(t)),o+=n;s=r[e],n=s+"",t=H-n.length,t&&(o+=At(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ge(r,e,t){if(r!==~~r||r<e||r>t)throw Error(xt+r)}function bn(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=H,i=0):(i=Math.ceil((e+1)/H),e%=H),o=Ie(10,H-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Ie(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Ie(10,e-3)-1,s}function En(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=kr.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function Ns(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/qn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=en(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var le=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,f,b,w,g,h,P,T,A,k,S,I,L,x,M,W,_=n.constructor,X=n.s==i.s?1:-1,Z=n.d,D=i.d;if(!Z||!Z[0]||!D||!D[0])return new _(!n.s||!i.s||(Z?D&&Z[0]==D[0]:!D)?NaN:Z&&Z[0]==0||!D?X*0:X/0);for(u?(p=1,l=n.e-i.e):(u=tt,p=H,l=ve(n.e/p)-ve(i.e/p)),M=D.length,L=Z.length,g=new _(X),h=g.d=[],m=0;D[m]==(Z[m]||0);m++);if(D[m]>(Z[m]||0)&&l--,o==null?(k=o=_.precision,s=_.rounding):a?k=o+(n.e-i.e)+1:k=o,k<0)h.push(1),f=!0;else{if(k=k/p+2|0,m=0,M==1){for(d=0,D=D[0],k++;(m<L||d)&&k--;m++)S=d*u+(Z[m]||0),h[m]=S/D|0,d=S%D|0;f=d||m<L}else{for(d=u/(D[0]+1)|0,d>1&&(D=r(D,d,u),Z=r(Z,d,u),M=D.length,L=Z.length),I=M,P=Z.slice(0,M),T=P.length;T<M;)P[T++]=0;W=D.slice(),W.unshift(0),x=D[0],D[1]>=u/2&&++x;do d=0,c=e(D,P,M,T),c<0?(A=P[0],M!=T&&(A=A*u+(P[1]||0)),d=A/x|0,d>1?(d>=u&&(d=u-1),b=r(D,d,u),w=b.length,T=P.length,c=e(b,P,w,T),c==1&&(d--,t(b,M<w?W:D,w,u))):(d==0&&(c=d=1),b=D.slice()),w=b.length,w<T&&b.unshift(0),t(P,b,T,u),c==-1&&(T=P.length,c=e(D,P,M,T),c<1&&(d++,t(P,M<T?W:D,T,u))),T=P.length):c===0&&(d++,P=[0]),h[m++]=d,c&&P[0]?P[T++]=Z[I]||0:(P=[Z[I]],T=1);while((I++<L||P[0]!==void 0)&&k--);f=P[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,Ei=f;else{for(m=1,d=h[0];d>=10;d/=10)m++;g.e=m+l*p-1,q(g,a?o+g.e+1:o,s,f)}return g}}();function q(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=H,s=e,l=m[d=0],u=l/Ie(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/H),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=H,s=o-H+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=H,s=o-H+i,u=s<0?0:l/Ie(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Ie(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Ie(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Ie(10,(H-e%H)%H),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Ie(10,H-o),m[d]=s>0?(l/Ie(10,i-s)%Ie(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==tt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=tt)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return j&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function at(r,e,t){if(!r.isFinite())return Ui(r);var n,i=r.e,o=Re(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+At(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+At(-i-1)+o,t&&(n=t-s)>0&&(o+=At(n))):i>=s?(o+=At(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+At(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=At(n))),o}function Dn(r,e){var t=r[0];for(e*=H;t>=10;t/=10)e++;return e}function Fn(r,e,t){if(e>Rs)throw j=!0,t&&(r.precision=t),Error(Vi);return q(new r(Vn),e,1,!0)}function et(r,e,t){if(e>Pr)throw Error(Vi);return q(new r(Wn),e,t,!0)}function Di(r){var e=r.length-1,t=e*H+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function At(r){for(var e="";r--;)e+="0";return e}function qi(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/H+4);for(j=!1;;){if(t%2&&(o=o.times(e),vi(o.d,s)&&(i=!0)),t=ve(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),vi(e.d,s)}return j=!0,o}function Mi(r){return r.d[r.d.length-1]&1}function Gi(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Ar(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,f=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(j=!1,u=f):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Ie(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=q(o.times(r),u,1),t=t.times(++l),a=s.plus(le(o,t,u,1)),Re(a.d).slice(0,u)===Re(s.d).slice(0,u)){for(i=m;i--;)s=q(s.times(s),u,1);if(e==null)if(c<3&&bn(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return q(s,d.precision=f,p,j=!0);else return d.precision=f,s}s=a}}function Tt(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=1,f=10,b=r,w=b.d,g=b.constructor,h=g.rounding,P=g.precision;if(b.s<0||!w||!w[0]||!b.e&&w[0]==1&&w.length==1)return new g(w&&!w[0]?-1/0:b.s!=1?NaN:w?0:b);if(e==null?(j=!1,l=P):l=e,g.precision=l+=f,t=Re(w),n=t.charAt(0),Math.abs(o=b.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)b=b.times(r),t=Re(b.d),n=t.charAt(0),p++;o=b.e,n>1?(b=new g("0."+t),o++):b=new g(n+"."+t.slice(1))}else return c=Fn(g,l+2,P).times(o+""),b=Tt(new g(n+"."+t.slice(1)),l-f).plus(c),g.precision=P,e==null?q(b,P,h,j=!0):b;for(m=b,u=s=b=le(b.minus(1),b.plus(1),l,1),d=q(b.times(b),l,1),i=3;;){if(s=q(s.times(d),l,1),c=u.plus(le(s,new g(i),l,1)),Re(c.d).slice(0,l)===Re(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Fn(g,l+2,P).times(o+""))),u=le(u,new g(p),l,1),e==null)if(bn(u.d,l-f,h,a))g.precision=l+=f,c=s=b=le(m.minus(1),m.plus(1),l,1),d=q(b.times(b),l,1),i=a=1;else return q(u,g.precision=P,h,j=!0);else return g.precision=P,u;u=c,i+=2}}function Ui(r){return String(r.s*r.s/0)}function Tr(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%H,t<0&&(n+=H),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=H;n<i;)r.d.push(+e.slice(n,n+=H));e=e.slice(n),n=H-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),j&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function Cs(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Oi.test(e))return Tr(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Bs.test(e))t=16,e=e.toLowerCase();else if(Is.test(e))t=2;else if(Ks.test(e))t=8;else throw Error(xt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=qi(n,new n(t),o,o*2)),c=En(e,t,tt),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Dn(c,l),r.d=c,j=!1,s&&(r=le(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Ie(2,u):yn.pow(2,u))),j=!0,r)}function Ms(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:en(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/qn(5,t)),e=en(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function en(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/H);for(j=!1,u=t.times(t),a=new r(n);;){if(s=le(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=le(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return j=!0,s.d.length=m+1,s}function qn(r,e){for(var t=r;--e;)t*=r;return t}function Xi(r,e){var t,n=e.s<0,i=et(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return pt=n?4:1,e;if(t=e.divToInt(i),t.isZero())pt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return pt=Mi(t)?n?2:3:n?4:1,e;pt=Mi(t)?n?1:4:n?3:2}return e.minus(i).abs()}function xr(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,f=t!==void 0;if(f?(Ge(t,1,St),n===void 0?n=p.rounding:Ge(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Ui(r);else{for(l=at(r),s=l.indexOf("."),f?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=En(at(d),10,i),d.e=d.d.length),m=En(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=f?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=le(r,d,t,n,0,i),m=r.d,o=r.e,c=Ei),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-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+=kr.charAt(m[s]);if(f){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=En(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=kr.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 r.s<0?"-"+l:l}function vi(r,e){if(r.length>e)return r.length=e,!0}function vs(r){return new this(r).abs()}function _s(r){return new this(r).acos()}function Es(r){return new this(r).acosh()}function Vs(r,e){return new this(r).plus(e)}function Ws(r){return new this(r).asin()}function Fs(r){return new this(r).asinh()}function Os(r){return new this(r).atan()}function Ds(r){return new this(r).atanh()}function qs(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=et(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?et(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=et(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(le(r,e,o,1)),e=et(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(le(r,e,o,1)),t}function Gs(r){return new this(r).cbrt()}function Us(r){return q(r=new this(r),r.e+1,2)}function Xs(r,e,t){return new this(r).clamp(e,t)}function zs(r){if(!r||typeof r!="object")throw Error(On+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,St,"rounding",0,8,"toExpNeg",-Jt,0,"toExpPos",0,Jt,"maxE",0,Jt,"minE",-Jt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=hr[t]),(n=r[t])!==void 0)if(ve(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(xt+t+": "+n);if(t="crypto",i&&(this[t]=hr[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(Wi);else this[t]=!1;else throw Error(xt+t+": "+n);return this}function Qs(r){return new this(r).cos()}function Hs(r){return new this(r).cosh()}function zi(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,_i(o)){c.s=o.s,j?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;j?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Tr(c,o.toString())}else if(u!=="string")throw Error(xt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Oi.test(o)?Tr(c,o):Cs(c,o)}if(i.prototype=K,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=zs,i.clone=zi,i.isDecimal=_i,i.abs=vs,i.acos=_s,i.acosh=Es,i.add=Vs,i.asin=Ws,i.asinh=Fs,i.atan=Os,i.atanh=Ds,i.atan2=qs,i.cbrt=Gs,i.ceil=Us,i.clamp=Xs,i.cos=Qs,i.cosh=Hs,i.div=Ys,i.exp=Zs,i.floor=js,i.hypot=$s,i.ln=Js,i.log=ea,i.log10=na,i.log2=ta,i.max=ra,i.min=ia,i.mod=oa,i.mul=sa,i.pow=aa,i.random=ua,i.round=ca,i.sign=la,i.sin=ma,i.sinh=da,i.sqrt=pa,i.sub=fa,i.sum=ba,i.tan=ya,i.tanh=ga,i.trunc=wa,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function Ys(r,e){return new this(r).div(e)}function Zs(r){return new this(r).exp()}function js(r){return q(r=new this(r),r.e+1,3)}function $s(){var r,e,t=new this(0);for(j=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return j=!0,new this(1/0);t=e}return j=!0,t.sqrt()}function _i(r){return r instanceof yn||r&&r.toStringTag===Fi||!1}function Js(r){return new this(r).ln()}function ea(r,e){return new this(r).log(e)}function ta(r){return new this(r).log(2)}function na(r){return new this(r).log(10)}function ra(){return Gi(this,arguments,"lt")}function ia(){return Gi(this,arguments,"gt")}function oa(r,e){return new this(r).mod(e)}function sa(r,e){return new this(r).mul(e)}function aa(r,e){return new this(r).pow(e)}function ua(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Ge(r,1,St),n=Math.ceil(r/H),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(Wi);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=H,n&&r&&(i=Ie(10,H-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=H)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<H&&(t-=H-n)}return s.e=t,s.d=a,s}function ca(r){return q(r=new this(r),r.e+1,this.rounding)}function la(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function ma(r){return new this(r).sin()}function da(r){return new this(r).sinh()}function pa(r){return new this(r).sqrt()}function fa(r,e){return new this(r).sub(e)}function ba(){var r=0,e=arguments,t=new this(e[r]);for(j=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return j=!0,q(t,this.precision,this.rounding)}function ya(r){return new this(r).tan()}function ga(r){return new this(r).tanh()}function wa(r){return q(r=new this(r),r.e+1,1)}K[Symbol.for("nodejs.util.inspect.custom")]=K.toString;K[Symbol.toStringTag]="Decimal";var yn=K.constructor=zi(hr);Vn=new yn(Vn);Wn=new yn(Wn);var N=yn;import Ka from"big.js";import Xn from"bn.js";import{get as Qi,set as ka}from"lodash";var Sr=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Hi={},ha={};function ue(r){let e=Qi(Hi,r);if(!e){let t=Qi(ha,r);e=new Sr({name:r,logLevel:t}),ka(Hi,r,e)}return e}import Pa from"toformat";var Aa=Pa,gn=Aa;import Un from"big.js";import xa from"bn.js";import Sa from"decimal.js-light";import wn from"bn.js";var Yi=9007199254740991;function ne(r){let e=ue("Raydium_parseBigNumberish");if(r instanceof wn)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new wn(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Yi||r<=-Yi)&&e.logWithError(`BigNumberish number overflow: ${r}`),new wn(String(r))):typeof r=="bigint"?new wn(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new wn(0))}var Gn=ue("module/fraction"),Ir=gn(Un),kn=gn(Sa),Ia={[0]:kn.ROUND_DOWN,[1]:kn.ROUND_HALF_UP,[2]:kn.ROUND_UP},Ba={[0]:Un.roundDown,[1]:Un.roundHalfUp,[2]:Un.roundUp},oe=class{constructor(e,t=new xa(1)){this.numerator=ne(e),this.denominator=ne(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new oe(this.denominator,this.numerator)}add(e){let t=e instanceof oe?e:new oe(ne(e));return this.denominator.eq(t.denominator)?new oe(this.numerator.add(t.numerator),this.denominator):new oe(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof oe?e:new oe(ne(e));return this.denominator.eq(t.denominator)?new oe(this.numerator.sub(t.numerator),this.denominator):new oe(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof oe?e:new oe(ne(e));return new oe(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof oe?e:new oe(ne(e));return new oe(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Gn.logWithError(`${e} is not an integer.`),e<=0&&Gn.logWithError(`${e} is not positive.`),kn.set({precision:e+1,rounding:Ia[n]});let i=new kn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Gn.logWithError(`${e} is not an integer.`),e<0&&Gn.logWithError(`${e} is negative.`),Ir.DP=e,Ir.RM=Ba[n]||1,new Ir(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var La=ue("Raydium_amount"),Zi=gn(Ka);function Ra(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):La.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var ke=class extends oe{constructor(t,n,i=!0,o){let s=new Xn(0),a=Br.pow(new Xn(t.decimals));if(i)s=ne(n);else{let u=new Xn(0),c=new Xn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Ra(n.toString(),t.decimals);u=ne(l),c=ne(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ue(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Zi.DP=this.token.decimals,new Zi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Na}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ji}from"@solana/spl-token";var Kr={chainId:101,address:Na.default.toBase58(),programId:ji.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ft={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ji.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as Cr}from"@solana/web3.js";import{PublicKey as fe,SystemProgram as $i,SYSVAR_RENT_PUBKEY as Ca}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ma}from"@solana/spl-token";function B({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var va=[B({pubkey:Ma,isWritable:!1}),B({pubkey:$i.programId,isWritable:!1}),B({pubkey:Ca,isWritable:!1})];function Lr({publicKey:r,transformSol:e}){let t=Rr(r.toString());if(t instanceof fe)return e&&t.equals(nn)?tn:t;if(e&&t.toString()===nn.toBase58())return tn;if(typeof t=="string"){if(t===fe.default.toBase58())return fe.default;try{return new fe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Rr(r){try{return new fe(r)}catch{return r}}var zn=new fe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Nr=new fe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),nt=new fe("SysvarRent111111111111111111111111111111111"),ml=new fe("SysvarC1ock11111111111111111111111111111111"),vt=new fe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),_a=new fe("Sysvar1nstructions1111111111111111111111111"),dl=$i.programId,pl=new fe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),fl=new fe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),bl=new fe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),yl=new fe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),gl=new fe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),wl=new fe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),kl=new fe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),hl=new fe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Pl=new fe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Al=new fe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Tl=new fe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),tn=new fe("So11111111111111111111111111111111111111112"),nn=fe.default;function rn(r){return Lr({publicKey:r,transformSol:!0})}var Mr=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===nn.toBase58()||e instanceof Cr&&nn.equals(e)){this.decimals=ft.decimals,this.symbol=ft.symbol,this.name=ft.name,this.mint=new Cr(ft.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Cr.default:Lr({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},_e=Mr;_e.WSOL=new Mr(te(G({},ft),{mint:ft.address}));var vr=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Qn=vr;Qn.SOL=new vr(Kr);import Ea from"bn.js";var Ji=new oe(new Ea(100)),Ze=class extends oe{toSignificant(e=5,t,n){return this.mul(Ji).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ji).toFixed(e,t,n)}};var Va=ue("Raydium_price"),je=class extends oe{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new oe(_r(n.decimals),_r(i.decimals))}get raw(){return new oe(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new je({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Va.logWithError("mul token not equals");let n=super.mul(t);return new je({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var It=new bt(0),eo=new bt(1),dm=new bt(2),pm=new bt(3),fm=new bt(5),Br=new bt(10),bm=new bt(100),ym=new bt(1e3),gm=new bt(1e4);function _r(r){return Br.pow(ne(r))}function Hn(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}function Er(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as Ua}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Xa}from"@solana/spl-token";import{ComputeBudgetProgram as to,Keypair as ro,PublicKey as Wa,Transaction as io,TransactionMessage as Fa,VersionedTransaction as oo}from"@solana/web3.js";var Y={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{TOKEN_PROGRAM_ID as Oa}from"@solana/spl-token";var no=ue("Raydium_txUtil"),so=1644;function Yn(r){let e=[],t=[];return r.microLamports&&(e.push(to.setComputeUnitPrice({microLamports:r.microLamports})),t.push(Y.SetComputeUnitPrice)),r.units&&(e.push(to.setComputeUnitLimit({units:r.units})),t.push(Y.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function on(r,e){var n,i;let t=e!=null?e:"confirmed";return(i=await((n=r.getLatestBlockhash)==null?void 0:n.call(r,{commitment:t})))==null?void 0:i.blockhash}async function Zn(r,e){return r.getSignatureStatuses([e]),new Promise((t,n)=>{let i=setTimeout(n,6e4);r.onSignature(e,o=>{if(clearTimeout(i),!o.err){t("");return}n(Object.assign(o.err,{txId:e}))},"confirmed")})}function Da(r,e){r.length<1&&no.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&no.logWithError(`no signers provided:, ${e.toString()}`);let t=new io;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<so}catch{return!1}}function ye(r,e){let[t,n]=Wa.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function hn({instructions:r,payer:e,signers:t}){return Da(r,[e,...t])}function Pn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=ro.generate().publicKey.toString()}){let o=new Fa({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new oo(o).serialize()).toString("base64").length<so}catch{return!1}}var qa=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Ga=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof oo&&(e=qa(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function _t(r){let e=[];return r.forEach(t=>{t instanceof io&&(t.recentBlockhash||(t.recentBlockhash=Oa.toBase58()),t.feePayer||(t.feePayer=ro.generate().publicKey)),e.push(Ga(t))}),console.log("simulate tx string:",e),e}function me(r,e,t){return ye([r.toBuffer(),(t!=null?t:Xa).toBuffer(),e.toBuffer()],new Ua("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as U}from"@solana/web3.js";var ao=new U("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),uo=new U("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),co=new U("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),lo=new U("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Wm=new U("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),mo=new U("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Fm=new U("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),po=new U("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Om=new U("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Dm=new U("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),qm=new U("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Gm=new U("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Um=new U("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Et=new U("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Xm=new U("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),fo=new U("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),zm=new U("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Qm=new U("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Hm=new U("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ym=new U("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Zm=new U("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),jm=new U("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),$m=new U("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Jm=new U("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ed=new U("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),td=new U("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),nd=new U("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),rd=new U("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),id=new U("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),od=new U("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),sd=new U("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Vt={OPEN_BOOK_PROGRAM:new U("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new U("Ray1111111111111111111111111111111111111111"),AMM_V4:new U("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new U("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new U("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new U("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new U("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new U("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new U("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new U("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new U("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new U("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:U.default,Router:new U("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new U("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new U("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new U("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new U("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new U("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new U("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new U("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new U("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new U("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new U("Ray1111111111111111111111111111111111111111")};import rt from"bn.js";var An=1e4;function he(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=te(G({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new rt(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===An){let u=new rt(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Tn(r.mul(new rt(An)),new rt(An-o.transferFeeBasisPoints)),c=new rt(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=Tn(l.mul(new rt(o.transferFeeBasisPoints)),new rt(An)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Tn(r.mul(new rt(o.transferFeeBasisPoints)),new rt(An)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function Bt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Tn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new rt(0))?t.add(new rt(1)):t}import{PublicKey as Vr,AddressLookupTableAccount as un}from"@solana/web3.js";async function Wr({connection:r,address:e,cluster:t="mainnet"}){let n=await yt(r,[...new Set(e.map(o=>o.toString()))].map(o=>new Vr(o))),i={};for(let o=0;o<e.length;o++){let s=n[o],a=e[o];if(!s)continue;let u=new un({key:a,state:un.deserialize(s.data)});i[a.toString()]=u,t==="devnet"?an[a.toString()]=u:sn[a.toString()]=u}return i}var sn={},Fr=async r=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(sn[e])return sn;let t=new Vr(e),n=await r.getAccountInfo(t);return n&&(sn[e]=new un({key:t,state:un.deserialize(n.data)})),sn},an={},Or=async r=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(an[e])return an;let t=new Vr(e),n=await r.getAccountInfo(t);return n&&(an[e]=new un({key:t,state:un.deserialize(n.data)})),an};import{PublicKey as cn,sendAndConfirmTransaction as Dr,SystemProgram as za,Transaction as xn,TransactionMessage as Sn,VersionedTransaction as In}from"@solana/web3.js";import Qa from"axios";var jn=2e3,$n=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Qa.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Yn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(za.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new cn(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(Y.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==cn.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(G({},t||{})):this.build(t)}build(e){var n;let t=new xn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var l;let{recentBlockHash:o,skipPreflight:s=!0,sendAndConfirm:a,notSendToRpc:u}=i||{},c=o!=null?o:await on(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),_t([t]),(l=this.owner)!=null&&l.isKeyPair)return{txId:a?await Dr(this.connection,t,this.signers.find(d=>d.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let m=await this.signAllTransactions([t]);if(this.signers.length)for(let d of m)try{d.sign(...this.signers)}catch{}return{txId:u?"":await this.connection.sendRawTransaction(m[0].serialize(),{skipPreflight:s}),signedTx:m[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var c;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(l=>l.transaction.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async l=>{var g;let{sequentially:m,onTxUpdate:d,skipTxCount:p=0,recentBlockHash:f,skipPreflight:b=!0}=l||{},w=f!=null?f:await on(this.connection,this.blockhashCommitment);if((g=this.owner)!=null&&g.isKeyPair){if(m){let h=[],P=0;for(let T of s){if(++P,P<=p)continue;let A=await Dr(this.connection,T,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});h.push(A)}return{txIds:h,signedTxs:s}}return{txIds:await await Promise.all(s.map(async h=>(h.recentBlockhash=w,await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:b})))),signedTxs:s}}if(this.signAllTransactions){let h=s.map((T,A)=>(T.recentBlockhash=w,a[A].length&&T.sign(...a[A]),T));_t(h);let P=await this.signAllTransactions(h);if(m){let T=0,A=[],k=async()=>{if(!P[T])return;let S=await this.connection.sendRawTransaction(P[T].serialize(),{skipPreflight:b});A.push({txId:S,status:"sent",signedTx:P[T]}),d==null||d([...A]),T++;let I=!1,L=null,x=null,M=W=>{L!==null&&clearInterval(L),x!==null&&this.connection.removeSignatureListener(x);let _=A.findIndex(X=>X.txId===S);if(_>-1){if(A[_].status==="error"||A[_].status==="success")return;A[_].status=W.err?"error":"success"}d==null||d([...A]),W.err||k()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var W;if(I){clearInterval(L);return}try{let _=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(I=!0,clearInterval(L),M({err:((W=_.meta)==null?void 0:W.err)||null}),console.log("tx status from getTransaction:",S))}catch(_){I=!0,clearInterval(L),console.error("getTransaction timeout:",_,S)}},jn)),x=this.connection.onSignature(S,W=>{if(I){this.connection.removeSignatureListener(x);return}I=!0,M(W)},"confirmed"),this.connection.getSignatureStatus(S)};return await k(),{txIds:A.map(S=>S.txId),signedTxs:P}}else{let T=[];for(let A=0;A<P.length;A+=1){let k=await this.connection.sendRawTransaction(P[A].serialize(),{skipPreflight:b});T.push(k)}return{txIds:T,signedTxs:P}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var b;let f=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:o}=f,s=Ye(f,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=G(G({},this.cluster==="devnet"?await Or(this.connection):await Fr(this.connection)),t),u=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let w of u)a[w]===void 0&&c.push(new cn(w));let l=await Wr({connection:this.connection,address:c});for(let[w,g]of Object.entries(l))a[w]=g;let m=i?cn.default.toBase58():o!=null?o:await on(this.connection,this.blockhashCommitment),d=new Sn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((b=this.owner)==null?void 0:b.signer)&&!this.signers.some(w=>w.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new In(d);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async w=>{var T;let{skipPreflight:g=!0,sendAndConfirm:h,notSendToRpc:P}=w||{};if(_t([p]),(T=this.owner)!=null&&T.isKeyPair){let A=await this.connection.sendTransaction(p,{skipPreflight:g});return h&&await Zn(this.connection,A),{txId:A,signedTx:p}}if(this.signAllTransactions){let A=await this.signAllTransactions([p]);if(this.signers.length)for(let k of A)try{k.sign(this.signers)}catch{}return{txId:P?"":await this.connection.sendTransaction(A[0],{skipPreflight:g}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var c;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(l=>l.builder.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async l=>{var b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:f=!0}=l||{};if(p&&s.forEach(w=>w.message.recentBlockhash=p),_t(s),(b=this.owner)!=null&&b.isKeyPair){if(m){let w=[];for(let g of s){let h=await this.connection.sendTransaction(g,{skipPreflight:f});await Zn(this.connection,h),w.push(h)}return{txIds:w,signedTxs:s}}return{txIds:await Promise.all(s.map(async w=>await this.connection.sendTransaction(w,{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let w=await this.signAllTransactions(s);if(m){let g=0,h=[],P=async()=>{if(!w[g])return;let T=await this.connection.sendTransaction(w[g],{skipPreflight:f});h.push({txId:T,status:"sent",signedTx:w[g]}),d==null||d([...h]),g++;let A=!1,k=null,S=null,I=L=>{k!==null&&clearInterval(k),S!==null&&this.connection.removeSignatureListener(S);let x=h.findIndex(M=>M.txId===T);if(x>-1){if(h[x].status==="error"||h[x].status==="success")return;h[x].status=L.err?"error":"success"}d==null||d([...h]),L.err||P()};this.loopMultiTxStatus&&(k=setInterval(async()=>{var L;if(A){clearInterval(k);return}try{let x=await this.connection.getTransaction(T,{commitment:"confirmed",maxSupportedTransactionVersion:0});x&&(A=!0,clearInterval(k),I({err:((L=x.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",T))}catch(x){A=!0,clearInterval(k),console.error("getTransaction timeout:",x,T)}},jn)),S=this.connection.onSignature(T,L=>{if(A){this.connection.removeSignatureListener(S);return}A=!0,I(L)},"confirmed"),this.connection.getSignatureStatus(T)};return P(),{txIds:[],signedTxs:w}}else{let g=[];for(let h=0;h<w.length;h+=1){let P=await this.connection.sendTransaction(w[h],{skipPreflight:f});g.push(P)}return{txIds:g,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var d;let m=e||{},{splitIns:t=[],computeBudgetConfig:n}=m,i=Ye(m,["splitIns","computeBudgetConfig"]),o=n?Yn(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((p,f)=>te(G({},p),{[f.publicKey.toBase58()]:f}),{}),a=[],u=[],c=[],l=0;if(this.allInstructions.forEach(p=>{let f=[...c,p],b=n?[...o.instructions,...f]:f,g=[...new Set(f.map(h=>h.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(h=>new cn(h));if(p!==t[l]&&c.length<12&&(hn({instructions:b,payer:this.feePayer,signers:g})||hn({instructions:f,payer:this.feePayer,signers:g})))c.push(p);else{if(c.length===0)throw Error("item ins too big");l+=p===t[l]?1:0,hn({instructions:n?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:g})?a.push(new xn().add(...o.instructions,...c)):a.push(new xn().add(...c)),u.push(Array.from(new Set(c.map(h=>h.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat())).map(h=>s[h]).filter(h=>h!==void 0)),c=[p]}}),c.length>0){let f=[...new Set(c.map(b=>b.keys.filter(w=>w.isSigner).map(w=>w.pubkey.toString())).flat()).values()].map(b=>s[b]).filter(b=>b!==void 0);hn({instructions:n?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:f.map(b=>b.publicKey)})?a.push(new xn().add(...o.instructions,...c)):a.push(new xn().add(...c)),u.push(f)}return a.forEach(p=>p.feePayer=this.feePayer),(d=this.owner)!=null&&d.signer&&u.forEach(p=>{p.some(f=>f.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:a,signers:u,instructionTypes:this.instructionTypes,execute:async p=>{var T;let{sequentially:f,onTxUpdate:b,skipTxCount:w=0,recentBlockHash:g,skipPreflight:h=!0}=p||{},P=g!=null?g:await on(this.connection,this.blockhashCommitment);if(a.forEach(async(A,k)=>{A.recentBlockhash=P,u[k].length&&A.sign(...u[k])}),_t(a),(T=this.owner)!=null&&T.isKeyPair){if(f){let A=0,k=[];for(let S of a){if(++A,A<=w){k.push("tx skipped");continue}let I=await Dr(this.connection,S,this.signers.find(L=>L.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:h});k.push(I)}return{txIds:k,signedTxs:a}}return{txIds:await Promise.all(a.map(async A=>await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:h}))),signedTxs:a}}if(this.signAllTransactions){let A=await this.signAllTransactions(a.slice(w,a.length)),k=[...a.slice(0,w),...A];if(f){let S=0,I=[],L=async()=>{if(!k[S])return;S<w&&(I.push({txId:"",status:"success",signedTx:k[S]}),b==null||b([...I]),S++,L());let x=await this.connection.sendRawTransaction(k[S].serialize(),{skipPreflight:h});I.push({txId:x,status:"sent",signedTx:k[S]}),b==null||b([...I]),S++;let M=!1,W=null,_=null,X=Z=>{W!==null&&clearInterval(W),_!==null&&this.connection.removeSignatureListener(_);let D=I.findIndex(ae=>ae.txId===x);if(D>-1){if(I[D].status==="error"||I[D].status==="success")return;I[D].status=Z.err?"error":"success"}b==null||b([...I]),Z.err||L()};this.loopMultiTxStatus&&(W=setInterval(async()=>{var Z;if(M){clearInterval(W);return}try{let D=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});D&&(M=!0,clearInterval(W),X({err:((Z=D.meta)==null?void 0:Z.err)||null}),console.log("tx status from getTransaction:",x))}catch(D){M=!0,clearInterval(W),console.error("getTransaction timeout:",D,x)}},jn)),_=this.connection.onSignature(x,Z=>{if(M){this.connection.removeSignatureListener(_);return}M=!0,X(Z)},"confirmed"),this.connection.getSignatureStatus(x)};return await L(),{txIds:I.map(x=>x.txId),signedTxs:k}}else{let S=[];for(let I=0;I<k.length;I+=1){let L=await this.connection.sendRawTransaction(k[I].serialize(),{skipPreflight:h});S.push(L)}return{txIds:S,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var P;let h=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:o=[]}=h,s=Ye(h,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress"]),a=G(G({},this.cluster==="devnet"?await Or(this.connection):await Fr(this.connection)),i),u=Array.from(new Set([...this.lookupTableAddress,...o])),c=[];for(let T of u)a[T]===void 0&&c.push(new cn(T));let l=await Wr({connection:this.connection,address:c});for(let[T,A]of Object.entries(l))a[T]=A;let m=t?Yn(t):{instructions:[],instructionTypes:[]},d=await on(this.connection,this.blockhashCommitment),p=this.signers.reduce((T,A)=>te(G({},T),{[A.publicKey.toBase58()]:A}),{}),f=[],b=[],w=[],g=0;if(this.allInstructions.forEach(T=>{let A=[...w,T],k=t?[...m.instructions,...A]:A;if(T!==n[g]&&w.length<12&&(Pn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:a})||Pn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:a})))w.push(T);else{if(w.length===0)throw Error("item ins too big");g+=T===n[g]?1:0;let S={};for(let I of[...new Set(u)])a[I]!==void 0&&(S[I]=a[I]);if(t&&Pn({instructions:[...m.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:d})){let I=new Sn({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...w]}).compileToV0Message(Object.values(a));f.push(new In(I))}else{let I=new Sn({payerKey:this.feePayer,recentBlockhash:d,instructions:[...w]}).compileToV0Message(Object.values(a));f.push(new In(I))}b.push(Array.from(new Set(w.map(I=>I.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat())).map(I=>p[I]).filter(I=>I!==void 0)),w=[T]}}),w.length>0){let A=[...new Set(w.map(k=>k.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat()).values()].map(k=>p[k]).filter(k=>k!==void 0);if(t&&Pn({instructions:[...m.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:d})){let k=new Sn({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...w]}).compileToV0Message(Object.values(a));f.push(new In(k))}else{let k=new Sn({payerKey:this.feePayer,recentBlockhash:d,instructions:[...w]}).compileToV0Message(Object.values(a));f.push(new In(k))}b.push(A)}return(P=this.owner)!=null&&P.signer&&b.forEach(T=>{T.some(A=>A.publicKey.equals(this.owner.publicKey))||T.push(this.owner.signer)}),f.forEach((T,A)=>{T.sign(b[A])}),{builder:this,transactions:f,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async T=>{var x;let{sequentially:A,onTxUpdate:k,skipTxCount:S=0,recentBlockHash:I,skipPreflight:L=!0}=T||{};if(f.map(async(M,W)=>{b[W].length&&M.sign(b[W]),I&&(M.message.recentBlockhash=I)}),_t(f),(x=this.owner)!=null&&x.isKeyPair){if(A){let M=0,W=[];for(let _ of f){if(++M,M<=S){console.log("skip tx: ",M),W.push("tx skipped");continue}let X=await this.connection.sendTransaction(_,{skipPreflight:L});await Zn(this.connection,X),W.push(X)}return{txIds:W,signedTxs:f}}return{txIds:await Promise.all(f.map(async M=>await this.connection.sendTransaction(M,{skipPreflight:L}))),signedTxs:f}}if(this.signAllTransactions){let M=await this.signAllTransactions(f.slice(S,f.length)),W=[...f.slice(0,S),...M];if(A){let _=0,X=[],Z=async()=>{if(!W[_])return;if(_<S){X.push({txId:"",status:"success",signedTx:W[_]}),k==null||k([...X]),_++,Z();return}let D=await this.connection.sendTransaction(W[_],{skipPreflight:L});X.push({txId:D,status:"sent",signedTx:W[_]}),k==null||k([...X]),_++;let ae=!1,Te=null,Je=null,mt=Fe=>{Te!==null&&clearInterval(Te),Je!==null&&this.connection.removeSignatureListener(Je);let Oe=X.findIndex(ot=>ot.txId===D);if(Oe>-1){if(X[Oe].status==="error"||X[Oe].status==="success")return;X[Oe].status=Fe.err?"error":"success"}k==null||k([...X]),Fe.err||Z()};this.loopMultiTxStatus&&(Te=setInterval(async()=>{var Fe;if(ae){clearInterval(Te);return}try{let Oe=await this.connection.getTransaction(D,{commitment:"confirmed",maxSupportedTransactionVersion:0});Oe&&(ae=!0,clearInterval(Te),mt({err:((Fe=Oe.meta)==null?void 0:Fe.err)||null}),console.log("tx status from getTransaction:",D))}catch(Oe){ae=!0,clearInterval(Te),console.error("getTransaction timeout:",Oe,D)}},jn)),Je=this.connection.onSignature(D,Fe=>{if(ae){this.connection.removeSignatureListener(Je);return}ae=!0,mt(Fe)},"confirmed"),this.connection.getSignatureStatus(D)};return Z(),{txIds:[],signedTxs:W}}else{let _=[];for(let X=0;X<W.length;X+=1){let Z=await this.connection.sendTransaction(W[X],{skipPreflight:L});_.push(Z)}return{txIds:_,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};import{PublicKey as Ha}from"@solana/web3.js";import Ya from"bn.js";function Za(r){return typeof r=="object"&&r!==null&&![_e,ke,Ha,oe,Ya,je,Ze].some(e=>typeof e=="object"&&r instanceof e)}function Wt(r){return typeof r=="string"?Rr(r):Array.isArray(r)?r.map(e=>Wt(e)):Za(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Wt(t)])):r}import ja from"bn.js";var Cd=new ja(1e6);import{MINT_SIZE as sp,TOKEN_PROGRAM_ID as ap,getTransferFeeConfig as up,unpackMint as cp}from"@solana/spl-token";var qr=ue("Raydium_accountInfo_util");async function yt(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}=G({batchRequest:!1},t),s=Er(e,o),a=new Array(s.length).fill([]);if(n){let u=s.map(m=>{let d=r._buildArgs([m.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=Er(u,10);a=(await(await Promise.all(c.map(async m=>await r._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&qr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:f,lamports:b,owner:w,rentEpoch:g}=d;return p.length!==2&&p[1]!=="base64"&&qr.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:f,lamports:b,owner:new $a(w),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&qr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function Ft(r,e,t){let n=await yt(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>te(G({},i),{accountInfo:n[o]}))}import{PublicKey as cu}from"@solana/web3.js";import ko,{isBN as ho}from"bn.js";import{bits as Ja,BitStructure as dp,blob as eu,Blob as pp,cstr as fp,f32 as bp,f32be as yp,f64 as gp,f64be as wp,greedy as kp,Layout as tu,ns64 as hp,ns64be as Pp,nu64 as Ap,nu64be as Tp,offset as xp,s16 as Sp,s16be as Ip,s24 as Bp,s24be as Kp,s32 as nu,s32be as Lp,s40 as Rp,s40be as Np,s48 as Cp,s48be as Mp,s8 as vp,seq as ru,struct as _p,Structure as iu,u16 as ou,u16be as Ep,u24 as Vp,u24be as Wp,u32 as su,u32be as Fp,u40 as Op,u40be as Dp,u48 as qp,u48be as Gp,u8 as au,UInt as uu,union as Up,Union as Xp,unionLayoutDiscriminator as zp,utf8 as Qp}from"@solana/buffer-layout";var Jn=tu,yo=iu;var Gr=uu;var go=au,Ot=ou;var Ur=su;var de=nu;var wo=ru;var xe=eu;var Xr=Ja;var Dt=class extends Jn{constructor(t,n,i){super(t,i);this.blob=xe(t),this.signed=n}decode(t,n=0){let i=new ko(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new ko(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},er=class extends Jn{constructor(t){super(8,t);this._lower=Xr(Ur(),!1),this._upper=Xr(Ur(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return G(G({},i),o)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function F(r){return new Gr(1,r)}function Ee(r){return new Gr(4,r)}function y(r){return new Dt(8,!1,r)}function z(r){return new Dt(16,!1,r)}function Po(r){return new Dt(1,!0,r)}function ln(r){return new Dt(8,!0,r)}function Ao(r){return new Dt(16,!0,r)}var tr=class extends Jn{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function R(r){return new tr(xe(32),e=>new cu(e),e=>e.toBuffer(),r)}function Be(r){return new tr(go(),lu,mu,r)}function lu(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function mu(r){return r?1:0}var zr=class extends yo{decode(e,t){return super.decode(e,t)}};function v(r,e,t){return new zr(r,e,t)}function Q(r,e,t){let n,i=typeof e=="number"?e:ho(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=ho(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 wo(r,i,t)}import{PublicKey as Qr}from"@solana/web3.js";import{NATIVE_MINT as df}from"@solana/spl-token";var pf=ue("Raydium_farm_config"),ff=new Qr("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),bf=new Qr("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var yf=new Qr("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var To={3:Yr,5:xo,6:So};var nr={"Standard SPL":0,"Option tokens":1},Hr={[ao.toString()]:3,[uo.toString()]:4,[co.toString()]:5,[lo.toString()]:6,[Vt.FARM_PROGRAM_ID_V3.toString()]:3,[Vt.FARM_PROGRAM_ID_V4.toString()]:4,[Vt.FARM_PROGRAM_ID_V5.toString()]:5,[Vt.FARM_PROGRAM_ID_V6.toString()]:6};var Zr=v([F("instruction")]),bu=v([F("instruction")]),yu=v([y("rewardState"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardLastUpdateTime"),y("totalReward"),y("totalRewardEmissioned"),y("rewardClaimed"),y("rewardPerSecond"),z("accRewardPerShare"),R("rewardVault"),R("rewardMint"),R("rewardSender"),y("rewardType"),Q(y(),15,"padding")]),gu=v([y("state"),y("nonce"),R("lpVault"),R("rewardVault"),R(),R(),y(),y(),y("totalReward"),z("perShareReward"),y("lastSlot"),y("perSlotReward")]),wu=v([y("state"),y("nonce"),R("lpVault"),R("rewardVaultA"),y("totalRewardA"),z("perShareRewardA"),y("perSlotRewardA"),F("option"),R("rewardVaultB"),xe(7),y("totalRewardB"),z("perShareRewardB"),y("perSlotRewardB"),y("lastSlot"),R()]),ku=v([y(),y("state"),y("nonce"),y("validRewardTokenNum"),z("rewardMultiplier"),y("rewardPeriodMax"),y("rewardPeriodMin"),y("rewardPeriodExtend"),R("lpMint"),R("lpVault"),Q(yu,5,"rewardInfos"),R("creator"),R(),Q(y(),32,"padding")]),du=new Proxy(gu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return te(G({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),pu=new Proxy(wu,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return te(G({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),fu=new Proxy(ku,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return te(G({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return te(G({},o),{rewardType:((s=Object.entries(nr).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),hu=v([y("isSet"),y("rewardPerSecond"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardType")]),Pu=v([F("instruction"),y("nonce"),Q(hu,5,"rewardTimeInfo")]),Au=v([F("instruction"),y("rewardReopenTime"),y("rewardEndTime"),y("rewardPerSecond")]),Tu=v([F("instruction"),y("isSet"),y("rewardPerSecond"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardType")]),Tf=v([y("state"),R("id"),R("owner"),y("deposited"),Q(y(),1,"rewardDebts")]),Yr=v([y("state"),R("id"),R("owner"),y("deposited"),Q(z(),1,"rewardDebts"),y(""),y("voteLockedBalance"),Q(y(),15)]),xf=v([y("state"),R("id"),R("owner"),y("deposited"),Q(y(),2,"rewardDebts")]),xo=v([y("state"),R("id"),R("owner"),y("deposited"),Q(z(),2,"rewardDebts"),Q(y(),17)]),So=v([y(),y("state"),R("id"),R("owner"),y("deposited"),Q(z(),5,"rewardDebts"),Q(y(),16)]),qt=v([F("instruction"),y("amount")]),xu=v([R("mint"),R("grantAuthority"),y("baselineVoteWeightScaledFactor"),y("maxExtraLockupVoteWeightScaledFactor"),y("lockupSaturationSecs"),Po("digitShift"),Q(F(),7,"reserved1"),Q(y(),7,"reserved2")]),Su=v([xe(8),R("governanceProgramId"),R("realm"),R("realmGoverningTokenMint"),R("realmAuthority"),Q(F(),32,"reserved1"),Q(xu,4,"votingMints"),ln("timeOffset"),F("bump"),Q(F(),7,"reserved2"),Q(y(),11,"reserved3")]),Iu=v([ln("startTime"),ln("endTime"),F("kind"),Q(F(),15,"reserved")]),Bu=v([Q(Iu,1,"lockup"),y("amountDeposited_native"),y("amountInitiallyLockedNative"),Be("isUsed"),Be("allowClawback"),F("votingMintConfigIdx"),Q(F(),29,"reserved")]),Ku=v([xe(8),R("voterAuthority"),R("registrar"),Q(Bu,32,"deposits"),F("voterBump"),F("voterWweightRecordBump"),Q(F(),94,"reserved")]);import Cf from"bn.js";var rr=v([R("mint"),R("owner"),y("amount"),Ee("delegateOption"),R("delegate"),F("state"),Ee("isNativeOption"),y("isNative"),y("delegatedAmount"),Ee("closeAuthorityOption"),R("closeAuthority")]);var Lu=ue("Raydium.farm.util");function mn({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=ye([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}function Io(r){let e=To[r];return e||Lu.logWithError("invalid version",r),e}import{PublicKey as Ve,SystemProgram as Ru,SYSVAR_CLOCK_PUBKEY as Bo,SYSVAR_RENT_PUBKEY as Nu,TransactionInstruction as ir}from"@solana/web3.js";import ib from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as sb,createAssociatedTokenAccountIdempotentInstruction as ab,TOKEN_PROGRAM_ID as jr}from"@solana/spl-token";var Cu=ue("Raydium_farm_instruction"),wb={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function Ko(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||Cu.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Zr.span);Zr.encode({instruction:s},a);let u=[B({pubkey:t}),B({pubkey:n}),B({pubkey:o,isWritable:!1}),B({pubkey:Ru.programId,isWritable:!1}),B({pubkey:Nu,isWritable:!1})];return{instruction:new ir({programId:i,keys:u,data:a}),instructionType:Y.FarmV3CreateLedger}}function Lo(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new Ve(e.programId),new Ve(e.id)],c=mn({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(qt.span);qt.encode({instruction:2,amount:ne(s)},l);let m=[B({pubkey:jr,isWritable:!1}),B({pubkey:u}),B({pubkey:new Ve(t.authority),isWritable:!1}),B({pubkey:new Ve(t.lpVault)}),B({pubkey:c}),B({pubkey:o,isWritable:!1,isSigner:!0}),B({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(B({pubkey:new Ve(t.rewardInfos[d].vault)})),m.push(B({pubkey:i[d]}));return new ir({programId:a,keys:m,data:l})}function Ro(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Ve(e.programId),new Ve(e.id)],l=mn({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(qt.span);qt.encode({instruction:12,amount:ne(s)},m);let d=[B({pubkey:c}),B({pubkey:new Ve(t.authority),isWritable:!1}),B({pubkey:l}),B({pubkey:o,isWritable:!1,isSigner:!0}),B({pubkey:n}),B({pubkey:new Ve(t.lpVault)}),B({pubkey:i[0]}),B({pubkey:new Ve(t.rewardInfos[0].vault)}),B({pubkey:Bo,isWritable:!1}),B({pubkey:jr,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(B({pubkey:i[p]})),d.push(B({pubkey:new Ve(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(B({pubkey:p}));return new ir({programId:u,keys:d,data:m})}function No(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new Ve(e.programId),new Ve(e.id)],l=mn({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(qt.span);qt.encode({instruction:11,amount:ne(s)},m);let d=[B({pubkey:c}),B({pubkey:new Ve(t.authority),isWritable:!1}),B({pubkey:l}),B({pubkey:o,isWritable:!1,isSigner:!0}),B({pubkey:n}),B({pubkey:new Ve(t.lpVault)}),B({pubkey:i[0]}),B({pubkey:new Ve(t.rewardInfos[0].vault)}),B({pubkey:Bo,isWritable:!1}),B({pubkey:jr,isWritable:!1})];if(a)for(let p of a)d.push(B({pubkey:p}));return new ir({programId:u,keys:d,data:m})}import{Keypair as ur,PublicKey as C,SystemProgram as kt,TransactionInstruction as Ce}from"@solana/web3.js";import si from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Mn,TOKEN_2022_PROGRAM_ID as ge,TOKEN_PROGRAM_ID as ce}from"@solana/spl-token";import qu from"bn.js";import $e from"bn.js";var be=new $e(0),ut=new $e(1),gt=new $e(-1),Ue=new $e(1).shln(64),or=new $e(1).shln(128),$r=Ue.sub(ut),Bn=64,Co=or.subn(1),We=-443636,De=-We,Gt=new $e("4295048016"),Ut=new $e("79226673521066979257578248091"),Kb=new $e("4295048017"),Lb=new $e("79226673521066979257578248090"),Mo=16,vo="59543866431248",_o="184467440737095516",Eo="15793534762490258745",sr=new $e(10).pow(new $e(6));var Rb=new $e("18446744073700000000");import ee from"bn.js";function ar(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Jr(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function ei(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Kn(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Vo(r,e){return Kn(r,e)?null:Jr(r,e)}function Wo(r,e){return Kn(r,e)?null:ei(r,e)}var Eb=Buffer.from("amm_config","utf8"),Mu=Buffer.from("pool","utf8"),vu=Buffer.from("pool_vault","utf8"),_u=Buffer.from("pool_reward_vault","utf8"),Fo=Buffer.from("position","utf8"),Eu=Buffer.from("tick_array","utf8"),Vu=Buffer.from("operation","utf8"),Wu=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Fu=Buffer.from("observation","utf8");function Oo(r,e,t,n){return ye([Mu,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function ti(r,e,t){return ye([vu,e.toBuffer(),t.toBuffer()],r)}function Do(r,e,t){return ye([_u,e.toBuffer(),t.toBuffer()],r)}function se(r,e,t){return ye([Eu,e.toBuffer(),ar(t)],r)}function Kt(r,e,t,n){return ye([Fo,e.toBuffer(),ar(t),ar(n)],r)}function Xe(r,e){return ye([Fo,e.toBuffer()],r)}function Ln(r){return ye([Buffer.from("metadata","utf8"),vt.toBuffer(),r.toBuffer()],vt)}function ni(r){return ye([Vu],r)}function Ne(r,e){return ye([Wu,e.toBuffer()],r)}function qo(r,e){return ye([Fu,e.toBuffer()],r)}var Go=Buffer.from("locked_position","utf8");function ri(r,e){return ye([Go,e.toBuffer()],r)}function Uo(r,e){return ye([Go,e.toBuffer()],r)}var Vb=Buffer.from("support_mint","utf8");import{PublicKey as ze}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Xo}from"@solana/spl-token";import pe from"bn.js";import ct from"bn.js";var Rn=class{static getfeeGrowthInside(e,t,n){let i=new ct(0),o=new ct(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new ct(0),a=new ct(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=J.wrappingSubU128(J.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=J.wrappingSubU128(J.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=J.mulDivFloor(J.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ue),u=t.tokenFeesOwedA.add(a),c=J.mulDivFloor(J.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ue),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=J.mulDivFloor(J.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ue),u=t.tokenFeesOwedA.add(a),c=J.mulDivFloor(J.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ue),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=J.wrappingSubU128(u,c.growthInsideLastX64),m=J.mulDivFloor(l,t.liquidity,Ue),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=J.wrappingSubU128(u,c.growthInsideLastX64),m=J.mulDivFloor(l,t.liquidity,Ue),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(J.wrappingSubU128(J.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(J.wrappingSubU128(J.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var w,g,h,P;let a=$.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=$.getSqrtPriceX64FromTick(t.tickLower),c=$.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ie.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[he(m.amountA,(w=e.mintA.extensions)==null?void 0:w.feeConfig,s,!0),he(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[f,b]=[he(new ct(new N(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),he(new ct(new N(m.amountB.toString()).mul(l).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:f,amountSlippageB:b,expirationTime:Bt(d.expirationTime,p.expirationTime)}}};var Ou=15,re=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=O.getTickArrayStartIndexByTick(i,o),l=O.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Ou/2));for(let p=0;p<l.length;p++){let{publicKey:f}=se(t,n,l[p]);u.push(f)}let m=(await yt(e,u)).map(p=>p!==null?Nn.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let f=m[p];f!==null&&(d[f.startTickIndex]=te(G({},f),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=O.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:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/re.tickCount(t)),a=n?O.searchLowBitFromStart(i,o,s-1,1,t):O.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=Ke-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<Ke;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=se(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=O.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-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 d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<Ke;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=se(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(O.checkIsOutOfBoundary(e)){if(e>De)return!1;let n=O.getTickArrayStartIndexByTick(We,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Ke*e}};var ii=14,wt=class{static maxTickInTickarrayBitmap(e){return e*Ke*Xt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!re.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-re.tickCount(n):t+re.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Ke,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=Vo(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Wo(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-re.tickCount(n)}}}},Cn=class{static getBitmapOffset(e,t){if(!re.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=wt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=wt.maxTickInTickarrayBitmap(e),n=-t;if(De<=t)throw Error(`extensionTickBoundary check error: ${De}, ${t}`);if(n<=We)throw Error(`extensionTickBoundary check error: ${n}, ${We}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:O.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=re.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=wt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=O.mergeTickArrayBitmap(e).shln(Xt-1-a),c=Kn(512,u)?null:Jr(512,u);if(c!==null){let l=t-c*re.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=O.mergeTickArrayBitmap(e).shrn(a),c=Kn(512,u)?null:ei(512,u);if(c!==null){let l=t+c*re.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-re.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%wt.maxTickInTickarrayBitmap(t),i=Math.floor(n/re.tickCount(t));return e<0&&n!=0&&(i=Xt-i),i}};var Pe=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o,s=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:d,amountCalculated:p,accounts:f,sqrtPriceX64:b,feeAmount:w}=zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,l,o,s);return u.push(...f),{allTrade:d,expectedAmountOut:p.mul(gt),remainingAccounts:u,executionPrice:b,feeAmount:w}}static getInputAmountAndRemainAccounts(e,t,n,i,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 b=this.preInitializedTickArrayStartIndex(e,s);if(b.isExist){let{publicKey:w}=se(e.programId,e.id,b.nextStartIndex);a.push(w)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:f}=zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(gt),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:f}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Pe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Cn.checkTickArrayIsInit(re.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):O.checkTickArrayIsInitialized(O.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=se(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,re.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=se(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/re.tickCount(e.tickSpacing)),i=t?O.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):O.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=re.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=wt.nextInitializedTickArrayStartIndex(O.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Cn.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<We||t>De)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(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(d===void 0)throw Error("get new reward mint info error");let p=te(G({},m),{perSecond:J.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new ze(d)});if(p.tokenMint.equals(ze.default))continue;if(n<=p.openTime.toNumber()||i.eq(be)){s.push(p);continue}let f=new pe(Math.min(p.endTime.toNumber(),n)),b=f.sub(p.lastUpdateTime),w=J.mulDivFloor(b,p.emissionsPerSecondX64,i),g=p.rewardGrowthGlobalX64.add(w),h=J.mulDivFloor(b,p.emissionsPerSecondX64,Ue),P=p.rewardTotalEmissioned.add(h);s.push(te(G({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:P,lastUpdateTime:f}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=O.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=wt.maxTickInTickarrayBitmap(e),n=-t;return t>De&&(t=re.getArrayStartIndex(De,e)+re.tickCount(e)),n<We&&(n=re.getArrayStartIndex(We,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!re.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/re.tickCount(t)*Xt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Ft(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=Ho.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=O.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=O.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=se(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await Ft(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Nn.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=te(G({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(Xe(p,d).publicKey);let l=await yt(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Qo.decode(d.data),f=p.poolId.toString(),b=e.find(I=>I.state.id.toBase58()===f);if(b===void 0)continue;let w=b.state,g=O._getTickPriceLegacy({poolInfo:w,tick:p.tickLower,baseIn:!0}),h=O._getTickPriceLegacy({poolInfo:w,tick:p.tickUpper,baseIn:!0}),{amountA:P,amountB:T}=ie.getAmountsFromLiquidity(w.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),A=1/(1-Math.sqrt(Math.sqrt(g.price.div(h.price).toNumber())));b.positionAccount=[...(a=b.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:h.price,amountA:P,amountB:T,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(I=>te(G({},I),{pendingReward:new pe(0)})),leverage:A,tokenFeeAmountA:new pe(0),tokenFeeAmountB:new pe(0)}];let k=await O.getTickArrayAddressByTick(b.state.programId,p.poolId,p.tickLower,b.state.tickSpacing),S=await O.getTickArrayAddressByTick(b.state.programId,p.poolId,p.tickUpper,b.state.tickSpacing);m[`${b.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=k,m[`${b.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(o){let d=Object.values(m),p=await yt(t,d,{batchRequest:i}),f={};for(let b=0;b<d.length;b++){let w=p[b];if(w===null)continue;let g=d[b].toString();f[g]=Nn.decode(w.data)}for(let{state:b,positionAccount:w}of e)if(!!w)for(let g of w){let h=`${b.programId.toString()}-${b.id.toString()}-${g.tickLower}`,P=`${b.programId.toString()}-${b.id.toString()}-${g.tickUpper}`,T=f[m[h].toString()],A=f[m[P].toString()],k=T.ticks[O.getTickOffsetInArray(g.tickLower,b.tickSpacing)],S=A.ticks[O.getTickOffsetInArray(g.tickUpper,b.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:L}=await Rn.GetPositionFees(b,g,k,S),x=await Rn.GetPositionRewards(b,g,k,S);g.tokenFeeAmountA=I.gte(new pe(0))?I:new pe(0),g.tokenFeeAmountB=L.gte(new pe(0))?L:new pe(0);for(let M=0;M<x.length;M++)g.rewardInfos[M].pendingReward=x[M].gte(new pe(0))?x[M]:new pe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new N(0),catchLiquidityInsufficient:u=!1}){var W;let c,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new N(0))?c=l?Gt.add(new pe(1)):Ut.sub(new pe(1)):c=$.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=he(o,m,i,!1),{allTrade:f,expectedAmountOut:b,remainingAccounts:w,executionPrice:g,feeAmount:h}=Pe.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((W=p.fee)!=null?W:be),c,u),P=he(b,d,i,!1),T=$.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),A=l?T:new N(1).div(T),k=b.mul(new pe(Math.floor((1-s)*1e10))).div(new pe(1e10)),S=he(k,d,i,!1),I=l?e.currentPrice:new N(1).div(e.currentPrice),L=new N(A).sub(I).abs(),x=I,M=new Ze(new N(L).mul(10**15).toFixed(0),new N(x).mul(10**15).toFixed(0));return{allTrade:f,realAmountIn:p,amountOut:P,minAmountOut:S,expirationTime:Bt(p.expirationTime,P.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:M,fee:h,remainingAccounts:w,executionPriceX64:g}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let u=i.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new _e(te(G({},c),{mint:c.address,isToken2022:c.programId===Xo.toBase58()})),new _e(te(G({},l),{mint:l.address,isToken2022:l.programId===Xo.toBase58()}))],{allTrade:p,realAmountIn:f,amountOut:b,minAmountOut:w,expirationTime:g,currentPrice:h,executionPrice:P,priceImpact:T,fee:A,remainingAccounts:k,executionPriceX64:S}=Pe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new ze(c.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),I=te(G({},f),{amount:new ke(m,f.amount),fee:f.fee===void 0?void 0:new ke(m,f.fee)}),L=te(G({},b),{amount:new ke(d,b.amount),fee:b.fee===void 0?void 0:new ke(d,b.fee)}),x=te(G({},w),{amount:new ke(d,w.amount),fee:w.fee===void 0?void 0:new ke(d,w.fee)}),M=new je({baseToken:m,denominator:new pe(10).pow(new pe(20+m.decimals)),quoteToken:d,numerator:h.mul(new N(10**(20+d.decimals))).toFixed(0)}),W=new je({baseToken:m,denominator:new pe(10).pow(new pe(20+m.decimals)),quoteToken:d,numerator:P.mul(new N(10**(20+d.decimals))).toFixed(0)}),_=new ke(m,A);return{allTrade:p,realAmountIn:I,amountOut:L,minAmountOut:x,expirationTime:g,currentPrice:M,executionPrice:W,priceImpact:T,fee:_,remainingAccounts:k,executionPriceX64:S}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountOut:o,slippage:s,priceLimit:a=new N(0)}){var x;let u=n.toBase58()===e.mintA.address,c={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;a.equals(new N(0))?l=u?Ut.sub(new pe(1)):Gt.add(new pe(1)):l=$.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let m=he(o,c[n.toString()],i,!0),{expectedAmountIn:d,remainingAccounts:p,executionPrice:f,feeAmount:b}=Pe.getInputAmountAndRemainAccounts(e,t,n,m.amount.sub((x=m.fee)!=null?x:be),l),w=u?e.mintB.address:e.mintA.address,g=he(d,c[w],i,!1),h=$.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),P=u?h:new N(1).div(h),T=d.mul(new pe(Math.floor((1+s)*1e10))).div(new pe(1e10)),A=he(T,c[w],i,!0),k=u?e.currentPrice:new N(1).div(e.currentPrice),S=new N(P).sub(k).abs(),I=k,L=new Ze(new N(S).mul(10**15).toFixed(0),new N(I).mul(10**15).toFixed(0));return{amountIn:g,maxAmountIn:A,realAmountOut:m,expirationTime:Bt(g.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:P,priceImpact:L,fee:b,remainingAccounts:p}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var f,b,w;let o=e[t],s=O.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=O.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[((f=o.rewardApr[0])!=null?f:0)*p,((b=o.rewardApr[1])!=null?b:0)*p,((w=o.rewardApr[2])!=null?w:0)*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[rn(e.mintA.address).toString()],d=i[rn(e.mintB.address).toString()],p=e.mintA.decimals,f=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let b=$.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),w=$.getSqrtPriceX64FromTick(s),g=$.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:P}=ie.getAmountsFromLiquidityWithSlippage(b,w,g,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:A}=ie.getAmountsFromLiquidityWithSlippage(b,w,g,o,!1,!1,0),k=new N(h.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(P.toString()).div(new N(10).pow(f)).mul(d.value)),S=new N(T.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(A.toString()).div(new N(10).pow(f)).mul(d.value)),I=new N(1).div(k.add(S)),x=new N(l.volumeFee).mul(365).div(c).mul(I).mul(100).toNumber(),M=3600*24*365,W=e.rewardDefaultInfos.map(_=>{var D,ae;let X=_.mint.decimals,Z=i[_.mint.address];return u<((D=_.startTime)!=null?D:0)||u>((ae=_.endTime)!=null?ae:0)||!_.perSecond||!Z||X===void 0?0:new N(Z.value).mul(new N(_.perSecond).mul(M)).div(new N(10).pow(X)).mul(I).mul(100).toNumber()});return{feeApr:x,rewardsApr:W,apr:x+W.reduce((_,X)=>_+X,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,h;let l=$.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=$.getSqrtPriceX64FromTick(n),d=$.getSqrtPriceX64FromTick(i),p=he(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new pe(new N(p.amount.sub((h=p.fee)!=null?h:be).toString()).toFixed(0)),b;if(l.lte(m))b=t?ie.getLiquidityFromTokenAmountA(m,d,f,!a):new pe(0);else if(l.lte(d)){let P=ie.getLiquidityFromTokenAmountA(l,d,f,!a),T=ie.getLiquidityFromTokenAmountB(m,l,f);b=t?P:T}else b=t?new pe(0):ie.getLiquidityFromTokenAmountB(m,d,f);let w=await Pe.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a});return{liquidity:b,amountA:t?p:w.amountA,amountB:t?w.amountB:p,amountSlippageA:t?p:w.amountSlippageA,amountSlippageB:t?w.amountSlippageB:p,expirationTime:w.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var w,g,h,P;let u=$.getSqrtPriceX64FromTick(n),c=$.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ie.getAmountsFromLiquidity($.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[he(m.amountA,(w=t.mintA.extensions)==null?void 0:w.feeConfig,e,!0),he(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[f,b]=[he(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),he(m.amountB.muln(l),(P=t.mintB.extensions)==null?void 0:P.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:f,amountSlippageB:b,expirationTime:Bt(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(u=>!n[u.id]).map(u=>new ze(u.id));(await yt(e,i)).forEach((u,c)=>{!u||(n[i[c].toBase58()]=zo.decode(u.data))});let s=t.map(u=>Ne(new ze(u.programId),new ze(u.id)).publicKey),a=await Pe.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>te(G({},u),{[c.id]:te(G({},n[c.id]),{id:new ze(c.id),version:6,programId:new ze(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:te(G({},c.config),{id:new ze(c.config.id),fundOwner:""}),currentPrice:new N(c.price),exBitmapAccount:Ne(new ze(c.programId),new ze(c.id)).publicKey,exBitmapInfo:a[Ne(new ze(c.programId),new ze(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber(),rewardInfos:n[c.id].rewardInfos})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var J=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(be)||(o=o.add(ut)),o}static mulDivFloor(e,t,n){if(n.eq(be))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(be))throw new Error("division by 0");return e.mul(t).add(n.sub(ut)).div(n)}static x64ToDecimal(e,t){return new N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ee(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(or).sub(t).mod(or)}};function Le(r,e){return oi(r.mul(e),64,256)}function Du(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function oi(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var $=class{static sqrtPriceX64ToPrice(e,t,n){return J.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return J.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(be))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(be))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(be))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(be))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(be))return e;let o=t.shln(Bn);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?J.mulDivCeil(s,e,a):J.mulDivRoundingUp(s,ut,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 J.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(Bn);if(i)return e.add(o.div(t));{let s=J.mulDivRoundingUp(o,ut,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<We||e>De)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ee("18445821805675395072"):new ee("18446744073709551616");return(t&2)!=0&&(n=Le(n,new ee("18444899583751176192"))),(t&4)!=0&&(n=Le(n,new ee("18443055278223355904"))),(t&8)!=0&&(n=Le(n,new ee("18439367220385607680"))),(t&16)!=0&&(n=Le(n,new ee("18431993317065453568"))),(t&32)!=0&&(n=Le(n,new ee("18417254355718170624"))),(t&64)!=0&&(n=Le(n,new ee("18387811781193609216"))),(t&128)!=0&&(n=Le(n,new ee("18329067761203558400"))),(t&256)!=0&&(n=Le(n,new ee("18212142134806163456"))),(t&512)!=0&&(n=Le(n,new ee("17980523815641700352"))),(t&1024)!=0&&(n=Le(n,new ee("17526086738831433728"))),(t&2048)!=0&&(n=Le(n,new ee("16651378430235570176"))),(t&4096)!=0&&(n=Le(n,new ee("15030750278694412288"))),(t&8192)!=0&&(n=Le(n,new ee("12247334978884435968"))),(t&16384)!=0&&(n=Le(n,new ee("8131365268886854656"))),(t&32768)!=0&&(n=Le(n,new ee("3584323654725218816"))),(t&65536)!=0&&(n=Le(n,new ee("696457651848324352"))),(t&131072)!=0&&(n=Le(n,new ee("26294789957507116"))),(t&262144)!=0&&(n=Le(n,new ee("37481735321082"))),e>0&&(n=Co.div(n)),n}static getTickFromPrice(e,t,n){return $.getTickFromSqrtPriceX64($.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ut)||e.lt(Gt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ee(t-64),i=Du(n,32,128),o=new ee("8000000000000000","hex"),s=0,a=new ee(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new ee(0))&&s<Mo;){u=u.mul(u);let f=u.shrn(127);u=u.shrn(63+f.toNumber()),a=a.add(o.mul(f)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new ee(vo)),d=oi(m.sub(new ee(_o)),64,128).toNumber(),p=oi(m.add(new ee(Eo)),64,128).toNumber();return d==p?d:$.getSqrtPriceX64FromTick(p).lte(e)?p:d}},Qt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=$.getTickFromSqrtPriceX64($.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=Qt.getTickWithPriceAndTickspacing(e,t,n,i),s=$.getSqrtPriceX64FromTick(o);return $.sqrtPriceX64ToPrice(s,n,i)}},ie=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(be))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Bn),s=t.sub(e);return i?J.mulDivRoundingUp(J.mulDivCeil(o,s,t),ut,e):J.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(be))throw new Error("sqrtPriceX64A must greater than 0");return i?J.mulDivCeil(n,t.sub(e),Ue):J.mulDivFloor(n,t.sub(e),Ue)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?J.mulDivRoundingUp(a,ut,$r):a.shrn(Bn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),J.mulDivFloor(n,$r,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ie.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ie.getLiquidityFromTokenAmountA(e,n,i,!1),a=ie.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ie.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ie.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new ee(0)};if(e.lt(n)){let s=ie.getTokenAmountAFromLiquidity(e,n,i,o),a=ie.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new ee(0),amountB:ie.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ie.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new ee(new N(u.toString()).mul(l).toFixed(0)),d=new ee(new N(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var h,P,T,A;let c=$.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=$.getSqrtPriceX64FromTick(t),m=$.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ie.getAmountsFromLiquidity(c,l,m,i,s),[f,b]=[he(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),he(p.amountB,(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,u)],[w,g]=[he(new ee(new N(p.amountA.toString()).mul(d).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),he(new ee(new N(p.amountB.toString()).mul(d).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)];return{liquidity:i,amountA:f,amountB:b,amountSlippageA:w,amountSlippageB:g,expirationTime:Bt(f.expirationTime,b.expirationTime)}}},zt=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,d,p,f,b=!1){if(d.eq(be))throw new Error("amountSpecified must not be 0");if(f||(f=s?Gt.add(ut):Ut.sub(ut)),s){if(f.lt(Gt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(f.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(f.gt(Ut))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(f.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let w=d.gt(be),g={amountSpecifiedRemaining:d,amountCalculated:be,sqrtPriceX64:m,tick:c>p?Math.min(p+re.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new ee(0)},h=p,P=n[p],T=0,A=!s&&P.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(be)&&!g.sqrtPriceX64.eq(f);){T>10;let k={};k.sqrtPriceStartX64=g.sqrtPriceX64;let S=O.nextInitTick(P,g.tick,l,s,A),I=S||null,L=null;if(!(I!=null&&I.liquidityGross.gtn(0))){let M=Pe.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},h,s);if(!M.isExist){if(b)return{allTrade:!1,amountSpecifiedRemaining:g.amountSpecifiedRemaining,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts};throw Error("swapCompute LiquidityInsufficient")}h=M.nextStartIndex;let{publicKey:W}=se(e,t,h);L=W,P=n[h];try{I=O.firstInitializedTick(P,s)}catch{throw Error("not found next tick info")}}k.tickNext=I.tick,k.initialized=I.liquidityGross.gtn(0),p!==h&&L&&(g.accounts.push(L),p=h),k.tickNext<We?k.tickNext=We:k.tickNext>De&&(k.tickNext=De),k.sqrtPriceNextX64=$.getSqrtPriceX64FromTick(k.tickNext);let x;if(s&&k.sqrtPriceNextX64.lt(f)||!s&&k.sqrtPriceNextX64.gt(f)?x=f:x=k.sqrtPriceNextX64,[g.sqrtPriceX64,k.amountIn,k.amountOut,k.feeAmount]=zt.swapStepCompute(g.sqrtPriceX64,x,g.liquidity,g.amountSpecifiedRemaining,a,s),g.feeAmount=g.feeAmount.add(k.feeAmount),w?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(k.amountIn.add(k.feeAmount)),g.amountCalculated=g.amountCalculated.sub(k.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(k.amountOut),g.amountCalculated=g.amountCalculated.add(k.amountIn.add(k.feeAmount))),g.sqrtPriceX64.eq(k.sqrtPriceNextX64)){if(k.initialized){let M=I.liquidityNet;s&&(M=M.mul(gt)),g.liquidity=ie.addDelta(g.liquidity,M)}A=k.tickNext!=g.tick&&!s&&P.startTickIndex===k.tickNext,g.tick=s?k.tickNext-1:k.tickNext}else if(g.sqrtPriceX64!=k.sqrtPriceStartX64){let M=$.getTickFromSqrtPriceX64(g.sqrtPriceX64);A=M!=g.tick&&!s&&P.startTickIndex===M,g.tick=M}++T}try{let{nextStartIndex:k,isExist:S}=re.nextInitializedTickArray(g.tick,l,s,i,o);S&&p!==k&&(g.accounts.push(se(e,t,k).publicKey),p=k)}catch{}return{allTrade:!0,amountSpecifiedRemaining:be,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,i,o,s){let a={sqrtPriceX64Next:new ee(0),amountIn:new ee(0),amountOut:new ee(0),feeAmount:new ee(0)},u=i.gte(be);if(u){let l=J.mulDivFloor(i,sr.sub(new ee(o.toString())),sr);a.amountIn=s?ie.getTokenAmountAFromLiquidity(t,e,n,!0):ie.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(a.amountIn)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=$.getNextSqrtPriceX64FromInput(e,n,l,s)}else a.amountOut=s?ie.getTokenAmountBFromLiquidity(t,e,n,!1):ie.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(gt).gte(a.amountOut)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=$.getNextSqrtPriceX64FromOutput(e,n,i.mul(gt),s);let c=t.eq(a.sqrtPriceX64Next);return s?(c&&u||(a.amountIn=ie.getTokenAmountAFromLiquidity(a.sqrtPriceX64Next,e,n,!0)),c&&!u||(a.amountOut=ie.getTokenAmountBFromLiquidity(a.sqrtPriceX64Next,e,n,!1))):(a.amountIn=c&&u?a.amountIn:ie.getTokenAmountBFromLiquidity(e,a.sqrtPriceX64Next,n,!0),a.amountOut=c&&!u?a.amountOut:ie.getTokenAmountAFromLiquidity(e,a.sqrtPriceX64Next,n,!1)),!u&&a.amountOut.gt(i.mul(gt))&&(a.amountOut=i.mul(gt)),u&&!a.sqrtPriceX64Next.eq(t)?a.feeAmount=i.sub(a.amountIn):a.feeAmount=J.mulDivCeil(a.amountIn,new ee(o),sr.sub(new ee(o))),[a.sqrtPriceX64Next,a.amountIn,a.amountOut,a.feeAmount]}};var Ke=60,Xt=512,O=class{static getTickArrayAddressByTick(e,t,n,i){let o=O.getTickArrayStartIndexByTick(n,i),{publicKey:s}=se(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=O.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Ke)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=re.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*re.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Ke,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Ke,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Ke:e+t*Ke}static mergeTickArrayBitmap(e){let t=new qu(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*Ke));return[...O.searchLowBitFromStart(e,t,s-1,o,n),...O.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return O.searchHightBitFromStart(e,t,-7680,Xt,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=O.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=se(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>O.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===i)break}let u=re.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>O.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===i)break}let u=re.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<We||e>De}static nextInitTick(e,t,n,i,o){if(re.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Ke;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Ke-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Ke;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=$.getSqrtPriceX64FromTick(t),o=$.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new N(1).div(t),o=Qt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=$.getSqrtPriceX64FromTick(o),a=$.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=$.getSqrtPriceX64FromTick(t),o=$.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new N(1).div(t),o=Qt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=$.getSqrtPriceX64FromTick(o),a=$.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}};var zy=v([xe(8),F("bump"),Ot("index"),R(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),Ot("tickSpacing"),Q(y(),8,"")]),Gu=v([Ee("blockTimestamp"),ln("tickCumulative"),Q(y(),4)]),Yo=v([xe(8),Be("initialized"),y("recentEpoch"),Ot("observationIndex"),R("poolId"),Q(Gu,100,"observations"),Q(y(),4)]),Uu=v([F("rewardState"),y("openTime"),y("endTime"),y("lastUpdateTime"),z("emissionsPerSecondX64"),y("rewardTotalEmissioned"),y("rewardClaimed"),R("tokenMint"),R("tokenVault"),R("creator"),z("rewardGrowthGlobalX64")]),zo=v([xe(8),F("bump"),R("ammConfig"),R("creator"),R("mintA"),R("mintB"),R("vaultA"),R("vaultB"),R("observationId"),F("mintDecimalsA"),F("mintDecimalsB"),Ot("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),de("tickCurrent"),Ee(),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),y("protocolFeesTokenA"),y("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),F("status"),Q(F(),7,""),Q(Uu,3,"rewardInfos"),Q(y(),16,"tickArrayBitmap"),y("totalFeesTokenA"),y("totalFeesClaimedTokenA"),y("totalFeesTokenB"),y("totalFeesClaimedTokenB"),y("fundFeesTokenA"),y("fundFeesTokenB"),y("startTime"),Q(y(),15*4-3,"padding")]),Xu=v([z("growthInsideLastX64"),y("rewardAmountOwed")]),Qo=v([xe(8),F("bump"),R("nftMint"),R("poolId"),de("tickLower"),de("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),Q(Xu,3,"rewardInfos"),Q(y(),8,"")]),Qy=v([xe(8),F("bump"),R("poolId"),de("tickLowerIndex"),de("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),Q(z(),3,"rewardGrowthInside"),Q(y(),8,"")]),zu=v([de("tick"),Ao("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),Q(z(),3,"rewardGrowthsOutsideX64"),Q(Ee(),13,"")]),Nn=v([xe(8),R("poolId"),de("startTickIndex"),Q(zu,Ke,"ticks"),F("initializedTickCount"),Q(F(),115,"")]),Hy=v([xe(329),Q(R(),100,"whitelistMints")]),Ho=v([xe(8),R("poolId"),Q(Q(y(),8),ii,"positiveTickArrayBitmap"),Q(Q(y(),8),ii,"negativeTickArrayBitmap")]),Yy=v([y(),F("bump"),R("owner"),R("poolId"),R("positionId"),R("nftAccount"),Q(y(),8)]),Zy=v([xe(8),F("bump"),R("lockOwner"),R("poolId"),R("positionId"),R("nftAccount"),R("lockNftMint"),y("recentEpoch"),Q(y(),8)]);Yo.span;var Zo=ue("Raydium_Clmm"),Qe={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],openPositionWithTokenEx:[77,255,174,82,125,29,201,46],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},jo=[188,37,179,131,82,150,84,73],$o=[16,72,250,198,14,162,212,19],dn=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,f){let b=v([z("sqrtPriceX64"),y("zero")]),w=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},...(f==null?void 0:f.map(P=>({pubkey:P,isSigner:!1,isWritable:!1})))||[]],g=Buffer.alloc(b.span);b.encode({sqrtPriceX64:p,zero:be},g);let h=Buffer.from([...Qe.createPool,...g]);return new Ce({keys:w,programId:e,data:h})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:o,ammConfigId:s,initialPriceX64:a,extendMintAccount:u}=e,[c,l]=[new C(i.address),new C(o.address)],{publicKey:m}=Oo(t,s,c,l),{publicKey:d}=qo(t,m),{publicKey:p}=ti(t,m,c),{publicKey:f}=ti(t,m,l),b=Ne(t,m).publicKey,w=[this.createPoolInstruction(t,m,n,s,d,c,p,new C(i.programId||ce),l,f,new C(o.programId||ce),b,a,u)];return{signers:[],instructions:w,instructionTypes:[Y.CreateAccount,Y.ClmmCreatePool],address:{poolId:m,observationId:d,exBitmapAccount:b,mintAVault:p,mintBVault:f},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,f,b,w,g,h,P,T,A,k,S,I,L,x){let M=v([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),z("liquidity"),y("amountMaxA"),y("amountMaxB"),Be("withMetadata"),F("optionBaseFlag"),Be("baseFlag")]),W=[...x?[{pubkey:x,isSigner:!1,isWritable:!0}]:[]],_=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:Mn,isSigner:!1,isWritable:!1},{pubkey:vt,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...W],X=Buffer.alloc(M.span);M.encode({tickLowerIndex:h,tickUpperIndex:P,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:A,liquidity:k,amountMaxA:S,amountMaxB:I,withMetadata:L==="create",baseFlag:!1,optionBaseFlag:0},X);let Z=Buffer.from([...Qe.openPosition,...X]);return new Ce({keys:_,programId:e,data:Z})}static openPositionFromLiquidityInstruction22(e,t,n,i,o,s,a,u,c,l,m,d,p,f,b,w,g,h,P,T,A,k,S,I,L){let x=v([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),z("liquidity"),y("amountMaxA"),y("amountMaxB"),Be("withMetadata"),F("optionBaseFlag"),Be("baseFlag")]),M=[...L?[{pubkey:L,isSigner:!1,isWritable:!0}]:[]],W=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:Mn,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...M],_=Buffer.alloc(x.span);x.encode({tickLowerIndex:g,tickUpperIndex:h,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:T,liquidity:A,amountMaxA:k,amountMaxB:S,withMetadata:I==="create",baseFlag:!1,optionBaseFlag:0},_);let X=Buffer.from([...Qe.openPositionWithTokenEx,..._]);return new Ce({keys:W,programId:e,data:X})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let d=[],[p,f]=[new C(e.programId),new C(e.id)],b;if(l)b=new C((await l(1))[0]);else{let L=ur.generate();d.push(L),b=L.publicKey}let w=O.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=O.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:h}=se(p,f,w),{publicKey:P}=se(p,f,g),{publicKey:T}=m?me(n.wallet,b,ge):me(n.wallet,b,ce),{publicKey:A}=Ln(b),{publicKey:k}=Xe(p,b),{publicKey:S}=Kt(p,f,i,o),I=m?this.openPositionFromLiquidityInstruction22(p,n.feePayer,f,n.wallet,b,T,S,h,P,k,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),i,o,w,g,s,a,u,c,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(p,f).publicKey:void 0):this.openPositionFromLiquidityInstruction(p,n.feePayer,f,n.wallet,b,T,A,S,h,P,k,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),i,o,w,g,s,a,u,c,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(p,f).publicKey:void 0);return{signers:d,instructions:[I],instructionTypes:[Y.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:h,tickArrayUpper:P,positionNftAccount:T,metadataAccount:A,personalPosition:k,protocolPosition:S}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let d=[],[p,f]=[new C(e.programId),new C(e.id)],b;if(l)b=new C((await l(1))[0]);else{let L=ur.generate();d.push(L),b=L.publicKey}let w=O.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=O.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:h}=se(p,f,w),{publicKey:P}=se(p,f,g),{publicKey:T}=m?me(n.wallet,b,ge):me(n.wallet,b,ce),{publicKey:A}=Ln(b),{publicKey:k}=Xe(p,b),{publicKey:S}=Kt(p,f,i,o),I=m?this.openPositionFromBaseInstruction22(p,n.feePayer,f,n.wallet,b,T,S,h,P,k,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),i,o,w,g,c,s,a,u,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(p,f).publicKey:void 0):this.openPositionFromBaseInstruction(p,n.feePayer,f,n.wallet,b,T,A,S,h,P,k,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),i,o,w,g,c,s,a,u,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(p,f).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:h,tickArrayUpper:P,positionNftAccount:T,metadataAccount:A,personalPosition:k,protocolPosition:S},instructions:[I],signers:d,instructionTypes:[Y.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,f,b,w,g,h,P,T,A,k,S,I,L,x){let M=v([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),z("liquidity"),y("amountMaxA"),y("amountMaxB"),Be("withMetadata"),F("optionBaseFlag"),Be("baseFlag")]),W=[...x?[{pubkey:x,isSigner:!1,isWritable:!0}]:[]],_=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:Mn,isSigner:!1,isWritable:!1},{pubkey:vt,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...W],X=Buffer.alloc(M.span);M.encode({tickLowerIndex:h,tickUpperIndex:P,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:A,liquidity:new si(0),amountMaxA:S==="MintA"?I:L,amountMaxB:S==="MintA"?L:I,withMetadata:k==="create",baseFlag:S==="MintA",optionBaseFlag:1},X);let Z=Buffer.from([...Qe.openPosition,...X]);return new Ce({keys:_,programId:e,data:Z})}static openPositionFromBaseInstruction22(e,t,n,i,o,s,a,u,c,l,m,d,p,f,b,w,g,h,P,T,A,k,S,I,L){let x=v([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),z("liquidity"),y("amountMaxA"),y("amountMaxB"),Be("withMetadata"),F("optionBaseFlag"),Be("baseFlag")]),M=[...L?[{pubkey:L,isSigner:!1,isWritable:!0}]:[]],W=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:Mn,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...M],_=Buffer.alloc(x.span);x.encode({tickLowerIndex:g,tickUpperIndex:h,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:T,liquidity:new si(0),amountMaxA:k==="MintA"?S:I,amountMaxB:k==="MintA"?I:S,withMetadata:A==="create",baseFlag:k==="MintA",optionBaseFlag:1},_);let X=Buffer.from([...Qe.openPositionWithTokenEx,..._]);return new Ce({keys:W,programId:e,data:X})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let d,p=[];if(l)d=new C((await l(1))[0]);else{let L=ur.generate();p.push(L),d=L.publicKey}let[f,b]=[new C(e.programId),new C(e.id)],w=O.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=O.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:h}=se(f,b,w),{publicKey:P}=se(f,b,g),{publicKey:T}=m?me(n.wallet,d,ge):me(n.wallet,d,ce),{publicKey:A}=Ln(d),{publicKey:k}=Xe(f,d),{publicKey:S}=Kt(f,b,i,o),I=m?this.openPositionFromLiquidityInstruction22(f,n.wallet,b,n.wallet,d,T,S,h,P,k,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(t.mintA.address),new C(t.mintB.address),i,o,w,g,s,a,u,c,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(f,b).publicKey:void 0):this.openPositionFromLiquidityInstruction(f,n.wallet,b,n.wallet,d,T,A,S,h,P,k,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(t.mintA.address),new C(t.mintB.address),i,o,w,g,s,a,u,c,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(f,b).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:h,tickArrayUpper:P,positionNftAccount:T,metadataAccount:A,personalPosition:k,protocolPosition:S},instructions:[I],signers:p,instructionTypes:[Y.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o,s){let a=v([]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:s?ge:ce,isSigner:!1,isWritable:!1}],c=Buffer.alloc(a.span);a.encode({},c);let l=Buffer.from([...Qe.closePosition,...c]);return new Ce({keys:u,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i,nft2022:o}){let s=new C(e.programId),a=o?me(n.wallet,i.nftMint,ge).publicKey:me(n.wallet,i.nftMint,ce).publicKey,{publicKey:u}=Xe(s,i.nftMint),c=[];return c.push(this.closePositionInstruction(s,n.wallet,i.nftMint,a,u,o)),{address:{positionNftAccount:a,personalPosition:u},signers:[],instructions:c,instructionTypes:[Y.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,f,b,w,g,h){let P=v([z("liquidity"),y("amountMaxA"),y("amountMaxB"),F("optionBaseFlag"),Be("baseFlag")]),T=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...T],k=Buffer.alloc(P.span);P.encode({liquidity:b,amountMaxA:w,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},k);let S=Buffer.from([...Qe.increaseLiquidity,...k]);return new Ce({keys:A,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a,nft2022:u}){let[c,l]=[new C(e.programId),new C(e.id)],m=O.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=O.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=se(c,l,m),{publicKey:f}=se(c,l,d),{publicKey:b}=u?me(i.wallet,n.nftMint,ge):me(i.wallet,n.nftMint,ce),{publicKey:w}=Xe(c,n.nftMint),{publicKey:g}=Kt(c,l,n.tickLower,n.tickUpper),h=this.increasePositionFromLiquidityInstruction(c,i.wallet,b,w,l,g,p,f,i.tokenAccountA,i.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ne(c,l).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:f,positionNftAccount:b,personalPosition:w,protocolPosition:g},signers:[],instructions:[h],instructionTypes:[Y.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a,nft2022:u}){let[c,l]=[new C(e.programId),new C(e.id)],m=O.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=O.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=se(c,l,m),{publicKey:f}=se(c,l,d),{publicKey:b}=u?me(i.wallet,n.nftMint,ge):me(i.wallet,n.nftMint,ce),{publicKey:w}=Xe(c,n.nftMint),{publicKey:g}=Kt(c,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:f,positionNftAccount:b,personalPosition:w,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(c,i.wallet,b,w,l,g,p,f,i.tokenAccountA,i.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ne(c,l).publicKey:void 0)],signers:[],instructionTypes:[Y.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,f,b,w,g,h){let P=v([z("liquidity"),y("amountMaxA"),y("amountMaxB"),F("optionBaseFlag"),Be("baseFlag")]),T=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...T],k=Buffer.alloc(P.span);P.encode({liquidity:new si(0),amountMaxA:b==="MintA"?w:g,amountMaxB:b==="MintA"?g:w,baseFlag:b==="MintA",optionBaseFlag:1},k);let S=Buffer.from([...Qe.increaseLiquidity,...k]);return new Ce({keys:A,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,f,b,w,g,h,P){let T=v([z("liquidity"),y("amountMinA"),y("amountMinB")]),A=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...b.map(L=>[{pubkey:L.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.rewardMint,isSigner:!1,isWritable:!1}]).flat()],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:zn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...A],S=Buffer.alloc(T.span);T.encode({liquidity:w,amountMinA:g,amountMinB:h},S);let I=Buffer.from([...Qe.decreaseLiquidity,...S]);return new Ce({keys:k,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u,nft2022:c}){let[l,m]=[new C(e.programId),new C(e.id)],d=O.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=O.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=se(l,m,d),{publicKey:b}=se(l,m,p),{publicKey:w}=c?me(i.wallet,n.nftMint,ge):me(i.wallet,n.nftMint,u),{publicKey:g}=Xe(l,n.nftMint),{publicKey:h}=Kt(l,m,n.tickLower,n.tickUpper),P=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)P.push({poolRewardVault:new C(t.rewardInfos[k].vault),ownerRewardVault:i.rewardAccounts[k],rewardMint:new C(e.rewardDefaultInfos[k].mint.address)});let T=[],A=this.decreaseLiquidityInstruction(l,i.wallet,w,g,m,h,f,b,i.tokenAccountA,i.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),P,o,s,a,Pe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,p])?Ne(l,m).publicKey:void 0);return T.push(A),{address:{tickArrayLower:f,tickArrayUpper:b,positionNftAccount:w,personalPosition:g,protocolPosition:h},signers:[],instructions:T,instructionTypes:[Y.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,f,b,w,g){let h=v([y("amount"),y("otherAmountThreshold"),z("sqrtPriceLimitX64"),Be("isBaseInput")]),P=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:zn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...P],A=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:f,sqrtPriceLimitX64:b,isBaseInput:w},A);let k=Buffer.from([...Qe.swap,...A]);return new Ce({keys:T,programId:e,data:k})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new C(e.programId),new C(e.id)],[d,p]=[new C(t.vault.A),new C(t.vault.B)],[f,b]=[new C(e.mintA.address),new C(e.mintB.address)],w=e.mintA.address===o.toString(),g=[this.swapInstruction(l,i.wallet,m,new C(e.config.id),w?i.tokenAccountA:i.tokenAccountB,w?i.tokenAccountB:i.tokenAccountA,w?d:p,w?p:d,w?f:b,w?b:f,c,n,s,a,u,!0,Ne(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[Y.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,outputMint:o,amountOut:s,amountInMax:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new C(e.programId),new C(e.id)],[d,p]=[new C(t.vault.A),new C(t.vault.B)],[f,b]=[new C(e.mintA.address),new C(e.mintB.address)],w=e.mintA.address===o.toBase58(),g=[this.swapInstruction(l,i.wallet,m,new C(e.config.id),w?i.tokenAccountB:i.tokenAccountA,w?i.tokenAccountA:i.tokenAccountB,w?p:d,w?d:p,w?b:f,w?f:b,c,n,s,a,u,!1,Ne(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[Y.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=v([y("openTime"),y("endTime"),z("emissionsPerSecondX64")]),f=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1}],b=Buffer.alloc(p.span);p.encode({openTime:ne(l),endTime:ne(m),emissionsPerSecondX64:d},b);let w=Buffer.from([...Qe.initReward,...b]);return new Ce({keys:f,programId:e,data:w})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new C(e.programId),new C(e.id)],a=Do(o,s,i.mint).publicKey,u=ni(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new C(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[Y.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=v([F("rewardIndex"),z("emissionsPerSecondX64"),y("openTime"),y("endTime")]),f=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],b=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:ne(l),endTime:ne(m)},b);let w=Buffer.from([...Qe.setRewardEmissions,...b]);return new Ce({keys:f,programId:e,data:w})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new C(e.programId),new C(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,u=new C(t.rewardInfos[d].vault),c=new C(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&Zo.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=ni(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new C(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[Y.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=v([F("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:zn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Qe.collectReward,...l]);return new Ce({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new C(e.programId),new C(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new C(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Zo.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[Y.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:i,wallet:o,nftMint:s,nft2022:a,getEphemeralSigners:u}){let c=[],l;if(u)l=new C((await u(1))[0]);else{let g=ur.generate();c.push(g),l=g.publicKey}let m=a?me(o,s,ge).publicKey:me(o,s,ce).publicKey,{publicKey:d}=Xe(n,s),p=Uo(e,l).publicKey,f=me(o,l,ce).publicKey,b=Ln(l).publicKey,w=dn.lockPositionInstructionV2({programId:e,auth:t,payer:i,positionOwner:o,lockOwner:o,positionNftAccount:m,positionId:d,lockPositionId:p,lockNftMint:l,lockNftAccount:f,metadataAccount:b,withMetadata:!0,nft2022:a,positionNftMint:s,authPositionNftAccount:me(t,s,a?ge:ce).publicKey,positionNftProgram:a?ge:ce});return{address:{positionId:d,lockPositionId:p,lockNftAccount:f,lockNftMint:l,positionNftAccount:m,metadataAccount:b},instructions:[w],signers:c,instructionTypes:[Y.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:i,lockOwner:o,positionNftAccount:s,positionId:a,positionNftMint:u,authPositionNftAccount:c,positionNftProgram:l,lockPositionId:m,lockNftMint:d,lockNftAccount:p,metadataAccount:f,withMetadata:b}){let w=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!0,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:vt,isSigner:!1,isWritable:!1},{pubkey:Mn,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1}],g=v([Be("withMetadata")]),h=Buffer.alloc(g.span);g.encode({withMetadata:b},h);let P=Buffer.from([...jo,...h]);return new Ce({keys:w,programId:e,data:P})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:i,positionNft:o}){let{publicKey:s}=me(i,o,ce),{publicKey:a}=Xe(n,o),u=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:ri(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1}];return new Ce({keys:u,programId:e,data:Buffer.from(jo)})}static harvestLockPositionInstruction(e){let[t,n]=[new C(e.poolKeys.programId),new C(e.poolKeys.id)],i=O.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),o=O.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:s}=se(t,n,i),{publicKey:a}=se(t,n,o),{publicKey:u}=me(e.owner,e.ownerPosition.nftMint,ce),{publicKey:c}=Xe(t,e.ownerPosition.nftMint),{publicKey:l}=Kt(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),m=[];for(let f=0;f<e.poolKeys.rewardInfos.length;f++)m.push({poolRewardVault:new C(e.poolKeys.rewardInfos[f].vault),ownerRewardVault:e.ownerRewardAccounts[f],rewardMint:new C(e.poolKeys.rewardInfos[f].mint.address)});let d=[...m.map(f=>[{pubkey:f.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.rewardMint,isSigner:!1,isWritable:!1}]).flat()],p=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:ri(e.programId,c).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:new C(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new C(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Nr,isSigner:!1,isWritable:!1},{pubkey:new C(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new C(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...d];return new Ce({keys:p,programId:e.programId,data:Buffer.from($o)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:i,lockOwner:o,lockNftMint:s,lockNftAccount:a,positionNftAccount:u,positionId:c,poolId:l,protocolPosition:m,vaultA:d,vaultB:p,tickArrayLower:f,tickArrayUpper:b,userVaultA:w,userVaultB:g,mintA:h,mintB:P,rewardAccounts:T,exTickArrayBitmap:A}){let k=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...T.map(I=>[{pubkey:I.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:I.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:I.rewardMint,isSigner:!1,isWritable:!1}]).flat()],S=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Nr,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},...k];return new Ce({keys:S,programId:e,data:Buffer.from($o)})}};var ai=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),pn=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ue(t)}createTxBuilder(e){return this.scope.checkOwner(),new $n({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(ai(e))}logInfo(...e){this.logger.info(ai(e))}logAndCreateError(...e){let t=ai(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var Qu=v([Ee("mintAuthorityOption"),R("mintAuthority"),y("supply"),F("decimals"),F("isInitialized"),Ee("freezeAuthorityOption"),R("freezeAuthority")]);import{PublicKey as Pg}from"@solana/web3.js";import{MintLayout as Tg,TOKEN_PROGRAM_ID as Sg}from"@solana/spl-token";var Jo=r=>new _e({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name});var cr=i=>{var o=i,{address:r,programId:e,decimals:t}=o,n=Ye(o,["address","programId","decimals"]);return G({chainId:101,address:rn(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import es from"bn.js";var ui=new es(25),lr=new es(1e4);import{PublicKey as Se,SystemProgram as Yu,SYSVAR_RENT_PUBKEY as Ug,TransactionInstruction as Lt}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Zu,TOKEN_PROGRAM_ID as Ht}from"@solana/spl-token";import mr from"bn.js";var ci=v([F("instruction"),y("amountIn"),y("minAmountOut")]),li=v([F("instruction"),y("maxAmountIn"),y("amountOut")]),Og=v([F("instruction"),F("nonce")]),Hu=v([F("instruction"),F("nonce"),y("startTime")]),mi=v([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"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),y("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("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"),Q(y(),3,"padding")]),Dg=v([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"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("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"),Q(y(),64,"padding")]),di=v([F("instruction"),y("baseAmountIn"),y("quoteAmountIn"),y("fixedSide"),y("otherAmountMin")]),pi=v([F("instruction"),y("lpAmount"),y("baseAmountMin"),y("quoteAmountMin")]);var ts=v([y("fee")]);var dr=ue("Raydium_liquidity_instruction");function ns(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s,otherAmountMin:a,modelDataPubKey:u=Et}=r,c=Buffer.alloc(di.span);di.encode({instruction:3,baseAmountIn:ne(i),quoteAmountIn:ne(o),otherAmountMin:ne(a),fixedSide:s==="base"?It:eo},c);let l=[B({pubkey:Ht,isWritable:!1}),B({pubkey:new Se(e.id)}),B({pubkey:new Se(t.authority),isWritable:!1}),B({pubkey:new Se(t.openOrders),isWritable:!1}),B({pubkey:new Se(t.targetOrders)}),B({pubkey:new Se(e.lpMint.address)}),B({pubkey:new Se(t.vault.A)}),B({pubkey:new Se(t.vault.B)})];return e.pooltype.includes("StablePool")&&l.push(B({pubkey:u})),l.push(B({pubkey:new Se(e.marketId),isWritable:!1}),B({pubkey:n.baseTokenAccount}),B({pubkey:n.quoteTokenAccount}),B({pubkey:n.lpTokenAccount}),B({pubkey:n.owner,isWritable:!1,isSigner:!0}),B({pubkey:new Se(t.marketEventQueue),isWritable:!1})),new Lt({programId:new Se(e.programId),keys:l,data:c})}function fi(r){let{poolInfo:e,poolKeys:t,userKeys:n,lpAmount:i,baseAmountMin:o,quoteAmountMin:s,modelDataPubKey:a=Et}=r,u=Wt(t),c=4;if(e.pooltype.includes("StablePool")&&(c=5),c===4||c===5){let l=Buffer.alloc(pi.span);pi.encode({instruction:4,lpAmount:ne(i),baseAmountMin:ne(o),quoteAmountMin:ne(s)},l);let m=[B({pubkey:Ht,isWritable:!1}),B({pubkey:u.id}),B({pubkey:u.authority,isWritable:!1}),B({pubkey:u.openOrders}),B({pubkey:u.targetOrders}),B({pubkey:u.mintLp.address}),B({pubkey:u.vault.A}),B({pubkey:u.vault.B})];return c===5?m.push(B({pubkey:a})):(m.push(B({pubkey:u.id})),m.push(B({pubkey:u.id}))),m.push(B({pubkey:u.marketProgramId,isWritable:!1}),B({pubkey:u.marketId}),B({pubkey:u.marketBaseVault}),B({pubkey:u.marketQuoteVault}),B({pubkey:u.marketAuthority,isWritable:!1}),B({pubkey:n.lpTokenAccount}),B({pubkey:n.baseTokenAccount}),B({pubkey:n.quoteTokenAccount}),B({pubkey:n.owner,isWritable:!1,isSigner:!0}),B({pubkey:u.marketEventQueue}),B({pubkey:u.marketBids}),B({pubkey:u.marketAsks})),new Lt({programId:u.programId,keys:m,data:l})}return new Lt({programId:u.programId,keys:[]})}function bi({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:f,userCoinVault:b,userPcVault:w,userLpVault:g,nonce:h,openTime:P,coinAmount:T,pcAmount:A,ammConfigId:k,feeDestinationId:S}){let I=v([F("instruction"),F("nonce"),y("openTime"),y("pcAmount"),y("coinAmount")]),L=[{pubkey:Ht,isSigner:!1,isWritable:!1},{pubkey:Zu,isSigner:!1,isWritable:!1},{pubkey:Yu.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:k,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!0,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],x=Buffer.alloc(I.span);return I.encode({instruction:1,nonce:h,openTime:P,coinAmount:T,pcAmount:A},x),{instruction:new Lt({keys:L,programId:r,data:x}),instructionType:Y.AmmV4CreatePool}}function ju({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n,modelDataPubKey:i=Et},o){let s=Wt(r),a=Buffer.alloc(ci.span);ci.encode({instruction:9,amountIn:ne(t),minAmountOut:ne(n)},a);let u=[B({pubkey:Ht,isWritable:!1}),B({pubkey:s.id}),B({pubkey:s.authority,isWritable:!1}),B({pubkey:s.openOrders})];return o===4&&u.push(B({pubkey:s.targetOrders})),u.push(B({pubkey:s.vault.A}),B({pubkey:s.vault.B})),o===5&&u.push(B({pubkey:i})),u.push(B({pubkey:s.marketProgramId,isWritable:!1}),B({pubkey:s.marketId}),B({pubkey:s.marketBids}),B({pubkey:s.marketAsks}),B({pubkey:s.marketEventQueue}),B({pubkey:s.marketBaseVault}),B({pubkey:s.marketQuoteVault}),B({pubkey:s.marketAuthority,isWritable:!1}),B({pubkey:e.tokenAccountIn}),B({pubkey:e.tokenAccountOut}),B({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Lt({programId:s.programId,keys:u,data:a})}function $u({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n,modelDataPubKey:i=Et},o){let s=Wt(r),a=Buffer.alloc(li.span);li.encode({instruction:11,maxAmountIn:ne(t),amountOut:ne(n)},a);let u=[B({pubkey:Ht,isWritable:!1}),B({pubkey:s.id}),B({pubkey:s.authority,isWritable:!1}),B({pubkey:s.openOrders}),B({pubkey:s.targetOrders}),B({pubkey:s.vault.A}),B({pubkey:s.vault.B})];return o===5&&u.push(B({pubkey:i})),u.push(B({pubkey:s.marketProgramId,isWritable:!1}),B({pubkey:s.marketId}),B({pubkey:s.marketBids}),B({pubkey:s.marketAsks}),B({pubkey:s.marketEventQueue}),B({pubkey:s.marketBaseVault}),B({pubkey:s.marketQuoteVault}),B({pubkey:s.marketAuthority,isWritable:!1}),B({pubkey:e.tokenAccountIn}),B({pubkey:e.tokenAccountOut}),B({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Lt({programId:s.programId,keys:u,data:a})}function Ju(r,e,t,n,i,o,s,a,u,c){let l=v([F("instructionId"),y("amountIn"),y("minAmountOut")]),m=Buffer.alloc(l.span);l.encode({instructionId:16,amountIn:u,minAmountOut:c},m);let d=[{pubkey:Ht,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:s,isWritable:!0,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!0}];return new Lt({programId:r,keys:d,data:m})}function ec(r,e,t,n,i,o,s,a,u,c){let l=v([F("instructionId"),y("maxAmountIn"),y("amountOut")]),m=Buffer.alloc(l.span);l.encode({instructionId:17,maxAmountIn:u,amountOut:c},m);let d=[{pubkey:Ht,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:s,isWritable:!0,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!0}];return new Lt({programId:r,keys:d,data:m})}function rs(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4){if(s==="in")return Ju(new Se(e.programId),new Se(e.id),new Se(e.authority),new Se(e.vault.A),new Se(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new mr(i.toString()),new mr(o.toString()));if(s==="out")return ec(new Se(e.programId),new Se(e.id),new Se(e.authority),new Se(e.vault.A),new Se(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new mr(i.toString()),new mr(o.toString()));dr.logWithError("invalid params","params",r)}throw dr.logWithError("invalid version, only support pool v4","poolKeys.version",t),new Error("invalid version")}function is(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return ju(te(G({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return $u(te(G({},a),{maxAmountIn:i,amountOut:o}),t);dr.logWithError("invalid params","params",r)}throw dr.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}var Zt=5e4,tc=v([y("x"),y("y"),y("price")]),nc=v([y("accountType"),y("status"),y("multiplier"),y("validDataCount"),Q(tc,Zt,"DataElement")]);function rc(r,e){return[0,Zt-2]}function ic(r){return[0,Zt-2]}function oc(r){return[0,Zt-2]}function sc(r,e,t){let[n,i]=rc(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=Zt-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function yi(r,e,t){let[n,i,o]=sc(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*r.multiplier*l/p}}function Yt(r,e,t){return e*r.multiplier/t}function os(r,e,t){return e*t/r.multiplier}function ac(r,e){let[t,n]=ic(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>Zt-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function uc(r,e){let[t,n]=oc(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=Zt-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function ss(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=ac(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let f,b;return n?(f=l+(m-l)*(e-u)/(c-u),b=d-(i-u)*r.multiplier/m):(f=l+(m-l)*(e-u)/(c-u),b=p+(c-i)*r.multiplier/l),[f,b,!1,a]}}}function cc(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=uc(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,d=r.DataElement[o].y,p=r.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let f,b;return n?(f=l+(m-l)*(d-e)/(d-p),b=u+m*(d-i)/r.multiplier):(f=l+(m-l)*(d-e)/(d-p),b=c-l*(i-p)/r.multiplier),[f,b,!1,a]}}}function lc(r,e){let t=ss(r,e,0,!1);return t[3]?t[0]:0}function as(r,e,t,n){let i=yi(r,e,t),o=Yt(r,e,i),s=Yt(r,t,i),a=Yt(r,n,i),u=!0,[c,l,m,d]=ss(r,o,a,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=s-l;return os(r,p,i)}}function us(r,e,t,n){let i=yi(r,e,t),o=Yt(r,e,i),s=Yt(r,t,i),a=Yt(r,n,i),u=!1,[c,l,m,d]=cc(r,s,a,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return os(r,p,i)}}function mc(r){let e=nc.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function cs(r,e,t,n){let i=lc(r,Yt(r,e,yi(r,e,t)))/r.multiplier;return n?i:1/i}var vn=class{constructor({connection:e,modelDataPubKey:t=Et}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e,this.modelDataPubKey=t}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(this.modelDataPubKey);e&&(this._layoutData=mc(e==null?void 0:e.data))}}};import{PublicKey as Ac}from"@solana/web3.js";import dk from"bn.js";import{TOKEN_PROGRAM_ID as Tc}from"@solana/spl-token";import{PublicKey as dc}from"@solana/web3.js";var pc=ue("Raydium_liquidity_serum");function ls({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=dc.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw pc.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import{Keypair as wc,PublicKey as kc}from"@solana/web3.js";import Iw from"bn.js";import{TOKEN_PROGRAM_ID as hc}from"@solana/spl-token";function fc(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function gi(r,...e){if(!fc(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function wi(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function ms(r,e){gi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var fr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),it=(r,e)=>r<<32-e|r>>>e;var dw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function bc(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function ki(r){return typeof r=="string"&&(r=bc(r)),gi(r),r}var pr=class{clone(){return this._cloneInto()}},pw={}.toString;function ds(r){let e=n=>r().update(ki(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function yc(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var ps=(r,e,t)=>r&e^~r&t,fs=(r,e,t)=>r&e^r&t^e&t,br=class extends pr{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=fr(this.buffer)}update(e){wi(this);let{view:t,buffer:n,blockLen:i}=this;e=ki(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=fr(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){wi(this),ms(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;yc(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=fr(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:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var gc=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]),Rt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Nt=new Uint32Array(64),hi=class extends br{constructor(){super(64,32,8,!1),this.A=Rt[0]|0,this.B=Rt[1]|0,this.C=Rt[2]|0,this.D=Rt[3]|0,this.E=Rt[4]|0,this.F=Rt[5]|0,this.G=Rt[6]|0,this.H=Rt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Nt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Nt[m-15],p=Nt[m-2],f=it(d,7)^it(d,18)^d>>>3,b=it(p,17)^it(p,19)^p>>>10;Nt[m]=b+Nt[m-7]+f+Nt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=it(a,6)^it(a,11)^it(a,25),p=l+d+ps(a,u,c)+gc[m]+Nt[m]|0,b=(it(n,2)^it(n,13)^it(n,22))+fs(n,i,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=i,i=n,n=p+b|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){Nt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var bs=ds(()=>new hi);var Nw=ue("Raydium_Util");function lt({fromPublicKey:r,programId:e=hc,assignSeed:t}){let n=t?btoa(t).slice(0,32):wc.generate().publicKey.toBase58().slice(0,32);return{publicKey:Pc(r,n,e),seed:n}}function Pc(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=bs(n);return new kc(i)}import{PublicKey as Ew,SystemProgram as Ww}from"@solana/web3.js";import Dw from"bn.js";import{createCloseAccountInstruction as Xw,createInitializeAccountInstruction as zw,createTransferInstruction as Qw,TOKEN_PROGRAM_ID as Hw}from"@solana/spl-token";function yr({programId:r}){let{publicKey:e}=ye([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function jt({name:r,programId:e,marketId:t}){let{publicKey:n}=ye([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function xc({programId:r,marketId:e}){let{publicKey:t}=ye([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function Sc({programId:r}){return ye([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function Ai({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=jt({name:"amm_associated_seed",programId:a,marketId:t}),l=jt({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Sc({programId:a}),p=jt({name:"coin_vault_associated_seed",programId:a,marketId:t}),f=jt({name:"pc_vault_associated_seed",programId:a,marketId:t}),b=jt({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),w=xc({programId:a,marketId:t}),g=jt({name:"target_associated_seed",programId:a,marketId:t}),h=jt({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:P}=ls({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:f,lpVault:b,openOrders:w,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:P,lookupTableAccount:Ac.default,configId:yr({programId:a})}}var Pi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},ys=r=>{let e={},t=Tc.toBase58();return Object.keys(r).map(n=>{let i=r[n],[o,s]=[i.baseMint.toBase58(),i.quoteMint.toBase58()];e[n]={id:n,version:4,status:i.status.toNumber(),programId:i.programId.toBase58(),mintA:cr({address:o,programId:t,decimals:i.baseDecimal.toNumber()}),mintB:cr({address:s,programId:t,decimals:i.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:i.poolPrice.toNumber(),mintAmountA:new N(i.mintAAmount.toString()).div(10**i.baseDecimal.toNumber()).toNumber(),mintAmountB:new N(i.mintBAmount.toString()).div(10**i.quoteDecimal.toNumber()).toNumber(),baseReserve:i.baseReserve,quoteReserve:i.quoteReserve,feeRate:new N(i.tradeFeeNumerator.toString()).div(i.tradeFeeDenominator.toString()).toNumber(),openTime:i.poolOpenTime.toString(),tvl:0,day:Pi,week:Pi,month:Pi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:i.marketId.toBase58(),configId:yr({programId:i.programId}).toBase58(),lpPrice:0,lpAmount:new N(i.lpReserve.toString()).div(10**Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())).toNumber(),lpMint:cr({address:i.lpMint.toBase58(),programId:t,decimals:Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())}),burnPercent:0}}),e};import we from"bn.js";import{PublicKey as Ek}from"@solana/web3.js";import Wk from"bn.js";import{TOKEN_PROGRAM_ID as Ok}from"@solana/spl-token";import{SystemProgram as $t,SYSVAR_RENT_PUBKEY as Bc,Transaction as gs,TransactionInstruction as Kc}from"@solana/web3.js";import{createInitializeAccountInstruction as ws,TOKEN_PROGRAM_ID as ks}from"@solana/spl-token";function Ic(r="accountFlags"){let e=new er(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Ti=v([xe(5),Ic("accountFlags"),R("ownAddress"),y("vaultSignerNonce"),R("baseMint"),R("quoteMint"),R("baseVault"),y("baseDepositsTotal"),y("baseFeesAccrued"),R("quoteVault"),y("quoteDepositsTotal"),y("quoteFeesAccrued"),y("quoteDustThreshold"),R("requestQueue"),R("eventQueue"),R("bids"),R("asks"),y("baseLotSize"),y("quoteLotSize"),y("feeRateBps"),y("referrerRebatesAccrued"),xe(7)]);function Lc({programId:r,marketInfo:e}){let t=v([F("version"),Ee("instruction"),y("baseLotSize"),y("quoteLotSize"),Ot("feeRateBps"),y("vaultSignerNonce"),y("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:Bc,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),i=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},i),new Kc({keys:n,programId:r,data:i})}async function xi({connection:r,wallet:e,marketInfo:t}){var s,a,u,c,l,m,d,p;let n=new gs,i=await r.getMinimumBalanceForRentExemption(165);n.add($t.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:ks}),$t.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:ks}),ws(t.baseVault.publicKey,t.baseMint,t.vaultOwner),ws(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner),$t.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(Ti.span),space:Ti.span,programId:t.programId}));let o=new gs;return o.add($t.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:t.lowestFeeMarket?6208320:await r.getMinimumBalanceForRentExemption((s=t.requestQueueSpace)!=null?s:5120+12),space:t.lowestFeeMarket?764:(a=t.requestQueueSpace)!=null?a:5120+12,programId:t.programId}),$t.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:t.lowestFeeMarket?79594560:await r.getMinimumBalanceForRentExemption((u=t.eventQueueSpace)!=null?u:262144+12),space:t.lowestFeeMarket?11308:(c=t.eventQueueSpace)!=null?c:262144+12,programId:t.programId}),$t.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:t.lowestFeeMarket?101977920:await r.getMinimumBalanceForRentExemption((l=t.orderbookQueueSpace)!=null?l:65536+12),space:t.lowestFeeMarket?14524:(m=t.orderbookQueueSpace)!=null?m:65536+12,programId:t.programId}),$t.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:t.lowestFeeMarket?101977920:await r.getMinimumBalanceForRentExemption((d=t.orderbookQueueSpace)!=null?d:65536+12),space:t.lowestFeeMarket?14524:(p=t.orderbookQueueSpace)!=null?p:65536+12,programId:t.programId}),Lc({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[Y.CreateAccount,Y.CreateAccount,Y.InitAccount,Y.InitAccount]},{transaction:o,signer:[],instructionTypes:[Y.CreateAccount,Y.CreateAccount,Y.CreateAccount,Y.CreateAccount,Y.CreateAccount,Y.InitMarket]}]}var Si=class extends pn{constructor(t){super(t);this.stableLayout=new vn({connection:this.scope.connection,modelDataPubKey:this.scope.cluster==="mainnet"?void 0:Vt.MODEL_DATA_PUBKEY})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new we(new N(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Jo(t[o?"mintB":"mintA"]),[u,c]=[new we(new N(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new we(new N(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new we(new N(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,N.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=It;s.isZero()||(d=m==="base"?Hn(s.mul(c),u):Hn(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Hn(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Ze(new we(1)).add(i),b=new Ze(new we(1)).sub(i),w=f.mul(d).quotient,g=b.mul(d).quotient,h=new ke(a,d),P=new ke(a,w),T=new ke(a,g);return this.logDebug("anotherAmount:",h.toFixed(),"maxAnotherAmount:",P.toFixed()),{anotherAmount:h,maxAnotherAmount:P,minAnotherAmount:T,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,poolKeys:i,amountInA:o,amountInB:s,otherAmountMin:a,fixedSide:u,config:c,txVersion:l,computeBudgetConfig:m,txTipConfig:d,feePayer:p}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",o,"amountInB:",s),(o.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:o.toFixed(),amountInB:s.toFixed()});let{account:f}=this.scope,{bypassAssociatedCheck:b,checkCreateATAOwner:w}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),[g,h]=[o.token,s.token],P=await f.getCreatedTokenAccount({mint:g.mint,associatedOnly:!1}),T=await f.getCreatedTokenAccount({mint:h.mint,associatedOnly:!1});!P&&!T&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let A=await f.getCreatedTokenAccount({mint:new Ae(n.lpMint.address)}),k=[g,h],S=[P,T],I=[o.raw,s.raw],L=o.token.mint.toBase58()===n.mintA.address?"base":"quote",x="base";["quote","base"].includes(L)||this.logAndCreateError("invalid fixedSide","fixedSide",u),L==="quote"?(k.reverse(),S.reverse(),I.reverse(),x=u==="a"?"quote":"base"):L==="base"&&(x=u==="a"?"base":"quote");let[M,W]=k,[_,X]=S,[Z,D]=I,ae=i!=null?i:await this.getAmmPoolKeys(n.id),Te=this.createTxBuilder(p),dt=await f.handleTokenAccount({side:"in",amount:Z,mint:M.mint,tokenAccount:_,bypassAssociatedCheck:b,checkCreateATAOwner:w}),{tokenAccount:Je}=dt,mt=Ye(dt,["tokenAccount"]);Te.addInstruction(mt);let He=await f.handleTokenAccount({side:"in",amount:D,mint:W.mint,tokenAccount:X,bypassAssociatedCheck:b,checkCreateATAOwner:w}),{tokenAccount:Fe}=He,Oe=Ye(He,["tokenAccount"]);Te.addInstruction(Oe);let qe=await f.handleTokenAccount({side:"out",amount:0,mint:new Ae(n.lpMint.address),tokenAccount:A,bypassAssociatedCheck:b,checkCreateATAOwner:w}),{tokenAccount:ot}=qe,ht=Ye(qe,["tokenAccount"]);return Te.addInstruction(ht),Te.addInstruction({instructions:[ns({poolInfo:n,poolKeys:ae,userKeys:{baseTokenAccount:Je,quoteTokenAccount:Fe,lpTokenAccount:ot,owner:this.scope.ownerPubKey},baseAmountIn:Z,quoteAmountIn:D,otherAmountMin:a.raw,fixedSide:x})],instructionTypes:[n.pooltype.includes("StablePool")?Y.AmmV5AddLiquidity:Y.AmmV4AddLiquidity],lookupTableAddress:ae.lookupTableAccount?[ae.lookupTableAccount]:[]}),Te.addCustomComputeBudget(m),Te.addTipInstruction(d),l===0?await Te.buildV0():Te.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:i,lpAmount:o,baseAmountMin:s,quoteAmountMin:a,config:u,txVersion:c,computeBudgetConfig:l,txTipConfig:m,feePayer:d}=t,p=i!=null?i:await this.getAmmPoolKeys(n.id),[f,b,w]=[new Ae(n.mintA.address),new Ae(n.mintB.address),new Ae(n.lpMint.address)];this.logDebug("lpAmount:",o),this.logDebug("baseAmountMin:",s),this.logDebug("quoteAmountMin:",a),o.isZero()&&this.logAndCreateError("amount must greater than zero","lpAmount",o.toString());let{account:g}=this.scope,h=await g.getCreatedTokenAccount({mint:w,associatedOnly:!1});h||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",g.tokenAccounts);let P=await g.getCreatedTokenAccount({mint:f}),T=await g.getCreatedTokenAccount({mint:b}),A=this.createTxBuilder(d),{bypassAssociatedCheck:k,checkCreateATAOwner:S}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),W=await g.handleTokenAccount({side:"out",amount:0,mint:f,tokenAccount:P,bypassAssociatedCheck:k,checkCreateATAOwner:S}),{tokenAccount:I}=W,L=Ye(W,["tokenAccount"]);A.addInstruction(L);let _=await g.handleTokenAccount({side:"out",amount:0,mint:b,tokenAccount:T,bypassAssociatedCheck:k,checkCreateATAOwner:S}),{tokenAccount:x}=_,M=Ye(_,["tokenAccount"]);return A.addInstruction(M),A.addInstruction({instructions:[fi({poolInfo:n,poolKeys:p,userKeys:{lpTokenAccount:h,baseTokenAccount:I,quoteTokenAccount:x,owner:this.scope.ownerPubKey},lpAmount:o,baseAmountMin:s,quoteAmountMin:a})],lookupTableAddress:p.lookupTableAccount?[p.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?Y.AmmV5RemoveLiquidity:Y.AmmV4RemoveLiquidity]}),A.addCustomComputeBudget(l),A.addTipInstruction(m),c===0?await A.buildV0():A.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=Ct,checkCreateATAOwner:p=!0,getEphemeralSigners:f,txVersion:b,feePayer:w}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let g=this.createTxBuilder(w),h={};for(let ae of this.scope.account.tokenAccountRawInfos)(h[ae.accountInfo.mint.toString()]===void 0||me(this.scope.ownerPubKey,ae.accountInfo.mint,Ct).publicKey.equals(ae.pubkey))&&(h[ae.accountInfo.mint.toString()]=ae.pubkey);let P=h[t.lpMint.address];if(P===void 0)throw Error("find lp account error in trade accounts");let T=i.add(a!=null?a:new we(0)),A=t.mintA.address===_e.WSOL.mint.toString(),k=t.mintB.address===_e.WSOL.mint.toString(),{account:S,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ct,mint:new Ae(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(I||{}),S===void 0)throw new Error("base token account not found");let{account:L,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ct,mint:new Ae(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(x||{}),L===void 0)throw new Error("quote token account not found");if(h[t.mintA.address]=S,h[t.mintB.address]=L,s!==void 0&&!(a!=null&&a.isZero())){let ae=Hr[s.programId],Te=mn({programId:new Ae(s.programId),poolId:new Ae(s.id),owner:this.scope.ownerPubKey,version:ae}),Je,mt=await this.scope.connection.getAccountInfo(Te);if(mt&&(Je=Io(ae).decode(mt.data)),ae!==6&&!Je){let{instruction:qe,instructionType:Pt}=Ko({id:new Ae(s.id),programId:new Ae(s.programId),version:ae,ledger:Te,owner:this.scope.ownerPubKey});g.addInstruction({instructions:[qe],instructionTypes:[Pt]})}let Fe=[];for(let qe of s.rewardInfos){let Pt=qe.mint.address===_e.WSOL.mint.toString();if(h[qe.mint.address])Fe.push(h[qe.mint.address]);else{let{account:fn,instructionParams:Mt}=await this.scope.account.getOrCreateTokenAccount({mint:new Ae(qe.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!Pt,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});fn||this.logAndCreateError("farm reward account not found:",qe.mint.address),Mt&&g.addInstruction(Mt),Fe.push(fn)}}let Oe=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],ot={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:Oe,lpAccount:P,rewardAccounts:Fe},ht=Hr[s.programId],dt=ht===6?Lo(ot):ht===5?Ro(ot):No(ot),He={3:Y.FarmV3Withdraw,5:Y.FarmV5Withdraw,6:Y.FarmV6Withdraw};g.addInstruction({instructions:[dt],instructionTypes:[He[ht]]})}let M=await this.getAmmPoolKeys(t.id),W=fi({poolInfo:t,poolKeys:M,userKeys:{lpTokenAccount:P,baseTokenAccount:S,quoteTokenAccount:L,owner:this.scope.ownerPubKey},lpAmount:T,baseAmountMin:0,quoteAmountMin:0});g.addInstruction({instructions:[W],instructionTypes:[t.pooltype.includes("StablePool")?Y.AmmV5RemoveLiquidity:Y.AmmV4RemoveLiquidity],lookupTableAddress:M.lookupTableAccount?[M.lookupTableAccount]:[]});let[_,X]=t.mintA.address===n.mintA.address?[S,L]:[L,S],Z=await this.scope.clmm.getClmmPoolKeys(n.id),D=await dn.openPositionFromBaseInstructions(te(G({poolInfo:n,poolKeys:Z,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:_,tokenAccountB:X},withMetadata:"create"},o),{base:u,getEphemeralSigners:f}));return g.addInstruction({instructions:[...D.instructions],signers:D.signers,instructionTypes:[...D.instructionTypes],lookupTableAddress:Z.lookupTableAccount?[Z.lookupTableAccount]:[]}),b===0?g.sizeCheckBuildV0({computeBudgetConfig:c}):g.sizeCheckBuild({computeBudgetConfig:c})}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:f,computeBudgetConfig:b,txTipConfig:w,feePayer:g}){var X;let h=c.feePayer||((X=this.scope.owner)==null?void 0:X.publicKey),P=c.useSOLBalance&&i.mint.equals(gr),T=c.useSOLBalance&&o.mint.equals(gr),A=this.createTxBuilder(g),{account:k,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:h,amount:s}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});A.addInstruction(S||{});let{account:I,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:T?{payer:h,amount:a}:void 0,notUseTokenAccount:T,skipCloseAccount:!T,associatedOnly:T?!1:l,checkCreateATAOwner:m});if(A.addInstruction(L||{}),k===void 0||I===void 0)throw Error("you don't has some token account");let x=Ai({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),M={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:f},{instruction:W,instructionType:_}=bi(te(G({},M),{userWallet:this.scope.ownerPubKey,userCoinVault:k,userPcVault:I,userLpVault:me(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[W],instructionTypes:[_]}),A.addCustomComputeBudget(b),A.addTipInstruction(w),A.versionBuild({txVersion:p,extInfo:{address:M}})}async createMarketAndPoolV4({programId:t=po,marketProgram:n=mo,feeDestinationId:i=fo,tokenProgram:o,baseMintInfo:s,quoteMintInfo:a,baseAmount:u,quoteAmount:c,startTime:l,ownerInfo:m,lowestFeeMarket:d,assignSeed:p,associatedOnly:f=!1,checkCreateATAOwner:b=!1,lotSize:w=1,tickSize:g=.01,txVersion:h,computeBudgetConfig:P,txTipConfig:T,feePayer:A}){var Bi,Ki,Li;let k=this.scope.ownerPubKey,S=m.feePayer||((Bi=this.scope.owner)==null?void 0:Bi.publicKey),I=m.useSOLBalance&&s.mint.equals(gr),L=m.useSOLBalance&&a.mint.equals(gr),x=p?`${s.mint.toBase58().slice(0,7)}-${a.mint.toBase58().slice(0,7)}-${p}`:void 0,M=lt({fromPublicKey:k,programId:n,assignSeed:x&&`${x}-market`}),W=lt({fromPublicKey:k,programId:n,assignSeed:x&&`${x}-request`}),_=lt({fromPublicKey:k,programId:n,assignSeed:x&&`${x}-event`}),X=lt({fromPublicKey:k,programId:n,assignSeed:x&&`${x}-bids`}),Z=lt({fromPublicKey:k,programId:n,assignSeed:x&&`${x}-asks`}),D=lt({fromPublicKey:k,programId:Ct,assignSeed:x&&`${x}-baseVault`}),ae=lt({fromPublicKey:k,programId:Ct,assignSeed:x&&`${x}-quoteVault`}),Te=0,Je=new we(100);function mt(){let st=new we(0);for(;;)try{return{vaultOwner:Ae.createProgramAddressSync([M.publicKey.toBuffer(),st.toArrayLike(Buffer,"le",8)],n),vaultSignerNonce:st}}catch{if(st.iaddn(1),st.gt(new we(25555)))throw Error("find vault owner error")}}let{vaultOwner:Fe,vaultSignerNonce:Oe}=mt(),ot=new we(Math.round(10**s.decimals*w)),ht=new we(Math.round(w*10**a.decimals*g));if(ot.eq(It))throw Error("lot size is too small");if(ht.eq(It))throw Error("tick size or lot size is too small");let dt=await xi({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:n,vaultOwner:Fe,baseMint:s.mint,quoteMint:a.mint,id:M,baseVault:D,quoteVault:ae,requestQueue:W,eventQueue:_,bids:X,asks:Z,feeRateBps:Te,quoteDustThreshold:Je,vaultSignerNonce:Oe,baseLotSize:ot,quoteLotSize:ht,lowestFeeMarket:d}}),He=this.createTxBuilder(A);He.addInstruction({instructions:dt[0].transaction.instructions,signers:dt[0].signer});for await(let st of dt.slice(1,dt.length))He.addInstruction({instructions:st.transaction.instructions,signers:st.signer,instructionTypes:st.instructionTypes});let{account:qe,instructionParams:Pt}=await this.scope.account.getOrCreateTokenAccount({mint:s.mint,owner:this.scope.ownerPubKey,createInfo:I?{payer:S,amount:u}:void 0,notUseTokenAccount:I,skipCloseAccount:!I,associatedOnly:I?!1:f,checkCreateATAOwner:b,assignSeed:I&&x?`${x}-wsol`:void 0});He.addInstruction(Pt||{});let{account:fn,instructionParams:Mt}=await this.scope.account.getOrCreateTokenAccount({mint:a.mint,owner:this.scope.ownerPubKey,createInfo:L?{payer:S,amount:c}:void 0,notUseTokenAccount:L,skipCloseAccount:!L,associatedOnly:L?!1:f,checkCreateATAOwner:b,assignSeed:L&&x?`${x}-wsol`:void 0});if(He.addInstruction(Mt||{}),qe===void 0)throw Error("you don't has base token account");if(fn===void 0)throw Error("you don't has quote token account");let Me=Ai({version:4,marketVersion:3,marketId:M.publicKey,baseMint:s.mint,quoteMint:a.mint,baseDecimals:s.decimals,quoteDecimals:a.decimals,programId:t,marketProgramId:n}),wr={programId:t,ammId:Me.id,ammAuthority:Me.authority,ammOpenOrders:Me.openOrders,lpMint:Me.lpMint,coinMint:Me.baseMint,pcMint:Me.quoteMint,coinVault:Me.baseVault,pcVault:Me.quoteVault,withdrawQueue:Me.withdrawQueue,ammTargetOrders:Me.targetOrders,poolTempLp:Me.lpVault,marketProgramId:Me.marketProgramId,marketId:Me.marketId,ammConfigId:Me.configId,feeDestinationId:i},{instruction:hs,instructionType:Ps}=bi(te(G({},wr),{userWallet:this.scope.ownerPubKey,userCoinVault:qe,userPcVault:fn,userLpVault:me(this.scope.ownerPubKey,Me.lpMint,o).publicKey,nonce:Me.nonce,openTime:l,coinAmount:u,pcAmount:c}));He.addInstruction({instructions:[hs],instructionTypes:[Ps]});let Ii=I||L?[((Ki=Pt==null?void 0:Pt.instructions)==null?void 0:Ki[0])||((Li=Mt==null?void 0:Mt.instructions)==null?void 0:Li[0])].filter(st=>!!st):void 0;return h===0?He.sizeCheckBuildV0({computeBudgetConfig:P,splitIns:Ii,address:G({requestQueue:W.publicKey,eventQueue:_.publicKey,bids:X.publicKey,asks:Z.publicKey,baseVault:D.publicKey,quoteVault:ae.publicKey,baseMint:new Ae(s.mint),quoteMint:new Ae(a.mint)},wr)}):He.sizeCheckBuild({computeBudgetConfig:P,splitIns:Ii,address:G({requestQueue:W.publicKey,eventQueue:_.publicKey,bids:X.publicKey,asks:Z.publicKey,baseVault:D.publicKey,quoteVault:ae.publicKey,baseMint:new Ae(s.mint),quoteMint:new Ae(a.mint)},wr)})}async getCreatePoolFee({programId:t}){let n=yr({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return ts.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){let[a,u]=[i.toString(),o.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(u!==t.mintA.address&&u!==t.mintB.address)throw new Error("toke not match");let{baseReserve:c,quoteReserve:l}=t,m=[c,l],d=[t.mintA.decimals,t.mintB.decimals],p=a==t.mintA.address?"base":"quote";p==="quote"&&(m.reverse(),d.reverse());let[f,b]=m,[w,g]=d,h=t.version===4,P;if(h)P=new N(b.toString()).div(10**g).div(new N(f.toString()).div(10**w));else{let _=cs(this.stableLayout.stableModelData,c.toNumber(),l.toNumber(),!1);p==="quote"?P=new N(1e6).div(_*1e6):P=new N(_*1e6).div(1e6)}let T=n,A=new we(0),k=new we(0);if(!T.isZero())if(h){k=Tn(T.mul(ui),lr);let _=T.sub(k),X=f.add(_);A=b.mul(_).div(X)}else{k=T.mul(new we(2)).div(new we(1e4));let _=T.sub(k);p==="quote"?A=new we(as(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),_.toNumber())):A=new we(us(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),_.toNumber()))}let S=new we(new N(A.toString()).mul(1-s).toFixed(0)),I=A,L=S,x=new N(A.toString()).div(new N(T.sub(k).toString()).toFixed(0));!T.isZero()&&!A.isZero()&&(x=new N(A.toString()).div(10**g).div(new N(T.sub(k).toString()).div(10**w)));let M=P.sub(x).div(P).mul(100);return{amountOut:I,minAmountOut:L,currentPrice:P,executionPrice:x,priceImpact:M,fee:k}}computeAmountIn({poolInfo:t,amountOut:n,mintIn:i,mintOut:o,slippage:s}){let{baseReserve:a,quoteReserve:u}=t;i.toString()!==t.mintA.address&&i.toString()!==t.mintB.address&&this.logAndCreateError("mintIn does not match pool"),o.toString()!==t.mintA.address&&o.toString()!==t.mintB.address&&this.logAndCreateError("mintOut does not match pool"),this.logDebug("baseReserve:",a.toString()),this.logDebug("quoteReserve:",u.toString());let c=i.toString()===t.mintA.address,[l,m]=c?[t.mintA,t.mintB]:[t.mintB,t.mintA];this.logDebug("currencyOut:",m.symbol||m.address),this.logDebug("amountOut:",new N(n.toString()).div(10**m.decimals).toDecimalPlaces(m.decimals).toString(),l.symbol||l.address),this.logDebug("slippage:",`${s*100}%`);let d=[a,u],p=c?"quote":"base";p==="base"&&d.reverse(),this.logDebug("output side:",p);let[f,b]=d,w=new N(b.toString()).div(10**t[c?"mintB":"mintA"].decimals).div(new N(f.toString()).div(10**t[c?"mintA":"mintB"].decimals));this.logDebug("currentPrice:",`1 ${l.symbol||l.address} \u2248 ${w.toString()} ${m.symbol||m.address}`),this.logDebug("currentPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new N(1).div(w).toString()} ${l.symbol||l.address}`);let g=new we(0),h=n;if(!h.isZero()){h.gt(b)&&(h=b.sub(new we(1)));let L=b.sub(h);g=f.mul(h).div(L).mul(lr).div(lr.sub(ui))}let P=new we(new N(g.toString()).mul(1+s).toFixed(0)),T=g,A=P;this.logDebug("amountIn:",new N(T.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString()),this.logDebug("maxAmountIn:",new N(A.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString());let k=null;!g.isZero()&&!h.isZero()&&(k=new N(h.toString()).div(10**m.decimals).div(new N(g.toString()).div(10**l.decimals)),this.logDebug("executionPrice:",`1 ${m.symbol||m.address} \u2248 ${k.toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`),this.logDebug("executionPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new N(1).div(k).toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`));let S=w.mul(T.toString()),I=S.sub(n.toString()).abs().div(S);return this.logDebug("priceImpact:",`${I.toString()}%`),{amountIn:T,maxAmountIn:A,currentPrice:w,executionPrice:k,priceImpact:I}}async swap({poolInfo:t,poolKeys:n,amountIn:i,amountOut:o,inputMint:s,fixedSide:a,txVersion:u,config:c,computeBudgetConfig:l,txTipConfig:m,feePayer:d}){let p=this.createTxBuilder(d),{associatedOnly:f=!0,inputUseSolBalance:b=!0,outputUseSolBalance:w=!0}=c||{},[g,h]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],P=b&&g.address===tn.toBase58(),T=w&&h.address===tn.toBase58(),{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ct,mint:new Ae(g.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:f});p.addInstruction(k||{}),A||this.logAndCreateError("input token account not found",{token:g.symbol||g.address,tokenAccountIn:A,inputTokenUseSolBalance:P,associatedOnly:f});let{account:S,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ct,mint:new Ae(h.address),owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:T?!1:f});p.addInstruction(I||{}),S===void 0&&this.logAndCreateError("output token account not found",{token:h.symbol||h.address,tokenAccountOut:S,outputTokenUseSolBalance:T,associatedOnly:f});let L=n||await this.getAmmPoolKeys(t.id),x=4;return t.pooltype.includes("StablePool")&&(x=5),p.addInstruction({instructions:[x===4?rs({version:x,poolKeys:L,userKeys:{tokenAccountIn:A,tokenAccountOut:S,owner:this.scope.ownerPubKey},amountIn:i,amountOut:o,fixedSide:a}):is({version:x,poolKeys:L,userKeys:{tokenAccountIn:A,tokenAccountOut:S,owner:this.scope.ownerPubKey},amountIn:i,amountOut:o,fixedSide:a})],instructionTypes:[x===4?Y.AmmV4SwapBaseIn:Y.AmmV5SwapBaseIn]}),p.addCustomComputeBudget(l),p.addTipInstruction(m),p.versionBuild({txVersion:u})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let i=await Ft(this.scope.connection,t.map(l=>({pubkey:new Ae(l)})),n),o={},s=[];for(let l=0;l<t.length;l++){let m=i[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=mi.decode(m.accountInfo.data);o[String(t[l])]=te(G({},d),{programId:m.accountInfo.owner}),s.push(d.baseVault,d.quoteVault)}let a={},u=await Ft(this.scope.connection,s.map(l=>({pubkey:new Ae(l)})),n);for(let l=0;l<s.length;l++){let m=u[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+s[l]);a[String(s[l])]=new we(Rc.decode(m.data).amount.toString())}let c={};for(let[l,m]of Object.entries(o)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);c[l]=te(G({},m),{baseReserve:d,mintAAmount:a[m.baseVault.toString()],mintBAmount:a[m.quoteVault.toString()],quoteReserve:p,poolPrice:new N(p.toString()).div(new N(10).pow(m.quoteDecimal.toString())).div(new N(d.toString()).div(new N(10).pow(m.baseDecimal.toString())))})}return c}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),i=ys({[t]:n}),o=i[t],s=await this.scope.tradeV2.computePoolToPoolKeys({pools:[i[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:o,poolKeys:s[0]}}};export{Si as default};
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=liquidity.mjs.map