UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

3 lines 209 kB
var gs=Object.defineProperty,ws=Object.defineProperties;var ks=Object.getOwnPropertyDescriptors;var Nn=Object.getOwnPropertySymbols;var Ai=Object.prototype.hasOwnProperty,Pi=Object.prototype.propertyIsEnumerable;var hi=(r,e,t)=>e in r?gs(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,G=(r,e)=>{for(var t in e||(e={}))Ai.call(e,t)&&hi(r,t,e[t]);if(Nn)for(var t of Nn(e))Pi.call(e,t)&&hi(r,t,e[t]);return r},te=(r,e)=>ws(r,ks(e));var He=(r,e)=>{var t={};for(var n in r)Ai.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Nn)for(var n of Nn(r))e.indexOf(n)<0&&Pi.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as Pe}from"@solana/web3.js";import{AccountLayout as Sc,NATIVE_MINT as mr,TOKEN_PROGRAM_ID as Nt}from"@solana/spl-token";import{PublicKey as Ya}from"@solana/web3.js";import bt from"bn.js";var Ht=9e15,xt=1e9,pr="0123456789abcdef",Rn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Mn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",fr={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Ht,maxE:Ht,crypto:!1},Bi,pt,j=!0,En="[DecimalError] ",Tt=En+"Invalid argument: ",Ii=En+"Precision limit exceeded",Ki=En+"crypto unavailable",Li="[object Decimal]",Me=Math.floor,xe=Math.pow,hs=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,As=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ps=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ni=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,et=1e7,Q=7,Ts=9007199254740991,xs=Rn.length-1,br=Mn.length-1,K={toStringTag:Li};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(Tt+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,a=o.d,s=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!a||!s)return!u||!c?NaN:u!==c?u:a===s?0:!a^u<0?1:-1;if(!a[0]||!s[0])return a[0]?u:s[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=a.length,i=s.length,e=0,t=n<i?n:i;e<t;++e)if(a[e]!==s[e])return a[e]>s[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())+Q,n.rounding=1,t=Ss(n,Ei(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,a,s,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(j=!1,o=l.s*xe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Le(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=xe(t,1/3),r=Me((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()),a=(r=m.precision)+3;;)if(s=n,u=s.times(s).times(s),c=u.plus(l),n=ce(c.plus(l).times(s),c.plus(u),a+2,1),Le(s.d).slice(0,a)===(t=Le(n.d)).slice(0,a))if(t=t.slice(a-3,a+1),t=="9999"||!i&&t=="4999"){if(!i&&(q(s,r+1,0),s.times(s).times(s).eq(l))){n=s;break}a+=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-Me(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};K.dividedBy=K.div=function(r){return ce(this,new this.constructor(r))};K.dividedToIntegerBy=K.divToInt=function(r){var e=this,t=e.constructor;return q(ce(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,a=o.constructor,s=new a(1);if(!o.isFinite())return new a(o.s?1/0:NaN);if(o.isZero())return s;t=a.precision,n=a.rounding,a.precision=t+Math.max(o.e,o.sd())+4,a.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/Vn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=Yt(a,1,o.times(e),new a(1),!0);for(var u,c=r,l=new a(8);c--;)u=o.times(o),o=s.minus(u.times(l.minus(u.times(l))));return q(o,a.precision=t,a.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=Yt(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/Vn(5,r)),i=Yt(o,2,i,i,!0);for(var a,s=new o(5),u=new o(16),c=new o(20);r--;)a=i.times(i),i=i.times(s.plus(a.times(u.times(a).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,ce(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()?Je(t,i,o):new t(0):new t(NaN):e.isZero()?Je(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Je(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=ce(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=Je(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,a,s,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<=br)return a=Je(l,m+4,d).times(.25),a.s=c.s,a}else{if(!c.s)return new l(NaN);if(m+4<=br)return a=Je(l,m+4,d).times(.5),a.s=c.s,a}for(l.precision=s=m+10,l.rounding=1,t=Math.min(28,s/Q+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(j=!1,e=Math.ceil(s/Q),n=1,u=c.times(c),a=new l(c),i=c;r!==-1;)if(i=i.times(u),o=a.minus(i.div(n+=2)),i=i.times(u),a=o.plus(i.div(n+=2)),a.d[e]!==void 0)for(r=e;a.d[r]===o.d[r]&&r--;);return t&&(a=a.times(2<<t-1)),j=!0,q(a,l.precision=m,l.rounding=d,!0)};K.isFinite=function(){return!!this.d};K.isInteger=K.isInt=function(){return!!this.d&&Me(this.e/Q)>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,a,s,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,s=m+p,a=Pt(c,s),n=e?vn(l,s+10):Pt(r,s),u=ce(a,n,s,1),cn(u.d,i=m,d))do if(s+=10,a=Pt(c,s),n=e?vn(l,s+10):Pt(r,s),u=ce(a,n,s,1),!o){+Le(u.d).slice(i+1,i+15)+1==1e14&&(u=q(u,m+1,0));break}while(cn(u.d,i+=10,d));return j=!0,q(u,m,d)};K.minus=K.sub=function(r){var e,t,n,i,o,a,s,u,c,l,m,d,p=this,b=p.constructor;if(r=new b(r),!p.d||!r.d)return!p.s||!r.s?r=new b(NaN):p.d?r.s=-r.s:r=new b(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,s=b.precision,u=b.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new b(p);else return new b(u===3?-0:0);return j?q(r,s,u):r}if(t=Me(r.e/Q),l=Me(p.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,a=d.length):(e=d,t=l,a=c.length),n=Math.max(Math.ceil(s/Q),a)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,a=d.length,m=n<a,m&&(a=n),n=0;n<a;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),a=c.length,n=d.length-a;n>0;--n)c[a++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=et-1;--c[i],c[n]+=et}c[n]-=d[n]}for(;c[--a]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=_n(c,t),j?q(r,s,u):r):new b(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=ce(t,r.abs(),0,3,1),e.s*=r.s):e=ce(t,r,0,n.modulo,1),e=e.times(r),j=!0,t.minus(e))};K.naturalExponential=K.exp=function(){return yr(this)};K.naturalLogarithm=K.ln=function(){return Pt(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,a,s,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,s=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),j?q(r,s,u):r;if(o=Me(m.e/Q),n=Me(r.e/Q),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,a=l.length):(t=l,n=o,a=c.length),o=Math.ceil(s/Q),a=o>a?o+1:a+1,i>a&&(i=a,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(a=c.length,i=l.length,a-i<0&&(i=a,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/et|0,c[i]%=et;for(e&&(c.unshift(e),++n),a=c.length;c[--a]==0;)c.pop();return r.d=c,r.e=_n(c,n),j?q(r,s,u):r};K.precision=K.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Tt+r);return t.d?(e=Ci(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())+Q,n.rounding=1,t=Is(n,Ei(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,a=this,s=a.d,u=a.e,c=a.s,l=a.constructor;if(c!==1||!s||!s[0])return new l(!c||c<0&&(!s||s[0])?NaN:s?a:1/0);for(j=!1,c=Math.sqrt(+a),c==0||c==1/0?(e=Le(s),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Me((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(ce(a,o,t+2,1)).times(.5),Le(o.d).slice(0,t)===(e=Le(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(a))){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(a));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=ce(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,a,s,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=Me(l.e/Q)+Me(r.e/Q),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,a=u,u=c,c=a),o=[],a=u+c,n=a;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)s=o[i]+p[n]*d[i-n-1]+e,o[i--]=s%et|0,e=s/et|0;o[i]=(o[i]+e)%et|0}for(;!o[--a];)o.pop();return e?++t:o.shift(),r.d=o,r.e=_n(o,t),j?q(r,m.precision,m.rounding):r};K.toBinary=function(r,e){return wr(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:(Fe(r,0,xt),e===void 0?e=n.rounding:Fe(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):(Fe(r,0,xt),e===void 0?e=i.rounding:Fe(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):(Fe(r,0,xt),e===void 0?e=o.rounding:Fe(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,a,s,u,c,l,m,d,p=this,b=p.d,f=p.constructor;if(!b)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Ci(b)-p.e-1,a=o%Q,e.d[0]=xe(10,a<0?Q+a:a),r==null)r=o>0?e:c;else{if(s=new f(r),!s.isInt()||s.lt(c))throw Error(Tt+s);r=s.gt(e)?o>0?e:c:s}for(j=!1,s=new f(Le(b)),l=f.precision,f.precision=o=b.length*Q*2;m=ce(s,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=s.minus(m.times(i)),s=i;return i=ce(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=ce(c,n,o,1).minus(p).abs().cmp(ce(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,j=!0,d};K.toHexadecimal=K.toHex=function(r,e){return wr(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:Fe(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(j=!1,t=ce(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 wr(this,8,r,e)};K.toPower=K.pow=function(r){var e,t,n,i,o,a,s=this,u=s.constructor,c=+(r=new u(r));if(!s.d||!r.d||!s.d[0]||!r.d[0])return new u(xe(+s,c));if(s=new u(s),s.eq(1))return s;if(n=u.precision,o=u.rounding,r.eq(1))return q(s,n,o);if(e=Me(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=Ts)return i=Ri(u,s,t,n),r.s<0?new u(1).div(i):q(i,n,o);if(a=s.s,a<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(a=1),s.e==0&&s.d[0]==1&&s.d.length==1)return s.s=a,s}return t=xe(+s,c),e=t==0||!isFinite(t)?Me(c*(Math.log("0."+Le(s.d))/Math.LN10+s.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?a/0:0):(j=!1,u.rounding=s.s=1,t=Math.min(12,(e+"").length),i=yr(r.times(Pt(s,n+t)),n),i.d&&(i=q(i,n+5,1),cn(i.d,n,o)&&(e=n+10,i=q(yr(r.times(Pt(s,e+t)),e),e+5,1),+Le(i.d).slice(n+1,n+15)+1==1e14&&(i=q(i,n+1,0)))),i.s=a,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):(Fe(r,1,xt),e===void 0?e=i.rounding:Fe(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):(Fe(r,1,xt),e===void 0?e=n.rounding:Fe(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 Le(r){var e,t,n,i=r.length-1,o="",a=r[0];if(i>0){for(o+=a,e=1;e<i;e++)n=r[e]+"",t=Q-n.length,t&&(o+=At(t)),o+=n;a=r[e],n=a+"",t=Q-n.length,t&&(o+=At(t))}else if(a===0)return"0";for(;a%10===0;)a/=10;return o+a}function Fe(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Tt+r)}function cn(r,e,t,n){var i,o,a,s;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=Q,i=0):(i=Math.ceil((e+1)/Q),e%=Q),o=xe(10,Q-e),s=r[i]%o|0,n==null?e<3?(e==0?s=s/100|0:e==1&&(s=s/10|0),a=t<4&&s==99999||t>3&&s==49999||s==5e4||s==0):a=(t<4&&s+1==o||t>3&&s+1==o/2)&&(r[i+1]/o/100|0)==xe(10,e-2)-1||(s==o/2||s==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?s=s/1e3|0:e==1?s=s/100|0:e==2&&(s=s/10|0),a=(n||t<4)&&s==9999||!n&&t>3&&s==4999):a=((n||t<4)&&s+1==o||!n&&t>3&&s+1==o/2)&&(r[i+1]/o/1e3|0)==xe(10,e-3)-1,a}function Cn(r,e,t){for(var n,i=[0],o,a=0,s=r.length;a<s;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=pr.indexOf(r.charAt(a++)),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 Ss(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Vn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=Yt(r,1,e.times(i),new r(1));for(var o=t;o--;){var a=e.times(e);e=a.times(a).minus(a).times(8).plus(1)}return r.precision-=t,e}var ce=function(){function r(n,i,o){var a,s=0,u=n.length;for(n=n.slice();u--;)a=n[u]*i+s,n[u]=a%o|0,s=a/o|0;return s&&n.unshift(s),n}function e(n,i,o,a){var s,u;if(o!=a)u=o>a?1:-1;else for(s=u=0;s<o;s++)if(n[s]!=i[s]){u=n[s]>i[s]?1:-1;break}return u}function t(n,i,o,a){for(var s=0;o--;)n[o]-=s,s=n[o]<i[o]?1:0,n[o]=s*a+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,a,s,u){var c,l,m,d,p,b,f,w,g,h,A,P,T,k,B,S,x,R,M,O,E=n.constructor,U=n.s==i.s?1:-1,Y=n.d,W=i.d;if(!Y||!Y[0]||!W||!W[0])return new E(!n.s||!i.s||(Y?W&&Y[0]==W[0]:!W)?NaN:Y&&Y[0]==0||!W?U*0:U/0);for(u?(p=1,l=n.e-i.e):(u=et,p=Q,l=Me(n.e/p)-Me(i.e/p)),M=W.length,x=Y.length,g=new E(U),h=g.d=[],m=0;W[m]==(Y[m]||0);m++);if(W[m]>(Y[m]||0)&&l--,o==null?(k=o=E.precision,a=E.rounding):s?k=o+(n.e-i.e)+1:k=o,k<0)h.push(1),b=!0;else{if(k=k/p+2|0,m=0,M==1){for(d=0,W=W[0],k++;(m<x||d)&&k--;m++)B=d*u+(Y[m]||0),h[m]=B/W|0,d=B%W|0;b=d||m<x}else{for(d=u/(W[0]+1)|0,d>1&&(W=r(W,d,u),Y=r(Y,d,u),M=W.length,x=Y.length),S=M,A=Y.slice(0,M),P=A.length;P<M;)A[P++]=0;O=W.slice(),O.unshift(0),R=W[0],W[1]>=u/2&&++R;do d=0,c=e(W,A,M,P),c<0?(T=A[0],M!=P&&(T=T*u+(A[1]||0)),d=T/R|0,d>1?(d>=u&&(d=u-1),f=r(W,d,u),w=f.length,P=A.length,c=e(f,A,w,P),c==1&&(d--,t(f,M<w?O:W,w,u))):(d==0&&(c=d=1),f=W.slice()),w=f.length,w<P&&f.unshift(0),t(A,f,P,u),c==-1&&(P=A.length,c=e(W,A,M,P),c<1&&(d++,t(A,M<P?O:W,P,u))),P=A.length):c===0&&(d++,A=[0]),h[m++]=d,c&&A[0]?A[P++]=Y[S]||0:(A=[Y[S]],P=1);while((S++<x||A[0]!==void 0)&&k--);b=A[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,Bi=b;else{for(m=1,d=h[0];d>=10;d/=10)m++;g.e=m+l*p-1,q(g,s?o+g.e+1:o,a,b)}return g}}();function q(r,e,t,n){var i,o,a,s,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,s=m[0];s>=10;s/=10)i++;if(o=e-i,o<0)o+=Q,a=e,l=m[d=0],u=l/xe(10,i-a-1)%10|0;else if(d=Math.ceil((o+1)/Q),s=m.length,d>=s)if(n){for(;s++<=d;)m.push(0);l=u=0,i=1,o%=Q,a=o-Q+1}else break e;else{for(l=s=m[d],i=1;s>=10;s/=10)i++;o%=Q,a=o-Q+i,u=a<0?0:l/xe(10,i-a-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(a<0?l:l%xe(10,i-a-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?a>0?l/xe(10,i-a):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]=xe(10,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,s=1,d--):(m.length=d+1,s=xe(10,Q-o),m[d]=a>0?(l/xe(10,i-a)%xe(10,a)|0)*s:0),c)for(;;)if(d==0){for(o=1,a=m[0];a>=10;a/=10)o++;for(a=m[0]+=s,s=1;a>=10;a/=10)s++;o!=s&&(r.e++,m[0]==et&&(m[0]=1));break}else{if(m[d]+=s,m[d]!=et)break;m[d--]=0,s=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 vi(r);var n,i=r.e,o=Le(r.d),a=o.length;return e?(t&&(n=t-a)>0?o=o.charAt(0)+"."+o.slice(1)+At(n):a>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-a)>0&&(o+=At(n))):i>=a?(o+=At(i+1-a),t&&(n=t-i-1)>0&&(o=o+"."+At(n))):((n=i+1)<a&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-a)>0&&(i+1===a&&(o+="."),o+=At(n))),o}function _n(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function vn(r,e,t){if(e>xs)throw j=!0,t&&(r.precision=t),Error(Ii);return q(new r(Rn),e,1,!0)}function Je(r,e,t){if(e>br)throw Error(Ii);return q(new r(Mn),e,t,!0)}function Ci(r){var e=r.length-1,t=e*Q+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 Ri(r,e,t,n){var i,o=new r(1),a=Math.ceil(n/Q+4);for(j=!1;;){if(t%2&&(o=o.times(e),xi(o.d,a)&&(i=!0)),t=Me(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),xi(e.d,a)}return j=!0,o}function Ti(r){return r.d[r.d.length-1]&1}function Mi(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 yr(r,e){var t,n,i,o,a,s,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,b=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=b):u=e,s=new d(.03125);r.e>-2;)r=r.times(s),m+=5;for(n=Math.log(xe(2,m))/Math.LN10*2+5|0,u+=n,t=o=a=new d(1),d.precision=u;;){if(o=q(o.times(r),u,1),t=t.times(++l),s=a.plus(ce(o,t,u,1)),Le(s.d).slice(0,u)===Le(a.d).slice(0,u)){for(i=m;i--;)a=q(a.times(a),u,1);if(e==null)if(c<3&&cn(a.d,u-n,p,c))d.precision=u+=10,t=o=s=new d(1),l=0,c++;else return q(a,d.precision=b,p,j=!0);else return d.precision=b,a}a=s}}function Pt(r,e){var t,n,i,o,a,s,u,c,l,m,d,p=1,b=10,f=r,w=f.d,g=f.constructor,h=g.rounding,A=g.precision;if(f.s<0||!w||!w[0]||!f.e&&w[0]==1&&w.length==1)return new g(w&&!w[0]?-1/0:f.s!=1?NaN:w?0:f);if(e==null?(j=!1,l=A):l=e,g.precision=l+=b,t=Le(w),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Le(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=vn(g,l+2,A).times(o+""),f=Pt(new g(n+"."+t.slice(1)),l-b).plus(c),g.precision=A,e==null?q(f,A,h,j=!0):f;for(m=f,u=a=f=ce(f.minus(1),f.plus(1),l,1),d=q(f.times(f),l,1),i=3;;){if(a=q(a.times(d),l,1),c=u.plus(ce(a,new g(i),l,1)),Le(c.d).slice(0,l)===Le(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(vn(g,l+2,A).times(o+""))),u=ce(u,new g(p),l,1),e==null)if(cn(u.d,l-b,h,s))g.precision=l+=b,c=a=f=ce(m.minus(1),m.plus(1),l,1),d=q(f.times(f),l,1),i=s=1;else return q(u,g.precision=A,h,j=!0);else return g.precision=A,u;u=c,i+=2}}function vi(r){return String(r.s*r.s/0)}function gr(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)%Q,t<0&&(n+=Q),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=Q;n<i;)r.d.push(+e.slice(n,n+=Q));e=e.slice(n),n=Q-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 Bs(r,e){var t,n,i,o,a,s,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Ni.test(e))return gr(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(As.test(e))t=16,e=e.toLowerCase();else if(hs.test(e))t=2;else if(Ps.test(e))t=8;else throw Error(Tt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),a=o>=0,n=r.constructor,a&&(e=e.replace(".",""),s=e.length,o=s-o,i=Ri(n,new n(t),o,o*2)),c=Cn(e,t,et),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=_n(c,l),r.d=c,j=!1,a&&(r=ce(r,i,s*4)),u&&(r=r.times(Math.abs(u)<54?xe(2,u):ln.pow(2,u))),j=!0,r)}function Is(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Yt(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Vn(5,t)),e=Yt(r,2,e,e);for(var i,o=new r(5),a=new r(16),s=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(a.times(i).minus(s))));return e}function Yt(r,e,t,n,i){var o,a,s,u,c=1,l=r.precision,m=Math.ceil(l/Q);for(j=!1,u=t.times(t),s=new r(n);;){if(a=ce(s.times(u),new r(e++*e++),l,1),s=i?n.plus(a):n.minus(a),n=ce(a.times(u),new r(e++*e++),l,1),a=s.plus(n),a.d[m]!==void 0){for(o=m;a.d[o]===s.d[o]&&o--;);if(o==-1)break}o=s,s=n,n=a,a=o,c++}return j=!0,a.d.length=m+1,a}function Vn(r,e){for(var t=r;--e;)t*=r;return t}function Ei(r,e){var t,n=e.s<0,i=Je(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=Ti(t)?n?2:3:n?4:1,e;pt=Ti(t)?n?1:4:n?3:2}return e.minus(i).abs()}function wr(r,e,t,n){var i,o,a,s,u,c,l,m,d,p=r.constructor,b=t!==void 0;if(b?(Fe(t,1,xt),n===void 0?n=p.rounding:Fe(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=vi(r);else{for(l=at(r),a=l.indexOf("."),b?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,a>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-a,d.d=Cn(at(d),10,i),d.e=d.d.length),m=Cn(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=b?"0p+0":"0";else{if(a<0?o--:(r=new p(r),r.d=m,r.e=o,r=ce(r,d,t,n,0,i),m=r.d,o=r.e,c=Bi),a=m[t],s=i/2,c=c||m[t+1]!==void 0,c=n<4?(a!==void 0||c)&&(n===0||n===(r.s<0?3:2)):a>s||a===s&&(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(a=0,l="";a<u;a++)l+=pr.charAt(m[a]);if(b){if(u>1)if(e==16||e==8){for(a=e==16?4:3,--u;u%a;u++)l+="0";for(m=Cn(l,i,e),u=m.length;!m[u-1];--u);for(a=1,l="1.";a<u;a++)l+=pr.charAt(m[a])}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 xi(r,e){if(r.length>e)return r.length=e,!0}function Ks(r){return new this(r).abs()}function Ls(r){return new this(r).acos()}function Ns(r){return new this(r).acosh()}function Cs(r,e){return new this(r).plus(e)}function Rs(r){return new this(r).asin()}function Ms(r){return new this(r).asinh()}function vs(r){return new this(r).atan()}function Es(r){return new this(r).atanh()}function _s(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=Je(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Je(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Je(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ce(r,e,o,1)),e=Je(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ce(r,e,o,1)),t}function Vs(r){return new this(r).cbrt()}function Os(r){return q(r=new this(r),r.e+1,2)}function Ws(r,e,t){return new this(r).clamp(e,t)}function Fs(r){if(!r||typeof r!="object")throw Error(En+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,xt,"rounding",0,8,"toExpNeg",-Ht,0,"toExpPos",0,Ht,"maxE",0,Ht,"minE",-Ht,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=fr[t]),(n=r[t])!==void 0)if(Me(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Tt+t+": "+n);if(t="crypto",i&&(this[t]=fr[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(Ki);else this[t]=!1;else throw Error(Tt+t+": "+n);return this}function Ds(r){return new this(r).cos()}function qs(r){return new this(r).cosh()}function _i(r){var e,t,n;function i(o){var a,s,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,Si(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(a=0,s=o;s>=10;s/=10)a++;j?a>i.maxE?(c.e=NaN,c.d=null):a<i.minE?(c.e=0,c.d=[0]):(c.e=a,c.d=[o]):(c.e=a,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return gr(c,o.toString())}else if(u!=="string")throw Error(Tt+o);return(s=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(s===43&&(o=o.slice(1)),c.s=1),Ni.test(o)?gr(c,o):Bs(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=Fs,i.clone=_i,i.isDecimal=Si,i.abs=Ks,i.acos=Ls,i.acosh=Ns,i.add=Cs,i.asin=Rs,i.asinh=Ms,i.atan=vs,i.atanh=Es,i.atan2=_s,i.cbrt=Vs,i.ceil=Os,i.clamp=Ws,i.cos=Ds,i.cosh=qs,i.div=Gs,i.exp=Us,i.floor=Xs,i.hypot=zs,i.ln=Qs,i.log=Hs,i.log10=js,i.log2=Ys,i.max=Zs,i.min=$s,i.mod=Js,i.mul=ea,i.pow=ta,i.random=na,i.round=ra,i.sign=ia,i.sin=oa,i.sinh=sa,i.sqrt=aa,i.sub=ua,i.sum=ca,i.tan=la,i.tanh=ma,i.trunc=da,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 Gs(r,e){return new this(r).div(e)}function Us(r){return new this(r).exp()}function Xs(r){return q(r=new this(r),r.e+1,3)}function zs(){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 Si(r){return r instanceof ln||r&&r.toStringTag===Li||!1}function Qs(r){return new this(r).ln()}function Hs(r,e){return new this(r).log(e)}function Ys(r){return new this(r).log(2)}function js(r){return new this(r).log(10)}function Zs(){return Mi(this,arguments,"lt")}function $s(){return Mi(this,arguments,"gt")}function Js(r,e){return new this(r).mod(e)}function ea(r,e){return new this(r).mul(e)}function ta(r,e){return new this(r).pow(e)}function na(r){var e,t,n,i,o=0,a=new this(1),s=[];if(r===void 0?r=this.precision:Fe(r,1,xt),n=Math.ceil(r/Q),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]:s[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):(s.push(i%1e7),o+=4);o=n/4}else throw Error(Ki);else for(;o<n;)s[o++]=Math.random()*1e7|0;for(n=s[--o],r%=Q,n&&r&&(i=xe(10,Q-r),s[o]=(n/i|0)*i);s[o]===0;o--)s.pop();if(o<0)t=0,s=[0];else{for(t=-1;s[0]===0;t-=Q)s.shift();for(n=1,i=s[0];i>=10;i/=10)n++;n<Q&&(t-=Q-n)}return a.e=t,a.d=s,a}function ra(r){return q(r=new this(r),r.e+1,this.rounding)}function ia(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function oa(r){return new this(r).sin()}function sa(r){return new this(r).sinh()}function aa(r){return new this(r).sqrt()}function ua(r,e){return new this(r).sub(e)}function ca(){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 la(r){return new this(r).tan()}function ma(r){return new this(r).tanh()}function da(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 ln=K.constructor=_i(fr);Rn=new ln(Rn);Mn=new ln(Mn);var N=ln;import Pa from"big.js";import Fn from"bn.js";import{get as Vi,set as pa}from"lodash";var kr=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}},Oi={},fa={};function ae(r){let e=Vi(Oi,r);if(!e){let t=Vi(fa,r);e=new kr({name:r,logLevel:t}),pa(Oi,r,e)}return e}import ba from"toformat";var ya=ba,mn=ya;import Wn from"big.js";import wa from"bn.js";import ka from"decimal.js-light";import dn from"bn.js";var Wi=9007199254740991;function ne(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof dn)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new dn(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Wi||r<=-Wi)&&e.logWithError(`BigNumberish number overflow: ${r}`),new dn(String(r))):typeof r=="bigint"?new dn(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new dn(0))}var On=ae("module/fraction"),hr=mn(Wn),pn=mn(ka),ha={[0]:pn.ROUND_DOWN,[1]:pn.ROUND_HALF_UP,[2]:pn.ROUND_UP},Aa={[0]:Wn.roundDown,[1]:Wn.roundHalfUp,[2]:Wn.roundUp},oe=class{constructor(e,t=new wa(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)||On.logWithError(`${e} is not an integer.`),e<=0&&On.logWithError(`${e} is not positive.`),pn.set({precision:e+1,rounding:ha[n]});let i=new pn(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)||On.logWithError(`${e} is not an integer.`),e<0&&On.logWithError(`${e} is negative.`),hr.DP=e,hr.RM=Aa[n]||1,new hr(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Ta=ae("Raydium_amount"),Fi=mn(Pa);function xa(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")):Ta.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 a=new Fn(0),s=Ar.pow(new Fn(t.decimals));if(i)a=ne(n);else{let u=new Fn(0),c=new Fn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=xa(n.toString(),t.decimals);u=ne(l),c=ne(m)}u=u.mul(s),a=u.add(c)}super(a,s);this.logger=ae(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 Fi.DP=this.token.decimals,new Fi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Sa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Di}from"@solana/spl-token";var Pr={chainId:101,address:Sa.default.toBase58(),programId:Di.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:Di.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 Br}from"@solana/web3.js";import{PublicKey as fe,SystemProgram as qi,SYSVAR_RENT_PUBKEY as Ba}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ia}from"@solana/spl-token";function I({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Ka=[I({pubkey:Ia,isWritable:!1}),I({pubkey:qi.programId,isWritable:!1}),I({pubkey:Ba,isWritable:!1})];function Tr({publicKey:r,transformSol:e}){let t=xr(r.toString());if(t instanceof fe)return e&&t.equals(Zt)?jt:t;if(e&&t.toString()===Zt.toBase58())return jt;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 xr(r){try{return new fe(r)}catch{return r}}var Dn=new fe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Sr=new fe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new fe("SysvarRent111111111111111111111111111111111"),sl=new fe("SysvarC1ock11111111111111111111111111111111"),Rt=new fe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),La=new fe("Sysvar1nstructions1111111111111111111111111"),al=qi.programId,ul=new fe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),cl=new fe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ll=new fe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ml=new fe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),dl=new fe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),pl=new fe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),fl=new fe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),bl=new fe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),yl=new fe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),gl=new fe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),wl=new fe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),jt=new fe("So11111111111111111111111111111111111111112"),Zt=fe.default;function $t(r){return Tr({publicKey:r,transformSol:!0})}var Ir=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:a=!1}){if(e===Zt.toBase58()||e instanceof Br&&Zt.equals(e)){this.decimals=ft.decimals,this.symbol=ft.symbol,this.name=ft.name,this.mint=new Br(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?Br.default:Tr({publicKey:e}),this.isToken2022=a}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ve=Ir;ve.WSOL=new Ir(te(G({},ft),{mint:ft.address}));var Kr=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=Kr;qn.SOL=new Kr(Pr);import Na from"bn.js";var Gi=new oe(new Na(100)),Ye=class extends oe{toSignificant(e=5,t,n){return this.mul(Gi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Gi).toFixed(e,t,n)}};var Ca=ae("Raydium_price"),je=class extends oe{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:a}=t;super(o,a);this.baseToken=n,this.quoteToken=i,this.scalar=new oe(Lr(n.decimals),Lr(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&&Ca.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)}};import{PublicKey as Ra}from"@solana/web3.js";import Ma from"bn.js";function Ui(r){return typeof r=="object"&&r!==null&&![ve,ke,Ra,oe,Ma,je,Ye].some(e=>typeof e=="object"&&r instanceof e)}function Mt(r){return typeof r=="string"?xr(r):Array.isArray(r)?r.map(e=>Mt(e)):Ui(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Mt(t)])):r}var St=new bt(0),Xi=new bt(1),pm=new bt(2),fm=new bt(3),bm=new bt(5),Ar=new bt(10),ym=new bt(100),gm=new bt(1e3),wm=new bt(1e4);function Lr(r){return Ar.pow(ne(r))}function Gn(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 Nr(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 Fa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Da}from"@solana/spl-token";import{ComputeBudgetProgram as zi,Keypair as Hi,PublicKey as va,Transaction as Yi,TransactionMessage as Ea,VersionedTransaction as ji}from"@solana/web3.js";var H={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 _a}from"@solana/spl-token";var Qi=ae("Raydium_txUtil"),Zi=1644;function Un(r){let e=[],t=[];return r.microLamports&&(e.push(zi.setComputeUnitPrice({microLamports:r.microLamports})),t.push(H.SetComputeUnitPrice)),r.units&&(e.push(zi.setComputeUnitLimit({units:r.units})),t.push(H.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Jt(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 Xn(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 Va(r,e){r.length<1&&Qi.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Qi.logWithError(`no signers provided:, ${e.toString()}`);let t=new Yi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Zi}catch{return!1}}function ye(r,e){let[t,n]=va.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function fn({instructions:r,payer:e,signers:t}){return Va(r,[e,...t])}function bn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Hi.generate().publicKey.toString()}){let o=new Ea({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new ji(o).serialize()).toString("base64").length<Zi}catch{return!1}}var Oa=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Wa=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof ji&&(e=Oa(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function vt(r){let e=[];return r.forEach(t=>{t instanceof Yi&&(t.recentBlockhash||(t.recentBlockhash=_a.toBase58()),t.feePayer||(t.feePayer=Hi.generate().publicKey)),e.push(Wa(t))}),console.log("simulate tx string:",e),e}function le(r,e,t){return ye([r.toBuffer(),(t!=null?t:Da).toBuffer(),e.toBuffer()],new Fa("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as $}from"@solana/web3.js";var $i=new $("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ji=new $("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),eo=new $("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),to=new $("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Wm=new $("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),no=new $("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Fm=new $("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ro=new $("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Dm=new $("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),qm=new $("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Gm=new $("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Um=new $("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Xm=new $("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),zm=new $("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),io=new $("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Qm=new $("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Hm=new $("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ym=new $("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),jm=new $("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Zm=new $("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),$m=new $("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Jm=new $("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),qa=new $("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Ga=new $("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Ua=new $("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),ed=new $("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Xa=new $("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),td=new $("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),za=new $("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var nd={SERUM_MARKET:$.default,OPENBOOK_MARKET:new $("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:$.default,FarmV3:new $("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new $("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new $("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new $("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new $("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new $("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new $("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new $("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new $("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:qa,CREATE_CPMM_POOL_AUTH:Ga,CREATE_CPMM_POOL_FEE_ACC:Ua,FEE_DESTINATION_ID:new $("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:Xa,LCOK_CPMM_AUTH:za};import nt from"bn.js";var yn=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,a=new nt(o.maximumFee.toString()),s=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===yn){let u=new nt(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:s}}else{let u=gn(r.mul(new nt(yn)),new nt(yn-o.transferFeeBasisPoints)),c=new nt(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=gn(l.mul(new nt(o.transferFeeBasisPoints)),new nt(yn)),d=m.gt(a)?a:m;return{amount:l,fee:d,expirationTime:s}}else{let u=gn(r.mul(new nt(o.transferFeeBasisPoints)),new nt(yn)),c=u.gt(a)?a:u;return{amount:r,fee:c,expirationTime:s}}}function Bt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function gn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new nt(0))?t.add(new nt(1)):t}import{PublicKey as oo,AddressLookupTableAccount as zn}from"@solana/web3.js";async function Cr({connection:r,address:e}){let t=await yt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new oo(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],a=e[i];if(!o)continue;let s=new zn({key:a,state:zn.deserialize(o.data)});n[a.toString()]=s,Qn[a.toString()]=s}return n}var Qn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new zn({key:new oo("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:zn.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};import{PublicKey as en,sendAndConfirmTransaction as Rr,SystemProgram as Qa,Transaction as wn,TransactionMessage as kn,VersionedTransaction as hn}from"@solana/web3.js";import Ha from"axios";var Hn=2e3,Yn=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 Ha.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}=Un(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){return e?(this.endInstructions.push(Qa.transfer({fromPubkey:this.owner.publicKey,toPubkey:new en(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(H.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:a=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...a.filter(s=>s!==en.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 wn;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 c;let{recentBlockHash:o,skipPreflight:a=!0,sendAndConfirm:s}=i||{},u=o!=null?o:await Jt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),vt([t]),(c=this.owner)!=null&&c.isKeyPair)return{txId:s?await Rr(this.connection,t,this.signers.find(m=>m.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:a}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:a}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:a}),signedTx:l[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),a=[i,...o.map(l=>l.transaction)],s=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&s.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:a,signers:s,instructionTypes:u,execute:async l=>{var g;let{sequentially:m,onTxUpdate:d,skipTxCount:p=0,recentBlockHash:b,skipPreflight:f=!0}=l||{},w=b!=null?b:await Jt(this.connection,this.blockhashCommitment);if((g=this.owner)!=null&&g.isKeyPair){if(m){let h=[],A=0;for(let P of a){if(++A,A<=p)continue;let T=await Rr(this.connection,P,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});h.push(T)}return{txIds:h,signedTxs:a}}return{txIds:await await Promise.all(a.map(async h=>(h.recentBlockhash=w,await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:f})))),signedTxs:a}}if(this.signAllTransactions){let h=a.map((P,T)=>(P.recentBlockhash=w,s[T].length&&P.sign(...s[T]),P));vt(h);let A=await this.signAllTransactions(h);if(m){let P=0,T=[],k=async()=>{if(!A[P])return;let B=await this.connection.sendRawTransaction(A[P].serialize(),{skipPreflight:f});T.push({txId:B,status:"sent",signedTx:A[P]}),d==null||d([...T]),P++;let S=!1,x=null,R=null,M=O=>{x!==null&&clearInterval(x),R!==null&&this.connection.removeSignatureListener(R);let E=T.findIndex(U=>U.txId===B);if(E>-1){if(T[E].status==="error"||T[E].status==="success")return;T[E].status=O.err?"error":"success"}d==null||d([...T]),O.err||k()};this.loopMultiTxStatus&&(x=setInterval(async()=>{var O;if(S){clearInterval(x);return}try{let E=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});E&&(S=!0,clearInterval(x),M({err:((O=E.meta)==null?void 0:O.err)||null}),console.log("tx status from getTransaction:",B))}catch(E){S=!0,clearInterval(x),console.error("getTransaction timeout:",E,B)}},Hn)),R=this.connection.onSignature(B,O=>{if(S){this.connection.removeSignatureListener(R);return}S=!0,M(O)},"confirmed"),this.connection.getSignatureStatus(B)};return await k(),{txIds:T.map(B=>B.txId),signedTxs:A}}else{let P=[];for(let T=0;T<A.length;T+=1){let k=await this.connection.sendRawTransaction(A[T].serialize(),{skipPreflight:f});P.push(k)}return{txIds:P,signedTxs:A}}}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 f;let b=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:o}=b,a=He(b,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),s=G(G({},this.cluster==="devnet"?{}:Qn),t),u=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let w of u)s[w]===void 0&&c.push(new en(w));let l=await Cr({connection:this.connection,address:c});for(let[w,g]of Object.entries(l))s[w]=g;let m=i?en.default.toBase58():o!=null?o:await Jt(this.connection,this.blockhashCommitment),d=new kn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((f=this.owner)==null?void 0:f.signer)&&!this.signers.some(w=>w.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new hn(d);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async w=>{var A;let{skipPreflight:g=!0,sendAndConfirm:h}=w||{};if(vt([p]),(A=this.owner)!=null&&A.isKeyPair){let P=await this.connection.sendTransaction(p,{skipPreflight:g});return h&&await Xn(this.connection,P),{txId:P,signedTx:p}}if(this.signAllTransactions){let P=await this.signAllTransactions([p]);return{txId:await this.connection.sendTransaction(P[0],{skipPreflight:g}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}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),a=[i,...o.map(l=>l.transaction)],s=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&s.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),a.forEach(async(l,m)=>{l.sign(s[m])}),{builder:this,transactions:a,signers:s,instructionTypes:u,buildProps:n,execute:async l=>{var f;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:b=!0}=l||{};if(p&&a.forEach(w=>w.message.recentBlockhash=p),vt(a),(f=this.owner)!=null&&f.isKeyPair){if(m){let w=[];for(let g of a){let h=await this.connection.sendTransaction(g,{skipPreflight:b});await Xn(this.connection,h),w.push(h)}return{txIds:w,signedTxs:a}}return{txIds:await Promise.all(a.map(async w=>await this.connection.sendTransaction(w,{skipPreflight:b}))),signedTxs:a}}if(this.signAllTransactions){let w=await this.signAllTransactions(a);if(m){let g=0,h=[],A=async()=>{if(!w[g])return;let P=await this.connection.sendTransaction(w[g],{skipPreflight:b});h.push({txId:P,status:"sent",signedTx:w[g]}),d==null||d([...h]),g++;let T=!1,k=null,B=null,S=x=>{k!==null&&clearInterval(k),B!==null&&this.connection.removeSignatureListener(B);let R=h.findIndex(M=>M.txId===P);if(R>-1){if(h[R].status==="error"||h[R].status==="success")return;h[R].status=x.err?"error":"success"}d==null||d([...h]),x.err||A()};this.loopMultiTxStatus&&(k=setInterval(async()=>{var x;if(T){clearInterval(k);return}try{let R=await this.connection.getTransaction(P,{commitment:"confirmed",maxSupportedTransactionVersion:0});R&&(T=!0,clearInterval(k),S({err:((x=R.meta)==null?void 0:x.err)||null}),console.log("tx status from getTransaction:",P))}catch(R){T=!0,clearInterval(k),console.error("getTransaction timeout:",R,P)}},Hn)),B=this.connection.onSignature(P,x=>{if(T){this.connection.removeSignatureListener(B);return}T=!0,S(x)},"confirmed"),this.connection.getSignatureStatus(P)};return A(),{txIds:[],signedTxs:w}}else{let g=[];for(let h=0;h<w.length;h+=1){let A=await this.connection.sendTransaction(w[h],{skipPreflight:b});g.push(A)}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=He(m,["splitIns","computeBudgetConfig"]),o=n?Un(n):{instructions:[],instructionTypes:[]},a=this.signers.reduce((p,b)=>te(G({},p),{[b.publicKey.toBase58()]:b}),{}),s=[],u=[],c=[],l=0;if(this.allInstructions.forEach(p=>{let b=[...c,p],f=n?[...o.instructions,...b]:b,g=[...new Set(b.map(h=>h.keys.filter(A=>A.isSigner).map(A=>A.pubkey.toString())).flat()).values()].map(h=>new en(h));if(p!==t[l]&&c.length<12&&(fn({instructions:f,payer:this.feePayer,signers:g})||fn({instructions:b,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,fn({instructions:n?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:g})?s.push(new wn().add(...o.instructions,...c)):s.push(new wn().add(...c)),u.push(Array.from(new Set(c.map(h=>h.keys.filter(A=>A.isSigner).map(A=>A.pubkey.toString())).flat())).map(h=>a[h]).filter(h=>h!==void 0)),c=[p]}}),c.length>0){let b=[...new Set(c.map(f=>f.keys.filter(w=>w.isSigner).map(w=>w.pubkey.toString())).flat()).values()].map(f=>a[f]).filter(f=>f!==void 0);fn({instructions:n?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:b.map(f=>f.publicKey)})?s.push(new wn().add(...o.instructions,...c)):s.push(new wn().add(...c)),u.push(b)}return s.forEach(p=>p.feePayer=this.feePayer),(d=this.owner)!=null&&d.signer&&u.forEach(p=>{p.some(b=>b.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:s,signers:u,instructionTypes:this.instructionTypes,execute:async p=>{var P;let{sequentially:b,onTxUpdate:f,skipTxCount:w=0,recentBlockHash:g,skipPreflight:h=!0}=p||{},A=g!=null?g:await Jt(this.connection,this.blockhashCommitment);if(s.forEach(async(T,k)=>{T.recentBlockhash=A,u[k].length&&T.sign(...u[k])}),vt(s),(P=this.owner)!=null&&P.isKeyPair){if(b){let T=0,k=[];for(let B of s){if(++T,T<=w){k.push("tx skipped");continue}let S=await Rr(this.connection,B,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:h});k.push(S)}return{txIds:k,signedTxs:s}}return{txIds:await Promise.all(s.map(async T=>await this.connection.sendRawTransaction(T.serialize(),{skipPreflight:h}))),signedTxs:s}}if(this.signAllTransactions){let T=await this.signAllTransactions(s.slice(w,s.length)),k=[...s.slice(0,w),...T];if(b){let B=0,S=[],x=async()=>{if(!k[B])return;B<w&&(S.push({txId:"",status:"success",signedTx:k[B]}),f==null||f([...S]),B++,x());let R=await this.connection.sendRawTransaction(k[B].serialize(),{skipPreflight:h});S.push({txId:R,status:"sent",signedTx:k[B]}),f==null||f([...S]),B++;let M=!1,O=null,E=null,U=Y=>{O!==null&&clearInterval(O),E!==null&&this.connection.removeSignatureListener(E);let W=S.findIndex(pe=>pe.txId===R);if(W>-1){if(S[W].status==="error"||S[W].status==="success")return;S[W].status=Y.err?"error":"success"}f==null||f([...S]),Y.err||x()};this.loopMultiTxStatus&&(O=setInterval(async()=>{var Y;if(M){clearInterval(O);return}try{let W=await this.connection.getTransaction(R,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(M=!0,clearInterval(O),U({err:((Y=W.meta)==null?void 0:Y.err)||null}),console.log("tx status from getTransaction:",R))}catch(W){M=!0,clearInterval(O),console.error("getTransaction timeout:",W,R)}},Hn)),E=this.connection.onSignature(R,Y=>{if(M){this.connection.removeSignatureListener(E);return}M=!0,U(Y)},"confirmed"),this.connection.getSignatureStatus(R)};return await x(),{txIds:S.map(R=>R.txId),signedTxs:k}}else{let B=[];for(let S=0;S<k.length;S+=1){let x=await this.connection.sendRawTransaction(k[S].serialize(),{skipPreflight:h});B.push(x)}return{txIds:B,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var A;let h=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:o=[]}=h,a=He(h,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress"]),s=G(G({},this.cluster==="devnet"?{}:Qn),i),u=Array.from(new Set([...this.lookupTableAddress,...o])),c=[];for(let P of u)s[P]===void 0&&c.push(new en(P));let l=await Cr({connection:this.connection,address:c});for(let[P,T]of Object.entries(l))s[P]=T;let m=t?Un(t):{instructions:[],instructionTypes:[]},d=await Jt(this.connection,this.blockhashCommitment),p=this.signers.reduce((P,T)=>te(G({},P),{[T.publicKey.toBase58()]:T}),{}),b=[],f=[],w=[],g=0;if(this.allInstructions.forEach(P=>{let T=[...w,P],k=t?[...m.instructions,...T]:T;if(P!==n[g]&&w.length<12&&(bn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})||bn({instructions:T,payer:this.feePayer,lookupTableAddressAccount:s})))w.push(P);else{if(w.length===0)throw Error("item ins too big");g+=P===n[g]?1:0;let B={};for(let S of[...new Set(u)])s[S]!==void 0&&(B[S]=s[S]);if(t&&bn({instructions:[...m.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let S=new kn({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...w]}).compileToV0Message(Object.values(s));b.push(new hn(S))}else{let S=new kn({payerKey:this.feePayer,recentBlockhash:d,instructions:[...w]}).compileToV0Message(Object.values(s));b.push(new hn(S))}f.push(Array.from(new Set(w.map(S=>S.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(S=>p[S]).filter(S=>S!==void 0)),w=[P]}}),w.length>0){let T=[...new Set(w.map(k=>k.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat()).values()].map(k=>p[k]).filter(k=>k!==void 0);if(t&&bn({instructions:[...m.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let k=new kn({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...w]}).compileToV0Message(Object.values(s));b.push(new hn(k))}else{let k=new kn({payerKey:this.feePayer,recentBlockhash:d,instructions:[...w]}).compileToV0Message(Object.values(s));b.push(new hn(k))}f.push(T)}return(A=this.owner)!=null&&A.signer&&f.forEach(P=>{P.some(T=>T.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),{builder:this,transactions:b,buildProps:e,signers:f,instructionTypes:this.instructionTypes,execute:async P=>{var R;let{sequentially:T,onTxUpdate:k,skipTxCount:B=0,recentBlockHash:S,skipPreflight:x=!0}=P||{};if(b.map(async(M,O)=>{f[O].length&&M.sign(f[O]),S&&(M.message.recentBlockhash=S)}),vt(b),(R=this.owner)!=null&&R.isKeyPair){if(T){let M=0,O=[];for(let E of b){if(++M,M<=B){console.log("skip tx: ",M),O.push("tx skipped");continue}let U=await this.connection.sendTransaction(E,{skipPreflight:x});await Xn(this.connection,U),O.push(U)}return{txIds:O,signedTxs:b}}return{txIds:await Promise.all(b.map(async M=>await this.connection.sendTransaction(M,{skipPreflight:x}))),signedTxs:b}}if(this.signAllTransactions){let M=await this.signAllTransactions(b.slice(B,b.length)),O=[...b.slice(0,B),...M];if(T){let E=0,U=[],Y=async()=>{if(!O[E])return;if(E<B){U.push({txId:"",status:"success",signedTx:O[E]}),k==null||k([...U]),E++,Y();return}let W=await this.connection.sendTransaction(O[E],{skipPreflight:x});U.push({txId:W,status:"sent",signedTx:O[E]}),k==null||k([...U]),E++;let pe=!1,De=null,$e=null,it=qe=>{De!==null&&clearInterval(De),$e!==null&&this.connection.removeSignatureListener($e);let Ie=U.findIndex(ot=>ot.txId===W);if(Ie>-1){if(U[Ie].status==="error"||U[Ie].status==="success")return;U[Ie].status=qe.err?"error":"success"}k==null||k([...U]),qe.err||Y()};this.loopMultiTxStatus&&(De=setInterval(async()=>{var qe;if(pe){clearInterval(De);return}try{let Ie=await this.connection.getTransaction(W,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ie&&(pe=!0,clearInterval(De),it({err:((qe=Ie.meta)==null?void 0:qe.err)||null}),console.log("tx status from getTransaction:",W))}catch(Ie){pe=!0,clearInterval(De),console.error("getTransaction timeout:",Ie,W)}},Hn)),$e=this.connection.onSignature(W,qe=>{if(pe){this.connection.removeSignatureListener($e);return}pe=!0,it(qe)},"confirmed"),this.connection.getSignatureStatus(W)};return Y(),{txIds:[],signedTxs:O}}else{let E=[];for(let U=0;U<O.length;U+=1){let Y=await this.connection.sendTransaction(O[U],{skipPreflight:x});E.push(Y)}return{txIds:E,signedTxs:O}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};import{MINT_SIZE as Qd,TOKEN_PROGRAM_ID as Hd,getTransferFeeConfig as Yd,unpackMint as jd}from"@solana/spl-token";var Mr=ae("Raydium_accountInfo_util");async function yt(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}=G({batchRequest:!1},t),a=Nr(e,o),s=new Array(a.length).fill([]);if(n){let u=a.map(m=>{let d=r._buildArgs([m.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=Nr(u,10);s=(await(await Promise.all(c.map(async m=>await r._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&Mr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:b,lamports:f,owner:w,rentEpoch:g}=d;return p.length!==2&&p[1]!=="base64"&&Mr.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:b,lamports:f,owner:new Ya(w),rentEpoch:g}}return null})))}else try{s=await Promise.all(a.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&Mr.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return s.flat()}async function Et(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 su}from"@solana/web3.js";import lo,{isBN as mo}from"bn.js";import{bits as ja,BitStructure as Jd,blob as Za,Blob as ep,cstr as tp,f32 as np,f32be as rp,f64 as ip,f64be as op,greedy as sp,Layout as $a,ns64 as ap,ns64be as up,nu64 as cp,nu64be as lp,offset as mp,s16 as dp,s16be as pp,s24 as fp,s24be as bp,s32 as Ja,s32be as yp,s40 as gp,s40be as wp,s48 as kp,s48be as hp,s8 as Ap,seq as eu,struct as Pp,Structure as tu,u16 as nu,u16be as Tp,u24 as xp,u24be as Sp,u32 as ru,u32be as Bp,u40 as Ip,u40be as Kp,u48 as Lp,u48be as Np,u8 as iu,UInt as ou,union as Cp,Union as Rp,unionLayoutDiscriminator as Mp,utf8 as vp}from"@solana/buffer-layout";var jn=$a,ao=tu;var vr=ou;var uo=iu,_t=nu;var Er=ru;var me=Ja;var co=eu;var Te=Za;var _r=ja;var Vt=class extends jn{constructor(t,n,i){super(t,i);this.blob=Te(t),this.signed=n}decode(t,n=0){let i=new lo(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 lo(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Zn=class extends jn{constructor(t){super(8,t);this._lower=_r(Er(),!1),this._upper=_r(Er(),!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 vr(1,r)}function Ee(r){return new vr(4,r)}function y(r){return new Vt(8,!1,r)}function X(r){return new Vt(16,!1,r)}function po(r){return new Vt(1,!0,r)}function tn(r){return new Vt(8,!0,r)}function fo(r){return new Vt(16,!0,r)}var $n=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 L(r){return new $n(Te(32),e=>new su(e),e=>e.toBuffer(),r)}function Se(r){return new $n(uo(),au,uu,r)}function au(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function uu(r){return r?1:0}var Vr=class extends ao{decode(e,t){return super.decode(e,t)}};function v(r,e,t){return new Vr(r,e,t)}function z(r,e,t){let n,i=typeof e=="number"?e:mo(e)?e.toNumber():new Proxy(e,{get(o,a){if(!n){let s=Reflect.get(o,"count");n=mo(s)?s.toNumber():s,Reflect.set(o,"count",n)}return Reflect.get(o,a)},set(o,a,s){return a==="count"&&(n=s),Reflect.set(o,a,s)}});return co(r,i,t)}import{PublicKey as bo}from"@solana/web3.js";var Zp=ae("Raydium_farm_config"),$p=new bo("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Jp=new bo("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var yo={3:Wr,5:go,6:wo};var Jn={"Standard SPL":0,"Option tokens":1},Or={[$i.toString()]:3,[Ji.toString()]:4,[eo.toString()]:5,[to.toString()]:6};var Fr=v([F("instruction")]),du=v([F("instruction")]),pu=v([y("rewardState"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardLastUpdateTime"),y("totalReward"),y("totalRewardEmissioned"),y("rewardClaimed"),y("rewardPerSecond"),X("accRewardPerShare"),L("rewardVault"),L("rewardMint"),L("rewardSender"),y("rewardType"),z(y(),15,"padding")]),fu=v([y("state"),y("nonce"),L("lpVault"),L("rewardVault"),L(),L(),y(),y(),y("totalReward"),X("perShareReward"),y("lastSlot"),y("perSlotReward")]),bu=v([y("state"),y("nonce"),L("lpVault"),L("rewardVaultA"),y("totalRewardA"),X("perShareRewardA"),y("perSlotRewardA"),F("option"),L("rewardVaultB"),Te(7),y("totalRewardB"),X("perShareRewardB"),y("perSlotRewardB"),y("lastSlot"),L()]),yu=v([y(),y("state"),y("nonce"),y("validRewardTokenNum"),X("rewardMultiplier"),y("rewardPeriodMax"),y("rewardPeriodMin"),y("rewardPeriodExtend"),L("lpMint"),L("lpVault"),z(pu,5,"rewardInfos"),L("creator"),L(),z(y(),32,"padding")]),cu=new Proxy(fu,{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)}}),lu=new Proxy(bu,{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)}}),mu=new Proxy(yu,{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 a;return te(G({},o),{rewardType:((a=Object.entries(Jn).find(s=>String(s[1])===o.rewardType.toString()))!=null?a:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),gu=v([y("isSet"),y("rewardPerSecond"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardType")]),wu=v([F("instruction"),y("nonce"),z(gu,5,"rewardTimeInfo")]),ku=v([F("instruction"),y("rewardReopenTime"),y("rewardEndTime"),y("rewardPerSecond")]),hu=v([F("instruction"),y("isSet"),y("rewardPerSecond"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardType")]),af=v([y("state"),L("id"),L("owner"),y("deposited"),z(y(),1,"rewardDebts")]),Wr=v([y("state"),L("id"),L("owner"),y("deposited"),z(X(),1,"rewardDebts"),y(""),y("voteLockedBalance"),z(y(),15)]),uf=v([y("state"),L("id"),L("owner"),y("deposited"),z(y(),2,"rewardDebts")]),go=v([y("state"),L("id"),L("owner"),y("deposited"),z(X(),2,"rewardDebts"),z(y(),17)]),wo=v([y(),y("state"),L("id"),L("owner"),y("deposited"),z(X(),5,"rewardDebts"),z(y(),16)]),Ot=v([F("instruction"),y("amount")]),Au=v([L("mint"),L("grantAuthority"),y("baselineVoteWeightScaledFactor"),y("maxExtraLockupVoteWeightScaledFactor"),y("lockupSaturationSecs"),po("digitShift"),z(F(),7,"reserved1"),z(y(),7,"reserved2")]),Pu=v([Te(8),L("governanceProgramId"),L("realm"),L("realmGoverningTokenMint"),L("realmAuthority"),z(F(),32,"reserved1"),z(Au,4,"votingMints"),tn("timeOffset"),F("bump"),z(F(),7,"reserved2"),z(y(),11,"reserved3")]),Tu=v([tn("startTime"),tn("endTime"),F("kind"),z(F(),15,"reserved")]),xu=v([z(Tu,1,"lockup"),y("amountDeposited_native"),y("amountInitiallyLockedNative"),Se("isUsed"),Se("allowClawback"),F("votingMintConfigIdx"),z(F(),29,"reserved")]),Su=v([Te(8),L("voterAuthority"),L("registrar"),z(xu,32,"deposits"),F("voterBump"),F("voterWweightRecordBump"),z(F(),94,"reserved")]);import yf from"bn.js";var Dr=v([L("mint"),L("owner"),y("amount"),Ee("delegateOption"),L("delegate"),F("state"),Ee("isNativeOption"),y("isNative"),y("delegatedAmount"),Ee("closeAuthorityOption"),L("closeAuthority")]);var Bu=ae("Raydium.farm.util");function nn({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 ko(r){let e=yo[r];return e||Bu.logWithError("invalid version",r),e}import{PublicKey as _e,SystemProgram as Iu,SYSVAR_CLOCK_PUBKEY as ho,SYSVAR_RENT_PUBKEY as Ku,TransactionInstruction as er}from"@solana/web3.js";import qf from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Uf,createAssociatedTokenAccountInstruction as Xf,TOKEN_PROGRAM_ID as qr}from"@solana/spl-token";var Lu=ae("Raydium_farm_instruction"),nb={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 Ao(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,a={3:9,5:10}[e];a||Lu.logWithError(`invalid farm pool version: ${e}`);let s=Buffer.alloc(Fr.span);Fr.encode({instruction:a},s);let u=[I({pubkey:t}),I({pubkey:n}),I({pubkey:o,isWritable:!1}),I({pubkey:Iu.programId,isWritable:!1}),I({pubkey:Ku,isWritable:!1})];return{instruction:new er({programId:i,keys:u,data:s}),instructionType:H.FarmV3CreateLedger}}function Po(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:a}=r,[s,u]=[new _e(e.programId),new _e(e.id)],c=nn({programId:s,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ot.span);Ot.encode({instruction:2,amount:ne(a)},l);let m=[I({pubkey:qr,isWritable:!1}),I({pubkey:u}),I({pubkey:new _e(t.authority),isWritable:!1}),I({pubkey:new _e(t.lpVault)}),I({pubkey:c}),I({pubkey:o,isWritable:!1,isSigner:!0}),I({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(I({pubkey:new _e(t.rewardInfos[d].vault)})),m.push(I({pubkey:i[d]}));return new er({programId:s,keys:m,data:l})}function To(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:a,userAuxiliaryLedgers:s}=r,[u,c]=[new _e(e.programId),new _e(e.id)],l=nn({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ot.span);Ot.encode({instruction:12,amount:ne(a)},m);let d=[I({pubkey:c}),I({pubkey:new _e(t.authority),isWritable:!1}),I({pubkey:l}),I({pubkey:o,isWritable:!1,isSigner:!0}),I({pubkey:n}),I({pubkey:new _e(t.lpVault)}),I({pubkey:i[0]}),I({pubkey:new _e(t.rewardInfos[0].vault)}),I({pubkey:ho,isWritable:!1}),I({pubkey:qr,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(I({pubkey:i[p]})),d.push(I({pubkey:new _e(t.rewardInfos[p].vault)}));if(s)for(let p of s)d.push(I({pubkey:p}));return new er({programId:u,keys:d,data:m})}function xo(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:a,userAuxiliaryLedgers:s}=r,[u,c]=[new _e(e.programId),new _e(e.id)],l=nn({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ot.span);Ot.encode({instruction:11,amount:ne(a)},m);let d=[I({pubkey:c}),I({pubkey:new _e(t.authority),isWritable:!1}),I({pubkey:l}),I({pubkey:o,isWritable:!1,isSigner:!0}),I({pubkey:n}),I({pubkey:new _e(t.lpVault)}),I({pubkey:i[0]}),I({pubkey:new _e(t.rewardInfos[0].vault)}),I({pubkey:ho,isWritable:!1}),I({pubkey:qr,isWritable:!1})];if(s)for(let p of s)d.push(I({pubkey:p}));return new er({programId:u,keys:d,data:m})}import{Keypair as ir,PublicKey as C,SystemProgram as kt,TransactionInstruction as Ce}from"@solana/web3.js";import Zr from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as In,TOKEN_2022_PROGRAM_ID as ge,TOKEN_PROGRAM_ID as ue}from"@solana/spl-token";import Wu from"bn.js";import Ze from"bn.js";var be=new Ze(0),ut=new Ze(1),gt=new Ze(-1),Ge=new Ze(1).shln(64),tr=new Ze(1).shln(128),Gr=Ge.sub(ut),An=64,So=tr.subn(1),Ve=-443636,Oe=-Ve,Wt=new Ze("4295048016"),Ft=new Ze("79226673521066979257578248091"),db=new Ze("4295048017"),pb=new Ze("79226673521066979257578248090"),Bo=16,Io="59543866431248",Ko="184467440737095516",Lo="15793534762490258745",nr=new Ze(10).pow(new Ze(6));var fb=new Ze("18446744073700000000");import ee from"bn.js";function rr(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Ur(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Xr(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Pn(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function No(r,e){return Pn(r,e)?null:Ur(r,e)}function Co(r,e){return Pn(r,e)?null:Xr(r,e)}var hb=Buffer.from("amm_config","utf8"),Nu=Buffer.from("pool","utf8"),Cu=Buffer.from("pool_vault","utf8"),Ru=Buffer.from("pool_reward_vault","utf8"),Ro=Buffer.from("position","utf8"),Mu=Buffer.from("tick_array","utf8"),vu=Buffer.from("operation","utf8"),Eu=Buffer.from("pool_tick_array_bitmap_extension","utf8"),_u=Buffer.from("observation","utf8");function Mo(r,e,t,n){return ye([Nu,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function zr(r,e,t){return ye([Cu,e.toBuffer(),t.toBuffer()],r)}function vo(r,e,t){return ye([Ru,e.toBuffer(),t.toBuffer()],r)}function se(r,e,t){return ye([Mu,e.toBuffer(),rr(t)],r)}function It(r,e,t,n){return ye([Ro,e.toBuffer(),rr(t),rr(n)],r)}function Ue(r,e){return ye([Ro,e.toBuffer()],r)}function Tn(r){return ye([Buffer.from("metadata","utf8"),Rt.toBuffer(),r.toBuffer()],Rt)}function Qr(r){return ye([vu],r)}function Ne(r,e){return ye([Eu,e.toBuffer()],r)}function Eo(r,e){return ye([_u,e.toBuffer()],r)}var _o=Buffer.from("locked_position","utf8");function Hr(r,e){return ye([_o,e.toBuffer()],r)}function Vo(r,e){return ye([_o,e.toBuffer()],r)}import{PublicKey as Xe}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Oo}from"@solana/spl-token";import de from"bn.js";import ct from"bn.js";var xn=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 a=new ct(0),s=new ct(0);e.tickCurrent<n.tick?(a=n.feeGrowthOutsideX64A,s=n.feeGrowthOutsideX64B):(a=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),s=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=J.wrappingSubU128(J.wrappingSubU128(e.feeGrowthGlobalX64A,i),a),c=J.wrappingSubU128(J.wrappingSubU128(e.feeGrowthGlobalX64B,o),s);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:a}=this.getfeeGrowthInside(e,n,i),s=J.mulDivFloor(J.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ge),u=t.tokenFeesOwedA.add(s),c=J.mulDivFloor(J.wrappingSubU128(a,t.feeGrowthInsideLastX64B),t.liquidity,Ge),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:a}=this.getfeeGrowthInside(e,n,i),s=J.mulDivFloor(J.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ge),u=t.tokenFeesOwedA.add(s),c=J.mulDivFloor(J.wrappingSubU128(a,t.feeGrowthInsideLastX64B),t.liquidity,Ge),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],a=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let s=0;s<a.length;s++){let u=a[s],c=t.rewardInfos[s],l=J.wrappingSubU128(u,c.growthInsideLastX64),m=J.mulDivFloor(l,t.liquidity,Ge),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],a=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let s=0;s<a.length;s++){let u=a[s],c=t.rewardInfos[s],l=J.wrappingSubU128(u,c.growthInsideLastX64),m=J.mulDivFloor(l,t.liquidity,Ge),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let a=0;a<i.length;a++){let s=new ct(0);t.liquidityGross.eqn(0)?s=i[a].rewardGrowthGlobalX64:e<t.tick?s=i[a].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[a]):s=t.rewardGrowthsOutsideX64[a];let u=new ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[a]:u=i[a].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[a])),o.push(J.wrappingSubU128(J.wrappingSubU128(i[a].rewardGrowthGlobalX64,s),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let a=0;a<i.length;a++){let s=new ct(0);t.liquidityGross.eqn(0)?s=i[a].rewardGrowthGlobalX64:e<t.tick?s=i[a].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[a]):s=t.rewardGrowthsOutsideX64[a];let u=new ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[a]:u=i[a].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[a])),o.push(J.wrappingSubU128(J.wrappingSubU128(i[a].rewardGrowthGlobalX64,s),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:a}){var w,g,h,A;let s=Z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=Z.getSqrtPriceX64FromTick(t.tickLower),c=Z.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ie.getAmountsFromLiquidity(s,u,c,n,o),[d,p]=[he(m.amountA,(w=e.mintA.extensions)==null?void 0:w.feeConfig,a,!0),he(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,a,!0)],[b,f]=[he(new ct(new N(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,!0),he(new ct(new N(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:b,amountSlippageB:f,expirationTime:Bt(d.expirationTime,p.expirationTime)}}};var Vu=15,re=class{static async getTickArrays(e,t,n,i,o,a,s){let u=[],c=D.getTickArrayStartIndexByTick(i,o),l=D.getInitializedTickArrayInRange(a,s,o,c,Math.floor(Vu/2));for(let p=0;p<l.length;p++){let{publicKey:b}=se(t,n,l[p]);u.push(b)}let m=(await yt(e,u)).map(p=>p!==null?Sn.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let b=m[p];b!==null&&(d[b.startTickIndex]=te(G({},b),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,a){let{initializedTick:s,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,a);for(;s==null||s.liquidityGross.lten(0);){if(c=D.getNextTickArrayStartIndex(c,o,a),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,a);[s,u,c]=[m,d,p]}if(s==null)throw new Error("No invaild tickArray cache");return{nextTick:s,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let a=Math.floor(e/re.tickCount(t)),s=n?D.searchLowBitFromStart(i,o,a-1,1,t):D.searchHightBitFromStart(i,o,a+1,1,t);return s.length>0?{isExist:!0,nextStartIndex:s[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let s=Be-1;for(;s>=0;){let u=n.ticks[s];if(u.liquidityGross.gtn(0)){o=u;break}s=s-1}}else{let s=0;for(;s<Be;){let u=n.ticks[s];if(u.liquidityGross.gtn(0)){o=u;break}s=s+1}}let{publicKey:a}=se(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:a,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,a){let s=D.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-s)/o),c=n[s];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:s};let l;if(a)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<Be;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=se(e,t,s);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(D.checkIsOutOfBoundary(e)){if(e>Oe)return!1;let n=D.getTickArrayStartIndexByTick(Ve,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Be*e}};var Yr=14,wt=class{static maxTickInTickarrayBitmap(e){return e*Be*Dt}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),a=i?t-re.tickCount(n):t+re.tickCount(n);if(a<-o||a>=o)return{isInit:!1,tickIndex:t};let s=n*Be,u=a/s+512;a<0&&a%s!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=No(1024,l);if(m!==null){let d=(c-m-512)*s;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Co(1024,l);if(m!==null){let d=(c+m-512)*s;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-re.tickCount(n)}}}},Bn=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(Oe<=t)throw Error(`extensionTickBoundary check error: ${Oe}, ${t}`);if(n<=Ve)throw Error(`extensionTickBoundary check error: ${n}, ${Ve}`);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:D.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=re.tickCount(t),a=n?e-o:e+o,{tickarrayBitmap:s}=this.getBitmap(a,t,i);return this.nextInitializedTickArrayInBitmap(s,a,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:a}=wt.getBitmapTickBoundary(t,n),s=this.tickArrayOffsetInBitmap(t,n);if(i){let u=D.mergeTickArrayBitmap(e).shln(Dt-1-s),c=Pn(512,u)?null:Ur(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=D.mergeTickArrayBitmap(e).shrn(s),c=Pn(512,u)?null:Xr(512,u);if(c!==null){let l=t+c*re.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:a-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=Dt-i),i}};var Ae=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o,a=!1){let s=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,s);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:d,amountCalculated:p,accounts:b,sqrtPriceX64:f,feeAmount:w}=qt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,l,o,a);return u.push(...b),{allTrade:d,expectedAmountOut:p.mul(gt),remainingAccounts:u,executionPrice:f,feeAmount:w}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let a=n.toBase58()===e.mintB.address,s=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,a);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,a);if(f.isExist){let{publicKey:w}=se(e.programId,e.id,f.nextStartIndex);s.push(w)}}catch{}s.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:b}=qt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(gt),c,o);return s.push(...d),{expectedAmountIn:m,remainingAccounts:s,executionPrice:p,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ae.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Bn.checkTickArrayIsInit(re.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):D.checkTickArrayIsInitialized(D.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:s}=se(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:s}}let{isExist:o,nextStartIndex:a}=this.nextInitializedTickArrayStartIndex(e,re.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:s}=se(e.programId,e.id,a);return{isExist:!0,startIndex:a,nextAccountMeta:s}}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?D.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):D.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(D.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:a,tickIndex:s}=Bn.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(a)return{isExist:!0,nextStartIndex:s};if(t=s,t<Ve||t>Oe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var s,u,c;let a=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(s=t.rewardDefaultInfos[l])==null?void 0:s.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 Xe(d)});if(p.tokenMint.equals(Xe.default))continue;if(n<=p.openTime.toNumber()||i.eq(be)){a.push(p);continue}let b=new de(Math.min(p.endTime.toNumber(),n)),f=b.sub(p.lastUpdateTime),w=J.mulDivFloor(f,p.emissionsPerSecondX64,i),g=p.rewardGrowthGlobalX64.add(w),h=J.mulDivFloor(f,p.emissionsPerSecondX64,Ge),A=p.rewardTotalEmissioned.add(h);a.push(te(G({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:b}))}return a}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let a=D.getTickArrayStartIndexByTick(o,e);if(a>=n||a<i)return!0}return!1}static tickRange(e){let t=wt.maxTickInTickarrayBitmap(e),n=-t;return t>Oe&&(t=re.getArrayStartIndex(Oe,e)+re.tickCount(e)),n<Ve&&(n=re.getArrayStartIndex(Ve,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)*Dt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Et(e,t.map(a=>({pubkey:a})),{batchRequest:n}),o={};for(let a of i)a.accountInfo!==null&&(o[a.pubkey.toString()]=Do.decode(a.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=D.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=D.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 a=await Et(e,o,{batchRequest:n}),s={};for(let u of a){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;s[c.toString()]===void 0&&(s[c.toString()]={});let l=Sn.decode(u.accountInfo.data);s[c.toString()][l.startTickIndex]=te(G({},l),{address:u.pubkey})}return s}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var s;let a=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(a.find(l=>l.equals(c.state.programId))||a.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 a)c.push(Ue(p,d).publicKey);let l=await yt(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Fo.decode(d.data),b=p.poolId.toString(),f=e.find(S=>S.state.id.toBase58()===b);if(f===void 0)continue;let w=f.state,g=D._getTickPriceLegacy({poolInfo:w,tick:p.tickLower,baseIn:!0}),h=D._getTickPriceLegacy({poolInfo:w,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:P}=ie.getAmountsFromLiquidity(w.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),T=1/(1-Math.sqrt(Math.sqrt(g.price.div(h.price).toNumber())));f.positionAccount=[...(s=f.positionAccount)!=null?s:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:h.price,amountA:A,amountB:P,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(S=>te(G({},S),{pendingReward:new de(0)})),leverage:T,tokenFeeAmountA:new de(0),tokenFeeAmountB:new de(0)}];let k=await D.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),B=await D.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=k,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=B}if(o){let d=Object.values(m),p=await yt(t,d,{batchRequest:i}),b={};for(let f=0;f<d.length;f++){let w=p[f];if(w===null)continue;let g=d[f].toString();b[g]=Sn.decode(w.data)}for(let{state:f,positionAccount:w}of e)if(!!w)for(let g of w){let h=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,P=b[m[h].toString()],T=b[m[A].toString()],k=P.ticks[D.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=T.ticks[D.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:S,tokenFeeAmountB:x}=await xn.GetPositionFees(f,g,k,B),R=await xn.GetPositionRewards(f,g,k,B);g.tokenFeeAmountA=S.gte(new de(0))?S:new de(0),g.tokenFeeAmountB=x.gte(new de(0))?x:new de(0);for(let M=0;M<R.length;M++)g.rewardInfos[M].pendingReward=R[M].gte(new de(0))?R[M]:new de(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:a,priceLimit:s=new N(0),catchLiquidityInsufficient:u=!1}){var O;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];s.equals(new N(0))?c=l?Wt.add(new de(1)):Ft.sub(new de(1)):c=Z.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let p=he(o,m,i,!1),{allTrade:b,expectedAmountOut:f,remainingAccounts:w,executionPrice:g,feeAmount:h}=Ae.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((O=p.fee)!=null?O:be),c,u),A=he(f,d,i,!1),P=Z.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),T=l?P:new N(1).div(P),k=f.mul(new de(Math.floor((1-a)*1e10))).div(new de(1e10)),B=he(k,d,i,!1),S=l?e.currentPrice:new N(1).div(e.currentPrice),x=new N(T).sub(S).abs(),R=S,M=new Ye(new N(x).mul(10**15).toFixed(0),new N(R).mul(10**15).toFixed(0));return{allTrade:b,realAmountIn:p,amountOut:A,minAmountOut:B,expirationTime:Bt(p.expirationTime,A.expirationTime),currentPrice:e.currentPrice,executionPrice:T,priceImpact:M,fee:h,remainingAccounts:w,executionPriceX64:g}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:a,catchLiquidityInsufficient:s=!1}){let u=i.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new ve(te(G({},c),{mint:c.address,isToken2022:c.programId===Oo.toBase58()})),new ve(te(G({},l),{mint:l.address,isToken2022:l.programId===Oo.toBase58()}))],{allTrade:p,realAmountIn:b,amountOut:f,minAmountOut:w,expirationTime:g,currentPrice:h,executionPrice:A,priceImpact:P,fee:T,remainingAccounts:k,executionPriceX64:B}=Ae.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Xe(c.address),amountIn:n,slippage:o,epochInfo:a,catchLiquidityInsufficient:s}),S=te(G({},b),{amount:new ke(m,b.amount),fee:b.fee===void 0?void 0:new ke(m,b.fee)}),x=te(G({},f),{amount:new ke(d,f.amount),fee:f.fee===void 0?void 0:new ke(d,f.fee)}),R=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 de(10).pow(new de(20+m.decimals)),quoteToken:d,numerator:h.mul(new N(10**(20+d.decimals))).toFixed(0)}),O=new je({baseToken:m,denominator:new de(10).pow(new de(20+m.decimals)),quoteToken:d,numerator:A.mul(new N(10**(20+d.decimals))).toFixed(0)}),E=new ke(m,T);return{allTrade:p,realAmountIn:S,amountOut:x,minAmountOut:R,expirationTime:g,currentPrice:M,executionPrice:O,priceImpact:P,fee:E,remainingAccounts:k,executionPriceX64:B}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountOut:o,slippage:a,priceLimit:s=new N(0)}){var R;let u=n.toBase58()===e.mintA.address,c={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;s.equals(new N(0))?l=u?Ft.sub(new de(1)):Wt.add(new de(1)):l=Z.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let m=he(o,c[n.toString()],i,!0),{expectedAmountIn:d,remainingAccounts:p,executionPrice:b,feeAmount:f}=Ae.getInputAmountAndRemainAccounts(e,t,n,m.amount.sub((R=m.fee)!=null?R:be),l),w=u?e.mintB.address:e.mintA.address,g=he(d,c[w],i,!1),h=Z.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),A=u?h:new N(1).div(h),P=d.mul(new de(Math.floor((1+a)*1e10))).div(new de(1e10)),T=he(P,c[w],i,!0),k=u?e.currentPrice:new N(1).div(e.currentPrice),B=new N(A).sub(k).abs(),S=k,x=new Ye(new N(B).mul(10**15).toFixed(0),new N(S).mul(10**15).toFixed(0));return{amountIn:g,maxAmountIn:T,realAmountOut:m,expirationTime:Bt(g.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:x,fee:f,remainingAccounts:p}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var b,f,w;let o=e[t],a=D.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),s=D.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(a,o.priceMin),l=Math.min(s,o.priceMax)-u,m=s-a,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:[((b=o.rewardApr[0])!=null?b:0)*p,((f=o.rewardApr[1])!=null?f: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:a,positionTickUpperIndex:s,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[$t(e.mintA.address).toString()],d=i[$t(e.mintB.address).toString()],p=e.mintA.decimals,b=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=Z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),w=Z.getSqrtPriceX64FromTick(a),g=Z.getSqrtPriceX64FromTick(s),{amountSlippageA:h,amountSlippageB:A}=ie.getAmountsFromLiquidityWithSlippage(f,w,g,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:T}=ie.getAmountsFromLiquidityWithSlippage(f,w,g,o,!1,!1,0),k=new N(h.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(A.toString()).div(new N(10).pow(b)).mul(d.value)),B=new N(P.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(T.toString()).div(new N(10).pow(b)).mul(d.value)),S=new N(1).div(k.add(B)),R=new N(l.volumeFee).mul(365).div(c).mul(S).mul(100).toNumber(),M=3600*24*365,O=e.rewardDefaultInfos.map(E=>{var W,pe;let U=E.mint.decimals,Y=i[E.mint.address];return u<((W=E.startTime)!=null?W:0)||u>((pe=E.endTime)!=null?pe:0)||!E.perSecond||!Y||U===void 0?0:new N(Y.value).mul(new N(E.perSecond).mul(M)).div(new N(10).pow(U)).mul(S).mul(100).toNumber()});return{feeApr:R,rewardsApr:O,apr:R+O.reduce((E,U)=>E+U,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:a,add:s,epochInfo:u,amountHasFee:c}){var g,h;let l=Z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=Z.getSqrtPriceX64FromTick(n),d=Z.getSqrtPriceX64FromTick(i),p=s?1-a:1+a,b=he(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new de(new N(b.amount.sub((h=b.fee)!=null?h:be).toString()).mul(p).toFixed(0)),w;if(l.lte(m))w=t?ie.getLiquidityFromTokenAmountA(m,d,f,!s):new de(0);else if(l.lte(d)){let A=ie.getLiquidityFromTokenAmountA(l,d,f,!s),P=ie.getLiquidityFromTokenAmountB(m,l,f);w=t?A:P}else w=t?new de(0):ie.getLiquidityFromTokenAmountB(m,d,f);return Ae.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:w,slippage:a,add:s})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:a,add:s}){var w,g,h,A;let u=Z.getSqrtPriceX64FromTick(n),c=Z.getSqrtPriceX64FromTick(i),l=s?1+a:1-a,m=ie.getAmountsFromLiquidity(Z.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,s),[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)],[b,f]=[he(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),he(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:b,amountSlippageB:f,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 Xe(u.id));(await yt(e,i)).forEach((u,c)=>{!u||(n[i[c].toBase58()]=Wo.decode(u.data))});let a=t.map(u=>Ne(new Xe(u.programId),new Xe(u.id)).publicKey),s=await Ae.fetchExBitmaps({connection:e,exBitmapAddress:a,batchRequest:!1});return t.reduce((u,c)=>te(G({},u),{[c.id]:te(G({},n[c.id]),{id:new Xe(c.id),version:6,programId:new Xe(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:te(G({},c.config),{id:new Xe(c.config.id),fundOwner:""}),currentPrice:new N(c.price),exBitmapAccount:Ne(new Xe(c.programId),new Xe(c.id)).publicKey,exBitmapInfo:s[Ne(new Xe(c.programId),new Xe(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(tr).sub(t).mod(tr)}};function Ke(r,e){return jr(r.mul(e),64,256)}function Ou(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function jr(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var Z=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(An);if(i){let a=o,s=o.add(n.mul(e));return s.gte(a)?J.mulDivCeil(a,e,s):J.mulDivRoundingUp(a,ut,a.div(e).add(n))}else{let a=n.mul(e);if(!o.gt(a))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let s=o.sub(a);return J.mulDivCeil(o,e,s)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(An);if(i)return e.add(o.div(t));{let a=J.mulDivRoundingUp(o,ut,t);if(!e.gt(a))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(a)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Ve||e>Oe)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=Ke(n,new ee("18444899583751176192"))),(t&4)!=0&&(n=Ke(n,new ee("18443055278223355904"))),(t&8)!=0&&(n=Ke(n,new ee("18439367220385607680"))),(t&16)!=0&&(n=Ke(n,new ee("18431993317065453568"))),(t&32)!=0&&(n=Ke(n,new ee("18417254355718170624"))),(t&64)!=0&&(n=Ke(n,new ee("18387811781193609216"))),(t&128)!=0&&(n=Ke(n,new ee("18329067761203558400"))),(t&256)!=0&&(n=Ke(n,new ee("18212142134806163456"))),(t&512)!=0&&(n=Ke(n,new ee("17980523815641700352"))),(t&1024)!=0&&(n=Ke(n,new ee("17526086738831433728"))),(t&2048)!=0&&(n=Ke(n,new ee("16651378430235570176"))),(t&4096)!=0&&(n=Ke(n,new ee("15030750278694412288"))),(t&8192)!=0&&(n=Ke(n,new ee("12247334978884435968"))),(t&16384)!=0&&(n=Ke(n,new ee("8131365268886854656"))),(t&32768)!=0&&(n=Ke(n,new ee("3584323654725218816"))),(t&65536)!=0&&(n=Ke(n,new ee("696457651848324352"))),(t&131072)!=0&&(n=Ke(n,new ee("26294789957507116"))),(t&262144)!=0&&(n=Ke(n,new ee("37481735321082"))),e>0&&(n=So.div(n)),n}static getTickFromPrice(e,t,n){return Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ft)||e.lt(Wt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ee(t-64),i=Ou(n,32,128),o=new ee("8000000000000000","hex"),a=0,s=new ee(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new ee(0))&&a<Bo;){u=u.mul(u);let b=u.shrn(127);u=u.shrn(63+b.toNumber()),s=s.add(o.mul(b)),o=o.shrn(1),a+=1}let c=s.shrn(32),m=i.add(c).mul(new ee(Io)),d=jr(m.sub(new ee(Ko)),64,128).toNumber(),p=jr(m.add(new ee(Lo)),64,128).toNumber();return d==p?d:Z.getSqrtPriceX64FromTick(p).lte(e)?p:d}},Gt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let a=Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,n,i))/t;return a<0?a=Math.floor(a):a=Math.ceil(a),a*t}static roundPriceWithTickspacing(e,t,n,i){let o=Gt.getTickWithPriceAndTickspacing(e,t,n,i),a=Z.getSqrtPriceX64FromTick(o);return Z.sqrtPriceX64ToPrice(a,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(An),a=t.sub(e);return i?J.mulDivRoundingUp(J.mulDivCeil(o,a,t),ut,e):J.mulDivFloor(o,a,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),Ge):J.mulDivFloor(n,t.sub(e),Ge)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),a=t.sub(e),s=o.div(a);return i?J.mulDivRoundingUp(s,ut,Gr):s.shrn(An)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),J.mulDivFloor(n,Gr,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 a=ie.getLiquidityFromTokenAmountA(e,n,i,!1),s=ie.getLiquidityFromTokenAmountB(t,e,o);return a.lt(s)?a:s}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 a=ie.getTokenAmountAFromLiquidity(e,n,i,o),s=ie.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:a,amountB:s}}else return{amountA:new ee(0),amountB:ie.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,a,s){let{amountA:u,amountB:c}=ie.getAmountsFromLiquidity(e,t,n,i,a),l=o?1+s:1-s,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:a,epochInfo:s,amountAddFee:u}){var h,A,P,T;let c=Z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=Z.getSqrtPriceX64FromTick(t),m=Z.getSqrtPriceX64FromTick(n),d=a?1+o:1-o,p=ie.getAmountsFromLiquidity(c,l,m,i,a),[b,f]=[he(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,u),he(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,u)],[w,g]=[he(new ee(new N(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,u),he(new ee(new N(p.amountB.toString()).mul(d).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,s,u)];return{liquidity:i,amountA:b,amountB:f,amountSlippageA:w,amountSlippageB:g,expirationTime:Bt(b.expirationTime,f.expirationTime)}}},qt=class{static swapCompute(e,t,n,i,o,a,s,u,c,l,m,d,p,b,f=!1){if(d.eq(be))throw new Error("amountSpecified must not be 0");if(b||(b=a?Wt.add(ut):Ft.sub(ut)),a){if(b.lt(Wt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(Ft))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.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,A=n[p],P=0,T=!a&&A.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(be)&&!g.sqrtPriceX64.eq(b);){P>10;let k={};k.sqrtPriceStartX64=g.sqrtPriceX64;let B=D.nextInitTick(A,g.tick,l,a,T),S=B||null,x=null;if(!(S!=null&&S.liquidityGross.gtn(0))){let M=Ae.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},h,a);if(!M.isExist){if(f)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:O}=se(e,t,h);x=O,A=n[h];try{S=D.firstInitializedTick(A,a)}catch{throw Error("not found next tick info")}}k.tickNext=S.tick,k.initialized=S.liquidityGross.gtn(0),p!==h&&x&&(g.accounts.push(x),p=h),k.tickNext<Ve?k.tickNext=Ve:k.tickNext>Oe&&(k.tickNext=Oe),k.sqrtPriceNextX64=Z.getSqrtPriceX64FromTick(k.tickNext);let R;if(a&&k.sqrtPriceNextX64.lt(b)||!a&&k.sqrtPriceNextX64.gt(b)?R=b:R=k.sqrtPriceNextX64,[g.sqrtPriceX64,k.amountIn,k.amountOut,k.feeAmount]=qt.swapStepCompute(g.sqrtPriceX64,R,g.liquidity,g.amountSpecifiedRemaining,s,a),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=S.liquidityNet;a&&(M=M.mul(gt)),g.liquidity=ie.addDelta(g.liquidity,M)}T=k.tickNext!=g.tick&&!a&&A.startTickIndex===k.tickNext,g.tick=a?k.tickNext-1:k.tickNext}else if(g.sqrtPriceX64!=k.sqrtPriceStartX64){let M=Z.getTickFromSqrtPriceX64(g.sqrtPriceX64);T=M!=g.tick&&!a&&A.startTickIndex===M,g.tick=M}++P}try{let{nextStartIndex:k,isExist:B}=re.nextInitializedTickArray(g.tick,l,a,i,o);B&&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,a){let s={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,nr.sub(new ee(o.toString())),nr);s.amountIn=a?ie.getTokenAmountAFromLiquidity(t,e,n,!0):ie.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ie.getTokenAmountBFromLiquidity(t,e,n,!1):ie.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(gt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromOutput(e,n,i.mul(gt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ie.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ie.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ie.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ie.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(gt))&&(s.amountOut=i.mul(gt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=J.mulDivCeil(s.amountIn,new ee(o),nr.sub(new ee(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Be=60,Dt=512,D=class{static getTickArrayAddressByTick(e,t,n,i){let o=D.getTickArrayStartIndexByTick(n,i),{publicKey:a}=se(e,t,o);return a}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=D.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Be)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*Be,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Be,o=Math.floor(t/i)+512,a=Math.abs(o);return{isInitialized:e.testn(a),startIndex:(a-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Be:e+t*Be}static mergeTickArrayBitmap(e){let t=new Wu(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 a=Math.floor(i/(n*Be));return[...D.searchLowBitFromStart(e,t,a-1,o,n),...D.searchHightBitFromStart(e,t,a,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return D.searchHightBitFromStart(e,t,-7680,Dt,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let a=[],s=D.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of s){let{publicKey:c}=se(e,t,u);a.push({tickArrayStartIndex:u,tickArrayAddress:c})}return a}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let a=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>D.mergeTickArrayBitmap(c)),s=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(a[c].testn(l)&&s.push(n),n--,s.length===i)break}let u=re.tickCount(o);return s.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let a=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>D.mergeTickArrayBitmap(c)),s=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(a[c].testn(l)&&s.push(n),n++,s.length===i)break}let u=re.tickCount(o);return s.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Ve||e>Oe}static nextInitTick(e,t,n,i,o){if(re.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let s=Math.floor((t-e.startTickIndex)/n);if(i)for(;s>=0;){if(e.ticks[s].liquidityGross.gtn(0))return e.ticks[s];s=s-1}else for(o||(s=s+1);s<Be;){if(e.ticks[s].liquidityGross.gtn(0))return e.ticks[s];s=s+1}return null}static firstInitializedTick(e,t){if(t){let n=Be-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Be;){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=Z.getSqrtPriceX64FromTick(t),o=Z.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=Gt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),a=Z.getSqrtPriceX64FromTick(o),s=Z.sqrtPriceX64ToPrice(a,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:s}:{tick:o,price:new N(1).div(s)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),o=Z.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=Gt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),a=Z.getSqrtPriceX64FromTick(o),s=Z.sqrtPriceX64ToPrice(a,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:s}:{tick:o,price:new N(1).div(s)}}};var Ky=v([Te(8),F("bump"),_t("index"),L(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),_t("tickSpacing"),z(y(),8,"")]),Fu=v([Ee("blockTimestamp"),tn("tickCumulative"),z(y(),4)]),qo=v([Te(8),Se("initialized"),y("recentEpoch"),_t("observationIndex"),L("poolId"),z(Fu,100,"observations"),z(y(),4)]),Du=v([F("rewardState"),y("openTime"),y("endTime"),y("lastUpdateTime"),X("emissionsPerSecondX64"),y("rewardTotalEmissioned"),y("rewardClaimed"),L("tokenMint"),L("tokenVault"),L("creator"),X("rewardGrowthGlobalX64")]),Wo=v([Te(8),F("bump"),L("ammConfig"),L("creator"),L("mintA"),L("mintB"),L("vaultA"),L("vaultB"),L("observationId"),F("mintDecimalsA"),F("mintDecimalsB"),_t("tickSpacing"),X("liquidity"),X("sqrtPriceX64"),me("tickCurrent"),Ee(),X("feeGrowthGlobalX64A"),X("feeGrowthGlobalX64B"),y("protocolFeesTokenA"),y("protocolFeesTokenB"),X("swapInAmountTokenA"),X("swapOutAmountTokenB"),X("swapInAmountTokenB"),X("swapOutAmountTokenA"),F("status"),z(F(),7,""),z(Du,3,"rewardInfos"),z(y(),16,"tickArrayBitmap"),y("totalFeesTokenA"),y("totalFeesClaimedTokenA"),y("totalFeesTokenB"),y("totalFeesClaimedTokenB"),y("fundFeesTokenA"),y("fundFeesTokenB"),y("startTime"),z(y(),15*4-3,"padding")]),qu=v([X("growthInsideLastX64"),y("rewardAmountOwed")]),Fo=v([Te(8),F("bump"),L("nftMint"),L("poolId"),me("tickLower"),me("tickUpper"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),z(qu,3,"rewardInfos"),z(y(),8,"")]),Ly=v([Te(8),F("bump"),L("poolId"),me("tickLowerIndex"),me("tickUpperIndex"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),z(X(),3,"rewardGrowthInside"),z(y(),8,"")]),Gu=v([me("tick"),fo("liquidityNet"),X("liquidityGross"),X("feeGrowthOutsideX64A"),X("feeGrowthOutsideX64B"),z(X(),3,"rewardGrowthsOutsideX64"),z(Ee(),13,"")]),Sn=v([Te(8),L("poolId"),me("startTickIndex"),z(Gu,Be,"ticks"),F("initializedTickCount"),z(F(),115,"")]),Ny=v([Te(329),z(L(),100,"whitelistMints")]),Do=v([Te(8),L("poolId"),z(z(y(),8),Yr,"positiveTickArrayBitmap"),z(z(y(),8),Yr,"negativeTickArrayBitmap")]),Cy=v([y(),F("bump"),L("owner"),L("poolId"),L("positionId"),L("nftAccount"),z(y(),8)]),Ry=v([Te(8),F("bump"),L("lockOwner"),L("poolId"),L("positionId"),L("nftAccount"),L("lockNftMint"),y("recentEpoch"),z(y(),8)]);qo.span;var Go=ae("Raydium_Clmm"),ze={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]},Uo=[188,37,179,131,82,150,84,73],Xo=[16,72,250,198,14,162,212,19],rn=class{static createPoolInstruction(e,t,n,i,o,a,s,u,c,l,m,d,p){let b=v([X("sqrtPriceX64"),y("zero")]),f=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:s,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:tt,isSigner:!1,isWritable:!1}],w=Buffer.alloc(b.span);b.encode({sqrtPriceX64:p,zero:be},w);let g=Buffer.from([...ze.createPool,...w]);return new Ce({keys:f,programId:e,data:g})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:o,ammConfigId:a,initialPriceX64:s}=e,[u,c]=[new C(i.address),new C(o.address)],{publicKey:l}=Mo(t,a,u,c),{publicKey:m}=Eo(t,l),{publicKey:d}=zr(t,l,u),{publicKey:p}=zr(t,l,c),b=Ne(t,l).publicKey,f=[this.createPoolInstruction(t,l,n,a,m,u,d,new C(i.programId||ue),c,p,new C(o.programId||ue),b,s)];return{signers:[],instructions:f,instructionTypes:[H.CreateAccount,H.ClmmCreatePool],address:{poolId:l,observationId:m,exBitmapAccount:b,mintAVault:d,mintBVault:p},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,a,s,u,c,l,m,d,p,b,f,w,g,h,A,P,T,k,B,S,x,R){let M=v([me("tickLowerIndex"),me("tickUpperIndex"),me("tickArrayLowerStartIndex"),me("tickArrayUpperStartIndex"),X("liquidity"),y("amountMaxA"),y("amountMaxB"),Se("withMetadata"),F("optionBaseFlag"),Se("baseFlag")]),O=[...R?[{pubkey:R,isSigner:!1,isWritable:!0}]:[]],E=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,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:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:In,isSigner:!1,isWritable:!1},{pubkey:Rt,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...O],U=Buffer.alloc(M.span);M.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:T,liquidity:k,amountMaxA:B,amountMaxB:S,withMetadata:x==="create",baseFlag:!1,optionBaseFlag:0},U);let Y=Buffer.from([...ze.openPosition,...U]);return new Ce({keys:E,programId:e,data:Y})}static openPositionFromLiquidityInstruction22(e,t,n,i,o,a,s,u,c,l,m,d,p,b,f,w,g,h,A,P,T,k,B,S,x){let R=v([me("tickLowerIndex"),me("tickUpperIndex"),me("tickArrayLowerStartIndex"),me("tickArrayUpperStartIndex"),X("liquidity"),y("amountMaxA"),y("amountMaxB"),Se("withMetadata"),F("optionBaseFlag"),Se("baseFlag")]),M=[...x?[{pubkey:x,isSigner:!1,isWritable:!0}]:[]],O=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,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:b,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:In,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...M],E=Buffer.alloc(R.span);R.encode({tickLowerIndex:g,tickUpperIndex:h,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:P,liquidity:T,amountMaxA:k,amountMaxB:B,withMetadata:S==="create",baseFlag:!1,optionBaseFlag:0},E);let U=Buffer.from([...ze.openPositionWithTokenEx,...E]);return new Ce({keys:O,programId:e,data:U})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:a,amountMaxA:s,amountMaxB:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let d=[],[p,b]=[new C(e.programId),new C(e.id)],f;if(l)f=new C((await l(1))[0]);else{let x=ir.generate();d.push(x),f=x.publicKey}let w=D.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=D.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:h}=se(p,b,w),{publicKey:A}=se(p,b,g),{publicKey:P}=m?le(n.wallet,f,ge):le(n.wallet,f,ue),{publicKey:T}=Tn(f),{publicKey:k}=Ue(p,f),{publicKey:B}=It(p,b,i,o),S=m?this.openPositionFromLiquidityInstruction22(p,n.feePayer,b,n.wallet,f,P,B,h,A,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,a,s,u,c,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(p,b).publicKey:void 0):this.openPositionFromLiquidityInstruction(p,n.feePayer,b,n.wallet,f,P,T,B,h,A,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,a,s,u,c,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(p,b).publicKey:void 0);return{signers:d,instructions:[S],instructionTypes:[H.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:f,tickArrayLower:h,tickArrayUpper:A,positionNftAccount:P,metadataAccount:T,personalPosition:k,protocolPosition:B}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:a,baseAmount:s,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let d=[],[p,b]=[new C(e.programId),new C(e.id)],f;if(l)f=new C((await l(1))[0]);else{let x=ir.generate();d.push(x),f=x.publicKey}let w=D.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=D.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:h}=se(p,b,w),{publicKey:A}=se(p,b,g),{publicKey:P}=m?le(n.wallet,f,ge):le(n.wallet,f,ue),{publicKey:T}=Tn(f),{publicKey:k}=Ue(p,f),{publicKey:B}=It(p,b,i,o),S=m?this.openPositionFromBaseInstruction22(p,n.feePayer,b,n.wallet,f,P,B,h,A,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,a,s,u,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(p,b).publicKey:void 0):this.openPositionFromBaseInstruction(p,n.feePayer,b,n.wallet,f,P,T,B,h,A,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,a,s,u,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(p,b).publicKey:void 0);return{address:{nftMint:f,tickArrayLower:h,tickArrayUpper:A,positionNftAccount:P,metadataAccount:T,personalPosition:k,protocolPosition:B},instructions:[S],signers:d,instructionTypes:[H.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,a,s,u,c,l,m,d,p,b,f,w,g,h,A,P,T,k,B,S,x,R){let M=v([me("tickLowerIndex"),me("tickUpperIndex"),me("tickArrayLowerStartIndex"),me("tickArrayUpperStartIndex"),X("liquidity"),y("amountMaxA"),y("amountMaxB"),Se("withMetadata"),F("optionBaseFlag"),Se("baseFlag")]),O=[...R?[{pubkey:R,isSigner:!1,isWritable:!0}]:[]],E=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,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:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:In,isSigner:!1,isWritable:!1},{pubkey:Rt,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...O],U=Buffer.alloc(M.span);M.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:T,liquidity:new Zr(0),amountMaxA:B==="MintA"?S:x,amountMaxB:B==="MintA"?x:S,withMetadata:k==="create",baseFlag:B==="MintA",optionBaseFlag:1},U);let Y=Buffer.from([...ze.openPosition,...U]);return new Ce({keys:E,programId:e,data:Y})}static openPositionFromBaseInstruction22(e,t,n,i,o,a,s,u,c,l,m,d,p,b,f,w,g,h,A,P,T,k,B,S,x){let R=v([me("tickLowerIndex"),me("tickUpperIndex"),me("tickArrayLowerStartIndex"),me("tickArrayUpperStartIndex"),X("liquidity"),y("amountMaxA"),y("amountMaxB"),Se("withMetadata"),F("optionBaseFlag"),Se("baseFlag")]),M=[...x?[{pubkey:x,isSigner:!1,isWritable:!0}]:[]],O=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,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:b,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:In,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...M],E=Buffer.alloc(R.span);R.encode({tickLowerIndex:g,tickUpperIndex:h,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:P,liquidity:new Zr(0),amountMaxA:k==="MintA"?B:S,amountMaxB:k==="MintA"?S:B,withMetadata:T==="create",baseFlag:k==="MintA",optionBaseFlag:1},E);let U=Buffer.from([...ze.openPositionWithTokenEx,...E]);return new Ce({keys:O,programId:e,data:U})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:a,amountMaxA:s,amountMaxB:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let d,p=[];if(l)d=new C((await l(1))[0]);else{let x=ir.generate();p.push(x),d=x.publicKey}let[b,f]=[new C(e.programId),new C(e.id)],w=D.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=D.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:h}=se(b,f,w),{publicKey:A}=se(b,f,g),{publicKey:P}=m?le(n.wallet,d,ge):le(n.wallet,d,ue),{publicKey:T}=Tn(d),{publicKey:k}=Ue(b,d),{publicKey:B}=It(b,f,i,o),S=m?this.openPositionFromLiquidityInstruction22(b,n.wallet,f,n.wallet,d,P,B,h,A,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,a,s,u,c,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(b,f).publicKey:void 0):this.openPositionFromLiquidityInstruction(b,n.wallet,f,n.wallet,d,P,T,B,h,A,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,a,s,u,c,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(b,f).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:h,tickArrayUpper:A,positionNftAccount:P,metadataAccount:T,personalPosition:k,protocolPosition:B},instructions:[S],signers:p,instructionTypes:[H.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o,a){let s=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:a?ge:ue,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let l=Buffer.from([...ze.closePosition,...c]);return new Ce({keys:u,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i,nft2022:o}){let a=new C(e.programId),s=o?le(n.wallet,i.nftMint,ge).publicKey:le(n.wallet,i.nftMint,ue).publicKey,{publicKey:u}=Ue(a,i.nftMint),c=[];return c.push(this.closePositionInstruction(a,n.wallet,i.nftMint,s,u,o)),{address:{positionNftAccount:s,personalPosition:u},signers:[],instructions:c,instructionTypes:[H.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,a,s,u,c,l,m,d,p,b,f,w,g,h){let A=v([X("liquidity"),y("amountMaxA"),y("amountMaxB"),F("optionBaseFlag"),Se("baseFlag")]),P=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,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:ue,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...P],k=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:w,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},k);let B=Buffer.from([...ze.increaseLiquidity,...k]);return new Ce({keys:T,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:a,amountMaxB:s,nft2022:u}){let[c,l]=[new C(e.programId),new C(e.id)],m=D.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=D.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=se(c,l,m),{publicKey:b}=se(c,l,d),{publicKey:f}=u?le(i.wallet,n.nftMint,ge):le(i.wallet,n.nftMint,ue),{publicKey:w}=Ue(c,n.nftMint),{publicKey:g}=It(c,l,n.tickLower,n.tickUpper),h=this.increasePositionFromLiquidityInstruction(c,i.wallet,f,w,l,g,p,b,i.tokenAccountA,i.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),o,a,s,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ne(c,l).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:b,positionNftAccount:f,personalPosition:w,protocolPosition:g},signers:[],instructions:[h],instructionTypes:[H.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:a,otherAmountMax:s,nft2022:u}){let[c,l]=[new C(e.programId),new C(e.id)],m=D.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=D.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=se(c,l,m),{publicKey:b}=se(c,l,d),{publicKey:f}=u?le(i.wallet,n.nftMint,ge):le(i.wallet,n.nftMint,ue),{publicKey:w}=Ue(c,n.nftMint),{publicKey:g}=It(c,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:b,positionNftAccount:f,personalPosition:w,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(c,i.wallet,f,w,l,g,p,b,i.tokenAccountA,i.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),o,a,s,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ne(c,l).publicKey:void 0)],signers:[],instructionTypes:[H.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,a,s,u,c,l,m,d,p,b,f,w,g,h){let A=v([X("liquidity"),y("amountMaxA"),y("amountMaxB"),F("optionBaseFlag"),Se("baseFlag")]),P=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,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:ue,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...P],k=Buffer.alloc(A.span);A.encode({liquidity:new Zr(0),amountMaxA:f==="MintA"?w:g,amountMaxB:f==="MintA"?g:w,baseFlag:f==="MintA",optionBaseFlag:1},k);let B=Buffer.from([...ze.increaseLiquidity,...k]);return new Ce({keys:T,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,i,o,a,s,u,c,l,m,d,p,b,f,w,g,h,A){let P=v([X("liquidity"),y("amountMinA"),y("amountMinB")]),T=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(x=>[{pubkey:x.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:x.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:x.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:a,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Dn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...T],B=Buffer.alloc(P.span);P.encode({liquidity:w,amountMinA:g,amountMinB:h},B);let S=Buffer.from([...ze.decreaseLiquidity,...B]);return new Ce({keys:k,programId:e,data:S})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:a,amountMinB:s,programId:u,nft2022:c}){let[l,m]=[new C(e.programId),new C(e.id)],d=D.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=D.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:b}=se(l,m,d),{publicKey:f}=se(l,m,p),{publicKey:w}=c?le(i.wallet,n.nftMint,ge):le(i.wallet,n.nftMint,u),{publicKey:g}=Ue(l,n.nftMint),{publicKey:h}=It(l,m,n.tickLower,n.tickUpper),A=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)A.push({poolRewardVault:new C(t.rewardInfos[k].vault),ownerRewardVault:i.rewardAccounts[k],rewardMint:new C(e.rewardDefaultInfos[k].mint.address)});let P=[],T=this.decreaseLiquidityInstruction(l,i.wallet,w,g,m,h,b,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),A,o,a,s,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,p])?Ne(l,m).publicKey:void 0);return P.push(T),{address:{tickArrayLower:b,tickArrayUpper:f,positionNftAccount:w,personalPosition:g,protocolPosition:h},signers:[],instructions:P,instructionTypes:[H.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,a,s,u,c,l,m,d,p,b,f,w,g){let h=v([y("amount"),y("otherAmountThreshold"),X("sqrtPriceLimitX64"),Se("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Dn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],T=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:b,sqrtPriceLimitX64:f,isBaseInput:w},T);let k=Buffer.from([...ze.swap,...T]);return new Ce({keys:P,programId:e,data:k})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:o,amountIn:a,amountOutMin:s,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)],[b,f]=[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?b:f,w?f:b,c,n,a,s,u,!0,Ne(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[H.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,outputMint:o,amountOut:a,amountInMax:s,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)],[b,f]=[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?f:b,w?b:f,c,n,a,s,u,!1,Ne(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[H.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,a,s,u,c,l,m,d){let p=v([y("openTime"),y("endTime"),X("emissionsPerSecondX64")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:a,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:s,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:ne(l),endTime:ne(m),emissionsPerSecondX64:d},f);let w=Buffer.from([...ze.initReward,...f]);return new Ce({keys:b,programId:e,data:w})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,a]=[new C(e.programId),new C(e.id)],s=vo(o,a,i.mint).publicKey,u=Qr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,a,u,new C(e.config.id),n.tokenAccount,i.programId,i.mint,s,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:s,operationId:u},signers:[],instructions:c,instructionTypes:[H.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,a,s,u,c,l,m,d){let p=v([F("rewardIndex"),X("emissionsPerSecondX64"),y("openTime"),y("endTime")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:ne(l),endTime:ne(m)},f);let w=Buffer.from([...ze.setRewardEmissions,...f]);return new Ce({keys:b,programId:e,data:w})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,a]=[new C(e.programId),new C(e.id)],s,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(s=d,u=new C(t.rewardInfos[d].vault),c=new C(t.rewardInfos[d].mint.address));(s===void 0||u===void 0)&&Go.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Qr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,a,l,new C(e.config.id),n.tokenAccount,u,c,s,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[H.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,a,s){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:a,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Dn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:s},l);let m=Buffer.from([...ze.collectReward,...l]);return new Ce({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,a]=[new C(e.programId),new C(e.id)],s,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(s=l,u=new C(t.rewardInfos[l].vault));(s===void 0||u===void 0)&&Go.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,a,n.tokenAccount,u,i,s)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[H.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:i,wallet:o,nftMint:a,nft2022:s,getEphemeralSigners:u}){let c=[],l;if(u)l=new C((await u(1))[0]);else{let g=ir.generate();c.push(g),l=g.publicKey}let m=s?le(o,a,ge).publicKey:le(o,a,ue).publicKey,{publicKey:d}=Ue(n,a),p=Vo(e,l).publicKey,b=le(o,l,ue).publicKey,f=Tn(l).publicKey,w=rn.lockPositionInstructionV2({programId:e,auth:t,payer:i,positionOwner:o,lockOwner:o,positionNftAccount:m,positionId:d,lockPositionId:p,lockNftMint:l,lockNftAccount:b,metadataAccount:f,withMetadata:!0,nft2022:s,positionNftMint:a,authPositionNftAccount:le(t,a,s?ge:ue).publicKey,positionNftProgram:s?ge:ue});return{address:{positionId:d,lockPositionId:p,lockNftAccount:b,lockNftMint:l,positionNftAccount:m,metadataAccount:f},instructions:[w],signers:c,instructionTypes:[H.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:i,lockOwner:o,positionNftAccount:a,positionId:s,positionNftMint:u,authPositionNftAccount:c,positionNftProgram:l,lockPositionId:m,lockNftMint:d,lockNftAccount:p,metadataAccount:b,withMetadata:f}){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:a,isSigner:!1,isWritable:!0},{pubkey:s,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:b,isSigner:!1,isWritable:!0},{pubkey:Rt,isSigner:!1,isWritable:!1},{pubkey:In,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1}],g=v([Se("withMetadata")]),h=Buffer.alloc(g.span);g.encode({withMetadata:f},h);let A=Buffer.from([...Uo,...h]);return new Ce({keys:w,programId:e,data:A})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:i,positionNft:o}){let{publicKey:a}=le(i,o,ue),{publicKey:s}=Ue(n,o),u=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Hr(e,s).publicKey,isSigner:!1,isWritable:!0},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1}];return new Ce({keys:u,programId:e,data:Buffer.from(Uo)})}static harvestLockPositionInstruction(e){let[t,n]=[new C(e.poolKeys.programId),new C(e.poolKeys.id)],i=D.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),o=D.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:a}=se(t,n,i),{publicKey:s}=se(t,n,o),{publicKey:u}=le(e.owner,e.ownerPosition.nftMint,ue),{publicKey:c}=Ue(t,e.ownerPosition.nftMint),{publicKey:l}=It(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),m=[];for(let b=0;b<e.poolKeys.rewardInfos.length;b++)m.push({poolRewardVault:new C(e.poolKeys.rewardInfos[b].vault),ownerRewardVault:e.ownerRewardAccounts[b],rewardMint:new C(e.poolKeys.rewardInfos[b].mint.address)});let d=[...m.map(b=>[{pubkey:b.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:b.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:b.rewardMint,isSigner:!1,isWritable:!1}]).flat()],p=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:Hr(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:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Sr,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(Xo)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:i,lockOwner:o,lockNftMint:a,lockNftAccount:s,positionNftAccount:u,positionId:c,poolId:l,protocolPosition:m,vaultA:d,vaultB:p,tickArrayLower:b,tickArrayUpper:f,userVaultA:w,userVaultB:g,mintA:h,mintB:A,rewardAccounts:P,exTickArrayBitmap:T}){let k=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[],...P.map(S=>[{pubkey:S.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.rewardMint,isSigner:!1,isWritable:!1}]).flat()],B=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:s,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:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Sr,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:A,isSigner:!1,isWritable:!1},...k];return new Ce({keys:B,programId:e,data:Buffer.from(Xo)})}};var $r=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),on=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new Yn({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($r(e))}logInfo(...e){this.logger.info($r(e))}logAndCreateError(...e){let t=$r(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var Jy=v([Ee("mintAuthorityOption"),L("mintAuthority"),y("supply"),F("decimals"),F("isInitialized"),Ee("freezeAuthorityOption"),L("freezeAuthority")]);import{PublicKey as rg}from"@solana/web3.js";import{MintLayout as og,TOKEN_PROGRAM_ID as ag}from"@solana/spl-token";var zo=r=>new ve({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name});var or=i=>{var o=i,{address:r,programId:e,decimals:t}=o,n=He(o,["address","programId","decimals"]);return G({chainId:101,address:$t(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import Qo from"bn.js";var Jr=new Qo(25),sr=new Qo(1e4);import{PublicKey as lt,SystemProgram as rc,SYSVAR_RENT_PUBKEY as Ng,TransactionInstruction as an}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as ic,TOKEN_PROGRAM_ID as Ln}from"@solana/spl-token";var ei=v([F("instruction"),y("amountIn"),y("minAmountOut")]),ti=v([F("instruction"),y("maxAmountIn"),y("amountOut")]),Pg=v([F("instruction"),F("nonce")]),Uu=v([F("instruction"),F("nonce"),y("startTime")]),Ho=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"),X("swapBaseInAmount"),X("swapQuoteOutAmount"),y("swapBase2QuoteFee"),X("swapQuoteInAmount"),X("swapBaseOutAmount"),y("swapQuote2BaseFee"),L("baseVault"),L("quoteVault"),L("baseMint"),L("quoteMint"),L("lpMint"),L("openOrders"),L("marketId"),L("marketProgramId"),L("targetOrders"),L("withdrawQueue"),L("lpVault"),L("owner"),y("lpReserve"),z(y(),3,"padding")]),Tg=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"),X("swapBaseInAmount"),X("swapQuoteOutAmount"),X("swapQuoteInAmount"),X("swapBaseOutAmount"),y("swapQuote2BaseFee"),y("swapBase2QuoteFee"),L("baseVault"),L("quoteVault"),L("baseMint"),L("quoteMint"),L("lpMint"),L("modelDataAccount"),L("openOrders"),L("marketId"),L("marketProgramId"),L("targetOrders"),L("owner"),z(y(),64,"padding")]),ni=v([F("instruction"),y("baseAmountIn"),y("quoteAmountIn"),y("fixedSide"),y("otherAmountMin")]),ri=v([F("instruction"),y("lpAmount"),y("baseAmountMin"),y("quoteAmountMin")]);var Yo=v([y("fee")]);import{PublicKey as Xu}from"@solana/web3.js";var sn=new Xu("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Xt=5e4,zu=v([y("x"),y("y"),y("price")]),Qu=v([y("accountType"),y("status"),y("multiplier"),y("validDataCount"),z(zu,Xt,"DataElement")]);function Hu(r,e){return[0,Xt-2]}function Yu(r){return[0,Xt-2]}function ju(r){return[0,Xt-2]}function Zu(r,e,t){let[n,i]=Hu(e,t),o=n,a=i,s=0,u=e*r.multiplier/t;for(;o<=a;){if(s=Math.floor((a+o)/2),s===0||s>=Xt-2)return[s,s,!1];let c=r.DataElement[s].x*r.multiplier/r.DataElement[s].y,l=r.DataElement[s-1].x*r.multiplier/r.DataElement[s-1].y,m=r.DataElement[s+1].x*r.multiplier/r.DataElement[s+1].y;if(u===c)return[s,s,!0];if(u===l)return[s-1,s-1,!0];if(u===m)return[s+1,s+1,!0];if(u<l)a=s-1;else{if(u>l&&u<c)return[s-1,s,!0];if(u>c&&u<m)return[s,s+1,!0];o=s+1}}return[s,s,!1]}function ii(r,e,t){let[n,i,o]=Zu(r,e,t);if(!o)return 0;if(n===i){let a=r.DataElement[n].x;return e*r.multiplier/a}else{let a=r.DataElement[n].x,s=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*s-a*c),m=a*l,d=(u-a)*(e*s-a*t)*c,p=m+d;return e*r.multiplier*l/p}}function Ut(r,e,t){return e*r.multiplier/t}function jo(r,e,t){return e*t/r.multiplier}function $u(r,e){let[t,n]=Yu(e),i=t,o=n,a=0,s=e;for(;i<o;){if(a=Math.floor((o+i)/2),a<=0||a>Xt-2)return[a,a,!1];let u=r.DataElement[a].x,c=r.DataElement[a-1].x,l=r.DataElement[a+1].x;if(s===u)return[a,a,!0];if(s===c)return[a-1,a-1,!0];if(s===l)return[a+1,a+1,!0];if(s<c)o=a-1;else{if(s>c&&s<u)return[a-1,a,!0];if(s>u&&s<l)return[a,a+1,!0];i=a+1}}return[a,a,!1]}function Ju(r,e){let[t,n]=ju(e),i=t,o=n,a=0,s=e;for(;i<=o;){if(a=Math.floor((o+i)/2),a<=0||a>=Xt-2)return[a,a,!1];let u=r.DataElement[a].y,c=r.DataElement[a-1].y,l=r.DataElement[a+1].y;if(s===u)return[a,a,!0];if(s===c)return[a-1,a-1,!0];if(s===l)return[a+1,a+1,!0];if(s<l)i=a+1;else{if(s<c&&s>u)return[a-1,a,!0];if(s<u&&s>l)return[a,a+1,!0];o=a-1}}return[a,a,!1]}function Zo(r,e,t,n){let i=n?e+t:e-t,[o,a,s]=$u(r,i);if(!s)return[0,0,!1,s];if(o===a)return[r.DataElement[a].price,r.DataElement[a].y,!1,s];{let u=r.DataElement[o].x,c=r.DataElement[a].x,l=r.DataElement[o].price,m=r.DataElement[a].price,d=r.DataElement[o].y,p=r.DataElement[a].y;if(e>=u&&e<=c)return n?[m,p,!0,s]:[l,d,!0,s];{let b,f;return n?(b=l+(m-l)*(e-u)/(c-u),f=d-(i-u)*r.multiplier/m):(b=l+(m-l)*(e-u)/(c-u),f=p+(c-i)*r.multiplier/l),[b,f,!1,s]}}}function ec(r,e,t,n){let i=n?e-t:e+t,[o,a,s]=Ju(r,i);if(!s)return[0,0,!1,s];if(o===a)return[r.DataElement[a].price,r.DataElement[a].x,!1,s];{let u=r.DataElement[o].x,c=r.DataElement[a].x,l=r.DataElement[o].price,m=r.DataElement[a].price,d=r.DataElement[o].y,p=r.DataElement[a].y;if(e>=p&&e<=d)return n?[m,c,!0,s]:[l,u,!0,s];{let b,f;return n?(b=l+(m-l)*(d-e)/(d-p),f=u+m*(d-i)/r.multiplier):(b=l+(m-l)*(d-e)/(d-p),f=c-l*(i-p)/r.multiplier),[b,f,!1,s]}}}function tc(r,e){let t=Zo(r,e,0,!1);return t[3]?t[0]:0}function $o(r,e,t,n){let i=ii(r,e,t),o=Ut(r,e,i),a=Ut(r,t,i),s=Ut(r,n,i),u=!0,[c,l,m,d]=Zo(r,o,s,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=a-l;return jo(r,p,i)}}function Jo(r,e,t,n){let i=ii(r,e,t),o=Ut(r,e,i),a=Ut(r,t,i),s=Ut(r,n,i),u=!1,[c,l,m,d]=ec(r,a,s,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return jo(r,p,i)}}function nc(r){let e=Qu.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 es(r,e,t,n){let i=tc(r,Ut(r,e,ii(r,e,t)))/r.multiplier;return n?i:1/i}var Kn=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(sn);e&&(this._layoutData=nc(e==null?void 0:e.data))}}};var ts=ae("Raydium_liquidity_instruction");function ns(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:a,otherAmountMin:s}=r,u=Buffer.alloc(ni.span);ni.encode({instruction:3,baseAmountIn:ne(i),quoteAmountIn:ne(o),otherAmountMin:ne(s),fixedSide:a==="base"?St:Xi},u);let c=[I({pubkey:Ln,isWritable:!1}),I({pubkey:new lt(e.id)}),I({pubkey:new lt(t.authority),isWritable:!1}),I({pubkey:new lt(t.openOrders),isWritable:!1}),I({pubkey:new lt(t.targetOrders)}),I({pubkey:new lt(e.lpMint.address)}),I({pubkey:new lt(t.vault.A)}),I({pubkey:new lt(t.vault.B)})];return e.pooltype.includes("StablePool")&&c.push(I({pubkey:sn})),c.push(I({pubkey:new lt(e.marketId),isWritable:!1}),I({pubkey:n.baseTokenAccount}),I({pubkey:n.quoteTokenAccount}),I({pubkey:n.lpTokenAccount}),I({pubkey:n.owner,isWritable:!1,isSigner:!0}),I({pubkey:new lt(t.marketEventQueue),isWritable:!1})),new an({programId:new lt(e.programId),keys:c,data:u})}function oi(r){let{poolInfo:e,poolKeys:t,userKeys:n,lpAmount:i,baseAmountMin:o,quoteAmountMin:a}=r,s=Mt(t),u=4;if(e.pooltype.includes("StablePool")&&(u=5),u===4||u===5){let c=Buffer.alloc(ri.span);ri.encode({instruction:4,lpAmount:ne(i),baseAmountMin:ne(o),quoteAmountMin:ne(a)},c);let l=[I({pubkey:Ln,isWritable:!1}),I({pubkey:s.id}),I({pubkey:s.authority,isWritable:!1}),I({pubkey:s.openOrders}),I({pubkey:s.targetOrders}),I({pubkey:s.mintLp.address}),I({pubkey:s.vault.A}),I({pubkey:s.vault.B})];return u===5?l.push(I({pubkey:sn})):(l.push(I({pubkey:s.id})),l.push(I({pubkey:s.id}))),l.push(I({pubkey:s.marketProgramId,isWritable:!1}),I({pubkey:s.marketId}),I({pubkey:s.marketBaseVault}),I({pubkey:s.marketQuoteVault}),I({pubkey:s.marketAuthority,isWritable:!1}),I({pubkey:n.lpTokenAccount}),I({pubkey:n.baseTokenAccount}),I({pubkey:n.quoteTokenAccount}),I({pubkey:n.owner,isWritable:!1,isSigner:!0}),I({pubkey:s.marketEventQueue}),I({pubkey:s.marketBids}),I({pubkey:s.marketAsks})),new an({programId:s.programId,keys:l,data:c})}return new an({programId:s.programId,keys:[]})}function si({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:a,coinVault:s,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:b,userCoinVault:f,userPcVault:w,userLpVault:g,nonce:h,openTime:A,coinAmount:P,pcAmount:T,ammConfigId:k,feeDestinationId:B}){let S=v([F("instruction"),F("nonce"),y("openTime"),y("pcAmount"),y("coinAmount")]),x=[{pubkey:Ln,isSigner:!1,isWritable:!1},{pubkey:ic,isSigner:!1,isWritable:!1},{pubkey:rc.programId,isSigner:!1,isWritable:!1},{pubkey:tt,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:a,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:k,isSigner:!1,isWritable:!1},{pubkey:B,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],R=Buffer.alloc(S.span);return S.encode({instruction:1,nonce:h,openTime:A,coinAmount:P,pcAmount:T},R),{instruction:new an({keys:x,programId:r,data:R}),instructionType:H.AmmV4CreatePool}}function oc({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=Mt(r),a=Buffer.alloc(ei.span);ei.encode({instruction:9,amountIn:ne(t),minAmountOut:ne(n)},a);let s=[I({pubkey:Ln,isWritable:!1}),I({pubkey:o.id}),I({pubkey:o.authority,isWritable:!1}),I({pubkey:o.openOrders})];return i===4&&s.push(I({pubkey:o.targetOrders})),s.push(I({pubkey:o.vault.A}),I({pubkey:o.vault.B})),i===5&&s.push(I({pubkey:sn})),s.push(I({pubkey:o.marketProgramId,isWritable:!1}),I({pubkey:o.marketId}),I({pubkey:o.marketBids}),I({pubkey:o.marketAsks}),I({pubkey:o.marketEventQueue}),I({pubkey:o.marketBaseVault}),I({pubkey:o.marketQuoteVault}),I({pubkey:o.marketAuthority,isWritable:!1}),I({pubkey:e.tokenAccountIn}),I({pubkey:e.tokenAccountOut}),I({pubkey:e.owner,isWritable:!1,isSigner:!0})),new an({programId:o.programId,keys:s,data:a})}function sc({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=Mt(r),a=Buffer.alloc(ti.span);ti.encode({instruction:11,maxAmountIn:ne(t),amountOut:ne(n)},a);let s=[I({pubkey:Ln,isWritable:!1}),I({pubkey:o.id}),I({pubkey:o.authority,isWritable:!1}),I({pubkey:o.openOrders}),I({pubkey:o.targetOrders}),I({pubkey:o.vault.A}),I({pubkey:o.vault.B})];return i===5&&s.push(I({pubkey:sn})),s.push(I({pubkey:o.marketProgramId,isWritable:!1}),I({pubkey:o.marketId}),I({pubkey:o.marketBids}),I({pubkey:o.marketAsks}),I({pubkey:o.marketEventQueue}),I({pubkey:o.marketBaseVault}),I({pubkey:o.marketQuoteVault}),I({pubkey:o.marketAuthority,isWritable:!1}),I({pubkey:e.tokenAccountIn}),I({pubkey:e.tokenAccountOut}),I({pubkey:e.owner,isWritable:!1,isSigner:!0})),new an({programId:o.programId,keys:s,data:a})}function rs(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:a}=r;if(t===4||t===5){let s={poolKeys:e,userKeys:n};if(a==="in")return oc(te(G({},s),{amountIn:i,minAmountOut:o}),t);if(a==="out")return sc(te(G({},s),{maxAmountIn:i,amountOut:o}),t);ts.logWithError("invalid params","params",r)}throw ts.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{PublicKey as cc}from"@solana/web3.js";import Jg from"bn.js";import{TOKEN_PROGRAM_ID as lc}from"@solana/spl-token";import{PublicKey as ac}from"@solana/web3.js";var uc=ae("Raydium_liquidity_serum");function is({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=ac.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw uc.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}function ar({programId:r}){let{publicKey:e}=ye([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function zt({name:r,programId:e,marketId:t}){let{publicKey:n}=ye([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function mc({programId:r,marketId:e}){let{publicKey:t}=ye([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function dc({programId:r}){return ye([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function ui({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:a,programId:s,marketProgramId:u}){let c=zt({name:"amm_associated_seed",programId:s,marketId:t}),l=zt({name:"lp_mint_associated_seed",programId:s,marketId:t}),{publicKey:m,nonce:d}=dc({programId:s}),p=zt({name:"coin_vault_associated_seed",programId:s,marketId:t}),b=zt({name:"pc_vault_associated_seed",programId:s,marketId:t}),f=zt({name:"temp_lp_token_associated_seed",programId:s,marketId:t}),w=mc({programId:s,marketId:t}),g=zt({name:"target_associated_seed",programId:s,marketId:t}),h=zt({name:"withdraw_associated_seed",programId:s,marketId:t}),{publicKey:A}=is({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:a,lpDecimals:o,version:r,programId:s,authority:m,nonce:d,baseVault:p,quoteVault:b,lpVault:f,openOrders:w,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:cc.default,configId:ar({programId:s})}}var ai={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},os=r=>{let e={},t=lc.toBase58();return Object.keys(r).map(n=>{let i=r[n],[o,a]=[i.baseMint.toBase58(),i.quoteMint.toBase58()];e[n]={id:n,version:4,status:i.status.toNumber(),programId:i.programId.toBase58(),mintA:or({address:o,programId:t,decimals:i.baseDecimal.toNumber()}),mintB:or({address:a,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:ai,week:ai,month:ai,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:i.marketId.toBase58(),configId:ar({programId:i.programId}).toBase58(),lpPrice:0,lpAmount:new N(i.lpReserve.toString()).div(10**Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())).toNumber(),lpMint:or({address:i.lpMint.toBase58(),programId:t,decimals:Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())}),burnPercent:0}}),e};import we from"bn.js";import{Keypair as gc,PublicKey as wc}from"@solana/web3.js";import xw from"bn.js";import{TOKEN_PROGRAM_ID as kc}from"@solana/spl-token";function pc(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function ci(r,...e){if(!pc(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 li(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 ss(r,e){ci(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var cr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),rt=(r,e)=>r<<32-e|r>>>e;var lw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function fc(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function mi(r){return typeof r=="string"&&(r=fc(r)),ci(r),r}var ur=class{clone(){return this._cloneInto()}},mw={}.toString;function as(r){let e=n=>r().update(mi(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function bc(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),a=Number(t>>i&o),s=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,a,n),r.setUint32(e+c,s,n)}var us=(r,e,t)=>r&e^~r&t,cs=(r,e,t)=>r&e^r&t^e&t,lr=class extends ur{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=cr(this.buffer)}update(e){li(this);let{view:t,buffer:n,blockLen:i}=this;e=mi(e);let o=e.length;for(let a=0;a<o;){let s=Math.min(i-this.pos,o-a);if(s===i){let u=cr(e);for(;i<=o-a;a+=i)this.process(u,a);continue}n.set(e.subarray(a,a+s),this.pos),this.pos+=s,a+=s,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){li(this),ss(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:a}=this;t[a++]=128,this.buffer.subarray(a).fill(0),this.padOffset>i-a&&(this.process(n,0),a=0);for(let m=a;m<i;m++)t[m]=0;bc(n,i-8,BigInt(this.length*8),o),this.process(n,0);let s=cr(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++)s.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:a,pos:s}=this;return e.length=i,e.pos=s,e.finished=o,e.destroyed=a,i%t&&e.buffer.set(n),e}};var yc=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]),Kt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Lt=new Uint32Array(64),di=class extends lr{constructor(){super(64,32,8,!1),this.A=Kt[0]|0,this.B=Kt[1]|0,this.C=Kt[2]|0,this.D=Kt[3]|0,this.E=Kt[4]|0,this.F=Kt[5]|0,this.G=Kt[6]|0,this.H=Kt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:a,G:s,H:u}=this;return[e,t,n,i,o,a,s,u]}set(e,t,n,i,o,a,s,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=a|0,this.G=s|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Lt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Lt[m-15],p=Lt[m-2],b=rt(d,7)^rt(d,18)^d>>>3,f=rt(p,17)^rt(p,19)^p>>>10;Lt[m]=f+Lt[m-7]+b+Lt[m-16]|0}let{A:n,B:i,C:o,D:a,E:s,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=rt(s,6)^rt(s,11)^rt(s,25),p=l+d+us(s,u,c)+yc[m]+Lt[m]|0,f=(rt(n,2)^rt(n,13)^rt(n,22))+cs(n,i,o)|0;l=c,c=u,u=s,s=a+p|0,a=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,a=a+this.D|0,s=s+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,a,s,u,c,l)}roundClean(){Lt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ls=as(()=>new di);var Lw=ae("Raydium_Util");function mt({fromPublicKey:r,programId:e=kc,assignSeed:t}){let n=t?btoa(t).slice(0,32):gc.generate().publicKey.toBase58().slice(0,32);return{publicKey:hc(r,n,e),seed:n}}function hc(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=ls(n);return new wc(i)}import{PublicKey as vw,SystemProgram as _w}from"@solana/web3.js";import Ww from"bn.js";import{createCloseAccountInstruction as Gw,createInitializeAccountInstruction as Uw,createTransferInstruction as Xw,TOKEN_PROGRAM_ID as zw}from"@solana/spl-token";import{PublicKey as bk}from"@solana/web3.js";import gk from"bn.js";import{TOKEN_PROGRAM_ID as kk}from"@solana/spl-token";import{SystemProgram as Qt,SYSVAR_RENT_PUBKEY as Pc,Transaction as ms,TransactionInstruction as Tc}from"@solana/web3.js";import{createInitializeAccountInstruction as ds,TOKEN_PROGRAM_ID as ps}from"@solana/spl-token";function Ac(r="accountFlags"){let e=new Zn(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 pi=v([Te(5),Ac("accountFlags"),L("ownAddress"),y("vaultSignerNonce"),L("baseMint"),L("quoteMint"),L("baseVault"),y("baseDepositsTotal"),y("baseFeesAccrued"),L("quoteVault"),y("quoteDepositsTotal"),y("quoteFeesAccrued"),y("quoteDustThreshold"),L("requestQueue"),L("eventQueue"),L("bids"),L("asks"),y("baseLotSize"),y("quoteLotSize"),y("feeRateBps"),y("referrerRebatesAccrued"),Te(7)]);function xc({programId:r,marketInfo:e}){let t=v([F("version"),Ee("instruction"),y("baseLotSize"),y("quoteLotSize"),_t("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:Pc,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 Tc({keys:n,programId:r,data:i})}async function fi({connection:r,wallet:e,marketInfo:t}){var a,s,u,c,l,m,d,p;let n=new ms,i=await r.getMinimumBalanceForRentExemption(165);n.add(Qt.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:ps}),Qt.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:ps}),ds(t.baseVault.publicKey,t.baseMint,t.vaultOwner),ds(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner),Qt.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(pi.span),space:pi.span,programId:t.programId}));let o=new ms;return o.add(Qt.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:t.lowestFeeMarket?6208320:await r.getMinimumBalanceForRentExemption((a=t.requestQueueSpace)!=null?a:5120+12),space:t.lowestFeeMarket?764:(s=t.requestQueueSpace)!=null?s:5120+12,programId:t.programId}),Qt.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}),Qt.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}),Qt.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}),xc({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:[H.CreateAccount,H.CreateAccount,H.InitAccount,H.InitAccount]},{transaction:o,signer:[],instructionTypes:[H.CreateAccount,H.CreateAccount,H.CreateAccount,H.CreateAccount,H.CreateAccount,H.InitMarket]}]}var bi=class extends on{constructor(t){super(t);this.stableLayout=new Kn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let a=new we(new N(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),s=zo(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:",a.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=St;a.isZero()||(d=m==="base"?Gn(a.mul(c),u):Gn(a.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Gn(a.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let b=new Ye(new we(1)).add(i),f=new Ye(new we(1)).sub(i),w=b.mul(d).quotient,g=f.mul(d).quotient,h=new ke(s,d),A=new ke(s,w),P=new ke(s,g);return this.logDebug("anotherAmount:",h.toFixed(),"maxAnotherAmount:",A.toFixed()),{anotherAmount:h,maxAnotherAmount:A,minAnotherAmount:P,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:a,otherAmountMin:s,fixedSide:u,config:c,txVersion:l,computeBudgetConfig:m,txTipConfig:d}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",o,"amountInB:",a),(o.isZero()||a.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:o.toFixed(),amountInB:a.toFixed()});let{account:p}=this.scope,{bypassAssociatedCheck:b,checkCreateATAOwner:f}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),[w,g]=[o.token,a.token],h=await p.getCreatedTokenAccount({mint:w.mint,associatedOnly:!1}),A=await p.getCreatedTokenAccount({mint:g.mint,associatedOnly:!1});!h&&!A&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",p.tokenAccounts);let P=await p.getCreatedTokenAccount({mint:new Pe(n.lpMint.address)}),T=[w,g],k=[h,A],B=[o.raw,a.raw],S=o.token.mint.toBase58()===n.mintA.address?"base":"quote",x="base";["quote","base"].includes(S)||this.logAndCreateError("invalid fixedSide","fixedSide",u),S==="quote"?(T.reverse(),k.reverse(),B.reverse(),x=u==="a"?"quote":"base"):S==="base"&&(x=u==="a"?"base":"quote");let[R,M]=T,[O,E]=k,[U,Y]=B,W=i!=null?i:await this.getAmmPoolKeys(n.id),pe=this.createTxBuilder(),dt=await p.handleTokenAccount({side:"in",amount:U,mint:R.mint,tokenAccount:O,bypassAssociatedCheck:b,checkCreateATAOwner:f}),{tokenAccount:De}=dt,$e=He(dt,["tokenAccount"]);pe.addInstruction($e);let Qe=await p.handleTokenAccount({side:"in",amount:Y,mint:M.mint,tokenAccount:E,bypassAssociatedCheck:b,checkCreateATAOwner:f}),{tokenAccount:it}=Qe,qe=He(Qe,["tokenAccount"]);pe.addInstruction(qe);let We=await p.handleTokenAccount({side:"out",amount:0,mint:new Pe(n.lpMint.address),tokenAccount:P,bypassAssociatedCheck:b,checkCreateATAOwner:f}),{tokenAccount:Ie}=We,ot=He(We,["tokenAccount"]);return pe.addInstruction(ot),pe.addInstruction({instructions:[ns({poolInfo:n,poolKeys:W,userKeys:{baseTokenAccount:De,quoteTokenAccount:it,lpTokenAccount:Ie,owner:this.scope.ownerPubKey},baseAmountIn:U,quoteAmountIn:Y,otherAmountMin:s.raw,fixedSide:x})],instructionTypes:[n.pooltype.includes("StablePool")?H.AmmV5AddLiquidity:H.AmmV4AddLiquidity],lookupTableAddress:W.lookupTableAccount?[W.lookupTableAccount]:[]}),pe.addCustomComputeBudget(m),pe.addTipInstruction(d),l===0?await pe.buildV0():pe.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:a,quoteAmountMin:s,config:u,txVersion:c,computeBudgetConfig:l,txTipConfig:m}=t,d=i!=null?i:await this.getAmmPoolKeys(n.id),[p,b,f]=[new Pe(n.mintA.address),new Pe(n.mintB.address),new Pe(n.lpMint.address)];this.logDebug("lpAmount:",o),this.logDebug("baseAmountMin:",a),this.logDebug("quoteAmountMin:",s),o.isZero()&&this.logAndCreateError("amount must greater than zero","lpAmount",o.toString());let{account:w}=this.scope,g=await w.getCreatedTokenAccount({mint:f,associatedOnly:!1});g||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",w.tokenAccounts);let h=await w.getCreatedTokenAccount({mint:p}),A=await w.getCreatedTokenAccount({mint:b}),P=this.createTxBuilder(),{bypassAssociatedCheck:T,checkCreateATAOwner:k}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),M=await w.handleTokenAccount({side:"out",amount:0,mint:p,tokenAccount:h,bypassAssociatedCheck:T,checkCreateATAOwner:k}),{tokenAccount:B}=M,S=He(M,["tokenAccount"]);P.addInstruction(S);let O=await w.handleTokenAccount({side:"out",amount:0,mint:b,tokenAccount:A,bypassAssociatedCheck:T,checkCreateATAOwner:k}),{tokenAccount:x}=O,R=He(O,["tokenAccount"]);return P.addInstruction(R),P.addInstruction({instructions:[oi({poolInfo:n,poolKeys:d,userKeys:{lpTokenAccount:g,baseTokenAccount:B,quoteTokenAccount:x,owner:this.scope.ownerPubKey},lpAmount:o,baseAmountMin:a,quoteAmountMin:s})],lookupTableAddress:d.lookupTableAccount?[d.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?H.AmmV5RemoveLiquidity:H.AmmV4RemoveLiquidity]}),P.addCustomComputeBudget(l),P.addTipInstruction(m),c===0?await P.buildV0():P.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:a,userFarmLpAmount:s,base:u,computeBudgetConfig:c,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=Nt,checkCreateATAOwner:p=!0,getEphemeralSigners:b,txVersion:f}){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 w=this.createTxBuilder(),g={};for(let W of this.scope.account.tokenAccountRawInfos)(g[W.accountInfo.mint.toString()]===void 0||le(this.scope.ownerPubKey,W.accountInfo.mint,Nt).publicKey.equals(W.pubkey))&&(g[W.accountInfo.mint.toString()]=W.pubkey);let h=g[t.lpMint.address];if(h===void 0)throw Error("find lp account error in trade accounts");let A=i.add(s!=null?s:new we(0)),P=t.mintA.address===ve.WSOL.mint.toString(),T=t.mintB.address===ve.WSOL.mint.toString(),{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Nt,mint:new Pe(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!0,checkCreateATAOwner:p});if(w.addInstruction(B||{}),k===void 0)throw new Error("base token account not found");let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Nt,mint:new Pe(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:p});if(w.addInstruction(x||{}),S===void 0)throw new Error("quote token account not found");if(g[t.mintA.address]=k,g[t.mintB.address]=S,a!==void 0&&!(s!=null&&s.isZero())){let W=Or[a.programId],pe=nn({programId:new Pe(a.programId),poolId:new Pe(a.id),owner:this.scope.ownerPubKey,version:W}),De,$e=await this.scope.connection.getAccountInfo(pe);if($e&&(De=ko(W).decode($e.data)),W!==6&&!De){let{instruction:We,instructionType:ht}=Ao({id:new Pe(a.id),programId:new Pe(a.programId),version:W,ledger:pe,owner:this.scope.ownerPubKey});w.addInstruction({instructions:[We],instructionTypes:[ht]})}let it=[];for(let We of a.rewardInfos){let ht=We.mint.address===ve.WSOL.mint.toString();if(g[We.mint.address])it.push(g[We.mint.address]);else{let{account:un,instructionParams:Ct}=await this.scope.account.getOrCreateTokenAccount({mint:new Pe(We.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!ht,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});un||this.logAndCreateError("farm reward account not found:",We.mint.address),Ct&&w.addInstruction(Ct),it.push(un)}}let qe=(await this.scope.api.fetchFarmKeysById({ids:a.id}))[0],Ie={userAuxiliaryLedgers:m,amount:s,owner:this.scope.ownerPubKey,farmInfo:a,farmKeys:qe,lpAccount:h,rewardAccounts:it},ot=Or[a.programId],dt=ot===6?Po(Ie):ot===5?To(Ie):xo(Ie),Qe={3:H.FarmV3Withdraw,5:H.FarmV5Withdraw,6:H.FarmV6Withdraw};w.addInstruction({instructions:[dt],instructionTypes:[Qe[ot]]})}let R=await this.getAmmPoolKeys(t.id),M=oi({poolInfo:t,poolKeys:R,userKeys:{lpTokenAccount:h,baseTokenAccount:k,quoteTokenAccount:S,owner:this.scope.ownerPubKey},lpAmount:A,baseAmountMin:0,quoteAmountMin:0});w.addInstruction({instructions:[M],instructionTypes:[t.pooltype.includes("StablePool")?H.AmmV5RemoveLiquidity:H.AmmV4RemoveLiquidity],lookupTableAddress:R.lookupTableAccount?[R.lookupTableAccount]:[]});let[O,E]=t.mintA.address===n.mintA.address?[k,S]:[S,k],U=await this.scope.clmm.getClmmPoolKeys(n.id),Y=await rn.openPositionFromBaseInstructions(te(G({poolInfo:n,poolKeys:U,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:O,tokenAccountB:E},withMetadata:"create"},o),{base:u,getEphemeralSigners:b}));return w.addInstruction({instructions:[...Y.instructions],signers:Y.signers,instructionTypes:[...Y.instructionTypes],lookupTableAddress:U.lookupTableAccount?[U.lookupTableAccount]:[]}),f===0?w.sizeCheckBuildV0({computeBudgetConfig:c}):w.sizeCheckBuild({computeBudgetConfig:c})}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:a,quoteAmount:s,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:b,computeBudgetConfig:f,txTipConfig:w}){var E;let g=c.feePayer||((E=this.scope.owner)==null?void 0:E.publicKey),h=c.useSOLBalance&&i.mint.equals(mr),A=c.useSOLBalance&&o.mint.equals(mr),P=this.createTxBuilder(),{account:T,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:h?{payer:g,amount:a}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:l,checkCreateATAOwner:m});P.addInstruction(k||{});let{account:B,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:A?{payer:g,amount:s}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:l,checkCreateATAOwner:m});if(P.addInstruction(S||{}),T===void 0||B===void 0)throw Error("you don't has some token account");let x=ui({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),R={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:b},{instruction:M,instructionType:O}=si(te(G({},R),{userWallet:this.scope.ownerPubKey,userCoinVault:T,userPcVault:B,userLpVault:le(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:a,pcAmount:s}));return P.addInstruction({instructions:[M],instructionTypes:[O]}),P.addCustomComputeBudget(f),P.addTipInstruction(w),P.versionBuild({txVersion:p,extInfo:{address:R}})}async createMarketAndPoolV4({programId:t=ro,marketProgram:n=no,feeDestinationId:i=io,tokenProgram:o,baseMintInfo:a,quoteMintInfo:s,baseAmount:u,quoteAmount:c,startTime:l,ownerInfo:m,lowestFeeMarket:d,assignSeed:p,associatedOnly:b=!1,checkCreateATAOwner:f=!1,lotSize:w=1,tickSize:g=.01,txVersion:h,computeBudgetConfig:A,txTipConfig:P}){var gi,wi,ki;let T=this.scope.ownerPubKey,k=m.feePayer||((gi=this.scope.owner)==null?void 0:gi.publicKey),B=m.useSOLBalance&&a.mint.equals(mr),S=m.useSOLBalance&&s.mint.equals(mr),x=p?`${a.mint.toBase58().slice(0,7)}-${s.mint.toBase58().slice(0,7)}-${p}`:void 0,R=mt({fromPublicKey:T,programId:n,assignSeed:x&&`${x}-market`}),M=mt({fromPublicKey:T,programId:n,assignSeed:x&&`${x}-request`}),O=mt({fromPublicKey:T,programId:n,assignSeed:x&&`${x}-event`}),E=mt({fromPublicKey:T,programId:n,assignSeed:x&&`${x}-bids`}),U=mt({fromPublicKey:T,programId:n,assignSeed:x&&`${x}-asks`}),Y=mt({fromPublicKey:T,programId:Nt,assignSeed:x&&`${x}-baseVault`}),W=mt({fromPublicKey:T,programId:Nt,assignSeed:x&&`${x}-quoteVault`}),pe=0,De=new we(100);function $e(){let st=new we(0);for(;;)try{return{vaultOwner:Pe.createProgramAddressSync([R.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:it,vaultSignerNonce:qe}=$e(),Ie=new we(Math.round(10**a.decimals*w)),ot=new we(Math.round(w*10**s.decimals*g));if(Ie.eq(St))throw Error("lot size is too small");if(ot.eq(St))throw Error("tick size or lot size is too small");let dt=await fi({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:n,vaultOwner:it,baseMint:a.mint,quoteMint:s.mint,id:R,baseVault:Y,quoteVault:W,requestQueue:M,eventQueue:O,bids:E,asks:U,feeRateBps:pe,quoteDustThreshold:De,vaultSignerNonce:qe,baseLotSize:Ie,quoteLotSize:ot,lowestFeeMarket:d}}),Qe=this.createTxBuilder();Qe.addInstruction({instructions:dt[0].transaction.instructions,signers:dt[0].signer});for await(let st of dt.slice(1,dt.length))Qe.addInstruction({instructions:st.transaction.instructions,signers:st.signer,instructionTypes:st.instructionTypes});let{account:We,instructionParams:ht}=await this.scope.account.getOrCreateTokenAccount({mint:a.mint,owner:this.scope.ownerPubKey,createInfo:B?{payer:k,amount:u}:void 0,notUseTokenAccount:B,skipCloseAccount:!B,associatedOnly:B?!1:b,checkCreateATAOwner:f,assignSeed:B&&x?`${x}-wsol`:void 0});Qe.addInstruction(ht||{});let{account:un,instructionParams:Ct}=await this.scope.account.getOrCreateTokenAccount({mint:s.mint,owner:this.scope.ownerPubKey,createInfo:S?{payer:k,amount:c}:void 0,notUseTokenAccount:S,skipCloseAccount:!S,associatedOnly:S?!1:b,checkCreateATAOwner:f,assignSeed:S&&x?`${x}-wsol`:void 0});if(Qe.addInstruction(Ct||{}),We===void 0)throw Error("you don't has base token account");if(un===void 0)throw Error("you don't has quote token account");let Re=ui({version:4,marketVersion:3,marketId:R.publicKey,baseMint:a.mint,quoteMint:s.mint,baseDecimals:a.decimals,quoteDecimals:s.decimals,programId:t,marketProgramId:n}),dr={programId:t,ammId:Re.id,ammAuthority:Re.authority,ammOpenOrders:Re.openOrders,lpMint:Re.lpMint,coinMint:Re.baseMint,pcMint:Re.quoteMint,coinVault:Re.baseVault,pcVault:Re.quoteVault,withdrawQueue:Re.withdrawQueue,ammTargetOrders:Re.targetOrders,poolTempLp:Re.lpVault,marketProgramId:Re.marketProgramId,marketId:Re.marketId,ammConfigId:Re.configId,feeDestinationId:i},{instruction:fs,instructionType:bs}=si(te(G({},dr),{userWallet:this.scope.ownerPubKey,userCoinVault:We,userPcVault:un,userLpVault:le(this.scope.ownerPubKey,Re.lpMint,o).publicKey,nonce:Re.nonce,openTime:l,coinAmount:u,pcAmount:c}));Qe.addInstruction({instructions:[fs],instructionTypes:[bs]});let yi=B||S?[((wi=ht==null?void 0:ht.instructions)==null?void 0:wi[0])||((ki=Ct==null?void 0:Ct.instructions)==null?void 0:ki[0])].filter(st=>!!st):void 0;return h===0?Qe.sizeCheckBuildV0({computeBudgetConfig:A,splitIns:yi,address:G({requestQueue:M.publicKey,eventQueue:O.publicKey,bids:E.publicKey,asks:U.publicKey,baseVault:Y.publicKey,quoteVault:W.publicKey,baseMint:new Pe(a.mint),quoteMint:new Pe(s.mint)},dr)}):Qe.sizeCheckBuild({computeBudgetConfig:A,splitIns:yi,address:G({requestQueue:M.publicKey,eventQueue:O.publicKey,bids:E.publicKey,asks:U.publicKey,baseVault:Y.publicKey,quoteVault:W.publicKey,baseMint:new Pe(a.mint),quoteMint:new Pe(s.mint)},dr)})}async getCreatePoolFee({programId:t}){let n=ar({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Yo.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:a}){let[s,u]=[i.toString(),o.toString()];if(s!==t.mintA.address&&s!==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=s==t.mintA.address?"base":"quote";p==="quote"&&(m.reverse(),d.reverse());let[b,f]=m,[w,g]=d,h=t.version===4,A;if(h)A=new N(f.toString()).div(10**g).div(new N(b.toString()).div(10**w));else{let E=es(this.stableLayout.stableModelData,c.toNumber(),l.toNumber(),!1);p==="quote"?A=new N(1e6).div(E*1e6):A=new N(E*1e6).div(1e6)}let P=n,T=new we(0),k=new we(0);if(!P.isZero())if(h){k=gn(P.mul(Jr),sr);let E=P.sub(k),U=b.add(E);T=f.mul(E).div(U)}else{k=P.mul(new we(2)).div(new we(1e4));let E=P.sub(k);p==="quote"?T=new we($o(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),E.toNumber())):T=new we(Jo(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),E.toNumber()))}let B=new we(new N(T.toString()).mul(1-a).toFixed(0)),S=T,x=B,R=new N(T.toString()).div(new N(P.sub(k).toString()).toFixed(0));!P.isZero()&&!T.isZero()&&(R=new N(T.toString()).div(10**g).div(new N(P.sub(k).toString()).div(10**w)));let M=A.sub(R).div(A).mul(100);return{amountOut:S,minAmountOut:x,currentPrice:A,executionPrice:R,priceImpact:M,fee:k}}computeAmountIn({poolInfo:t,amountOut:n,mintIn:i,mintOut:o,slippage:a}){let{baseReserve:s,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:",s.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:",`${a*100}%`);let d=[s,u],p=c?"quote":"base";p==="base"&&d.reverse(),this.logDebug("output side:",p);let[b,f]=d,w=new N(f.toString()).div(10**t[c?"mintB":"mintA"].decimals).div(new N(b.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(f)&&(h=f.sub(new we(1)));let x=f.sub(h);g=b.mul(h).div(x).mul(sr).div(sr.sub(Jr))}let A=new we(new N(g.toString()).mul(1+a).toFixed(0)),P=g,T=A;this.logDebug("amountIn:",new N(P.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString()),this.logDebug("maxAmountIn:",new N(T.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 B=w.mul(P.toString()),S=B.sub(n.toString()).abs().div(B);return this.logDebug("priceImpact:",`${S.toString()}%`),{amountIn:P,maxAmountIn:T,currentPrice:w,executionPrice:k,priceImpact:S}}async swap({poolInfo:t,poolKeys:n,amountIn:i,amountOut:o,inputMint:a,fixedSide:s,txVersion:u,config:c,computeBudgetConfig:l,txTipConfig:m}){let d=this.createTxBuilder(),{associatedOnly:p=!0,inputUseSolBalance:b=!0,outputUseSolBalance:f=!0}=c||{},[w,g]=a===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],h=b&&w.address===jt.toBase58(),A=f&&g.address===jt.toBase58(),{account:P,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Nt,mint:new Pe(w.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:p});d.addInstruction(T||{}),P||this.logAndCreateError("input token account not found",{token:w.symbol||w.address,tokenAccountIn:P,inputTokenUseSolBalance:h,associatedOnly:p});let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Nt,mint:new Pe(g.address),owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:p});d.addInstruction(B||{}),k===void 0&&this.logAndCreateError("output token account not found",{token:g.symbol||g.address,tokenAccountOut:k,outputTokenUseSolBalance:A,associatedOnly:p});let S=n||await this.getAmmPoolKeys(t.id),x=4;return t.pooltype.includes("StablePool")&&(x=5),d.addInstruction({instructions:[rs({version:x,poolKeys:S,userKeys:{tokenAccountIn:P,tokenAccountOut:k,owner:this.scope.ownerPubKey},amountIn:i,amountOut:o,fixedSide:s})],instructionTypes:[x===4?H.AmmV4SwapBaseIn:H.AmmV5SwapBaseIn]}),d.addCustomComputeBudget(l),d.addTipInstruction(m),d.versionBuild({txVersion:u})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let i=await Et(this.scope.connection,t.map(l=>({pubkey:new Pe(l)})),n),o={},a=[];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=Ho.decode(m.accountInfo.data);o[String(t[l])]=te(G({},d),{programId:m.accountInfo.owner}),a.push(d.baseVault,d.quoteVault)}let s={},u=await Et(this.scope.connection,a.map(l=>({pubkey:new Pe(l)})),n);for(let l=0;l<a.length;l++){let m=u[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+a[l]);s[String(a[l])]=new we(Sc.decode(m.data).amount.toString())}let c={};for(let[l,m]of Object.entries(o)){let d=s[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=s[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);c[l]=te(G({},m),{baseReserve:d,mintAAmount:s[m.baseVault.toString()],mintBAmount:s[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=os({[t]:n}),o=i[t],a=await this.scope.tradeV2.computePoolToPoolKeys({pools:[i[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:o,poolKeys:a[0]}}};export{bi as default};
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=liquidity.mjs.map