UNPKG

raydium-sdk-v2-custody

Version:

An SDK for building applications on top of Raydium.

3 lines 210 kB
var ws=Object.defineProperty,ks=Object.defineProperties;var hs=Object.getOwnPropertyDescriptors;var Nn=Object.getOwnPropertySymbols;var Pi=Object.prototype.hasOwnProperty,Ti=Object.prototype.propertyIsEnumerable;var Ai=(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={}))Pi.call(e,t)&&Ai(r,t,e[t]);if(Nn)for(var t of Nn(e))Ti.call(e,t)&&Ai(r,t,e[t]);return r},te=(r,e)=>ks(r,hs(e));var He=(r,e)=>{var t={};for(var n in r)Pi.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Nn)for(var n of Nn(r))e.indexOf(n)<0&&Ti.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as Pe}from"@solana/web3.js";import{AccountLayout as Bc,NATIVE_MINT as dr,TOKEN_PROGRAM_ID as Nt}from"@solana/spl-token";import{PublicKey as ja}from"@solana/web3.js";import bt from"bn.js";var Yt=9e15,St=1e9,fr="0123456789abcdef",Mn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",vn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",br={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Yt,maxE:Yt,crypto:!1},Ii,pt,j=!0,_n="[DecimalError] ",xt=_n+"Invalid argument: ",Ki=_n+"Precision limit exceeded",Li=_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,Ni=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,et=1e7,Q=7,xs=9007199254740991,Ss=Mn.length-1,yr=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())+Q,n.rounding=1,t=Bs(n,_i(n,t)),n.precision=r,n.rounding=e,q(pt==2||pt==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};K.cubeRoot=K.cbrt=function(){var r,e,t,n,i,o,a,s,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(j=!1,o=l.s*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 j=!0,q(n,r,m.rounding,e)};K.decimalPlaces=K.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Me(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};K.dividedBy=K.div=function(r){return 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=jt(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=jt(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=jt(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()?Je(t,i,o):new t(0):new t(NaN):e.isZero()?Je(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Je(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};K.inverseHyperbolicCosine=K.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,j=!1,t=t.times(t).minus(1).sqrt().plus(t),j=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};K.inverseHyperbolicSine=K.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,j=!1,t=t.times(t).plus(1).sqrt().plus(t),j=!0,n.precision=r,n.rounding=e,t.ln())};K.inverseHyperbolicTangent=K.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?q(new o(i),r,e,!0):(o.precision=t=n-i.e,i=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=Je(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};K.inverseTangent=K.atan=function(){var r,e,t,n,i,o,a,s,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=yr)return a=Je(l,m+4,d).times(.25),a.s=c.s,a}else{if(!c.s)return new l(NaN);if(m+4<=yr)return a=Je(l,m+4,d).times(.5),a.s=c.s,a}for(l.precision=s=m+10,l.rounding=1,t=Math.min(28,s/Q+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(j=!1,e=Math.ceil(s/Q),n=1,u=c.times(c),a=new l(c),i=c;r!==-1;)if(i=i.times(u),o=a.minus(i.div(n+=2)),i=i.times(u),a=o.plus(i.div(n+=2)),a.d[e]!==void 0)for(r=e;a.d[r]===o.d[r]&&r--;);return t&&(a=a.times(2<<t-1)),j=!0,q(a,l.precision=m,l.rounding=d,!0)};K.isFinite=function(){return!!this.d};K.isInteger=K.isInt=function(){return!!this.d&&Me(this.e/Q)>this.d.length-2};K.isNaN=function(){return!this.s};K.isNegative=K.isNeg=function(){return this.s<0};K.isPositive=K.isPos=function(){return this.s>0};K.isZero=function(){return!!this.d&&this.d[0]===0};K.lessThan=K.lt=function(r){return this.cmp(r)<0};K.lessThanOrEqualTo=K.lte=function(r){return this.cmp(r)<1};K.logarithm=K.log=function(r){var e,t,n,i,o,a,s,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(j=!1,s=m+p,a=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 j=!0,q(u,m,d)};K.minus=K.sub=function(r){var e,t,n,i,o,a,s,u,c,l,m,d,p=this,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 j?q(r,s,u):r}if(t=Me(r.e/Q),l=Me(p.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,a=d.length):(e=d,t=l,a=c.length),n=Math.max(Math.ceil(s/Q),a)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,a=d.length,m=n<a,m&&(a=n),n=0;n<a;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),a=c.length,n=d.length-a;n>0;--n)c[a++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=et-1;--c[i],c[n]+=et}c[n]-=d[n]}for(;c[--a]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Vn(c,t),j?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):(j=!1,n.modulo==9?(e=le(t,r.abs(),0,3,1),e.s*=r.s):e=le(t,r,0,n.modulo,1),e=e.times(r),j=!0,t.minus(e))};K.naturalExponential=K.exp=function(){return gr(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)),j?q(r,s,u):r;if(o=Me(m.e/Q),n=Me(r.e/Q),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,a=l.length):(t=l,n=o,a=c.length),o=Math.ceil(s/Q),a=o>a?o+1:a+1,i>a&&(i=a,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(a=c.length,i=l.length,a-i<0&&(i=a,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/et|0,c[i]%=et;for(e&&(c.unshift(e),++n),a=c.length;c[--a]==0;)c.pop();return r.d=c,r.e=Vn(c,n),j?q(r,s,u):r};K.precision=K.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(xt+r);return t.d?(e=Ri(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};K.round=function(){var r=this,e=r.constructor;return q(new e(r),r.e+1,e.rounding)};K.sine=K.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=Ks(n,_i(n,t)),n.precision=r,n.rounding=e,q(pt>2?t.neg():t,r,e,!0)):new n(NaN)};K.squareRoot=K.sqrt=function(){var r,e,t,n,i,o,a=this,s=a.d,u=a.e,c=a.s,l=a.constructor;if(c!==1||!s||!s[0])return new l(!c||c<0&&(!s||s[0])?NaN:s?a:1/0);for(j=!1,c=Math.sqrt(+a),c==0||c==1/0?(e=Le(s),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Me((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(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 j=!0,q(n,u,l.rounding,r)};K.tangent=K.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=le(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,q(pt==2||pt==4?t.neg():t,r,e,!0)):new n(NaN)};K.times=K.mul=function(r){var e,t,n,i,o,a,s,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=Me(l.e/Q)+Me(r.e/Q),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,a=u,u=c,c=a),o=[],a=u+c,n=a;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)s=o[i]+p[n]*d[i-n-1]+e,o[i--]=s%et|0,e=s/et|0;o[i]=(o[i]+e)%et|0}for(;!o[--a];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Vn(o,t),j?q(r,m.precision,m.rounding):r};K.toBinary=function(r,e){return kr(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=Ri(f)-p.e-1,a=o%Q,e.d[0]=Se(10,a<0?Q+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(j=!1,s=new b(Le(f)),l=b.precision,b.precision=o=f.length*Q*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,j=!0,d};K.toHexadecimal=K.toHex=function(r,e){return kr(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]?(j=!1,t=le(t,r,0,e,1).times(r),j=!0,q(t)):(r.s=t.s,t=r),t};K.toNumber=function(){return+this};K.toOctal=function(r,e){return kr(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/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=xs)return i=Mi(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):(j=!1,u.rounding=s.s=1,t=Math.min(12,(e+"").length),i=gr(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(gr(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,j=!0,u.rounding=o,q(i,n,o))};K.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=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=Q-n.length,t&&(o+=Pt(t)),o+=n;a=r[e],n=a+"",t=Q-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+=Q,i=0):(i=Math.ceil((e+1)/Q),e%=Q),o=Se(10,Q-e),s=r[i]%o|0,n==null?e<3?(e==0?s=s/100|0:e==1&&(s=s/10|0),a=t<4&&s==99999||t>3&&s==49999||s==5e4||s==0):a=(t<4&&s+1==o||t>3&&s+1==o/2)&&(r[i+1]/o/100|0)==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]+=fr.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=jt(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,Y=n.d,D=i.d;if(!Y||!Y[0]||!D||!D[0])return new v(!n.s||!i.s||(Y?D&&Y[0]==D[0]:!D)?NaN:Y&&Y[0]==0||!D?U*0:U/0);for(u?(p=1,l=n.e-i.e):(u=et,p=Q,l=Me(n.e/p)-Me(i.e/p)),M=D.length,L=Y.length,g=new v(U),h=g.d=[],m=0;D[m]==(Y[m]||0);m++);if(D[m]>(Y[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+(Y[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),Y=r(Y,d,u),M=D.length,L=Y.length),B=M,A=Y.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++]=Y[B]||0:(A=[Y[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,Ii=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+=Q,a=e,l=m[d=0],u=l/Se(10,i-a-1)%10|0;else if(d=Math.ceil((o+1)/Q),s=m.length,d>=s)if(n){for(;s++<=d;)m.push(0);l=u=0,i=1,o%=Q,a=o-Q+1}else break e;else{for(l=s=m[d],i=1;s>=10;s/=10)i++;o%=Q,a=o-Q+i,u=a<0?0:l/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,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,s=1,d--):(m.length=d+1,s=Se(10,Q-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 j&&(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 Ei(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*=Q;t>=10;t/=10)e++;return e}function En(r,e,t){if(e>Ss)throw j=!0,t&&(r.precision=t),Error(Ki);return q(new r(Mn),e,1,!0)}function Je(r,e,t){if(e>yr)throw Error(Ki);return q(new r(vn),e,t,!0)}function Ri(r){var e=r.length-1,t=e*Q+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Pt(r){for(var e="";r--;)e+="0";return e}function Mi(r,e,t,n){var i,o=new r(1),a=Math.ceil(n/Q+4);for(j=!1;;){if(t%2&&(o=o.times(e),Si(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),Si(e.d,a)}return j=!0,o}function xi(r){return r.d[r.d.length-1]&1}function vi(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 gr(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?(j=!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,j=!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?(j=!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,j=!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,j=!0);else return g.precision=A,u;u=c,i+=2}}function Ei(r){return String(r.s*r.s/0)}function wr(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%Q,t<0&&(n+=Q),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=Q;n<i;)r.d.push(+e.slice(n,n+=Q));e=e.slice(n),n=Q-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),j&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function 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"),Ni.test(e))return wr(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=Mi(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,j=!1,a&&(r=le(r,i,s*4)),u&&(r=r.times(Math.abs(u)<54?Se(2,u):mn.pow(2,u))),j=!0,r)}function Ks(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:jt(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/On(5,t)),e=jt(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 jt(r,e,t,n,i){var o,a,s,u,c=1,l=r.precision,m=Math.ceil(l/Q);for(j=!1,u=t.times(t),s=new r(n);;){if(a=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 j=!0,a.d.length=m+1,a}function On(r,e){for(var t=r;--e;)t*=r;return t}function _i(r,e){var t,n=e.s<0,i=Je(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return pt=n?4:1,e;if(t=e.divToInt(i),t.isZero())pt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return pt=xi(t)?n?2:3:n?4:1,e;pt=xi(t)?n?1:4:n?3:2}return e.minus(i).abs()}function kr(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=Ei(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=Ii),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+=fr.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+=fr.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 Si(r,e){if(r.length>e)return r.length=e,!0}function Ls(r){return new this(r).abs()}function Cs(r){return new this(r).acos()}function Ns(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=Je(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Je(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Je(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(le(r,e,o,1)),e=Je(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(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",-Yt,0,"toExpPos",0,Yt,"maxE",0,Yt,"minE",-Yt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=br[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]=br[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(Li);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 Vi(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,Bi(o)){c.s=o.s,j?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(a=0,s=o;s>=10;s/=10)a++;j?a>i.maxE?(c.e=NaN,c.d=null):a<i.minE?(c.e=0,c.d=[0]):(c.e=a,c.d=[o]):(c.e=a,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return wr(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),Ni.test(o)?wr(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=Vi,i.isDecimal=Bi,i.abs=Ls,i.acos=Cs,i.acosh=Ns,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=zs,i.hypot=Qs,i.ln=Hs,i.log=Ys,i.log10=Zs,i.log2=js,i.max=$s,i.min=Js,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 zs(r){return q(r=new this(r),r.e+1,3)}function Qs(){var r,e,t=new this(0);for(j=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return j=!0,new this(1/0);t=e}return j=!0,t.sqrt()}function Bi(r){return r instanceof mn||r&&r.toStringTag===Ci||!1}function Hs(r){return new this(r).ln()}function Ys(r,e){return new this(r).log(e)}function js(r){return new this(r).log(2)}function Zs(r){return new this(r).log(10)}function $s(){return vi(this,arguments,"lt")}function Js(){return vi(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/Q),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:s[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(s.push(i%1e7),o+=4);o=n/4}else throw Error(Li);else for(;o<n;)s[o++]=Math.random()*1e7|0;for(n=s[--o],r%=Q,n&&r&&(i=Se(10,Q-r),s[o]=(n/i|0)*i);s[o]===0;o--)s.pop();if(o<0)t=0,s=[0];else{for(t=-1;s[0]===0;t-=Q)s.shift();for(n=1,i=s[0];i>=10;i/=10)n++;n<Q&&(t-=Q-n)}return a.e=t,a.d=s,a}function 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(j=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return j=!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=Vi(br);Mn=new mn(Mn);vn=new mn(vn);var N=mn;import Ta from"big.js";import Dn from"bn.js";import{get as Oi,set as fa}from"lodash";var hr=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}},Wi={},ba={};function ue(r){let e=Oi(Wi,r);if(!e){let t=Oi(ba,r);e=new hr({name:r,logLevel:t}),fa(Wi,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 Fi=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>=Fi||r<=-Fi)&&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"),Ar=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.`),Ar.DP=e,Ar.RM=Pa[n]||1,new Ar(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var xa=ue("Raydium_amount"),Di=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=Pr.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 Di.DP=this.token.decimals,new Di(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Ba}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qi}from"@solana/spl-token";var Tr={chainId:101,address:Ba.default.toBase58(),programId:qi.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:qi.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 Ir}from"@solana/web3.js";import{PublicKey as fe,SystemProgram as Gi,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:Gi.programId,isWritable:!1}),I({pubkey:Ia,isWritable:!1})];function xr({publicKey:r,transformSol:e}){let t=Sr(r.toString());if(t instanceof fe)return e&&t.equals($t)?Zt:t;if(e&&t.toString()===$t.toBase58())return Zt;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 Sr(r){try{return new fe(r)}catch{return r}}var qn=new fe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Br=new fe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new fe("SysvarRent111111111111111111111111111111111"),al=new fe("SysvarC1ock11111111111111111111111111111111"),Mt=new fe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ca=new fe("Sysvar1nstructions1111111111111111111111111"),ul=Gi.programId,cl=new fe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ll=new fe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ml=new fe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),dl=new fe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),pl=new fe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),fl=new fe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),bl=new fe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),yl=new fe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),gl=new fe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),wl=new fe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),kl=new fe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Zt=new fe("So11111111111111111111111111111111111111112"),$t=fe.default;function Jt(r){return xr({publicKey:r,transformSol:!0})}var Kr=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:a=!1}){if(e===$t.toBase58()||e instanceof Ir&&$t.equals(e)){this.decimals=ft.decimals,this.symbol=ft.symbol,this.name=ft.name,this.mint=new Ir(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?Ir.default:xr({publicKey:e}),this.isToken2022=a}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ve=Kr;ve.WSOL=new Kr(te(G({},ft),{mint:ft.address}));var Lr=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=Lr;Gn.SOL=new Lr(Tr);import Na from"bn.js";var Ui=new oe(new Na(100)),Ye=class extends oe{toSignificant(e=5,t,n){return this.mul(Ui).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ui).toFixed(e,t,n)}};var Ra=ue("Raydium_price"),je=class extends oe{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:a}=t;super(o,a);this.baseToken=n,this.quoteToken=i,this.scalar=new oe(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 je({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 je({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};import{PublicKey as Ma}from"@solana/web3.js";import va from"bn.js";function Xi(r){return typeof r=="object"&&r!==null&&![ve,ke,Ma,oe,va,je,Ye].some(e=>typeof e=="object"&&r instanceof e)}function vt(r){return typeof r=="string"?Sr(r):Array.isArray(r)?r.map(e=>vt(e)):Xi(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,vt(t)])):r}var Bt=new bt(0),zi=new bt(1),fm=new bt(2),bm=new bt(3),ym=new bt(5),Pr=new bt(10),gm=new bt(100),wm=new bt(1e3),km=new bt(1e4);function Cr(r){return Pr.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 Nr(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as Da}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qa}from"@solana/spl-token";import{ComputeBudgetProgram as Qi,Keypair as Yi,PublicKey as Ea,Transaction as ji,TransactionMessage as _a,VersionedTransaction as Zi}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",CustodyInitializeUser:"CustodyInitializeUser",CustodyDeposit:"CustodyDeposit",CustodyWithdraw:"CustodyWithdraw",CustodyOpenPosition:"CustodyOpenPosition",CustodyClosePosition:"CustodyClosePosition",CustodyIncreasePosition:"CustodyIncreasePosition",CustodyDecreasePosition:"CustodyDecreasePosition",CustodySwapBaseIn:"CustodySwapBaseIn",CustodySwapBaseOut:"CustodySwapBaseOut",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 Hi=ue("Raydium_txUtil"),$i=1644;function Xn(r){let e=[],t=[];return r.microLamports&&(e.push(Qi.setComputeUnitPrice({microLamports:r.microLamports})),t.push(H.SetComputeUnitPrice)),r.units&&(e.push(Qi.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 zn(r,e){return r.getSignatureStatuses([e]),new Promise((t,n)=>{let i=setTimeout(n,6e4);r.onSignature(e,o=>{if(clearTimeout(i),!o.err){t("");return}n(Object.assign(o.err,{txId:e}))},"confirmed")})}function Oa(r,e){r.length<1&&Hi.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Hi.logWithError(`no signers provided:, ${e.toString()}`);let t=new ji;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=Yi.generate().publicKey.toString()}){let o=new _a({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Zi(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 Zi&&(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 ji&&(t.recentBlockhash||(t.recentBlockhash=Va.toBase58()),t.feePayer||(t.feePayer=Yi.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 $}from"@solana/web3.js";var Ji=new $("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),eo=new $("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),to=new $("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),no=new $("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Fm=new $("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ro=new $("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Dm=new $("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),io=new $("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),qm=new $("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Gm=new $("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Um=new $("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Xm=new $("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),zm=new $("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Qm=new $("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),oo=new $("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Hm=new $("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Ym=new $("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),jm=new $("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Zm=new $("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),$m=new $("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Jm=new $("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ed=new $("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ga=new $("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Ua=new $("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Xa=new $("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),td=new $("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),za=new $("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),nd=new $("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Qa=new $("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var rd={SERUM_MARKET:$.default,OPENBOOK_MARKET:new $("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:$.default,FarmV3:new $("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new $("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new $("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new $("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new $("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new $("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new $("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new $("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new $("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Ga,CREATE_CPMM_POOL_AUTH:Ua,CREATE_CPMM_POOL_FEE_ACC:Xa,FEE_DESTINATION_ID:new $("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:za,LCOK_CPMM_AUTH:Qa};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 so,AddressLookupTableAccount as Qn}from"@solana/web3.js";async function Rr({connection:r,address:e}){let t=await yt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new so(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],a=e[i];if(!o)continue;let s=new Qn({key:a,state:Qn.deserialize(o.data)});n[a.toString()]=s,Hn[a.toString()]=s}return n}var Hn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Qn({key:new so("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Qn.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};import{PublicKey as tn,sendAndConfirmTransaction as Mr,SystemProgram as Ha,Transaction as kn,TransactionMessage as hn,VersionedTransaction as An}from"@solana/web3.js";import Ya from"axios";var Yn=2e3,jn=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(Ha.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 c;let{recentBlockHash:o,skipPreflight:a=!0,sendAndConfirm:s}=i||{},u=o!=null?o:await en(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),Et([t]),(c=this.owner)!=null&&c.isKeyPair)return{txId:s?await Mr(this.connection,t,this.signers.find(m=>m.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:a}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:a}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);if(this.signers.length)for(let m of l)try{m.sign(...this.signers)}catch{}return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:a}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var c;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(l=>l.transaction.instructions.length>0),a=[i,...o.map(l=>l.transaction)],s=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&s.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:a,signers:s,instructionTypes:u,execute:async l=>{var g;let{sequentially:m,onTxUpdate:d,skipTxCount:p=0,recentBlockHash: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 Mr(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)}},Yn)),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 Rr({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 A;let{skipPreflight:g=!0,sendAndConfirm:h}=w||{};if(Et([p]),(A=this.owner)!=null&&A.isKeyPair){let P=await this.connection.sendTransaction(p,{skipPreflight:g});return h&&await zn(this.connection,P),{txId:P,signedTx:p}}if(this.signAllTransactions){let P=await this.signAllTransactions([p]);if(this.signers.length)for(let T of P)try{T.sign(this.signers)}catch{}return{txId:await this.connection.sendTransaction(P[0],{skipPreflight:g}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}async buildV0MultiTx(e){var c;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(l=>l.builder.instructions.length>0),a=[i,...o.map(l=>l.transaction)],s=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&s.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),a.forEach(async(l,m)=>{l.sign(s[m])}),{builder:this,transactions:a,signers:s,instructionTypes:u,buildProps:n,execute:async l=>{var 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 zn(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)}},Yn)),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 Mr(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=Y=>{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=Y.err?"error":"success"}b==null||b([...B]),Y.err||L()};this.loopMultiTxStatus&&(O=setInterval(async()=>{var Y;if(M){clearInterval(O);return}try{let D=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});D&&(M=!0,clearInterval(O),U({err:((Y=D.meta)==null?void 0:Y.err)||null}),console.log("tx status from getTransaction:",x))}catch(D){M=!0,clearInterval(O),console.error("getTransaction timeout:",D,x)}},Yn)),v=this.connection.onSignature(x,Y=>{if(M){this.connection.removeSignatureListener(v);return}M=!0,U(Y)},"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 Rr({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)}),{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 zn(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=[],Y=async()=>{if(!O[v])return;if(v<S){U.push({txId:"",status:"success",signedTx:O[v]}),k==null||k([...U]),v++,Y();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,$e=null,mt=Oe=>{Te!==null&&clearInterval(Te),$e!==null&&this.connection.removeSignatureListener($e);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||Y()};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)}},Yn)),$e=this.connection.onSignature(D,Oe=>{if(ae){this.connection.removeSignatureListener($e);return}ae=!0,mt(Oe)},"confirmed"),this.connection.getSignatureStatus(D)};return Y(),{txIds:[],signedTxs:O}}else{let v=[];for(let U=0;U<O.length;U+=1){let Y=await this.connection.sendTransaction(O[U],{skipPreflight:L});v.push(Y)}return{txIds:v,signedTxs:O}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};import{MINT_SIZE as Hd,TOKEN_PROGRAM_ID as Yd,getTransferFeeConfig as jd,unpackMint as Zd}from"@solana/spl-token";var vr=ue("Raydium_accountInfo_util");async function yt(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}=G({batchRequest:!1},t),a=Nr(e,o),s=new Array(a.length).fill([]);if(n){let u=a.map(m=>{let d=r._buildArgs([m.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=Nr(u,10);s=(await(await Promise.all(c.map(async m=>await r._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&vr.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"&&vr.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:f,lamports:b,owner:new ja(w),rentEpoch:g}}return null})))}else try{s=await Promise.all(a.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&vr.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 au}from"@solana/web3.js";import mo,{isBN as po}from"bn.js";import{bits as Za,BitStructure as ep,blob as $a,Blob as tp,cstr as np,f32 as rp,f32be as ip,f64 as op,f64be as sp,greedy as ap,Layout as Ja,ns64 as up,ns64be as cp,nu64 as lp,nu64be as mp,offset as dp,s16 as pp,s16be as fp,s24 as bp,s24be as yp,s32 as eu,s32be as gp,s40 as wp,s40be as kp,s48 as hp,s48be as Ap,s8 as Pp,seq as tu,struct as Tp,Structure as nu,u16 as ru,u16be as xp,u24 as Sp,u24be as Bp,u32 as iu,u32be as Ip,u40 as Kp,u40be as Lp,u48 as Cp,u48be as Np,u8 as ou,UInt as su,union as Rp,Union as Mp,unionLayoutDiscriminator as vp,utf8 as Ep}from"@solana/buffer-layout";var Zn=Ja,uo=nu;var Er=su;var co=ou,Vt=ru;var _r=iu;var de=eu;var lo=tu;var xe=$a;var Vr=Za;var Ot=class extends Zn{constructor(t,n,i){super(t,i);this.blob=xe(t),this.signed=n}decode(t,n=0){let i=new mo(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 mo(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},$n=class extends Zn{constructor(t){super(8,t);this._lower=Vr(_r(),!1),this._upper=Vr(_r(),!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 Er(1,r)}function Ee(r){return new Er(4,r)}function y(r){return new Ot(8,!1,r)}function X(r){return new Ot(16,!1,r)}function fo(r){return new Ot(1,!0,r)}function nn(r){return new Ot(8,!0,r)}function bo(r){return new Ot(16,!0,r)}var Jn=class extends Zn{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 C(r){return new Jn(xe(32),e=>new au(e),e=>e.toBuffer(),r)}function Be(r){return new Jn(co(),uu,cu,r)}function uu(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function cu(r){return r?1:0}var Or=class extends uo{decode(e,t){return super.decode(e,t)}};function E(r,e,t){return new Or(r,e,t)}function z(r,e,t){let n,i=typeof e=="number"?e:po(e)?e.toNumber():new Proxy(e,{get(o,a){if(!n){let s=Reflect.get(o,"count");n=po(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 lo(r,i,t)}import{PublicKey as yo}from"@solana/web3.js";var $p=ue("Raydium_farm_config"),Jp=new yo("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ef=new yo("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var go={3:Fr,5:wo,6:ko};var er={"Standard SPL":0,"Option tokens":1},Wr={[Ji.toString()]:3,[eo.toString()]:4,[to.toString()]:5,[no.toString()]:6};var Dr=E([W("instruction")]),pu=E([W("instruction")]),fu=E([y("rewardState"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardLastUpdateTime"),y("totalReward"),y("totalRewardEmissioned"),y("rewardClaimed"),y("rewardPerSecond"),X("accRewardPerShare"),C("rewardVault"),C("rewardMint"),C("rewardSender"),y("rewardType"),z(y(),15,"padding")]),bu=E([y("state"),y("nonce"),C("lpVault"),C("rewardVault"),C(),C(),y(),y(),y("totalReward"),X("perShareReward"),y("lastSlot"),y("perSlotReward")]),yu=E([y("state"),y("nonce"),C("lpVault"),C("rewardVaultA"),y("totalRewardA"),X("perShareRewardA"),y("perSlotRewardA"),W("option"),C("rewardVaultB"),xe(7),y("totalRewardB"),X("perShareRewardB"),y("perSlotRewardB"),y("lastSlot"),C()]),gu=E([y(),y("state"),y("nonce"),y("validRewardTokenNum"),X("rewardMultiplier"),y("rewardPeriodMax"),y("rewardPeriodMin"),y("rewardPeriodExtend"),C("lpMint"),C("lpVault"),z(fu,5,"rewardInfos"),C("creator"),C(),z(y(),32,"padding")]),lu=new Proxy(bu,{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)}}),mu=new Proxy(yu,{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)}}),du=new Proxy(gu,{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)}}),wu=E([y("isSet"),y("rewardPerSecond"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardType")]),ku=E([W("instruction"),y("nonce"),z(wu,5,"rewardTimeInfo")]),hu=E([W("instruction"),y("rewardReopenTime"),y("rewardEndTime"),y("rewardPerSecond")]),Au=E([W("instruction"),y("isSet"),y("rewardPerSecond"),y("rewardOpenTime"),y("rewardEndTime"),y("rewardType")]),uf=E([y("state"),C("id"),C("owner"),y("deposited"),z(y(),1,"rewardDebts")]),Fr=E([y("state"),C("id"),C("owner"),y("deposited"),z(X(),1,"rewardDebts"),y(""),y("voteLockedBalance"),z(y(),15)]),cf=E([y("state"),C("id"),C("owner"),y("deposited"),z(y(),2,"rewardDebts")]),wo=E([y("state"),C("id"),C("owner"),y("deposited"),z(X(),2,"rewardDebts"),z(y(),17)]),ko=E([y(),y("state"),C("id"),C("owner"),y("deposited"),z(X(),5,"rewardDebts"),z(y(),16)]),Wt=E([W("instruction"),y("amount")]),Pu=E([C("mint"),C("grantAuthority"),y("baselineVoteWeightScaledFactor"),y("maxExtraLockupVoteWeightScaledFactor"),y("lockupSaturationSecs"),fo("digitShift"),z(W(),7,"reserved1"),z(y(),7,"reserved2")]),Tu=E([xe(8),C("governanceProgramId"),C("realm"),C("realmGoverningTokenMint"),C("realmAuthority"),z(W(),32,"reserved1"),z(Pu,4,"votingMints"),nn("timeOffset"),W("bump"),z(W(),7,"reserved2"),z(y(),11,"reserved3")]),xu=E([nn("startTime"),nn("endTime"),W("kind"),z(W(),15,"reserved")]),Su=E([z(xu,1,"lockup"),y("amountDeposited_native"),y("amountInitiallyLockedNative"),Be("isUsed"),Be("allowClawback"),W("votingMintConfigIdx"),z(W(),29,"reserved")]),Bu=E([xe(8),C("voterAuthority"),C("registrar"),z(Su,32,"deposits"),W("voterBump"),W("voterWweightRecordBump"),z(W(),94,"reserved")]);import gf from"bn.js";var qr=E([C("mint"),C("owner"),y("amount"),Ee("delegateOption"),C("delegate"),W("state"),Ee("isNativeOption"),y("isNative"),y("delegatedAmount"),Ee("closeAuthorityOption"),C("closeAuthority")]);var Iu=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 ho(r){let e=go[r];return e||Iu.logWithError("invalid version",r),e}import{PublicKey as _e,SystemProgram as Ku,SYSVAR_CLOCK_PUBKEY as Ao,SYSVAR_RENT_PUBKEY as Lu,TransactionInstruction as tr}from"@solana/web3.js";import Gf from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Xf,createAssociatedTokenAccountInstruction as zf,TOKEN_PROGRAM_ID as Gr}from"@solana/spl-token";var Cu=ue("Raydium_farm_instruction"),rb={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 Po(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,a={3:9,5:10}[e];a||Cu.logWithError(`invalid farm pool version: ${e}`);let s=Buffer.alloc(Dr.span);Dr.encode({instruction:a},s);let u=[I({pubkey:t}),I({pubkey:n}),I({pubkey:o,isWritable:!1}),I({pubkey:Ku.programId,isWritable:!1}),I({pubkey:Lu,isWritable:!1})];return{instruction:new tr({programId:i,keys:u,data:s}),instructionType:H.FarmV3CreateLedger}}function To(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 tr({programId:s,keys:m,data:l})}function xo(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:a,userAuxiliaryLedgers:s}=r,[u,c]=[new _e(e.programId),new _e(e.id)],l=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:Ao,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 tr({programId:u,keys:d,data:m})}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: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:Ao,isWritable:!1}),I({pubkey:Gr,isWritable:!1})];if(s)for(let p of s)d.push(I({pubkey:p}));return new tr({programId:u,keys:d,data:m})}import{Keypair as or,PublicKey as R,SystemProgram as kt,TransactionInstruction as Ne}from"@solana/web3.js";import $r 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 Fu from"bn.js";import Ze from"bn.js";var be=new Ze(0),at=new Ze(1),gt=new Ze(-1),Ge=new Ze(1).shln(64),nr=new Ze(1).shln(128),Ur=Ge.sub(at),Pn=64,Bo=nr.subn(1),Ve=-443636,Fe=-Ve,Ft=new Ze("4295048016"),Dt=new Ze("79226673521066979257578248091"),pb=new Ze("4295048017"),fb=new Ze("79226673521066979257578248090"),Io=16,Ko="59543866431248",Lo="184467440737095516",Co="15793534762490258745",rr=new Ze(10).pow(new Ze(6));var bb=new Ze("18446744073700000000");import ee from"bn.js";function ir(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 zr(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 No(r,e){return Tn(r,e)?null:Xr(r,e)}function Ro(r,e){return Tn(r,e)?null:zr(r,e)}var Ab=Buffer.from("amm_config","utf8"),Nu=Buffer.from("pool","utf8"),Ru=Buffer.from("pool_vault","utf8"),Mu=Buffer.from("pool_reward_vault","utf8"),Mo=Buffer.from("position","utf8"),vu=Buffer.from("tick_array","utf8"),Eu=Buffer.from("operation","utf8"),_u=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Vu=Buffer.from("observation","utf8");function vo(r,e,t,n){return ye([Nu,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Qr(r,e,t){return ye([Ru,e.toBuffer(),t.toBuffer()],r)}function Eo(r,e,t){return ye([Mu,e.toBuffer(),t.toBuffer()],r)}function se(r,e,t){return ye([vu,e.toBuffer(),ir(t)],r)}function Kt(r,e,t,n){return ye([Mo,e.toBuffer(),ir(t),ir(n)],r)}function Ue(r,e){return ye([Mo,e.toBuffer()],r)}function xn(r){return ye([Buffer.from("metadata","utf8"),Mt.toBuffer(),r.toBuffer()],Mt)}function Hr(r){return ye([Eu],r)}function Ce(r,e){return ye([_u,e.toBuffer()],r)}function _o(r,e){return ye([Vu,e.toBuffer()],r)}var Vo=Buffer.from("locked_position","utf8");function Yr(r,e){return ye([Vo,e.toBuffer()],r)}function Oo(r,e){return ye([Vo,e.toBuffer()],r)}var Pb=Buffer.from("support_mint","utf8");var Tb=Buffer.from("user_state","utf8");import{PublicKey as Xe}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Wo}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=J.wrappingSubU128(J.wrappingSubU128(e.feeGrowthGlobalX64A,i),a),c=J.wrappingSubU128(J.wrappingSubU128(e.feeGrowthGlobalX64B,o),s);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:a}=this.getfeeGrowthInside(e,n,i),s=J.mulDivFloor(J.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ge),u=t.tokenFeesOwedA.add(s),c=J.mulDivFloor(J.wrappingSubU128(a,t.feeGrowthInsideLastX64B),t.liquidity,Ge),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:a}=this.getfeeGrowthInside(e,n,i),s=J.mulDivFloor(J.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ge),u=t.tokenFeesOwedA.add(s),c=J.mulDivFloor(J.wrappingSubU128(a,t.feeGrowthInsideLastX64B),t.liquidity,Ge),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],a=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let s=0;s<a.length;s++){let u=a[s],c=t.rewardInfos[s],l=J.wrappingSubU128(u,c.growthInsideLastX64),m=J.mulDivFloor(l,t.liquidity,Ge),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],a=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let s=0;s<a.length;s++){let u=a[s],c=t.rewardInfos[s],l=J.wrappingSubU128(u,c.growthInsideLastX64),m=J.mulDivFloor(l,t.liquidity,Ge),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let a=0;a<i.length;a++){let s=new 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(J.wrappingSubU128(J.wrappingSubU128(i[a].rewardGrowthGlobalX64,s),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let a=0;a<i.length;a++){let s=new 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(J.wrappingSubU128(J.wrappingSubU128(i[a].rewardGrowthGlobalX64,s),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:a}){var w,g,h,A;let s=Z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=Z.getSqrtPriceX64FromTick(t.tickLower),c=Z.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ie.getAmountsFromLiquidity(s,u,c,n,o),[d,p]=[he(m.amountA,(w=e.mintA.extensions)==null?void 0:w.feeConfig,a,!0),he(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,a,!0)],[f,b]=[he(new ut(new N(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,!0),he(new ut(new N(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:f,amountSlippageB:b,expirationTime:It(d.expirationTime,p.expirationTime)}}};var Ou=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(Ou/2));for(let p=0;p<l.length;p++){let{publicKey:f}=se(t,n,l[p]);u.push(f)}let m=(await yt(e,u)).map(p=>p!==null?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 jr=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=No(1024,l);if(m!==null){let d=(c-m-512)*s;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Ro(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:zr(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:J.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Xe(d)});if(p.tokenMint.equals(Xe.default))continue;if(n<=p.openTime.toNumber()||i.eq(be)){a.push(p);continue}let f=new pe(Math.min(p.endTime.toNumber(),n)),b=f.sub(p.lastUpdateTime),w=J.mulDivFloor(b,p.emissionsPerSecondX64,i),g=p.rewardGrowthGlobalX64.add(w),h=J.mulDivFloor(b,p.emissionsPerSecondX64,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()]=qo.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=Do.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 N(0),catchLiquidityInsufficient:u=!1}){var O;let c,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];s.equals(new N(0))?c=l?Ft.add(new pe(1)):Dt.sub(new pe(1)):c=Z.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=Z.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),T=l?P:new N(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 N(1).div(e.currentPrice),L=new N(T).sub(B).abs(),x=B,M=new Ye(new N(L).mul(10**15).toFixed(0),new N(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===Wo.toBase58()})),new ve(te(G({},l),{mint:l.address,isToken2022:l.programId===Wo.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 je({baseToken:m,denominator:new pe(10).pow(new pe(20+m.decimals)),quoteToken:d,numerator:h.mul(new N(10**(20+d.decimals))).toFixed(0)}),O=new je({baseToken:m,denominator:new pe(10).pow(new pe(20+m.decimals)),quoteToken:d,numerator:A.mul(new N(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 N(0)}){var x;let u=n.toBase58()===e.mintA.address,c={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;s.equals(new N(0))?l=u?Dt.sub(new pe(1)):Ft.add(new pe(1)):l=Z.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let m=he(o,c[n.toString()],i,!0),{expectedAmountIn:d,remainingAccounts:p,executionPrice: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=Z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=u?h:new N(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 N(1).div(e.currentPrice),S=new N(A).sub(k).abs(),B=k,L=new Ye(new N(S).mul(10**15).toFixed(0),new N(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[Jt(e.mintA.address).toString()],d=i[Jt(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=Z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),w=Z.getSqrtPriceX64FromTick(a),g=Z.getSqrtPriceX64FromTick(s),{amountSlippageA:h,amountSlippageB:A}=ie.getAmountsFromLiquidityWithSlippage(b,w,g,t,!1,!1,0),{amountSlippageA:P,amountSlippageB:T}=ie.getAmountsFromLiquidityWithSlippage(b,w,g,o,!1,!1,0),k=new N(h.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(A.toString()).div(new N(10).pow(f)).mul(d.value)),S=new N(P.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(T.toString()).div(new N(10).pow(f)).mul(d.value)),B=new N(1).div(k.add(S)),x=new N(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,Y=i[v.mint.address];return u<((D=v.startTime)!=null?D:0)||u>((ae=v.endTime)!=null?ae:0)||!v.perSecond||!Y||U===void 0?0:new N(Y.value).mul(new N(v.perSecond).mul(M)).div(new N(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=Z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=Z.getSqrtPriceX64FromTick(n),d=Z.getSqrtPriceX64FromTick(i),p=he(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new pe(new N(p.amount.sub((h=p.fee)!=null?h:be).toString()).toFixed(0)),b;if(l.lte(m))b=t?ie.getLiquidityFromTokenAmountA(m,d,f,!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=Z.getSqrtPriceX64FromTick(n),c=Z.getSqrtPriceX64FromTick(i),l=s?1+a:1-a,m=ie.getAmountsFromLiquidity(Z.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,s),[d,p]=[he(m.amountA,(w=t.mintA.extensions)==null?void 0:w.feeConfig,e,!0),he(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[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()]=Fo.decode(u.data))});let a=t.map(u=>Ce(new Xe(u.programId),new Xe(u.id)).publicKey),s=await Ae.fetchExBitmaps({connection:e,exBitmapAddress:a,batchRequest:!1});return t.reduce((u,c)=>te(G({},u),{[c.id]:te(G({},n[c.id]),{id:new Xe(c.id),version:6,programId:new Xe(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:te(G({},c.config),{id:new Xe(c.config.id),fundOwner:""}),currentPrice:new N(c.price),exBitmapAccount:Ce(new Xe(c.programId),new Xe(c.id)).publicKey,exBitmapInfo:s[Ce(new Xe(c.programId),new Xe(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber(),rewardInfos:n[c.id].rewardInfos})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var J=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(be)||(o=o.add(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 N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ee(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(nr).sub(t).mod(nr)}};function Ke(r,e){return Zr(r.mul(e),64,256)}function Wu(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Zr(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var Z=class{static sqrtPriceX64ToPrice(e,t,n){return J.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return J.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(be))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(be))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(be))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(be))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(be))return e;let o=t.shln(Pn);if(i){let a=o,s=o.add(n.mul(e));return s.gte(a)?J.mulDivCeil(a,e,s):J.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 J.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=J.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=Bo.div(n)),n}static getTickFromPrice(e,t,n){return Z.getTickFromSqrtPriceX64(Z.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=Wu(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<Io;){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(Ko)),d=Zr(m.sub(new ee(Lo)),64,128).toNumber(),p=Zr(m.add(new ee(Co)),64,128).toNumber();return d==p?d:Z.getSqrtPriceX64FromTick(p).lte(e)?p:d}},Ut=class{static getTickWithPriceAndTickspacing(e,t,n,i){let a=Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,n,i))/t;return a<0?a=Math.floor(a):a=Math.ceil(a),a*t}static roundPriceWithTickspacing(e,t,n,i){let o=Ut.getTickWithPriceAndTickspacing(e,t,n,i),a=Z.getSqrtPriceX64FromTick(o);return Z.sqrtPriceX64ToPrice(a,n,i)}},ie=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(be))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Pn),a=t.sub(e);return i?J.mulDivRoundingUp(J.mulDivCeil(o,a,t),at,e):J.mulDivFloor(o,a,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(be))throw new Error("sqrtPriceX64A must greater than 0");return i?J.mulDivCeil(n,t.sub(e),Ge):J.mulDivFloor(n,t.sub(e),Ge)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),a=t.sub(e),s=o.div(a);return i?J.mulDivRoundingUp(s,at,Ur):s.shrn(Pn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),J.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 N(u.toString()).mul(l).toFixed(0)),d=new ee(new N(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:a,epochInfo:s,amountAddFee:u}){var h,A,P,T;let c=Z.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=Z.getSqrtPriceX64FromTick(t),m=Z.getSqrtPriceX64FromTick(n),d=a?1+o:1-o,p=ie.getAmountsFromLiquidity(c,l,m,i,a),[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 N(p.amountA.toString()).mul(d).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,u),he(new ee(new N(p.amountB.toString()).mul(d).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,s,u)];return{liquidity:i,amountA: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=Z.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=Z.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=J.mulDivFloor(i,rr.sub(new ee(o.toString())),rr);s.amountIn=a?ie.getTokenAmountAFromLiquidity(t,e,n,!0):ie.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ie.getTokenAmountBFromLiquidity(t,e,n,!1):ie.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(gt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromOutput(e,n,i.mul(gt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ie.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ie.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ie.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ie.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(gt))&&(s.amountOut=i.mul(gt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=J.mulDivCeil(s.amountIn,new ee(o),rr.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 Fu(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=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new N(1).div(t),o=Ut.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),a=Z.getSqrtPriceX64FromTick(o),s=Z.sqrtPriceX64ToPrice(a,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:s}:{tick:o,price:new N(1).div(s)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new N(1).div(t),o=Ut.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),a=Z.getSqrtPriceX64FromTick(o),s=Z.sqrtPriceX64ToPrice(a,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:s}:{tick:o,price:new N(1).div(s)}}};var Ny=E([xe(8),W("bump"),Vt("index"),C(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),Vt("tickSpacing"),z(y(),8,"")]),Du=E([Ee("blockTimestamp"),nn("tickCumulative"),z(y(),4)]),Go=E([xe(8),Be("initialized"),y("recentEpoch"),Vt("observationIndex"),C("poolId"),z(Du,100,"observations"),z(y(),4)]),qu=E([W("rewardState"),y("openTime"),y("endTime"),y("lastUpdateTime"),X("emissionsPerSecondX64"),y("rewardTotalEmissioned"),y("rewardClaimed"),C("tokenMint"),C("tokenVault"),C("creator"),X("rewardGrowthGlobalX64")]),Fo=E([xe(8),W("bump"),C("ammConfig"),C("creator"),C("mintA"),C("mintB"),C("vaultA"),C("vaultB"),C("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"),z(W(),7,""),z(qu,3,"rewardInfos"),z(y(),16,"tickArrayBitmap"),y("totalFeesTokenA"),y("totalFeesClaimedTokenA"),y("totalFeesTokenB"),y("totalFeesClaimedTokenB"),y("fundFeesTokenA"),y("fundFeesTokenB"),y("startTime"),z(y(),15*4-3,"padding")]),Gu=E([X("growthInsideLastX64"),y("rewardAmountOwed")]),Do=E([xe(8),W("bump"),C("nftMint"),C("poolId"),de("tickLower"),de("tickUpper"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),z(Gu,3,"rewardInfos"),z(y(),8,"")]),Ry=E([xe(8),W("bump"),C("poolId"),de("tickLowerIndex"),de("tickUpperIndex"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),y("tokenFeesOwedA"),y("tokenFeesOwedB"),z(X(),3,"rewardGrowthInside"),z(y(),8,"")]),Uu=E([de("tick"),bo("liquidityNet"),X("liquidityGross"),X("feeGrowthOutsideX64A"),X("feeGrowthOutsideX64B"),z(X(),3,"rewardGrowthsOutsideX64"),z(Ee(),13,"")]),Bn=E([xe(8),C("poolId"),de("startTickIndex"),z(Uu,Ie,"ticks"),W("initializedTickCount"),z(W(),115,"")]),My=E([xe(329),z(C(),100,"whitelistMints")]),qo=E([xe(8),C("poolId"),z(z(y(),8),jr,"positiveTickArrayBitmap"),z(z(y(),8),jr,"negativeTickArrayBitmap")]),vy=E([y(),W("bump"),C("owner"),C("poolId"),C("positionId"),C("nftAccount"),z(y(),8)]),Ey=E([xe(8),W("bump"),C("lockOwner"),C("poolId"),C("positionId"),C("nftAccount"),C("lockNftMint"),y("recentEpoch"),z(y(),8)]);Go.span;var Uo=ue("Raydium_Clmm"),ze={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],openPositionWithTokenEx:[77,255,174,82,125,29,201,46],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Xo=[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([...ze.createPool,...g]);return new Ne({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}=vo(t,a,c,l),{publicKey:d}=_o(t,m),{publicKey:p}=Qr(t,m,c),{publicKey:f}=Qr(t,m,l),b=Ce(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 Y=Buffer.from([...ze.openPosition,...U]);return new Ne({keys:v,programId:e,data:Y})}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([...ze.openPositionWithTokenEx,...v]);return new Ne({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=or.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])?Ce(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])?Ce(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=or.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])?Ce(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])?Ce(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 $r(0),amountMaxA:S==="MintA"?B:L,amountMaxB:S==="MintA"?L:B,withMetadata:k==="create",baseFlag:S==="MintA",optionBaseFlag:1},U);let Y=Buffer.from([...ze.openPosition,...U]);return new Ne({keys:v,programId:e,data:Y})}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 $r(0),amountMaxA:k==="MintA"?S:B,amountMaxB:k==="MintA"?B:S,withMetadata:T==="create",baseFlag:k==="MintA",optionBaseFlag:1},v);let U=Buffer.from([...ze.openPositionWithTokenEx,...v]);return new Ne({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=or.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])?Ce(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])?Ce(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([...ze.closePosition,...c]);return new Ne({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([...ze.increaseLiquidity,...k]);return new Ne({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])?Ce(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])?Ce(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 $r(0),amountMaxA:b==="MintA"?w:g,amountMaxB:b==="MintA"?g:w,baseFlag:b==="MintA",optionBaseFlag:1},k);let S=Buffer.from([...ze.increaseLiquidity,...k]);return new Ne({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([...ze.decreaseLiquidity,...S]);return new Ne({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])?Ce(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([...ze.swap,...T]);return new Ne({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,Ce(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,Ce(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([...ze.initReward,...b]);return new Ne({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=Eo(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([...ze.setRewardEmissions,...b]);return new Ne({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)&&Uo.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([...ze.collectReward,...l]);return new Ne({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)&&Uo.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=or.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=Oo(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([...Xo,...h]);return new Ne({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:Yr(e,s).publicKey,isSigner:!1,isWritable:!0},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:kt.programId,isSigner:!1,isWritable:!1}];return new Ne({keys:u,programId:e,data:Buffer.from(Xo)})}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:Yr(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:Br,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 Ne({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:Br,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:A,isSigner:!1,isWritable:!1},...k];return new Ne({keys:S,programId:e,data:Buffer.from(zo)})}};var Jr=(...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 jn({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(Jr(e))}logInfo(...e){this.logger.info(Jr(e))}logAndCreateError(...e){let t=Jr(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var rg=E([Ee("mintAuthorityOption"),C("mintAuthority"),y("supply"),W("decimals"),W("isInitialized"),Ee("freezeAuthorityOption"),C("freezeAuthority")]);import{PublicKey as ag}from"@solana/web3.js";import{MintLayout as cg,TOKEN_PROGRAM_ID as mg}from"@solana/spl-token";var Qo=r=>new ve({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name});var sr=i=>{var o=i,{address:r,programId:e,decimals:t}=o,n=He(o,["address","programId","decimals"]);return G({chainId:101,address:Jt(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import Ho from"bn.js";var ei=new Ho(25),ar=new Ho(1e4);import{PublicKey as ct,SystemProgram as ic,SYSVAR_RENT_PUBKEY as vg,TransactionInstruction as un}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as oc,TOKEN_PROGRAM_ID as Cn}from"@solana/spl-token";var ti=E([W("instruction"),y("amountIn"),y("minAmountOut")]),ni=E([W("instruction"),y("maxAmountIn"),y("amountOut")]),Bg=E([W("instruction"),W("nonce")]),Xu=E([W("instruction"),W("nonce"),y("startTime")]),Yo=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"),C("baseVault"),C("quoteVault"),C("baseMint"),C("quoteMint"),C("lpMint"),C("openOrders"),C("marketId"),C("marketProgramId"),C("targetOrders"),C("withdrawQueue"),C("lpVault"),C("owner"),y("lpReserve"),z(y(),3,"padding")]),Ig=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"),C("baseVault"),C("quoteVault"),C("baseMint"),C("quoteMint"),C("lpMint"),C("modelDataAccount"),C("openOrders"),C("marketId"),C("marketProgramId"),C("targetOrders"),C("owner"),z(y(),64,"padding")]),ri=E([W("instruction"),y("baseAmountIn"),y("quoteAmountIn"),y("fixedSide"),y("otherAmountMin")]),ii=E([W("instruction"),y("lpAmount"),y("baseAmountMin"),y("quoteAmountMin")]);var jo=E([y("fee")]);import{PublicKey as zu}from"@solana/web3.js";var an=new zu("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),zt=5e4,Qu=E([y("x"),y("y"),y("price")]),Hu=E([y("accountType"),y("status"),y("multiplier"),y("validDataCount"),z(Qu,zt,"DataElement")]);function Yu(r,e){return[0,zt-2]}function ju(r){return[0,zt-2]}function Zu(r){return[0,zt-2]}function $u(r,e,t){let[n,i]=Yu(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>=zt-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 oi(r,e,t){let[n,i,o]=$u(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 Zo(r,e,t){return e*t/r.multiplier}function Ju(r,e){let[t,n]=ju(e),i=t,o=n,a=0,s=e;for(;i<o;){if(a=Math.floor((o+i)/2),a<=0||a>zt-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 ec(r,e){let[t,n]=Zu(e),i=t,o=n,a=0,s=e;for(;i<=o;){if(a=Math.floor((o+i)/2),a<=0||a>=zt-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 $o(r,e,t,n){let i=n?e+t:e-t,[o,a,s]=Ju(r,i);if(!s)return[0,0,!1,s];if(o===a)return[r.DataElement[a].price,r.DataElement[a].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 tc(r,e,t,n){let i=n?e-t:e+t,[o,a,s]=ec(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 nc(r,e){let t=$o(r,e,0,!1);return t[3]?t[0]:0}function Jo(r,e,t,n){let i=oi(r,e,t),o=Xt(r,e,i),a=Xt(r,t,i),s=Xt(r,n,i),u=!0,[c,l,m,d]=$o(r,o,s,u);if(!d)return 0;if(m)return n*r.multiplier/c;{let p=a-l;return Zo(r,p,i)}}function es(r,e,t,n){let i=oi(r,e,t),o=Xt(r,e,i),a=Xt(r,t,i),s=Xt(r,n,i),u=!1,[c,l,m,d]=tc(r,a,s,u);if(!d)return 0;if(m)return n*c/r.multiplier;{let p=o-l;return Zo(r,p,i)}}function rc(r){let e=Hu.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=nc(r,Xt(r,e,oi(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=rc(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(ri.span);ri.encode({instruction:3,baseAmountIn:ne(i),quoteAmountIn:ne(o),otherAmountMin:ne(s),fixedSide:a==="base"?Bt:zi},u);let c=[I({pubkey:Cn,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 si(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(ii.span);ii.encode({instruction:4,lpAmount:ne(i),baseAmountMin:ne(o),quoteAmountMin:ne(a)},c);let l=[I({pubkey:Cn,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 ai({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:Cn,isSigner:!1,isWritable:!1},{pubkey:oc,isSigner:!1,isWritable:!1},{pubkey:ic.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 sc({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:Cn,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 ac({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:Cn,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 sc(te(G({},s),{amountIn:i,minAmountOut:o}),t);if(a==="out")return ac(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 lc}from"@solana/web3.js";import rw from"bn.js";import{TOKEN_PROGRAM_ID as mc}from"@solana/spl-token";import{PublicKey as uc}from"@solana/web3.js";var cc=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=uc.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw cc.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}function ur({programId:r}){let{publicKey:e}=ye([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function Qt({name:r,programId:e,marketId:t}){let{publicKey:n}=ye([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function dc({programId:r,marketId:e}){let{publicKey:t}=ye([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function pc({programId:r}){return ye([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function ci({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:a,programId:s,marketProgramId:u}){let c=Qt({name:"amm_associated_seed",programId:s,marketId:t}),l=Qt({name:"lp_mint_associated_seed",programId:s,marketId:t}),{publicKey:m,nonce:d}=pc({programId:s}),p=Qt({name:"coin_vault_associated_seed",programId:s,marketId:t}),f=Qt({name:"pc_vault_associated_seed",programId:s,marketId:t}),b=Qt({name:"temp_lp_token_associated_seed",programId:s,marketId:t}),w=dc({programId:s,marketId:t}),g=Qt({name:"target_associated_seed",programId:s,marketId:t}),h=Qt({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:lc.default,configId:ur({programId:s})}}var ui={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},ss=r=>{let e={},t=mc.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:sr({address:o,programId:t,decimals:i.baseDecimal.toNumber()}),mintB:sr({address:a,programId:t,decimals:i.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:i.poolPrice.toNumber(),mintAmountA:new N(i.mintAAmount.toString()).div(10**i.baseDecimal.toNumber()).toNumber(),mintAmountB:new N(i.mintBAmount.toString()).div(10**i.quoteDecimal.toNumber()).toNumber(),baseReserve:i.baseReserve,quoteReserve:i.quoteReserve,feeRate:new N(i.tradeFeeNumerator.toString()).div(i.tradeFeeDenominator.toString()).toNumber(),openTime:i.poolOpenTime.toString(),tvl:0,day:ui,week:ui,month:ui,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:i.marketId.toBase58(),configId:ur({programId:i.programId}).toBase58(),lpPrice:0,lpAmount:new N(i.lpReserve.toString()).div(10**Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())).toNumber(),lpMint:sr({address:i.lpMint.toBase58(),programId:t,decimals:Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())}),burnPercent:0}}),e};import we from"bn.js";import{Keypair as wc,PublicKey as kc}from"@solana/web3.js";import Kw 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 li(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 mi(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 as(r,e){li(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 fw=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 di(r){return typeof r=="string"&&(r=bc(r)),li(r),r}var cr=class{clone(){return this._cloneInto()}},bw={}.toString;function us(r){let e=n=>r().update(di(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 cs=(r,e,t)=>r&e^~r&t,ls=(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){mi(this);let{view:t,buffer:n,blockLen:i}=this;e=di(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){mi(this),as(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]),Ct=new Uint32Array(64),pi=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)Ct[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Ct[m-15],p=Ct[m-2],f=rt(d,7)^rt(d,18)^d>>>3,b=rt(p,17)^rt(p,19)^p>>>10;Ct[m]=b+Ct[m-7]+f+Ct[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+cs(s,u,c)+gc[m]+Ct[m]|0,b=(rt(n,2)^rt(n,13)^rt(n,22))+ls(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(){Ct.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ms=us(()=>new pi);var Mw=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=ms(n);return new kc(i)}import{PublicKey as Ow,SystemProgram as Fw}from"@solana/web3.js";import Gw from"bn.js";import{createCloseAccountInstruction as Qw,createInitializeAccountInstruction as Hw,createTransferInstruction as Yw,TOKEN_PROGRAM_ID as jw}from"@solana/spl-token";import{PublicKey as kk}from"@solana/web3.js";import Ak from"bn.js";import{TOKEN_PROGRAM_ID as Tk}from"@solana/spl-token";import{SystemProgram as Ht,SYSVAR_RENT_PUBKEY as Tc,Transaction as ds,TransactionInstruction as xc}from"@solana/web3.js";import{createInitializeAccountInstruction as ps,TOKEN_PROGRAM_ID as fs}from"@solana/spl-token";function Pc(r="accountFlags"){let e=new $n(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 fi=E([xe(5),Pc("accountFlags"),C("ownAddress"),y("vaultSignerNonce"),C("baseMint"),C("quoteMint"),C("baseVault"),y("baseDepositsTotal"),y("baseFeesAccrued"),C("quoteVault"),y("quoteDepositsTotal"),y("quoteFeesAccrued"),y("quoteDustThreshold"),C("requestQueue"),C("eventQueue"),C("bids"),C("asks"),y("baseLotSize"),y("quoteLotSize"),y("feeRateBps"),y("referrerRebatesAccrued"),xe(7)]);function Sc({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:Tc,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 xc({keys:n,programId:r,data:i})}async function bi({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(fi.span),space:fi.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}),Sc({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 yi=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 N(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),s=Qo(t[o?"mintB":"mintA"]),[u,c]=[new we(new N(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new we(new N(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new we(new N(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,N.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",a.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=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 Ye(new we(1)).add(i),b=new Ye(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,[Y,D]=B,ae=i!=null?i:await this.getAmmPoolKeys(n.id),Te=this.createTxBuilder(p),dt=await f.handleTokenAccount({side:"in",amount:Y,mint:M.mint,tokenAccount:v,bypassAssociatedCheck:b,checkCreateATAOwner:w}),{tokenAccount:$e}=dt,mt=He(dt,["tokenAccount"]);Te.addInstruction(mt);let Qe=await f.handleTokenAccount({side:"in",amount:D,mint:O.mint,tokenAccount:U,bypassAssociatedCheck:b,checkCreateATAOwner:w}),{tokenAccount:Oe}=Qe,We=He(Qe,["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:$e,quoteTokenAccount:Oe,lpTokenAccount:it,owner:this.scope.ownerPubKey},baseAmountIn:Y,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:[si({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=Nt,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,Nt).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:Nt,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:Nt,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=Wr[a.programId],Te=rn({programId:new Pe(a.programId),poolId:new Pe(a.id),owner:this.scope.ownerPubKey,version:ae}),$e,mt=await this.scope.connection.getAccountInfo(Te);if(mt&&($e=ho(ae).decode(mt.data)),ae!==6&&!$e){let{instruction:De,instructionType:At}=Po({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=Wr[a.programId],dt=ht===6?To(it):ht===5?xo(it):So(it),Qe={3:H.FarmV3Withdraw,5:H.FarmV5Withdraw,6:H.FarmV6Withdraw};g.addInstruction({instructions:[dt],instructionTypes:[Qe[ht]]})}let M=await this.getAmmPoolKeys(t.id),O=si({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],Y=await this.scope.clmm.getClmmPoolKeys(n.id),D=await on.openPositionFromBaseInstructions(te(G({poolInfo:n,poolKeys:Y,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:Y.lookupTableAccount?[Y.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(dr),P=c.useSOLBalance&&o.mint.equals(dr),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=ci({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}=ai(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=io,marketProgram:n=ro,feeDestinationId:i=oo,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 wi,ki,hi;let k=this.scope.ownerPubKey,S=m.feePayer||((wi=this.scope.owner)==null?void 0:wi.publicKey),B=m.useSOLBalance&&a.mint.equals(dr),L=m.useSOLBalance&&s.mint.equals(dr),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`}),Y=lt({fromPublicKey:k,programId:n,assignSeed:x&&`${x}-asks`}),D=lt({fromPublicKey:k,programId:Nt,assignSeed:x&&`${x}-baseVault`}),ae=lt({fromPublicKey:k,programId:Nt,assignSeed:x&&`${x}-quoteVault`}),Te=0,$e=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 bi({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:Y,feeRateBps:Te,quoteDustThreshold:$e,vaultSignerNonce:We,baseLotSize:it,quoteLotSize:ht,lowestFeeMarket:d}}),Qe=this.createTxBuilder(T);Qe.addInstruction({instructions:dt[0].transaction.instructions,signers:dt[0].signer});for await(let ot of dt.slice(1,dt.length))Qe.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});Qe.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(Qe.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=ci({version:4,marketVersion:3,marketId:M.publicKey,baseMint:a.mint,quoteMint:s.mint,baseDecimals:a.decimals,quoteDecimals:s.decimals,programId:t,marketProgramId:n}),pr={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}=ai(te(G({},pr),{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}));Qe.addInstruction({instructions:[bs],instructionTypes:[ys]});let gi=B||L?[((ki=At==null?void 0:At.instructions)==null?void 0:ki[0])||((hi=Rt==null?void 0:Rt.instructions)==null?void 0:hi[0])].filter(ot=>!!ot):void 0;return h===0?Qe.sizeCheckBuildV0({computeBudgetConfig:A,splitIns:gi,address:G({requestQueue:O.publicKey,eventQueue:v.publicKey,bids:U.publicKey,asks:Y.publicKey,baseVault:D.publicKey,quoteVault:ae.publicKey,baseMint:new Pe(a.mint),quoteMint:new Pe(s.mint)},pr)}):Qe.sizeCheckBuild({computeBudgetConfig:A,splitIns:gi,address:G({requestQueue:O.publicKey,eventQueue:v.publicKey,bids:U.publicKey,asks:Y.publicKey,baseVault:D.publicKey,quoteVault:ae.publicKey,baseMint:new Pe(a.mint),quoteMint:new Pe(s.mint)},pr)})}async getCreatePoolFee({programId:t}){let n=ur({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return jo.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 N(b.toString()).div(10**g).div(new N(f.toString()).div(10**w));else{let v=ts(this.stableLayout.stableModelData,c.toNumber(),l.toNumber(),!1);p==="quote"?A=new N(1e6).div(v*1e6):A=new N(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),ar);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(Jo(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 N(T.toString()).mul(1-a).toFixed(0)),B=T,L=S,x=new N(T.toString()).div(new N(P.sub(k).toString()).toFixed(0));!P.isZero()&&!T.isZero()&&(x=new N(T.toString()).div(10**g).div(new N(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 N(n.toString()).div(10**m.decimals).toDecimalPlaces(m.decimals).toString(),l.symbol||l.address),this.logDebug("slippage:",`${a*100}%`);let d=[s,u],p=c?"quote":"base";p==="base"&&d.reverse(),this.logDebug("output side:",p);let[f,b]=d,w=new N(b.toString()).div(10**t[c?"mintB":"mintA"].decimals).div(new N(f.toString()).div(10**t[c?"mintA":"mintB"].decimals));this.logDebug("currentPrice:",`1 ${l.symbol||l.address} \u2248 ${w.toString()} ${m.symbol||m.address}`),this.logDebug("currentPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new N(1).div(w).toString()} ${l.symbol||l.address}`);let g=new we(0),h=n;if(!h.isZero()){h.gt(b)&&(h=b.sub(new we(1)));let L=b.sub(h);g=f.mul(h).div(L).mul(ar).div(ar.sub(ei))}let A=new we(new N(g.toString()).mul(1+a).toFixed(0)),P=g,T=A;this.logDebug("amountIn:",new N(P.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString()),this.logDebug("maxAmountIn:",new N(T.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString());let k=null;!g.isZero()&&!h.isZero()&&(k=new N(h.toString()).div(10**m.decimals).div(new N(g.toString()).div(10**l.decimals)),this.logDebug("executionPrice:",`1 ${m.symbol||m.address} \u2248 ${k.toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`),this.logDebug("executionPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new N(1).div(k).toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`));let 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===Zt.toBase58(),P=w&&h.address===Zt.toBase58(),{account:T,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Nt,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:Nt,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=Yo.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(Bc.decode(m.data).amount.toString())}let c={};for(let[l,m]of Object.entries(o)){let d=s[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=s[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);c[l]=te(G({},m),{baseReserve:d,mintAAmount:s[m.baseVault.toString()],mintBAmount:s[m.quoteVault.toString()],quoteReserve:p,poolPrice:new N(p.toString()).div(new N(10).pow(m.quoteDecimal.toString())).div(new N(d.toString()).div(new N(10).pow(m.baseDecimal.toString())))})}return c}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),i=ss({[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{yi as default};
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=liquidity.mjs.map