UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

3 lines 212 kB
var ws=Object.defineProperty,ks=Object.defineProperties;var hs=Object.getOwnPropertyDescriptors;var Cn=Object.getOwnPropertySymbols;var Ti=Object.prototype.hasOwnProperty,xi=Object.prototype.propertyIsEnumerable;var Pi=(r,e,t)=>e in r?ws(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,G=(r,e)=>{for(var t in e||(e={}))Ti.call(e,t)&&Pi(r,t,e[t]);if(Cn)for(var t of Cn(e))xi.call(e,t)&&Pi(r,t,e[t]);return r},te=(r,e)=>ks(r,hs(e));var He=(r,e)=>{var t={};for(var n in r)Ti.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Cn)for(var n of Cn(r))e.indexOf(n)<0&&xi.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as Pe}from"@solana/web3.js";import{AccountLayout as Nc,NATIVE_MINT as pr,TOKEN_PROGRAM_ID as Ct}from"@solana/spl-token";import{PublicKey as $a}from"@solana/web3.js";import bt from"bn.js";var jt=9e15,St=1e9,br="0123456789abcdef",Mn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",vn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",yr={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-jt,maxE:jt,crypto:!1},Ki,pt,Z=!0,_n="[DecimalError] ",xt=_n+"Invalid argument: ",Li=_n+"Precision limit exceeded",Ni=_n+"crypto unavailable",Ci="[object Decimal]",Me=Math.floor,Se=Math.pow,As=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Ps=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ts=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Ri=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,et=1e7,z=7,xs=9007199254740991,Ss=Mn.length-1,gr=vn.length-1,K={toStringTag:Ci};K.absoluteValue=K.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),q(r)};K.ceil=function(){return q(new this.constructor(this),this.e+1,2)};K.clampedTo=K.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(xt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};K.comparedTo=K.cmp=function(r){var e,t,n,i,o=this,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())+z,n.rounding=1,t=Bs(n,Vi(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(Z=!1,o=l.s*Se(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=Se(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=le(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 Z=!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/z))*z,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};K.dividedBy=K.div=function(r){return le(this,new this.constructor(r))};K.dividedToIntegerBy=K.divToInt=function(r){var e=this,t=e.constructor;return q(le(e,new t(r),0,1,1),t.precision,t.rounding)};K.equals=K.eq=function(r){return this.cmp(r)===0};K.floor=function(){return q(new this.constructor(this),this.e+1,3)};K.greaterThan=K.gt=function(r){return this.cmp(r)>0};K.greaterThanOrEqualTo=K.gte=function(r){var e=this.cmp(r);return e==1||e===0};K.hyperbolicCosine=K.cosh=function(){var r,e,t,n,i,o=this,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/On(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=Zt(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=Zt(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/On(5,r)),i=Zt(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,le(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};K.inverseCosine=K.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?$e(t,i,o):new t(0):new t(NaN):e.isZero()?$e(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=$e(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,Z=!1,t=t.times(t).minus(1).sqrt().plus(t),Z=!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,Z=!1,t=t.times(t).plus(1).sqrt().plus(t),Z=!0,n.precision=r,n.rounding=e,t.ln())};K.inverseHyperbolicTangent=K.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?q(new o(i),r,e,!0):(o.precision=t=n-i.e,i=le(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};K.inverseSine=K.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=$e(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<=gr)return a=$e(l,m+4,d).times(.25),a.s=c.s,a}else{if(!c.s)return new l(NaN);if(m+4<=gr)return a=$e(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/z+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(Z=!1,e=Math.ceil(s/z),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)),Z=!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/z)>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(Z=!1,s=m+p,a=Tt(c,s),n=e?En(l,s+10):Tt(r,s),u=le(a,n,s,1),ln(u.d,i=m,d))do if(s+=10,a=Tt(c,s),n=e?En(l,s+10):Tt(r,s),u=le(a,n,s,1),!o){+Le(u.d).slice(i+1,i+15)+1==1e14&&(u=q(u,m+1,0));break}while(ln(u.d,i+=10,d));return Z=!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,f=p.constructor;if(r=new f(r),!p.d||!r.d)return!p.s||!r.s?r=new f(NaN):p.d?r.s=-r.s:r=new f(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,s=f.precision,u=f.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new f(p);else return new f(u===3?-0:0);return Z?q(r,s,u):r}if(t=Me(r.e/z),l=Me(p.e/z),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/z),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=Vn(c,t),Z?q(r,s,u):r):new f(u===3?-0:0)};K.modulo=K.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?q(new n(t),n.precision,n.rounding):(Z=!1,n.modulo==9?(e=le(t,r.abs(),0,3,1),e.s*=r.s):e=le(t,r,0,n.modulo,1),e=e.times(r),Z=!0,t.minus(e))};K.naturalExponential=K.exp=function(){return wr(this)};K.naturalLogarithm=K.ln=function(){return Tt(this)};K.negated=K.neg=function(){var r=new this.constructor(this);return r.s=-r.s,q(r)};K.plus=K.add=function(r){var e,t,n,i,o,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)),Z?q(r,s,u):r;if(o=Me(m.e/z),n=Me(r.e/z),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/z),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=Vn(c,n),Z?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(xt+r);return t.d?(e=Mi(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())+z,n.rounding=1,t=Ks(n,Vi(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(Z=!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(le(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 Z=!0,q(n,u,l.rounding,r)};K.tangent=K.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=le(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,q(pt==2||pt==4?t.neg():t,r,e,!0)):new n(NaN)};K.times=K.mul=function(r){var e,t,n,i,o,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/z)+Me(r.e/z),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=Vn(o,t),Z?q(r,m.precision,m.rounding):r};K.toBinary=function(r,e){return hr(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:(qe(r,0,St),e===void 0?e=n.rounding:qe(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=st(n,!0):(qe(r,0,St),e===void 0?e=i.rounding:qe(e,0,8),n=q(new i(n),r+1,e),t=st(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=st(i):(qe(r,0,St),e===void 0?e=o.rounding:qe(e,0,8),n=q(new o(i),r+i.e+1,e),t=st(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,f=p.d,b=p.constructor;if(!f)return new b(p);if(c=t=new b(1),n=u=new b(0),e=new b(n),o=e.e=Mi(f)-p.e-1,a=o%z,e.d[0]=Se(10,a<0?z+a:a),r==null)r=o>0?e:c;else{if(s=new b(r),!s.isInt()||s.lt(c))throw Error(xt+s);r=s.gt(e)?o>0?e:c:s}for(Z=!1,s=new b(Le(f)),l=b.precision,b.precision=o=f.length*z*2;m=le(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=le(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,d=le(c,n,o,1).minus(p).abs().cmp(le(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],b.precision=l,Z=!0,d};K.toHexadecimal=K.toHex=function(r,e){return hr(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:qe(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]?(Z=!1,t=le(t,r,0,e,1).times(r),Z=!0,q(t)):(r.s=t.s,t=r),t};K.toNumber=function(){return+this};K.toOctal=function(r,e){return hr(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(Se(+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/z),e>=r.d.length-1&&(t=c<0?-c:c)<=xs)return i=vi(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=Se(+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):(Z=!1,u.rounding=s.s=1,t=Math.min(12,(e+"").length),i=wr(r.times(Tt(s,n+t)),n),i.d&&(i=q(i,n+5,1),ln(i.d,n,o)&&(e=n+10,i=q(wr(r.times(Tt(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,Z=!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=st(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(qe(r,1,St),e===void 0?e=i.rounding:qe(e,0,8),n=q(new i(n),r,e),t=st(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):(qe(r,1,St),e===void 0?e=n.rounding:qe(e,0,8)),q(new n(t),r,e)};K.toString=function(){var r=this,e=r.constructor,t=st(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=st(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=z-n.length,t&&(o+=Pt(t)),o+=n;a=r[e],n=a+"",t=z-n.length,t&&(o+=Pt(t))}else if(a===0)return"0";for(;a%10===0;)a/=10;return o+a}function qe(r,e,t){if(r!==~~r||r<e||r>t)throw Error(xt+r)}function ln(r,e,t,n){var i,o,a,s;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=z,i=0):(i=Math.ceil((e+1)/z),e%=z),o=Se(10,z-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)==Se(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)==Se(10,e-3)-1,a}function Rn(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]+=br.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 Bs(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/On(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=Zt(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 le=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,f,b,w,g,h,A,P,T,k,S,B,L,x,M,O,v=n.constructor,U=n.s==i.s?1:-1,j=n.d,D=i.d;if(!j||!j[0]||!D||!D[0])return new v(!n.s||!i.s||(j?D&&j[0]==D[0]:!D)?NaN:j&&j[0]==0||!D?U*0:U/0);for(u?(p=1,l=n.e-i.e):(u=et,p=z,l=Me(n.e/p)-Me(i.e/p)),M=D.length,L=j.length,g=new v(U),h=g.d=[],m=0;D[m]==(j[m]||0);m++);if(D[m]>(j[m]||0)&&l--,o==null?(k=o=v.precision,a=v.rounding):s?k=o+(n.e-i.e)+1:k=o,k<0)h.push(1),f=!0;else{if(k=k/p+2|0,m=0,M==1){for(d=0,D=D[0],k++;(m<L||d)&&k--;m++)S=d*u+(j[m]||0),h[m]=S/D|0,d=S%D|0;f=d||m<L}else{for(d=u/(D[0]+1)|0,d>1&&(D=r(D,d,u),j=r(j,d,u),M=D.length,L=j.length),B=M,A=j.slice(0,M),P=A.length;P<M;)A[P++]=0;O=D.slice(),O.unshift(0),x=D[0],D[1]>=u/2&&++x;do d=0,c=e(D,A,M,P),c<0?(T=A[0],M!=P&&(T=T*u+(A[1]||0)),d=T/x|0,d>1?(d>=u&&(d=u-1),b=r(D,d,u),w=b.length,P=A.length,c=e(b,A,w,P),c==1&&(d--,t(b,M<w?O:D,w,u))):(d==0&&(c=d=1),b=D.slice()),w=b.length,w<P&&b.unshift(0),t(A,b,P,u),c==-1&&(P=A.length,c=e(D,A,M,P),c<1&&(d++,t(A,M<P?O:D,P,u))),P=A.length):c===0&&(d++,A=[0]),h[m++]=d,c&&A[0]?A[P++]=j[B]||0:(A=[j[B]],P=1);while((B++<L||A[0]!==void 0)&&k--);f=A[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,Ki=f;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,f)}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+=z,a=e,l=m[d=0],u=l/Se(10,i-a-1)%10|0;else if(d=Math.ceil((o+1)/z),s=m.length,d>=s)if(n){for(;s++<=d;)m.push(0);l=u=0,i=1,o%=z,a=o-z+1}else break e;else{for(l=s=m[d],i=1;s>=10;s/=10)i++;o%=z,a=o-z+i,u=a<0?0:l/Se(10,i-a-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(a<0?l:l%Se(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/Se(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]=Se(10,(z-e%z)%z),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,s=1,d--):(m.length=d+1,s=Se(10,z-o),m[d]=a>0?(l/Se(10,i-a)%Se(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 Z&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function st(r,e,t){if(!r.isFinite())return _i(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)+Pt(n):a>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Pt(-i-1)+o,t&&(n=t-a)>0&&(o+=Pt(n))):i>=a?(o+=Pt(i+1-a),t&&(n=t-i-1)>0&&(o=o+"."+Pt(n))):((n=i+1)<a&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-a)>0&&(i+1===a&&(o+="."),o+=Pt(n))),o}function Vn(r,e){var t=r[0];for(e*=z;t>=10;t/=10)e++;return e}function En(r,e,t){if(e>Ss)throw Z=!0,t&&(r.precision=t),Error(Li);return q(new r(Mn),e,1,!0)}function $e(r,e,t){if(e>gr)throw Error(Li);return q(new r(vn),e,t,!0)}function Mi(r){var e=r.length-1,t=e*z+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 Pt(r){for(var e="";r--;)e+="0";return e}function vi(r,e,t,n){var i,o=new r(1),a=Math.ceil(n/z+4);for(Z=!1;;){if(t%2&&(o=o.times(e),Bi(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),Bi(e.d,a)}return Z=!0,o}function Si(r){return r.d[r.d.length-1]&1}function Ei(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 wr(r,e){var t,n,i,o,a,s,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,f=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(Z=!1,u=f):u=e,s=new d(.03125);r.e>-2;)r=r.times(s),m+=5;for(n=Math.log(Se(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(le(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&&ln(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=f,p,Z=!0);else return d.precision=f,a}a=s}}function Tt(r,e){var t,n,i,o,a,s,u,c,l,m,d,p=1,f=10,b=r,w=b.d,g=b.constructor,h=g.rounding,A=g.precision;if(b.s<0||!w||!w[0]||!b.e&&w[0]==1&&w.length==1)return new g(w&&!w[0]?-1/0:b.s!=1?NaN:w?0:b);if(e==null?(Z=!1,l=A):l=e,g.precision=l+=f,t=Le(w),n=t.charAt(0),Math.abs(o=b.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)b=b.times(r),t=Le(b.d),n=t.charAt(0),p++;o=b.e,n>1?(b=new g("0."+t),o++):b=new g(n+"."+t.slice(1))}else return c=En(g,l+2,A).times(o+""),b=Tt(new g(n+"."+t.slice(1)),l-f).plus(c),g.precision=A,e==null?q(b,A,h,Z=!0):b;for(m=b,u=a=b=le(b.minus(1),b.plus(1),l,1),d=q(b.times(b),l,1),i=3;;){if(a=q(a.times(d),l,1),c=u.plus(le(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(En(g,l+2,A).times(o+""))),u=le(u,new g(p),l,1),e==null)if(ln(u.d,l-f,h,s))g.precision=l+=f,c=a=b=le(m.minus(1),m.plus(1),l,1),d=q(b.times(b),l,1),i=s=1;else return q(u,g.precision=A,h,Z=!0);else return g.precision=A,u;u=c,i+=2}}function _i(r){return String(r.s*r.s/0)}function kr(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)%z,t<0&&(n+=z),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=z;n<i;)r.d.push(+e.slice(n,n+=z));e=e.slice(n),n=z-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),Z&&(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 Is(r,e){var t,n,i,o,a,s,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Ri.test(e))return kr(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Ps.test(e))t=16,e=e.toLowerCase();else if(As.test(e))t=2;else if(Ts.test(e))t=8;else throw Error(xt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),a=o>=0,n=r.constructor,a&&(e=e.replace(".",""),s=e.length,o=s-o,i=vi(n,new n(t),o,o*2)),c=Rn(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=Vn(c,l),r.d=c,Z=!1,a&&(r=le(r,i,s*4)),u&&(r=r.times(Math.abs(u)<54?Se(2,u):mn.pow(2,u))),Z=!0,r)}function Ks(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Zt(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/On(5,t)),e=Zt(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 Zt(r,e,t,n,i){var o,a,s,u,c=1,l=r.precision,m=Math.ceil(l/z);for(Z=!1,u=t.times(t),s=new r(n);;){if(a=le(s.times(u),new r(e++*e++),l,1),s=i?n.plus(a):n.minus(a),n=le(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 Z=!0,a.d.length=m+1,a}function On(r,e){for(var t=r;--e;)t*=r;return t}function Vi(r,e){var t,n=e.s<0,i=$e(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=Si(t)?n?2:3:n?4:1,e;pt=Si(t)?n?1:4:n?3:2}return e.minus(i).abs()}function hr(r,e,t,n){var i,o,a,s,u,c,l,m,d,p=r.constructor,f=t!==void 0;if(f?(qe(t,1,St),n===void 0?n=p.rounding:qe(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=_i(r);else{for(l=st(r),a=l.indexOf("."),f?(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=Rn(st(d),10,i),d.e=d.d.length),m=Rn(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=f?"0p+0":"0";else{if(a<0?o--:(r=new p(r),r.d=m,r.e=o,r=le(r,d,t,n,0,i),m=r.d,o=r.e,c=Ki),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+=br.charAt(m[a]);if(f){if(u>1)if(e==16||e==8){for(a=e==16?4:3,--u;u%a;u++)l+="0";for(m=Rn(l,i,e),u=m.length;!m[u-1];--u);for(a=1,l="1.";a<u;a++)l+=br.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 Bi(r,e){if(r.length>e)return r.length=e,!0}function Ls(r){return new this(r).abs()}function Ns(r){return new this(r).acos()}function Cs(r){return new this(r).acosh()}function Rs(r,e){return new this(r).plus(e)}function Ms(r){return new this(r).asin()}function vs(r){return new this(r).asinh()}function Es(r){return new this(r).atan()}function _s(r){return new this(r).atanh()}function Vs(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=$e(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?$e(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=$e(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(le(r,e,o,1)),e=$e(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(le(r,e,o,1)),t}function Os(r){return new this(r).cbrt()}function Ws(r){return q(r=new this(r),r.e+1,2)}function Fs(r,e,t){return new this(r).clamp(e,t)}function Ds(r){if(!r||typeof r!="object")throw Error(_n+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,St,"rounding",0,8,"toExpNeg",-jt,0,"toExpPos",0,jt,"maxE",0,jt,"minE",-jt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=yr[t]),(n=r[t])!==void 0)if(Me(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(xt+t+": "+n);if(t="crypto",i&&(this[t]=yr[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(Ni);else this[t]=!1;else throw Error(xt+t+": "+n);return this}function qs(r){return new this(r).cos()}function Gs(r){return new this(r).cosh()}function Oi(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,Ii(o)){c.s=o.s,Z?!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++;Z?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 kr(c,o.toString())}else if(u!=="string")throw Error(xt+o);return(s=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(s===43&&(o=o.slice(1)),c.s=1),Ri.test(o)?kr(c,o):Is(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=Ds,i.clone=Oi,i.isDecimal=Ii,i.abs=Ls,i.acos=Ns,i.acosh=Cs,i.add=Rs,i.asin=Ms,i.asinh=vs,i.atan=Es,i.atanh=_s,i.atan2=Vs,i.cbrt=Os,i.ceil=Ws,i.clamp=Fs,i.cos=qs,i.cosh=Gs,i.div=Us,i.exp=Xs,i.floor=Qs,i.hypot=zs,i.ln=Hs,i.log=js,i.log10=Ys,i.log2=Zs,i.max=Js,i.min=$s,i.mod=ea,i.mul=ta,i.pow=na,i.random=ra,i.round=ia,i.sign=oa,i.sin=sa,i.sinh=aa,i.sqrt=ua,i.sub=ca,i.sum=la,i.tan=ma,i.tanh=da,i.trunc=pa,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 Us(r,e){return new this(r).div(e)}function Xs(r){return new this(r).exp()}function Qs(r){return q(r=new this(r),r.e+1,3)}function zs(){var r,e,t=new this(0);for(Z=!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 Z=!0,new this(1/0);t=e}return Z=!0,t.sqrt()}function Ii(r){return r instanceof mn||r&&r.toStringTag===Ci||!1}function Hs(r){return new this(r).ln()}function js(r,e){return new this(r).log(e)}function Zs(r){return new this(r).log(2)}function Ys(r){return new this(r).log(10)}function Js(){return Ei(this,arguments,"lt")}function $s(){return Ei(this,arguments,"gt")}function ea(r,e){return new this(r).mod(e)}function ta(r,e){return new this(r).mul(e)}function na(r,e){return new this(r).pow(e)}function ra(r){var e,t,n,i,o=0,a=new this(1),s=[];if(r===void 0?r=this.precision:qe(r,1,St),n=Math.ceil(r/z),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(Ni);else for(;o<n;)s[o++]=Math.random()*1e7|0;for(n=s[--o],r%=z,n&&r&&(i=Se(10,z-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-=z)s.shift();for(n=1,i=s[0];i>=10;i/=10)n++;n<z&&(t-=z-n)}return a.e=t,a.d=s,a}function ia(r){return q(r=new this(r),r.e+1,this.rounding)}function oa(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function sa(r){return new this(r).sin()}function aa(r){return new this(r).sinh()}function ua(r){return new this(r).sqrt()}function ca(r,e){return new this(r).sub(e)}function la(){var r=0,e=arguments,t=new this(e[r]);for(Z=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return Z=!0,q(t,this.precision,this.rounding)}function ma(r){return new this(r).tan()}function da(r){return new this(r).tanh()}function pa(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 mn=K.constructor=Oi(yr);Mn=new mn(Mn);vn=new mn(vn);var C=mn;import Ta from"big.js";import Dn from"bn.js";import{get as Wi,set as fa}from"lodash";var Ar=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}},Fi={},ba={};function ue(r){let e=Wi(Fi,r);if(!e){let t=Wi(ba,r);e=new Ar({name:r,logLevel:t}),fa(Fi,r,e)}return e}import ya from"toformat";var ga=ya,dn=ga;import Fn from"big.js";import ka from"bn.js";import ha from"decimal.js-light";import pn from"bn.js";var Di=9007199254740991;function ne(r){let e=ue("Raydium_parseBigNumberish");if(r instanceof pn)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new pn(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Di||r<=-Di)&&e.logWithError(`BigNumberish number overflow: ${r}`),new pn(String(r))):typeof r=="bigint"?new pn(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new pn(0))}var Wn=ue("module/fraction"),Pr=dn(Fn),fn=dn(ha),Aa={[0]:fn.ROUND_DOWN,[1]:fn.ROUND_HALF_UP,[2]:fn.ROUND_UP},Pa={[0]:Fn.roundDown,[1]:Fn.roundHalfUp,[2]:Fn.roundUp},oe=class{constructor(e,t=new ka(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)||Wn.logWithError(`${e} is not an integer.`),e<=0&&Wn.logWithError(`${e} is not positive.`),fn.set({precision:e+1,rounding:Aa[n]});let i=new fn(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)||Wn.logWithError(`${e} is not an integer.`),e<0&&Wn.logWithError(`${e} is negative.`),Pr.DP=e,Pr.RM=Pa[n]||1,new Pr(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var xa=ue("Raydium_amount"),qi=dn(Ta);function Sa(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")):xa.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 Dn(0),s=Tr.pow(new Dn(t.decimals));if(i)a=ne(n);else{let u=new Dn(0),c=new Dn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Sa(n.toString(),t.decimals);u=ne(l),c=ne(m)}u=u.mul(s),a=u.add(c)}super(a,s);this.logger=ue(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return qi.DP=this.token.decimals,new qi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Ba}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Gi}from"@solana/spl-token";var xr={chainId:101,address:Ba.default.toBase58(),programId:Gi.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:Gi.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 Kr}from"@solana/web3.js";import{PublicKey as fe,SystemProgram as Ui,SYSVAR_RENT_PUBKEY as Ia}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ka}from"@solana/spl-token";function I({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var La=[I({pubkey:Ka,isWritable:!1}),I({pubkey:Ui.programId,isWritable:!1}),I({pubkey:Ia,isWritable:!1})];function Sr({publicKey:r,transformSol:e}){let t=Br(r.toString());if(t instanceof fe)return e&&t.equals(Jt)?Yt:t;if(e&&t.toString()===Jt.toBase58())return Yt;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 Br(r){try{return new fe(r)}catch{return r}}var qn=new fe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ir=new fe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new fe("SysvarRent111111111111111111111111111111111"),ml=new fe("SysvarC1ock11111111111111111111111111111111"),Mt=new fe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Na=new fe("Sysvar1nstructions1111111111111111111111111"),dl=Ui.programId,pl=new fe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),fl=new fe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),bl=new fe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),yl=new fe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),gl=new fe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),wl=new fe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),kl=new fe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),hl=new fe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Al=new fe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Pl=new fe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Tl=new fe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Yt=new fe("So11111111111111111111111111111111111111112"),Jt=fe.default;function $t(r){return Sr({publicKey:r,transformSol:!0})}var Lr=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:a=!1}){if(e===Jt.toBase58()||e instanceof Kr&&Jt.equals(e)){this.decimals=ft.decimals,this.symbol=ft.symbol,this.name=ft.name,this.mint=new Kr(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?Kr.default:Sr({publicKey:e}),this.isToken2022=a}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ve=Lr;ve.WSOL=new Lr(te(G({},ft),{mint:ft.address}));var Nr=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Gn=Nr;Gn.SOL=new Nr(xr);import Ca from"bn.js";var Xi=new oe(new Ca(100)),je=class extends oe{toSignificant(e=5,t,n){return this.mul(Xi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Xi).toFixed(e,t,n)}};var Ra=ue("Raydium_price"),Ze=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(Cr(n.decimals),Cr(i.decimals))}get raw(){return new oe(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ze({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Ra.logWithError("mul token not equals");let n=super.mul(t);return new Ze({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 Ma}from"@solana/web3.js";import va from"bn.js";function Qi(r){return typeof r=="object"&&r!==null&&![ve,ke,Ma,oe,va,Ze,je].some(e=>typeof e=="object"&&r instanceof e)}function vt(r){return typeof r=="string"?Br(r):Array.isArray(r)?r.map(e=>vt(e)):Qi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,vt(t)])):r}var Bt=new bt(0),zi=new bt(1),wm=new bt(2),km=new bt(3),hm=new bt(5),Tr=new bt(10),Am=new bt(100),Pm=new bt(1e3),Tm=new bt(1e4);function Cr(r){return Tr.pow(ne(r))}function Un(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 Rr(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 Da}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qa}from"@solana/spl-token";import{ComputeBudgetProgram as Hi,Keypair as Zi,PublicKey as Ea,Transaction as Yi,TransactionMessage as _a,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 Va}from"@solana/spl-token";var ji=ue("Raydium_txUtil"),$i=1644;function Xn(r){let e=[],t=[];return r.microLamports&&(e.push(Hi.setComputeUnitPrice({microLamports:r.microLamports})),t.push(H.SetComputeUnitPrice)),r.units&&(e.push(Hi.setComputeUnitLimit({units:r.units})),t.push(H.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function en(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 Qn(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 Oa(r,e){r.length<1&&ji.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&ji.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<$i}catch{return!1}}function ye(r,e){let[t,n]=Ea.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function bn({instructions:r,payer:e,signers:t}){return Oa(r,[e,...t])}function yn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Zi.generate().publicKey.toString()}){let o=new _a({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ji(o).serialize()).toString("base64").length<$i}catch{return!1}}var Wa=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Fa=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof Ji&&(e=Wa(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Et(r){let e=[];return r.forEach(t=>{t instanceof Yi&&(t.recentBlockhash||(t.recentBlockhash=Va.toBase58()),t.feePayer||(t.feePayer=Zi.generate().publicKey)),e.push(Fa(t))}),console.log("simulate tx string:",e),e}function me(r,e,t){return ye([r.toBuffer(),(t!=null?t:qa).toBuffer(),e.toBuffer()],new Da("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as Y}from"@solana/web3.js";var eo=new Y("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),to=new Y("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),no=new Y("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),ro=new Y("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Um=new Y("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),io=new Y("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Xm=new Y("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),oo=new Y("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Qm=new Y("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),zm=new Y("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Hm=new Y("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),jm=new Y("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Zm=new Y("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Ym=new Y("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),so=new Y("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Jm=new Y("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),$m=new Y("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ed=new Y("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),td=new Y("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),nd=new Y("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),rd=new Y("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),id=new Y("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ga=new Y("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Ua=new Y("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Xa=new Y("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),od=new Y("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Qa=new Y("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),sd=new Y("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),za=new Y("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix"),ad=new Y("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),ud=new Y("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Ha=new Y("7soRSLviCKHCKzCbRuVpZDif76NWLVqFtbjt8LpyxWSq"),ja=new Y("DG6kZFFCqxdtWXw53Zc28hLs3MTr28Efkm2FrsNERNSQ");var cd={SERUM_MARKET:Y.default,OPENBOOK_MARKET:new Y("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:Y.default,FarmV3:new Y("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new Y("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new Y("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new Y("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new Y("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new Y("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new Y("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new Y("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new Y("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Ga,CREATE_CPMM_POOL_AUTH:Ua,CREATE_CPMM_POOL_FEE_ACC:Xa,FEE_DESTINATION_ID:new Y("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:Qa,LCOK_CPMM_AUTH:za,LAUNCHPAD_PROGRAM:Ha,LAUNCHPAD_AUTH:ja};import nt from"bn.js";var gn=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===gn){let u=new nt(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:s}}else{let u=wn(r.mul(new nt(gn)),new nt(gn-o.transferFeeBasisPoints)),c=new nt(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=wn(l.mul(new nt(o.transferFeeBasisPoints)),new nt(gn)),d=m.gt(a)?a:m;return{amount:l,fee:d,expirationTime:s}}else{let u=wn(r.mul(new nt(o.transferFeeBasisPoints)),new nt(gn)),c=u.gt(a)?a:u;return{amount:r,fee:c,expirationTime:s}}}function It(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function wn(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 ao,AddressLookupTableAccount as zn}from"@solana/web3.js";async function Mr({connection:r,address:e}){let t=await yt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new ao(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,Hn[a.toString()]=s}return n}var Hn={AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU:new zn({key:new ao("AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU"),state:zn.deserialize(Buffer.from("AQAAAP//////////I1rcEwAAAAAvAQYwun9CU6c5Ikm2pAj+D9IEnCOR45nK+SFTGSdpd6J6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCpBt324e51j94YQl285GzN2rYa/E2DuQ0n/r35KNihi/wFSlNQ+F3IgtYUpVZyeIopbd8eq6vQpgZ4iEky9O72oAVKU1qZKSEGTSTocWDaOHx8NbXdvJK7geQfqEBBBUSNBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvBkX2T9y7AHdNGviJAqQNtlDUDCnauQRWybsLji6nPM8Qkw5asQRvCdB3MbX6IEBwytOrpM32l4jQygKG9TKgR0vZScQ2AsM/IHeQ7RajUkyhuZdc8SGiqQz/7H34torNR/Wir3sl0ruUrVxJWEZfUg+QLNAxxODdBi53/OP7Ioil1cqeBM9dtZC3FLov4yyxWRM/wcGStyJX/QfTnLBAHqkqWotPKVlShCVQqpP9W5W1rOao65IMk5QuQ2kMIOxzDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu/YsA/yfEEFGcr8Z57VKDw8uQzpiru7g4lvjnfapW62W030syevD8k07SGoxUHiuT/ai7gAHWWhDsVmg/C63ajgpkH7Sn3GdutArDTfyqOkdqv4/IPC/EFFy7mGkfDd2C57N5a/4jC+BbmJy7wQaSEZr0CQU88lPtUxIVvzGjC95b8Ooss2TqmkrayGKofkPMGQn7Ux+9lfwBSNfxwH8NgbpqC/7LNlV4I7nCvsXf3p+ohQk9NrAJb2KAFpUqEIJ9ZBV7BYDzHF/ORKYlgtvPnXjudZQ6CEo5OzUDaNIomTCCsvhD16TxJjsbgne1kGnQPCFSoaxUbq2V1bPMFQ3VYP6wDZ9bKStCFKx9A3tNbwZFC5ZGAN83MFK7XoTy+OmmcFEr6rLOjfSuTfPvHJkSVxW6Qllwkl67XcBi5v00u2gQsbu+38sp+rd5pA/LvyWj4P94ZGZwc1tE2P88xekCLcAwZGb+UhFzL/7K26csOb57yM5bvF9xJrLEObOkAAAAAn+HWRkdcPKyFFMnVwEoD7vnD0jCKFIU1sImubYCxNTSVzsKpaQX+fzNxrLAI3L14JQnJx/D6Uk2LADIHGqnGELzjEbkBDAlaM77NkXMPfqXNLSveCkWI7UEgNs31WEWB6XHSYI/v5DklHOb4QTtDOR804PVbi3fjloZeLR2F8d4FuZmMMO7ck3Fnkn2zEMG5gOmqsygb6PjTitArVl52NhcSznTxVnguaIJxiZkAnurDmn3MWR0PC2GLghp2KJqHCc6QQ85odeIjFHKOlRlJyeSXVJmL8vb1UgOzsbJPVP8p6zM4M3C1Sd7uWIHP33G42AP2Zg8ucn/n6meQjjD266JgCWdxZD6PXs9CsnIeL7SSG0/6lGb9xfP0ZcWkCXB/3hjxHYVXjra/GPOeXGk0fLLKjCbk+mgs2w6d2oCwimBipTzuoZ30GiI8ij8VRzD5CzMWtu2m21eDBIfjGAEo4pQeNNonKcqzV/cleX8ySZLOHsz8PtBCrLqF+VkLm9hOzIT+6i/nIf6keR4GWKMOD4AvqfpjHoD4DuhBpz8P28+DxkGrDXXr/nr20x291VPvcTU/b+b+o2kC9G0kcXeTlLjU6a2TQXWlZ4gBUdBl1jgT7mObSTpLblNiXZsLkbmVXZwvFKXua5cUKlWed/w30skmEUraTuQqtqr5fHZPW9n57EmeTif6LjHL2YJFZkQU+TrJmFzqzmF4/b8OwrPQAprl8mX3q4LUIdAS/a+11B6DWD1Xk2++Sn94dLC4xjkO4Wtlw8c4XuzciVbepHOmnoWzVu/0y3KCrLCSfQxQ3br8DJCoVzhgtPsS2nZZjsBGIZgnU0QpMv+2MnRsnKwdp1VsrCX84j/qvaZn4WhKunippgTbN2EUs0tPTP55Qfgj+nKmjtWW5IYs72FrEwJKYoNfsmqaF4o5pf4v9zgPwVwY/5I4XJKUL2L25m9kAQcW/K+H1RTFEUoj8Z4ajpOmAB/dG0COmCphVMW2CCMvnxhcGiSgPnpDuWu6qiJ7NG7ye5kvHgefgqPLeicspNJ5EpL3XiRNLM2tmJLI1awAwOyd6iHv0dCkMYRKaa6rcaZeYwmKCkckm0kM2JNmnmmAaBQQ7mwmIM0IMxX4f5W6j9PqZWcJxF7r17T/lQBAmcjoupRiJifbnXCNUv9GhpRF19WcBdeKbivRJVlGop6I2RS6lGImJ9udcI1S/0aGlEXX1ZwF14puK9ElWUainojZFYVHLHD6dIP2ESjqBzg3ol1/wB7+/ylGwd9LS7wSZ2A630CJSVKwH47K9P4bB8PEQP8BwjMFa7xQHOqZFP1XqaQ==","base64"))})};import{PublicKey as tn,sendAndConfirmTransaction as vr,SystemProgram as Za,Transaction as kn,TransactionMessage as hn,VersionedTransaction as An}from"@solana/web3.js";import Ya from"axios";var jn=2e3,Zn=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 Ya.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}=Xn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Za.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new tn(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!==tn.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 kn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var l;let{recentBlockHash:o,skipPreflight:a=!0,sendAndConfirm:s,notSendToRpc:u}=i||{},c=o!=null?o:await en(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),Et([t]),(l=this.owner)!=null&&l.isKeyPair)return{txId:s?await vr(this.connection,t,this.signers.find(d=>d.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 m=await this.signAllTransactions([t]);if(this.signers.length)for(let d of m)try{d.sign(...this.signers)}catch{}return{txId:u?"":await this.connection.sendRawTransaction(m[0].serialize(),{skipPreflight:a}),signedTx:m[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var c;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(l=>l.transaction.instructions.length>0),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:f,skipPreflight:b=!0}=l||{},w=f!=null?f:await en(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 vr(this.connection,P,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});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:b})))),signedTxs:a}}if(this.signAllTransactions){let h=a.map((P,T)=>(P.recentBlockhash=w,s[T].length&&P.sign(...s[T]),P));Et(h);let A=await this.signAllTransactions(h);if(m){let P=0,T=[],k=async()=>{if(!A[P])return;let S=await this.connection.sendRawTransaction(A[P].serialize(),{skipPreflight:b});T.push({txId:S,status:"sent",signedTx:A[P]}),d==null||d([...T]),P++;let B=!1,L=null,x=null,M=O=>{L!==null&&clearInterval(L),x!==null&&this.connection.removeSignatureListener(x);let v=T.findIndex(U=>U.txId===S);if(v>-1){if(T[v].status==="error"||T[v].status==="success")return;T[v].status=O.err?"error":"success"}d==null||d([...T]),O.err||k()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var O;if(B){clearInterval(L);return}try{let v=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});v&&(B=!0,clearInterval(L),M({err:((O=v.meta)==null?void 0:O.err)||null}),console.log("tx status from getTransaction:",S))}catch(v){B=!0,clearInterval(L),console.error("getTransaction timeout:",v,S)}},jn)),x=this.connection.onSignature(S,O=>{if(B){this.connection.removeSignatureListener(x);return}B=!0,M(O)},"confirmed"),this.connection.getSignatureStatus(S)};return await k(),{txIds:T.map(S=>S.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:b});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 b;let f=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:o}=f,a=He(f,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),s=G(G({},this.cluster==="devnet"?{}:Hn),t),u=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let w of u)s[w]===void 0&&c.push(new tn(w));let l=await Mr({connection:this.connection,address:c});for(let[w,g]of Object.entries(l))s[w]=g;let m=i?tn.default.toBase58():o!=null?o:await en(this.connection,this.blockhashCommitment),d=new hn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((b=this.owner)==null?void 0:b.signer)&&!this.signers.some(w=>w.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new An(d);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async w=>{var P;let{skipPreflight:g=!0,sendAndConfirm:h,notSendToRpc:A}=w||{};if(Et([p]),(P=this.owner)!=null&&P.isKeyPair){let T=await this.connection.sendTransaction(p,{skipPreflight:g});return h&&await Qn(this.connection,T),{txId:T,signedTx:p}}if(this.signAllTransactions){let T=await this.signAllTransactions([p]);if(this.signers.length)for(let k of T)try{k.sign(this.signers)}catch{}return{txId:A?"":await this.connection.sendTransaction(T[0],{skipPreflight:g}),signedTx:T[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 b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:f=!0}=l||{};if(p&&a.forEach(w=>w.message.recentBlockhash=p),Et(a),(b=this.owner)!=null&&b.isKeyPair){if(m){let w=[];for(let g of a){let h=await this.connection.sendTransaction(g,{skipPreflight:f});await Qn(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:f}))),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:f});h.push({txId:P,status:"sent",signedTx:w[g]}),d==null||d([...h]),g++;let T=!1,k=null,S=null,B=L=>{k!==null&&clearInterval(k),S!==null&&this.connection.removeSignatureListener(S);let x=h.findIndex(M=>M.txId===P);if(x>-1){if(h[x].status==="error"||h[x].status==="success")return;h[x].status=L.err?"error":"success"}d==null||d([...h]),L.err||A()};this.loopMultiTxStatus&&(k=setInterval(async()=>{var L;if(T){clearInterval(k);return}try{let x=await this.connection.getTransaction(P,{commitment:"confirmed",maxSupportedTransactionVersion:0});x&&(T=!0,clearInterval(k),B({err:((L=x.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",P))}catch(x){T=!0,clearInterval(k),console.error("getTransaction timeout:",x,P)}},jn)),S=this.connection.onSignature(P,L=>{if(T){this.connection.removeSignatureListener(S);return}T=!0,B(L)},"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:f});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?Xn(n):{instructions:[],instructionTypes:[]},a=this.signers.reduce((p,f)=>te(G({},p),{[f.publicKey.toBase58()]:f}),{}),s=[],u=[],c=[],l=0;if(this.allInstructions.forEach(p=>{let f=[...c,p],b=n?[...o.instructions,...f]:f,g=[...new Set(f.map(h=>h.keys.filter(A=>A.isSigner).map(A=>A.pubkey.toString())).flat()).values()].map(h=>new tn(h));if(p!==t[l]&&c.length<12&&(bn({instructions:b,payer:this.feePayer,signers:g})||bn({instructions:f,payer:this.feePayer,signers:g})))c.push(p);else{if(c.length===0)throw Error("item ins too big");l+=p===t[l]?1:0,bn({instructions:n?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:g})?s.push(new kn().add(...o.instructions,...c)):s.push(new kn().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 f=[...new Set(c.map(b=>b.keys.filter(w=>w.isSigner).map(w=>w.pubkey.toString())).flat()).values()].map(b=>a[b]).filter(b=>b!==void 0);bn({instructions:n?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:f.map(b=>b.publicKey)})?s.push(new kn().add(...o.instructions,...c)):s.push(new kn().add(...c)),u.push(f)}return s.forEach(p=>p.feePayer=this.feePayer),(d=this.owner)!=null&&d.signer&&u.forEach(p=>{p.some(f=>f.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:s,signers:u,instructionTypes:this.instructionTypes,execute:async p=>{var P;let{sequentially:f,onTxUpdate:b,skipTxCount:w=0,recentBlockHash:g,skipPreflight:h=!0}=p||{},A=g!=null?g:await en(this.connection,this.blockhashCommitment);if(s.forEach(async(T,k)=>{T.recentBlockhash=A,u[k].length&&T.sign(...u[k])}),Et(s),(P=this.owner)!=null&&P.isKeyPair){if(f){let T=0,k=[];for(let S of s){if(++T,T<=w){k.push("tx skipped");continue}let B=await vr(this.connection,S,this.signers.find(L=>L.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:h});k.push(B)}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(f){let S=0,B=[],L=async()=>{if(!k[S])return;S<w&&(B.push({txId:"",status:"success",signedTx:k[S]}),b==null||b([...B]),S++,L());let x=await this.connection.sendRawTransaction(k[S].serialize(),{skipPreflight:h});B.push({txId:x,status:"sent",signedTx:k[S]}),b==null||b([...B]),S++;let M=!1,O=null,v=null,U=j=>{O!==null&&clearInterval(O),v!==null&&this.connection.removeSignatureListener(v);let D=B.findIndex(ae=>ae.txId===x);if(D>-1){if(B[D].status==="error"||B[D].status==="success")return;B[D].status=j.err?"error":"success"}b==null||b([...B]),j.err||L()};this.loopMultiTxStatus&&(O=setInterval(async()=>{var j;if(M){clearInterval(O);return}try{let D=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});D&&(M=!0,clearInterval(O),U({err:((j=D.meta)==null?void 0:j.err)||null}),console.log("tx status from getTransaction:",x))}catch(D){M=!0,clearInterval(O),console.error("getTransaction timeout:",D,x)}},jn)),v=this.connection.onSignature(x,j=>{if(M){this.connection.removeSignatureListener(v);return}M=!0,U(j)},"confirmed"),this.connection.getSignatureStatus(x)};return await L(),{txIds:B.map(x=>x.txId),signedTxs:k}}else{let S=[];for(let B=0;B<k.length;B+=1){let L=await this.connection.sendRawTransaction(k[B].serialize(),{skipPreflight:h});S.push(L)}return{txIds:S,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var 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"?{}:Hn),i),u=Array.from(new Set([...this.lookupTableAddress,...o])),c=[];for(let P of u)s[P]===void 0&&c.push(new tn(P));let l=await Mr({connection:this.connection,address:c});for(let[P,T]of Object.entries(l))s[P]=T;let m=t?Xn(t):{instructions:[],instructionTypes:[]},d=await en(this.connection,this.blockhashCommitment),p=this.signers.reduce((P,T)=>te(G({},P),{[T.publicKey.toBase58()]:T}),{}),f=[],b=[],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&&(yn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})||yn({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 S={};for(let B of[...new Set(u)])s[B]!==void 0&&(S[B]=s[B]);if(t&&yn({instructions:[...m.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let B=new hn({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...w]}).compileToV0Message(Object.values(s));f.push(new An(B))}else{let B=new hn({payerKey:this.feePayer,recentBlockhash:d,instructions:[...w]}).compileToV0Message(Object.values(s));f.push(new An(B))}b.push(Array.from(new Set(w.map(B=>B.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat())).map(B=>p[B]).filter(B=>B!==void 0)),w=[P]}}),w.length>0){let T=[...new Set(w.map(k=>k.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat()).values()].map(k=>p[k]).filter(k=>k!==void 0);if(t&&yn({instructions:[...m.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let k=new hn({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...w]}).compileToV0Message(Object.values(s));f.push(new An(k))}else{let k=new hn({payerKey:this.feePayer,recentBlockhash:d,instructions:[...w]}).compileToV0Message(Object.values(s));f.push(new An(k))}b.push(T)}return(A=this.owner)!=null&&A.signer&&b.forEach(P=>{P.some(T=>T.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),f.forEach((P,T)=>{P.sign(b[T])}),{builder:this,transactions:f,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async P=>{var x;let{sequentially:T,onTxUpdate:k,skipTxCount:S=0,recentBlockHash:B,skipPreflight:L=!0}=P||{};if(f.map(async(M,O)=>{b[O].length&&M.sign(b[O]),B&&(M.message.recentBlockhash=B)}),Et(f),(x=this.owner)!=null&&x.isKeyPair){if(T){let M=0,O=[];for(let v of f){if(++M,M<=S){console.log("skip tx: ",M),O.push("tx skipped");continue}let U=await this.connection.sendTransaction(v,{skipPreflight:L});await Qn(this.connection,U),O.push(U)}return{txIds:O,signedTxs:f}}return{txIds:await Promise.all(f.map(async M=>await this.connection.sendTransaction(M,{skipPreflight:L}))),signedTxs:f}}if(this.signAllTransactions){let M=await this.signAllTransactions(f.slice(S,f.length)),O=[...f.slice(0,S),...M];if(T){let v=0,U=[],j=async()=>{if(!O[v])return;if(v<S){U.push({txId:"",status:"success",signedTx:O[v]}),k==null||k([...U]),v++,j();return}let D=await this.connection.sendTransaction(O[v],{skipPreflight:L});U.push({txId:D,status:"sent",signedTx:O[v]}),k==null||k([...U]),v++;let ae=!1,Te=null,Je=null,mt=Oe=>{Te!==null&&clearInterval(Te),Je!==null&&this.connection.removeSignatureListener(Je);let We=U.findIndex(it=>it.txId===D);if(We>-1){if(U[We].status==="error"||U[We].status==="success")return;U[We].status=Oe.err?"error":"success"}k==null||k([...U]),Oe.err||j()};this.loopMultiTxStatus&&(Te=setInterval(async()=>{var Oe;if(ae){clearInterval(Te);return}try{let We=await this.connection.getTransaction(D,{commitment:"confirmed",maxSupportedTransactionVersion:0});We&&(ae=!0,clearInterval(Te),mt({err:((Oe=We.meta)==null?void 0:Oe.err)||null}),console.log("tx status from getTransaction:",D))}catch(We){ae=!0,clearInterval(Te),console.error("getTransaction timeout:",We,D)}},jn)),Je=this.connection.onSignature(D,Oe=>{if(ae){this.connection.removeSignatureListener(Je);return}ae=!0,mt(Oe)},"confirmed"),this.connection.getSignatureStatus(D)};return j(),{txIds:[],signedTxs:O}}else{let v=[];for(let U=0;U<O.length;U+=1){let j=await this.connection.sendTransaction(O[U],{skipPreflight:L});v.push(j)}return{txIds:v,signedTxs:O}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};import Ja from"bn.js";var Nd=new Ja(1e6);import{MINT_SIZE as ip,TOKEN_PROGRAM_ID as op,getTransferFeeConfig as sp,unpackMint as ap}from"@solana/spl-token";var Er=ue("Raydium_accountInfo_util");async function yt(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}=G({batchRequest:!1},t),a=Rr(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=Rr(u,10);s=(await(await Promise.all(c.map(async m=>await r._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&Er.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:f,lamports:b,owner:w,rentEpoch:g}=d;return p.length!==2&&p[1]!=="base64"&&Er.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:f,lamports:b,owner:new $a(w),rentEpoch:g}}return null})))}else try{s=await Promise.all(a.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&Er.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return s.flat()}async function _t(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 lu}from"@solana/web3.js";import po,{isBN as fo}from"bn.js";import{bits as eu,BitStructure as lp,blob as tu,Blob as mp,cstr as dp,f32 as pp,f32be as fp,f64 as bp,f64be as yp,greedy as gp,Layout as nu,ns64 as wp,ns64be as kp,nu64 as hp,nu64be as Ap,offset as Pp,s16 as Tp,s16be as xp,s24 as Sp,s24be as Bp,s32 as ru,s32be as Ip,s40 as Kp,s40be as Lp,s48 as Np,s48be as Cp,s8 as Rp,seq as iu,struct as Mp,Structure as ou,u16 as su,u16be as vp,u24 as Ep,u24be as _p,u32 as au,u32be as Vp,u40 as Op,u40be as Wp,u48 as Fp,u48be as Dp,u8 as uu,UInt as cu,union as qp,Union as Gp,unionLayoutDiscriminator as Up,utf8 as Xp}from"@solana/buffer-layout";var Yn=nu,co=ou;var _r=cu;var lo=uu,Vt=su;var Vr=au;var de=ru;var mo=iu;var xe=tu;var Or=eu;var Ot=class extends Yn{constructor(t,n,i){super(t,i);this.blob=xe(t),this.signed=n}decode(t,n=0){let i=new po(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 po(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Jn=class extends Yn{constructor(t){super(8,t);this._lower=Or(Vr(),!1),this._upper=Or(Vr(),!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 W(r){return new _r(1,r)}function Ee(r){return new _r(4,r)}function y(r){return new Ot(8,!1,r)}function X(r){return new Ot(16,!1,r)}function bo(r){return new Ot(1,!0,r)}function nn(r){return new Ot(8,!0,r)}function yo(r){return new Ot(16,!0,r)}var $n=class extends Yn{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 N(r){return new $n(xe(32),e=>new lu(e),e=>e.toBuffer(),r)}function Be(r){return new $n(lo(),mu,du,r)}function mu(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function du(r){return r?1:0}var Wr=class extends co{decode(e,t){return super.decode(e,t)}};function E(r,e,t){return new Wr(r,e,t)}function Q(r,e,t){let n,i=typeof e=="number"?e:fo(e)?e.toNumber():new Proxy(e,{get(o,a){if(!n){let s=Reflect.get(o,"count");n=fo(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 mo(r,i,t)}import{PublicKey as go}from"@solana/web3.js";var cf=ue("Raydium_farm_config"),lf=new go("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),mf=new go("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var wo={3:Dr,5:ko,6:ho};var er={"Standard SPL":0,"Option tokens":1},Fr={[eo.toString()]:3,[to.toString()]:4,[no.toString()]:5,[ro.toString()]:6};var qr=E([W("instruction")]),yu=E([W("instruction")]),gu=E([y("rewardState"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardLastUpdateTime"),y("totalReward"),y("totalRewardEmissioned"),y("rewardClaimed"),y("rewardPerSecond"),X("accRewardPerShare"),N("rewardVault"),N("rewardMint"),N("rewardSender"),y("rewardType"),Q(y(),15,"padding")]),wu=E([y("state"),y("nonce"),N("lpVault"),N("rewardVault"),N(),N(),y(),y(),y("totalReward"),X("perShareReward"),y("lastSlot"),y("perSlotReward")]),ku=E([y("state"),y("nonce"),N("lpVault"),N("rewardVaultA"),y("totalRewardA"),X("perShareRewardA"),y("perSlotRewardA"),W("option"),N("rewardVaultB"),xe(7),y("totalRewardB"),X("perShareRewardB"),y("perSlotRewardB"),y("lastSlot"),N()]),hu=E([y(),y("state"),y("nonce"),y("validRewardTokenNum"),X("rewardMultiplier"),y("rewardPeriodMax"),y("rewardPeriodMin"),y("rewardPeriodExtend"),N("lpMint"),N("lpVault"),Q(gu,5,"rewardInfos"),N("creator"),N(),Q(y(),32,"padding")]),pu=new Proxy(wu,{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)}}),fu=new Proxy(ku,{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)}}),bu=new Proxy(hu,{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(er).find(s=>String(s[1])===o.rewardType.toString()))!=null?a:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Au=E([y("isSet"),y("rewardPerSecond"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardType")]),Pu=E([W("instruction"),y("nonce"),Q(Au,5,"rewardTimeInfo")]),Tu=E([W("instruction"),y("rewardReopenTime"),y("rewardEndTime"),y("rewardPerSecond")]),xu=E([W("instruction"),y("isSet"),y("rewardPerSecond"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardType")]),wf=E([y("state"),N("id"),N("owner"),y("deposited"),Q(y(),1,"rewardDebts")]),Dr=E([y("state"),N("id"),N("owner"),y("deposited"),Q(X(),1,"rewardDebts"),y(""),y("voteLockedBalance"),Q(y(),15)]),kf=E([y("state"),N("id"),N("owner"),y("deposited"),Q(y(),2,"rewardDebts")]),ko=E([y("state"),N("id"),N("owner"),y("deposited"),Q(X(),2,"rewardDebts"),Q(y(),17)]),ho=E([y(),y("state"),N("id"),N("owner"),y("deposited"),Q(X(),5,"rewardDebts"),Q(y(),16)]),Wt=E([W("instruction"),y("amount")]),Su=E([N("mint"),N("grantAuthority"),y("baselineVoteWeightScaledFactor"),y("maxExtraLockupVoteWeightScaledFactor"),y("lockupSaturationSecs"),bo("digitShift"),Q(W(),7,"reserved1"),Q(y(),7,"reserved2")]),Bu=E([xe(8),N("governanceProgramId"),N("realm"),N("realmGoverningTokenMint"),N("realmAuthority"),Q(W(),32,"reserved1"),Q(Su,4,"votingMints"),nn("timeOffset"),W("bump"),Q(W(),7,"reserved2"),Q(y(),11,"reserved3")]),Iu=E([nn("startTime"),nn("endTime"),W("kind"),Q(W(),15,"reserved")]),Ku=E([Q(Iu,1,"lockup"),y("amountDeposited_native"),y("amountInitiallyLockedNative"),Be("isUsed"),Be("allowClawback"),W("votingMintConfigIdx"),Q(W(),29,"reserved")]),Lu=E([xe(8),N("voterAuthority"),N("registrar"),Q(Ku,32,"deposits"),W("voterBump"),W("voterWweightRecordBump"),Q(W(),94,"reserved")]);import If from"bn.js";var tr=E([N("mint"),N("owner"),y("amount"),Ee("delegateOption"),N("delegate"),W("state"),Ee("isNativeOption"),y("isNative"),y("delegatedAmount"),Ee("closeAuthorityOption"),N("closeAuthority")]);var Nu=ue("Raydium.farm.util");function rn({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 Ao(r){let e=wo[r];return e||Nu.logWithError("invalid version",r),e}import{PublicKey as _e,SystemProgram as Cu,SYSVAR_CLOCK_PUBKEY as Po,SYSVAR_RENT_PUBKEY as Ru,TransactionInstruction as nr}from"@solana/web3.js";import $f from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as tb,createAssociatedTokenAccountInstruction as nb,TOKEN_PROGRAM_ID as Gr}from"@solana/spl-token";var Mu=ue("Raydium_farm_instruction"),pb={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 To(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,a={3:9,5:10}[e];a||Mu.logWithError(`invalid farm pool version: ${e}`);let s=Buffer.alloc(qr.span);qr.encode({instruction:a},s);let u=[I({pubkey:t}),I({pubkey:n}),I({pubkey:o,isWritable:!1}),I({pubkey:Cu.programId,isWritable:!1}),I({pubkey:Ru,isWritable:!1})];return{instruction:new nr({programId:i,keys:u,data:s}),instructionType:H.FarmV3CreateLedger}}function xo(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=rn({programId:s,poolId:u,owner:o,version:6}),l=Buffer.alloc(Wt.span);Wt.encode({instruction:2,amount:ne(a)},l);let m=[I({pubkey:Gr,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 nr({programId:s,keys:m,data:l})}function So(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=rn({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Wt.span);Wt.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:Po,isWritable:!1}),I({pubkey:Gr,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 nr({programId:u,keys:d,data:m})}function Bo(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=rn({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Wt.span);Wt.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:Po,isWritable:!1}),I({pubkey:Gr,isWritable:!1})];if(s)for(let p of s)d.push(I({pubkey:p}));return new nr({programId:u,keys:d,data:m})}import{Keypair as sr,PublicKey as R,SystemProgram as kt,TransactionInstruction as Ce}from"@solana/web3.js";import Jr from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Kn,TOKEN_2022_PROGRAM_ID as ge,TOKEN_PROGRAM_ID as ce}from"@solana/spl-token";import Gu from"bn.js";import Ye from"bn.js";var be=new Ye(0),at=new Ye(1),gt=new Ye(-1),Ge=new Ye(1).shln(64),rr=new Ye(1).shln(128),Ur=Ge.sub(at),Pn=64,Io=rr.subn(1),Ve=-443636,Fe=-Ve,Ft=new Ye("4295048016"),Dt=new Ye("79226673521066979257578248091"),Tb=new Ye("4295048017"),xb=new Ye("79226673521066979257578248090"),Ko=16,Lo="59543866431248",No="184467440737095516",Co="15793534762490258745",ir=new Ye(10).pow(new Ye(6));var Sb=new Ye("18446744073700000000");import ee from"bn.js";function or(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Xr(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Qr(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Tn(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Ro(r,e){return Tn(r,e)?null:Xr(r,e)}function Mo(r,e){return Tn(r,e)?null:Qr(r,e)}var Cb=Buffer.from("amm_config","utf8"),vu=Buffer.from("pool","utf8"),Eu=Buffer.from("pool_vault","utf8"),_u=Buffer.from("pool_reward_vault","utf8"),vo=Buffer.from("position","utf8"),Vu=Buffer.from("tick_array","utf8"),Ou=Buffer.from("operation","utf8"),Wu=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Fu=Buffer.from("observation","utf8");function Eo(r,e,t,n){return ye([vu,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function zr(r,e,t){return ye([Eu,e.toBuffer(),t.toBuffer()],r)}function _o(r,e,t){return ye([_u,e.toBuffer(),t.toBuffer()],r)}function se(r,e,t){return ye([Vu,e.toBuffer(),or(t)],r)}function Kt(r,e,t,n){return ye([vo,e.toBuffer(),or(t),or(n)],r)}function Ue(r,e){return ye([vo,e.toBuffer()],r)}function xn(r){return ye([Buffer.from("metadata","utf8"),Mt.toBuffer(),r.toBuffer()],Mt)}function Hr(r){return ye([Ou],r)}function Ne(r,e){return ye([Wu,e.toBuffer()],r)}function Vo(r,e){return ye([Fu,e.toBuffer()],r)}var Oo=Buffer.from("locked_position","utf8");function jr(r,e){return ye([Oo,e.toBuffer()],r)}function Wo(r,e){return ye([Oo,e.toBuffer()],r)}var Rb=Buffer.from("support_mint","utf8");import{PublicKey as Xe}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Fo}from"@solana/spl-token";import pe from"bn.js";import ut from"bn.js";var Sn=class{static getfeeGrowthInside(e,t,n){let i=new ut(0),o=new ut(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 ut(0),s=new ut(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=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64A,i),a),c=$.wrappingSubU128($.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=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ge),u=t.tokenFeesOwedA.add(s),c=$.mulDivFloor($.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=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ge),u=t.tokenFeesOwedA.add(s),c=$.mulDivFloor($.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=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.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=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.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 ut(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 ut(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[a]:u=i[a].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[a])),o.push($.wrappingSubU128($.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 ut(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 ut(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[a]:u=i[a].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[a])),o.push($.wrappingSubU128($.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=J.priceToSqrtPriceX64(new C(e.price),e.mintA.decimals,e.mintB.decimals),u=J.getSqrtPriceX64FromTick(t.tickLower),c=J.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)],[f,b]=[he(new ut(new C(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,!0),he(new ut(new C(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:f,amountSlippageB:b,expirationTime:It(d.expirationTime,p.expirationTime)}}};var Du=15,re=class{static async getTickArrays(e,t,n,i,o,a,s){let u=[],c=F.getTickArrayStartIndexByTick(i,o),l=F.getInitializedTickArrayInRange(a,s,o,c,Math.floor(Du/2));for(let p=0;p<l.length;p++){let{publicKey:f}=se(t,n,l[p]);u.push(f)}let m=(await yt(e,u)).map(p=>p!==null?Bn.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let f=m[p];f!==null&&(d[f.startTickIndex]=te(G({},f),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,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=F.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?F.searchLowBitFromStart(i,o,a-1,1,t):F.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=Ie-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<Ie;){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=F.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<Ie;){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(F.checkIsOutOfBoundary(e)){if(e>Fe)return!1;let n=F.getTickArrayStartIndexByTick(Ve,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Ie*e}};var Zr=14,wt=class{static maxTickInTickarrayBitmap(e){return e*Ie*qt}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*Ie,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=Ro(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=Mo(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)}}}},In=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(Fe<=t)throw Error(`extensionTickBoundary check error: ${Fe}, ${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:F.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=F.mergeTickArrayBitmap(e).shln(qt-1-s),c=Tn(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:o}}else{let u=F.mergeTickArrayBitmap(e).shrn(s),c=Tn(512,u)?null:Qr(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=qt-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:f,sqrtPriceX64:b,feeAmount:w}=Gt.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(...f),{allTrade:d,expectedAmountOut:p.mul(gt),remainingAccounts:u,executionPrice:b,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 b=this.preInitializedTickArrayStartIndex(e,a);if(b.isExist){let{publicKey:w}=se(e.programId,e.id,b.nextStartIndex);s.push(w)}}catch{}s.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:f}=Gt.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:f}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ae.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?In.checkTickArrayIsInit(re.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):F.checkTickArrayIsInitialized(F.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?F.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):F.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(F.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:a,tickIndex:s}=In.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(a)return{isExist:!0,nextStartIndex:s};if(t=s,t<Ve||t>Fe)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:$.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 f=new pe(Math.min(p.endTime.toNumber(),n)),b=f.sub(p.lastUpdateTime),w=$.mulDivFloor(b,p.emissionsPerSecondX64,i),g=p.rewardGrowthGlobalX64.add(w),h=$.mulDivFloor(b,p.emissionsPerSecondX64,Ge),A=p.rewardTotalEmissioned.add(h);a.push(te(G({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:f}))}return a}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let a=F.getTickArrayStartIndexByTick(o,e);if(a>=n||a<i)return!0}return!1}static tickRange(e){let t=wt.maxTickInTickarrayBitmap(e),n=-t;return t>Fe&&(t=re.getArrayStartIndex(Fe,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)*qt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await _t(e,t.map(a=>({pubkey:a})),{batchRequest:n}),o={};for(let a of i)a.accountInfo!==null&&(o[a.pubkey.toString()]=Go.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=F.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=F.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 _t(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=Bn.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=qo.decode(d.data),f=p.poolId.toString(),b=e.find(B=>B.state.id.toBase58()===f);if(b===void 0)continue;let w=b.state,g=F._getTickPriceLegacy({poolInfo:w,tick:p.tickLower,baseIn:!0}),h=F._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())));b.positionAccount=[...(s=b.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(B=>te(G({},B),{pendingReward:new pe(0)})),leverage:T,tokenFeeAmountA:new pe(0),tokenFeeAmountB:new pe(0)}];let k=await F.getTickArrayAddressByTick(b.state.programId,p.poolId,p.tickLower,b.state.tickSpacing),S=await F.getTickArrayAddressByTick(b.state.programId,p.poolId,p.tickUpper,b.state.tickSpacing);m[`${b.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=k,m[`${b.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(o){let d=Object.values(m),p=await yt(t,d,{batchRequest:i}),f={};for(let b=0;b<d.length;b++){let w=p[b];if(w===null)continue;let g=d[b].toString();f[g]=Bn.decode(w.data)}for(let{state:b,positionAccount:w}of e)if(!!w)for(let g of w){let h=`${b.programId.toString()}-${b.id.toString()}-${g.tickLower}`,A=`${b.programId.toString()}-${b.id.toString()}-${g.tickUpper}`,P=f[m[h].toString()],T=f[m[A].toString()],k=P.ticks[F.getTickOffsetInArray(g.tickLower,b.tickSpacing)],S=T.ticks[F.getTickOffsetInArray(g.tickUpper,b.tickSpacing)],{tokenFeeAmountA:B,tokenFeeAmountB:L}=await Sn.GetPositionFees(b,g,k,S),x=await Sn.GetPositionRewards(b,g,k,S);g.tokenFeeAmountA=B.gte(new pe(0))?B:new pe(0),g.tokenFeeAmountB=L.gte(new pe(0))?L:new pe(0);for(let M=0;M<x.length;M++)g.rewardInfos[M].pendingReward=x[M].gte(new pe(0))?x[M]:new pe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:a,priceLimit:s=new C(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 C(0))?c=l?Ft.add(new pe(1)):Dt.sub(new pe(1)):c=J.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let p=he(o,m,i,!1),{allTrade:f,expectedAmountOut:b,remainingAccounts:w,executionPrice:g,feeAmount:h}=Ae.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((O=p.fee)!=null?O:be),c,u),A=he(b,d,i,!1),P=J.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),T=l?P:new C(1).div(P),k=b.mul(new pe(Math.floor((1-a)*1e10))).div(new pe(1e10)),S=he(k,d,i,!1),B=l?e.currentPrice:new C(1).div(e.currentPrice),L=new C(T).sub(B).abs(),x=B,M=new je(new C(L).mul(10**15).toFixed(0),new C(x).mul(10**15).toFixed(0));return{allTrade:f,realAmountIn:p,amountOut:A,minAmountOut:S,expirationTime:It(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===Fo.toBase58()})),new ve(te(G({},l),{mint:l.address,isToken2022:l.programId===Fo.toBase58()}))],{allTrade:p,realAmountIn:f,amountOut:b,minAmountOut:w,expirationTime:g,currentPrice:h,executionPrice:A,priceImpact:P,fee:T,remainingAccounts:k,executionPriceX64:S}=Ae.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Xe(c.address),amountIn:n,slippage:o,epochInfo:a,catchLiquidityInsufficient:s}),B=te(G({},f),{amount:new ke(m,f.amount),fee:f.fee===void 0?void 0:new ke(m,f.fee)}),L=te(G({},b),{amount:new ke(d,b.amount),fee:b.fee===void 0?void 0:new ke(d,b.fee)}),x=te(G({},w),{amount:new ke(d,w.amount),fee:w.fee===void 0?void 0:new ke(d,w.fee)}),M=new Ze({baseToken:m,denominator:new pe(10).pow(new pe(20+m.decimals)),quoteToken:d,numerator:h.mul(new C(10**(20+d.decimals))).toFixed(0)}),O=new Ze({baseToken:m,denominator:new pe(10).pow(new pe(20+m.decimals)),quoteToken:d,numerator:A.mul(new C(10**(20+d.decimals))).toFixed(0)}),v=new ke(m,T);return{allTrade:p,realAmountIn:B,amountOut:L,minAmountOut:x,expirationTime:g,currentPrice:M,executionPrice:O,priceImpact:P,fee:v,remainingAccounts:k,executionPriceX64:S}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountOut:o,slippage:a,priceLimit:s=new C(0)}){var x;let u=n.toBase58()===e.mintA.address,c={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;s.equals(new C(0))?l=u?Dt.sub(new pe(1)):Ft.add(new pe(1)):l=J.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let m=he(o,c[n.toString()],i,!0),{expectedAmountIn:d,remainingAccounts:p,executionPrice:f,feeAmount:b}=Ae.getInputAmountAndRemainAccounts(e,t,n,m.amount.sub((x=m.fee)!=null?x:be),l),w=u?e.mintB.address:e.mintA.address,g=he(d,c[w],i,!1),h=J.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=u?h:new C(1).div(h),P=d.mul(new pe(Math.floor((1+a)*1e10))).div(new pe(1e10)),T=he(P,c[w],i,!0),k=u?e.currentPrice:new C(1).div(e.currentPrice),S=new C(A).sub(k).abs(),B=k,L=new je(new C(S).mul(10**15).toFixed(0),new C(B).mul(10**15).toFixed(0));return{amountIn:g,maxAmountIn:T,realAmountOut:m,expirationTime:It(g.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:L,fee:b,remainingAccounts:p}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var f,b,w;let o=e[t],a=F.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),s=F.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:[((f=o.rewardApr[0])!=null?f:0)*p,((b=o.rewardApr[1])!=null?b:0)*p,((w=o.rewardApr[2])!=null?w:0)*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex: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,f=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let b=J.priceToSqrtPriceX64(new C(e.price),e.mintA.decimals,e.mintB.decimals),w=J.getSqrtPriceX64FromTick(a),g=J.getSqrtPriceX64FromTick(s),{amountSlippageA:h,amountSlippageB:A}=ie.getAmountsFromLiquidityWithSlippage(b,w,g,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:T}=ie.getAmountsFromLiquidityWithSlippage(b,w,g,o,!1,!1,0),k=new C(h.toString()).div(new C(10).pow(p)).mul(m.value).add(new C(A.toString()).div(new C(10).pow(f)).mul(d.value)),S=new C(P.toString()).div(new C(10).pow(p)).mul(m.value).add(new C(T.toString()).div(new C(10).pow(f)).mul(d.value)),B=new C(1).div(k.add(S)),x=new C(l.volumeFee).mul(365).div(c).mul(B).mul(100).toNumber(),M=3600*24*365,O=e.rewardDefaultInfos.map(v=>{var D,ae;let U=v.mint.decimals,j=i[v.mint.address];return u<((D=v.startTime)!=null?D:0)||u>((ae=v.endTime)!=null?ae:0)||!v.perSecond||!j||U===void 0?0:new C(j.value).mul(new C(v.perSecond).mul(M)).div(new C(10).pow(U)).mul(B).mul(100).toNumber()});return{feeApr:x,rewardsApr:O,apr:x+O.reduce((v,U)=>v+U,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:a,add:s,epochInfo:u,amountHasFee:c}){var g,h;let l=J.priceToSqrtPriceX64(new C(e.price),e.mintA.decimals,e.mintB.decimals),m=J.getSqrtPriceX64FromTick(n),d=J.getSqrtPriceX64FromTick(i),p=he(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new pe(new C(p.amount.sub((h=p.fee)!=null?h:be).toString()).toFixed(0)),b;if(l.lte(m))b=t?ie.getLiquidityFromTokenAmountA(m,d,f,!s):new pe(0);else if(l.lte(d)){let A=ie.getLiquidityFromTokenAmountA(l,d,f,!s),P=ie.getLiquidityFromTokenAmountB(m,l,f);b=t?A:P}else b=t?new pe(0):ie.getLiquidityFromTokenAmountB(m,d,f);let w=await Ae.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:a,add:s});return{liquidity:b,amountA:t?p:w.amountA,amountB:t?w.amountB:p,amountSlippageA:t?p:w.amountSlippageA,amountSlippageB:t?w.amountSlippageB:p,expirationTime:w.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:a,add:s}){var w,g,h,A;let u=J.getSqrtPriceX64FromTick(n),c=J.getSqrtPriceX64FromTick(i),l=s?1+a:1-a,m=ie.getAmountsFromLiquidity(J.priceToSqrtPriceX64(new C(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)],[f,b]=[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:f,amountSlippageB:b,expirationTime:It(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()]=Do.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 C(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 $=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(be)||(o=o.add(at)),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(at)).div(n)}static x64ToDecimal(e,t){return new C(e.toString()).div(C.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ee(e.mul(C.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(rr).sub(t).mod(rr)}};function Ke(r,e){return Yr(r.mul(e),64,256)}function qu(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Yr(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var J=class{static sqrtPriceX64ToPrice(e,t,n){return $.x64ToDecimal(e).pow(2).mul(C.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return $.decimalToX64(e.mul(C.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(Pn);if(i){let a=o,s=o.add(n.mul(e));return s.gte(a)?$.mulDivCeil(a,e,s):$.mulDivRoundingUp(a,at,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 $.mulDivCeil(o,e,s)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(Pn);if(i)return e.add(o.div(t));{let a=$.mulDivRoundingUp(o,at,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>Fe)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=Io.div(n)),n}static getTickFromPrice(e,t,n){return J.getTickFromSqrtPriceX64(J.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Dt)||e.lt(Ft))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ee(t-64),i=qu(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<Ko;){u=u.mul(u);let f=u.shrn(127);u=u.shrn(63+f.toNumber()),s=s.add(o.mul(f)),o=o.shrn(1),a+=1}let c=s.shrn(32),m=i.add(c).mul(new ee(Lo)),d=Yr(m.sub(new ee(No)),64,128).toNumber(),p=Yr(m.add(new ee(Co)),64,128).toNumber();return d==p?d:J.getSqrtPriceX64FromTick(p).lte(e)?p:d}},Ut=class{static getTickWithPriceAndTickspacing(e,t,n,i){let a=J.getTickFromSqrtPriceX64(J.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=Ut.getTickWithPriceAndTickspacing(e,t,n,i),a=J.getSqrtPriceX64FromTick(o);return J.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(Pn),a=t.sub(e);return i?$.mulDivRoundingUp($.mulDivCeil(o,a,t),at,e):$.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?$.mulDivCeil(n,t.sub(e),Ge):$.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?$.mulDivRoundingUp(s,at,Ur):s.shrn(Pn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),$.mulDivFloor(n,Ur,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 C(u.toString()).mul(l).toFixed(0)),d=new ee(new C(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=J.priceToSqrtPriceX64(new C(e.price),e.mintA.decimals,e.mintB.decimals),l=J.getSqrtPriceX64FromTick(t),m=J.getSqrtPriceX64FromTick(n),d=a?1+o:1-o,p=ie.getAmountsFromLiquidity(c,l,m,i,a),[f,b]=[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 C(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,u),he(new ee(new C(p.amountB.toString()).mul(d).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,s,u)];return{liquidity:i,amountA:f,amountB:b,amountSlippageA:w,amountSlippageB:g,expirationTime:It(f.expirationTime,b.expirationTime)}}},Gt=class{static swapCompute(e,t,n,i,o,a,s,u,c,l,m,d,p,f,b=!1){if(d.eq(be))throw new Error("amountSpecified must not be 0");if(f||(f=a?Ft.add(at):Dt.sub(at)),a){if(f.lt(Ft))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(f.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(f.gt(Dt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(f.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let w=d.gt(be),g={amountSpecifiedRemaining:d,amountCalculated:be,sqrtPriceX64:m,tick:c>p?Math.min(p+re.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new ee(0)},h=p,A=n[p],P=0,T=!a&&A.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(be)&&!g.sqrtPriceX64.eq(f);){P>10;let k={};k.sqrtPriceStartX64=g.sqrtPriceX64;let S=F.nextInitTick(A,g.tick,l,a,T),B=S||null,L=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let M=Ae.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},h,a);if(!M.isExist){if(b)return{allTrade:!1,amountSpecifiedRemaining:g.amountSpecifiedRemaining,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts};throw Error("swapCompute LiquidityInsufficient")}h=M.nextStartIndex;let{publicKey:O}=se(e,t,h);L=O,A=n[h];try{B=F.firstInitializedTick(A,a)}catch{throw Error("not found next tick info")}}k.tickNext=B.tick,k.initialized=B.liquidityGross.gtn(0),p!==h&&L&&(g.accounts.push(L),p=h),k.tickNext<Ve?k.tickNext=Ve:k.tickNext>Fe&&(k.tickNext=Fe),k.sqrtPriceNextX64=J.getSqrtPriceX64FromTick(k.tickNext);let x;if(a&&k.sqrtPriceNextX64.lt(f)||!a&&k.sqrtPriceNextX64.gt(f)?x=f:x=k.sqrtPriceNextX64,[g.sqrtPriceX64,k.amountIn,k.amountOut,k.feeAmount]=Gt.swapStepCompute(g.sqrtPriceX64,x,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=B.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=J.getTickFromSqrtPriceX64(g.sqrtPriceX64);T=M!=g.tick&&!a&&A.startTickIndex===M,g.tick=M}++P}try{let{nextStartIndex:k,isExist:S}=re.nextInitializedTickArray(g.tick,l,a,i,o);S&&p!==k&&(g.accounts.push(se(e,t,k).publicKey),p=k)}catch{}return{allTrade:!0,amountSpecifiedRemaining:be,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,i,o,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=$.mulDivFloor(i,ir.sub(new ee(o.toString())),ir);s.amountIn=a?ie.getTokenAmountAFromLiquidity(t,e,n,!0):ie.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=J.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=J.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=$.mulDivCeil(s.amountIn,new ee(o),ir.sub(new ee(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Ie=60,qt=512,F=class{static getTickArrayAddressByTick(e,t,n,i){let o=F.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=F.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Ie)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*Ie,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Ie,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*Ie:e+t*Ie}static mergeTickArrayBitmap(e){let t=new Gu(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*Ie));return[...F.searchLowBitFromStart(e,t,a-1,o,n),...F.searchHightBitFromStart(e,t,a,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return F.searchHightBitFromStart(e,t,-7680,qt,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let a=[],s=F.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=>F.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=>F.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>Fe}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<Ie;){if(e.ticks[s].liquidityGross.gtn(0))return e.ticks[s];s=s+1}return null}static firstInitializedTick(e,t){if(t){let n=Ie-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Ie;){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=J.getSqrtPriceX64FromTick(t),o=J.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new C(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new C(1).div(t),o=Ut.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),a=J.getSqrtPriceX64FromTick(o),s=J.sqrtPriceX64ToPrice(a,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:s}:{tick:o,price:new C(1).div(s)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=J.getSqrtPriceX64FromTick(t),o=J.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new C(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new C(1).div(t),o=Ut.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),a=J.getSqrtPriceX64FromTick(o),s=J.sqrtPriceX64ToPrice(a,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:s}:{tick:o,price:new C(1).div(s)}}};var Fy=E([xe(8),W("bump"),Vt("index"),N(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),Vt("tickSpacing"),Q(y(),8,"")]),Uu=E([Ee("blockTimestamp"),nn("tickCumulative"),Q(y(),4)]),Uo=E([xe(8),Be("initialized"),y("recentEpoch"),Vt("observationIndex"),N("poolId"),Q(Uu,100,"observations"),Q(y(),4)]),Xu=E([W("rewardState"),y("openTime"),y("endTime"),y("lastUpdateTime"),X("emissionsPerSecondX64"),y("rewardTotalEmissioned"),y("rewardClaimed"),N("tokenMint"),N("tokenVault"),N("creator"),X("rewardGrowthGlobalX64")]),Do=E([xe(8),W("bump"),N("ammConfig"),N("creator"),N("mintA"),N("mintB"),N("vaultA"),N("vaultB"),N("observationId"),W("mintDecimalsA"),W("mintDecimalsB"),Vt("tickSpacing"),X("liquidity"),X("sqrtPriceX64"),de("tickCurrent"),Ee(),X("feeGrowthGlobalX64A"),X("feeGrowthGlobalX64B"),y("protocolFeesTokenA"),y("protocolFeesTokenB"),X("swapInAmountTokenA"),X("swapOutAmountTokenB"),X("swapInAmountTokenB"),X("swapOutAmountTokenA"),W("status"),Q(W(),7,""),Q(Xu,3,"rewardInfos"),Q(y(),16,"tickArrayBitmap"),y("totalFeesTokenA"),y("totalFeesClaimedTokenA"),y("totalFeesTokenB"),y("totalFeesClaimedTokenB"),y("fundFeesTokenA"),y("fundFeesTokenB"),y("startTime"),Q(y(),15*4-3,"padding")]),Qu=E([X("growthInsideLastX64"),y("rewardAmountOwed")]),qo=E([xe(8),W("bump"),N("nftMint"),N("poolId"),de("tickLower"),de("tickUpper"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),Q(Qu,3,"rewardInfos"),Q(y(),8,"")]),Dy=E([xe(8),W("bump"),N("poolId"),de("tickLowerIndex"),de("tickUpperIndex"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),Q(X(),3,"rewardGrowthInside"),Q(y(),8,"")]),zu=E([de("tick"),yo("liquidityNet"),X("liquidityGross"),X("feeGrowthOutsideX64A"),X("feeGrowthOutsideX64B"),Q(X(),3,"rewardGrowthsOutsideX64"),Q(Ee(),13,"")]),Bn=E([xe(8),N("poolId"),de("startTickIndex"),Q(zu,Ie,"ticks"),W("initializedTickCount"),Q(W(),115,"")]),qy=E([xe(329),Q(N(),100,"whitelistMints")]),Go=E([xe(8),N("poolId"),Q(Q(y(),8),Zr,"positiveTickArrayBitmap"),Q(Q(y(),8),Zr,"negativeTickArrayBitmap")]),Gy=E([y(),W("bump"),N("owner"),N("poolId"),N("positionId"),N("nftAccount"),Q(y(),8)]),Uy=E([xe(8),W("bump"),N("lockOwner"),N("poolId"),N("positionId"),N("nftAccount"),N("lockNftMint"),y("recentEpoch"),Q(y(),8)]);Uo.span;var Xo=ue("Raydium_Clmm"),Qe={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],openPositionWithTokenEx:[77,255,174,82,125,29,201,46],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Qo=[188,37,179,131,82,150,84,73],zo=[16,72,250,198,14,162,212,19],on=class{static createPoolInstruction(e,t,n,i,o,a,s,u,c,l,m,d,p,f){let b=E([X("sqrtPriceX64"),y("zero")]),w=[{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},...(f==null?void 0:f.map(A=>({pubkey:A,isSigner:!1,isWritable:!1})))||[]],g=Buffer.alloc(b.span);b.encode({sqrtPriceX64:p,zero:be},g);let h=Buffer.from([...Qe.createPool,...g]);return new Ce({keys:w,programId:e,data:h})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:o,ammConfigId:a,initialPriceX64:s,extendMintAccount:u}=e,[c,l]=[new R(i.address),new R(o.address)],{publicKey:m}=Eo(t,a,c,l),{publicKey:d}=Vo(t,m),{publicKey:p}=zr(t,m,c),{publicKey:f}=zr(t,m,l),b=Ne(t,m).publicKey,w=[this.createPoolInstruction(t,m,n,a,d,c,p,new R(i.programId||ce),l,f,new R(o.programId||ce),b,s,u)];return{signers:[],instructions:w,instructionTypes:[H.CreateAccount,H.ClmmCreatePool],address:{poolId:m,observationId:d,exBitmapAccount:b,mintAVault:p,mintBVault:f},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,a,s,u,c,l,m,d,p,f,b,w,g,h,A,P,T,k,S,B,L,x){let M=E([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),X("liquidity"),y("amountMaxA"),y("amountMaxB"),Be("withMetadata"),W("optionBaseFlag"),Be("baseFlag")]),O=[...x?[{pubkey:x,isSigner:!1,isWritable:!0}]:[]],v=[{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:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:Kn,isSigner:!1,isWritable:!1},{pubkey:Mt,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:S,amountMaxB:B,withMetadata:L==="create",baseFlag:!1,optionBaseFlag:0},U);let j=Buffer.from([...Qe.openPosition,...U]);return new Ce({keys:v,programId:e,data:j})}static openPositionFromLiquidityInstruction22(e,t,n,i,o,a,s,u,c,l,m,d,p,f,b,w,g,h,A,P,T,k,S,B,L){let x=E([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),X("liquidity"),y("amountMaxA"),y("amountMaxB"),Be("withMetadata"),W("optionBaseFlag"),Be("baseFlag")]),M=[...L?[{pubkey:L,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:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:Kn,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...M],v=Buffer.alloc(x.span);x.encode({tickLowerIndex:g,tickUpperIndex:h,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:P,liquidity:T,amountMaxA:k,amountMaxB:S,withMetadata:B==="create",baseFlag:!1,optionBaseFlag:0},v);let U=Buffer.from([...Qe.openPositionWithTokenEx,...v]);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,f]=[new R(e.programId),new R(e.id)],b;if(l)b=new R((await l(1))[0]);else{let L=sr.generate();d.push(L),b=L.publicKey}let w=F.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=F.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:h}=se(p,f,w),{publicKey:A}=se(p,f,g),{publicKey:P}=m?me(n.wallet,b,ge):me(n.wallet,b,ce),{publicKey:T}=xn(b),{publicKey:k}=Ue(p,b),{publicKey:S}=Kt(p,f,i,o),B=m?this.openPositionFromLiquidityInstruction22(p,n.feePayer,f,n.wallet,b,P,S,h,A,k,n.tokenAccountA,n.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(e.mintB.address),i,o,w,g,a,s,u,c,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(p,f).publicKey:void 0):this.openPositionFromLiquidityInstruction(p,n.feePayer,f,n.wallet,b,P,T,S,h,A,k,n.tokenAccountA,n.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(e.mintB.address),i,o,w,g,a,s,u,c,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(p,f).publicKey:void 0);return{signers:d,instructions:[B],instructionTypes:[H.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:h,tickArrayUpper:A,positionNftAccount:P,metadataAccount:T,personalPosition:k,protocolPosition:S}}}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,f]=[new R(e.programId),new R(e.id)],b;if(l)b=new R((await l(1))[0]);else{let L=sr.generate();d.push(L),b=L.publicKey}let w=F.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=F.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:h}=se(p,f,w),{publicKey:A}=se(p,f,g),{publicKey:P}=m?me(n.wallet,b,ge):me(n.wallet,b,ce),{publicKey:T}=xn(b),{publicKey:k}=Ue(p,b),{publicKey:S}=Kt(p,f,i,o),B=m?this.openPositionFromBaseInstruction22(p,n.feePayer,f,n.wallet,b,P,S,h,A,k,n.tokenAccountA,n.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(e.mintB.address),i,o,w,g,c,a,s,u,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(p,f).publicKey:void 0):this.openPositionFromBaseInstruction(p,n.feePayer,f,n.wallet,b,P,T,S,h,A,k,n.tokenAccountA,n.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(e.mintB.address),i,o,w,g,c,a,s,u,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(p,f).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:h,tickArrayUpper:A,positionNftAccount:P,metadataAccount:T,personalPosition:k,protocolPosition:S},instructions:[B],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,f,b,w,g,h,A,P,T,k,S,B,L,x){let M=E([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),X("liquidity"),y("amountMaxA"),y("amountMaxB"),Be("withMetadata"),W("optionBaseFlag"),Be("baseFlag")]),O=[...x?[{pubkey:x,isSigner:!1,isWritable:!0}]:[]],v=[{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:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:Kn,isSigner:!1,isWritable:!1},{pubkey:Mt,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 Jr(0),amountMaxA:S==="MintA"?B:L,amountMaxB:S==="MintA"?L:B,withMetadata:k==="create",baseFlag:S==="MintA",optionBaseFlag:1},U);let j=Buffer.from([...Qe.openPosition,...U]);return new Ce({keys:v,programId:e,data:j})}static openPositionFromBaseInstruction22(e,t,n,i,o,a,s,u,c,l,m,d,p,f,b,w,g,h,A,P,T,k,S,B,L){let x=E([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),X("liquidity"),y("amountMaxA"),y("amountMaxB"),Be("withMetadata"),W("optionBaseFlag"),Be("baseFlag")]),M=[...L?[{pubkey:L,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:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:Kn,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...M],v=Buffer.alloc(x.span);x.encode({tickLowerIndex:g,tickUpperIndex:h,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:P,liquidity:new Jr(0),amountMaxA:k==="MintA"?S:B,amountMaxB:k==="MintA"?B:S,withMetadata:T==="create",baseFlag:k==="MintA",optionBaseFlag:1},v);let U=Buffer.from([...Qe.openPositionWithTokenEx,...v]);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 R((await l(1))[0]);else{let L=sr.generate();p.push(L),d=L.publicKey}let[f,b]=[new R(e.programId),new R(e.id)],w=F.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=F.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:h}=se(f,b,w),{publicKey:A}=se(f,b,g),{publicKey:P}=m?me(n.wallet,d,ge):me(n.wallet,d,ce),{publicKey:T}=xn(d),{publicKey:k}=Ue(f,d),{publicKey:S}=Kt(f,b,i,o),B=m?this.openPositionFromLiquidityInstruction22(f,n.wallet,b,n.wallet,d,P,S,h,A,k,n.tokenAccountA,n.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(t.mintA.address),new R(t.mintB.address),i,o,w,g,a,s,u,c,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(f,b).publicKey:void 0):this.openPositionFromLiquidityInstruction(f,n.wallet,b,n.wallet,d,P,T,S,h,A,k,n.tokenAccountA,n.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(t.mintA.address),new R(t.mintB.address),i,o,w,g,a,s,u,c,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[w,g])?Ne(f,b).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:h,tickArrayUpper:A,positionNftAccount:P,metadataAccount:T,personalPosition:k,protocolPosition:S},instructions:[B],signers:p,instructionTypes:[H.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o,a){let s=E([]),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:ce,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let l=Buffer.from([...Qe.closePosition,...c]);return new Ce({keys:u,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i,nft2022:o}){let a=new R(e.programId),s=o?me(n.wallet,i.nftMint,ge).publicKey:me(n.wallet,i.nftMint,ce).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,f,b,w,g,h){let A=E([X("liquidity"),y("amountMaxA"),y("amountMaxB"),W("optionBaseFlag"),Be("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:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...P],k=Buffer.alloc(A.span);A.encode({liquidity:b,amountMaxA:w,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},k);let S=Buffer.from([...Qe.increaseLiquidity,...k]);return new Ce({keys:T,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:a,amountMaxB:s,nft2022:u}){let[c,l]=[new R(e.programId),new R(e.id)],m=F.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=F.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=se(c,l,m),{publicKey:f}=se(c,l,d),{publicKey:b}=u?me(i.wallet,n.nftMint,ge):me(i.wallet,n.nftMint,ce),{publicKey:w}=Ue(c,n.nftMint),{publicKey:g}=Kt(c,l,n.tickLower,n.tickUpper),h=this.increasePositionFromLiquidityInstruction(c,i.wallet,b,w,l,g,p,f,i.tokenAccountA,i.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(e.mintB.address),o,a,s,Ae.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ne(c,l).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:f,positionNftAccount:b,personalPosition:w,protocolPosition:g},signers:[],instructions:[h],instructionTypes:[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 R(e.programId),new R(e.id)],m=F.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=F.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=se(c,l,m),{publicKey:f}=se(c,l,d),{publicKey:b}=u?me(i.wallet,n.nftMint,ge):me(i.wallet,n.nftMint,ce),{publicKey:w}=Ue(c,n.nftMint),{publicKey:g}=Kt(c,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:f,positionNftAccount:b,personalPosition:w,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(c,i.wallet,b,w,l,g,p,f,i.tokenAccountA,i.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(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,f,b,w,g,h){let A=E([X("liquidity"),y("amountMaxA"),y("amountMaxB"),W("optionBaseFlag"),Be("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:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...P],k=Buffer.alloc(A.span);A.encode({liquidity:new Jr(0),amountMaxA:b==="MintA"?w:g,amountMaxB:b==="MintA"?g:w,baseFlag:b==="MintA",optionBaseFlag:1},k);let S=Buffer.from([...Qe.increaseLiquidity,...k]);return new Ce({keys:T,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,o,a,s,u,c,l,m,d,p,f,b,w,g,h,A){let P=E([X("liquidity"),y("amountMinA"),y("amountMinB")]),T=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...b.map(L=>[{pubkey:L.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.rewardMint,isSigner:!1,isWritable:!1}]).flat()],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey: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:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:qn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...T],S=Buffer.alloc(P.span);P.encode({liquidity:w,amountMinA:g,amountMinB:h},S);let B=Buffer.from([...Qe.decreaseLiquidity,...S]);return new Ce({keys:k,programId:e,data:B})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:a,amountMinB:s,programId:u,nft2022:c}){let[l,m]=[new R(e.programId),new R(e.id)],d=F.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=F.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=se(l,m,d),{publicKey:b}=se(l,m,p),{publicKey:w}=c?me(i.wallet,n.nftMint,ge):me(i.wallet,n.nftMint,u),{publicKey:g}=Ue(l,n.nftMint),{publicKey:h}=Kt(l,m,n.tickLower,n.tickUpper),A=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)A.push({poolRewardVault:new R(t.rewardInfos[k].vault),ownerRewardVault:i.rewardAccounts[k],rewardMint:new R(e.rewardDefaultInfos[k].mint.address)});let P=[],T=this.decreaseLiquidityInstruction(l,i.wallet,w,g,m,h,f,b,i.tokenAccountA,i.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(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:f,tickArrayUpper:b,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,f,b,w,g){let h=E([y("amount"),y("otherAmountThreshold"),X("sqrtPriceLimitX64"),Be("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,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:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:qn,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:f,sqrtPriceLimitX64:b,isBaseInput:w},T);let k=Buffer.from([...Qe.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 R(e.programId),new R(e.id)],[d,p]=[new R(t.vault.A),new R(t.vault.B)],[f,b]=[new R(e.mintA.address),new R(e.mintB.address)],w=e.mintA.address===o.toString(),g=[this.swapInstruction(l,i.wallet,m,new R(e.config.id),w?i.tokenAccountA:i.tokenAccountB,w?i.tokenAccountB:i.tokenAccountA,w?d:p,w?p:d,w?f:b,w?b:f,c,n,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 R(e.programId),new R(e.id)],[d,p]=[new R(t.vault.A),new R(t.vault.B)],[f,b]=[new R(e.mintA.address),new R(e.mintB.address)],w=e.mintA.address===o.toBase58(),g=[this.swapInstruction(l,i.wallet,m,new R(e.config.id),w?i.tokenAccountB:i.tokenAccountA,w?i.tokenAccountA:i.tokenAccountB,w?p:d,w?d:p,w?b:f,w?f:b,c,n,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=E([y("openTime"),y("endTime"),X("emissionsPerSecondX64")]),f=[{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}],b=Buffer.alloc(p.span);p.encode({openTime:ne(l),endTime:ne(m),emissionsPerSecondX64:d},b);let w=Buffer.from([...Qe.initReward,...b]);return new Ce({keys:f,programId:e,data:w})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,a]=[new R(e.programId),new R(e.id)],s=_o(o,a,i.mint).publicKey,u=Hr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,a,u,new R(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=E([W("rewardIndex"),X("emissionsPerSecondX64"),y("openTime"),y("endTime")]),f=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],b=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:ne(l),endTime:ne(m)},b);let w=Buffer.from([...Qe.setRewardEmissions,...b]);return new Ce({keys:f,programId:e,data:w})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,a]=[new R(e.programId),new R(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 R(t.rewardInfos[d].vault),c=new R(t.rewardInfos[d].mint.address));(s===void 0||u===void 0)&&Xo.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Hr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,a,l,new R(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=E([W("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:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:qn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:s},l);let m=Buffer.from([...Qe.collectReward,...l]);return new Ce({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,a]=[new R(e.programId),new R(e.id)],s,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(s=l,u=new R(t.rewardInfos[l].vault));(s===void 0||u===void 0)&&Xo.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 R((await u(1))[0]);else{let g=sr.generate();c.push(g),l=g.publicKey}let m=s?me(o,a,ge).publicKey:me(o,a,ce).publicKey,{publicKey:d}=Ue(n,a),p=Wo(e,l).publicKey,f=me(o,l,ce).publicKey,b=xn(l).publicKey,w=on.lockPositionInstructionV2({programId:e,auth:t,payer:i,positionOwner:o,lockOwner:o,positionNftAccount:m,positionId:d,lockPositionId:p,lockNftMint:l,lockNftAccount:f,metadataAccount:b,withMetadata:!0,nft2022:s,positionNftMint:a,authPositionNftAccount:me(t,a,s?ge:ce).publicKey,positionNftProgram:s?ge:ce});return{address:{positionId:d,lockPositionId:p,lockNftAccount:f,lockNftMint:l,positionNftAccount:m,metadataAccount:b},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:f,withMetadata:b}){let w=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey: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:f,isSigner:!1,isWritable:!0},{pubkey:Mt,isSigner:!1,isWritable:!1},{pubkey:Kn,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1}],g=E([Be("withMetadata")]),h=Buffer.alloc(g.span);g.encode({withMetadata:b},h);let A=Buffer.from([...Qo,...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}=me(i,o,ce),{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:jr(e,s).publicKey,isSigner:!1,isWritable:!0},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1}];return new Ce({keys:u,programId:e,data:Buffer.from(Qo)})}static harvestLockPositionInstruction(e){let[t,n]=[new R(e.poolKeys.programId),new R(e.poolKeys.id)],i=F.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),o=F.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:a}=se(t,n,i),{publicKey:s}=se(t,n,o),{publicKey:u}=me(e.owner,e.ownerPosition.nftMint,ce),{publicKey:c}=Ue(t,e.ownerPosition.nftMint),{publicKey:l}=Kt(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),m=[];for(let f=0;f<e.poolKeys.rewardInfos.length;f++)m.push({poolRewardVault:new R(e.poolKeys.rewardInfos[f].vault),ownerRewardVault:e.ownerRewardAccounts[f],rewardMint:new R(e.poolKeys.rewardInfos[f].mint.address)});let d=[...m.map(f=>[{pubkey:f.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.rewardMint,isSigner:!1,isWritable:!1}]).flat()],p=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:jr(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 R(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new R(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:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Ir,isSigner:!1,isWritable:!1},{pubkey:new R(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new R(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...d];return new Ce({keys:p,programId:e.programId,data:Buffer.from(zo)})}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:f,tickArrayUpper:b,userVaultA:w,userVaultB:g,mintA:h,mintB:A,rewardAccounts:P,exTickArrayBitmap:T}){let k=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[],...P.map(B=>[{pubkey:B.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:B.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:B.rewardMint,isSigner:!1,isWritable:!1}]).flat()],S=[{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:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:Ir,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:A,isSigner:!1,isWritable:!1},...k];return new Ce({keys:S,programId:e,data:Buffer.from(zo)})}};var $r=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),sn=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ue(t)}createTxBuilder(e){return this.scope.checkOwner(),new Zn({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 Hu=E([Ee("mintAuthorityOption"),N("mintAuthority"),y("supply"),W("decimals"),W("isInitialized"),Ee("freezeAuthorityOption"),N("freezeAuthority")]);import{PublicKey as bg}from"@solana/web3.js";import{MintLayout as gg,TOKEN_PROGRAM_ID as kg}from"@solana/spl-token";var Ho=r=>new ve({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name});var ar=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 jo from"bn.js";var ei=new jo(25),ur=new jo(1e4);import{PublicKey as ct,SystemProgram as uc,SYSVAR_RENT_PUBKEY as qg,TransactionInstruction as un}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as cc,TOKEN_PROGRAM_ID as Nn}from"@solana/spl-token";var ti=E([W("instruction"),y("amountIn"),y("minAmountOut")]),ni=E([W("instruction"),y("maxAmountIn"),y("amountOut")]),vg=E([W("instruction"),W("nonce")]),ju=E([W("instruction"),W("nonce"),y("startTime")]),ri=E([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"),N("baseVault"),N("quoteVault"),N("baseMint"),N("quoteMint"),N("lpMint"),N("openOrders"),N("marketId"),N("marketProgramId"),N("targetOrders"),N("withdrawQueue"),N("lpVault"),N("owner"),y("lpReserve"),Q(y(),3,"padding")]),Eg=E([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"),N("baseVault"),N("quoteVault"),N("baseMint"),N("quoteMint"),N("lpMint"),N("modelDataAccount"),N("openOrders"),N("marketId"),N("marketProgramId"),N("targetOrders"),N("owner"),Q(y(),64,"padding")]),ii=E([W("instruction"),y("baseAmountIn"),y("quoteAmountIn"),y("fixedSide"),y("otherAmountMin")]),oi=E([W("instruction"),y("lpAmount"),y("baseAmountMin"),y("quoteAmountMin")]);var Zo=E([y("fee")]);import{PublicKey as Zu}from"@solana/web3.js";var an=new Zu("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Qt=5e4,Yu=E([y("x"),y("y"),y("price")]),Ju=E([y("accountType"),y("status"),y("multiplier"),y("validDataCount"),Q(Yu,Qt,"DataElement")]);function $u(r,e){return[0,Qt-2]}function ec(r){return[0,Qt-2]}function tc(r){return[0,Qt-2]}function nc(r,e,t){let[n,i]=$u(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>=Qt-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 si(r,e,t){let[n,i,o]=nc(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 Xt(r,e,t){return e*r.multiplier/t}function Yo(r,e,t){return e*t/r.multiplier}function rc(r,e){let[t,n]=ec(e),i=t,o=n,a=0,s=e;for(;i<o;){if(a=Math.floor((o+i)/2),a<=0||a>Qt-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 ic(r,e){let[t,n]=tc(e),i=t,o=n,a=0,s=e;for(;i<=o;){if(a=Math.floor((o+i)/2),a<=0||a>=Qt-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 Jo(r,e,t,n){let i=n?e+t:e-t,[o,a,s]=rc(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 f,b;return n?(f=l+(m-l)*(e-u)/(c-u),b=d-(i-u)*r.multiplier/m):(f=l+(m-l)*(e-u)/(c-u),b=p+(c-i)*r.multiplier/l),[f,b,!1,s]}}}function oc(r,e,t,n){let i=n?e-t:e+t,[o,a,s]=ic(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 f,b;return n?(f=l+(m-l)*(d-e)/(d-p),b=u+m*(d-i)/r.multiplier):(f=l+(m-l)*(d-e)/(d-p),b=c-l*(i-p)/r.multiplier),[f,b,!1,s]}}}function sc(r,e){let t=Jo(r,e,0,!1);return t[3]?t[0]:0}function $o(r,e,t,n){let i=si(r,e,t),o=Xt(r,e,i),a=Xt(r,t,i),s=Xt(r,n,i),u=!0,[c,l,m,d]=Jo(r,o,s,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=a-l;return Yo(r,p,i)}}function es(r,e,t,n){let i=si(r,e,t),o=Xt(r,e,i),a=Xt(r,t,i),s=Xt(r,n,i),u=!1,[c,l,m,d]=oc(r,a,s,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Yo(r,p,i)}}function ac(r){let e=Ju.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 ts(r,e,t,n){let i=sc(r,Xt(r,e,si(r,e,t)))/r.multiplier;return n?i:1/i}var Ln=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(an);e&&(this._layoutData=ac(e==null?void 0:e.data))}}};var ns=ue("Raydium_liquidity_instruction");function rs(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:a,otherAmountMin:s}=r,u=Buffer.alloc(ii.span);ii.encode({instruction:3,baseAmountIn:ne(i),quoteAmountIn:ne(o),otherAmountMin:ne(s),fixedSide:a==="base"?Bt:zi},u);let c=[I({pubkey:Nn,isWritable:!1}),I({pubkey:new ct(e.id)}),I({pubkey:new ct(t.authority),isWritable:!1}),I({pubkey:new ct(t.openOrders),isWritable:!1}),I({pubkey:new ct(t.targetOrders)}),I({pubkey:new ct(e.lpMint.address)}),I({pubkey:new ct(t.vault.A)}),I({pubkey:new ct(t.vault.B)})];return e.pooltype.includes("StablePool")&&c.push(I({pubkey:an})),c.push(I({pubkey:new ct(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 ct(t.marketEventQueue),isWritable:!1})),new un({programId:new ct(e.programId),keys:c,data:u})}function ai(r){let{poolInfo:e,poolKeys:t,userKeys:n,lpAmount:i,baseAmountMin:o,quoteAmountMin:a}=r,s=vt(t),u=4;if(e.pooltype.includes("StablePool")&&(u=5),u===4||u===5){let c=Buffer.alloc(oi.span);oi.encode({instruction:4,lpAmount:ne(i),baseAmountMin:ne(o),quoteAmountMin:ne(a)},c);let l=[I({pubkey:Nn,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:an})):(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 un({programId:s.programId,keys:l,data:c})}return new un({programId:s.programId,keys:[]})}function ui({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:f,userCoinVault:b,userPcVault:w,userLpVault:g,nonce:h,openTime:A,coinAmount:P,pcAmount:T,ammConfigId:k,feeDestinationId:S}){let B=E([W("instruction"),W("nonce"),y("openTime"),y("pcAmount"),y("coinAmount")]),L=[{pubkey:Nn,isSigner:!1,isWritable:!1},{pubkey:cc,isSigner:!1,isWritable:!1},{pubkey:uc.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:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!0,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],x=Buffer.alloc(B.span);return B.encode({instruction:1,nonce:h,openTime:A,coinAmount:P,pcAmount:T},x),{instruction:new un({keys:L,programId:r,data:x}),instructionType:H.AmmV4CreatePool}}function lc({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=vt(r),a=Buffer.alloc(ti.span);ti.encode({instruction:9,amountIn:ne(t),minAmountOut:ne(n)},a);let s=[I({pubkey:Nn,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:an})),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 un({programId:o.programId,keys:s,data:a})}function mc({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=vt(r),a=Buffer.alloc(ni.span);ni.encode({instruction:11,maxAmountIn:ne(t),amountOut:ne(n)},a);let s=[I({pubkey:Nn,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:an})),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 un({programId:o.programId,keys:s,data:a})}function is(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 lc(te(G({},s),{amountIn:i,minAmountOut:o}),t);if(a==="out")return mc(te(G({},s),{maxAmountIn:i,amountOut:o}),t);ns.logWithError("invalid params","params",r)}throw ns.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{PublicKey as Pc}from"@solana/web3.js";import sk from"bn.js";import{TOKEN_PROGRAM_ID as Tc}from"@solana/spl-token";import{PublicKey as dc}from"@solana/web3.js";var pc=ue("Raydium_liquidity_serum");function os({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=dc.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw pc.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import{Keypair as wc,PublicKey as kc}from"@solana/web3.js";import hw from"bn.js";import{TOKEN_PROGRAM_ID as hc}from"@solana/spl-token";function fc(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function ci(r,...e){if(!fc(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function 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 lr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),rt=(r,e)=>r<<32-e|r>>>e;var sw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function bc(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function mi(r){return typeof r=="string"&&(r=bc(r)),ci(r),r}var cr=class{clone(){return this._cloneInto()}},aw={}.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 yc(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,mr=class extends cr{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=lr(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=lr(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;yc(n,i-8,BigInt(this.length*8),o),this.process(n,0);let s=lr(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 gc=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Lt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Nt=new Uint32Array(64),di=class extends mr{constructor(){super(64,32,8,!1),this.A=Lt[0]|0,this.B=Lt[1]|0,this.C=Lt[2]|0,this.D=Lt[3]|0,this.E=Lt[4]|0,this.F=Lt[5]|0,this.G=Lt[6]|0,this.H=Lt[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)Nt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Nt[m-15],p=Nt[m-2],f=rt(d,7)^rt(d,18)^d>>>3,b=rt(p,17)^rt(p,19)^p>>>10;Nt[m]=b+Nt[m-7]+f+Nt[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)+gc[m]+Nt[m]|0,b=(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+b|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(){Nt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ls=as(()=>new di);var Sw=ue("Raydium_Util");function lt({fromPublicKey:r,programId:e=hc,assignSeed:t}){let n=t?btoa(t).slice(0,32):wc.generate().publicKey.toBase58().slice(0,32);return{publicKey:Ac(r,n,e),seed:n}}function Ac(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=ls(n);return new kc(i)}import{PublicKey as Nw,SystemProgram as Rw}from"@solana/web3.js";import Ew from"bn.js";import{createCloseAccountInstruction as Ww,createInitializeAccountInstruction as Fw,createTransferInstruction as Dw,TOKEN_PROGRAM_ID as qw}from"@solana/spl-token";function dr({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 xc({programId:r,marketId:e}){let{publicKey:t}=ye([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function Sc({programId:r}){return ye([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function fi({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}=Sc({programId:s}),p=zt({name:"coin_vault_associated_seed",programId:s,marketId:t}),f=zt({name:"pc_vault_associated_seed",programId:s,marketId:t}),b=zt({name:"temp_lp_token_associated_seed",programId:s,marketId:t}),w=xc({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}=os({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:f,lpVault:b,openOrders:w,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Pc.default,configId:dr({programId:s})}}var pi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},ms=r=>{let e={},t=Tc.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:ar({address:o,programId:t,decimals:i.baseDecimal.toNumber()}),mintB:ar({address:a,programId:t,decimals:i.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:i.poolPrice.toNumber(),mintAmountA:new C(i.mintAAmount.toString()).div(10**i.baseDecimal.toNumber()).toNumber(),mintAmountB:new C(i.mintBAmount.toString()).div(10**i.quoteDecimal.toNumber()).toNumber(),baseReserve:i.baseReserve,quoteReserve:i.quoteReserve,feeRate:new C(i.tradeFeeNumerator.toString()).div(i.tradeFeeDenominator.toString()).toNumber(),openTime:i.poolOpenTime.toString(),tvl:0,day:pi,week:pi,month:pi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:i.marketId.toBase58(),configId:dr({programId:i.programId}).toBase58(),lpPrice:0,lpAmount:new C(i.lpReserve.toString()).div(10**Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())).toNumber(),lpMint:ar({address:i.lpMint.toBase58(),programId:t,decimals:Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())}),burnPercent:0}}),e};import we from"bn.js";import{PublicKey as Nk}from"@solana/web3.js";import Rk from"bn.js";import{TOKEN_PROGRAM_ID as vk}from"@solana/spl-token";import{SystemProgram as Ht,SYSVAR_RENT_PUBKEY as Ic,Transaction as ds,TransactionInstruction as Kc}from"@solana/web3.js";import{createInitializeAccountInstruction as ps,TOKEN_PROGRAM_ID as fs}from"@solana/spl-token";function Bc(r="accountFlags"){let e=new Jn(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 bi=E([xe(5),Bc("accountFlags"),N("ownAddress"),y("vaultSignerNonce"),N("baseMint"),N("quoteMint"),N("baseVault"),y("baseDepositsTotal"),y("baseFeesAccrued"),N("quoteVault"),y("quoteDepositsTotal"),y("quoteFeesAccrued"),y("quoteDustThreshold"),N("requestQueue"),N("eventQueue"),N("bids"),N("asks"),y("baseLotSize"),y("quoteLotSize"),y("feeRateBps"),y("referrerRebatesAccrued"),xe(7)]);function Lc({programId:r,marketInfo:e}){let t=E([W("version"),Ee("instruction"),y("baseLotSize"),y("quoteLotSize"),Vt("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:Ic,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),i=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},i),new Kc({keys:n,programId:r,data:i})}async function yi({connection:r,wallet:e,marketInfo:t}){var a,s,u,c,l,m,d,p;let n=new ds,i=await r.getMinimumBalanceForRentExemption(165);n.add(Ht.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:fs}),Ht.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:fs}),ps(t.baseVault.publicKey,t.baseMint,t.vaultOwner),ps(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner),Ht.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(bi.span),space:bi.span,programId:t.programId}));let o=new ds;return o.add(Ht.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}),Ht.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}),Ht.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}),Ht.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:t.lowestFeeMarket?101977920:await r.getMinimumBalanceForRentExemption((d=t.orderbookQueueSpace)!=null?d:65536+12),space:t.lowestFeeMarket?14524:(p=t.orderbookQueueSpace)!=null?p:65536+12,programId:t.programId}),Lc({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[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 gi=class extends sn{constructor(t){super(t);this.stableLayout=new Ln({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 C(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),s=Ho(t[o?"mintB":"mintA"]),[u,c]=[new we(new C(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new we(new C(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new we(new C(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,C.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=Bt;a.isZero()||(d=m==="base"?Un(a.mul(c),u):Un(a.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Un(a.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new je(new we(1)).add(i),b=new je(new we(1)).sub(i),w=f.mul(d).quotient,g=b.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,feePayer:p}=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:f}=this.scope,{bypassAssociatedCheck:b,checkCreateATAOwner:w}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),[g,h]=[o.token,a.token],A=await f.getCreatedTokenAccount({mint:g.mint,associatedOnly:!1}),P=await f.getCreatedTokenAccount({mint:h.mint,associatedOnly:!1});!A&&!P&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let T=await f.getCreatedTokenAccount({mint:new Pe(n.lpMint.address)}),k=[g,h],S=[A,P],B=[o.raw,a.raw],L=o.token.mint.toBase58()===n.mintA.address?"base":"quote",x="base";["quote","base"].includes(L)||this.logAndCreateError("invalid fixedSide","fixedSide",u),L==="quote"?(k.reverse(),S.reverse(),B.reverse(),x=u==="a"?"quote":"base"):L==="base"&&(x=u==="a"?"base":"quote");let[M,O]=k,[v,U]=S,[j,D]=B,ae=i!=null?i:await this.getAmmPoolKeys(n.id),Te=this.createTxBuilder(p),dt=await f.handleTokenAccount({side:"in",amount:j,mint:M.mint,tokenAccount:v,bypassAssociatedCheck:b,checkCreateATAOwner:w}),{tokenAccount:Je}=dt,mt=He(dt,["tokenAccount"]);Te.addInstruction(mt);let ze=await f.handleTokenAccount({side:"in",amount:D,mint:O.mint,tokenAccount:U,bypassAssociatedCheck:b,checkCreateATAOwner:w}),{tokenAccount:Oe}=ze,We=He(ze,["tokenAccount"]);Te.addInstruction(We);let De=await f.handleTokenAccount({side:"out",amount:0,mint:new Pe(n.lpMint.address),tokenAccount:T,bypassAssociatedCheck:b,checkCreateATAOwner:w}),{tokenAccount:it}=De,ht=He(De,["tokenAccount"]);return Te.addInstruction(ht),Te.addInstruction({instructions:[rs({poolInfo:n,poolKeys:ae,userKeys:{baseTokenAccount:Je,quoteTokenAccount:Oe,lpTokenAccount:it,owner:this.scope.ownerPubKey},baseAmountIn:j,quoteAmountIn:D,otherAmountMin:s.raw,fixedSide:x})],instructionTypes:[n.pooltype.includes("StablePool")?H.AmmV5AddLiquidity:H.AmmV4AddLiquidity],lookupTableAddress:ae.lookupTableAccount?[ae.lookupTableAccount]:[]}),Te.addCustomComputeBudget(m),Te.addTipInstruction(d),l===0?await Te.buildV0():Te.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:i,lpAmount:o,baseAmountMin:a,quoteAmountMin:s,config:u,txVersion:c,computeBudgetConfig:l,txTipConfig:m,feePayer:d}=t,p=i!=null?i:await this.getAmmPoolKeys(n.id),[f,b,w]=[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:g}=this.scope,h=await g.getCreatedTokenAccount({mint:w,associatedOnly:!1});h||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",g.tokenAccounts);let A=await g.getCreatedTokenAccount({mint:f}),P=await g.getCreatedTokenAccount({mint:b}),T=this.createTxBuilder(d),{bypassAssociatedCheck:k,checkCreateATAOwner:S}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),O=await g.handleTokenAccount({side:"out",amount:0,mint:f,tokenAccount:A,bypassAssociatedCheck:k,checkCreateATAOwner:S}),{tokenAccount:B}=O,L=He(O,["tokenAccount"]);T.addInstruction(L);let v=await g.handleTokenAccount({side:"out",amount:0,mint:b,tokenAccount:P,bypassAssociatedCheck:k,checkCreateATAOwner:S}),{tokenAccount:x}=v,M=He(v,["tokenAccount"]);return T.addInstruction(M),T.addInstruction({instructions:[ai({poolInfo:n,poolKeys:p,userKeys:{lpTokenAccount:h,baseTokenAccount:B,quoteTokenAccount:x,owner:this.scope.ownerPubKey},lpAmount:o,baseAmountMin:a,quoteAmountMin:s})],lookupTableAddress:p.lookupTableAccount?[p.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?H.AmmV5RemoveLiquidity:H.AmmV4RemoveLiquidity]}),T.addCustomComputeBudget(l),T.addTipInstruction(m),c===0?await T.buildV0():T.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=Ct,checkCreateATAOwner:p=!0,getEphemeralSigners:f,txVersion:b,feePayer:w}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let g=this.createTxBuilder(w),h={};for(let ae of this.scope.account.tokenAccountRawInfos)(h[ae.accountInfo.mint.toString()]===void 0||me(this.scope.ownerPubKey,ae.accountInfo.mint,Ct).publicKey.equals(ae.pubkey))&&(h[ae.accountInfo.mint.toString()]=ae.pubkey);let A=h[t.lpMint.address];if(A===void 0)throw Error("find lp account error in trade accounts");let P=i.add(s!=null?s:new we(0)),T=t.mintA.address===ve.WSOL.mint.toString(),k=t.mintB.address===ve.WSOL.mint.toString(),{account:S,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ct,mint:new Pe(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(B||{}),S===void 0)throw new Error("base token account not found");let{account:L,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ct,mint:new Pe(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(x||{}),L===void 0)throw new Error("quote token account not found");if(h[t.mintA.address]=S,h[t.mintB.address]=L,a!==void 0&&!(s!=null&&s.isZero())){let ae=Fr[a.programId],Te=rn({programId:new Pe(a.programId),poolId:new Pe(a.id),owner:this.scope.ownerPubKey,version:ae}),Je,mt=await this.scope.connection.getAccountInfo(Te);if(mt&&(Je=Ao(ae).decode(mt.data)),ae!==6&&!Je){let{instruction:De,instructionType:At}=To({id:new Pe(a.id),programId:new Pe(a.programId),version:ae,ledger:Te,owner:this.scope.ownerPubKey});g.addInstruction({instructions:[De],instructionTypes:[At]})}let Oe=[];for(let De of a.rewardInfos){let At=De.mint.address===ve.WSOL.mint.toString();if(h[De.mint.address])Oe.push(h[De.mint.address]);else{let{account:cn,instructionParams:Rt}=await this.scope.account.getOrCreateTokenAccount({mint:new Pe(De.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!At,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});cn||this.logAndCreateError("farm reward account not found:",De.mint.address),Rt&&g.addInstruction(Rt),Oe.push(cn)}}let We=(await this.scope.api.fetchFarmKeysById({ids:a.id}))[0],it={userAuxiliaryLedgers:m,amount:s,owner:this.scope.ownerPubKey,farmInfo:a,farmKeys:We,lpAccount:A,rewardAccounts:Oe},ht=Fr[a.programId],dt=ht===6?xo(it):ht===5?So(it):Bo(it),ze={3:H.FarmV3Withdraw,5:H.FarmV5Withdraw,6:H.FarmV6Withdraw};g.addInstruction({instructions:[dt],instructionTypes:[ze[ht]]})}let M=await this.getAmmPoolKeys(t.id),O=ai({poolInfo:t,poolKeys:M,userKeys:{lpTokenAccount:A,baseTokenAccount:S,quoteTokenAccount:L,owner:this.scope.ownerPubKey},lpAmount:P,baseAmountMin:0,quoteAmountMin:0});g.addInstruction({instructions:[O],instructionTypes:[t.pooltype.includes("StablePool")?H.AmmV5RemoveLiquidity:H.AmmV4RemoveLiquidity],lookupTableAddress:M.lookupTableAccount?[M.lookupTableAccount]:[]});let[v,U]=t.mintA.address===n.mintA.address?[S,L]:[L,S],j=await this.scope.clmm.getClmmPoolKeys(n.id),D=await on.openPositionFromBaseInstructions(te(G({poolInfo:n,poolKeys:j,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:v,tokenAccountB:U},withMetadata:"create"},o),{base:u,getEphemeralSigners:f}));return g.addInstruction({instructions:[...D.instructions],signers:D.signers,instructionTypes:[...D.instructionTypes],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),b===0?g.sizeCheckBuildV0({computeBudgetConfig:c}):g.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:f,computeBudgetConfig:b,txTipConfig:w,feePayer:g}){var U;let h=c.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),A=c.useSOLBalance&&i.mint.equals(pr),P=c.useSOLBalance&&o.mint.equals(pr),T=this.createTxBuilder(g),{account:k,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:A?{payer:h,amount:a}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:l,checkCreateATAOwner:m});T.addInstruction(S||{});let{account:B,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:h,amount:s}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(T.addInstruction(L||{}),k===void 0||B===void 0)throw Error("you don't has some token account");let x=fi({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),M={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:f},{instruction:O,instructionType:v}=ui(te(G({},M),{userWallet:this.scope.ownerPubKey,userCoinVault:k,userPcVault:B,userLpVault:me(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:u,coinAmount:a,pcAmount:s}));return T.addInstruction({instructions:[O],instructionTypes:[v]}),T.addCustomComputeBudget(b),T.addTipInstruction(w),T.versionBuild({txVersion:p,extInfo:{address:M}})}async createMarketAndPoolV4({programId:t=oo,marketProgram:n=io,feeDestinationId:i=so,tokenProgram:o,baseMintInfo:a,quoteMintInfo:s,baseAmount:u,quoteAmount:c,startTime:l,ownerInfo:m,lowestFeeMarket:d,assignSeed:p,associatedOnly:f=!1,checkCreateATAOwner:b=!1,lotSize:w=1,tickSize:g=.01,txVersion:h,computeBudgetConfig:A,txTipConfig:P,feePayer:T}){var ki,hi,Ai;let k=this.scope.ownerPubKey,S=m.feePayer||((ki=this.scope.owner)==null?void 0:ki.publicKey),B=m.useSOLBalance&&a.mint.equals(pr),L=m.useSOLBalance&&s.mint.equals(pr),x=p?`${a.mint.toBase58().slice(0,7)}-${s.mint.toBase58().slice(0,7)}-${p}`:void 0,M=lt({fromPublicKey:k,programId:n,assignSeed:x&&`${x}-market`}),O=lt({fromPublicKey:k,programId:n,assignSeed:x&&`${x}-request`}),v=lt({fromPublicKey:k,programId:n,assignSeed:x&&`${x}-event`}),U=lt({fromPublicKey:k,programId:n,assignSeed:x&&`${x}-bids`}),j=lt({fromPublicKey:k,programId:n,assignSeed:x&&`${x}-asks`}),D=lt({fromPublicKey:k,programId:Ct,assignSeed:x&&`${x}-baseVault`}),ae=lt({fromPublicKey:k,programId:Ct,assignSeed:x&&`${x}-quoteVault`}),Te=0,Je=new we(100);function mt(){let ot=new we(0);for(;;)try{return{vaultOwner:Pe.createProgramAddressSync([M.publicKey.toBuffer(),ot.toArrayLike(Buffer,"le",8)],n),vaultSignerNonce:ot}}catch{if(ot.iaddn(1),ot.gt(new we(25555)))throw Error("find vault owner error")}}let{vaultOwner:Oe,vaultSignerNonce:We}=mt(),it=new we(Math.round(10**a.decimals*w)),ht=new we(Math.round(w*10**s.decimals*g));if(it.eq(Bt))throw Error("lot size is too small");if(ht.eq(Bt))throw Error("tick size or lot size is too small");let dt=await yi({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:n,vaultOwner:Oe,baseMint:a.mint,quoteMint:s.mint,id:M,baseVault:D,quoteVault:ae,requestQueue:O,eventQueue:v,bids:U,asks:j,feeRateBps:Te,quoteDustThreshold:Je,vaultSignerNonce:We,baseLotSize:it,quoteLotSize:ht,lowestFeeMarket:d}}),ze=this.createTxBuilder(T);ze.addInstruction({instructions:dt[0].transaction.instructions,signers:dt[0].signer});for await(let ot of dt.slice(1,dt.length))ze.addInstruction({instructions:ot.transaction.instructions,signers:ot.signer,instructionTypes:ot.instructionTypes});let{account:De,instructionParams:At}=await this.scope.account.getOrCreateTokenAccount({mint:a.mint,owner:this.scope.ownerPubKey,createInfo:B?{payer:S,amount:u}:void 0,notUseTokenAccount:B,skipCloseAccount:!B,associatedOnly:B?!1:f,checkCreateATAOwner:b,assignSeed:B&&x?`${x}-wsol`:void 0});ze.addInstruction(At||{});let{account:cn,instructionParams:Rt}=await this.scope.account.getOrCreateTokenAccount({mint:s.mint,owner:this.scope.ownerPubKey,createInfo:L?{payer:S,amount:c}:void 0,notUseTokenAccount:L,skipCloseAccount:!L,associatedOnly:L?!1:f,checkCreateATAOwner:b,assignSeed:L&&x?`${x}-wsol`:void 0});if(ze.addInstruction(Rt||{}),De===void 0)throw Error("you don't has base token account");if(cn===void 0)throw Error("you don't has quote token account");let Re=fi({version:4,marketVersion:3,marketId:M.publicKey,baseMint:a.mint,quoteMint:s.mint,baseDecimals:a.decimals,quoteDecimals:s.decimals,programId:t,marketProgramId:n}),fr={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:bs,instructionType:ys}=ui(te(G({},fr),{userWallet:this.scope.ownerPubKey,userCoinVault:De,userPcVault:cn,userLpVault:me(this.scope.ownerPubKey,Re.lpMint,o).publicKey,nonce:Re.nonce,openTime:l,coinAmount:u,pcAmount:c}));ze.addInstruction({instructions:[bs],instructionTypes:[ys]});let wi=B||L?[((hi=At==null?void 0:At.instructions)==null?void 0:hi[0])||((Ai=Rt==null?void 0:Rt.instructions)==null?void 0:Ai[0])].filter(ot=>!!ot):void 0;return h===0?ze.sizeCheckBuildV0({computeBudgetConfig:A,splitIns:wi,address:G({requestQueue:O.publicKey,eventQueue:v.publicKey,bids:U.publicKey,asks:j.publicKey,baseVault:D.publicKey,quoteVault:ae.publicKey,baseMint:new Pe(a.mint),quoteMint:new Pe(s.mint)},fr)}):ze.sizeCheckBuild({computeBudgetConfig:A,splitIns:wi,address:G({requestQueue:O.publicKey,eventQueue:v.publicKey,bids:U.publicKey,asks:j.publicKey,baseVault:D.publicKey,quoteVault:ae.publicKey,baseMint:new Pe(a.mint),quoteMint:new Pe(s.mint)},fr)})}async getCreatePoolFee({programId:t}){let n=dr({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Zo.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[f,b]=m,[w,g]=d,h=t.version===4,A;if(h)A=new C(b.toString()).div(10**g).div(new C(f.toString()).div(10**w));else{let v=ts(this.stableLayout.stableModelData,c.toNumber(),l.toNumber(),!1);p==="quote"?A=new C(1e6).div(v*1e6):A=new C(v*1e6).div(1e6)}let P=n,T=new we(0),k=new we(0);if(!P.isZero())if(h){k=wn(P.mul(ei),ur);let v=P.sub(k),U=f.add(v);T=b.mul(v).div(U)}else{k=P.mul(new we(2)).div(new we(1e4));let v=P.sub(k);p==="quote"?T=new we($o(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),v.toNumber())):T=new we(es(this.stableLayout.stableModelData,l.toNumber(),c.toNumber(),v.toNumber()))}let S=new we(new C(T.toString()).mul(1-a).toFixed(0)),B=T,L=S,x=new C(T.toString()).div(new C(P.sub(k).toString()).toFixed(0));!P.isZero()&&!T.isZero()&&(x=new C(T.toString()).div(10**g).div(new C(P.sub(k).toString()).div(10**w)));let M=A.sub(x).div(A).mul(100);return{amountOut:B,minAmountOut:L,currentPrice:A,executionPrice:x,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 C(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[f,b]=d,w=new C(b.toString()).div(10**t[c?"mintB":"mintA"].decimals).div(new C(f.toString()).div(10**t[c?"mintA":"mintB"].decimals));this.logDebug("currentPrice:",`1 ${l.symbol||l.address} \u2248 ${w.toString()} ${m.symbol||m.address}`),this.logDebug("currentPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new C(1).div(w).toString()} ${l.symbol||l.address}`);let g=new we(0),h=n;if(!h.isZero()){h.gt(b)&&(h=b.sub(new we(1)));let L=b.sub(h);g=f.mul(h).div(L).mul(ur).div(ur.sub(ei))}let A=new we(new C(g.toString()).mul(1+a).toFixed(0)),P=g,T=A;this.logDebug("amountIn:",new C(P.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString()),this.logDebug("maxAmountIn:",new C(T.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString());let k=null;!g.isZero()&&!h.isZero()&&(k=new C(h.toString()).div(10**m.decimals).div(new C(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 C(1).div(k).toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`));let S=w.mul(P.toString()),B=S.sub(n.toString()).abs().div(S);return this.logDebug("priceImpact:",`${B.toString()}%`),{amountIn:P,maxAmountIn:T,currentPrice:w,executionPrice:k,priceImpact:B}}async swap({poolInfo:t,poolKeys:n,amountIn:i,amountOut:o,inputMint:a,fixedSide:s,txVersion:u,config:c,computeBudgetConfig:l,txTipConfig:m,feePayer:d}){let p=this.createTxBuilder(d),{associatedOnly:f=!0,inputUseSolBalance:b=!0,outputUseSolBalance:w=!0}=c||{},[g,h]=a===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],A=b&&g.address===Yt.toBase58(),P=w&&h.address===Yt.toBase58(),{account:T,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ct,mint:new Pe(g.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:f});p.addInstruction(k||{}),T||this.logAndCreateError("input token account not found",{token:g.symbol||g.address,tokenAccountIn:T,inputTokenUseSolBalance:A,associatedOnly:f});let{account:S,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ct,mint:new Pe(h.address),owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:f});p.addInstruction(B||{}),S===void 0&&this.logAndCreateError("output token account not found",{token:h.symbol||h.address,tokenAccountOut:S,outputTokenUseSolBalance:P,associatedOnly:f});let L=n||await this.getAmmPoolKeys(t.id),x=4;return t.pooltype.includes("StablePool")&&(x=5),p.addInstruction({instructions:[is({version:x,poolKeys:L,userKeys:{tokenAccountIn:T,tokenAccountOut:S,owner:this.scope.ownerPubKey},amountIn:i,amountOut:o,fixedSide:s})],instructionTypes:[x===4?H.AmmV4SwapBaseIn:H.AmmV5SwapBaseIn]}),p.addCustomComputeBudget(l),p.addTipInstruction(m),p.versionBuild({txVersion:u})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let i=await _t(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=ri.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 _t(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(Nc.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 C(p.toString()).div(new C(10).pow(m.quoteDecimal.toString())).div(new C(d.toString()).div(new C(10).pow(m.baseDecimal.toString())))})}return c}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),i=ms({[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{gi as default};
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=liquidity.mjs.map