@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 108 kB
JavaScript
var $i=Object.defineProperty,er=Object.defineProperties;var tr=Object.getOwnPropertyDescriptors;var Pt=Object.getOwnPropertySymbols;var _n=Object.prototype.hasOwnProperty,Wn=Object.prototype.propertyIsEnumerable;var Dn=(n,e,t)=>e in n?$i(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,G=(n,e)=>{for(var t in e||(e={}))_n.call(e,t)&&Dn(n,t,e[t]);if(Pt)for(var t of Pt(e))Wn.call(e,t)&&Dn(n,t,e[t]);return n},Z=(n,e)=>er(n,tr(e));var Te=(n,e)=>{var t={};for(var i in n)_n.call(n,i)&&e.indexOf(i)<0&&(t[i]=n[i]);if(n!=null&&Pt)for(var i of Pt(n))e.indexOf(i)<0&&Wn.call(n,i)&&(t[i]=n[i]);return t};import{PublicKey as B}from"@solana/web3.js";import{AccountLayout as Ps,NATIVE_MINT as Jt,TOKEN_PROGRAM_ID as be}from"@solana/spl-token";import Be from"bn.js";var qe=9e15,Ne=1e9,$t="0123456789abcdef",Tt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",ht="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",en={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-qe,maxE:qe,crypto:!1},Un,he,D=!0,xt="[DecimalError] ",Ke=xt+"Invalid argument: ",Xn=xt+"Precision limit exceeded",zn=xt+"crypto unavailable",Hn="[object Decimal]",ie=Math.floor,$=Math.pow,nr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ir=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,rr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Zn=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,de=1e7,M=7,or=9007199254740991,sr=Tt.length-1,tn=ht.length-1,y={toStringTag:Hn};y.absoluteValue=y.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),K(n)};y.ceil=function(){return K(new this.constructor(this),this.e+1,2)};y.clampedTo=y.clamp=function(n,e){var t,i=this,r=i.constructor;if(n=new r(n),e=new r(e),!n.s||!e.s)return new r(NaN);if(n.gt(e))throw Error(Ke+e);return t=i.cmp(n),t<0?n:i.cmp(e)>0?e:new r(i)};y.comparedTo=y.cmp=function(n){var e,t,i,r,o=this,s=o.d,a=(n=new o.constructor(n)).d,c=o.s,u=n.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==n.e)return o.e>n.e^c<0?1:-1;for(i=s.length,r=a.length,e=0,t=i<r?i:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^c<0?1:-1;return i===r?0:i>r^c<0?1:-1};y.cosine=y.cos=function(){var n,e,t=this,i=t.constructor;return t.d?t.d[0]?(n=i.precision,e=i.rounding,i.precision=n+Math.max(t.e,t.sd())+M,i.rounding=1,t=ar(i,$n(i,t)),i.precision=n,i.rounding=e,K(he==2||he==3?t.neg():t,n,e,!0)):new i(1):new i(NaN)};y.cubeRoot=y.cbrt=function(){var n,e,t,i,r,o,s,a,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(D=!1,o=l.s*$(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=ne(l.d),n=l.e,(o=(n-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=$(t,1/3),n=ie((n+1)/3)-(n%3==(n<0?-1:2)),o==1/0?t="5e"+n:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+n),i=new m(t),i.s=l.s):i=new m(o.toString()),s=(n=m.precision)+3;;)if(a=i,c=a.times(a).times(a),u=c.plus(l),i=X(u.plus(l).times(a),u.plus(c),s+2,1),ne(a.d).slice(0,s)===(t=ne(i.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(K(a,n+1,0),a.times(a).times(a).eq(l))){i=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(K(i,n+1,1),e=!i.times(i).times(i).eq(l));break}return D=!0,K(i,n,m.rounding,e)};y.decimalPlaces=y.dp=function(){var n,e=this.d,t=NaN;if(e){if(n=e.length-1,t=(n-ie(this.e/M))*M,n=e[n],n)for(;n%10==0;n/=10)t--;t<0&&(t=0)}return t};y.dividedBy=y.div=function(n){return X(this,new this.constructor(n))};y.dividedToIntegerBy=y.divToInt=function(n){var e=this,t=e.constructor;return K(X(e,new t(n),0,1,1),t.precision,t.rounding)};y.equals=y.eq=function(n){return this.cmp(n)===0};y.floor=function(){return K(new this.constructor(this),this.e+1,3)};y.greaterThan=y.gt=function(n){return this.cmp(n)>0};y.greaterThanOrEqualTo=y.gte=function(n){var e=this.cmp(n);return e==1||e===0};y.hyperbolicCosine=y.cosh=function(){var n,e,t,i,r,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,i=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(n=Math.ceil(r/3),e=(1/St(4,n)).toString()):(n=16,e="2.3283064365386962890625e-10"),o=Ge(s,1,o.times(e),new s(1),!0);for(var c,u=n,l=new s(8);u--;)c=o.times(o),o=a.minus(c.times(l.minus(c.times(l))));return K(o,s.precision=t,s.rounding=i,!0)};y.hyperbolicSine=y.sinh=function(){var n,e,t,i,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,i=r.d.length,i<3)r=Ge(o,2,r,r,!0);else{n=1.4*Math.sqrt(i),n=n>16?16:n|0,r=r.times(1/St(5,n)),r=Ge(o,2,r,r,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);n--;)s=r.times(r),r=r.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,K(r,e,t,!0)};y.hyperbolicTangent=y.tanh=function(){var n,e,t=this,i=t.constructor;return t.isFinite()?t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+7,i.rounding=1,X(t.sinh(),t.cosh(),i.precision=n,i.rounding=e)):new i(t.s)};y.inverseCosine=y.acos=function(){var n,e=this,t=e.constructor,i=e.abs().cmp(1),r=t.precision,o=t.rounding;return i!==-1?i===0?e.isNeg()?me(t,r,o):new t(0):new t(NaN):e.isZero()?me(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),n=me(t,r+4,o).times(.5),t.precision=r,t.rounding=o,n.minus(e))};y.inverseHyperbolicCosine=y.acosh=function(){var n,e,t=this,i=t.constructor;return t.lte(1)?new i(t.eq(1)?0:NaN):t.isFinite()?(n=i.precision,e=i.rounding,i.precision=n+Math.max(Math.abs(t.e),t.sd())+4,i.rounding=1,D=!1,t=t.times(t).minus(1).sqrt().plus(t),D=!0,i.precision=n,i.rounding=e,t.ln()):new i(t)};y.inverseHyperbolicSine=y.asinh=function(){var n,e,t=this,i=t.constructor;return!t.isFinite()||t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+2*Math.max(Math.abs(t.e),t.sd())+6,i.rounding=1,D=!1,t=t.times(t).plus(1).sqrt().plus(t),D=!0,i.precision=n,i.rounding=e,t.ln())};y.inverseHyperbolicTangent=y.atanh=function(){var n,e,t,i,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(n=o.precision,e=o.rounding,i=r.sd(),Math.max(i,n)<2*-r.e-1?K(new o(r),n,e,!0):(o.precision=t=i-r.e,r=X(r.plus(1),new o(1).minus(r),t+n,1),o.precision=n+4,o.rounding=1,r=r.ln(),o.precision=n,o.rounding=e,r.times(.5))):new o(NaN)};y.inverseSine=y.asin=function(){var n,e,t,i,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,i=o.rounding,e!==-1?e===0?(n=me(o,t+4,i).times(.5),n.s=r.s,n):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=i,r.times(2)))};y.inverseTangent=y.atan=function(){var n,e,t,i,r,o,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&m+4<=tn)return s=me(l,m+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=tn)return s=me(l,m+4,d).times(.5),s.s=u.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/M+2|0),n=t;n;--n)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(D=!1,e=Math.ceil(a/M),i=1,c=u.times(u),s=new l(u),r=u;n!==-1;)if(r=r.times(c),o=s.minus(r.div(i+=2)),r=r.times(c),s=o.plus(r.div(i+=2)),s.d[e]!==void 0)for(n=e;s.d[n]===o.d[n]&&n--;);return t&&(s=s.times(2<<t-1)),D=!0,K(s,l.precision=m,l.rounding=d,!0)};y.isFinite=function(){return!!this.d};y.isInteger=y.isInt=function(){return!!this.d&&ie(this.e/M)>this.d.length-2};y.isNaN=function(){return!this.s};y.isNegative=y.isNeg=function(){return this.s<0};y.isPositive=y.isPos=function(){return this.s>0};y.isZero=function(){return!!this.d&&this.d[0]===0};y.lessThan=y.lt=function(n){return this.cmp(n)<0};y.lessThanOrEqualTo=y.lte=function(n){return this.cmp(n)<1};y.logarithm=y.log=function(n){var e,t,i,r,o,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding,p=5;if(n==null)n=new l(10),e=!0;else{if(n=new l(n),t=n.d,n.s<0||!t||!t[0]||n.eq(1))return new l(NaN);e=n.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if(D=!1,a=m+p,s=Ce(u,a),i=e?Bt(l,a+10):Ce(n,a),c=X(s,i,a,1),$e(c.d,r=m,d))do if(a+=10,s=Ce(u,a),i=e?Bt(l,a+10):Ce(n,a),c=X(s,i,a,1),!o){+ne(c.d).slice(r+1,r+15)+1==1e14&&(c=K(c,m+1,0));break}while($e(c.d,r+=10,d));return D=!0,K(c,m,d)};y.minus=y.sub=function(n){var e,t,i,r,o,s,a,c,u,l,m,d,p=this,b=p.constructor;if(n=new b(n),!p.d||!n.d)return!p.s||!n.s?n=new b(NaN):p.d?n.s=-n.s:n=new b(n.d||p.s!==n.s?p:NaN),n;if(p.s!=n.s)return n.s=-n.s,p.plus(n);if(u=p.d,d=n.d,a=b.precision,c=b.rounding,!u[0]||!d[0]){if(d[0])n.s=-n.s;else if(u[0])n=new b(p);else return new b(c===3?-0:0);return D?K(n,a,c):n}if(t=ie(n.e/M),l=ie(p.e/M),u=u.slice(),o=l-t,o){for(m=o<0,m?(e=u,o=-o,s=d.length):(e=d,t=l,s=u.length),i=Math.max(Math.ceil(a/M),s)+2,o>i&&(o=i,e.length=1),e.reverse(),i=o;i--;)e.push(0);e.reverse()}else{for(i=u.length,s=d.length,m=i<s,m&&(s=i),i=0;i<s;i++)if(u[i]!=d[i]){m=u[i]<d[i];break}o=0}for(m&&(e=u,u=d,d=e,n.s=-n.s),s=u.length,i=d.length-s;i>0;--i)u[s++]=0;for(i=d.length;i>o;){if(u[--i]<d[i]){for(r=i;r&&u[--r]===0;)u[r]=de-1;--u[r],u[i]+=de}u[i]-=d[i]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(n.d=u,n.e=It(u,t),D?K(n,a,c):n):new b(c===3?-0:0)};y.modulo=y.mod=function(n){var e,t=this,i=t.constructor;return n=new i(n),!t.d||!n.s||n.d&&!n.d[0]?new i(NaN):!n.d||t.d&&!t.d[0]?K(new i(t),i.precision,i.rounding):(D=!1,i.modulo==9?(e=X(t,n.abs(),0,3,1),e.s*=n.s):e=X(t,n,0,i.modulo,1),e=e.times(n),D=!0,t.minus(e))};y.naturalExponential=y.exp=function(){return nn(this)};y.naturalLogarithm=y.ln=function(){return Ce(this)};y.negated=y.neg=function(){var n=new this.constructor(this);return n.s=-n.s,K(n)};y.plus=y.add=function(n){var e,t,i,r,o,s,a,c,u,l,m=this,d=m.constructor;if(n=new d(n),!m.d||!n.d)return!m.s||!n.s?n=new d(NaN):m.d||(n=new d(n.d||m.s===n.s?m:NaN)),n;if(m.s!=n.s)return n.s=-n.s,m.minus(n);if(u=m.d,l=n.d,a=d.precision,c=d.rounding,!u[0]||!l[0])return l[0]||(n=new d(m)),D?K(n,a,c):n;if(o=ie(m.e/M),i=ie(n.e/M),u=u.slice(),r=o-i,r){for(r<0?(t=u,r=-r,s=l.length):(t=l,i=o,s=u.length),o=Math.ceil(a/M),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=u.length,r=l.length,s-r<0&&(r=s,t=l,l=u,u=t),e=0;r;)e=(u[--r]=u[r]+l[r]+e)/de|0,u[r]%=de;for(e&&(u.unshift(e),++i),s=u.length;u[--s]==0;)u.pop();return n.d=u,n.e=It(u,i),D?K(n,a,c):n};y.precision=y.sd=function(n){var e,t=this;if(n!==void 0&&n!==!!n&&n!==1&&n!==0)throw Error(Ke+n);return t.d?(e=Yn(t.d),n&&t.e+1>e&&(e=t.e+1)):e=NaN,e};y.round=function(){var n=this,e=n.constructor;return K(new e(n),n.e+1,e.rounding)};y.sine=y.sin=function(){var n,e,t=this,i=t.constructor;return t.isFinite()?t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+Math.max(t.e,t.sd())+M,i.rounding=1,t=cr(i,$n(i,t)),i.precision=n,i.rounding=e,K(he>2?t.neg():t,n,e,!0)):new i(NaN)};y.squareRoot=y.sqrt=function(){var n,e,t,i,r,o,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(D=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=ne(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=ie((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),i=new l(e)):i=new l(u.toString()),t=(c=l.precision)+3;;)if(o=i,i=o.plus(X(s,o,t+2,1)).times(.5),ne(o.d).slice(0,t)===(e=ne(i.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(K(o,c+1,0),o.times(o).eq(s))){i=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(K(i,c+1,1),n=!i.times(i).eq(s));break}return D=!0,K(i,c,l.rounding,n)};y.tangent=y.tan=function(){var n,e,t=this,i=t.constructor;return t.isFinite()?t.isZero()?new i(t):(n=i.precision,e=i.rounding,i.precision=n+10,i.rounding=1,t=t.sin(),t.s=1,t=X(t,new i(1).minus(t.times(t)).sqrt(),n+10,0),i.precision=n,i.rounding=e,K(he==2||he==4?t.neg():t,n,e,!0)):new i(NaN)};y.times=y.mul=function(n){var e,t,i,r,o,s,a,c,u,l=this,m=l.constructor,d=l.d,p=(n=new m(n)).d;if(n.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!n.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?n.s/0:n.s*0);for(t=ie(l.e/M)+ie(n.e/M),c=d.length,u=p.length,c<u&&(o=d,d=p,p=o,s=c,c=u,u=s),o=[],s=c+u,i=s;i--;)o.push(0);for(i=u;--i>=0;){for(e=0,r=c+i;r>i;)a=o[r]+p[i]*d[r-i-1]+e,o[r--]=a%de|0,e=a/de|0;o[r]=(o[r]+e)%de|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),n.d=o,n.e=It(o,t),D?K(n,m.precision,m.rounding):n};y.toBinary=function(n,e){return on(this,2,n,e)};y.toDecimalPlaces=y.toDP=function(n,e){var t=this,i=t.constructor;return t=new i(t),n===void 0?t:(se(n,0,Ne),e===void 0?e=i.rounding:se(e,0,8),K(t,n+t.e+1,e))};y.toExponential=function(n,e){var t,i=this,r=i.constructor;return n===void 0?t=ge(i,!0):(se(n,0,Ne),e===void 0?e=r.rounding:se(e,0,8),i=K(new r(i),n+1,e),t=ge(i,!0,n+1)),i.isNeg()&&!i.isZero()?"-"+t:t};y.toFixed=function(n,e){var t,i,r=this,o=r.constructor;return n===void 0?t=ge(r):(se(n,0,Ne),e===void 0?e=o.rounding:se(e,0,8),i=K(new o(r),n+r.e+1,e),t=ge(i,!1,n+i.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};y.toFraction=function(n){var e,t,i,r,o,s,a,c,u,l,m,d,p=this,b=p.d,f=p.constructor;if(!b)return new f(p);if(u=t=new f(1),i=c=new f(0),e=new f(i),o=e.e=Yn(b)-p.e-1,s=o%M,e.d[0]=$(10,s<0?M+s:s),n==null)n=o>0?e:u;else{if(a=new f(n),!a.isInt()||a.lt(u))throw Error(Ke+a);n=a.gt(e)?o>0?e:u:a}for(D=!1,a=new f(ne(b)),l=f.precision,f.precision=o=b.length*M*2;m=X(a,e,0,1,1),r=t.plus(m.times(i)),r.cmp(n)!=1;)t=i,i=r,r=u,u=c.plus(m.times(r)),c=r,r=e,e=a.minus(m.times(r)),a=r;return r=X(n.minus(t),i,0,1,1),c=c.plus(r.times(u)),t=t.plus(r.times(i)),c.s=u.s=p.s,d=X(u,i,o,1).minus(p).abs().cmp(X(c,t,o,1).minus(p).abs())<1?[u,i]:[c,t],f.precision=l,D=!0,d};y.toHexadecimal=y.toHex=function(n,e){return on(this,16,n,e)};y.toNearest=function(n,e){var t=this,i=t.constructor;if(t=new i(t),n==null){if(!t.d)return t;n=new i(1),e=i.rounding}else{if(n=new i(n),e===void 0?e=i.rounding:se(e,0,8),!t.d)return n.s?t:n;if(!n.d)return n.s&&(n.s=t.s),n}return n.d[0]?(D=!1,t=X(t,n,0,e,1).times(n),D=!0,K(t)):(n.s=t.s,t=n),t};y.toNumber=function(){return+this};y.toOctal=function(n,e){return on(this,8,n,e)};y.toPower=y.pow=function(n){var e,t,i,r,o,s,a=this,c=a.constructor,u=+(n=new c(n));if(!a.d||!n.d||!a.d[0]||!n.d[0])return new c($(+a,u));if(a=new c(a),a.eq(1))return a;if(i=c.precision,o=c.rounding,n.eq(1))return K(a,i,o);if(e=ie(n.e/M),e>=n.d.length-1&&(t=u<0?-u:u)<=or)return r=jn(c,a,t,i),n.s<0?new c(1).div(r):K(r,i,o);if(s=a.s,s<0){if(e<n.d.length-1)return new c(NaN);if((n.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=$(+a,u),e=t==0||!isFinite(t)?ie(u*(Math.log("0."+ne(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(D=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=nn(n.times(Ce(a,i+t)),i),r.d&&(r=K(r,i+5,1),$e(r.d,i,o)&&(e=i+10,r=K(nn(n.times(Ce(a,e+t)),e),e+5,1),+ne(r.d).slice(i+1,i+15)+1==1e14&&(r=K(r,i+1,0)))),r.s=s,D=!0,c.rounding=o,K(r,i,o))};y.toPrecision=function(n,e){var t,i=this,r=i.constructor;return n===void 0?t=ge(i,i.e<=r.toExpNeg||i.e>=r.toExpPos):(se(n,1,Ne),e===void 0?e=r.rounding:se(e,0,8),i=K(new r(i),n,e),t=ge(i,n<=i.e||i.e<=r.toExpNeg,n)),i.isNeg()&&!i.isZero()?"-"+t:t};y.toSignificantDigits=y.toSD=function(n,e){var t=this,i=t.constructor;return n===void 0?(n=i.precision,e=i.rounding):(se(n,1,Ne),e===void 0?e=i.rounding:se(e,0,8)),K(new i(t),n,e)};y.toString=function(){var n=this,e=n.constructor,t=ge(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()&&!n.isZero()?"-"+t:t};y.truncated=y.trunc=function(){return K(new this.constructor(this),this.e+1,1)};y.valueOf=y.toJSON=function(){var n=this,e=n.constructor,t=ge(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()?"-"+t:t};function ne(n){var e,t,i,r=n.length-1,o="",s=n[0];if(r>0){for(o+=s,e=1;e<r;e++)i=n[e]+"",t=M-i.length,t&&(o+=Se(t)),o+=i;s=n[e],i=s+"",t=M-i.length,t&&(o+=Se(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function se(n,e,t){if(n!==~~n||n<e||n>t)throw Error(Ke+n)}function $e(n,e,t,i){var r,o,s,a;for(o=n[0];o>=10;o/=10)--e;return--e<0?(e+=M,r=0):(r=Math.ceil((e+1)/M),e%=M),o=$(10,M-e),a=n[r]%o|0,i==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)&&(n[r+1]/o/100|0)==$(10,e-2)-1||(a==o/2||a==0)&&(n[r+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=(i||t<4)&&a==9999||!i&&t>3&&a==4999):s=((i||t<4)&&a+1==o||!i&&t>3&&a+1==o/2)&&(n[r+1]/o/1e3|0)==$(10,e-3)-1,s}function kt(n,e,t){for(var i,r=[0],o,s=0,a=n.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=$t.indexOf(n.charAt(s++)),i=0;i<r.length;i++)r[i]>t-1&&(r[i+1]===void 0&&(r[i+1]=0),r[i+1]+=r[i]/t|0,r[i]%=t)}return r.reverse()}function ar(n,e){var t,i,r;if(e.isZero())return e;i=e.d.length,i<32?(t=Math.ceil(i/3),r=(1/St(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),n.precision+=t,e=Ge(n,1,e.times(r),new n(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return n.precision-=t,e}var X=function(){function n(i,r,o){var s,a=0,c=i.length;for(i=i.slice();c--;)s=i[c]*r+a,i[c]=s%o|0,a=s/o|0;return a&&i.unshift(a),i}function e(i,r,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(i[a]!=r[a]){c=i[a]>r[a]?1:-1;break}return c}function t(i,r,o,s){for(var a=0;o--;)i[o]-=a,a=i[o]<r[o]?1:0,i[o]=a*s+i[o]-r[o];for(;!i[0]&&i.length>1;)i.shift()}return function(i,r,o,s,a,c){var u,l,m,d,p,b,f,g,w,A,k,P,h,T,x,C,S,v,O,F,E=i.constructor,W=i.s==r.s?1:-1,q=i.d,R=r.d;if(!q||!q[0]||!R||!R[0])return new E(!i.s||!r.s||(q?R&&q[0]==R[0]:!R)?NaN:q&&q[0]==0||!R?W*0:W/0);for(c?(p=1,l=i.e-r.e):(c=de,p=M,l=ie(i.e/p)-ie(r.e/p)),O=R.length,S=q.length,w=new E(W),A=w.d=[],m=0;R[m]==(q[m]||0);m++);if(R[m]>(q[m]||0)&&l--,o==null?(T=o=E.precision,s=E.rounding):a?T=o+(i.e-r.e)+1:T=o,T<0)A.push(1),b=!0;else{if(T=T/p+2|0,m=0,O==1){for(d=0,R=R[0],T++;(m<S||d)&&T--;m++)x=d*c+(q[m]||0),A[m]=x/R|0,d=x%R|0;b=d||m<S}else{for(d=c/(R[0]+1)|0,d>1&&(R=n(R,d,c),q=n(q,d,c),O=R.length,S=q.length),C=O,k=q.slice(0,O),P=k.length;P<O;)k[P++]=0;F=R.slice(),F.unshift(0),v=R[0],R[1]>=c/2&&++v;do d=0,u=e(R,k,O,P),u<0?(h=k[0],O!=P&&(h=h*c+(k[1]||0)),d=h/v|0,d>1?(d>=c&&(d=c-1),f=n(R,d,c),g=f.length,P=k.length,u=e(f,k,g,P),u==1&&(d--,t(f,O<g?F:R,g,c))):(d==0&&(u=d=1),f=R.slice()),g=f.length,g<P&&f.unshift(0),t(k,f,P,c),u==-1&&(P=k.length,u=e(R,k,O,P),u<1&&(d++,t(k,O<P?F:R,P,c))),P=k.length):u===0&&(d++,k=[0]),A[m++]=d,u&&k[0]?k[P++]=q[C]||0:(k=[q[C]],P=1);while((C++<S||k[0]!==void 0)&&T--);b=k[0]!==void 0}A[0]||A.shift()}if(p==1)w.e=l,Un=b;else{for(m=1,d=A[0];d>=10;d/=10)m++;w.e=m+l*p-1,K(w,a?o+w.e+1:o,s,b)}return w}}();function K(n,e,t,i){var r,o,s,a,c,u,l,m,d,p=n.constructor;e:if(e!=null){if(m=n.d,!m)return n;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=M,s=e,l=m[d=0],c=l/$(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/M),a=m.length,d>=a)if(i){for(;a++<=d;)m.push(0);l=c=0,r=1,o%=M,s=o-M+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;o%=M,s=o-M+r,c=s<0?0:l/$(10,r-s-1)%10|0}if(i=i||e<0||m[d+1]!==void 0||(s<0?l:l%$(10,r-s-1)),u=t<4?(c||i)&&(t==0||t==(n.s<0?3:2)):c>5||c==5&&(t==4||i||t==6&&(o>0?s>0?l/$(10,r-s):0:m[d-1])%10&1||t==(n.s<0?8:7)),e<1||!m[0])return m.length=0,u?(e-=n.e+1,m[0]=$(10,(M-e%M)%M),n.e=-e||0):m[0]=n.e=0,n;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=$(10,M-o),m[d]=s>0?(l/$(10,r-s)%$(10,s)|0)*a:0),u)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&&(n.e++,m[0]==de&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=de)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return D&&(n.e>p.maxE?(n.d=null,n.e=NaN):n.e<p.minE&&(n.e=0,n.d=[0])),n}function ge(n,e,t){if(!n.isFinite())return Jn(n);var i,r=n.e,o=ne(n.d),s=o.length;return e?(t&&(i=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Se(i):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(n.e<0?"e":"e+")+n.e):r<0?(o="0."+Se(-r-1)+o,t&&(i=t-s)>0&&(o+=Se(i))):r>=s?(o+=Se(r+1-s),t&&(i=t-r-1)>0&&(o=o+"."+Se(i))):((i=r+1)<s&&(o=o.slice(0,i)+"."+o.slice(i)),t&&(i=t-s)>0&&(r+1===s&&(o+="."),o+=Se(i))),o}function It(n,e){var t=n[0];for(e*=M;t>=10;t/=10)e++;return e}function Bt(n,e,t){if(e>sr)throw D=!0,t&&(n.precision=t),Error(Xn);return K(new n(Tt),e,1,!0)}function me(n,e,t){if(e>tn)throw Error(Xn);return K(new n(ht),e,t,!0)}function Yn(n){var e=n.length-1,t=e*M+1;if(e=n[e],e){for(;e%10==0;e/=10)t--;for(e=n[0];e>=10;e/=10)t++}return t}function Se(n){for(var e="";n--;)e+="0";return e}function jn(n,e,t,i){var r,o=new n(1),s=Math.ceil(i/M+4);for(D=!1;;){if(t%2&&(o=o.times(e),qn(o.d,s)&&(r=!0)),t=ie(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),qn(e.d,s)}return D=!0,o}function Vn(n){return n.d[n.d.length-1]&1}function Qn(n,e,t){for(var i,r=new n(e[0]),o=0;++o<e.length;)if(i=new n(e[o]),i.s)r[t](i)&&(r=i);else{r=i;break}return r}function nn(n,e){var t,i,r,o,s,a,c,u=0,l=0,m=0,d=n.constructor,p=d.rounding,b=d.precision;if(!n.d||!n.d[0]||n.e>17)return new d(n.d?n.d[0]?n.s<0?0:1/0:1:n.s?n.s<0?0:n:0/0);for(e==null?(D=!1,c=b):c=e,a=new d(.03125);n.e>-2;)n=n.times(a),m+=5;for(i=Math.log($(2,m))/Math.LN10*2+5|0,c+=i,t=o=s=new d(1),d.precision=c;;){if(o=K(o.times(n),c,1),t=t.times(++l),a=s.plus(X(o,t,c,1)),ne(a.d).slice(0,c)===ne(s.d).slice(0,c)){for(r=m;r--;)s=K(s.times(s),c,1);if(e==null)if(u<3&&$e(s.d,c-i,p,u))d.precision=c+=10,t=o=a=new d(1),l=0,u++;else return K(s,d.precision=b,p,D=!0);else return d.precision=b,s}s=a}}function Ce(n,e){var t,i,r,o,s,a,c,u,l,m,d,p=1,b=10,f=n,g=f.d,w=f.constructor,A=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?(D=!1,l=k):l=e,w.precision=l+=b,t=ne(g),i=t.charAt(0),Math.abs(o=f.e)<15e14){for(;i<7&&i!=1||i==1&&t.charAt(1)>3;)f=f.times(n),t=ne(f.d),i=t.charAt(0),p++;o=f.e,i>1?(f=new w("0."+t),o++):f=new w(i+"."+t.slice(1))}else return u=Bt(w,l+2,k).times(o+""),f=Ce(new w(i+"."+t.slice(1)),l-b).plus(u),w.precision=k,e==null?K(f,k,A,D=!0):f;for(m=f,c=s=f=X(f.minus(1),f.plus(1),l,1),d=K(f.times(f),l,1),r=3;;){if(s=K(s.times(d),l,1),u=c.plus(X(s,new w(r),l,1)),ne(u.d).slice(0,l)===ne(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(Bt(w,l+2,k).times(o+""))),c=X(c,new w(p),l,1),e==null)if($e(c.d,l-b,A,a))w.precision=l+=b,u=s=f=X(m.minus(1),m.plus(1),l,1),d=K(f.times(f),l,1),r=a=1;else return K(c,w.precision=k,A,D=!0);else return w.precision=k,c;c=u,r+=2}}function Jn(n){return String(n.s*n.s/0)}function rn(n,e){var t,i,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(i=e.search(/e/i))>0?(t<0&&(t=i),t+=+e.slice(i+1),e=e.substring(0,i)):t<0&&(t=e.length),i=0;e.charCodeAt(i)===48;i++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(i,r),e){if(r-=i,n.e=t=t-i-1,n.d=[],i=(t+1)%M,t<0&&(i+=M),i<r){for(i&&n.d.push(+e.slice(0,i)),r-=M;i<r;)n.d.push(+e.slice(i,i+=M));e=e.slice(i),i=M-e.length}else i-=r;for(;i--;)e+="0";n.d.push(+e),D&&(n.e>n.constructor.maxE?(n.d=null,n.e=NaN):n.e<n.constructor.minE&&(n.e=0,n.d=[0]))}else n.e=0,n.d=[0];return n}function ur(n,e){var t,i,r,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Zn.test(e))return rn(n,e)}else if(e==="Infinity"||e==="NaN")return+e||(n.s=NaN),n.e=NaN,n.d=null,n;if(ir.test(e))t=16,e=e.toLowerCase();else if(nr.test(e))t=2;else if(rr.test(e))t=8;else throw Error(Ke+e);for(o=e.search(/p/i),o>0?(c=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,i=n.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=jn(i,new i(t),o,o*2)),u=kt(e,t,de),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new i(n.s*0):(n.e=It(u,l),n.d=u,D=!1,s&&(n=X(n,r,a*4)),c&&(n=n.times(Math.abs(c)<54?$(2,c):et.pow(2,c))),D=!0,n)}function cr(n,e){var t,i=e.d.length;if(i<3)return e.isZero()?e:Ge(n,2,e,e);t=1.4*Math.sqrt(i),t=t>16?16:t|0,e=e.times(1/St(5,t)),e=Ge(n,2,e,e);for(var r,o=new n(5),s=new n(16),a=new n(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function Ge(n,e,t,i,r){var o,s,a,c,u=1,l=n.precision,m=Math.ceil(l/M);for(D=!1,c=t.times(t),a=new n(i);;){if(s=X(a.times(c),new n(e++*e++),l,1),a=r?i.plus(s):i.minus(s),i=X(s.times(c),new n(e++*e++),l,1),s=a.plus(i),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=i,i=s,s=o,u++}return D=!0,s.d.length=m+1,s}function St(n,e){for(var t=n;--e;)t*=n;return t}function $n(n,e){var t,i=e.s<0,r=me(n,n.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return he=i?4:1,e;if(t=e.divToInt(r),t.isZero())he=i?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return he=Vn(t)?i?2:3:i?4:1,e;he=Vn(t)?i?1:4:i?3:2}return e.minus(r).abs()}function on(n,e,t,i){var r,o,s,a,c,u,l,m,d,p=n.constructor,b=t!==void 0;if(b?(se(t,1,Ne),i===void 0?i=p.rounding:se(i,0,8)):(t=p.precision,i=p.rounding),!n.isFinite())l=Jn(n);else{for(l=ge(n),s=l.indexOf("."),b?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=kt(ge(d),10,r),d.e=d.d.length),m=kt(l,10,r),o=c=m.length;m[--c]==0;)m.pop();if(!m[0])l=b?"0p+0":"0";else{if(s<0?o--:(n=new p(n),n.d=m,n.e=o,n=X(n,d,t,i,0,r),m=n.d,o=n.e,u=Un),s=m[t],a=r/2,u=u||m[t+1]!==void 0,u=i<4?(s!==void 0||u)&&(i===0||i===(n.s<0?3:2)):s>a||s===a&&(i===4||u||i===6&&m[t-1]&1||i===(n.s<0?8:7)),m.length=t,u)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=$t.charAt(m[s]);if(b){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=kt(l,r,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=$t.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>c)for(o-=c;o--;)l+="0";else o<c&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return n.s<0?"-"+l:l}function qn(n,e){if(n.length>e)return n.length=e,!0}function lr(n){return new this(n).abs()}function mr(n){return new this(n).acos()}function dr(n){return new this(n).acosh()}function pr(n,e){return new this(n).plus(e)}function fr(n){return new this(n).asin()}function br(n){return new this(n).asinh()}function gr(n){return new this(n).atan()}function yr(n){return new this(n).atanh()}function wr(n,e){n=new this(n),e=new this(e);var t,i=this.precision,r=this.rounding,o=i+4;return!n.s||!e.s?t=new this(NaN):!n.d&&!e.d?(t=me(this,o,1).times(e.s>0?.25:.75),t.s=n.s):!e.d||n.isZero()?(t=e.s<0?me(this,i,r):new this(0),t.s=n.s):!n.d||e.isZero()?(t=me(this,o,1).times(.5),t.s=n.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(X(n,e,o,1)),e=me(this,o,1),this.precision=i,this.rounding=r,t=n.s<0?t.minus(e):t.plus(e)):t=this.atan(X(n,e,o,1)),t}function Ar(n){return new this(n).cbrt()}function Pr(n){return K(n=new this(n),n.e+1,2)}function kr(n,e,t){return new this(n).clamp(e,t)}function Tr(n){if(!n||typeof n!="object")throw Error(xt+"Object expected");var e,t,i,r=n.defaults===!0,o=["precision",1,Ne,"rounding",0,8,"toExpNeg",-qe,0,"toExpPos",0,qe,"maxE",0,qe,"minE",-qe,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=en[t]),(i=n[t])!==void 0)if(ie(i)===i&&i>=o[e+1]&&i<=o[e+2])this[t]=i;else throw Error(Ke+t+": "+i);if(t="crypto",r&&(this[t]=en[t]),(i=n[t])!==void 0)if(i===!0||i===!1||i===0||i===1)if(i)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(zn);else this[t]=!1;else throw Error(Ke+t+": "+i);return this}function hr(n){return new this(n).cos()}function Br(n){return new this(n).cosh()}function ei(n){var e,t,i;function r(o){var s,a,c,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,Gn(o)){u.s=o.s,D?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;D?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return rn(u,o.toString())}else if(c!=="string")throw Error(Ke+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),Zn.test(o)?rn(u,o):ur(u,o)}if(r.prototype=y,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=Tr,r.clone=ei,r.isDecimal=Gn,r.abs=lr,r.acos=mr,r.acosh=dr,r.add=pr,r.asin=fr,r.asinh=br,r.atan=gr,r.atanh=yr,r.atan2=wr,r.cbrt=Ar,r.ceil=Pr,r.clamp=kr,r.cos=hr,r.cosh=Br,r.div=xr,r.exp=Ir,r.floor=Sr,r.hypot=Cr,r.ln=Kr,r.log=Nr,r.log10=Rr,r.log2=Lr,r.max=Mr,r.min=Or,r.mod=Fr,r.mul=Er,r.pow=vr,r.random=Dr,r.round=_r,r.sign=Wr,r.sin=Vr,r.sinh=qr,r.sqrt=Gr,r.sub=Ur,r.sum=Xr,r.tan=zr,r.tanh=Hr,r.trunc=Zr,n===void 0&&(n={}),n&&n.defaults!==!0)for(i=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<i.length;)n.hasOwnProperty(t=i[e++])||(n[t]=this[t]);return r.config(n),r}function xr(n,e){return new this(n).div(e)}function Ir(n){return new this(n).exp()}function Sr(n){return K(n=new this(n),n.e+1,3)}function Cr(){var n,e,t=new this(0);for(D=!1,n=0;n<arguments.length;)if(e=new this(arguments[n++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return D=!0,new this(1/0);t=e}return D=!0,t.sqrt()}function Gn(n){return n instanceof et||n&&n.toStringTag===Hn||!1}function Kr(n){return new this(n).ln()}function Nr(n,e){return new this(n).log(e)}function Lr(n){return new this(n).log(2)}function Rr(n){return new this(n).log(10)}function Mr(){return Qn(this,arguments,"lt")}function Or(){return Qn(this,arguments,"gt")}function Fr(n,e){return new this(n).mod(e)}function Er(n,e){return new this(n).mul(e)}function vr(n,e){return new this(n).pow(e)}function Dr(n){var e,t,i,r,o=0,s=new this(1),a=[];if(n===void 0?n=this.precision:se(n,1,Ne),i=Math.ceil(n/M),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(i));o<i;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(i*=4);o<i;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=i/4}else throw Error(zn);else for(;o<i;)a[o++]=Math.random()*1e7|0;for(i=a[--o],n%=M,i&&n&&(r=$(10,M-n),a[o]=(i/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=M)a.shift();for(i=1,r=a[0];r>=10;r/=10)i++;i<M&&(t-=M-i)}return s.e=t,s.d=a,s}function _r(n){return K(n=new this(n),n.e+1,this.rounding)}function Wr(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function Vr(n){return new this(n).sin()}function qr(n){return new this(n).sinh()}function Gr(n){return new this(n).sqrt()}function Ur(n,e){return new this(n).sub(e)}function Xr(){var n=0,e=arguments,t=new this(e[n]);for(D=!1;t.s&&++n<e.length;)t=t.plus(e[n]);return D=!0,K(t,this.precision,this.rounding)}function zr(n){return new this(n).tan()}function Hr(n){return new this(n).tanh()}function Zr(n){return K(n=new this(n),n.e+1,1)}y[Symbol.for("nodejs.util.inspect.custom")]=y.toString;y[Symbol.toStringTag]="Decimal";var et=y.constructor=ei(en);Tt=new et(Tt);ht=new et(ht);var ee=et;import Mo from"big.js";import Pc from"bn.js";import{get as ti,set as Yr}from"lodash";var sn=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(i=>typeof i=="object"?JSON.stringify(i):i).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}},ni={},jr={};function te(n){let e=ti(ni,n);if(!e){let t=ti(jr,n);e=new sn({name:n,logLevel:t}),Yr(ni,n,e)}return e}import{PublicKey as ii}from"@solana/web3.js";import{MINT_SIZE as Qr,TOKEN_PROGRAM_ID as Jr,getTransferFeeConfig as $r,unpackMint as eo}from"@solana/spl-token";var an=te("Raydium_accountInfo_util");async function tt(n,e,t){let{batchRequest:i,commitment:r="confirmed",chunkCount:o=100}=G({batchRequest:!1},t),s=un(e,o),a=new Array(s.length).fill([]);if(i){let c=s.map(m=>{let d=n._buildArgs([m.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),u=un(c,10);a=(await(await Promise.all(u.map(async m=>await n._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&an.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:b,lamports:f,owner:g,rentEpoch:w}=d;return p.length!==2&&p[1]!=="base64"&&an.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:b,lamports:f,owner:new ii(g),rentEpoch:w}}return null})))}else try{a=await Promise.all(s.map(c=>n.getMultipleAccountsInfo(c,r)))}catch(c){c instanceof Error&&an.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function Fe(n,e,t){let i=await tt(n,e.map(r=>r.pubkey),t);return e.map((r,o)=>Z(G({},r),{accountInfo:i[o]}))}async function cn({connection:n,mints:e,config:t}){var o,s,a;if(e.length===0)return{};let i=await Fe(n,e.map(c=>({pubkey:nt(c)})),t),r={};for(let c of i){if(!c.accountInfo||c.accountInfo.data.length<Qr){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=eo(c.pubkey,c.accountInfo,(o=c.accountInfo)==null?void 0:o.owner);r[c.pubkey.toString()]=Z(G({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||Jr,feeConfig:(a=$r(u))!=null?a:void 0})}return r[ii.default.toBase58()]=r[ue.toBase58()],r}import it from"bn.js";var ri=9007199254740991;function ye(n){let e=te("Raydium_parseBigNumberish");if(n instanceof it)return n;if(typeof n=="string"){if(n.match(/^-?[0-9]+$/))return new it(n);e.logWithError(`invalid BigNumberish string: ${n}`)}return typeof n=="number"?(n%1&&e.logWithError(`BigNumberish number underflow: ${n}`),(n>=ri||n<=-ri)&&e.logWithError(`BigNumberish number overflow: ${n}`),new it(String(n))):typeof n=="bigint"?new it(n.toString()):(e.error(`invalid BigNumberish value: ${n}`),new it(0))}import{PublicKey as to}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as oi}from"@solana/spl-token";var ln={chainId:101,address:to.default.toBase58(),programId:oi.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Le={chainId:101,address:"So11111111111111111111111111111111111111112",programId:oi.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as pn}from"@solana/web3.js";import{PublicKey as j,SystemProgram as si,SYSVAR_RENT_PUBKEY as no}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as io}from"@solana/spl-token";function mn({pubkey:n,isSigner:e=!1,isWritable:t=!0}){return{pubkey:n,isWritable:t,isSigner:e}}var Us=[mn({pubkey:io,isWritable:!1}),mn({pubkey:si.programId,isWritable:!1}),mn({pubkey:no,isWritable:!1})];function dn({publicKey:n,transformSol:e}){let t=ai(n.toString());if(t instanceof j)return e&&t.equals(rt)?ue:t;if(e&&t.toString()===rt.toBase58())return ue;if(typeof t=="string"){if(t===j.default.toBase58())return j.default;try{return new j(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ai(n){try{return new j(n)}catch{return n}}var ro=new j("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ct=new j("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Kt=new j("SysvarRent111111111111111111111111111111111"),Xs=new j("SysvarC1ock11111111111111111111111111111111"),Ue=new j("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),zs=new j("Sysvar1nstructions1111111111111111111111111"),ui=si.programId,Hs=new j("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Zs=new j("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ys=new j("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),js=new j("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Qs=new j("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Js=new j("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),$s=new j("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ea=new j("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ta=new j("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),na=new j("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ia=new j("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ue=new j("So11111111111111111111111111111111111111112"),rt=j.default;function nt(n){return dn({publicKey:n,transformSol:!0})}var fn=class{constructor({mint:e,decimals:t,symbol:i,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===rt.toBase58()||e instanceof pn&&rt.equals(e)){this.decimals=Le.decimals,this.symbol=Le.symbol,this.name=Le.name,this.mint=new pn(Le.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=i||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=o?pn.default:dn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Re=fn;Re.WSOL=new fn(Z(G({},Le),{mint:Le.address}));var bn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:i="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=i}equals(e){return this===e}},Nt=bn;Nt.SOL=new bn(ln);import oo from"toformat";var so=oo,ot=so;import Rt from"big.js";import uo from"bn.js";import co from"decimal.js-light";var Lt=te("module/fraction"),gn=ot(Rt),st=ot(co),lo={[0]:st.ROUND_DOWN,[1]:st.ROUND_HALF_UP,[2]:st.ROUND_UP},mo={[0]:Rt.roundDown,[1]:Rt.roundHalfUp,[2]:Rt.roundUp},H=class{constructor(e,t=new uo(1)){this.numerator=ye(e),this.denominator=ye(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new H(this.denominator,this.numerator)}add(e){let t=e instanceof H?e:new H(ye(e));return this.denominator.eq(t.denominator)?new H(this.numerator.add(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof H?e:new H(ye(e));return this.denominator.eq(t.denominator)?new H(this.numerator.sub(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof H?e:new H(ye(e));return new H(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof H?e:new H(ye(e));return new H(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},i=1){Number.isInteger(e)||Lt.logWithError(`${e} is not an integer.`),e<=0&&Lt.logWithError(`${e} is not positive.`),st.set({precision:e+1,rounding:lo[i]});let r=new st(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},i=1){return Number.isInteger(e)||Lt.logWithError(`${e} is not an integer.`),e<0&&Lt.logWithError(`${e} is negative.`),gn.DP=e,gn.RM=mo[i]||1,new gn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};import po from"bn.js";var ci=new H(new po(100)),ce=class extends H{toSignificant(e=5,t,i){return this.mul(ci).toSignificant(e,t,i)}toFixed(e=2,t,i){return this.mul(ci).toFixed(e,t,i)}};var Na=te("Raydium_price");function un(n,e=1,t=[]){let i=[...n];if(e<=0)return t;for(;i.length;)t.push(i.splice(0,e));return t}import{PublicKey as Po}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ko}from"@solana/spl-token";import{ComputeBudgetProgram as li,Keypair as di,PublicKey as fo,Transaction as pi,TransactionMessage as bo,VersionedTransaction as fi}from"@solana/web3.js";var re={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{TOKEN_PROGRAM_ID as go}from"@solana/spl-token";var mi=te("Raydium_txUtil"),bi=1644;function Ot(n){let e=[],t=[];return n.microLamports&&(e.push(li.setComputeUnitPrice({microLamports:n.microLamports})),t.push(re.SetComputeUnitPrice)),n.units&&(e.push(li.setComputeUnitLimit({units:n.units})),t.push(re.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Xe(n,e){var i,r;let t=e!=null?e:"confirmed";return(r=await((i=n.getLatestBlockhash)==null?void 0:i.call(n,{commitment:t})))==null?void 0:r.blockhash}async function Ft(n,e){return n.getSignatureStatuses([e]),new Promise((t,i)=>{let r=setTimeout(i,6e4);n.onSignature(e,o=>{if(clearTimeout(r),!o.err){t("");return}i(Object.assign(o.err,{txId:e}))},"confirmed")})}function yo(n,e){n.length<1&&mi.logWithError(`no instructions provided: ${n.toString()}`),e.length<1&&mi.logWithError(`no signers provided:, ${e.toString()}`);let t=new pi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...n);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<bi}catch{return!1}}function pe(n,e){let[t,i]=fo.findProgramAddressSync(n,e);return{publicKey:t,nonce:i}}function at({instructions:n,payer:e,signers:t}){return yo(n,[e,...t])}function ut({instructions:n,payer:e,lookupTableAddressAccount:t,recentBlockhash:i=di.generate().publicKey.toString()}){let o=new bo({payerKey:e,recentBlockhash:i,instructions:n}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new fi(o).serialize()).toString("base64").length<bi}catch{return!1}}var wo=n=>Buffer.isBuffer(n)?n:n instanceof Uint8Array?Buffer.from(n.buffer,n.byteOffset,n.byteLength):Buffer.from(n),Ao=n=>{let e=n.serialize({requireAllSignatures:!1,verifySignatures:!1});n instanceof fi&&(e=wo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Ee(n){let e=[];return n.forEach(t=>{t instanceof pi&&(t.recentBlockhash||(t.recentBlockhash=go.toBase58()),t.feePayer||(t.feePayer=di.generate().publicKey)),e.push(Ao(t))}),console.log("simulate tx string:",e),e}function we(n,e,t){return pe([n.toBuffer(),(t!=null?t:ko).toBuffer(),e.toBuffer()],new Po("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as V}from"@solana/web3.js";var lu=new V("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),mu=new V("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),du=new V("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),pu=new V("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),fu=new V("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),bu=new V("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),gu=new V("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),yu=new V("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),wu=new V("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Au=new V("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),To=new V("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),ho=new V("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Bo=new V("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Pu=new V("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),ku=new V("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Tu=new V("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),hu=new V("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Bu=new V("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),xu=new V("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),gi=new V("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),yi=new V("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Iu=new V("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),xo=new V("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Io=new V("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),So=new V("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Et=new V("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Co=new V("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),vt=new V("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ko=new V("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var Su={SERUM_MARKET:V.default,OPENBOOK_MARKET:new V("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:V.default,FarmV3:new V("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new V("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new V("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new V("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new V("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new V("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new V("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new V("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new V("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:xo,CREATE_CPMM_POOL_AUTH:Io,CREATE_CPMM_POOL_FEE_ACC:So,FEE_DESTINATION_ID:new V("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:Co,LCOK_CPMM_AUTH:Ko};import fe from"bn.js";var ct=1e4;function Ae(n,e,t,i){if(e===void 0)return{amount:n,fee:void 0,expirationTime:void 0};let r=Z(G({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new fe(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(i)if(o.transferFeeBasisPoints===ct){let c=new fe(o.maximumFee.toString());return{amount:n.add(c),fee:c,expirationTime:a}}else{let c=ze(n.mul(new fe(ct)),new fe(ct-o.transferFeeBasisPoints)),u=new fe(o.maximumFee.toString()),l=c.sub(n).gt(u)?n.add(u):c,m=ze(l.mul(new fe(o.transferFeeBasisPoints)),new fe(ct)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let c=ze(n.mul(new fe(o.transferFeeBasisPoints)),new fe(ct)),u=c.gt(s)?s:c;return{amount:n,fee:u,expirationTime:a}}}function ze(n,e){let{div:t,mod:i}=n.divmod(e);return i.gt(new fe(0))?t.add(new fe(1)):t}import{PublicKey as wi,AddressLookupTableAccount as Dt}from"@solana/web3.js";async function An({connection:n,address:e}){let t=await tt(n,[...new Set(e.map(r=>r.toString()))].map(r=>new wi(r))),i={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new Dt({key:s,state:Dt.deserialize(o.data)});i[s.toString()]=a,_t[s.toString()]=a}return i}var _t={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Dt({key:new wi("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Dt.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};import{PublicKey as He,sendAndConfirmTransaction as Pn,SystemProgram as Lo,Transaction as lt,TransactionMessage as mt,VersionedTransaction as dt}from"@solana/web3.js";import Ro from"axios";var Wt=2e3,Vt=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var i;let e=(await Ro.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(i=e==null?void 0:e[15])!=null?i:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:i}=Ot(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...i),!0}return!1}addTipInstruction(e){return e?(this.endInstructions.push(Lo.transfer({fromPubkey:this.owner.publicKey,toPubkey:new He(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(re.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let i=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(i))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:i=[],instructionTypes:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...i),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==He.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(G({},t||{})):this.build(t)}build(e){var i;let t=new lt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((i=this.owner)==null?void 0:i.signer)&&!this.signers.some(r=>r.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async r=>{var u;let{recentBlockHash:o,skipPreflight:s=!0,sendAndConfirm:a}=r||{},c=o!=null?o:await Xe(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),Ee([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await Pn(this.connection,t,this.signers.find(m=>m.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:i}=e,{transaction:r}=this.build(i),o=t.filter(l=>l.transaction.instructions.length>0),s=[r,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],c=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async l=>{var w;let{sequentially:m,onTxUpdate:d,skipTxCount:p=0,recentBlockHash:b,skipPreflight:f=!0}=l||{},g=b!=null?b:await Xe(this.connection,this.blockhashCommitment);if((w=this.owner)!=null&&w.isKeyPair){if(m){let A=[],k=0;for(let P of s){if(++k,k<=p)continue;let h=await Pn(this.connection,P,this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});A.push(h)}return{txIds:A,signedTxs:s}}return{txIds:await await Promise.all(s.map(async A=>(A.recentBlockhash=g,await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:f})))),signedTxs:s}}if(this.signAllTransactions){let A=s.map((P,h)=>(P.recentBlockhash=g,a[h].length&&P.sign(...a[h]),P));Ee(A);let k=await this.signAllTransactions(A);if(m){let P=0,h=[],T=async()=>{if(!k[P])return;let x=await this.connection.sendRawTransaction(k[P].serialize(),{skipPreflight:f});h.push({txId:x,status:"sent",signedTx:k[P]}),d==null||d([...h]),P++;let C=!1,S=null,v=null,O=F=>{S!==null&&clearInterval(S),v!==null&&this.connection.removeSignatureListener(v);let E=h.findIndex(W=>W.txId===x);if(E>-1){if(h[E].status==="error"||h[E].status==="success")return;h[E].status=F.err?"error":"success"}d==null||d([...h]),F.err||T()};this.loopMultiTxStatus&&(S=setInterval(async()=>{var F;if(C){clearInterval(S);return}try{let E=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});E&&(C=!0,clearInterval(S),O({err:((F=E.meta)==null?void 0:F.err)||null}),console.log("tx status from getTransaction:",x))}catch(E){C=!0,clearInterval(S),console.error("getTransaction timeout:",E,x)}},Wt)),v=this.connection.onSignature(x,F=>{if(C){this.connection.removeSignatureListener(v);return}C=!0,O(F)},"confirmed"),this.connection.getSignatureStatus(x)};return await T(),{txIds:h.map(x=>x.txId),signedTxs:k}}else{let P=[];for(let h=0;h<k.length;h+=1){let T=await this.connection.sendRawTransaction(k[h].serialize(),{skipPreflight:f});P.push(T)}return{txIds:P,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:i}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:i||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:i})}async buildV0(e){var f;let b=e||{},{lookupTableCache:t={},lookupTableAddress:i=[],forerunCreate:r,recentBlockhash:o}=b,s=Te(b,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=G(G({},this.cluster==="devnet"?{}:_t),t),c=Array.from(new Set([...i,...this.lookupTableAddress])),u=[];for(let g of c)a[g]===void 0&&u.push(new He(g));let l=await An({connection:this.connection,address:u});for(let[g,w]of Object.entries(l))a[g]=w;let m=r?He.default.toBase58():o!=null?o:await Xe(this.connection,this.blockhashCommitment),d=new mt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((f=this.owner)==null?void 0:f.signer)&&!this.signers.some(g=>g.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new dt(d);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async g=>{var k;let{skipPreflight:w=!0,sendAndConfirm:A}=g||{};if(Ee([p]),(k=this.owner)!=null&&k.isKeyPair){let P=await this.connection.sendTransaction(p,{skipPreflight:w});return A&&await Ft(this.connection,P),{txId:P,signedTx:p}}if(this.signAllTransactions){let P=await this.signAllTransactions([p]);return{txId:await this.connection.sendTransaction(P[0],{skipPreflight:w}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:i}=e,{transaction:r}=await this.buildV0(i),o=t.filter(l=>l.builder.instructions.length>0),s=[r,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],c=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:i,execute:async l=>{var f;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:b=!0}=l||{};if(p&&s.forEach(g=>g.message.recentBlockhash=p),Ee(s),(f=this.owner)!=null&&f.isKeyPair){if(m){let g=[];for(let w of s){let A=await this.connection.sendTransaction(w,{skipPreflight:b});await Ft(this.connection,A),g.push(A)}return{txIds:g,signedTxs:s}}return{txIds:await Promise.all(s.map(async g=>await this.connection.sendTransaction(g,{skipPreflight:b}))),signedTxs:s}}if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(m){let w=0,A=[],k=async()=>{if(!g[w])return;let P=await this.connection.sendTransaction(g[w],{skipPreflight:b});A.push({txId:P,status:"sent",signedTx:g[w]}),d==null||d([...A]),w++;let h=!1,T=null,x=null,C=S=>{T!==null&&clearInterval(T),x!==null&&this.connection.removeSignatureListener(x);let v=A.findIndex(O=>O.txId===P);if(v>-1){if(A[v].status==="error"||A[v].status==="success")return;A[v].status=S.err?"error":"success"}d==null||d([...A]),S.err||k()};this.loopMultiTxStatus&&(T=setInterval(async()=>{var S;if(h){clearInterval(T);return}try{let v=await this.connection.getTransaction(P,{commitment:"confirmed",maxSupportedTransactionVersion:0});v&&(h=!0,clearInterval(T),C({err:((S=v.meta)==null?void 0:S.err)||null}),console.log("tx status from getTransaction:",P))}catch(v){h=!0,clearInterval(T),console.error("getTransaction timeout:",v,P)}},Wt)),x=this.connection.onSignature(P,S=>{if(h){this.connection.removeSignatureListener(x);return}h=!0,C(S)},"confirmed"),this.connection.getSignatureStatus(P)};return k(),{txIds:[],signedTxs:g}}else{let w=[];for(let A=0;A<g.length;A+=1){let k=await this.connection.sendTransaction(g[A],{skipPreflight:b});w.push(k)}return{txIds:w,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuild(e){var d;let m=e||{},{splitIns:t=[],computeBudgetConfig:i}=m,r=Te(m,["splitIns","computeBudgetConfig"]),o=i?Ot(i):{instructions:[],instructionTypes:[]},s=this.signers.reduce((p,b)=>Z(G({},p),{[b.publicKey.toBase58()]:b}),{}),a=[],c=[],u=[],l=0;if(this.allInstructions.forEach(p=>{let b=[...u,p],f=i?[...o.instructions,...b]:b,w=[...new Set(b.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(A=>new He(A));if(p!==t[l]&&u.length<12&&(at({instructions:f,payer:this.feePayer,signers:w})||at({instructions:b,payer:this.feePayer,signers:w})))u.push(p);else{if(u.length===0)throw Error("item ins too big");l+=p===t[l]?1:0,at({instructions:i?[...o.instructions,...u]:[...u],payer:this.feePayer,signers:w})?a.push(new lt().add(...o.instructions,...u)):a.push(new lt().add(...u)),c.push(Array.from(new Set(u.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat())).map(A=>s[A]).filter(A=>A!==void 0)),u=[p]}}),u.length>0){let b=[...new Set(u.map(f=>f.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(f=>s[f]).filter(f=>f!==void 0);at({instructions:i?[...o.instructions,...u]:[...u],payer:this.feePayer,signers:b.map(f=>f.publicKey)})?a.push(new lt().add(...o.instructions,...u)):a.push(new lt().add(...u)),c.push(b)}return a.forEach(p=>p.feePayer=this.feePayer),(d=this.owner)!=null&&d.signer&&c.forEach(p=>{p.some(b=>b.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:a,signers:c,instructionTypes:this.instructionTypes,execute:async p=>{var P;let{sequentially:b,onTxUpdate:f,skipTxCount:g=0,recentBlockHash:w,skipPreflight:A=!0}=p||{},k=w!=null?w:await Xe(this.connection,this.blockhashCommitment);if(a.forEach(async(h,T)=>{h.recentBlockhash=k,c[T].length&&h.sign(...c[T])}),Ee(a),(P=this.owner)!=null&&P.isKeyPair){if(b){let h=0,T=[];for(let x of a){if(++h,h<=g){T.push("tx skipped");continue}let C=await Pn(this.connection,x,this.signers.find(S=>S.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});T.push(C)}return{txIds:T,signedTxs:a}}return{txIds:await Promise.all(a.map(async h=>await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:A}))),signedTxs:a}}if(this.signAllTransactions){let h=await this.signAllTransactions(a.slice(g,a.length)),T=[...a.slice(0,g),...h];if(b){let x=0,C=[],S=async()=>{if(!T[x])return;x<g&&(C.push({txId:"",status:"success",signedTx:T[x]}),f==null||f([...C]),x++,S());let v=await this.connection.sendRawTransaction(T[x].serialize(),{skipPreflight:A});C.push({txId:v,status:"sent",signedTx:T[x]}),f==null||f([...C]),x++;let O=!1,F=null,E=null,W=q=>{F!==null&&clearInterval(F),E!==null&&this.connection.removeSignatureListener(E);let R=C.findIndex(ae=>ae.txId===v);if(R>-1){if(C[R].status==="error"||C[R].status==="success")return;C[R].status=q.err?"error":"success"}f==null||f([...C]),q.err||S()};this.loopMultiTxStatus&&(F=setInterval(async()=>{var q;if(O){clearInterval(F);return}try{let R=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});R&&(O=!0,clearInterval(F),W({err:((q=R.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",v))}catch(R){O=!0,clearInterval(F),console.error("getTransaction timeout:",R,v)}},Wt)),E=this.connection.onSignature(v,q=>{if(O){this.connection.removeSignatureListener(E);return}O=!0,W(q)},"confirmed"),this.connection.getSignatureStatus(v)};return await S(),{txIds:C.map(v=>v.txId),signedTxs:T}}else{let x=[];for(let C=0;C<T.length;C+=1){let S=await this.connection.sendRawTransaction(T[C].serialize(),{skipPreflight:A});x.push(S)}return{txIds:x,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuildV0(e){var k;let A=e||{},{computeBudgetConfig:t,splitIns:i=[],lookupTableCache:r={},lookupTableAddress:o=[]}=A,s=Te(A,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress"]),a=G(G({},this.cluster==="devnet"?{}:_t),r),c=Array.from(new Set([...this.lookupTableAddress,...o])),u=[];for(let P of c)a[P]===void 0&&u.push(new He(P));let l=await An({connection:this.connection,address:u});for(let[P,h]of Object.entries(l))a[P]=h;let m=t?Ot(t):{instructions:[],instructionTypes:[]},d=await Xe(this.connection,this.blockhashCommitment),p=this.signers.reduce((P,h)=>Z(G({},P),{[h.publicKey.toBase58()]:h}),{}),b=[],f=[],g=[],w=0;if(this.allInstructions.forEach(P=>{let h=[...g,P],T=t?[...m.instructions,...h]:h;if(P!==i[w]&&g.length<12&&(ut({instructions:T,payer:this.feePayer,lookupTableAddressAccount:a})||ut({instructions:h,payer:this.feePayer,lookupTableAddressAccount:a})))g.push(P);else{if(g.length===0)throw Error("item ins too big");w+=P===i[w]?1:0;let x={};for(let C of[...new Set(c)])a[C]!==void 0&&(x[C]=a[C]);if(t&&ut({instructions:[...m.instructions,...g],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:d})){let C=new mt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...g]}).compileToV0Message(Object.values(a));b.push(new dt(C))}else{let C=new mt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...g]}).compileToV0Message(Object.values(a));b.push(new dt(C))}f.push(Array.from(new Set(g.map(C=>C.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat())).map(C=>p[C]).filter(C=>C!==void 0)),g=[P]}}),g.length>0){let h=[...new Set(g.map(T=>T.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat()).values()].map(T=>p[T]).filter(T=>T!==void 0);if(t&&ut({instructions:[...m.instructions,...g],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:d})){let T=new mt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...g]}).compileToV0Message(Object.values(a));b.push(new dt(T))}else{let T=new mt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...g]}).compileToV0Message(Object.values(a));b.push(new dt(T))}f.push(h)}return(k=this.owner)!=null&&k.signer&&f.forEach(P=>{P.some(h=>h.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),{builder:this,transactions:b,buildProps:e,signers:f,instructionTypes:this.instructionTypes,execute:async P=>{var v;let{sequentially:h,onTxUpdate:T,skipTxCount:x=0,recentBlockHash:C,skipPreflight:S=!0}=P||{};if(b.map(async(O,F)=>{f[F].length&&O.sign(f[F]),C&&(O.message.recentBlockhash=C)}),Ee(b),(v=this.owner)!=null&&v.isKeyPair){if(h){let O=0,F=[];for(let E of b){if(++O,O<=x){console.log("skip tx: ",O),F.push("tx skipped");continue}let W=await this.connection.sendTransaction(E,{skipPreflight:S});await Ft(this.connection,W),F.push(W)}return{txIds:F,signedTxs:b}}return{txIds:await Promise.all(b.map(async O=>await this.connection.sendTransaction(O,{skipPreflight:S}))),signedTxs:b}}if(this.signAllTransactions){let O=await this.signAllTransactions(b.slice(x,b.length)),F=[...b.slice(0,x),...O];if(h){let E=0,W=[],q=async()=>{if(!F[E])return;if(E<x){W.push({txId:"",status:"success",signedTx:F[E]}),T==null||T([...W]),E++,q();return}let R=await this.connection.sendTransaction(F[E],{skipPreflight:S});W.push({txId:R,status:"sent",signedTx:F[E]}),T==null||T([...W]),E++;let ae=!1,Pe=null,At=null,vn=Oe=>{Pe!==null&&clearInterval(Pe),At!==null&&this.connection.removeSignatureListener(At);let ke=W.findIndex(Ji=>Ji.txId===R);if(ke>-1){if(W[ke].status==="error"||W[ke].status==="success")return;W[ke].status=Oe.err?"error":"success"}T==null||T([...W]),Oe.err||q()};this.loopMultiTxStatus&&(Pe=setInterval(async()=>{var Oe;if(ae){clearInterval(Pe);return}try{let ke=await this.connection.getTransaction(R,{commitment:"confirmed",maxSupportedTransactionVersion:0});ke&&(ae=!0,clearInterval(Pe),vn({err:((Oe=ke.meta)==null?void 0:Oe.err)||null}),console.log("tx status from getTransaction:",R))}catch(ke){ae=!0,clearInterval(Pe),console.error("getTransaction timeout:",ke,R)}},Wt)),At=this.connection.onSignature(R,Oe=>{if(ae){this.connection.removeSignatureListener(At);return}ae=!0,vn(Oe)},"confirmed"),this.connection.getSignatureStatus(R)};return q(),{txIds:[],signedTxs:F}}else{let E=[];for(let W=0;W<F.length;W+=1){let q=await this.connection.sendTransaction(F[W],{skipPreflight:S});E.push(q)}return{txIds:E,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};import{PublicKey as Zu}from"@solana/web3.js";import ju from"bn.js";var Kc=te("Raydium_amount"),Nc=ot(Mo);var wn=new Be(0),zc=new Be(1),Hc=new Be(2),Zc=new Be(3),Yc=new Be(5),Oo=new Be(10),jc=new Be(100),Qc=new Be(1e3),Jc=new Be(1e4);import Tn from"bn.js";import Xt from"decimal.js-light";import pt from"bn.js";function qt(n,e){if(e.isZero())throw Error("divisor is zero");return n.mod(e)}function Fo(n,e){if(e.isZero())throw Error("rhs is zero");let t=n.div(e);if(t.isZero())throw Error("quotient is zero");let i=qt(n,e);return i.gt(Ze)&&(t=t.add(new pt(1)),e=n.div(t),i=qt(n,t),i.gt(Ze)&&(e=e.add(new pt(1)))),[t,e]}var Ze=new pt(0),Gt=class{static swapWithoutFees(e,t,i){let r=t.mul(i),o=t.add(e),[s,a]=Fo(r,o),c=a.sub(t),u=i.sub(s);if(u.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:c,destinationAmountSwapped:u}}static lpTokensToTradingTokens(e,t,i,r,o){let s=e.mul(i).div(t),a=e.mul(r).div(t);if(o===0)return{tokenAmount0:s,tokenAmount1:a};if(o===1)return qt(e.mul(i),t).gt(Ze)&&s.gt(Ze)&&(s=s.add(new pt(1))),qt(e.mul(r),t).gt(Ze)&&a.gt(Ze)&&(a=a.add(new pt(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};import Pi from"bn.js";var kn=new Pi(1e6);function Eo(n,e,t){return n.mul(e).add(t).sub(new Pi(1)).div(t)}function Ai(n,e,t){return n.mul(e).div(t)}var Ut=class{static tradingFee(e,t){return Eo(e,t,kn)}static protocolFee(e,t){return Ai(e,t,kn)}static fundFee(e,t){return Ai(e,t,kn)}};var zt=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,i,r){let o=Ut.tradingFee(e,r),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:c}=Gt.swapWithoutFees(s,t,i),u=a.add(o);return{newSwapSourceAmount:t.add(u),newSwapDestinationAmount:i.sub(c),sourceAmountSwapped:u,destinationAmountSwapped:c,tradeFee:o}}static swapBaseOut({poolMintA:e,poolMintB:t,tradeFeeRate:i,baseReserve:r,quoteReserve:o,outputMint:s,outputAmount:a}){let[c,u,l,m,d]=t.address===s.toString()?[r,o,e.decimals,t.decimals,e.address]:[o,r,t.decimals,e.decimals,t.address],p=new Xt(u.toString()).div(10**m).div(new Xt(c.toString()).div(10**l)),b=a.gte(u)?u.sub(new Tn(1)):a,f=u.sub(b),g=ze(c.mul(b),f),w=ze(g.mul(new Tn(1e6)),new Tn(1e6).sub(i)),A=w.sub(g),k=new Xt(b.toString()).div(10**m).div(new Xt(w.toString()).div(10**l)),P=p.isZero()?0:k.sub(p).div(p).abs().toNumber();return{amountRealOut:b,amountIn:w,amountInWithoutFee:g,tradeFee:A,priceImpact:P}}};import J from"bn.js";var hn=(...n)=>n.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ye=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=te(t)}createTxBuilder(e){return this.scope.checkOwner(),new Vt({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(hn(e))}logInfo(...e){this.logger.info(hn(e))}logAndCreateError(...e){let t=hn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Xo}from"@solana/web3.js";import Bi,{isBN as xi}from"bn.js";import{bits as Al,BitStructure as Pl,blob as vo,Blob as kl,cstr as Tl,f32 as hl,f32be as Bl,f64 as xl,f64be as Il,greedy as Sl,Layout as Do,ns64 as Cl,ns64be as Kl,nu64 as Nl,nu64be as Ll,offset as Rl,s16 as Ml,s16be as Ol,s24 as Fl,s24be as El,s32 as _o,s32be as vl,s40 as Dl,s40be as _l,s48 as Wl,s48be as Vl,s8 as ql,seq as Wo,struct as Gl,Structure as Vo,u16 as qo,u16be as Ul,u24 as Xl,u24be as zl,u32 as Hl,u32be as Zl,u40 as Yl,u40be as jl,u48 as Ql,u48be as Jl,u8 as Go,UInt as Uo,union as $l,Union as em,unionLayoutDiscriminator as tm,utf8 as nm}from"@solana/buffer-layout";var Bn=Do,ki=Vo;var xn=Uo;var Ti=Go,ve=qo;var xe=_o;var hi=Wo;var oe=vo;var je=class extends Bn{constructor(t,i,r){super(t,r);this.blob=oe(t),this.signed=i}decode(t,i=0){let r=new Bi(this.blob.decode(t,i),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,i,r=0){return typeof t=="number"&&(t=new Bi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),i,r)}};function Y(n){return new xn(1,n)}function Ie(n){return new xn(4,n)}function I(n){return new je(8,!1,n)}function Q(n){return new je(16,!1,n)}function Ii(n){return new je(8,!0,n)}function Si(n){return new je(16,!0,n)}var Ht=class extends Bn{constructor(t,i,r,o){super(t.span,o);this.layout=t,this.decoder=i,this.encoder=r}decode(t,i){return this.decoder(this.layout.decode(t,i))}encode(t,i,r){return this.layout.encode(this.encoder(t),i,r)}getSpan(t,i){return this.layout.getSpan(t,i)}};function _(n){return new Ht(oe(32),e=>new Xo(e),e=>e.toBuffer(),n)}function De(n){return new Ht(Ti(),zo,Ho,n)}function zo(n){if(n===0)return!1;if(n===1)return!0;throw new Error("Invalid bool: "+n)}function Ho(n){return n?1:0}var In=class extends ki{decode(e,t){return super.decode(e,t)}};function U(n,e,t){return new In(n,e,t)}function z(n,e,t){let i,r=typeof e=="number"?e:xi(e)?e.toNumber():new Proxy(e,{get(o,s){if(!i){let a=Reflect.get(o,"count");i=xi(a)?a.toNumber():a,Reflect.set(o,"count",i)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(i=a),Reflect.set(o,s,a)}});return hi(n,r,t)}var gm=U([Ie("mintAuthorityOption"),_("mintAuthority"),I("supply"),Y("decimals"),Y("isInitialized"),Ie("freezeAuthorityOption"),_("freezeAuthority")]);import{PublicKey as Pm}from"@solana/web3.js";import{MintLayout as Tm,TOKEN_PROGRAM_ID as Bm}from"@solana/spl-token";var _e=r=>{var o=r,{address:n,programId:e,decimals:t}=o,i=Te(o,["address","programId","decimals"]);return G({chainId:101,address:nt(n).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:i.extensions||{}},i)},Qe=n=>n?Z(G({},n),{transferFeeConfigAuthority:n.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:n.withdrawWithheldAuthority.toBase58(),withheldAmount:n.withheldAmount.toString(),olderTransferFee:Z(G({},n.olderTransferFee),{epoch:n.olderTransferFee.epoch.toString(),maximumFee:n.olderTransferFee.maximumFee.toString()}),newerTransferFee:Z(G({},n.newerTransferFee),{epoch:n.newerTransferFee.epoch.toString(),maximumFee:n.newerTransferFee.maximumFee.toString()})}):void 0;import{PublicKey as wt,TransactionInstruction as We,Keypair as gs,SystemProgram as ys}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as qi,TOKEN_2022_PROGRAM_ID as Fn,TOKEN_PROGRAM_ID as Me}from"@solana/spl-token";var Zo=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Em=Buffer.from("amm_config","utf8"),Yo=Buffer.from("pool","utf8"),jo=Buffer.from("pool_lp_mint","utf8"),Qo=Buffer.from("pool_vault","utf8"),Jo=Buffer.from("observation","utf8");function Zt(n){return pe([Zo],n)}function Sn(n,e,t,i){return pe([Yo,e.toBuffer(),t.toBuffer(),i.toBuffer()],n)}function $o(n,e){return pe([jo,e.toBuffer()],n)}function Ci(n,e,t){return pe([Qo,e.toBuffer(),t.toBuffer()],n)}function ft(n,e){return pe([Jo,e.toBuffer()],n)}function Ki({poolId:n,programId:e,configId:t,mintA:i,mintB:r}){let o=Zt(e).publicKey,s=n||Sn(e,t,i,r).publicKey,a=$o(e,s).publicKey,c=Ci(e,s,i).publicKey,u=Ci(e,s,r).publicKey,l=ft(e,s).publicKey;return{poolId:s,configId:t,authority:o,lpMint:a,vaultA:c,vaultB:u,observationId:l}}var es=Buffer.from("locked_liquidity","utf8");function Yt(n,e){return pe([es,e.toBuffer()],n)}import{PublicKey as bf}from"@solana/web3.js";import yf from"bn.js";import{AccountLayout as kf,TOKEN_2022_PROGRAM_ID as Tf,TOKEN_PROGRAM_ID as hf}from"@solana/spl-token";import{Keypair as Gp,PublicKey as Up,SystemProgram as zp,TransactionInstruction as Hp}from"@solana/web3.js";import Yp from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Jp,TOKEN_2022_PROGRAM_ID as $p,TOKEN_PROGRAM_ID as ef}from"@solana/spl-token";import Tp from"bn.js";import le from"bn.js";var Cn=new le(0),Ni=new le(1),Li=new le(-1),jt=new le(1).shln(64),Ri=new le(1).shln(128),ts=jt.sub(Ni);var ns=Ri.subn(1),Je=-443636,bt=-Je,Kn=new le("4295048016"),Nn=new le("79226673521066979257578248091"),_m=new le("4295048017"),Wm=new le("79226673521066979257578248090");var is=new le(10).pow(new le(6));var Vm=new le("18446744073700000000");import up from"bn.js";var Zm=Buffer.from("amm_config","utf8"),Ym=Buffer.from("pool","utf8"),jm=Buffer.from("pool_vault","utf8"),Qm=Buffer.from("pool_reward_vault","utf8"),Jm=Buffer.from("position","utf8"),$m=Buffer.from("tick_array","utf8"),ed=Buffer.from("operation","utf8"),td=Buffer.from("pool_tick_array_bitmap_extension","utf8"),nd=Buffer.from("observation","utf8");function Ln(n){return pe([Buffer.from("metadata","utf8"),Ue.toBuffer(),n.toBuffer()],Ue)}var id=Buffer.from("locked_position","utf8");import{PublicKey as Ed}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Dd}from"@solana/spl-token";import Wd from"bn.js";import sd from"bn.js";var On=14;var Qt=60;var as=U([oe(8),Y("bump"),ve("index"),_(""),Ie("protocolFeeRate"),Ie("tradeFeeRate"),ve("tickSpacing"),z(I(),8,"")]),us=U([Ie("blockTimestamp"),Ii("tickCumulative"),z(I(),4)]),Vi=U([oe(8),De("initialized"),I("recentEpoch"),ve("observationIndex"),_("poolId"),z(us,100,"observations"),z(I(),4)]),cs=U([Y("rewardState"),I("openTime"),I("endTime"),I("lastUpdateTime"),Q("emissionsPerSecondX64"),I("rewardTotalEmissioned"),I("rewardClaimed"),_("tokenMint"),_("tokenVault"),_("creator"),Q("rewardGrowthGlobalX64")]),Di=U([oe(8),Y("bump"),_("ammConfig"),_("creator"),_("mintA"),_("mintB"),_("vaultA"),_("vaultB"),_("observationId"),Y("mintDecimalsA"),Y("mintDecimalsB"),ve("tickSpacing"),Q("liquidity"),Q("sqrtPriceX64"),xe("tickCurrent"),Ie(),Q("feeGrowthGlobalX64A"),Q("feeGrowthGlobalX64B"),I("protocolFeesTokenA"),I("protocolFeesTokenB"),Q("swapInAmountTokenA"),Q("swapOutAmountTokenB"),Q("swapInAmountTokenB"),Q("swapOutAmountTokenA"),Y("status"),z(Y(),7,""),z(cs,3,"rewardInfos"),z(I(),16,"tickArrayBitmap"),I("totalFeesTokenA"),I("totalFeesClaimedTokenA"),I("totalFeesTokenB"),I("totalFeesClaimedTokenB"),I("fundFeesTokenA"),I("fundFeesTokenB"),I("startTime"),z(I(),15*4-3,"padding")]),ls=U([Q("growthInsideLastX64"),I("rewardAmountOwed")]),_i=U([oe(8),Y("bump"),_("nftMint"),_("poolId"),xe("tickLower"),xe("tickUpper"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),I("tokenFeesOwedA"),I("tokenFeesOwedB"),z(ls,3,"rewardInfos"),z(I(),8,"")]),Rp=U([oe(8),Y("bump"),_("poolId"),xe("tickLowerIndex"),xe("tickUpperIndex"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),I("tokenFeesOwedA"),I("tokenFeesOwedB"),z(Q(),3,"rewardGrowthInside"),z(I(),8,"")]),ms=U([xe("tick"),Si("liquidityNet"),Q("liquidityGross"),Q("feeGrowthOutsideX64A"),Q("feeGrowthOutsideX64B"),z(Q(),3,"rewardGrowthsOutsideX64"),z(Ie(),13,"")]),Fi=U([oe(8),_("poolId"),xe("startTickIndex"),z(ms,Qt,"ticks"),Y("initializedTickCount"),z(Y(),115,"")]),ds=U([oe(329),z(_(),100,"whitelistMints")]),ss=U([oe(8),_("poolId"),z(z(I(),8),On,"positiveTickArrayBitmap"),z(z(I(),8),On,"negativeTickArrayBitmap")]),Mp=U([I(),Y("bump"),_("owner"),_("poolId"),_("positionId"),_("nftAccount"),z(I(),8)]),Op=U([oe(8),Y("bump"),_("lockOwner"),_("poolId"),_("positionId"),_("nftAccount"),_("lockNftMint"),I("recentEpoch"),z(I(),8)]);Vi.span;var cf=te("Raydium_Clmm");var ws=te("Raydium_cpmm"),Ve={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133]};function Gi(n,e,t,i,r,o,s,a,c,u,l,m,d,p,b,f,g,w,A,k){let P=U([I("amountMaxA"),I("amountMaxB"),I("openTime")]),h=Sn(n,t,o,s).publicKey,T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!r.equals(h),isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,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:g,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:qi,isSigner:!1,isWritable:!1},{pubkey:ui,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1}],x=Buffer.alloc(P.span);return P.encode({amountMaxA:w,amountMaxB:A,openTime:k},x),new We({keys:T,programId:n,data:Buffer.from([...Ve.initialize,...x])})}function Ui(n,e,t,i,r,o,s,a,c,u,l,m,d,p,b){let f=U([I("lpAmount"),I("amountMaxA"),I("amountMaxB")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:Fn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],w=Buffer.alloc(f.span);return ws.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:b.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:b},w),new We({keys:g,programId:n,data:Buffer.from([...Ve.deposit,...w])})}function Xi(n,e,t,i,r,o,s,a,c,u,l,m,d,p,b){let f=U([I("lpAmount"),I("amountMinA"),I("amountMinB")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:Fn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Ct,isSigner:!1,isWritable:!1}],w=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:b},w),new We({keys:g,programId:n,data:Buffer.from([...Ve.withdraw,...w])})}function zi(n,e,t,i,r,o,s,a,c,u,l,m,d,p,b,f){let g=U([I("amountIn"),I("amounOutMin")]),w=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],A=Buffer.alloc(g.span);return g.encode({amountIn:b,amounOutMin:f},A),new We({keys:w,programId:n,data:Buffer.from([...Ve.swapBaseInput,...A])})}function Hi(n,e,t,i,r,o,s,a,c,u,l,m,d,p,b,f){let g=U([I("amountInMax"),I("amountOut")]),w=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],A=Buffer.alloc(g.span);return g.encode({amountInMax:b,amountOut:f},A),new We({keys:w,programId:n,data:Buffer.from([...Ve.swapBaseOutput,...A])})}async function Zi(n){var f;let{ownerInfo:e,poolInfo:t,poolKeys:i,getEphemeralSigners:r}=n,o=[],[s,a]=[new wt(t.id),new wt(t.lpMint.address)],c;if(r)c=new wt((await r(1))[0]);else{let g=gs.generate();o.push(g),c=g.publicKey}let{publicKey:u}=we(e.feePayer,c,Me),{publicKey:l}=Ln(c),{publicKey:m}=Yt(n.lockProgram,c),{publicKey:d}=we(e.feePayer,a,Me),{publicKey:p}=we(n.lockAuthProgram,a,Me),b=As({programId:n.lockProgram,auth:n.lockAuthProgram,payer:e.feePayer,nftOwner:e.feePayer,liquidityOwner:e.feePayer,nftMint:c,nftAccount:u,poolId:s,lockPda:m,mintLp:a,userLpVault:d,lockLpVault:p,poolVaultA:new wt(i.vault.A),poolVaultB:new wt(i.vault.B),metadataAccount:l,lpAmount:n.lpAmount,withMetadata:(f=n.withMetadata)!=null?f:!0});return{address:{nftMint:c,nftAccount:u,metadataAccount:l,lockPda:m,userLpVault:d,lockLpVault:p},instructions:[b],signers:o,instructionTypes:[re.CpmmLockLp],lookupTableAddress:[]}}function As({programId:n,auth:e,payer:t,liquidityOwner:i,nftOwner:r,nftMint:o,nftAccount:s,poolId:a,lockPda:c,mintLp:u,userLpVault:l,lockLpVault:m,poolVaultA:d,poolVaultB:p,metadataAccount:b,lpAmount:f,withMetadata:g}){let w=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:ys.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qi,isSigner:!1,isWritable:!1},{pubkey:Ue,isSigner:!1,isWritable:!1}],A=U([I("lpAmount"),De("withMetadata")]),k=Buffer.alloc(A.span);A.encode({lpAmount:f,withMetadata:g},k);let P=Buffer.from([...Ve.lockCpLiquidity,...k]);return new We({keys:w,programId:n,data:P})}function Yi({programId:n,nftOwner:e,auth:t,nftAccount:i,lockPda:r,poolId:o,mintLp:s,userVaultA:a,userVaultB:c,poolVaultA:u,poolVaultB:l,mintA:m,mintB:d,lockLpVault:p,lpFeeAmount:b,cpmmProgram:f,cpmmAuthProgram:g}){let w=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:f!=null?f:gi,isSigner:!1,isWritable:!1},{pubkey:g!=null?g:yi,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:Fn,isSigner:!1,isWritable:!1},{pubkey:Ct,isSigner:!1,isWritable:!1}],A=U([I("lpFeeAmount")]),k=Buffer.alloc(A.span);A.encode({lpFeeAmount:b},k);let P=Buffer.from([...Ve.collectCpFee,...k]);return new We({keys:w,programId:n,data:P})}var ji=U([oe(8),Y("bump"),De("disableCreatePool"),ve("index"),I("tradeFeeRate"),I("protocolFeeRate"),I("fundFeeRate"),I("createPoolFee"),_("protocolOwner"),_("fundOwner"),z(I(),16)]),Qi=U([oe(8),_("configId"),_("poolCreator"),_("vaultA"),_("vaultB"),_("mintLp"),_("mintA"),_("mintB"),_("mintProgramA"),_("mintProgramB"),_("observationId"),Y("bump"),Y("status"),Y("lpDecimals"),Y("mintDecimalA"),Y("mintDecimalB"),I("lpAmount"),I("protocolFeesMintA"),I("protocolFeesMintB"),I("fundFeesMintA"),I("fundFeesMintB"),I("openTime"),z(I(),32)]);var En=class extends Ye{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let i=await Fe(this.scope.connection,e.map(m=>({pubkey:new B(m)}))),r={},o=new Set,s=[];for(let m=0;m<e.length;m++){let d=i[m];if(d.accountInfo===null)throw Error("fetch pool info error: "+String(e[m]));let p=Qi.decode(d.accountInfo.data);r[String(e[m])]=Z(G({},p),{programId:d.accountInfo.owner}),o.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...o],d=await Fe(this.scope.connection,m.map(p=>({pubkey:new B(p)})));for(let p=0;p<m.length;p++){let b=d[p].accountInfo;if(b===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=ji.decode(b.data)}}let c={},u=await Fe(this.scope.connection,s.map(m=>({pubkey:new B(m)})));for(let m=0;m<s.length;m++){let d=u[m].accountInfo;if(d===null)throw Error("fetch vault info error: "+s[m]);c[String(s[m])]=new J(Ps.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(r)){let p=c[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),b=c[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=Z(G({},d),{baseReserve:p,quoteReserve:b,vaultAAmount:c[d.vaultA.toString()],vaultBAmount:c[d.vaultB.toString()],configInfo:a[d.configId.toString()],poolPrice:new ee(b.toString()).div(new ee(10).pow(d.mintDecimalB)).div(new ee(p.toString()).div(new ee(10).pow(d.mintDecimalA)))})}return l}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((i,r)=>{var c,u,l,m;let o=e[r],[s,a]=[o.mintA.toBase58(),o.mintB.toBase58()];return Z(G({},i),{[r]:Z(G({},o),{id:new B(r),configInfo:o.configInfo,version:7,authority:Zt(o.programId).publicKey,mintA:_e({address:s,decimals:o.mintDecimalA,programId:o.mintProgramA.toBase58(),extensions:{feeConfig:(c=t[s])!=null&&c.feeConfig?Qe((u=t[s])==null?void 0:u.feeConfig):void 0}}),mintB:_e({address:a,decimals:o.mintDecimalB,programId:o.mintProgramB.toBase58(),extensions:{feeConfig:(l=t[a])!=null&&l.feeConfig?Qe((m=t[a])==null?void 0:m.feeConfig):void 0}})})})},{})}async getPoolInfoFromRpc(e){let t=await this.getRpcPoolInfo(e,!0),i=await cn({connection:this.scope.connection,mints:[t.mintA,t.mintB]}),r=_e({address:t.mintA.toBase58(),decimals:t.mintDecimalA,programId:t.mintProgramA.toBase58(),extensions:{feeConfig:i[t.mintA.toBase58()].feeConfig?Qe(i[t.mintA.toBase58()].feeConfig):void 0}}),o=_e({address:t.mintB.toBase58(),decimals:t.mintDecimalB,programId:t.mintProgramB.toBase58(),extensions:{feeConfig:i[t.mintB.toBase58()].feeConfig?Qe(i[t.mintB.toBase58()].feeConfig):void 0}}),s=_e({address:t.mintLp.toBase58(),decimals:t.lpDecimals,programId:be.toBase58()}),a={id:t.configId.toBase58(),index:t.configInfo.index,protocolFeeRate:t.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:t.configInfo.tradeFeeRate.toNumber(),fundFeeRate:t.configInfo.fundFeeRate.toNumber(),createPoolFee:t.configInfo.createPoolFee.toString()},c={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};return{poolInfo:{programId:t.programId.toBase58(),id:e,type:"Standard",lpMint:s,lpPrice:0,lpAmount:t.lpAmount.toNumber(),config:a,mintA:r,mintB:o,rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:t.poolPrice.toNumber(),mintAmountA:new ee(t.vaultAAmount.toString()).div(10**r.decimals).toNumber(),mintAmountB:new ee(t.vaultBAmount.toString()).div(10**o.decimals).toNumber(),feeRate:t.configInfo.tradeFeeRate.toNumber(),openTime:t.openTime.toString(),tvl:0,burnPercent:0,day:c,week:c,month:c,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0},poolKeys:{programId:t.programId.toBase58(),id:e,mintA:r,mintB:o,openTime:t.openTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},authority:Zt(t.programId).publicKey.toBase58(),mintLp:s,config:a,observationId:ft(t.programId,new B(e)).publicKey.toBase58()},rpcData:t}}async createPool(p){var b=p,{poolId:e,programId:t,poolFeeAccount:i,startTime:r,ownerInfo:o,associatedOnly:s=!1,checkCreateATAOwner:a=!1,txVersion:c,feeConfig:u,computeBudgetConfig:l,txTipConfig:m}=b,d=Te(b,["poolId","programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","feeConfig","computeBudgetConfig","txTipConfig"]);var q,R,ae;let f=o.feePayer||((q=this.scope.owner)==null?void 0:q.publicKey),g=new J(new B(d.mintA.address).toBuffer()).lte(new J(new B(d.mintB.address).toBuffer())),[w,A]=g?[d.mintA,d.mintB]:[d.mintB,d.mintA],[k,P]=g?[d.mintAAmount,d.mintBAmount]:[d.mintBAmount,d.mintAAmount],h=o.useSOLBalance&&w.address===Jt.toBase58(),T=o.useSOLBalance&&A.address===Jt.toBase58(),[x,C]=[new B(w.address),new B(A.address)],S=this.createTxBuilder(),{account:v,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({mint:x,tokenProgram:w.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:f,amount:k}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:s,checkCreateATAOwner:a});S.addInstruction(O||{});let{account:F,instructionParams:E}=await this.scope.account.getOrCreateTokenAccount({mint:new B(A.address),tokenProgram:A.programId,owner:this.scope.ownerPubKey,createInfo:T?{payer:f,amount:P}:void 0,notUseTokenAccount:T,skipCloseAccount:!T,associatedOnly:T?!1:s,checkCreateATAOwner:a});if(S.addInstruction(E||{}),v===void 0||F===void 0)throw Error("you don't has some token account");let W=Ki({poolId:e,programId:t,configId:new B(u.id),mintA:x,mintB:C});return S.addInstruction({instructions:[Gi(t,this.scope.ownerPubKey,new B(u.id),W.authority,W.poolId,x,C,W.lpMint,v,F,we(this.scope.ownerPubKey,W.lpMint).publicKey,W.vaultA,W.vaultB,i,new B((R=w.programId)!=null?R:be),new B((ae=A.programId)!=null?ae:be),W.observationId,k,P,r)],instructionTypes:[re.CpmmCreatePool]}),S.addCustomComputeBudget(l),S.addTipInstruction(m),S.versionBuild({txVersion:c,extInfo:{address:Z(G({},W),{mintA:w,mintB:A,programId:t,poolFeeAccount:i,feeConfig:u})}})}async addLiquidity(e){let{poolInfo:t,poolKeys:i,inputAmount:r,baseIn:o,slippage:s,computeResult:a,computeBudgetConfig:c,txTipConfig:u,config:l,txVersion:m}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),r.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:r.toString()});let{account:d}=this.scope,{bypassAssociatedCheck:p,checkCreateATAOwner:b}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},l),f=a?void 0:await this.getRpcPoolInfo(t.id),{liquidity:g,inputAmountFee:w,anotherAmount:A}=a||this.computePairAmount({poolInfo:Z(G({},t),{lpAmount:new ee(f.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:f.baseReserve,quoteReserve:f.quoteReserve,slippage:new ce(0),baseIn:o,epochInfo:await this.scope.fetchEpochInfo(),amount:new ee(r.toString()).div(10**(o?t.mintA.decimals:t.mintB.decimals))}),k=A.amount,P=t.mintA.address===Jt.toString(),h=t.mintB.address===Jt.toString(),T=this.createTxBuilder(),[x,C]=[new B(t.mintA.address),new B(t.mintB.address)],{account:S,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new B(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||(o?r:k).isZero()?{payer:this.scope.ownerPubKey,amount:o?r:k}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:b});T.addInstruction(v||{});let{account:O,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new B(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||(o?k:r).isZero()?{payer:this.scope.ownerPubKey,amount:o?k:r}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:b});T.addInstruction(F||{}),!S&&!O&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",d.tokenAccounts);let E=await d.getCreatedTokenAccount({mint:new B(t.lpMint.address)}),Pe=await d.handleTokenAccount({side:"out",amount:0,mint:new B(t.lpMint.address),tokenAccount:E,bypassAssociatedCheck:p,checkCreateATAOwner:b}),{tokenAccount:W}=Pe,q=Te(Pe,["tokenAccount"]);T.addInstruction(q);let R=i!=null?i:await this.getCpmmPoolKeys(t.id),ae=new ce(new J(1)).sub(s);return T.addInstruction({instructions:[Ui(new B(t.programId),this.scope.ownerPubKey,new B(R.authority),new B(t.id),W,S,O,new B(R.vault.A),new B(R.vault.B),x,C,new B(t.lpMint.address),a?a==null?void 0:a.liquidity:ae.mul(g).quotient,o?w.amount:k,o?k:w.amount)],instructionTypes:[re.CpmmAddLiquidity],lookupTableAddress:R.lookupTableAccount?[R.lookupTableAccount]:[]}),T.addCustomComputeBudget(c),T.addTipInstruction(u),T.versionBuild({txVersion:m})}async withdrawLiquidity(e){var W,q;let{poolInfo:t,poolKeys:i,lpAmount:r,slippage:o,computeBudgetConfig:s,txTipConfig:a,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let u=new ce(new J(1)).sub(o),l=await this.getRpcPoolInfo(t.id),[m,d]=[u.mul(r.mul(l.baseReserve).div(l.lpAmount)).quotient,u.mul(r.mul(l.quoteReserve).div(l.lpAmount)).quotient],p=await this.scope.fetchEpochInfo(),[b,f]=[Ae(m,t.mintA.extensions.feeConfig,p,!1),Ae(d,t.mintB.extensions.feeConfig,p,!1)],{account:g}=this.scope,w=this.createTxBuilder(),[A,k]=[new B(t.mintA.address),new B(t.mintB.address)],P=A.equals(ue),h=k.equals(ue),T,x,{account:C,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new B(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});T=C,S&&w.addInstruction(S);let{account:v,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new B(t.mintB.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!h,associatedOnly:!h,checkCreateATAOwner:!1});x=v,O&&w.addInstruction(O),(!T||!x)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",g.tokenAccounts);let F=await g.getCreatedTokenAccount({mint:new B(t.lpMint.address)});F||this.logAndCreateError("cannot found lp token account","tokenAccounts",g.tokenAccounts);let E=i!=null?i:await this.getCpmmPoolKeys(t.id);return w.addInstruction({instructions:[Xi(new B(t.programId),this.scope.ownerPubKey,new B(E.authority),new B(t.id),F,T,x,new B(E.vault.A),new B(E.vault.B),A,k,new B(t.lpMint.address),r,m.sub((W=b.fee)!=null?W:new J(0)),d.sub((q=f.fee)!=null?q:new J(0)))],instructionTypes:[re.CpmmWithdrawLiquidity],lookupTableAddress:E.lookupTableAccount?[E.lookupTableAccount]:[]}),w.addCustomComputeBudget(s),w.addTipInstruction(a),w.versionBuild({txVersion:c})}async swap(e){var v,O,F,E,W,q;let{poolInfo:t,poolKeys:i,baseIn:r,fixedOut:o,inputAmount:s,swapResult:a,slippage:c=0,config:u,computeBudgetConfig:l,txTipConfig:m,txVersion:d}=e,{bypassAssociatedCheck:p,checkCreateATAOwner:b,associatedOnly:f}=G({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},u),g=this.createTxBuilder(),[w,A]=[new B(t.mintA.address),new B(t.mintB.address)];o?a.sourceAmountSwapped=a.sourceAmountSwapped.mul(new J((1+c)*1e4)).div(new J(1e4)):a.destinationAmountSwapped=a.destinationAmountSwapped.mul(new J((1-c)*1e4)).div(new J(1e4));let k=t.mintA.address===ue.toBase58(),P=t.mintB.address===ue.toBase58(),{account:h,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:w,tokenProgram:new B((v=t.mintA.programId)!=null?v:be),owner:this.scope.ownerPubKey,createInfo:k||!r?{payer:this.scope.ownerPubKey,amount:r?a.sourceAmountSwapped:0}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:f,checkCreateATAOwner:b});T&&g.addInstruction(T);let{account:x,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({mint:A,tokenProgram:new B((O=t.mintB.programId)!=null?O:be),owner:this.scope.ownerPubKey,createInfo:P||r?{payer:this.scope.ownerPubKey,amount:r?0:a.sourceAmountSwapped}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:f,checkCreateATAOwner:b});C&&g.addInstruction(C),(!h||!x)&&this.logAndCreateError("user do not have token account",{mintA:t.mintA.symbol||t.mintA.address,mintB:t.mintB.symbol||t.mintB.address,mintATokenAcc:h,mintBTokenAcc:x,mintAUseSOLBalance:k,mintBUseSOLBalance:P,associatedOnly:f});let S=i!=null?i:await this.getCpmmPoolKeys(t.id);return g.addInstruction({instructions:[o?Hi(new B(t.programId),this.scope.ownerPubKey,new B(S.authority),new B(S.config.id),new B(t.id),r?h:x,r?x:h,new B(S.vault[r?"A":"B"]),new B(S.vault[r?"B":"A"]),new B((W=t[r?"mintA":"mintB"].programId)!=null?W:be),new B((q=t[r?"mintB":"mintA"].programId)!=null?q:be),r?w:A,r?A:w,ft(new B(t.programId),new B(t.id)).publicKey,a.sourceAmountSwapped,a.destinationAmountSwapped):zi(new B(t.programId),this.scope.ownerPubKey,new B(S.authority),new B(S.config.id),new B(t.id),r?h:x,r?x:h,new B(S.vault[r?"A":"B"]),new B(S.vault[r?"B":"A"]),new B((F=t[r?"mintA":"mintB"].programId)!=null?F:be),new B((E=t[r?"mintB":"mintA"].programId)!=null?E:be),r?w:A,r?A:w,ft(new B(t.programId),new B(t.id)).publicKey,s,a.destinationAmountSwapped)],instructionTypes:[o?re.CpmmSwapBaseOut:re.ClmmSwapBaseIn]}),g.addCustomComputeBudget(l),g.addTipInstruction(m),g.versionBuild({txVersion:d})}async lockLp(e){var l,m,d,p,b;let{poolInfo:t,lpAmount:i,computeBudgetConfig:r,txTipConfig:o,txVersion:s}=e;i.isZero()&&this.logAndCreateError("lpAmount must greater than zero",{lpAmount:i.toString()});let a=this.createTxBuilder(),c=(l=e.poolKeys)!=null?l:await this.getCpmmPoolKeys(t.id),u=await Zi({poolInfo:t,poolKeys:c,ownerInfo:{wallet:this.scope.ownerPubKey,feePayer:(m=e.feePayer)!=null?m:this.scope.ownerPubKey},lockProgram:(d=e.programId)!=null?d:Et,lockAuthProgram:(p=e.authProgram)!=null?p:vt,lpAmount:i,withMetadata:(b=e.withMetadata)!=null?b:!0,getEphemeralSigners:e.getEphemeralSigners});return a.addInstruction(u),a.addCustomComputeBudget(r),a.addTipInstruction(o),a.versionBuild({txVersion:s,extInfo:u.address})}async harvestLockLp(e){var O;let{poolInfo:t,lpFeeAmount:i,nftMint:r,programId:o=Et,authProgram:s=vt,cpmmProgram:a,computeBudgetConfig:c,txTipConfig:u,txVersion:l}=e;i.isZero()&&this.logAndCreateError("lpFeeAmount must greater than zero",{lpAmount:i.toString()});let m=e.feePayer||this.scope.ownerPubKey,d=this.createTxBuilder(),[p,b]=[new B(t.mintA.address),new B(t.mintB.address)],f=p.equals(ue),g=b.equals(ue),w,A,{account:k,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new B(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:!f,checkCreateATAOwner:!1});w=k,P&&d.addInstruction(P);let{account:h,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new B(t.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!g,associatedOnly:!g,checkCreateATAOwner:!1});A=h,T&&d.addInstruction(T),(!w||!A)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:w,tokenAccountB:A});let x=(O=e.poolKeys)!=null?O:await this.getCpmmPoolKeys(t.id),{publicKey:C}=we(m,r,be),{publicKey:S}=Yt(o,r),{publicKey:v}=we(s,new B(t.lpMint.address),be);return d.addInstruction({instructions:[Yi({programId:o!=null?o:Et,nftOwner:this.scope.ownerPubKey,auth:s!=null?s:vt,nftMint:r,nftAccount:C,lockPda:S,poolId:new B(t.id),mintLp:new B(x.mintLp.address),userVaultA:w,userVaultB:A,poolVaultA:new B(x.vault.A),poolVaultB:new B(x.vault.B),mintA:p,mintB:b,lockLpVault:v,lpFeeAmount:i,cpmmProgram:a==null?void 0:a.programId,cpmmAuthProgram:a==null?void 0:a.authProgram})],instructionTypes:[re.CpmmCollectLockFee]}),d.addCustomComputeBudget(c),d.addTipInstruction(u),d.versionBuild({txVersion:l})}computeSwapAmount({pool:e,amountIn:t,outputMint:i,slippage:r}){let o=i.toString()===e.mintB.address,s=zt.swap(t,o?e.baseReserve:e.quoteReserve,o?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate),a=new ee(s.destinationAmountSwapped.toString()).div(s.sourceAmountSwapped.toString()),c=s.destinationAmountSwapped.mul(new J((1-r)*1e4)).div(new J(1e4));return{allTrade:s.sourceAmountSwapped.eq(t),amountIn:t,amountOut:s.destinationAmountSwapped,minAmountOut:c,executionPrice:a,fee:s.tradeFee,priceImpact:e.poolPrice.sub(a).div(e.poolPrice)}}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:i,amount:r,slippage:o,epochInfo:s,baseIn:a}){var P,h,T,x,C,S,v,O,F;let c=1-Number(o.toSignificant())/100,u=new J(new ee(r).mul(10**e[a?"mintA":"mintB"].decimals).mul(c).toFixed(0)),l=Ae(u,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),m=u.sub((P=l.fee)!=null?P:new J(0)),d=new J(new ee(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,ee.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",i.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",u.toString(),"amountInFee:",(T=(h=l.fee)==null?void 0:h.toString())!=null?T:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${o.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let b=m.mul(d).div(p==="base"?t:i),f={amount:wn,fee:void 0,expirationTime:void 0};if(!m.isZero()){let E=ks(b,t,i,d);this.logDebug("lpAmountData:",{amountA:E.amountA.toString(),amountB:E.amountB.toString()}),f=Ae(E[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let g=new ce(new J(1)).add(o),w=new ce(new J(1)).sub(o),A=Ae(g.mul(f.amount.sub((x=f.fee)!=null?x:new J(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0),k=Ae(w.mul(f.amount.sub((C=f.fee)!=null?C:new J(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(v=(S=f.fee)==null?void 0:S.toString())!=null?v:0,"maxAnotherAmount:",A.amount.toString(),"maxAnotherAmountFee:",(F=(O=A.fee)==null?void 0:O.toString())!=null?F:0),{inputAmountFee:l,anotherAmount:f,maxAnotherAmount:A,minAnotherAmount:k,liquidity:b}}};function ks(n,e,t,i){let r=n.mul(e).div(i);!r.isZero()&&!n.mul(e).mod(i).isZero()&&(r=r.add(new J(1)));let o=n.mul(t).div(i);return!o.isZero()&&!n.mul(t).mod(i).isZero()&&(o=o.add(new J(1))),{amountA:r,amountB:o}}export{En as default};
//# sourceMappingURL=cpmm.mjs.map