UNPKG

test-raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

3 lines 162 kB
var io=Object.defineProperty,oo=Object.defineProperties;var so=Object.getOwnPropertyDescriptors;var on=Object.getOwnPropertySymbols;var Er=Object.prototype.hasOwnProperty,Fr=Object.prototype.propertyIsEnumerable;var Cr=(r,e,t)=>e in r?io(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,X=(r,e)=>{for(var t in e||(e={}))Er.call(e,t)&&Cr(r,t,e[t]);if(on)for(var t of on(e))Fr.call(e,t)&&Cr(r,t,e[t]);return r},Z=(r,e)=>oo(r,so(e));var ve=(r,e)=>{var t={};for(var n in r)Er.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&on)for(var n of on(r))e.indexOf(n)<0&&Fr.call(r,n)&&(t[n]=r[n]);return t};import{PublicKey as Qe}from"@solana/web3.js";import{NATIVE_MINT as no,TOKEN_PROGRAM_ID as ro}from"@solana/spl-token";import As from"big.js";import Pn from"bn.js";import Ie from"bn.js";var xt=9e15,it=1e9,Un="0123456789abcdef",an="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",un="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Xn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-xt,maxE:xt,crypto:!1},Vr,Ze,W=!0,ln="[DecimalError] ",rt=ln+"Invalid argument: ",Or=ln+"Precision limit exceeded",Wr=ln+"crypto unavailable",Dr="[object Decimal]",ke=Math.floor,pe=Math.pow,ao=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,uo=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,co=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,qr=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ve=1e7,V=7,lo=9007199254740991,mo=an.length-1,zn=un.length-1,A={toStringTag:Dr};A.absoluteValue=A.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),E(r)};A.ceil=function(){return E(new this.constructor(this),this.e+1,2)};A.clampedTo=A.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(rt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};A.comparedTo=A.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};A.cosine=A.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())+V,n.rounding=1,t=po(n,Yr(n,t)),n.precision=r,n.rounding=e,E(Ze==2||Ze==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};A.cubeRoot=A.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(W=!1,o=l.s*pe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=ge(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=pe(t,1/3),r=ke((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=ie(c.plus(l).times(a),c.plus(u),s+2,1),ge(a.d).slice(0,s)===(t=ge(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(E(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(E(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return W=!0,E(n,r,m.rounding,e)};A.decimalPlaces=A.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-ke(this.e/V))*V,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};A.dividedBy=A.div=function(r){return ie(this,new this.constructor(r))};A.dividedToIntegerBy=A.divToInt=function(r){var e=this,t=e.constructor;return E(ie(e,new t(r),0,1,1),t.precision,t.rounding)};A.equals=A.eq=function(r){return this.cmp(r)===0};A.floor=function(){return E(new this.constructor(this),this.e+1,3)};A.greaterThan=A.gt=function(r){return this.cmp(r)>0};A.greaterThanOrEqualTo=A.gte=function(r){var e=this.cmp(r);return e==1||e===0};A.hyperbolicCosine=A.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/dn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=It(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return E(o,s.precision=t,s.rounding=n,!0)};A.hyperbolicSine=A.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=It(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/dn(5,r)),i=It(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,E(i,e,t,!0)};A.hyperbolicTangent=A.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,ie(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};A.inverseCosine=A.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?_e(t,i,o):new t(0):new t(NaN):e.isZero()?_e(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=_e(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};A.inverseHyperbolicCosine=A.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,W=!1,t=t.times(t).minus(1).sqrt().plus(t),W=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};A.inverseHyperbolicSine=A.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,W=!1,t=t.times(t).plus(1).sqrt().plus(t),W=!0,n.precision=r,n.rounding=e,t.ln())};A.inverseHyperbolicTangent=A.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?E(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ie(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)};A.inverseSine=A.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=_e(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};A.inverseTangent=A.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=zn)return s=_e(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=zn)return s=_e(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/V+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(W=!1,e=Math.ceil(a/V),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),W=!0,E(s,l.precision=m,l.rounding=d,!0)};A.isFinite=function(){return!!this.d};A.isInteger=A.isInt=function(){return!!this.d&&ke(this.e/V)>this.d.length-2};A.isNaN=function(){return!this.s};A.isNegative=A.isNeg=function(){return this.s<0};A.isPositive=A.isPos=function(){return this.s>0};A.isZero=function(){return!!this.d&&this.d[0]===0};A.lessThan=A.lt=function(r){return this.cmp(r)<0};A.lessThanOrEqualTo=A.lte=function(r){return this.cmp(r)<1};A.logarithm=A.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(W=!1,a=m+p,s=nt(c,a),n=e?cn(l,a+10):nt(r,a),u=ie(s,n,a,1),Vt(u.d,i=m,d))do if(a+=10,s=nt(c,a),n=e?cn(l,a+10):nt(r,a),u=ie(s,n,a,1),!o){+ge(u.d).slice(i+1,i+15)+1==1e14&&(u=E(u,m+1,0));break}while(Vt(u.d,i+=10,d));return W=!0,E(u,m,d)};A.minus=A.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,y=p.constructor;if(r=new y(r),!p.d||!r.d)return!p.s||!r.s?r=new y(NaN):p.d?r.s=-r.s:r=new y(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,d=r.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])r.s=-r.s;else if(c[0])r=new y(p);else return new y(u===3?-0:0);return W?E(r,a,u):r}if(t=ke(r.e/V),l=ke(p.e/V),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/V),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,r.s=-r.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(i=n;i&&c[--i]===0;)c[i]=Ve-1;--c[i],c[n]+=Ve}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=mn(c,t),W?E(r,a,u):r):new y(u===3?-0:0)};A.modulo=A.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]?E(new n(t),n.precision,n.rounding):(W=!1,n.modulo==9?(e=ie(t,r.abs(),0,3,1),e.s*=r.s):e=ie(t,r,0,n.modulo,1),e=e.times(r),W=!0,t.minus(e))};A.naturalExponential=A.exp=function(){return Yn(this)};A.naturalLogarithm=A.ln=function(){return nt(this)};A.negated=A.neg=function(){var r=new this.constructor(this);return r.s=-r.s,E(r)};A.plus=A.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(r=new d(m)),W?E(r,a,u):r;if(o=ke(m.e/V),n=ke(r.e/V),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/V),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/Ve|0,c[i]%=Ve;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=mn(c,n),W?E(r,a,u):r};A.precision=A.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(rt+r);return t.d?(e=Gr(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};A.round=function(){var r=this,e=r.constructor;return E(new e(r),r.e+1,e.rounding)};A.sine=A.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())+V,n.rounding=1,t=bo(n,Yr(n,t)),n.precision=r,n.rounding=e,E(Ze>2?t.neg():t,r,e,!0)):new n(NaN)};A.squareRoot=A.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(W=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=ge(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=ke((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(ie(s,o,t+2,1)).times(.5),ge(o.d).slice(0,t)===(e=ge(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(E(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(E(n,u+1,1),r=!n.times(n).eq(s));break}return W=!0,E(n,u,l.rounding,r)};A.tangent=A.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=ie(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,E(Ze==2||Ze==4?t.neg():t,r,e,!0)):new n(NaN)};A.times=A.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!r.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?r.s/0:r.s*0);for(t=ke(l.e/V)+ke(r.e/V),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*d[i-n-1]+e,o[i--]=a%Ve|0,e=a/Ve|0;o[i]=(o[i]+e)%Ve|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=mn(o,t),W?E(r,m.precision,m.rounding):r};A.toBinary=function(r,e){return Hn(this,2,r,e)};A.toDecimalPlaces=A.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Le(r,0,it),e===void 0?e=n.rounding:Le(e,0,8),E(t,r+t.e+1,e))};A.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ge(n,!0):(Le(r,0,it),e===void 0?e=i.rounding:Le(e,0,8),n=E(new i(n),r+1,e),t=Ge(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};A.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=Ge(i):(Le(r,0,it),e===void 0?e=o.rounding:Le(e,0,8),n=E(new o(i),r+i.e+1,e),t=Ge(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};A.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Gr(y)-p.e-1,s=o%V,e.d[0]=pe(10,s<0?V+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(rt+a);r=a.gt(e)?o>0?e:c:a}for(W=!1,a=new f(ge(y)),l=f.precision,f.precision=o=y.length*V*2;m=ie(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=ie(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=ie(c,n,o,1).minus(p).abs().cmp(ie(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,W=!0,d};A.toHexadecimal=A.toHex=function(r,e){return Hn(this,16,r,e)};A.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:Le(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]?(W=!1,t=ie(t,r,0,e,1).times(r),W=!0,E(t)):(r.s=t.s,t=r),t};A.toNumber=function(){return+this};A.toOctal=function(r,e){return Hn(this,8,r,e)};A.toPower=A.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(pe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return E(a,n,o);if(e=ke(r.e/V),e>=r.d.length-1&&(t=c<0?-c:c)<=lo)return i=Ur(u,a,t,n),r.s<0?new u(1).div(i):E(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=pe(+a,c),e=t==0||!isFinite(t)?ke(c*(Math.log("0."+ge(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(W=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Yn(r.times(nt(a,n+t)),n),i.d&&(i=E(i,n+5,1),Vt(i.d,n,o)&&(e=n+10,i=E(Yn(r.times(nt(a,e+t)),e),e+5,1),+ge(i.d).slice(n+1,n+15)+1==1e14&&(i=E(i,n+1,0)))),i.s=s,W=!0,u.rounding=o,E(i,n,o))};A.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ge(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Le(r,1,it),e===void 0?e=i.rounding:Le(e,0,8),n=E(new i(n),r,e),t=Ge(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};A.toSignificantDigits=A.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Le(r,1,it),e===void 0?e=n.rounding:Le(e,0,8)),E(new n(t),r,e)};A.toString=function(){var r=this,e=r.constructor,t=Ge(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};A.truncated=A.trunc=function(){return E(new this.constructor(this),this.e+1,1)};A.valueOf=A.toJSON=function(){var r=this,e=r.constructor,t=Ge(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function ge(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=V-n.length,t&&(o+=tt(t)),o+=n;s=r[e],n=s+"",t=V-n.length,t&&(o+=tt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Le(r,e,t){if(r!==~~r||r<e||r>t)throw Error(rt+r)}function Vt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=V,i=0):(i=Math.ceil((e+1)/V),e%=V),o=pe(10,V-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==pe(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==pe(10,e-3)-1,s}function sn(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=Un.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function po(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/dn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=It(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var ie=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,d,p,y,f,g,w,P,k,h,T,x,R,v,D,ne,Y,ae,se=n.constructor,Q=n.s==i.s?1:-1,re=n.d,j=i.d;if(!re||!re[0]||!j||!j[0])return new se(!n.s||!i.s||(re?j&&re[0]==j[0]:!j)?NaN:re&&re[0]==0||!j?Q*0:Q/0);for(u?(p=1,l=n.e-i.e):(u=Ve,p=V,l=ke(n.e/p)-ke(i.e/p)),Y=j.length,D=re.length,w=new se(Q),P=w.d=[],m=0;j[m]==(re[m]||0);m++);if(j[m]>(re[m]||0)&&l--,o==null?(x=o=se.precision,s=se.rounding):a?x=o+(n.e-i.e)+1:x=o,x<0)P.push(1),y=!0;else{if(x=x/p+2|0,m=0,Y==1){for(d=0,j=j[0],x++;(m<D||d)&&x--;m++)R=d*u+(re[m]||0),P[m]=R/j|0,d=R%j|0;y=d||m<D}else{for(d=u/(j[0]+1)|0,d>1&&(j=r(j,d,u),re=r(re,d,u),Y=j.length,D=re.length),v=Y,k=re.slice(0,Y),h=k.length;h<Y;)k[h++]=0;ae=j.slice(),ae.unshift(0),ne=j[0],j[1]>=u/2&&++ne;do d=0,c=e(j,k,Y,h),c<0?(T=k[0],Y!=h&&(T=T*u+(k[1]||0)),d=T/ne|0,d>1?(d>=u&&(d=u-1),f=r(j,d,u),g=f.length,h=k.length,c=e(f,k,g,h),c==1&&(d--,t(f,Y<g?ae:j,g,u))):(d==0&&(c=d=1),f=j.slice()),g=f.length,g<h&&f.unshift(0),t(k,f,h,u),c==-1&&(h=k.length,c=e(j,k,Y,h),c<1&&(d++,t(k,Y<h?ae:j,h,u))),h=k.length):c===0&&(d++,k=[0]),P[m++]=d,c&&k[0]?k[h++]=re[v]||0:(k=[re[v]],h=1);while((v++<D||k[0]!==void 0)&&x--);y=k[0]!==void 0}P[0]||P.shift()}if(p==1)w.e=l,Vr=y;else{for(m=1,d=P[0];d>=10;d/=10)m++;w.e=m+l*p-1,E(w,a?o+w.e+1:o,s,y)}return w}}();function E(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=V,s=e,l=m[d=0],u=l/pe(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/V),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,i=1,o%=V,s=o-V+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=V,s=o-V+i,u=s<0?0:l/pe(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%pe(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/pe(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=pe(10,(V-e%V)%V),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=pe(10,V-o),m[d]=s>0?(l/pe(10,i-s)%pe(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==Ve&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=Ve)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return W&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function Ge(r,e,t){if(!r.isFinite())return zr(r);var n,i=r.e,o=ge(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+tt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+tt(-i-1)+o,t&&(n=t-s)>0&&(o+=tt(n))):i>=s?(o+=tt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+tt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=tt(n))),o}function mn(r,e){var t=r[0];for(e*=V;t>=10;t/=10)e++;return e}function cn(r,e,t){if(e>mo)throw W=!0,t&&(r.precision=t),Error(Or);return E(new r(an),e,1,!0)}function _e(r,e,t){if(e>zn)throw Error(Or);return E(new r(un),e,t,!0)}function Gr(r){var e=r.length-1,t=e*V+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 tt(r){for(var e="";r--;)e+="0";return e}function Ur(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/V+4);for(W=!1;;){if(t%2&&(o=o.times(e),vr(o.d,s)&&(i=!0)),t=ke(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),vr(e.d,s)}return W=!0,o}function Mr(r){return r.d[r.d.length-1]&1}function Xr(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 Yn(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,d=r.constructor,p=d.rounding,y=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?(W=!1,u=y):u=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(pe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=E(o.times(r),u,1),t=t.times(++l),a=s.plus(ie(o,t,u,1)),ge(a.d).slice(0,u)===ge(s.d).slice(0,u)){for(i=m;i--;)s=E(s.times(s),u,1);if(e==null)if(c<3&&Vt(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return E(s,d.precision=y,p,W=!0);else return d.precision=y,s}s=a}}function nt(r,e){var t,n,i,o,s,a,u,c,l,m,d,p=1,y=10,f=r,g=f.d,w=f.constructor,P=w.rounding,k=w.precision;if(f.s<0||!g||!g[0]||!f.e&&g[0]==1&&g.length==1)return new w(g&&!g[0]?-1/0:f.s!=1?NaN:g?0:f);if(e==null?(W=!1,l=k):l=e,w.precision=l+=y,t=ge(g),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=ge(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new w("0."+t),o++):f=new w(n+"."+t.slice(1))}else return c=cn(w,l+2,k).times(o+""),f=nt(new w(n+"."+t.slice(1)),l-y).plus(c),w.precision=k,e==null?E(f,k,P,W=!0):f;for(m=f,u=s=f=ie(f.minus(1),f.plus(1),l,1),d=E(f.times(f),l,1),i=3;;){if(s=E(s.times(d),l,1),c=u.plus(ie(s,new w(i),l,1)),ge(c.d).slice(0,l)===ge(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(cn(w,l+2,k).times(o+""))),u=ie(u,new w(p),l,1),e==null)if(Vt(u.d,l-y,P,a))w.precision=l+=y,c=s=f=ie(m.minus(1),m.plus(1),l,1),d=E(f.times(f),l,1),i=a=1;else return E(u,w.precision=k,P,W=!0);else return w.precision=k,u;u=c,i+=2}}function zr(r){return String(r.s*r.s/0)}function jn(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)%V,t<0&&(n+=V),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=V;n<i;)r.d.push(+e.slice(n,n+=V));e=e.slice(n),n=V-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),W&&(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 fo(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),qr.test(e))return jn(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(uo.test(e))t=16,e=e.toLowerCase();else if(ao.test(e))t=2;else if(co.test(e))t=8;else throw Error(rt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=Ur(n,new n(t),o,o*2)),c=sn(e,t,Ve),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=mn(c,l),r.d=c,W=!1,s&&(r=ie(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?pe(2,u):Ot.pow(2,u))),W=!0,r)}function bo(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:It(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/dn(5,t)),e=It(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function It(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/V);for(W=!1,u=t.times(t),a=new r(n);;){if(s=ie(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ie(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return W=!0,s.d.length=m+1,s}function dn(r,e){for(var t=r;--e;)t*=r;return t}function Yr(r,e){var t,n=e.s<0,i=_e(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Ze=n?4:1,e;if(t=e.divToInt(i),t.isZero())Ze=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Ze=Mr(t)?n?2:3:n?4:1,e;Ze=Mr(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Hn(r,e,t,n){var i,o,s,a,u,c,l,m,d,p=r.constructor,y=t!==void 0;if(y?(Le(t,1,it),n===void 0?n=p.rounding:Le(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=zr(r);else{for(l=Ge(r),s=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=sn(Ge(d),10,i),d.e=d.d.length),m=sn(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=m,r.e=o,r=ie(r,d,t,n,0,i),m=r.d,o=r.e,c=Vr),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Un.charAt(m[s]);if(y){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=sn(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Un.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function vr(r,e){if(r.length>e)return r.length=e,!0}function yo(r){return new this(r).abs()}function go(r){return new this(r).acos()}function wo(r){return new this(r).acosh()}function ko(r,e){return new this(r).plus(e)}function ho(r){return new this(r).asin()}function Ao(r){return new this(r).asinh()}function Po(r){return new this(r).atan()}function To(r){return new this(r).atanh()}function xo(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=_e(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?_e(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=_e(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ie(r,e,o,1)),e=_e(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ie(r,e,o,1)),t}function Io(r){return new this(r).cbrt()}function Bo(r){return E(r=new this(r),r.e+1,2)}function So(r,e,t){return new this(r).clamp(e,t)}function Ko(r){if(!r||typeof r!="object")throw Error(ln+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,it,"rounding",0,8,"toExpNeg",-xt,0,"toExpPos",0,xt,"maxE",0,xt,"minE",-xt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Xn[t]),(n=r[t])!==void 0)if(ke(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(rt+t+": "+n);if(t="crypto",i&&(this[t]=Xn[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(Wr);else this[t]=!1;else throw Error(rt+t+": "+n);return this}function Lo(r){return new this(r).cos()}function No(r){return new this(r).cosh()}function jr(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,_r(o)){c.s=o.s,W?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;W?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return jn(c,o.toString())}else if(u!=="string")throw Error(rt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),qr.test(o)?jn(c,o):fo(c,o)}if(i.prototype=A,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=Ko,i.clone=jr,i.isDecimal=_r,i.abs=yo,i.acos=go,i.acosh=wo,i.add=ko,i.asin=ho,i.asinh=Ao,i.atan=Po,i.atanh=To,i.atan2=xo,i.cbrt=Io,i.ceil=Bo,i.clamp=So,i.cos=Lo,i.cosh=No,i.div=Ro,i.exp=Co,i.floor=Eo,i.hypot=Fo,i.ln=Mo,i.log=vo,i.log10=Vo,i.log2=_o,i.max=Oo,i.min=Wo,i.mod=Do,i.mul=qo,i.pow=Go,i.random=Uo,i.round=Xo,i.sign=zo,i.sin=Yo,i.sinh=jo,i.sqrt=Ho,i.sub=Qo,i.sum=Zo,i.tan=$o,i.tanh=Jo,i.trunc=es,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 Ro(r,e){return new this(r).div(e)}function Co(r){return new this(r).exp()}function Eo(r){return E(r=new this(r),r.e+1,3)}function Fo(){var r,e,t=new this(0);for(W=!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 W=!0,new this(1/0);t=e}return W=!0,t.sqrt()}function _r(r){return r instanceof Ot||r&&r.toStringTag===Dr||!1}function Mo(r){return new this(r).ln()}function vo(r,e){return new this(r).log(e)}function _o(r){return new this(r).log(2)}function Vo(r){return new this(r).log(10)}function Oo(){return Xr(this,arguments,"lt")}function Wo(){return Xr(this,arguments,"gt")}function Do(r,e){return new this(r).mod(e)}function qo(r,e){return new this(r).mul(e)}function Go(r,e){return new this(r).pow(e)}function Uo(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Le(r,1,it),n=Math.ceil(r/V),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(Wr);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=V,n&&r&&(i=pe(10,V-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=V)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<V&&(t-=V-n)}return s.e=t,s.d=a,s}function Xo(r){return E(r=new this(r),r.e+1,this.rounding)}function zo(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Yo(r){return new this(r).sin()}function jo(r){return new this(r).sinh()}function Ho(r){return new this(r).sqrt()}function Qo(r,e){return new this(r).sub(e)}function Zo(){var r=0,e=arguments,t=new this(e[r]);for(W=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return W=!0,E(t,this.precision,this.rounding)}function $o(r){return new this(r).tan()}function Jo(r){return new this(r).tanh()}function es(r){return E(r=new this(r),r.e+1,1)}A[Symbol.for("nodejs.util.inspect.custom")]=A.toString;A[Symbol.toStringTag]="Decimal";var Ot=A.constructor=jr(Xn);an=new Ot(an);un=new Ot(un);var _=Ot;import{PublicKey as $n}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ts}from"@solana/spl-token";import{PublicKey as ue,SystemProgram as ns,SYSVAR_RENT_PUBKEY as rs}from"@solana/web3.js";function B({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var is=[B({pubkey:ts,isWritable:!1}),B({pubkey:ns.programId,isWritable:!1}),B({pubkey:rs,isWritable:!1})];function Qn({publicKey:r,transformSol:e}){let t=Zn(r.toString());if(t instanceof ue)return e&&t.equals(ot)?pn:t;if(e&&t.toString()===ot.toBase58())return pn;if(typeof t=="string"){if(t===ue.default.toBase58())return ue.default;try{return new ue(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Zn(r){try{return new ue(r)}catch{return r}}var fn=new ue("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),st=new ue("SysvarRent111111111111111111111111111111111"),eu=new ue("SysvarC1ock11111111111111111111111111111111"),Bt=new ue("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),os=new ue("Sysvar1nstructions1111111111111111111111111"),tu=new ue("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),nu=new ue("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ru=new ue("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),iu=new ue("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ou=new ue("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),su=new ue("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),au=new ue("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),uu=new ue("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),cu=new ue("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),lu=new ue("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),mu=new ue("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),pn=new ue("So11111111111111111111111111111111111111112"),ot=ue.default;function St(r){return Qn({publicKey:r,transformSol:!0})}import{PublicKey as ss}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hr}from"@solana/spl-token";var Wt={chainId:101,address:ss.default.toBase58(),programId:Hr.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},at={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Hr.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var Jn=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===ot.toBase58()||e instanceof $n&&ot.equals(e)){this.decimals=at.decimals,this.symbol=at.symbol,this.name=at.name,this.mint=new $n(at.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?$n.default:Qn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=Jn;he.WSOL=new Jn(Z(X({},at),{mint:at.address}));import{get as Qr,set as as}from"lodash";import $r from"dayjs";import us from"dayjs/plugin/utc";$r.extend(us);var er=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 $r().utc().format("YYYY/MM/DD HH:mm:ss UTC")}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Zr={},cs={};function ee(r){let e=Qr(Zr,r);if(!e){let t=Qr(cs,r);e=new er({name:r,logLevel:t}),as(Zr,r,e)}return e}import yn from"big.js";import ds from"bn.js";import ps from"decimal.js-light";import ls from"toformat";var ms=ls,Dt=ms;var bn=ee("module/fraction"),tr=Dt(yn),qt=Dt(ps),fs={[0]:qt.ROUND_DOWN,[1]:qt.ROUND_HALF_UP,[2]:qt.ROUND_UP},bs={[0]:yn.roundDown,[1]:yn.roundHalfUp,[2]:yn.roundUp},z=class{constructor(e,t=new ds(1)){this.numerator=oe(e),this.denominator=oe(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new z(this.denominator,this.numerator)}add(e){let t=e instanceof z?e:new z(oe(e));return this.denominator.eq(t.denominator)?new z(this.numerator.add(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof z?e:new z(oe(e));return this.denominator.eq(t.denominator)?new z(this.numerator.sub(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof z?e:new z(oe(e));return new z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof z?e:new z(oe(e));return new z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||bn.logWithError(`${e} is not an integer.`),e<=0&&bn.logWithError(`${e} is not positive.`),qt.set({precision:e+1,rounding:fs[n]});let i=new qt(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)||bn.logWithError(`${e} is not an integer.`),e<0&&bn.logWithError(`${e} is negative.`),tr.DP=e,tr.RM=bs[n]||1,new tr(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var gs=ee("Raydium_price"),Ne=class extends z{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new z(nr(n.decimals),nr(i.decimals))}get raw(){return new z(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ne({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&gs.logWithError("mul token not equals");let n=super.mul(t);return new Ne({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var rr=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=rr;gn.SOL=new rr(Wt);import ws from"bn.js";var Jr=new z(new ws(100)),Oe=class extends z{toSignificant(e=5,t,n){return this.mul(Jr).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Jr).toFixed(e,t,n)}};function Kt(r){if(r instanceof Oe)return new z(r.numerator,r.denominator);if(r instanceof Ne)return r.adjusted;if(r instanceof ce)try{return Kt(r.toExact())}catch{return new z(ut)}if(r instanceof z)return r;let e=String(r),t=wn(e);return new z(t.numerator,t.denominator)}function ei(r,e){if(r==null||e==null)return!1;let t=Kt(r),n=Kt(e);return t.sub(n).numerator,t.sub(n).numerator.lt(ut)}function ti(r,e){if(r==null||e==null)return!1;let t=Kt(r),n=Kt(e);return t.sub(n).numerator.gt(ut)}import{PublicKey as ks}from"@solana/web3.js";import hs from"bn.js";function ni(r){return typeof r=="object"&&r!==null&&![he,ce,ks,z,hs,Ne,Oe].some(e=>typeof e=="object"&&r instanceof e)}function Gt(r){return typeof r=="string"?Zn(r):Array.isArray(r)?r.map(e=>Gt(e)):ni(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,Gt(t)])):r}var ut=new Ie(0),Ut=new Ie(1),bc=new Ie(2),yc=new Ie(3),gc=new Ie(5),kn=new Ie(10),wc=new Ie(100),kc=new Ie(1e3),hc=new Ie(1e4),ri=9007199254740991;function oe(r){let e=ee("Raydium_parseBigNumberish");if(r instanceof Ie)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ie(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ri||r<=-ri)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ie(String(r))):typeof r=="bigint"?new Ie(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ie(0))}function nr(r){return kn.pow(oe(r))}function wn(r){var a;if(r===void 0)return{denominator:"1",numerator:"0"};if(r instanceof Ie)return{numerator:r.toString(),denominator:"1"};if(r instanceof z)return{denominator:r.denominator.toString(),numerator:r.numerator.toString()};let e=String(r),[,t="",n="",i=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],o="1"+"0".repeat(i.length),s=t+(n==="0"?"":n)+i||"0";return{denominator:o,numerator:s,sign:t,int:n,dec:i}}function hn(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}function An(r){if(r==null)return;let{numerator:e,denominator:t}=wn(r.toString());return new z(e,t)}var Ps=ee("Raydium_amount"),ii=Dt(As);function Ts(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")):Ps.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var ce=class extends z{constructor(t,n,i=!0,o){let s=new Pn(0),a=kn.pow(new Pn(t.decimals));if(i)s=oe(n);else{let u=new Pn(0),c=new Pn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Ts(n.toString(),t.decimals);u=oe(l),c=oe(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ee(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 ce(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ce(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 ii.DP=this.token.decimals,new ii(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Cs}from"@solana/web3.js";import ui,{isBN as ci}from"bn.js";import{bits as qc,BitStructure as Gc,blob as xs,Blob as Uc,cstr as Xc,f32 as zc,f32be as Yc,f64 as jc,f64be as Hc,greedy as Qc,Layout as Is,ns64 as Zc,ns64be as $c,nu64 as Jc,nu64be as el,offset as tl,s16 as nl,s16be as rl,s24 as il,s24be as ol,s32 as Bs,s32be as sl,s40 as al,s40be as ul,s48 as cl,s48be as ll,s8 as ml,seq as Ss,struct as dl,Structure as Ks,u16 as Ls,u16be as pl,u24 as fl,u24be as bl,u32 as yl,u32be as gl,u40 as wl,u40be as kl,u48 as hl,u48be as Al,u8 as Ns,UInt as Rs,union as Pl,Union as Tl,unionLayoutDiscriminator as xl,utf8 as Il}from"@solana/buffer-layout";var ir=Is,oi=Ks;var or=Rs;var si=Ns,Lt=Ls;var we=Bs;var ai=Ss;var Ae=xs;var yt=class extends ir{constructor(t,n,i){super(t,i);this.blob=Ae(t),this.signed=n}decode(t,n=0){let i=new ui(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 ui(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function F(r){return new or(1,r)}function Ee(r){return new or(4,r)}function b(r){return new yt(8,!1,r)}function M(r){return new yt(16,!1,r)}function li(r){return new yt(1,!0,r)}function xn(r){return new yt(8,!0,r)}function mi(r){return new yt(16,!0,r)}var Tn=class extends ir{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 I(r){return new Tn(Ae(32),e=>new Cs(e),e=>e.toBuffer(),r)}function Re(r){return new Tn(si(),Es,Fs,r)}function Es(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function Fs(r){return r?1:0}var sr=class extends oi{decode(e,t){return super.decode(e,t)}};function K(r,e,t){return new sr(r,e,t)}function O(r,e,t){let n,i=typeof e=="number"?e:ci(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=ci(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return ai(r,i,t)}var Ol=K([Ee("mintAuthorityOption"),I("mintAuthority"),b("supply"),F("decimals"),F("isInitialized"),Ee("freezeAuthorityOption"),I("freezeAuthority")]);import{PublicKey as Gl}from"@solana/web3.js";import{MintLayout as Xl,TOKEN_PROGRAM_ID as Yl}from"@solana/spl-token";import em from"bn.js";var di=r=>new he({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name});import{PublicKey as Ds}from"@solana/web3.js";import{PublicKey as Ms,ComputeBudgetProgram as pi,Transaction as bi,TransactionMessage as vs,Keypair as yi,VersionedTransaction as _s}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Vs}from"@solana/spl-token";var $={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw"};var fi=ee("Raydium_txUtil"),gi=1644;function In(r){let e=[],t=[];return r.microLamports&&(e.push(pi.setComputeUnitPrice({microLamports:r.microLamports})),t.push($.SetComputeUnitPrice)),r.units&&(e.push(pi.setComputeUnitLimit({units:r.units})),t.push($.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Nt(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function Os(r,e){r.length<1&&fi.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&fi.logWithError(`no signers provided:, ${e.toString()}`);let t=new bi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<gi}catch{return!1}}function be(r,e){let[t,n]=Ms.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Xt({instructions:r,payer:e,signers:t}){return Os(r,[e,...t])}function zt({instructions:r,payer:e,lookupTableAddressAccount:t}){let i=new vs({payerKey:e,recentBlockhash:yi.generate().publicKey.toString(),instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(i.serialize()).toString("base64").length<gi}catch{return!1}}var Ws=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function gt(r){let e=[];return r.forEach(t=>{t instanceof bi&&(t.recentBlockhash||(t.recentBlockhash=Vs.toBase58()),t.feePayer||(t.feePayer=yi.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof _s&&(n=Ws(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{TOKEN_PROGRAM_ID as qs}from"@solana/spl-token";function Fe(r,e,t){return be([r.toBuffer(),(t!=null?t:qs).toBuffer(),e.toBuffer()],new Ds("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as Nn,sendAndConfirmTransaction as lr,Transaction as Yt,TransactionMessage as jt,VersionedTransaction as Ht}from"@solana/web3.js";import Xs from"axios";import{PublicKey as Ai,AddressLookupTableAccount as Kn}from"@solana/web3.js";import{PublicKey as Gs}from"@solana/web3.js";import{getTransferFeeConfig as ad,unpackMint as ud}from"@solana/spl-token";function ar(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 Ce}from"@solana/web3.js";var wi=new Ce("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ki=new Ce("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),hi=new Ce("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Im=new Ce("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Bm=new Ce("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Sm=new Ce("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Km=new Ce("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Lm=new Ce("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Nm=new Ce("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Rm=new Ce("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Cm=new Ce("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Em=new Ce("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Fm=new Ce("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Mm=new Ce("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi");import me from"bn.js";var Ue=1e4;function Bn(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,o=new me(i.maximumFee.toString()),s=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===Ue){let a=new me(i.maximumFee.toString());return{amount:r.add(a),fee:a,expirationTime:s}}else{let a=Rt(r.mul(new me(Ue)),new me(Ue-i.transferFeeBasisPoints)),u=new me(i.maximumFee.toString()),c=a.sub(r).gt(u)?r.add(u):a,l=Rt(c.mul(new me(i.transferFeeBasisPoints)),new me(Ue)),m=l.gt(o)?o:l;return{amount:c,fee:m,expirationTime:s}}else{let a=Rt(r.mul(new me(i.transferFeeBasisPoints)),new me(Ue)),u=a.gt(o)?o:a;return{amount:r,fee:u,expirationTime:s}}}function Pe(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=Z(X({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new me(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Ue){let u=new me(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Rt(r.mul(new me(Ue)),new me(Ue-o.transferFeeBasisPoints)),c=new me(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=Rt(l.mul(new me(o.transferFeeBasisPoints)),new me(Ue)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Rt(r.mul(new me(o.transferFeeBasisPoints)),new me(Ue)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function wt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Rt(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new me(0))?t.add(new me(1)):t}var ur=ee("Raydium_accountInfo_util");async function ct(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=X({batchRequest:!1},t),o=ar(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(d=>d.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=ar(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&ur.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:d,executable:p,lamports:y,owner:f,rentEpoch:g}=m;return d.length!==2&&d[1]!=="base64"&&ur.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new Gs(f),rentEpoch:g}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&ur.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Sn(r,e,t){let n=await ct(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>Z(X({},i),{accountInfo:n[o]}))}async function cr({connection:r,address:e}){let t=await ct(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Ai(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Kn({key:s,state:Kn.deserialize(o.data)});n[s.toString()]=a,Ln[s.toString()]=a}return n}var Ln={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Kn({key:new Ai("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Kn.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"))})};var Rn=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}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 Xs.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)}}async calComputeBudget(e){try{let t=await this.getComputeBudgetConfig();if(t){let{instructions:n,instructionTypes:i}=In(t);this.instructions.unshift(...n),this.instructionTypes.unshift(...i);return}e&&this.instructions.unshift(...e)}catch{e&&this.instructions.unshift(...e)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Nn.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(t||{}):this.build(t)}build(e){let t=new Yt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async()=>{var i;let n=await Nt(this.connection);if(t.recentBlockhash=n,this.signers.length&&t.sign(...this.signers),gt([t]),(i=this.owner)!=null&&i.isKeyPair)return lr(this.connection,t,this.signers);if(this.signAllTransactions){let o=await this.signAllTransactions([t]);return await this.connection.sendRawTransaction(o[0].serialize(),{skipPreflight:!0})}throw new Error("please connect wallet first")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var p;let{sequentially:l,onTxUpdate:m}=c||{},d=await Nt(this.connection);if((p=this.owner)!=null&&p.isKeyPair)return await Promise.all(s.map(async(y,f)=>(y.recentBlockhash=d,await lr(this.connection,y,a[f]))));if(this.signAllTransactions){let y=s.map((g,w)=>(g.recentBlockhash=d,a[w].length&&g.sign(...a[w]),g));gt(y);let f=await this.signAllTransactions(y);if(l){let g=0,w=[],P=async()=>{if(!f[g])return;let k=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});w.push({txId:k,status:"sent"}),m==null||m([...w]),g++,this.connection.onSignature(k,h=>{let T=w.findIndex(x=>x.txId===k);T>-1&&(w[T].status=h.err?"error":"success"),m==null||m([...w]),P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),w.map(k=>k.txId)}else{let g=[];for(let w=0;w<f.length;w+=1){let P=await this.connection.sendRawTransaction(f[w].serialize(),{skipPreflight:!0});g.push(P)}return g}}throw new Error("please connect wallet first")},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){let m=e||{},{lookupTableCache:t={},lookupTableAddress:n=[]}=m,i=ve(m,["lookupTableCache","lookupTableAddress"]),o=X(X({},Ln),t),s=Array.from(new Set([...n,...this.lookupTableAddress])),a=[];for(let d of s)o[d]===void 0&&a.push(new Nn(d));let u=await cr({connection:this.connection,address:a});for(let[d,p]of Object.entries(u))o[d]=p;let c=new jt({payerKey:this.feePayer,recentBlockhash:await Nt(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(o)),l=new Ht(c);return l.sign(this.signers),{builder:this,transaction:l,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async()=>{var d;if(gt([l]),(d=this.owner)!=null&&d.isKeyPair)return l.sign([this.owner.signer]),await this.connection.sendTransaction(l,{skipPreflight:!0});if(this.signAllTransactions){let p=await this.signAllTransactions([l]);return await this.connection.sendTransaction(p[0],{skipPreflight:!0})}throw new Error("please connect wallet first")},extInfo:i||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var d;gt(s);let{sequentially:l,onTxUpdate:m}=c||{};if((d=this.owner)!=null&&d.isKeyPair)return await Promise.all(s.map(async p=>(p.sign([this.owner.signer]),await this.connection.sendTransaction(p))));if(this.signAllTransactions){let p=await this.signAllTransactions(s);if(l){let y=0,f=[],g=async()=>{if(!p[y])return;let w=await this.connection.sendTransaction(p[y],{skipPreflight:!0});f.push({txId:w,status:"sent"}),m==null||m([...f]),y++,this.connection.onSignature(w,P=>{let k=f.findIndex(h=>h.txId===w);k>-1&&(f[k].status=P.err?"error":"success"),m==null||m([...f]),g()},"processed"),this.connection.getSignatureStatus(w)};return g(),[]}else{let y=[];for(let f=0;f<p.length;f+=1){let g=await this.connection.sendTransaction(p[f],{skipPreflight:!0});y.push(g)}return y}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{autoComputeBudget:t=!1}=c,n=ve(c,["autoComputeBudget"]),i={instructions:[],instructionTypes:[]};if(t){let l=t?await this.getComputeBudgetConfig():void 0;i=t&&l?In(l):{instructions:[],instructionTypes:[]}}let o=this.signers.reduce((l,m)=>Z(X({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...i.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(f=>new Nn(f));if(u.length<12&&Xt({instructions:d,payer:this.feePayer,signers:y})||Xt({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Xt({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Yt().add(...i.instructions,...u)):s.push(new Yt().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);Xt({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new Yt().add(...i.instructions,...u)):s.push(new Yt().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var y;let{sequentially:m,onTxUpdate:d}=l||{},p=await Nt(this.connection);if(s.forEach(async(f,g)=>{f.recentBlockhash=p,a[g].length&&f.sign(...a[g])}),gt(s),(y=this.owner)!=null&&y.isKeyPair)return await Promise.all(s.map(async(f,g)=>await lr(this.connection,f,a[g])));if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(m){let g=0,w=[],P=async()=>{if(!f[g])return;let k=await this.connection.sendRawTransaction(f[g].serialize(),{skipPreflight:!0});w.push({txId:k,status:"sent"}),d==null||d([...w]),g++,this.connection.onSignature(k,h=>{let T=w.findIndex(x=>x.txId===k);T>-1&&(w[T].status=h.err?"error":"success"),d==null||d([...w]),P()},"processed"),this.connection.getSignatureStatus(k)};return await P(),w.map(k=>k.txId)}else{let g=[];for(let w=0;w<f.length;w+=1){let P=await this.connection.sendRawTransaction(f[w].serialize(),{skipPreflight:!0});g.push(P)}return g}}throw new Error("please connect wallet first")},extInfo:n||{}}}async sizeCheckBuildV0(e){let g=e||{},{autoComputeBudget:t=!1,lookupTableCache:n={},lookupTableAddress:i=[]}=g,o=ve(g,["autoComputeBudget","lookupTableCache","lookupTableAddress"]),s=X(X({},Ln),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let w of a)s[w]===void 0&&u.push(new Nn(w));let c=await cr({connection:this.connection,address:u});for(let[w,P]of Object.entries(c))s[w]=P;let l={instructions:[],instructionTypes:[]};if(t){let w=t?await this.getComputeBudgetConfig():void 0;l=t&&w?In(w):{instructions:[],instructionTypes:[]}}let m=await Nt(this.connection),d=this.signers.reduce((w,P)=>Z(X({},w),{[P.publicKey.toBase58()]:P}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(w=>{let P=[...f,w],k=t?[...l.instructions,...P]:P;if(zt({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})||zt({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(w);else{if(f.length===0)throw Error("item ins too big");let h={};for(let T of[...new Set(a)])s[T]!==void 0&&(h[T]=s[T]);if(t&&zt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s})){let T=new jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Ht(T))}else{let T=new jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Ht(T))}y.push(Array.from(new Set(f.map(T=>T.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(T=>d[T]).filter(T=>T!==void 0)),f=[w]}}),f.length>0){let P=[...new Set(f.map(k=>k.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(k=>d[k]).filter(k=>k!==void 0);if(t&&zt({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s})){let k=new jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Ht(k))}else{let k=new jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Ht(k))}y.push(P)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async w=>{var h;let{sequentially:P,onTxUpdate:k}=w||{};if(p.map(async(T,x)=>{y[x].length&&T.sign(y[x])}),gt(p),(h=this.owner)!=null&&h.isKeyPair)return await Promise.all(p.map(async T=>await this.connection.sendTransaction(T,{skipPreflight:!0})));if(this.signAllTransactions){let T=await this.signAllTransactions(p);if(P){let x=0,R=[],v=async()=>{if(!T[x])return;let D=await this.connection.sendTransaction(T[x],{skipPreflight:!0});R.push({txId:D,status:"sent"}),k==null||k([...R]),x++,this.connection.onSignature(D,ne=>{let Y=R.findIndex(ae=>ae.txId===D);Y>-1&&(R[Y].status=ne.err?"error":"success"),k==null||k([...R]),v()},"processed"),this.connection.getSignatureStatus(D)};return v(),[]}else{let x=[];for(let R=0;R<T.length;R+=1){let v=await this.connection.sendTransaction(T[R],{skipPreflight:!0});x.push(v)}return x}}throw new Error("please connect wallet first")},extInfo:o||{}}}};var mr=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Qt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ee(t)}createTxBuilder(e){return this.scope.checkOwner(),new Rn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(mr(e))}logInfo(...e){this.logger.info(mr(e))}logAndCreateError(...e){let t=mr(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{TOKEN_PROGRAM_ID as br,ASSOCIATED_TOKEN_PROGRAM_ID as $s}from"@solana/spl-token";import{PublicKey as Xe,TransactionInstruction as Cn,SystemProgram as Js,SYSVAR_RENT_PUBKEY as Gd}from"@solana/web3.js";var zs=K([F("instruction"),b("amountIn"),b("minAmountOut")]),Ys=K([F("instruction"),b("maxAmountIn"),b("amountOut")]),Cd=K([F("instruction"),F("nonce")]),js=K([F("instruction"),F("nonce"),b("startTime")]),Ed=K([b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalValue"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),b("swapBase2QuoteFee"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),b("swapQuote2BaseFee"),I("baseVault"),I("quoteVault"),I("baseMint"),I("quoteMint"),I("lpMint"),I("openOrders"),I("marketId"),I("marketProgramId"),I("targetOrders"),I("withdrawQueue"),I("lpVault"),I("owner"),b("lpReserve"),O(b(),3,"padding")]),Fd=K([b("accountType"),b("status"),b("nonce"),b("maxOrder"),b("depth"),b("baseDecimal"),b("quoteDecimal"),b("state"),b("resetFlag"),b("minSize"),b("volMaxCutRatio"),b("amountWaveRatio"),b("baseLotSize"),b("quoteLotSize"),b("minPriceMultiplier"),b("maxPriceMultiplier"),b("systemDecimalsValue"),b("abortTradeFactor"),b("priceTickMultiplier"),b("priceTick"),b("minSeparateNumerator"),b("minSeparateDenominator"),b("tradeFeeNumerator"),b("tradeFeeDenominator"),b("pnlNumerator"),b("pnlDenominator"),b("swapFeeNumerator"),b("swapFeeDenominator"),b("baseNeedTakePnl"),b("quoteNeedTakePnl"),b("quoteTotalPnl"),b("baseTotalPnl"),b("poolOpenTime"),b("punishPcAmount"),b("punishCoinAmount"),b("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),b("swapQuote2BaseFee"),b("swapBase2QuoteFee"),I("baseVault"),I("quoteVault"),I("baseMint"),I("quoteMint"),I("lpMint"),I("modelDataAccount"),I("openOrders"),I("marketId"),I("marketProgramId"),I("targetOrders"),I("owner"),O(b(),64,"padding")]),dr=K([F("instruction"),b("baseAmountIn"),b("quoteAmountIn"),b("fixedSide")]),pr=K([F("instruction"),b("amountIn")]);import{PublicKey as Hs}from"@solana/web3.js";var fr=new Hs("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Qs=5e4,Zs=K([b("x"),b("y"),b("price")]),Od=K([b("accountType"),b("status"),b("multiplier"),b("validDataCount"),O(Zs,Qs,"DataElement")]);var $d=ee("Raydium_liquidity_instruction");function Pi(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(dr.span);dr.encode({instruction:3,baseAmountIn:oe(i),quoteAmountIn:oe(o),fixedSide:s==="base"?ut:Ut},a);let u=[B({pubkey:br,isWritable:!1}),B({pubkey:new Xe(e.id)}),B({pubkey:new Xe(t.authority),isWritable:!1}),B({pubkey:new Xe(t.openOrders),isWritable:!1}),B({pubkey:new Xe(t.targetOrders)}),B({pubkey:new Xe(e.lpMint.address)}),B({pubkey:new Xe(t.vault.A)}),B({pubkey:new Xe(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(B({pubkey:fr})),u.push(B({pubkey:new Xe(e.marketId),isWritable:!1}),B({pubkey:n.baseTokenAccount}),B({pubkey:n.quoteTokenAccount}),B({pubkey:n.lpTokenAccount}),B({pubkey:n.owner,isWritable:!1,isSigner:!0}),B({pubkey:new Xe(t.marketEventQueue),isWritable:!1})),new Cn({programId:new Xe(e.programId),keys:u,data:a})}function yr(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=Gt(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(pr.span);pr.encode({instruction:4,amountIn:oe(i)},a);let u=[B({pubkey:br,isWritable:!1}),B({pubkey:o.id}),B({pubkey:o.authority,isWritable:!1}),B({pubkey:o.openOrders}),B({pubkey:o.targetOrders}),B({pubkey:o.mintLp.address}),B({pubkey:o.vault.A}),B({pubkey:o.vault.B})];return s===5?u.push(B({pubkey:fr})):(u.push(B({pubkey:o.withdrawQueue})),u.push(B({pubkey:o.vault.Lp}))),u.push(B({pubkey:o.marketProgramId,isWritable:!1}),B({pubkey:o.marketId}),B({pubkey:o.marketBaseVault}),B({pubkey:o.marketQuoteVault}),B({pubkey:o.marketAuthority,isWritable:!1}),B({pubkey:n.lpTokenAccount}),B({pubkey:n.baseTokenAccount}),B({pubkey:n.quoteTokenAccount}),B({pubkey:n.owner,isWritable:!1,isSigner:!0}),B({pubkey:o.marketEventQueue}),B({pubkey:o.marketBids}),B({pubkey:o.marketAsks})),new Cn({programId:o.programId,keys:u,data:a})}return new Cn({programId:o.programId,keys:[]})}function Ti({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:g,userLpVault:w,nonce:P,openTime:k,coinAmount:h,pcAmount:T}){let x=K([F("instruction"),F("nonce"),b("openTime"),b("pcAmount"),b("coinAmount")]),R=[{pubkey:br,isSigner:!1,isWritable:!1},{pubkey:$s,isSigner:!1,isWritable:!1},{pubkey:Js.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0}],v=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:k,coinAmount:h,pcAmount:T},v),{instruction:new Cn({keys:R,programId:r,data:v}),instructionType:$.AmmV4CreatePool}}import{TOKEN_PROGRAM_ID as Ke,TOKEN_2022_PROGRAM_ID as pt,ASSOCIATED_TOKEN_PROGRAM_ID as qi}from"@solana/spl-token";import{PublicKey as S,TransactionInstruction as De,ComputeBudgetProgram as Gi,SystemProgram as Ft,Keypair as Kr}from"@solana/web3.js";import Ui from"bn.js";import ua from"bn.js";function En(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function gr(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function wr(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Zt(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function xi(r,e){return Zt(r,e)?null:gr(r,e)}function Ii(r,e){return Zt(r,e)?null:wr(r,e)}var ip=Buffer.from("amm_config","utf8"),ea=Buffer.from("pool","utf8"),ta=Buffer.from("pool_vault","utf8"),na=Buffer.from("pool_reward_vault","utf8"),Bi=Buffer.from("position","utf8"),ra=Buffer.from("tick_array","utf8"),ia=Buffer.from("operation","utf8"),oa=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Si(r,e,t,n){return be([ea,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function kr(r,e,t){return be([ta,e.toBuffer(),t.toBuffer()],r)}function Ki(r,e,t){return be([na,e.toBuffer(),t.toBuffer()],r)}function te(r,e,t){return be([ra,e.toBuffer(),En(t)],r)}function kt(r,e,t,n){return be([Bi,e.toBuffer(),En(t),En(n)],r)}function ze(r,e){return be([Bi,e.toBuffer()],r)}function Fn(r){return be([Buffer.from("metadata","utf8"),Bt.toBuffer(),r.toBuffer()],Bt)}function hr(r){return be([ia],r)}function lt(r,e){return be([oa,e.toBuffer()],r)}import Ye from"bn.js";var de=new Ye(0),je=new Ye(1),$e=new Ye(-1),Me=new Ye(1).shln(64),Mn=new Ye(1).shln(128),Ar=Me.sub(je),$t=64,Li=Mn.subn(1),Te=-443636,Be=-Te,Ct=new Ye("4295048016"),Et=new Ye("79226673521066979257578248091"),Ni=16,Ri="59543866431248",Ci="184467440737095516",Ei="15793534762490258745",vn=new Ye(10).pow(new Ye(6));var ap=new Ye("18446744073700000000");var sa=15,J=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=C.getTickArrayStartIndexByTick(i,o),l=C.getInitializedTickArrayInRange(s,a,o,c,Math.floor(sa/2));for(let p=0;p<l.length;p++){let{publicKey:y}=te(t,n,l[p]);u.push(y)}let m=(await ct(e,u)).map(p=>p!==null?Jt.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=Z(X({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=C.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/J.tickCount(t)),a=n?C.searchLowBitFromStart(i,o,s-1,1,t):C.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=fe-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<fe;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=te(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=C.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<fe;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=te(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(C.checkIsOutOfBoundary(e)){if(e>Be)return!1;let n=C.getTickArrayStartIndexByTick(Te,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return fe*e}};import U from"bn.js";import{PublicKey as Fi}from"@solana/web3.js";import le from"bn.js";var Pr=14,Je=class{static maxTickInTickarrayBitmap(e){return e*fe*ht}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(!J.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-J.tickCount(n):t+J.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*fe,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=xi(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Ii(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-J.tickCount(n)}}}},en=class{static getBitmapOffset(e,t){if(!J.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Je.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=Je.maxTickInTickarrayBitmap(e),n=-t;if(Be<=t)throw Error(`extensionTickBoundary check error: ${Be}, ${t}`);if(n<=Te)throw Error(`extensionTickBoundary check error: ${n}, ${Te}`);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:C.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=J.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=Je.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=C.mergeTickArrayBitmap(e).shln(ht-1-a),c=Zt(512,u)?null:gr(512,u);if(c!==null){let l=t-c*J.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=C.mergeTickArrayBitmap(e).shrn(a),c=Zt(512,u)?null:wr(512,u);if(c!==null){let l=t+c*J.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-J.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Je.maxTickInTickarrayBitmap(t),i=Math.floor(n/J.tickCount(t));return e<0&&n!=0&&(i=ht-i),i}};import He from"bn.js";var tn=class{static getfeeGrowthInside(e,t,n){let i=new He(0),o=new He(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new He(0),a=new He(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=q.wrappingSubU128(q.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=q.wrappingSubU128(q.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=q.mulDivFloor(q.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Me),u=t.tokenFeesOwedA.add(a),c=q.mulDivFloor(q.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Me),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=q.mulDivFloor(q.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Me),u=t.tokenFeesOwedA.add(a),c=q.mulDivFloor(q.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Me),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=q.wrappingSubU128(u,c.growthInsideLastX64),m=q.mulDivFloor(l,t.liquidity,Me),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=q.wrappingSubU128(u,c.growthInsideLastX64),m=q.mulDivFloor(l,t.liquidity,Me),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(q.wrappingSubU128(q.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new He(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(q.wrappingSubU128(q.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static checkIsInRange(e,t){let n=An(e.state.currentPrice),i=An(t.priceLower),o=An(t.priceUpper);return ti(n,i)&&ei(n,o)}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var g,w,P,k;let a=G.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),u=G.getSqrtPriceX64FromTick(t.tickLower),c=G.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=H.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[Pe(m.amountA,(g=e.mintA.extensions)==null?void 0:g.feeConfig,s,!0),Pe(m.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)],[y,f]=[Pe(new He(new _(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),Pe(new He(new _(m.amountB.toString()).mul(l).toFixed(0)),(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:wt(d.expirationTime,p.expirationTime)}}};var Se=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.equals(e.mintA.mint),a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=At.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...d),{expectedAmountOut:m.mul($e),remainingAccounts:a,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.equals(e.mintB.mint),a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:g}=te(e.programId,e.id,f.nextStartIndex);a.push(g)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=At.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul($e),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Se.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?en.checkTickArrayIsInit(J.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):C.checkTickArrayIsInitialized(C.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=te(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,J.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=te(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/J.tickCount(e.tickSpacing)),i=t?C.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):C.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=J.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Je.nextInitializedTickArrayStartIndex(C.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=en.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Te||t>Be)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=Z(X({},m),{perSecond:q.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Fi(d)});if(p.tokenMint.equals(Fi.default))continue;if(n<=p.openTime.toNumber()||i.eq(de)){s.push(p);continue}let y=new le(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),g=q.mulDivFloor(f,p.emissionsPerSecondX64,i),w=p.rewardGrowthGlobalX64.add(g),P=q.mulDivFloor(f,p.emissionsPerSecondX64,Me),k=p.rewardTotalEmissioned.add(P);s.push(Z(X({},p),{rewardGrowthGlobalX64:w,rewardTotalEmissioned:k,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=C.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Je.maxTickInTickarrayBitmap(e),n=-t;return t>Be&&(t=Be),n<Te&&(n=Te),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!J.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/J.tickCount(t)*ht}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Sn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=vi.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=C.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=C.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=te(u.programId,u.id,m);o.push({pubkey:d}),i[d.toString()]=u.id}}let s=await Sn(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Jt.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=Z(X({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(ze(p,d).publicKey);let l=await ct(t,c,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Mi.decode(d.data),y=p.poolId.toString(),f=e.find(v=>v.state.id.toBase58()===y);if(f===void 0)continue;let g=f.state,w=C._getTickPriceLegacy({poolInfo:g,tick:p.tickLower,baseIn:!0}),P=C._getTickPriceLegacy({poolInfo:g,tick:p.tickUpper,baseIn:!0}),{amountA:k,amountB:h}=H.getAmountsFromLiquidity(g.sqrtPriceX64,w.tickSqrtPriceX64,P.tickSqrtPriceX64,p.liquidity,!1),T=1/(1-Math.sqrt(Math.sqrt(w.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:w.price,priceUpper:P.price,amountA:k,amountB:h,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(v=>Z(X({},v),{pendingReward:new le(0)})),leverage:T,tokenFeeAmountA:new le(0),tokenFeeAmountB:new le(0)}];let x=await C.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),R=await C.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=x,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=R}if(o){let d=Object.values(m),p=await ct(t,d,{batchRequest:i}),y={};for(let f=0;f<d.length;f++){let g=p[f];if(g===null)continue;let w=d[f].toString();y[w]=Jt.decode(g.data)}for(let{state:f,positionAccount:g}of e)if(!!g)for(let w of g){let P=`${f.programId.toString()}-${f.id.toString()}-${w.tickLower}`,k=`${f.programId.toString()}-${f.id.toString()}-${w.tickUpper}`,h=y[m[P].toString()],T=y[m[k].toString()],x=h.ticks[C.getTickOffsetInArray(w.tickLower,f.tickSpacing)],R=T.ticks[C.getTickOffsetInArray(w.tickUpper,f.tickSpacing)],{tokenFeeAmountA:v,tokenFeeAmountB:D}=await tn.GetPositionFees(f,w,x,R),ne=await tn.GetPositionRewards(f,w,x,R);w.tokenFeeAmountA=v.gte(new le(0))?v:new le(0),w.tokenFeeAmountB=D.gte(new le(0))?D:new le(0);for(let Y=0;Y<ne.length;Y++)w.rewardInfos[Y].pendingReward=ne[Y].gte(new le(0))?ne[Y]:new le(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,token2022Infos:i,epochInfo:o,amountIn:s,slippage:a,priceLimit:u=new _(0)}){var D,ne,Y,ae;let c;u.equals(new _(0))?c=n.equals(e.mintA.mint)?Ct.add(new le(1)):Et.sub(new le(1)):c=G.priceToSqrtPriceX64(u,e.mintA.decimals,e.mintB.decimals);let l=Bn(s,(D=i[n.toString()])==null?void 0:D.feeConfig,o,!1),{expectedAmountOut:m,remainingAccounts:d,executionPrice:p,feeAmount:y}=Se.getOutputAmountAndRemainAccounts(e,t,n,l.amount.sub((ne=l.fee)!=null?ne:de),c),f=e.mintA.mint.equals(n)?e.mintB.mint:e.mintA.mint,g=Bn(m,(Y=i[f.toString()])==null?void 0:Y.feeConfig,o,!1),w=G.sqrtPriceX64ToPrice(p,e.mintA.decimals,e.mintB.decimals),P=n.equals(e.mintA.mint)?w:new _(1).div(w),k=m.mul(new le(Math.floor((1-a)*1e10))).div(new le(1e10)),h=Bn(k,(ae=i[f.toString()])==null?void 0:ae.feeConfig,o,!1),T=e.mintA.mint.equals(n)?e.currentPrice:new _(1).div(e.currentPrice),x=new _(P).sub(T).abs(),R=T,v=new Oe(new _(x).mul(10**15).toFixed(0),new _(R).mul(10**15).toFixed(0));return{realAmountIn:l,amountOut:g,minAmountOut:h,expirationTime:wt(l.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:P,priceImpact:v,fee:y,remainingAccounts:d}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,token2022Infos:n,amountIn:i,tokenOut:o,slippage:s,epochInfo:a}){let u=i.token.equals(he.WSOL)?pn:i.token.mint,c=s.numerator.toNumber()/s.denominator.toNumber(),l=o.mint.equals(ot)?new he({mint:"sol",decimals:Wt.decimals}):o,{realAmountIn:m,amountOut:d,minAmountOut:p,expirationTime:y,currentPrice:f,executionPrice:g,priceImpact:w,fee:P,remainingAccounts:k}=await Se.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:u,amountIn:i.raw,slippage:c,token2022Infos:n,epochInfo:a}),h=Z(X({},m),{amount:new ce(i.token,m.amount),fee:m.fee===void 0?void 0:new ce(i.token,m.fee)}),T=Z(X({},d),{amount:new ce(l,d.amount),fee:d.fee===void 0?void 0:new ce(l,d.fee)}),x=Z(X({},p),{amount:new ce(l,p.amount),fee:p.fee===void 0?void 0:new ce(l,p.fee)}),R=new Ne({baseToken:i.token,denominator:new le(10).pow(new le(20+i.token.decimals)),quoteToken:l,numerator:f.mul(new _(10**(20+l.decimals))).toFixed(0)}),v=new Ne({baseToken:i.token,denominator:new le(10).pow(new le(20+i.token.decimals)),quoteToken:l,numerator:g.mul(new _(10**(20+l.decimals))).toFixed(0)}),D=new ce(i.token,P);return{realAmountIn:h,amountOut:T,minAmountOut:x,expirationTime:y,currentPrice:R,executionPrice:v,priceImpact:w,fee:D,remainingAccounts:k}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,g;let o=e[t],s=C.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=C.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*p,(f=o.rewardApr[1])!=null?f:0*p,(g=o.rewardApr[2])!=null?g:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[St(e.mintA.address).toString()],d=i[St(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=G.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),g=G.getSqrtPriceX64FromTick(s),w=G.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:k}=H.getAmountsFromLiquidityWithSlippage(f,g,w,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:T}=H.getAmountsFromLiquidityWithSlippage(f,g,w,o,!1,!1,0),x=new _(P.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(k.toString()).div(new _(10).pow(y)).mul(d.value)),R=new _(h.toString()).div(new _(10).pow(p)).mul(m.value).add(new _(T.toString()).div(new _(10).pow(y)).mul(d.value)),v=R.div(x.add(R)).div(R),ne=new _(l.volumeFee).mul(365).div(c).mul(v).mul(100).toNumber(),Y=3600*24*365,ae=e.rewardDefaultInfos.map(se=>{var j,et;let Q=se.mint.decimals,re=i[se.mint.address];return u<((j=se.startTime)!=null?j:0)||u>((et=se.endTime)!=null?et:0)||!se.perSecond||!re||Q===void 0?0:new _(re.value).mul(new _(se.perSecond).mul(Y)).div(new _(10).pow(Q)).mul(v).mul(100).toNumber()});return{feeApr:ne,rewardsApr:ae,apr:ne+ae.reduce((se,Q)=>se+Q,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var w;let l=G.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),m=G.getSqrtPriceX64FromTick(n),d=G.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,y=Pe(o,e[t?"mintA":"mintB"].extensions.feeConfig,u,!c),f=new le(new _(y.amount.sub((w=y.fee)!=null?w:de).toString()).mul(p).toFixed(0)),g;if(l.lte(m))g=t?H.getLiquidityFromTokenAmountA(m,d,f,!a):new le(0);else if(l.lte(d)){let P=H.getLiquidityFromTokenAmountA(l,d,f,!a),k=H.getLiquidityFromTokenAmountB(m,l,f);g=t?P:k}else g=t?new le(0):H.getLiquidityFromTokenAmountB(m,d,f);return Se.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:g,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){let u=G.getSqrtPriceX64FromTick(n),c=G.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=H.getAmountsFromLiquidity(G.priceToSqrtPriceX64(new _(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[Pe(m.amountA,t.mintA.extensions.feeConfig,e,!0),Pe(m.amountB,t.mintB.extensions.feeConfig,e,!0)],[y,f]=[Pe(m.amountA.muln(l),t.mintA.extensions.feeConfig,e,!0),Pe(m.amountB.muln(l),t.mintB.extensions.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:wt(d.expirationTime,p.expirationTime)}}};var q=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(de)||(o=o.add(je)),o}static mulDivFloor(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(de))throw new Error("division by 0");return e.mul(t).add(n.sub(je)).div(n)}static x64ToDecimal(e,t){return new _(e.toString()).div(_.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new U(e.mul(_.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Mn).sub(t).mod(Mn)}};function ye(r,e){return Tr(r.mul(e),64,256)}function aa(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Tr(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var G=class{static sqrtPriceX64ToPrice(e,t,n){return q.x64ToDecimal(e).pow(2).mul(_.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return q.decimalToX64(e.mul(_.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(de))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(de))return e;let o=t.shln($t);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?q.mulDivCeil(s,e,a):q.mulDivRoundingUp(s,je,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return q.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln($t);if(i)return e.add(o.div(t));{let s=q.mulDivRoundingUp(o,je,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Te||e>Be)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new U("18445821805675395072"):new U("18446744073709551616");return(t&2)!=0&&(n=ye(n,new U("18444899583751176192"))),(t&4)!=0&&(n=ye(n,new U("18443055278223355904"))),(t&8)!=0&&(n=ye(n,new U("18439367220385607680"))),(t&16)!=0&&(n=ye(n,new U("18431993317065453568"))),(t&32)!=0&&(n=ye(n,new U("18417254355718170624"))),(t&64)!=0&&(n=ye(n,new U("18387811781193609216"))),(t&128)!=0&&(n=ye(n,new U("18329067761203558400"))),(t&256)!=0&&(n=ye(n,new U("18212142134806163456"))),(t&512)!=0&&(n=ye(n,new U("17980523815641700352"))),(t&1024)!=0&&(n=ye(n,new U("17526086738831433728"))),(t&2048)!=0&&(n=ye(n,new U("16651378430235570176"))),(t&4096)!=0&&(n=ye(n,new U("15030750278694412288"))),(t&8192)!=0&&(n=ye(n,new U("12247334978884435968"))),(t&16384)!=0&&(n=ye(n,new U("8131365268886854656"))),(t&32768)!=0&&(n=ye(n,new U("3584323654725218816"))),(t&65536)!=0&&(n=ye(n,new U("696457651848324352"))),(t&131072)!=0&&(n=ye(n,new U("26294789957507116"))),(t&262144)!=0&&(n=ye(n,new U("37481735321082"))),e>0&&(n=Li.div(n)),n}static getTickFromPrice(e,t,n){return G.getTickFromSqrtPriceX64(G.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Et)||e.lt(Ct))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new U(t-64),i=aa(n,32,128),o=new U("8000000000000000","hex"),s=0,a=new U(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new U(0))&&s<Ni;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new U(Ri)),d=Tr(m.sub(new U(Ci)),64,128).toNumber(),p=Tr(m.add(new U(Ei)),64,128).toNumber();return d==p?d:G.getSqrtPriceX64FromTick(p).lte(e)?p:d}},Pt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=G.getTickFromSqrtPriceX64(G.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=Pt.getTickWithPriceAndTickspacing(e,t,n,i),s=G.getSqrtPriceX64FromTick(o);return G.sqrtPriceX64ToPrice(s,n,i)}},H=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(de))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln($t),s=t.sub(e);return i?q.mulDivRoundingUp(q.mulDivCeil(o,s,t),je,e):q.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(de))throw new Error("sqrtPriceX64A must greater than 0");return i?q.mulDivCeil(n,t.sub(e),Me):q.mulDivFloor(n,t.sub(e),Me)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?q.mulDivRoundingUp(a,je,Ar):a.shrn($t)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),q.mulDivFloor(n,Ar,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return H.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=H.getLiquidityFromTokenAmountA(e,n,i,!1),a=H.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return H.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:H.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new U(0)};if(e.lt(n)){let s=H.getTokenAmountAFromLiquidity(e,n,i,o),a=H.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new U(0),amountB:H.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=H.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new U(new _(u.toString()).mul(l).toFixed(0)),d=new U(new _(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){let c=G.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),l=G.getSqrtPriceX64FromTick(t),m=G.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=H.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[Pe(p.amountA,e.mintA.extensions.feeConfig,a,u),Pe(p.amountB,e.mintB.extensions.feeConfig,a,u)],[g,w]=[Pe(new U(new _(p.amountA.toString()).mul(d).toFixed(0)),e.mintA.extensions.feeConfig,a,u),Pe(new U(new _(p.amountB.toString()).mul(d).toFixed(0)),e.mintB.extensions.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:g,amountSlippageB:w,expirationTime:wt(y.expirationTime,f.expirationTime)}}},At=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,d,p,y){if(d.eq(de))throw new Error("amountSpecified must not be 0");if(y||(y=s?Ct.add(je):Et.sub(je)),s){if(y.lt(Ct))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Et))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=d.gt(de),g={amountSpecifiedRemaining:d,amountCalculated:de,sqrtPriceX64:m,tick:c>p?Math.min(p+J.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new U(0)},w=p,P=n[p],k=0;for(;!g.amountSpecifiedRemaining.eq(de)&&!g.sqrtPriceX64.eq(y);){if(k>10)throw Error("liquidity limit");let h={};h.sqrtPriceStartX64=g.sqrtPriceX64;let T=C.nextInitTick(P,g.tick,l,s),x=T||null,R=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let D=Se.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},w,s);if(!D.isExist)throw Error("swapCompute LiquidityInsufficient");w=D.nextStartIndex;let{publicKey:ne}=te(e,t,w);R=ne,P=n[w],x=C.firstInitializedTick(P,s)}h.tickNext=x.tick,h.initialized=x.liquidityGross.gtn(0),p!==w&&R&&(g.accounts.push(R),p=w),h.tickNext<Te?h.tickNext=Te:h.tickNext>Be&&(h.tickNext=Be),h.sqrtPriceNextX64=G.getSqrtPriceX64FromTick(h.tickNext);let v;if(s&&h.sqrtPriceNextX64.lt(y)||!s&&h.sqrtPriceNextX64.gt(y)?v=y:v=h.sqrtPriceNextX64,[g.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=At.swapStepCompute(g.sqrtPriceX64,v,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(h.feeAmount),f?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),g.amountCalculated=g.amountCalculated.sub(h.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(h.amountOut),g.amountCalculated=g.amountCalculated.add(h.amountIn.add(h.feeAmount))),g.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let D=x.liquidityNet;s&&(D=D.mul($e)),g.liquidity=H.addDelta(g.liquidity,D)}g.tick=s?h.tickNext-1:h.tickNext}else g.sqrtPriceX64!=h.sqrtPriceStartX64&&(g.tick=G.getTickFromSqrtPriceX64(g.sqrtPriceX64));++k}try{let{nextStartIndex:h,isExist:T}=J.nextInitializedTickArray(g.tick,l,s,i,o);T&&p!==h&&(g.accounts.push(te(e,t,h).publicKey),p=h)}catch{}return{amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new U(0),amountIn:new U(0),amountOut:new U(0),feeAmount:new U(0)},a=e.gte(t),u=i.gte(de);if(u){let l=q.mulDivFloor(i,vn.sub(new U(o.toString())),vn);s.amountIn=a?H.getTokenAmountAFromLiquidity(t,e,n,!0):H.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=G.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?H.getTokenAmountBFromLiquidity(t,e,n,!1):H.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul($e).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=G.getNextSqrtPriceX64FromOutput(e,n,i.mul($e),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=H.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=H.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:H.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:H.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul($e))&&(s.amountOut=i.mul($e)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=q.mulDivCeil(s.amountIn,new U(o),vn.sub(new U(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var fe=60,ht=512,C=class{static getTickArrayAddressByTick(e,t,n,i){let o=C.getTickArrayStartIndexByTick(n,i),{publicKey:s}=te(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=C.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=fe)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=J.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)*J.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*fe,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*fe,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*fe:e+t*fe}static mergeTickArrayBitmap(e){let t=new ua(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*fe));return[...C.searchLowBitFromStart(e,t,s-1,o,n),...C.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return C.searchHightBitFromStart(e,t,0,ht,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=C.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=te(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>C.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=J.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>C.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=J.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Te||e>Be}static nextInitTick(e,t,n,i){if(J.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(s=s+1;s<fe;){if(e.ticks[s].liquidityGross.gtn(0))return e.ticks[s];s=s+1}return null}static firstInitializedTick(e,t){if(t){let n=fe-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<fe;){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=G.getSqrtPriceX64FromTick(t),o=G.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new _(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new _(1).div(t),o=Pt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=G.getSqrtPriceX64FromTick(o),a=G.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new _(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=G.getSqrtPriceX64FromTick(t),o=G.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new _(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new _(1).div(t),o=Pt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=G.getSqrtPriceX64FromTick(o),a=G.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new _(1).div(a)}}};var hf=K([Ae(8),F("bump"),Lt("index"),I(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),Lt("tickSpacing"),O(b(),8,"")]),ca=K([Ee("blockTimestamp"),M("sqrtPriceX64"),M("cumulativeTimePriceX64"),O(M(),1,"")]),xr=K([Ae(8),Re("initialized"),I("poolId"),O(ca,1e3,"observations"),O(M(),5,"")]),la=K([F("rewardState"),b("openTime"),b("endTime"),b("lastUpdateTime"),M("emissionsPerSecondX64"),b("rewardTotalEmissioned"),b("rewardClaimed"),I("tokenMint"),I("tokenVault"),I("creator"),M("rewardGrowthGlobalX64")]),Af=K([Ae(8),F("bump"),I("ammConfig"),I("creator"),I("mintA"),I("mintB"),I("vaultA"),I("vaultB"),I("observationId"),F("mintDecimalsA"),F("mintDecimalsB"),Lt("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),we("tickCurrent"),Lt("observationIndex"),Lt("observationUpdateDuration"),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),b("protocolFeesTokenA"),b("protocolFeesTokenB"),M("swapInAmountTokenA"),M("swapOutAmountTokenB"),M("swapInAmountTokenB"),M("swapOutAmountTokenA"),F("status"),O(F(),7,""),O(la,3,"rewardInfos"),O(b(),16,"tickArrayBitmap"),b("totalFeesTokenA"),b("totalFeesClaimedTokenA"),b("totalFeesTokenB"),b("totalFeesClaimedTokenB"),b("fundFeesTokenA"),b("fundFeesTokenB"),b("startTime"),O(b(),15*4-3,"padding")]),ma=K([M("growthInsideLastX64"),b("rewardAmountOwed")]),Mi=K([Ae(8),F("bump"),I("nftMint"),I("poolId"),we("tickLower"),we("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),O(ma,3,"rewardInfos"),O(b(),8,"")]),Pf=K([Ae(8),F("bump"),I("poolId"),we("tickLowerIndex"),we("tickUpperIndex"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),b("tokenFeesOwedA"),b("tokenFeesOwedB"),O(M(),3,"rewardGrowthInside"),O(b(),8,"")]),da=K([we("tick"),mi("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),O(M(),3,"rewardGrowthsOutsideX64"),O(Ee(),13,"")]),Jt=K([Ae(8),I("poolId"),we("startTickIndex"),O(da,fe,"ticks"),F("initializedTickCount"),O(F(),115,"")]),Tf=K([Ae(329),O(I(),100,"whitelistMints")]),vi=K([Ae(8),I("poolId"),O(O(b(),8),Pr,"positiveTickArrayBitmap"),O(O(b(),8),Pr,"negativeTickArrayBitmap")]);import{PublicKey as Aa,Keypair as Pa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ta}from"@solana/spl-token";import qf from"bn.js";var _i=K([I("mint"),I("owner"),b("amount"),Ee("delegateOption"),I("delegate"),F("state"),Ee("isNativeOption"),b("isNative"),b("delegatedAmount"),Ee("closeAuthorityOption"),I("closeAuthority")]);function pa(r,...e){if(!(r instanceof Uint8Array))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(r.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${r.length}`)}function Ir(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 Vi(r,e){pa(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var fa=r=>r instanceof Uint8Array;var Vn=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),We=(r,e)=>r<<32-e|r>>>e,ba=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!ba)throw new Error("Non little-endian hardware is not supported");function ya(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Br(r){if(typeof r=="string"&&(r=ya(r)),!fa(r))throw new Error(`expected Uint8Array, got ${typeof r}`);return r}var _n=class{clone(){return this._cloneInto()}},Kf={}.toString;function Oi(r){let e=n=>r().update(Br(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function ga(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var On=class extends _n{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=Vn(this.buffer)}update(e){Ir(this);let{view:t,buffer:n,blockLen:i}=this;e=Br(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=Vn(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Ir(this),Vi(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;ga(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=Vn(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var wa=(r,e,t)=>r&e^~r&t,ka=(r,e,t)=>r&e^r&t^e&t,ha=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]),mt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),dt=new Uint32Array(64),Sr=class extends On{constructor(){super(64,32,8,!1),this.A=mt[0]|0,this.B=mt[1]|0,this.C=mt[2]|0,this.D=mt[3]|0,this.E=mt[4]|0,this.F=mt[5]|0,this.G=mt[6]|0,this.H=mt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)dt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=dt[m-15],p=dt[m-2],y=We(d,7)^We(d,18)^d>>>3,f=We(p,17)^We(p,19)^p>>>10;dt[m]=f+dt[m-7]+y+dt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=We(a,6)^We(a,11)^We(a,25),p=l+d+wa(a,u,c)+ha[m]+dt[m]|0,f=(We(n,2)^We(n,13)^We(n,22))+ka(n,i,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){dt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Wi=Oi(()=>new Sr);var zf=ee("Raydium_Util");function Di({fromPublicKey:r,programId:e=Ta}){let t=Pa.generate().publicKey.toBase58().slice(0,32);return{publicKey:xa(r,t,e),seed:t}}function xa(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Wi(n);return new Aa(i)}var Xi=ee("Raydium_Clmm"),qe={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],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]},nn=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y){let f=K([M("sqrtPriceX64"),b("startTime")]),g=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Ft.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],w=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},w);let P=Buffer.from([...qe.createPool,...w]);return new De({keys:g,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c}=e,l=Di({fromPublicKey:i,programId:n}),[m,d]=[new S(o.address),new S(s.address)],p=[Ft.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:l.seed,newAccountPubkey:l.publicKey,lamports:await t.getMinimumBalanceForRentExemption(xr.span),space:xr.span,programId:n})],{publicKey:y}=Si(n,a,m,d),{publicKey:f}=kr(n,y,m),{publicKey:g}=kr(n,y,d);return p.push(this.createPoolInstruction(n,y,i,a,l.publicKey,m,f,new S(o.programId),d,g,new S(s.programId),lt(n,y).publicKey,u,c)),{signers:[],instructions:p,instructionTypes:[$.CreateAccount,$.ClmmCreatePool],address:{poolId:y,observationId:l.publicKey,mintAVault:f,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,g,w,P,k,h,T,x,R,v,D,ne){let Y=K([we("tickLowerIndex"),we("tickUpperIndex"),we("tickArrayLowerStartIndex"),we("tickArrayUpperStartIndex"),M("liquidity"),b("amountMaxA"),b("amountMaxB"),Re("withMetadata"),F("optionBaseFlag"),Re("baseFlag")]),ae=[...ne?[{pubkey:ne,isSigner:!1,isWritable:!0}]:[]],se=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:Ft.programId,isSigner:!1,isWritable:!1},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:qi,isSigner:!1,isWritable:!1},{pubkey:Bt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...ae],Q=Buffer.alloc(Y.span);Y.encode({tickLowerIndex:P,tickUpperIndex:k,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:x,amountMaxA:R,amountMaxB:v,withMetadata:D==="create",baseFlag:!1,optionBaseFlag:0},Q);let re=Buffer.from([...qe.openPosition,...Q]);return new De({keys:se,programId:e,data:re})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new S(e.programId),new S(e.id)],y;if(l)y=new S((await l(1))[0]);else{let v=Kr.generate();m.push(v),y=v.publicKey}let f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=te(d,p,f),{publicKey:P}=te(d,p,g),{publicKey:k}=Fe(n.wallet,y,Ke),{publicKey:h}=Fn(y),{publicKey:T}=ze(d,y),{publicKey:x}=kt(d,p,i,o),R=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,k,h,x,w,P,T,n.tokenAccountA,n.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(e.mintA.address),new S(e.mintB.address),i,o,f,g,s,a,u,c);return{signers:m,instructions:[R],instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:w,tickArrayUpper:P,positionNftAccount:k,metadataAccount:h,personalPosition:T,protocolPosition:x}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new S(e.programId),new S(e.id)],y;if(l)y=new S((await l(1))[0]);else{let v=Kr.generate();m.push(v),y=v.publicKey}let f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=te(d,p,f),{publicKey:P}=te(d,p,g),{publicKey:k}=Fe(n.wallet,y,Ke),{publicKey:h}=Fn(y),{publicKey:T}=ze(d,y),{publicKey:x}=kt(d,p,i,o),R=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,k,h,x,w,P,T,n.tokenAccountA,n.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(e.mintA.address),new S(e.mintB.address),i,o,f,g,c,s,a,u,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?lt(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:w,tickArrayUpper:P,positionNftAccount:k,metadataAccount:h,personalPosition:T,protocolPosition:x},instructions:[R],signers:m,instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,g,w,P,k,h,T,x,R,v,D,ne){let Y=K([we("tickLowerIndex"),we("tickUpperIndex"),we("tickArrayLowerStartIndex"),we("tickArrayUpperStartIndex"),M("liquidity"),b("amountMaxA"),b("amountMaxB"),Re("withMetadata"),F("optionBaseFlag"),Re("baseFlag")]),ae=[...ne?[{pubkey:ne,isSigner:!1,isWritable:!0}]:[]],se=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:st,isSigner:!1,isWritable:!1},{pubkey:Ft.programId,isSigner:!1,isWritable:!1},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:qi,isSigner:!1,isWritable:!1},{pubkey:Bt,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...ae],Q=Buffer.alloc(Y.span);Y.encode({tickLowerIndex:P,tickUpperIndex:k,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:new Ui(0),amountMaxA:R==="MintA"?v:D,amountMaxB:R==="MintA"?D:v,withMetadata:x==="create",baseFlag:R==="MintA",optionBaseFlag:1},Q);let re=Buffer.from([...qe.openPosition,...Q]);return new De({keys:se,programId:e,data:re})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new S((await l(1))[0]);else{let v=Kr.generate();d.push(v),m=v.publicKey}let[p,y]=[new S(e.programId),new S(e.id)],f=C.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=C.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=te(p,y,f),{publicKey:P}=te(p,y,g),{publicKey:k}=Fe(n.wallet,m,Ke),{publicKey:h}=Fn(m),{publicKey:T}=ze(p,m),{publicKey:x}=kt(p,y,i,o),R=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,k,h,x,w,P,T,n.tokenAccountA,n.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(t.mintA.address),new S(t.mintB.address),i,o,f,g,s,a,u,c,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,g])?lt(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:w,tickArrayUpper:P,positionNftAccount:k,metadataAccount:h,personalPosition:T,protocolPosition:x},instructions:[R],signers:d,instructionTypes:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=K([]),a=[{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:Ft.programId,isSigner:!1,isWritable:!1},{pubkey:Ke,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...qe.closePosition,...u]);return new De({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new S(e.programId),{publicKey:s}=Fe(n.wallet,i.nftMint,Ke),{publicKey:a}=ze(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[$.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,g,w,P){let k=K([M("liquidity"),b("amountMaxA"),b("amountMaxB"),F("optionBaseFlag"),Re("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],x=Buffer.alloc(k.span);k.encode({liquidity:f,amountMaxA:g,amountMaxB:w,optionBaseFlag:0,baseFlag:!1},x);let R=Buffer.from([...qe.increaseLiquidity,...x]);return new De({keys:T,programId:e,data:R})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new S(e.programId),new S(e.id)],l=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=te(u,c,l),{publicKey:p}=te(u,c,m),{publicKey:y}=Fe(i.wallet,n.nftMint,Ke),{publicKey:f}=ze(u,n.nftMint),{publicKey:g}=kt(u,c,n.tickLower,n.tickUpper),w=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,g,d,p,i.tokenAccountA,i.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(e.mintA.address),new S(e.mintB.address),o,s,a,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},signers:[],instructions:[w],instructionTypes:[$.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new S(e.programId),new S(e.id)],l=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=te(u,c,l),{publicKey:p}=te(u,c,m),{publicKey:y}=Fe(i.wallet,n.nftMint,Ke),{publicKey:f}=ze(u,n.nftMint),{publicKey:g}=kt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,g,d,p,i.tokenAccountA,i.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(e.mintA.address),new S(e.mintB.address),o,s,a,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?lt(u,c).publicKey:void 0)],signers:[],instructionTypes:[$.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,g,w,P){let k=K([M("liquidity"),b("amountMaxA"),b("amountMaxB"),F("optionBaseFlag"),Re("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],x=Buffer.alloc(k.span);k.encode({liquidity:new Ui(0),amountMaxA:f==="MintA"?g:w,amountMaxB:f==="MintA"?w:g,baseFlag:f==="MintA",optionBaseFlag:1},x);let R=Buffer.from([...qe.increaseLiquidity,...x]);return new De({keys:T,programId:e,data:R})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,g,w,P,k){let h=K([M("liquidity"),b("amountMinA"),b("amountMinB")]),T=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...f.map(D=>[{pubkey:D.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:D.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:D.rewardMint,isSigner:!1,isWritable:!1}]).flat()],x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:fn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],R=Buffer.alloc(h.span);h.encode({liquidity:g,amountMinA:w,amountMinB:P},R);let v=Buffer.from([...qe.decreaseLiquidity,...R]);return new De({keys:x,programId:e,data:v})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new S(e.programId),new S(e.id)],m=C.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=C.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=te(c,l,m),{publicKey:y}=te(c,l,d),{publicKey:f}=Fe(i.wallet,n.nftMint,u),{publicKey:g}=ze(c,n.nftMint),{publicKey:w}=kt(c,l,n.tickLower,n.tickUpper),P=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)P.push({poolRewardVault:new S(t.rewardInfos[0].vault),ownerRewardVault:i.rewardAccounts[0],rewardMint:new S(e.rewardDefaultInfos[h].mint.address)});let k=[];return k.push(this.decreaseLiquidityInstruction(c,i.wallet,f,g,l,w,p,y,i.tokenAccountA,i.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(e.mintA.address),new S(e.mintB.address),P,o,s,a,Se.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?lt(c,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:g,protocolPosition:w},signers:[],instructions:k,instructionTypes:[$.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,d,p,y,f,g,w){let P=K([b("amount"),b("otherAmountThreshold"),M("sqrtPriceLimitX64"),Re("isBaseInput")]),k=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...m.map(R=>({pubkey:R,isSigner:!1,isWritable:!0}))],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:fn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...k],T=Buffer.alloc(P.span);P.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:g},T);let x=Buffer.from([...qe.swap,...T]);return new De({keys:h,programId:e,data:x})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new S(e.programId),new S(e.id)],[m,d]=[new S(t.vault.A),new S(t.vault.B)],[p,y]=[new S(e.mintA.address),new S(e.mintB.address)],f=e.mintA.address===i.toString(),g=[this.swapInstruction(c,n.wallet,l,new S(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:d,f?d:m,f?p:y,f?y:p,u,m,o,s,a,!0,lt(c,l).publicKey)];return{signers:[],instructions:g,instructionTypes:[$.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=K([b("openTime"),b("endTime"),M("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Ft.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:oe(l),endTime:oe(m),emissionsPerSecondX64:d},f);let g=Buffer.from([...qe.initReward,...f]);return new De({keys:y,programId:e,data:g})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new S(e.programId),new S(e.id)],a=Ki(o,s,i.mint).publicKey,u=hr(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new S(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[$.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,d){let p=K([F("rewardIndex"),M("emissionsPerSecondX64"),b("openTime"),b("endTime")]),y=[{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:Ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:oe(l),endTime:oe(m)},f);let g=Buffer.from([...qe.setRewardEmissions,...f]);return new De({keys:y,programId:e,data:g})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new S(e.programId),new S(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,u=new S(t.rewardInfos[d].vault),c=new S(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&Xi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=hr(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new S(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[$.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=K([F("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Ke,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:fn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...qe.collectReward,...l]);return new De({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new S(e.programId),new S(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new S(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Xi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[$.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static addComputations(){return[Gi.setComputeUnitLimit({units:1e6}),Gi.setComputeUnitPrice({microLamports:1})]}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new S(e.programId),new S(e.id)],[m,d]=[new S(t.vault.A),new S(t.vault.B)],[p,y]=[new S(e.mintA.address),new S(e.mintB.address)],f=e.mintA.address===i.toString(),g=[this.swapInstruction(c,n.wallet,l,new S(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,o,s,a,!1)];return{signers:[],instructions:g,instructionTypes:[$.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Sa}from"@solana/web3.js";import{PublicKey as Ia}from"@solana/web3.js";import zi from"bn.js";var cb=new zi(25),lb=new zi(1e4);var Ba=ee("Raydium_liquidity_serum");function Yi({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=Ia.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw Ba.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import Lb from"bn.js";function ft({name:r,programId:e,marketId:t}){let{publicKey:n}=be([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function Ka({programId:r}){return be([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function ji({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=ft({name:"amm_associated_seed",programId:a,marketId:t}),l=ft({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Ka({programId:a}),p=ft({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=ft({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=ft({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),g=ft({name:"open_order_associated_seed",programId:a,marketId:t}),w=ft({name:"target_associated_seed",programId:a,marketId:t}),P=ft({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:k}=Yi({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:g,targetOrders:w,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:k,lookupTableAccount:Sa.default}}import{PublicKey as Hi}from"@solana/web3.js";var _b=ee("Raydium_farm_config"),Vb=new Hi("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ob=new Hi("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Wn={"Standard SPL":0,"Option tokens":1},Qi={[wi.toString()]:3,[ki.toString()]:5,[hi.toString()]:6};var Fa=K([F("instruction")]),Ma=K([F("instruction")]),va=K([b("rewardState"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardLastUpdateTime"),b("totalReward"),b("totalRewardEmissioned"),b("rewardClaimed"),b("rewardPerSecond"),M("accRewardPerShare"),I("rewardVault"),I("rewardMint"),I("rewardSender"),b("rewardType"),O(b(),15,"padding")]),_a=K([b("state"),b("nonce"),I("lpVault"),I("rewardVault"),I(),I(),b(),b(),b("totalReward"),M("perShareReward"),b("lastSlot"),b("perSlotReward")]),Va=K([b("state"),b("nonce"),I("lpVault"),I("rewardVaultA"),b("totalRewardA"),M("perShareRewardA"),b("perSlotRewardA"),F("option"),I("rewardVaultB"),Ae(7),b("totalRewardB"),M("perShareRewardB"),b("perSlotRewardB"),b("lastSlot"),I()]),Oa=K([b(),b("state"),b("nonce"),b("validRewardTokenNum"),M("rewardMultiplier"),b("rewardPeriodMax"),b("rewardPeriodMin"),b("rewardPeriodExtend"),I("lpMint"),I("lpVault"),O(va,5,"rewardInfos"),I("creator"),I(),O(b(),32,"padding")]),La=new Proxy(_a,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Z(X({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),Na=new Proxy(Va,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Z(X({},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)}}),Ra=new Proxy(Oa,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return Z(X({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return Z(X({},o),{rewardType:((s=Object.entries(Wn).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Wa=K([b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),Da=K([F("instruction"),b("nonce"),O(Wa,5,"rewardTimeInfo")]),qa=K([F("instruction"),b("rewardReopenTime"),b("rewardEndTime"),b("rewardPerSecond")]),Ga=K([F("instruction"),b("isSet"),b("rewardPerSecond"),b("rewardOpenTime"),b("rewardEndTime"),b("rewardType")]),zb=K([b("state"),I("id"),I("owner"),b("deposited"),O(b(),1,"rewardDebts")]),Zi=K([b("state"),I("id"),I("owner"),b("deposited"),O(M(),1,"rewardDebts"),b(""),b("voteLockedBalance"),O(b(),15)]),Yb=K([b("state"),I("id"),I("owner"),b("deposited"),O(b(),2,"rewardDebts")]),Ca=K([b("state"),I("id"),I("owner"),b("deposited"),O(M(),2,"rewardDebts"),O(b(),17)]),Ea=K([b(),b("state"),I("id"),I("owner"),b("deposited"),O(M(),5,"rewardDebts"),O(b(),16)]),Tt=K([F("instruction"),b("amount")]),Ua=K([I("mint"),I("grantAuthority"),b("baselineVoteWeightScaledFactor"),b("maxExtraLockupVoteWeightScaledFactor"),b("lockupSaturationSecs"),li("digitShift"),O(F(),7,"reserved1"),O(b(),7,"reserved2")]),Xa=K([Ae(8),I("governanceProgramId"),I("realm"),I("realmGoverningTokenMint"),I("realmAuthority"),O(F(),32,"reserved1"),O(Ua,4,"votingMints"),xn("timeOffset"),F("bump"),O(F(),7,"reserved2"),O(b(),11,"reserved3")]),za=K([xn("startTime"),xn("endTime"),F("kind"),O(F(),15,"reserved")]),Ya=K([O(za,1,"lockup"),b("amountDeposited_native"),b("amountInitiallyLockedNative"),Re("isUsed"),Re("allowClawback"),F("votingMintConfigIdx"),O(F(),29,"reserved")]),ja=K([Ae(8),I("voterAuthority"),I("registrar"),O(Ya,32,"deposits"),F("voterBump"),F("voterWweightRecordBump"),O(F(),94,"reserved")]);import ny from"bn.js";var ky=ee("Raydium.farm.util");function Dn({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=be([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}import{PublicKey as xe,SystemProgram as Ry,SYSVAR_RENT_PUBKEY as Cy,SYSVAR_CLOCK_PUBKEY as $i,TransactionInstruction as Lr}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as My,TOKEN_PROGRAM_ID as Nr,ASSOCIATED_TOKEN_PROGRAM_ID as vy}from"@solana/spl-token";import Vy from"bn.js";var Qy=ee("Raydium_farm_instruction"),Zy={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 Ji(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new xe(e.programId),new xe(e.id)],c=Dn({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Tt.span);Tt.encode({instruction:2,amount:oe(s)},l);let m=[B({pubkey:Nr,isWritable:!1}),B({pubkey:u}),B({pubkey:new xe(t.authority),isWritable:!1}),B({pubkey:new xe(t.lpVault)}),B({pubkey:c}),B({pubkey:o,isWritable:!1,isSigner:!0}),B({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(B({pubkey:new xe(t.rewardInfos[d].vault)})),m.push(B({pubkey:i[d]}));return new Lr({programId:a,keys:m,data:l})}function eo(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new xe(e.programId),new xe(e.id)],l=Dn({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Tt.span);Tt.encode({instruction:12,amount:oe(s)},m);let d=[B({pubkey:c}),B({pubkey:new xe(t.authority),isWritable:!1}),B({pubkey:l}),B({pubkey:o,isWritable:!1,isSigner:!0}),B({pubkey:n}),B({pubkey:new xe(t.lpVault)}),B({pubkey:i[0]}),B({pubkey:new xe(t.rewardInfos[0].vault)}),B({pubkey:$i,isWritable:!1}),B({pubkey:Nr,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(B({pubkey:i[p]})),d.push(B({pubkey:new xe(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(B({pubkey:p}));return new Lr({programId:u,keys:d,data:m})}function to(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new xe(e.programId),new xe(e.id)],l=Dn({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Tt.span);Tt.encode({instruction:11,amount:oe(s)},m);let d=[B({pubkey:c}),B({pubkey:new xe(t.authority),isWritable:!1}),B({pubkey:l}),B({pubkey:o,isWritable:!1,isSigner:!0}),B({pubkey:n}),B({pubkey:new xe(t.lpVault)}),B({pubkey:i[0]}),B({pubkey:new xe(t.rewardInfos[0].vault)}),B({pubkey:$i,isWritable:!1}),B({pubkey:Nr,isWritable:!1})];if(a)for(let p of a)d.push(B({pubkey:p}));return new Lr({programId:u,keys:d,data:m})}import Mt from"bn.js";var Rr=class extends Qt{constructor(e){super(e)}async load(){this.checkDisabled()}computePairAmount({poolInfo:e,amount:t,slippage:n,baseIn:i}){let o=new Mt(new _(t).mul(10**e[i?"mintA":"mintB"].decimals).toFixed(0)),s=di(e[i?"mintB":"mintA"]),[a,u]=[new Mt(new _(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new Mt(new _(e.mintAmountB).mul(10**e.mintB.decimals).toString())];this.logDebug("baseReserve:",a.toString(),"quoteReserve:",u.toString()),this.logDebug("tokenIn:",i?e.mintA.symbol:e.mintB.symbol,"amountIn:",o.toString(),"anotherToken:",i?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let c=i?"base":"quote";this.logDebug("input side:",c);let l=ut;o.isZero()||(l=c==="base"?hn(o.mul(u),a):hn(o.mul(a),u));let m=hn(o.mul(new Mt(e.lpAmount)),new Mt(c==="base"?e.mintAmountA:e.mintAmountB)),p=new Oe(Ut).add(n).mul(l).quotient,y=new ce(s,l),f=new ce(s,p);return this.logDebug("anotherAmount:",y.toFixed(),"maxAnotherAmount:",f.toFixed()),{anotherAmount:y,maxAnotherAmount:f,liquidity:m}}async addLiquidity(e){let{poolInfo:t,amountInA:n,amountInB:i,fixedSide:o,config:s,txVersion:a}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let u=this.scope.mintToTokenAmount({mint:St(t.mintA.address),amount:n.toString()}),c=this.scope.mintToTokenAmount({mint:St(t.mintB.address),amount:i.toString()});this.logDebug("amountInA:",u,"amountInB:",c),(u.isZero()||c.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:u.toFixed(),amountInB:c.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=X({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),[p,y]=[u.token,c.token],f=await l.getCreatedTokenAccount({mint:p.mint,associatedOnly:!1}),g=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let w=await l.getCreatedTokenAccount({mint:new Qe(t.lpMint.address)}),P=[p,y],k=[f,g],h=[u.raw,c.raw],T=u.token.mint.toBase58()===t.mintA.address?"base":"quote",x="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",o),T==="quote"?(P.reverse(),k.reverse(),h.reverse(),x=o==="a"?"quote":"base"):T==="base"&&(x=o==="a"?"base":"quote");let[R,v]=P,[D,ne]=k,[Y,ae]=h,se=await this.scope.api.fetchPoolKeysById({id:t.id}),Q=this.createTxBuilder(),rn=await l.handleTokenAccount({side:"in",amount:Y,mint:R.mint,tokenAccount:D,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:re}=rn,j=ve(rn,["tokenAccount"]);Q.addInstruction(j);let vt=await l.handleTokenAccount({side:"in",amount:ae,mint:v.mint,tokenAccount:ne,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:et}=vt,qn=ve(vt,["tokenAccount"]);Q.addInstruction(qn);let _t=await l.handleTokenAccount({side:"out",amount:0,mint:new Qe(t.lpMint.address),tokenAccount:w,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Gn}=_t,bt=ve(_t,["tokenAccount"]);return Q.addInstruction(bt),Q.addInstruction({instructions:[Pi({poolInfo:t,poolKeys:se,userKeys:{baseTokenAccount:re,quoteTokenAccount:et,lpTokenAccount:Gn,owner:this.scope.ownerPubKey},baseAmountIn:Y,quoteAmountIn:ae,fixedSide:x})],instructionTypes:[t.pooltype.includes("StablePool")?$.AmmV5AddLiquidity:$.AmmV4AddLiquidity],lookupTableAddress:se.lookupTableAccount?[se.lookupTableAccount]:[]}),a===0&&await Q.buildV0(),Q.build()}async removeLiquidity(e){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:t,amountIn:n,config:i,txVersion:o}=e,s=await this.scope.api.fetchPoolKeysById({id:t.id}),[a,u,c]=[new Qe(t.mintA.address),new Qe(t.mintB.address),new Qe(t.lpMint.address)];this.logDebug("amountIn:",n),n.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",n.toString());let{account:l}=this.scope,m=await l.getCreatedTokenAccount({mint:c,associatedOnly:!1});m||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",l.tokenAccounts);let d=await l.getCreatedTokenAccount({mint:a}),p=await l.getCreatedTokenAccount({mint:u}),y=this.createTxBuilder(),{bypassAssociatedCheck:f,checkCreateATAOwner:g}=X({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},i),T=await l.handleTokenAccount({side:"out",amount:0,mint:a,tokenAccount:d,bypassAssociatedCheck:f,checkCreateATAOwner:g}),{tokenAccount:w}=T,P=ve(T,["tokenAccount"]);y.addInstruction(P);let x=await l.handleTokenAccount({side:"out",amount:0,mint:u,tokenAccount:p,bypassAssociatedCheck:f,checkCreateATAOwner:g}),{tokenAccount:k}=x,h=ve(x,["tokenAccount"]);return y.addInstruction(h),y.addInstruction({instructions:[yr({poolInfo:t,poolKeys:s,userKeys:{lpTokenAccount:m,baseTokenAccount:w,quoteTokenAccount:k,owner:this.scope.ownerPubKey},amountIn:n})],lookupTableAddress:s.lookupTableAccount?[s.lookupTableAccount]:[],instructionTypes:[t.pooltype.includes("StablePool")?$.AmmV5RemoveLiquidity:$.AmmV4RemoveLiquidity]}),o===0?await y.buildV0():y.build()}async removeAllLpAndCreateClmmPosition({poolInfo:e,clmmPoolInfo:t,removeLpAmount:n,createPositionInfo:i,farmInfo:o,userFarmLpAmount:s,base:a,computeBudgetConfig:u,payer:c,tokenProgram:l=ro,checkCreateATAOwner:m=!0,getEphemeralSigners:d,txVersion:p}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(e.mintA.address===t.mintA.address||e.mintA.address===t.mintB.address)||!(e.mintB.address===t.mintA.address||e.mintB.address===t.mintB.address))throw Error("mint check error");let y=this.createTxBuilder(),f={};for(let Q of this.scope.account.tokenAccountRawInfos)(f[Q.accountInfo.mint.toString()]===void 0||Fe(this.scope.ownerPubKey,Q.accountInfo.mint,ro).publicKey.equals(Q.pubkey))&&(f[Q.accountInfo.mint.toString()]=Q.pubkey);let g=f[e.lpMint.address];if(g===void 0)throw Error("find lp account error in trade accounts");if(o!==void 0&&!(s!=null&&s.isZero())){let Q=[];for(let bt of o.rewardInfos){let rn=bt.mint.address===he.WSOL.mint.toString();if(f[bt.mint.address])Q.push(f[bt.mint.address]);else{let{account:vt,instructionParams:_t}=await this.scope.account.getOrCreateTokenAccount({mint:new Qe(bt.mint.address),tokenProgram:l,owner:this.scope.ownerPubKey,skipCloseAccount:!rn,createInfo:{payer:c||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:m});vt||this.logAndCreateError("farm reward account not found:",bt.mint.address),_t&&y.addInstruction(_t),Q.push(vt)}}let re=await this.scope.api.fetchFarmKeysById({id:o.id}),j={amount:s,owner:this.scope.ownerPubKey,farmInfo:o,farmKeys:re,lpAccount:g,rewardAccounts:Q},et=Qi[o.programId],qn=et===6?Ji(j):et===5?eo(j):to(j),Gn={3:$.FarmV3Withdraw,5:$.FarmV5Withdraw,6:$.FarmV6Withdraw};y.addInstruction({instructions:[qn],instructionTypes:[Gn[et]]})}let w=n.add(s!=null?s:new Mt(0)),P=e.mintA.address===he.WSOL.mint.toString(),k=e.mintB.address===he.WSOL.mint.toString(),{account:h,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:new Qe(e.mintA.address),tokenProgram:new Qe(e.mintA.programId),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:a==="MintA"?i.baseAmount:i.otherAmountMax}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!P,checkCreateATAOwner:m});if(y.addInstruction(T||{}),h===void 0)throw new Error("base token account not found");let{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new Qe(e.mintB.programId),mint:new Qe(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey,amount:a==="MintA"?i.otherAmountMax:i.baseAmount}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!k,checkCreateATAOwner:m});if(y.addInstruction(R||{}),x===void 0)throw new Error("quote token account not found");let v=await this.scope.api.fetchPoolKeysById({id:e.id}),D=yr({poolInfo:e,poolKeys:v,userKeys:{lpTokenAccount:g,baseTokenAccount:h,quoteTokenAccount:x,owner:this.scope.ownerPubKey},amountIn:w});y.addInstruction({instructions:[D],instructionTypes:[e.pooltype.includes("StablePool")?$.AmmV5RemoveLiquidity:$.AmmV4RemoveLiquidity],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]});let[ne,Y]=e.mintA.address===t.mintA.address?[h,x]:[x,h],ae=await this.scope.api.fetchPoolKeysById({id:t.id}),se=await nn.openPositionFromBaseInstructions(Z(X({poolInfo:t,poolKeys:ae,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:ne,tokenAccountB:Y},withMetadata:"create"},i),{base:a,getEphemeralSigners:d}));return y.addInstruction({instructions:[...se.instructions],signers:se.signers,instructionTypes:[...se.instructionTypes],lookupTableAddress:ae.lookupTableAccount?[ae.lookupTableAccount]:[]}),y.versionBuild({txVersion:p})}async createPoolV4({programId:e,marketInfo:t,baseMintInfo:n,quoteMintInfo:i,baseAmount:o,quoteAmount:s,startTime:a,ownerInfo:u,associatedOnly:c=!1,checkCreateATAOwner:l=!1,tokenProgram:m,txVersion:d}){var D;let p=u.feePayer||((D=this.scope.owner)==null?void 0:D.publicKey),y=u.useSOLBalance&&n.mint.equals(no),f=u.useSOLBalance&&i.mint.equals(no),g=this.createTxBuilder(),{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:n.mint,owner:this.scope.ownerPubKey,createInfo:y?{payer:p,amount:o}:void 0,notUseTokenAccount:y,skipCloseAccount:!y,associatedOnly:y?!1:c,checkCreateATAOwner:l});g.addInstruction(P||{});let{account:k,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:f?{payer:p,amount:s}:void 0,notUseTokenAccount:f,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:l});if(g.addInstruction(h||{}),w===void 0||k===void 0)throw Error("you don't has some token account");let T=ji({version:4,marketVersion:3,marketId:t.marketId,baseMint:n.mint,quoteMint:i.mint,baseDecimals:n.decimals,quoteDecimals:i.decimals,programId:e,marketProgramId:t.programId}),x={programId:e,ammId:T.id,ammAuthority:T.authority,ammOpenOrders:T.openOrders,lpMint:T.lpMint,coinMint:T.baseMint,pcMint:T.quoteMint,coinVault:T.baseVault,pcVault:T.quoteVault,withdrawQueue:T.withdrawQueue,ammTargetOrders:T.targetOrders,poolTempLp:T.lpVault,marketProgramId:T.marketProgramId,marketId:T.marketId},{instruction:R,instructionType:v}=Ti(Z(X({},x),{userWallet:this.scope.ownerPubKey,userCoinVault:w,userPcVault:k,userLpVault:Fe(this.scope.ownerPubKey,T.lpMint,m).publicKey,nonce:T.nonce,openTime:a,coinAmount:o,pcAmount:s}));return g.addInstruction({instructions:[R],instructionTypes:[v]}),await g.calComputeBudget(nn.addComputations()),g.versionBuild({txVersion:d,extInfo:{address:x}})}};export{Rr as default};
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=liquidity.mjs.map