snapper-sdk
Version:
An SDK for building applications on top of Snapper.
9 lines • 105 kB
JavaScript
import{PublicKey as T}from"@solana/web3.js";import{AccountLayout as ss,NATIVE_MINT as Xt,TOKEN_PROGRAM_ID as de}from"@solana/spl-token";import we from"bn.js";var Fe=9e15,Be=1e9,zt="0123456789abcdef",pt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",ft="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Ht={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Fe,maxE:Fe,crypto:!1},Rn,ge,R=!0,yt="[DecimalError] ",Te=yt+"Invalid argument: ",Mn=yt+"Precision limit exceeded",On=yt+"crypto unavailable",Fn="[object Decimal]",ee=Math.floor,j=Math.pow,Wi=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,qi=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ui=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,En=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,le=1e7,K=7,Gi=9007199254740991,Xi=pt.length-1,Zt=ft.length-1,A={toStringTag:Fn};A.absoluteValue=A.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),I(n)};A.ceil=function(){return I(new this.constructor(this),this.e+1,2)};A.clampedTo=A.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(Te+e);return t=i.cmp(n),t<0?n:i.cmp(e)>0?e:new r(i)};A.comparedTo=A.cmp=function(n){var e,t,i,r,o=this,s=o.d,a=(n=new o.constructor(n)).d,u=o.s,c=n.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==n.e)return o.e>n.e^u<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]^u<0?1:-1;return i===r?0:i>r^u<0?1:-1};A.cosine=A.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())+K,i.rounding=1,t=zi(i,Wn(i,t)),i.precision=n,i.rounding=e,I(ge==2||ge==3?t.neg():t,n,e,!0)):new i(1):new i(NaN)};A.cubeRoot=A.cbrt=function(){var n,e,t,i,r,o,s,a,u,c,m=this,l=m.constructor;if(!m.isFinite()||m.isZero())return new l(m);for(R=!1,o=m.s*j(m.s*m,1/3),!o||Math.abs(o)==1/0?(t=$(m.d),n=m.e,(o=(n-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=j(t,1/3),n=ee((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 l(t),i.s=m.s):i=new l(o.toString()),s=(n=l.precision)+3;;)if(a=i,u=a.times(a).times(a),c=u.plus(m),i=_(c.plus(m).times(a),c.plus(u),s+2,1),$(a.d).slice(0,s)===(t=$(i.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(I(a,n+1,0),a.times(a).times(a).eq(m))){i=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(I(i,n+1,1),e=!i.times(i).times(i).eq(m));break}return R=!0,I(i,n,l.rounding,e)};A.decimalPlaces=A.dp=function(){var n,e=this.d,t=NaN;if(e){if(n=e.length-1,t=(n-ee(this.e/K))*K,n=e[n],n)for(;n%10==0;n/=10)t--;t<0&&(t=0)}return t};A.dividedBy=A.div=function(n){return _(this,new this.constructor(n))};A.dividedToIntegerBy=A.divToInt=function(n){var e=this,t=e.constructor;return I(_(e,new t(n),0,1,1),t.precision,t.rounding)};A.equals=A.eq=function(n){return this.cmp(n)===0};A.floor=function(){return I(new this.constructor(this),this.e+1,3)};A.greaterThan=A.gt=function(n){return this.cmp(n)>0};A.greaterThanOrEqualTo=A.gte=function(n){var e=this.cmp(n);return e==1||e===0};A.hyperbolicCosine=A.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/wt(4,n)).toString()):(n=16,e="2.3283064365386962890625e-10"),o=Ee(s,1,o.times(e),new s(1),!0);for(var u,c=n,m=new s(8);c--;)u=o.times(o),o=a.minus(u.times(m.minus(u.times(m))));return I(o,s.precision=t,s.rounding=i,!0)};A.hyperbolicSine=A.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=Ee(o,2,r,r,!0);else{n=1.4*Math.sqrt(i),n=n>16?16:n|0,r=r.times(1/wt(5,n)),r=Ee(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);n--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,I(r,e,t,!0)};A.hyperbolicTangent=A.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,_(t.sinh(),t.cosh(),i.precision=n,i.rounding=e)):new i(t.s)};A.inverseCosine=A.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()?ce(t,r,o):new t(0):new t(NaN):e.isZero()?ce(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),n=ce(t,r+4,o).times(.5),t.precision=r,t.rounding=o,n.minus(e))};A.inverseHyperbolicCosine=A.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,R=!1,t=t.times(t).minus(1).sqrt().plus(t),R=!0,i.precision=n,i.rounding=e,t.ln()):new i(t)};A.inverseHyperbolicSine=A.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,R=!1,t=t.times(t).plus(1).sqrt().plus(t),R=!0,i.precision=n,i.rounding=e,t.ln())};A.inverseHyperbolicTangent=A.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?I(new o(r),n,e,!0):(o.precision=t=i-r.e,r=_(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)};A.inverseSine=A.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=ce(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)))};A.inverseTangent=A.atan=function(){var n,e,t,i,r,o,s,a,u,c=this,m=c.constructor,l=m.precision,d=m.rounding;if(c.isFinite()){if(c.isZero())return new m(c);if(c.abs().eq(1)&&l+4<=Zt)return s=ce(m,l+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new m(NaN);if(l+4<=Zt)return s=ce(m,l+4,d).times(.5),s.s=c.s,s}for(m.precision=a=l+10,m.rounding=1,t=Math.min(28,a/K+2|0),n=t;n;--n)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(R=!1,e=Math.ceil(a/K),i=1,u=c.times(c),s=new m(c),r=c;n!==-1;)if(r=r.times(u),o=s.minus(r.div(i+=2)),r=r.times(u),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)),R=!0,I(s,m.precision=l,m.rounding=d,!0)};A.isFinite=function(){return!!this.d};A.isInteger=A.isInt=function(){return!!this.d&&ee(this.e/K)>this.d.length-2};A.isNaN=function(){return!this.s};A.isNegative=A.isNeg=function(){return this.s<0};A.isPositive=A.isPos=function(){return this.s>0};A.isZero=function(){return!!this.d&&this.d[0]===0};A.lessThan=A.lt=function(n){return this.cmp(n)<0};A.lessThanOrEqualTo=A.lte=function(n){return this.cmp(n)<1};A.logarithm=A.log=function(n){var e,t,i,r,o,s,a,u,c=this,m=c.constructor,l=m.precision,d=m.rounding,p=5;if(n==null)n=new m(10),e=!0;else{if(n=new m(n),t=n.d,n.s<0||!t||!t[0]||n.eq(1))return new m(NaN);e=n.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new m(t&&!t[0]?-1/0:c.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(R=!1,a=l+p,s=he(c,a),i=e?bt(m,a+10):he(n,a),u=_(s,i,a,1),ze(u.d,r=l,d))do if(a+=10,s=he(c,a),i=e?bt(m,a+10):he(n,a),u=_(s,i,a,1),!o){+$(u.d).slice(r+1,r+15)+1==1e14&&(u=I(u,l+1,0));break}while(ze(u.d,r+=10,d));return R=!0,I(u,l,d)};A.minus=A.sub=function(n){var e,t,i,r,o,s,a,u,c,m,l,d,p=this,g=p.constructor;if(n=new g(n),!p.d||!n.d)return!p.s||!n.s?n=new g(NaN):p.d?n.s=-n.s:n=new g(n.d||p.s!==n.s?p:NaN),n;if(p.s!=n.s)return n.s=-n.s,p.plus(n);if(c=p.d,d=n.d,a=g.precision,u=g.rounding,!c[0]||!d[0]){if(d[0])n.s=-n.s;else if(c[0])n=new g(p);else return new g(u===3?-0:0);return R?I(n,a,u):n}if(t=ee(n.e/K),m=ee(p.e/K),c=c.slice(),o=m-t,o){for(l=o<0,l?(e=c,o=-o,s=d.length):(e=d,t=m,s=c.length),i=Math.max(Math.ceil(a/K),s)+2,o>i&&(o=i,e.length=1),e.reverse(),i=o;i--;)e.push(0);e.reverse()}else{for(i=c.length,s=d.length,l=i<s,l&&(s=i),i=0;i<s;i++)if(c[i]!=d[i]){l=c[i]<d[i];break}o=0}for(l&&(e=c,c=d,d=e,n.s=-n.s),s=c.length,i=d.length-s;i>0;--i)c[s++]=0;for(i=d.length;i>o;){if(c[--i]<d[i]){for(r=i;r&&c[--r]===0;)c[r]=le-1;--c[r],c[i]+=le}c[i]-=d[i]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(n.d=c,n.e=gt(c,t),R?I(n,a,u):n):new g(u===3?-0:0)};A.modulo=A.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]?I(new i(t),i.precision,i.rounding):(R=!1,i.modulo==9?(e=_(t,n.abs(),0,3,1),e.s*=n.s):e=_(t,n,0,i.modulo,1),e=e.times(n),R=!0,t.minus(e))};A.naturalExponential=A.exp=function(){return jt(this)};A.naturalLogarithm=A.ln=function(){return he(this)};A.negated=A.neg=function(){var n=new this.constructor(this);return n.s=-n.s,I(n)};A.plus=A.add=function(n){var e,t,i,r,o,s,a,u,c,m,l=this,d=l.constructor;if(n=new d(n),!l.d||!n.d)return!l.s||!n.s?n=new d(NaN):l.d||(n=new d(n.d||l.s===n.s?l:NaN)),n;if(l.s!=n.s)return n.s=-n.s,l.minus(n);if(c=l.d,m=n.d,a=d.precision,u=d.rounding,!c[0]||!m[0])return m[0]||(n=new d(l)),R?I(n,a,u):n;if(o=ee(l.e/K),i=ee(n.e/K),c=c.slice(),r=o-i,r){for(r<0?(t=c,r=-r,s=m.length):(t=m,i=o,s=c.length),o=Math.ceil(a/K),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=m.length,s-r<0&&(r=s,t=m,m=c,c=t),e=0;r;)e=(c[--r]=c[r]+m[r]+e)/le|0,c[r]%=le;for(e&&(c.unshift(e),++i),s=c.length;c[--s]==0;)c.pop();return n.d=c,n.e=gt(c,i),R?I(n,a,u):n};A.precision=A.sd=function(n){var e,t=this;if(n!==void 0&&n!==!!n&&n!==1&&n!==0)throw Error(Te+n);return t.d?(e=vn(t.d),n&&t.e+1>e&&(e=t.e+1)):e=NaN,e};A.round=function(){var n=this,e=n.constructor;return I(new e(n),n.e+1,e.rounding)};A.sine=A.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())+K,i.rounding=1,t=Zi(i,Wn(i,t)),i.precision=n,i.rounding=e,I(ge>2?t.neg():t,n,e,!0)):new i(NaN)};A.squareRoot=A.sqrt=function(){var n,e,t,i,r,o,s=this,a=s.d,u=s.e,c=s.s,m=s.constructor;if(c!==1||!a||!a[0])return new m(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(R=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=$(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=ee((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),i=new m(e)):i=new m(c.toString()),t=(u=m.precision)+3;;)if(o=i,i=o.plus(_(s,o,t+2,1)).times(.5),$(o.d).slice(0,t)===(e=$(i.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(I(o,u+1,0),o.times(o).eq(s))){i=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(I(i,u+1,1),n=!i.times(i).eq(s));break}return R=!0,I(i,u,m.rounding,n)};A.tangent=A.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=_(t,new i(1).minus(t.times(t)).sqrt(),n+10,0),i.precision=n,i.rounding=e,I(ge==2||ge==4?t.neg():t,n,e,!0)):new i(NaN)};A.times=A.mul=function(n){var e,t,i,r,o,s,a,u,c,m=this,l=m.constructor,d=m.d,p=(n=new l(n)).d;if(n.s*=m.s,!d||!d[0]||!p||!p[0])return new l(!n.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?n.s/0:n.s*0);for(t=ee(m.e/K)+ee(n.e/K),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,i=s;i--;)o.push(0);for(i=c;--i>=0;){for(e=0,r=u+i;r>i;)a=o[r]+p[i]*d[r-i-1]+e,o[r--]=a%le|0,e=a/le|0;o[r]=(o[r]+e)%le|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),n.d=o,n.e=gt(o,t),R?I(n,l.precision,l.rounding):n};A.toBinary=function(n,e){return Qt(this,2,n,e)};A.toDecimalPlaces=A.toDP=function(n,e){var t=this,i=t.constructor;return t=new i(t),n===void 0?t:(ie(n,0,Be),e===void 0?e=i.rounding:ie(e,0,8),I(t,n+t.e+1,e))};A.toExponential=function(n,e){var t,i=this,r=i.constructor;return n===void 0?t=pe(i,!0):(ie(n,0,Be),e===void 0?e=r.rounding:ie(e,0,8),i=I(new r(i),n+1,e),t=pe(i,!0,n+1)),i.isNeg()&&!i.isZero()?"-"+t:t};A.toFixed=function(n,e){var t,i,r=this,o=r.constructor;return n===void 0?t=pe(r):(ie(n,0,Be),e===void 0?e=o.rounding:ie(e,0,8),i=I(new o(r),n+r.e+1,e),t=pe(i,!1,n+i.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};A.toFraction=function(n){var e,t,i,r,o,s,a,u,c,m,l,d,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(c=t=new f(1),i=u=new f(0),e=new f(i),o=e.e=vn(g)-p.e-1,s=o%K,e.d[0]=j(10,s<0?K+s:s),n==null)n=o>0?e:c;else{if(a=new f(n),!a.isInt()||a.lt(c))throw Error(Te+a);n=a.gt(e)?o>0?e:c:a}for(R=!1,a=new f($(g)),m=f.precision,f.precision=o=g.length*K*2;l=_(a,e,0,1,1),r=t.plus(l.times(i)),r.cmp(n)!=1;)t=i,i=r,r=c,c=u.plus(l.times(r)),u=r,r=e,e=a.minus(l.times(r)),a=r;return r=_(n.minus(t),i,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(i)),u.s=c.s=p.s,d=_(c,i,o,1).minus(p).abs().cmp(_(u,t,o,1).minus(p).abs())<1?[c,i]:[u,t],f.precision=m,R=!0,d};A.toHexadecimal=A.toHex=function(n,e){return Qt(this,16,n,e)};A.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:ie(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]?(R=!1,t=_(t,n,0,e,1).times(n),R=!0,I(t)):(n.s=t.s,t=n),t};A.toNumber=function(){return+this};A.toOctal=function(n,e){return Qt(this,8,n,e)};A.toPower=A.pow=function(n){var e,t,i,r,o,s,a=this,u=a.constructor,c=+(n=new u(n));if(!a.d||!n.d||!a.d[0]||!n.d[0])return new u(j(+a,c));if(a=new u(a),a.eq(1))return a;if(i=u.precision,o=u.rounding,n.eq(1))return I(a,i,o);if(e=ee(n.e/K),e>=n.d.length-1&&(t=c<0?-c:c)<=Gi)return r=Dn(u,a,t,i),n.s<0?new u(1).div(r):I(r,i,o);if(s=a.s,s<0){if(e<n.d.length-1)return new u(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=j(+a,c),e=t==0||!isFinite(t)?ee(c*(Math.log("0."+$(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(R=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=jt(n.times(he(a,i+t)),i),r.d&&(r=I(r,i+5,1),ze(r.d,i,o)&&(e=i+10,r=I(jt(n.times(he(a,e+t)),e),e+5,1),+$(r.d).slice(i+1,i+15)+1==1e14&&(r=I(r,i+1,0)))),r.s=s,R=!0,u.rounding=o,I(r,i,o))};A.toPrecision=function(n,e){var t,i=this,r=i.constructor;return n===void 0?t=pe(i,i.e<=r.toExpNeg||i.e>=r.toExpPos):(ie(n,1,Be),e===void 0?e=r.rounding:ie(e,0,8),i=I(new r(i),n,e),t=pe(i,n<=i.e||i.e<=r.toExpNeg,n)),i.isNeg()&&!i.isZero()?"-"+t:t};A.toSignificantDigits=A.toSD=function(n,e){var t=this,i=t.constructor;return n===void 0?(n=i.precision,e=i.rounding):(ie(n,1,Be),e===void 0?e=i.rounding:ie(e,0,8)),I(new i(t),n,e)};A.toString=function(){var n=this,e=n.constructor,t=pe(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()&&!n.isZero()?"-"+t:t};A.truncated=A.trunc=function(){return I(new this.constructor(this),this.e+1,1)};A.valueOf=A.toJSON=function(){var n=this,e=n.constructor,t=pe(n,n.e<=e.toExpNeg||n.e>=e.toExpPos);return n.isNeg()?"-"+t:t};function $(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=K-i.length,t&&(o+=ke(t)),o+=i;s=n[e],i=s+"",t=K-i.length,t&&(o+=ke(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function ie(n,e,t){if(n!==~~n||n<e||n>t)throw Error(Te+n)}function ze(n,e,t,i){var r,o,s,a;for(o=n[0];o>=10;o/=10)--e;return--e<0?(e+=K,r=0):(r=Math.ceil((e+1)/K),e%=K),o=j(10,K-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)==j(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)==j(10,e-3)-1,s}function dt(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]+=zt.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 zi(n,e){var t,i,r;if(e.isZero())return e;i=e.d.length,i<32?(t=Math.ceil(i/3),r=(1/wt(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),n.precision+=t,e=Ee(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 _=function(){function n(i,r,o){var s,a=0,u=i.length;for(i=i.slice();u--;)s=i[u]*r+a,i[u]=s%o|0,a=s/o|0;return a&&i.unshift(a),i}function e(i,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(i[a]!=r[a]){u=i[a]>r[a]?1:-1;break}return u}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,u){var c,m,l,d,p,g,f,P,b,w,y,k,B,x,N,L,E,q,F,U,Z=i.constructor,re=i.s==r.s?1:-1,Q=i.d,D=r.d;if(!Q||!Q[0]||!D||!D[0])return new Z(!i.s||!r.s||(Q?D&&Q[0]==D[0]:!D)?NaN:Q&&Q[0]==0||!D?re*0:re/0);for(u?(p=1,m=i.e-r.e):(u=le,p=K,m=ee(i.e/p)-ee(r.e/p)),F=D.length,E=Q.length,b=new Z(re),w=b.d=[],l=0;D[l]==(Q[l]||0);l++);if(D[l]>(Q[l]||0)&&m--,o==null?(x=o=Z.precision,s=Z.rounding):a?x=o+(i.e-r.e)+1:x=o,x<0)w.push(1),g=!0;else{if(x=x/p+2|0,l=0,F==1){for(d=0,D=D[0],x++;(l<E||d)&&x--;l++)N=d*u+(Q[l]||0),w[l]=N/D|0,d=N%D|0;g=d||l<E}else{for(d=u/(D[0]+1)|0,d>1&&(D=n(D,d,u),Q=n(Q,d,u),F=D.length,E=Q.length),L=F,y=Q.slice(0,F),k=y.length;k<F;)y[k++]=0;U=D.slice(),U.unshift(0),q=D[0],D[1]>=u/2&&++q;do d=0,c=e(D,y,F,k),c<0?(B=y[0],F!=k&&(B=B*u+(y[1]||0)),d=B/q|0,d>1?(d>=u&&(d=u-1),f=n(D,d,u),P=f.length,k=y.length,c=e(f,y,P,k),c==1&&(d--,t(f,F<P?U:D,P,u))):(d==0&&(c=d=1),f=D.slice()),P=f.length,P<k&&f.unshift(0),t(y,f,k,u),c==-1&&(k=y.length,c=e(D,y,F,k),c<1&&(d++,t(y,F<k?U:D,k,u))),k=y.length):c===0&&(d++,y=[0]),w[l++]=d,c&&y[0]?y[k++]=Q[L]||0:(y=[Q[L]],k=1);while((L++<E||y[0]!==void 0)&&x--);g=y[0]!==void 0}w[0]||w.shift()}if(p==1)b.e=m,Rn=g;else{for(l=1,d=w[0];d>=10;d/=10)l++;b.e=l+m*p-1,I(b,a?o+b.e+1:o,s,g)}return b}}();function I(n,e,t,i){var r,o,s,a,u,c,m,l,d,p=n.constructor;e:if(e!=null){if(l=n.d,!l)return n;for(r=1,a=l[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=K,s=e,m=l[d=0],u=m/j(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/K),a=l.length,d>=a)if(i){for(;a++<=d;)l.push(0);m=u=0,r=1,o%=K,s=o-K+1}else break e;else{for(m=a=l[d],r=1;a>=10;a/=10)r++;o%=K,s=o-K+r,u=s<0?0:m/j(10,r-s-1)%10|0}if(i=i||e<0||l[d+1]!==void 0||(s<0?m:m%j(10,r-s-1)),c=t<4?(u||i)&&(t==0||t==(n.s<0?3:2)):u>5||u==5&&(t==4||i||t==6&&(o>0?s>0?m/j(10,r-s):0:l[d-1])%10&1||t==(n.s<0?8:7)),e<1||!l[0])return l.length=0,c?(e-=n.e+1,l[0]=j(10,(K-e%K)%K),n.e=-e||0):l[0]=n.e=0,n;if(o==0?(l.length=d,a=1,d--):(l.length=d+1,a=j(10,K-o),l[d]=s>0?(m/j(10,r-s)%j(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=l[0];s>=10;s/=10)o++;for(s=l[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(n.e++,l[0]==le&&(l[0]=1));break}else{if(l[d]+=a,l[d]!=le)break;l[d--]=0,a=1}for(o=l.length;l[--o]===0;)l.pop()}return R&&(n.e>p.maxE?(n.d=null,n.e=NaN):n.e<p.minE&&(n.e=0,n.d=[0])),n}function pe(n,e,t){if(!n.isFinite())return Vn(n);var i,r=n.e,o=$(n.d),s=o.length;return e?(t&&(i=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+ke(i):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(n.e<0?"e":"e+")+n.e):r<0?(o="0."+ke(-r-1)+o,t&&(i=t-s)>0&&(o+=ke(i))):r>=s?(o+=ke(r+1-s),t&&(i=t-r-1)>0&&(o=o+"."+ke(i))):((i=r+1)<s&&(o=o.slice(0,i)+"."+o.slice(i)),t&&(i=t-s)>0&&(r+1===s&&(o+="."),o+=ke(i))),o}function gt(n,e){var t=n[0];for(e*=K;t>=10;t/=10)e++;return e}function bt(n,e,t){if(e>Xi)throw R=!0,t&&(n.precision=t),Error(Mn);return I(new n(pt),e,1,!0)}function ce(n,e,t){if(e>Zt)throw Error(Mn);return I(new n(ft),e,t,!0)}function vn(n){var e=n.length-1,t=e*K+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 ke(n){for(var e="";n--;)e+="0";return e}function Dn(n,e,t,i){var r,o=new n(1),s=Math.ceil(i/K+4);for(R=!1;;){if(t%2&&(o=o.times(e),Nn(o.d,s)&&(r=!0)),t=ee(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Nn(e.d,s)}return R=!0,o}function Kn(n){return n.d[n.d.length-1]&1}function _n(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 jt(n,e){var t,i,r,o,s,a,u,c=0,m=0,l=0,d=n.constructor,p=d.rounding,g=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?(R=!1,u=g):u=e,a=new d(.03125);n.e>-2;)n=n.times(a),l+=5;for(i=Math.log(j(2,l))/Math.LN10*2+5|0,u+=i,t=o=s=new d(1),d.precision=u;;){if(o=I(o.times(n),u,1),t=t.times(++m),a=s.plus(_(o,t,u,1)),$(a.d).slice(0,u)===$(s.d).slice(0,u)){for(r=l;r--;)s=I(s.times(s),u,1);if(e==null)if(c<3&&ze(s.d,u-i,p,c))d.precision=u+=10,t=o=a=new d(1),m=0,c++;else return I(s,d.precision=g,p,R=!0);else return d.precision=g,s}s=a}}function he(n,e){var t,i,r,o,s,a,u,c,m,l,d,p=1,g=10,f=n,P=f.d,b=f.constructor,w=b.rounding,y=b.precision;if(f.s<0||!P||!P[0]||!f.e&&P[0]==1&&P.length==1)return new b(P&&!P[0]?-1/0:f.s!=1?NaN:P?0:f);if(e==null?(R=!1,m=y):m=e,b.precision=m+=g,t=$(P),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=$(f.d),i=t.charAt(0),p++;o=f.e,i>1?(f=new b("0."+t),o++):f=new b(i+"."+t.slice(1))}else return c=bt(b,m+2,y).times(o+""),f=he(new b(i+"."+t.slice(1)),m-g).plus(c),b.precision=y,e==null?I(f,y,w,R=!0):f;for(l=f,u=s=f=_(f.minus(1),f.plus(1),m,1),d=I(f.times(f),m,1),r=3;;){if(s=I(s.times(d),m,1),c=u.plus(_(s,new b(r),m,1)),$(c.d).slice(0,m)===$(u.d).slice(0,m))if(u=u.times(2),o!==0&&(u=u.plus(bt(b,m+2,y).times(o+""))),u=_(u,new b(p),m,1),e==null)if(ze(u.d,m-g,w,a))b.precision=m+=g,c=s=f=_(l.minus(1),l.plus(1),m,1),d=I(f.times(f),m,1),r=a=1;else return I(u,b.precision=y,w,R=!0);else return b.precision=y,u;u=c,r+=2}}function Vn(n){return String(n.s*n.s/0)}function Yt(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)%K,t<0&&(i+=K),i<r){for(i&&n.d.push(+e.slice(0,i)),r-=K;i<r;)n.d.push(+e.slice(i,i+=K));e=e.slice(i),i=K-e.length}else i-=r;for(;i--;)e+="0";n.d.push(+e),R&&(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 Hi(n,e){var t,i,r,o,s,a,u,c,m;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),En.test(e))return Yt(n,e)}else if(e==="Infinity"||e==="NaN")return+e||(n.s=NaN),n.e=NaN,n.d=null,n;if(qi.test(e))t=16,e=e.toLowerCase();else if(Wi.test(e))t=2;else if(Ui.test(e))t=8;else throw Error(Te+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,i=n.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Dn(i,new i(t),o,o*2)),c=dt(e,t,le),m=c.length-1,o=m;c[o]===0;--o)c.pop();return o<0?new i(n.s*0):(n.e=gt(c,m),n.d=c,R=!1,s&&(n=_(n,r,a*4)),u&&(n=n.times(Math.abs(u)<54?j(2,u):He.pow(2,u))),R=!0,n)}function Zi(n,e){var t,i=e.d.length;if(i<3)return e.isZero()?e:Ee(n,2,e,e);t=1.4*Math.sqrt(i),t=t>16?16:t|0,e=e.times(1/wt(5,t)),e=Ee(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 Ee(n,e,t,i,r){var o,s,a,u,c=1,m=n.precision,l=Math.ceil(m/K);for(R=!1,u=t.times(t),a=new n(i);;){if(s=_(a.times(u),new n(e++*e++),m,1),a=r?i.plus(s):i.minus(s),i=_(s.times(u),new n(e++*e++),m,1),s=a.plus(i),s.d[l]!==void 0){for(o=l;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=i,i=s,s=o,c++}return R=!0,s.d.length=l+1,s}function wt(n,e){for(var t=n;--e;)t*=n;return t}function Wn(n,e){var t,i=e.s<0,r=ce(n,n.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return ge=i?4:1,e;if(t=e.divToInt(r),t.isZero())ge=i?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return ge=Kn(t)?i?2:3:i?4:1,e;ge=Kn(t)?i?1:4:i?3:2}return e.minus(r).abs()}function Qt(n,e,t,i){var r,o,s,a,u,c,m,l,d,p=n.constructor,g=t!==void 0;if(g?(ie(t,1,Be),i===void 0?i=p.rounding:ie(i,0,8)):(t=p.precision,i=p.rounding),!n.isFinite())m=Vn(n);else{for(m=pe(n),s=m.indexOf("."),g?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(m=m.replace(".",""),d=new p(1),d.e=m.length-s,d.d=dt(pe(d),10,r),d.e=d.d.length),l=dt(m,10,r),o=u=l.length;l[--u]==0;)l.pop();if(!l[0])m=g?"0p+0":"0";else{if(s<0?o--:(n=new p(n),n.d=l,n.e=o,n=_(n,d,t,i,0,r),l=n.d,o=n.e,c=Rn),s=l[t],a=r/2,c=c||l[t+1]!==void 0,c=i<4?(s!==void 0||c)&&(i===0||i===(n.s<0?3:2)):s>a||s===a&&(i===4||c||i===6&&l[t-1]&1||i===(n.s<0?8:7)),l.length=t,c)for(;++l[--t]>r-1;)l[t]=0,t||(++o,l.unshift(1));for(u=l.length;!l[u-1];--u);for(s=0,m="";s<u;s++)m+=zt.charAt(l[s]);if(g){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)m+="0";for(l=dt(m,r,e),u=l.length;!l[u-1];--u);for(s=1,m="1.";s<u;s++)m+=zt.charAt(l[s])}else m=m.charAt(0)+"."+m.slice(1);m=m+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)m="0"+m;m="0."+m}else if(++o>u)for(o-=u;o--;)m+="0";else o<u&&(m=m.slice(0,o)+"."+m.slice(o))}m=(e==16?"0x":e==2?"0b":e==8?"0o":"")+m}return n.s<0?"-"+m:m}function Nn(n,e){if(n.length>e)return n.length=e,!0}function ji(n){return new this(n).abs()}function Yi(n){return new this(n).acos()}function Qi(n){return new this(n).acosh()}function Ji(n,e){return new this(n).plus(e)}function $i(n){return new this(n).asin()}function er(n){return new this(n).asinh()}function tr(n){return new this(n).atan()}function nr(n){return new this(n).atanh()}function ir(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=ce(this,o,1).times(e.s>0?.25:.75),t.s=n.s):!e.d||n.isZero()?(t=e.s<0?ce(this,i,r):new this(0),t.s=n.s):!n.d||e.isZero()?(t=ce(this,o,1).times(.5),t.s=n.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(_(n,e,o,1)),e=ce(this,o,1),this.precision=i,this.rounding=r,t=n.s<0?t.minus(e):t.plus(e)):t=this.atan(_(n,e,o,1)),t}function rr(n){return new this(n).cbrt()}function or(n){return I(n=new this(n),n.e+1,2)}function sr(n,e,t){return new this(n).clamp(e,t)}function ar(n){if(!n||typeof n!="object")throw Error(yt+"Object expected");var e,t,i,r=n.defaults===!0,o=["precision",1,Be,"rounding",0,8,"toExpNeg",-Fe,0,"toExpPos",0,Fe,"maxE",0,Fe,"minE",-Fe,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=Ht[t]),(i=n[t])!==void 0)if(ee(i)===i&&i>=o[e+1]&&i<=o[e+2])this[t]=i;else throw Error(Te+t+": "+i);if(t="crypto",r&&(this[t]=Ht[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(On);else this[t]=!1;else throw Error(Te+t+": "+i);return this}function ur(n){return new this(n).cos()}function cr(n){return new this(n).cosh()}function qn(n){var e,t,i;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,Ln(o)){c.s=o.s,R?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;R?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Yt(c,o.toString())}else if(u!=="string")throw Error(Te+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),En.test(o)?Yt(c,o):Hi(c,o)}if(r.prototype=A,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=ar,r.clone=qn,r.isDecimal=Ln,r.abs=ji,r.acos=Yi,r.acosh=Qi,r.add=Ji,r.asin=$i,r.asinh=er,r.atan=tr,r.atanh=nr,r.atan2=ir,r.cbrt=rr,r.ceil=or,r.clamp=sr,r.cos=ur,r.cosh=cr,r.div=lr,r.exp=mr,r.floor=dr,r.hypot=pr,r.ln=fr,r.log=br,r.log10=gr,r.log2=yr,r.max=wr,r.min=Ar,r.mod=Pr,r.mul=kr,r.pow=hr,r.random=Tr,r.round=Br,r.sign=xr,r.sin=Ir,r.sinh=Sr,r.sqrt=Cr,r.sub=Kr,r.sum=Nr,r.tan=Lr,r.tanh=Rr,r.trunc=Mr,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 lr(n,e){return new this(n).div(e)}function mr(n){return new this(n).exp()}function dr(n){return I(n=new this(n),n.e+1,3)}function pr(){var n,e,t=new this(0);for(R=!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 R=!0,new this(1/0);t=e}return R=!0,t.sqrt()}function Ln(n){return n instanceof He||n&&n.toStringTag===Fn||!1}function fr(n){return new this(n).ln()}function br(n,e){return new this(n).log(e)}function yr(n){return new this(n).log(2)}function gr(n){return new this(n).log(10)}function wr(){return _n(this,arguments,"lt")}function Ar(){return _n(this,arguments,"gt")}function Pr(n,e){return new this(n).mod(e)}function kr(n,e){return new this(n).mul(e)}function hr(n,e){return new this(n).pow(e)}function Tr(n){var e,t,i,r,o=0,s=new this(1),a=[];if(n===void 0?n=this.precision:ie(n,1,Be),i=Math.ceil(n/K),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(On);else for(;o<i;)a[o++]=Math.random()*1e7|0;for(i=a[--o],n%=K,i&&n&&(r=j(10,K-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-=K)a.shift();for(i=1,r=a[0];r>=10;r/=10)i++;i<K&&(t-=K-i)}return s.e=t,s.d=a,s}function Br(n){return I(n=new this(n),n.e+1,this.rounding)}function xr(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function Ir(n){return new this(n).sin()}function Sr(n){return new this(n).sinh()}function Cr(n){return new this(n).sqrt()}function Kr(n,e){return new this(n).sub(e)}function Nr(){var n=0,e=arguments,t=new this(e[n]);for(R=!1;t.s&&++n<e.length;)t=t.plus(e[n]);return R=!0,I(t,this.precision,this.rounding)}function Lr(n){return new this(n).tan()}function Rr(n){return new this(n).tanh()}function Mr(n){return I(n=new this(n),n.e+1,1)}A[Symbol.for("nodejs.util.inspect.custom")]=A.toString;A[Symbol.toStringTag]="Decimal";var He=A.constructor=qn(Ht);pt=new He(pt);ft=new He(ft);var Y=He;import go from"big.js";import ic from"bn.js";import{get as Un,set as Or}from"lodash";var Jt=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}},Gn={},Fr={};function J(n){let e=Un(Gn,n);if(!e){let t=Un(Fr,n);e=new Jt({name:n,logLevel:t}),Or(Gn,n,e)}return e}import{PublicKey as Xn}from"@solana/web3.js";import{MINT_SIZE as Er,TOKEN_PROGRAM_ID as vr,getTransferFeeConfig as Dr,unpackMint as _r}from"@solana/spl-token";var $t=J("Raydium_accountInfo_util");async function Ze(n,e,t){let{batchRequest:i,commitment:r="confirmed",chunkCount:o=100}={batchRequest:!1,...t},s=en(e,o),a=new Array(s.length).fill([]);if(i){let u=s.map(l=>{let d=n._buildArgs([l.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=en(u,10);a=(await(await Promise.all(c.map(async l=>await n._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&$t.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(d=>{if(d){let{data:p,executable:g,lamports:f,owner:P,rentEpoch:b}=d;return p.length!==2&&p[1]!=="base64"&&$t.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:f,owner:new Xn(P),rentEpoch:b}}return null})))}else try{a=await Promise.all(s.map(u=>n.getMultipleAccountsInfo(u,r)))}catch(u){u instanceof Error&&$t.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function Ne(n,e,t){let i=await Ze(n,e.map(r=>r.pubkey),t);return e.map((r,o)=>({...r,accountInfo:i[o]}))}async function tn({connection:n,mints:e,config:t}){var o,s,a;if(e.length===0)return{};let i=await Ne(n,e.map(u=>({pubkey:je(u)})),t),r={};for(let u of i){if(!u.accountInfo||u.accountInfo.data.length<Er){console.log("invalid mint account",u.pubkey.toBase58());continue}let c=_r(u.pubkey,u.accountInfo,(o=u.accountInfo)==null?void 0:o.owner);r[u.pubkey.toString()]={...c,programId:((s=u.accountInfo)==null?void 0:s.owner)||vr,feeConfig:(a=Dr(c))!=null?a:void 0}}return r[Xn.default.toBase58()]=r[oe.toBase58()],r}import Ye from"bn.js";var zn=9007199254740991;function fe(n){let e=J("Raydium_parseBigNumberish");if(n instanceof Ye)return n;if(typeof n=="string"){if(n.match(/^-?[0-9]+$/))return new Ye(n);e.logWithError(`invalid BigNumberish string: ${n}`)}return typeof n=="number"?(n%1&&e.logWithError(`BigNumberish number underflow: ${n}`),(n>=zn||n<=-zn)&&e.logWithError(`BigNumberish number overflow: ${n}`),new Ye(String(n))):typeof n=="bigint"?new Ye(n.toString()):(e.error(`invalid BigNumberish value: ${n}`),new Ye(0))}import{PublicKey as Vr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hn}from"@solana/spl-token";var nn={chainId:101,address:Vr.default.toBase58(),programId:Hn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},xe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Hn.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as sn}from"@solana/web3.js";import{PublicKey as X,SystemProgram as Zn,SYSVAR_RENT_PUBKEY as Wr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qr}from"@solana/spl-token";function rn({pubkey:n,isSigner:e=!1,isWritable:t=!0}){return{pubkey:n,isWritable:t,isSigner:e}}var Ks=[rn({pubkey:qr,isWritable:!1}),rn({pubkey:Zn.programId,isWritable:!1}),rn({pubkey:Wr,isWritable:!1})];function on({publicKey:n,transformSol:e}){let t=jn(n.toString());if(t instanceof X)return e&&t.equals(Qe)?oe:t;if(e&&t.toString()===Qe.toBase58())return oe;if(typeof t=="string"){if(t===X.default.toBase58())return X.default;try{return new X(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function jn(n){try{return new X(n)}catch{return n}}var Ur=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),At=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Pt=new X("SysvarRent111111111111111111111111111111111"),Ns=new X("SysvarC1ock11111111111111111111111111111111"),ve=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ls=new X("Sysvar1nstructions1111111111111111111111111"),kt=Zn.programId,Rs=new X("2cpMA1jNS4obgRz8XNg38QuSP83L1AXpUgfxPNcvnAGj"),Ms=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Os=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Fs=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Es=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),vs=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ds=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),_s=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Vs=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ws=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),qs=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),oe=new X("So11111111111111111111111111111111111111112"),Qe=X.default;function je(n){return on({publicKey:n,transformSol:!0})}var an=class{constructor({mint:e,decimals:t,symbol:i,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===Qe.toBase58()||e instanceof sn&&Qe.equals(e)){this.decimals=xe.decimals,this.symbol=xe.symbol,this.name=xe.name,this.mint=new sn(xe.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?sn.default:on({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ie=an;Ie.WSOL=new an({...xe,mint:xe.address});var un=class{constructor({decimals:e,symbol:t="UNKNOWN",name:i="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=i}equals(e){return this===e}},ht=un;ht.SOL=new un(nn);import Gr from"toformat";var Xr=Gr,Je=Xr;import Bt from"big.js";import Hr from"bn.js";import Zr from"decimal.js-light";var Tt=J("module/fraction"),cn=Je(Bt),$e=Je(Zr),jr={[0]:$e.ROUND_DOWN,[1]:$e.ROUND_HALF_UP,[2]:$e.ROUND_UP},Yr={[0]:Bt.roundDown,[1]:Bt.roundHalfUp,[2]:Bt.roundUp},W=class{constructor(e,t=new Hr(1)){this.numerator=fe(e),this.denominator=fe(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new W(this.denominator,this.numerator)}add(e){let t=e instanceof W?e:new W(fe(e));return this.denominator.eq(t.denominator)?new W(this.numerator.add(t.numerator),this.denominator):new W(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof W?e:new W(fe(e));return this.denominator.eq(t.denominator)?new W(this.numerator.sub(t.numerator),this.denominator):new W(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof W?e:new W(fe(e));return new W(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof W?e:new W(fe(e));return new W(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},i=1){Number.isInteger(e)||Tt.logWithError(`${e} is not an integer.`),e<=0&&Tt.logWithError(`${e} is not positive.`),$e.set({precision:e+1,rounding:jr[i]});let r=new $e(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)||Tt.logWithError(`${e} is not an integer.`),e<0&&Tt.logWithError(`${e} is negative.`),cn.DP=e,cn.RM=Yr[i]||1,new cn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};import Qr from"bn.js";var Yn=new W(new Qr(100)),se=class extends W{toSignificant(e=5,t,i){return this.mul(Yn).toSignificant(e,t,i)}toFixed(e=2,t,i){return this.mul(Yn).toFixed(e,t,i)}};var ba=J("Raydium_price");function en(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 ro}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as oo}from"@solana/spl-token";import{ComputeBudgetProgram as Qn,Keypair as $n,PublicKey as Jr,Transaction as ei,TransactionMessage as $r,VersionedTransaction as ti}from"@solana/web3.js";var ne={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",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmCreateConfig:"CpmmCreateConfig",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee"};import{TOKEN_PROGRAM_ID as eo}from"@solana/spl-token";var Jn=J("Raydium_txUtil"),ni=1644;function It(n){let e=[],t=[];return n.microLamports&&(e.push(Qn.setComputeUnitPrice({microLamports:n.microLamports})),t.push(ne.SetComputeUnitPrice)),n.units&&(e.push(Qn.setComputeUnitLimit({units:n.units})),t.push(ne.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function De(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 St(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(o.err.toString())},"confirmed")})}function to(n,e){n.length<1&&Jn.logWithError(`no instructions provided: ${n.toString()}`),e.length<1&&Jn.logWithError(`no signers provided:, ${e.toString()}`);let t=new ei;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...n);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<ni}catch{return!1}}function ae(n,e){let[t,i]=Jr.findProgramAddressSync(n,e);return{publicKey:t,nonce:i}}function et({instructions:n,payer:e,signers:t}){return to(n,[e,...t])}function tt({instructions:n,payer:e,lookupTableAddressAccount:t,recentBlockhash:i=$n.generate().publicKey.toString()}){let o=new $r({payerKey:e,recentBlockhash:i,instructions:n}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new ti(o).serialize()).toString("base64").length<ni}catch{return!1}}var no=n=>Buffer.isBuffer(n)?n:n instanceof Uint8Array?Buffer.from(n.buffer,n.byteOffset,n.byteLength):Buffer.from(n),io=n=>{let e=n.serialize({requireAllSignatures:!1,verifySignatures:!1});n instanceof ti&&(e=no(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Le(n){let e=[];return n.forEach(t=>{t instanceof ei&&(t.recentBlockhash||(t.recentBlockhash=eo.toBase58()),t.feePayer||(t.feePayer=$n.generate().publicKey)),e.push(io(t))}),console.log("simulate tx string:",e),e}function be(n,e,t){return ae([n.toBuffer(),(t!=null?t:oo).toBuffer(),e.toBuffer()],new ro("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as O}from"@solana/web3.js";var ja=new O("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ya=new O("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Qa=new O("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Ja=new O("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),$a=new O("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),eu=new O("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),tu=new O("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),nu=new O("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),iu=new O("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),so=new O("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),ao=new O("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),uo=new O("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),ru=new O("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),ou=new O("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),su=new O("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),au=new O("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),uu=new O("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),cu=new O("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),ii=new O("SNaPnpKUY656VPwbKmKT8FG4T85g4VWhRH1B4TQUfKs"),ri=new O("9pR79Lqe6wDNjag3v8MeVYUostoXjY2ognTydor6AtEZ"),lu=new O("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),co=new O("4AscABy58S62owbByjUUkQfZsP7fxYH1rDYb69V58HPM"),lo=new O("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),mo=new O("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Ct=new O("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),po=new O("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),Kt=new O("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),fo=new O("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var mu={SERUM_MARKET:O.default,OPENBOOK_MARKET:new O("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:O.default,FarmV3:new O("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new O("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new O("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new O("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new O("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new O("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new O("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new O("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new O("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:co,CREATE_CPMM_POOL_AUTH:lo,CREATE_CPMM_POOL_FEE_ACC:mo,FEE_DESTINATION_ID:new O("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:po,LCOK_CPMM_AUTH:fo};import me from"bn.js";var nt=1e4;function ye(n,e,t,i){if(e===void 0)return{amount:n,fee:void 0,expirationTime:void 0};let r={...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 me(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===nt){let u=new me(o.maximumFee.toString());return{amount:n.add(u),fee:u,expirationTime:a}}else{let u=_e(n.mul(new me(nt)),new me(nt-o.transferFeeBasisPoints)),c=new me(o.maximumFee.toString()),m=u.sub(n).gt(c)?n.add(c):u,l=_e(m.mul(new me(o.transferFeeBasisPoints)),new me(nt)),d=l.gt(s)?s:l;return{amount:m,fee:d,expirationTime:a}}else{let u=_e(n.mul(new me(o.transferFeeBasisPoints)),new me(nt)),c=u.gt(s)?s:u;return{amount:n,fee:c,expirationTime:a}}}function _e(n,e){let{div:t,mod:i}=n.divmod(e);return i.gt(new me(0))?t.add(new me(1)):t}import{PublicKey as oi,AddressLookupTableAccount as Nt}from"@solana/web3.js";async function dn({connection:n,address:e}){let t=await Ze(n,[...new Set(e.map(r=>r.toString()))].map(r=>new oi(r))),i={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new Nt({key:s,state:Nt.deserialize(o.data)});i[s.toString()]=a,Lt[s.toString()]=a}return i}var Lt={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Nt({key:new oi("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Nt.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 it,sendAndConfirmTransaction as pn,Transaction as rt,TransactionMessage as ot,VersionedTransaction as st}from"@solana/web3.js";import yo from"axios";var Rt=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.api=e.api}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 yo.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}=It(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...i),!0}return!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!==it.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0({...t||{}}):this.build(t)}build(e){var i;let t=new rt;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 c;let{recentBlockHash:o,skipPreflight:s=!0,sendAndConfirm:a}=r||{},u=o!=null?o:await De(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),Le([t]),(c=this.owner)!=null&&c.isKeyPair)return{txId:a?await pn(this.connection,t,this.signers.find(l=>l.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 m=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(m[0].serialize(),{skipPreflight:s}),signedTx:m[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var c;let{extraPreBuildData:t=[],extInfo:i}=e,{transaction:r}=this.build(i),o=t.filter(m=>m.transaction.instructions.length>0),s=[r,...o.map(m=>m.transaction)],a=[this.signers,...o.map(m=>m.signers)],u=[...this.instructionTypes,...o.map(m=>m.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(m=>{m.some(l=>l.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async m=>{var P;let{sequentially:l,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=m||{},f=p!=null?p:await De(this.connection,this.blockhashCommitment);if((P=this.owner)!=null&&P.isKeyPair){if(l){let b=[];for(let w of s){let y=await pn(this.connection,w,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});b.push(y)}return{txIds:b,signedTxs:s}}return{txIds:await await Promise.all(s.map(async b=>(b.recentBlockhash=f,await this.connection.sendRawTransaction(b.serialize(),{skipPreflight:g})))),signedTxs:s}}if(this.signAllTransactions){let b=s.map((y,k)=>(y.recentBlockhash=f,a[k].length&&y.sign(...a[k]),y));Le(b);let w=await this.signAllTransactions(b);if(l){let y=0,k=[],B=async()=>{if(!w[y])return;let x=await this.connection.sendRawTransaction(w[y].serialize(),{skipPreflight:g});k.push({txId:x,status:"sent",signedTx:w[y]}),d==null||d([...k]),y++,this.connection.onSignature(x,N=>{let L=k.findIndex(E=>E.txId===x);L>-1&&(k[L].status=N.err?"error":"success"),d==null||d([...k]),N.err||B()},"processed"),this.connection.getSignatureStatus(x)};return await B(),{txIds:k.map(x=>x.txId),signedTxs:w}}else{let y=[];for(let k=0;k<w.length;k+=1){let B=await this.connection.sendRawTransaction(w[k].serialize(),{skipPreflight:g});y.push(B)}return{txIds:y,signedTxs:w}}}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 g;let{lookupTableCache:t={},lookupTableAddress:i=[],forerunCreate:r,recentBlockhash:o,...s}=e||{},a={...this.cluster==="devnet"?{}:Lt,...t},u=Array.from(new Set([...i,...this.lookupTableAddress])),c=[];for(let f of u)a[f]===void 0&&c.push(new it(f));let m=await dn({connection:this.connection,address:c});for(let[f,P]of Object.entries(m))a[f]=P;let l=r?it.default.toBase58():o!=null?o:await De(this.connection,this.blockhashCommitment),d=new ot({payerKey:this.feePayer,recentBlockhash:l,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((g=this.owner)==null?void 0:g.signer)&&!this.signers.some(f=>f.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new st(d);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async f=>{var w;let{skipPreflight:P=!0,sendAndConfirm:b}=f||{};if(Le([p]),(w=this.owner)!=null&&w.isKeyPair){let y=await this.connection.sendTransaction(p,{skipPreflight:P});return b&&await St(this.connection,y),{txId:y,signedTx:p}}if(this.signAllTransactions){let y=await this.signAllTransactions([p]);return{txId:await this.connection.sendTransaction(y[0],{skipPreflight:P}),signedTx:y[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var c;let{extraPreBuildData:t=[],buildProps:i}=e,{transaction:r}=await this.buildV0(i),o=t.filter(m=>m.builder.instructions.length>0),s=[r,...o.map(m=>m.transaction)],a=[this.signers,...o.map(m=>m.signers)],u=[...this.instructionTypes,...o.map(m=>m.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(m=>{m.some(l=>l.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(m,l)=>{m.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:i,execute:async m=>{var f;let{sequentially:l,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=m||{};if(p&&s.forEach(P=>P.message.recentBlockhash=p),Le(s),(f=this.owner)!=null&&f.isKeyPair){if(l){let P=[];for(let b of s){let w=await this.connection.sendTransaction(b,{skipPreflight:g});await St(this.connection,w),P.push(w)}return{txIds:P,signedTxs:s}}return{txIds:await Promise.all(s.map(async P=>await this.connection.sendTransaction(P,{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let P=await this.signAllTransactions(s);if(l){let b=0,w=[],y=async()=>{if(!P[b])return;let k=await this.connection.sendTransaction(P[b],{skipPreflight:g});w.push({txId:k,status:"sent",signedTx:P[b]}),d==null||d([...w]),b++,this.connection.onSignature(k,B=>{let x=w.findIndex(N=>N.txId===k);x>-1&&(w[x].status=B.err?"error":"success"),d==null||d([...w]),B.err||y()},"processed"),this.connection.getSignatureStatus(k)};return y(),{txIds:[],signedTxs:P}}else{let b=[];for(let w=0;w<P.length;w+=1){let y=await this.connection.sendTransaction(P[w],{skipPreflight:g});b.push(y)}return{txIds:b,signedTxs:P}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuild(e){var c;let{computeBudgetConfig:t,...i}=e||{},r=t?It(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((m,l)=>({...m,[l.publicKey.toBase58()]:l}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(m=>{let l=[...u,m],d=t?[...r.instructions,...l]:l,g=[...new Set(l.map(f=>f.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(f=>new it(f));if(u.length<12&&et({instructions:d,payer:this.feePayer,signers:g})||et({instructions:l,payer:this.feePayer,signers:g}))u.push(m);else{if(u.length===0)throw Error("item ins too big");et({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:g})?s.push(new rt().add(...r.instructions,...u)):s.push(new rt().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[m]}}),u.length>0){let l=[...new Set(u.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);et({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:l.map(d=>d.publicKey)})?s.push(new rt().add(...r.instructions,...u)):s.push(new rt().add(...u)),a.push(l)}return s.forEach(m=>m.feePayer=this.feePayer),(c=this.owner)!=null&&c.signer&&a.forEach(m=>{m.some(l=>l.publicKey.equals(this.owner.publicKey))||m.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async m=>{var P;let{sequentially:l,onTxUpdate:d,recentBlockHash:p,skipPreflight:g=!0}=m||{},f=p!=null?p:await De(this.connection,this.blockhashCommitment);if(s.forEach(async(b,w)=>{b.recentBlockhash=f,a[w].length&&b.sign(...a[w])}),Le(s),(P=this.owner)!=null&&P.isKeyPair){if(l){let b=[];for(let w of s){let y=await pn(this.connection,w,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});b.push(y)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>await this.connection.sendRawTransaction(b.serialize(),{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(l){let w=0,y=[],k=async()=>{if(!b[w])return;let B=await this.connection.sendRawTransaction(b[w].serialize(),{skipPreflight:g});y.push({txId:B,status:"sent",signedTx:b[w]}),d==null||d([...y]),w++,this.connection.onSignature(B,x=>{let N=y.findIndex(L=>L.txId===B);N>-1&&(y[N].status=x.err?"error":"success"),d==null||d([...y]),x.err||k()},"processed"),this.connection.getSignatureStatus(B)};return await k(),{txIds:y.map(B=>B.txId),signedTxs:b}}else{let w=[];for(let y=0;y<b.length;y+=1){let k=await this.connection.sendRawTransaction(b[y].serialize(),{skipPreflight:g});w.push(k)}return{txIds:w,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var P;let{computeBudgetConfig:t,lookupTableCache:i={},lookupTableAddress:r=[],...o}=e||{},s={...this.cluster==="devnet"?{}:Lt,...i},a=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let b of a)s[b]===void 0&&u.push(new it(b));let c=await dn({connection:this.connection,address:u});for(let[b,w]of Object.entries(c))s[b]=w;let m=t?It(t):{instructions:[],instructionTypes:[]},l=await De(this.connection,this.blockhashCommitment),d=this.signers.reduce((b,w)=>({...b,[w.publicKey.toBase58()]:w}),{}),p=[],g=[],f=[];if(this.allInstructions.forEach(b=>{let w=[...f,b],y=t?[...m.instructions,...w]:w;if(f.length<12&&tt({instructions:y,payer:this.feePayer,lookupTableAddressAccount:s})||tt({instructions:w,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(b);else{if(f.length===0)throw Error("item ins too big");let k={};for(let B of[...new Set(a)])s[B]!==void 0&&(k[B]=s[B]);if(t&&tt({instructions:[...m.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:l})){let B=new ot({payerKey:this.feePayer,recentBlockhash:l,instructions:[...m.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new st(B))}else{let B=new ot({payerKey:this.feePayer,recentBlockhash:l,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new st(B))}g.push(Array.from(new Set(f.map(B=>B.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(B=>d[B]).filter(B=>B!==void 0)),f=[b]}}),f.length>0){let w=[...new Set(f.map(y=>y.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(y=>d[y]).filter(y=>y!==void 0);if(t&&tt({instructions:[...m.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:l})){let y=new ot({payerKey:this.feePayer,recentBlockhash:l,instructions:[...m.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new st(y))}else{let y=new ot({payerKey:this.feePayer,recentBlockhash:l,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new st(y))}g.push(w)}return(P=this.owner)!=null&&P.signer&&g.forEach(b=>{b.some(w=>w.publicKey.equals(this.owner.publicKey))||b.push(this.owner.signer)}),{builder:this,transactions:p,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async b=>{var x;let{sequentially:w,onTxUpdate:y,recentBlockHash:k,skipPreflight:B=!0}=b||{};if(p.map(async(N,L)=>{g[L].length&&N.sign(g[L]),k&&(N.message.recentBlockhash=k)}),Le(p),(x=this.owner)!=null&&x.isKeyPair){if(w){let N=[];for(let L of p){let E=await this.connection.sendTransaction(L,{skipPreflight:B});await St(this.connection,E),N.push(E)}return{txIds:N,signedTxs:p}}return{txIds:await Promise.all(p.map(async N=>await this.connection.sendTransaction(N,{skipPreflight:B}))),signedTxs:p}}if(this.signAllTransactions){let N=await this.signAllTransactions(p);if(w){let L=0,E=[],q=async()=>{if(!N[L])return;let F=await this.connection.sendTransaction(N[L],{skipPreflight:B});E.push({txId:F,status:"sent",signedTx:N[L]}),y==null||y([...E]),L++,this.connection.onSignature(F,U=>{let Z=E.findIndex(re=>re.txId===F);Z>-1&&(E[Z].status=U.err?"error":"success"),y==null||y([...E]),U.err||q()},"processed"),this.connection.getSignatureStatus(F)};return q(),{txIds:[],signedTxs:N}}else{let L=[];for(let E=0;E<N.length;E+=1){let q=await this.connection.sendTransaction(N[E],{skipPreflight:B});L.push(q)}return{txIds:L,signedTxs:N}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};import{PublicKey as Lu}from"@solana/web3.js";import Mu from"bn.js";var dc=J("Raydium_amount"),pc=Je(go);var mn=new we(0),Kc=new we(1),Nc=new we(2),Lc=new we(3),Rc=new we(5),wo=new we(10),Mc=new we(100),Oc=new we(1e3),Fc=new we(1e4);import bn from"bn.js";import Et from"decimal.js-light";import at from"bn.js";function Mt(n,e){if(e.isZero())throw Error("divisor is zero");return n.mod(e)}function Ao(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=Mt(n,e);return i.gt(Ve)&&(t=t.add(new at(1)),e=n.div(t),i=Mt(n,t),i.gt(Ve)&&(e=e.add(new at(1)))),[t,e]}var Ve=new at(0),Ot=class{static swapWithoutFees(e,t,i){let r=t.mul(i),o=t.add(e),[s,a]=Ao(r,o),u=a.sub(t),c=i.sub(s);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}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 Mt(e.mul(i),t).gt(Ve)&&s.gt(Ve)&&(s=s.add(new at(1))),Mt(e.mul(r),t).gt(Ve)&&a.gt(Ve)&&(a=a.add(new at(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};import ai from"bn.js";var fn=new ai(1e6);function Po(n,e,t){return n.mul(e).add(t).sub(new ai(1)).div(t)}function si(n,e,t){return n.mul(e).div(t)}var Ft=class{static tradingFee(e,t){return Po(e,t,fn)}static protocolFee(e,t){return si(e,t,fn)}static fundFee(e,t){return si(e,t,fn)}};var vt=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=Ft.tradingFee(e,r),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=Ot.swapWithoutFees(s,t,i),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:i.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}static swapBaseOut({poolMintA:e,poolMintB:t,tradeFeeRate:i,baseReserve:r,quoteReserve:o,outputMint:s,outputAmount:a}){let[u,c,m,l,d]=t.address===s.toString()?[r,o,e.decimals,t.decimals,e.address]:[o,r,t.decimals,e.decimals,t.address],p=new Et(c.toString()).div(10**l).div(new Et(u.toString()).div(10**m)),g=a.gte(c)?c.sub(new bn(1)):a,f=c.sub(g),P=_e(u.mul(g),f),b=_e(P.mul(new bn(1e6)),new bn(1e6).sub(i)),w=b.sub(P),y=new Et(g.toString()).div(10**l).div(new Et(b.toString()).div(10**m)),k=p.isZero()?0:y.sub(p).div(p).abs().toNumber();return{amountRealOut:g,amountIn:b,amountInWithoutFee:P,tradeFee:w,priceImpact:k}}};import H from"bn.js";var yn=(...n)=>n.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),We=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=J(t)}createTxBuilder(e){return this.scope.checkOwner(),new Rt({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(yn(e))}logInfo(...e){this.logger.info(yn(e))}logAndCreateError(...e){let t=yn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Ko}from"@solana/web3.js";import mi,{isBN as di}from"bn.js";import{bits as nl,BitStructure as il,blob as ko,Blob as rl,cstr as ol,f32 as sl,f32be as al,f64 as ul,f64be as cl,greedy as ll,Layout as ho,ns64 as ml,ns64be as dl,nu64 as pl,nu64be as fl,offset as bl,s16 as yl,s16be as gl,s24 as wl,s24be as Al,s32 as To,s32be as Pl,s40 as kl,s40be as hl,s48 as Tl,s48be as Bl,s8 as xl,seq as Bo,struct as Il,Structure as xo,u16 as Io,u16be as Sl,u24 as Cl,u24be as Kl,u32 as Nl,u32be as Ll,u40 as Rl,u40be as Ml,u48 as Ol,u48be as Fl,u8 as So,UInt as Co,union as El,Union as vl,unionLayoutDiscriminator as Dl,utf8 as _l}from"@solana/buffer-layout";var gn=ho,ui=xo;var wn=Co;var ci=So,Re=Io;var Ae=To;var li=Bo;var te=ko;var qe=class extends gn{constructor(t,i,r){super(t,r);this.blob=te(t),this.signed=i}decode(t,i=0){let r=new mi(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 mi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),i,r)}};function G(n){return new wn(1,n)}function Pe(n){return new wn(4,n)}function h(n){return new qe(8,!1,n)}function z(n){return new qe(16,!1,n)}function pi(n){return new qe(8,!0,n)}function fi(n){return new qe(16,!0,n)}var Dt=class extends gn{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 M(n){return new Dt(te(32),e=>new Ko(e),e=>e.toBuffer(),n)}function Me(n){return new Dt(ci(),No,Lo,n)}function No(n){if(n===0)return!1;if(n===1)return!0;throw new Error("Invalid bool: "+n)}function Lo(n){return n?1:0}var An=class extends ui{decode(e,t){return super.decode(e,t)}};function v(n,e,t){return new An(n,e,t)}function V(n,e,t){let i,r=typeof e=="number"?e:di(e)?e.toNumber():new Proxy(e,{get(o,s){if(!i){let a=Reflect.get(o,"count");i=di(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 li(n,r,t)}var $l=v([Pe("mintAuthorityOption"),M("mintAuthority"),h("supply"),G("decimals"),G("isInitialized"),Pe("freezeAuthorityOption"),M("freezeAuthority")]);import{PublicKey as im}from"@solana/web3.js";import{MintLayout as om,TOKEN_PROGRAM_ID as am}from"@solana/spl-token";var Oe=({address:n,programId:e,decimals:t,...i})=>({chainId:101,address:je(n).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:i.extensions||{},...i}),Ue=n=>n?{...n,transferFeeConfigAuthority:n.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:n.withdrawWithheldAuthority.toBase58(),withheldAmount:n.withheldAmount.toString(),olderTransferFee:{...n.olderTransferFee,epoch:n.olderTransferFee.epoch.toString(),maximumFee:n.olderTransferFee.maximumFee.toString()},newerTransferFee:{...n.newerTransferFee,epoch:n.newerTransferFee.epoch.toString(),maximumFee:n.newerTransferFee.maximumFee.toString()}}:void 0;import{PublicKey as mt,TransactionInstruction as Ce,Keypair as ns,SystemProgram as is}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Ki,TOKEN_2022_PROGRAM_ID as Sn,TOKEN_PROGRAM_ID as Se}from"@solana/spl-token";var Ro=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Am=Buffer.from("amm_config","utf8"),Mo=Buffer.from("pool","utf8"),Oo=Buffer.from("pool_lp_mint","utf8"),Fo=Buffer.from("pool_vault","utf8"),Eo=Buffer.from("observation","utf8"),vo=Buffer.from("user","utf8");function _t(n,e,t){return ae([vo,n.toBuffer(),e.toBuffer()],t)}function Vt(n){return ae([Ro],n)}function Pn(n,e,t,i){return ae([Mo,e.toBuffer(),t.toBuffer(),i.toBuffer()],n)}function Do(n,e){return ae([Oo,e.toBuffer()],n)}function bi(n,e,t){return ae([Fo,e.toBuffer(),t.toBuffer()],n)}function Wt(n,e){return ae([Eo,e.toBuffer()],n)}function yi({poolId:n,programId:e,configId:t,mintA:i,mintB:r}){let o=Vt(e).publicKey,s=n||Pn(e,t,i,r).publicKey,a=Do(e,s).publicKey,u=bi(e,s,i).publicKey,c=bi(e,s,r).publicKey,m=Wt(e,s).publicKey;return{poolId:s,configId:t,authority:o,lpMint:a,vaultA:u,vaultB:c,observationId:m}}var _o=Buffer.from("locked_liquidity","utf8");function qt(n,e){return ae([_o,e.toBuffer()],n)}import{PublicKey as Yp}from"@solana/web3.js";import Jp from"bn.js";import{AccountLayout as nf,TOKEN_PROGRAM_ID as rf}from"@solana/spl-token";import{Keypair as Ip,PublicKey as Sp,SystemProgram as Kp,TransactionInstruction as Np}from"@solana/web3.js";import Rp from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Fp,TOKEN_2022_PROGRAM_ID as Ep,TOKEN_PROGRAM_ID as vp}from"@solana/spl-token";import op from"bn.js";import ue from"bn.js";var gi=new ue(0),wi=new ue(1),Ai=new ue(-1),Ut=new ue(1).shln(64),Pi=new ue(1).shln(128),Vo=Ut.sub(wi);var Wo=Pi.subn(1),Ge=-443636,ut=-Ge,kn=new ue("4295048016"),hn=new ue("79226673521066979257578248091"),hm=new ue("4295048017"),Tm=new ue("79226673521066979257578248090");var qo=new ue(10).pow(new ue(6));var Bm=new ue("18446744073700000000");import Xd from"bn.js";var Lm=Buffer.from("amm_config","utf8"),Rm=Buffer.from("pool","utf8"),Mm=Buffer.from("pool_vault","utf8"),Om=Buffer.from("pool_reward_vault","utf8"),Fm=Buffer.from("position","utf8"),Em=Buffer.from("tick_array","utf8"),vm=Buffer.from("operation","utf8"),Dm=Buffer.from("pool_tick_array_bitmap_extension","utf8"),_m=Buffer.from("observation","utf8");function Tn(n){return ae([Buffer.from("metadata","utf8"),ve.toBuffer(),n.toBuffer()],ve)}var Vm=Buffer.from("locked_position","utf8");import{PublicKey as Ad}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as kd}from"@solana/spl-token";import Td from"bn.js";import Um from"bn.js";var In=14;var Gt=60;var Ho=v([te(8),G("bump"),Re("index"),M(""),Pe("protocolFeeRate"),Pe("tradeFeeRate"),Re("tickSpacing"),V(h(),8,"")]),Zo=v([Pe("blockTimestamp"),pi("tickCumulative"),V(h(),4)]),Ci=v([te(8),Me("initialized"),h("recentEpoch"),Re("observationIndex"),M("poolId"),V(Zo,100,"observations"),V(h(),4)]),jo=v([G("rewardState"),h("openTime"),h("endTime"),h("lastUpdateTime"),z("emissionsPerSecondX64"),h("rewardTotalEmissioned"),h("rewardClaimed"),M("tokenMint"),M("tokenVault"),M("creator"),z("rewardGrowthGlobalX64")]),xi=v([te(8),G("bump"),M("ammConfig"),M("creator"),M("mintA"),M("mintB"),M("vaultA"),M("vaultB"),M("observationId"),G("mintDecimalsA"),G("mintDecimalsB"),Re("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),Ae("tickCurrent"),Pe(),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),h("protocolFeesTokenA"),h("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),G("status"),V(G(),7,""),V(jo,3,"rewardInfos"),V(h(),16,"tickArrayBitmap"),h("totalFeesTokenA"),h("totalFeesClaimedTokenA"),h("totalFeesTokenB"),h("totalFeesClaimedTokenB"),h("fundFeesTokenA"),h("fundFeesTokenB"),h("startTime"),V(h(),15*4-3,"padding")]),Yo=v([z("growthInsideLastX64"),h("rewardAmountOwed")]),Ii=v([te(8),G("bump"),M("nftMint"),M("poolId"),Ae("tickLower"),Ae("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),h("tokenFeesOwedA"),h("tokenFeesOwedB"),V(Yo,3,"rewardInfos"),V(h(),8,"")]),bp=v([te(8),G("bump"),M("poolId"),Ae("tickLowerIndex"),Ae("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),h("tokenFeesOwedA"),h("tokenFeesOwedB"),V(z(),3,"rewardGrowthInside"),V(h(),8,"")]),Qo=v([Ae("tick"),fi("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),V(z(),3,"rewardGrowthsOutsideX64"),V(Pe(),13,"")]),Ti=v([te(8),M("poolId"),Ae("startTickIndex"),V(Qo,Gt,"ticks"),G("initializedTickCount"),V(G(),115,"")]),Jo=v([te(329),V(M(),100,"whitelistMints")]),zo=v([te(8),M("poolId"),V(V(h(),8),In,"positiveTickArrayBitmap"),V(V(h(),8),In,"negativeTickArrayBitmap")]),yp=v([h(),G("bump"),M("owner"),M("poolId"),M("positionId"),M("nftAccount"),V(h(),8)]),gp=v([te(8),G("bump"),M("lockOwner"),M("poolId"),M("positionId"),M("nftAccount"),M("lockNftMint"),h("recentEpoch"),V(h(),8)]);Ci.span;var Gp=J("Raydium_Clmm");var rs=J("Raydium_cpmm"),Ke={initialize:[175,175,109,31,13,152,155,237],createConfig:[],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 Ni(n,e,t,i,r,o,s,a){let u=v([h("index"),h("tokenLpRate0"),h("tokenLpRate1"),h("protocolFee"),h("creatorFee")]),c=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1}],m=Buffer.alloc(u.span);return u.encode({index:i,tokenLpRate0:r,tokenLpRate1:o,protocolFee:s,creatorFee:a},m),new Ce({keys:c,programId:n,data:Buffer.from([...Ke.createConfig,...m])})}function Li(n,e,t,i,r,o,s,a,u,c,m,l,d,p,g,f,P,b,w,y){let k=v([h("amountMaxA"),h("amountMaxB"),h("openTime")]),B=Pn(n,t,o,s).publicKey,x=_t(e,r,n).publicKey,N=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!r.equals(B),isWritable:!0},{pubkey:x,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:Se,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Ki,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:Pt,isSigner:!1,isWritable:!1}],L=Buffer.alloc(k.span);return k.encode({amountMaxA:b,amountMaxB:w,openTime:y},L),new Ce({keys:N,programId:n,data:Buffer.from([...Ke.initialize,...L])})}function Ri(n,e,t,i,r,o,s,a,u,c,m,l,d,p,g){let f=v([h("lpAmount"),h("amountMaxA"),h("amountMaxB")]),P=_t(e,i,n).publicKey,b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:P,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:u,isSigner:!1,isWritable:!0},{pubkey:Se,isSigner:!1,isWritable:!1},{pubkey:Sn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:kt,isSigner:!1,isWritable:!1}],w=Buffer.alloc(f.span);return rs.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:g.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:g},w),new Ce({keys:b,programId:n,data:Buffer.from([...Ke.deposit,...w])})}function Mi(n,e,t,i,r,o,s,a,u,c,m,l,d,p,g){let f=v([h("lpAmount"),h("amountMinA"),h("amountMinB")]),P=_t(e,i,n).publicKey,b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:P,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:u,isSigner:!1,isWritable:!0},{pubkey:Se,isSigner:!1,isWritable:!1},{pubkey:Sn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:At,isSigner:!1,isWritable:!1}],w=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:g},w),new Ce({keys:b,programId:n,data:Buffer.from([...Ke.withdraw,...w])})}function Oi(n,e,t,i,r,o,s,a,u,c,m,l,d,p,g,f){let P=v([h("amountIn"),h("amounOutMin")]),b=[{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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],w=Buffer.alloc(P.span);return P.encode({amountIn:g,amounOutMin:f},w),new Ce({keys:b,programId:n,data:Buffer.from([...Ke.swapBaseInput,...w])})}function Fi(n,e,t,i,r,o,s,a,u,c,m,l,d,p,g,f){let P=v([h("amountInMax"),h("amountOut")]),b=[{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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],w=Buffer.alloc(P.span);return P.encode({amountInMax:g,amountOut:f},w),new Ce({keys:b,programId:n,data:Buffer.from([...Ke.swapBaseOutput,...w])})}async function Ei(n){var f;let{ownerInfo:e,poolInfo:t,poolKeys:i,getEphemeralSigners:r}=n,o=[],[s,a]=[new mt(t.id),new mt(t.lpMint.address)],u;if(r)u=new mt((await r(1))[0]);else{let P=ns.generate();o.push(P),u=P.publicKey}let{publicKey:c}=be(e.feePayer,u,Se),{publicKey:m}=Tn(u),{publicKey:l}=qt(n.lockProgram,u),{publicKey:d}=be(e.feePayer,a,Se),{publicKey:p}=be(n.lockAuthProgram,a,Se),g=os({programId:n.lockProgram,auth:n.lockAuthProgram,payer:e.feePayer,nftOwner:e.feePayer,liquidityOwner:e.feePayer,nftMint:u,nftAccount:c,poolId:s,lockPda:l,mintLp:a,userLpVault:d,lockLpVault:p,poolVaultA:new mt(i.vault.A),poolVaultB:new mt(i.vault.B),metadataAccount:m,lpAmount:n.lpAmount,withMetadata:(f=n.withMetadata)!=null?f:!0});return{address:{nftMint:u,nftAccount:c,metadataAccount:m,lockPda:l,userLpVault:d,lockLpVault:p},instructions:[g],signers:o,instructionTypes:[ne.CpmmLockLp],lookupTableAddress:[]}}function os({programId:n,auth:e,payer:t,liquidityOwner:i,nftOwner:r,nftMint:o,nftAccount:s,poolId:a,lockPda:u,mintLp:c,userLpVault:m,lockLpVault:l,poolVaultA:d,poolVaultB:p,metadataAccount:g,lpAmount:f,withMetadata:P}){let b=[{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:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:Pt,isSigner:!1,isWritable:!1},{pubkey:is.programId,isSigner:!1,isWritable:!1},{pubkey:Se,isSigner:!1,isWritable:!1},{pubkey:Ki,isSigner:!1,isWritable:!1},{pubkey:ve,isSigner:!1,isWritable:!1}],w=v([h("lpAmount"),Me("withMetadata")]),y=Buffer.alloc(w.span);w.encode({lpAmount:f,withMetadata:P},y);let k=Buffer.from([...Ke.lockCpLiquidity,...y]);return new Ce({keys:b,programId:n,data:k})}function vi({programId:n,nftOwner:e,auth:t,nftAccount:i,lockPda:r,poolId:o,mintLp:s,userVaultA:a,userVaultB:u,poolVaultA:c,poolVaultB:m,mintA:l,mintB:d,lockLpVault:p,lpFeeAmount:g,cpmmProgram:f,cpmmAuthProgram:P}){let b=[{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:ii,isSigner:!1,isWritable:!1},{pubkey:P!=null?P:ri,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:Se,isSigner:!1,isWritable:!1},{pubkey:Sn,isSigner:!1,isWritable:!1},{pubkey:At,isSigner:!1,isWritable:!1}],w=v([h("lpFeeAmount")]),y=Buffer.alloc(w.span);w.encode({lpFeeAmount:g},y);let k=Buffer.from([...Ke.collectCpFee,...y]);return new Ce({keys:b,programId:n,data:k})}var Di=v([te(8),G("bump"),Me("disableCreatePool"),Re("index"),h("tradeFeeRate"),h("protocolFeeRate"),h("fundFeeRate"),h("createPoolFee"),M("protocolOwner"),M("fundOwner"),V(h(),16)]),_i=v([te(8),M("configId"),M("poolCreator"),M("vaultA"),M("vaultB"),M("mintLp"),M("mintA"),M("mintB"),M("mintProgramA"),M("mintProgramB"),M("observationId"),G("bump"),G("status"),G("lpDecimals"),G("mintDecimalA"),G("mintDecimalB"),h("lpAmount"),h("swapFeesToken0"),h("swapFeesToken1"),h("creatorFeesToken0"),h("creatorFeesToken1"),h("protocolFeesMintA"),h("protocolFeesMintB"),h("openTime"),V(h(),32)]);var Cn=class extends We{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){console.log("[getRpcPoolInfos]");let i=await Ne(this.scope.connection,e.map(l=>({pubkey:new T(l)}))),r={},o=new Set,s=[];for(let l=0;l<e.length;l++){let d=i[l];if(d.accountInfo===null)throw Error("fetch pool info error: "+String(e[l]));let p=_i.decode(d.accountInfo.data);r[String(e[l])]={...p,programId:d.accountInfo.owner},o.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let l=[...o],d=await Ne(this.scope.connection,l.map(p=>({pubkey:new T(p)})));for(let p=0;p<l.length;p++){let g=d[p].accountInfo;if(g===null)throw Error("fetch pool config error: "+l[p]);a[l[p]]=Di.decode(g.data)}}let u={},c=await Ne(this.scope.connection,s.map(l=>({pubkey:new T(l)})));for(let l=0;l<s.length;l++){let d=c[l].accountInfo;if(d===null)throw Error("fetch vault info error: "+s[l]);u[String(s[l])]=new H(ss.decode(d.data).amount.toString())}let m={};for(let[l,d]of Object.entries(r)){let p=u[d.vaultA.toString()].sub(d.swapFeesToken0).sub(d.creatorFeesToken0).sub(d.protocolFeesMintA),g=u[d.vaultB.toString()].sub(d.swapFeesToken1).sub(d.creatorFeesToken1).sub(d.protocolFeesMintB);m[l]={...d,baseReserve:p,quoteReserve:g,vaultAAmount:u[d.vaultA.toString()],vaultBAmount:u[d.vaultB.toString()],configInfo:a[d.configId.toString()],poolPrice:new Y(g.toString()).div(new Y(10).pow(d.mintDecimalB)).div(new Y(p.toString()).div(new Y(10).pow(d.mintDecimalA)))}}return m}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((i,r)=>{var u,c,m,l;let o=e[r],[s,a]=[o.mintA.toBase58(),o.mintB.toBase58()];return{...i,[r]:{...o,id:new T(r),configInfo:o.configInfo,version:7,authority:Vt(o.programId).publicKey,mintA:Oe({address:s,decimals:o.mintDecimalA,programId:o.mintProgramA.toBase58(),extensions:{feeConfig:(u=t[s])!=null&&u.feeConfig?Ue((c=t[s])==null?void 0:c.feeConfig):void 0}}),mintB:Oe({address:a,decimals:o.mintDecimalB,programId:o.mintProgramB.toBase58(),extensions:{feeConfig:(m=t[a])!=null&&m.feeConfig?Ue((l=t[a])==null?void 0:l.feeConfig):void 0}})}}},{})}async getPoolInfoFromRpc(e){let t=await this.getRpcPoolInfo(e,!0),i=await tn({connection:this.scope.connection,mints:[t.mintA,t.mintB]}),r=Oe({address:t.mintA.toBase58(),decimals:t.mintDecimalA,programId:t.mintProgramA.toBase58(),extensions:{feeConfig:i[t.mintA.toBase58()].feeConfig?Ue(i[t.mintA.toBase58()].feeConfig):void 0}}),o=Oe({address:t.mintB.toBase58(),decimals:t.mintDecimalB,programId:t.mintProgramB.toBase58(),extensions:{feeConfig:i[t.mintB.toBase58()].feeConfig?Ue(i[t.mintB.toBase58()].feeConfig):void 0}}),s=Oe({address:t.mintLp.toBase58(),decimals:t.lpDecimals,programId:de.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()},u={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 Y(t.vaultAAmount.toString()).div(10**r.decimals).toNumber(),mintAmountB:new Y(t.vaultBAmount.toString()).div(10**o.decimals).toNumber(),feeRate:t.configInfo.tradeFeeRate.toNumber(),openTime:t.openTime.toString(),tvl:0,burnPercent:0,day:u,week:u,month:u,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:Vt(t.programId).publicKey.toBase58(),mintLp:s,config:a},rpcData:t}}async createPool({poolId:e,programId:t,poolFeeAccount:i,startTime:r,ownerInfo:o,associatedOnly:s=!1,checkCreateATAOwner:a=!1,txVersion:u,feeConfig:c,computeBudgetConfig:m,...l}){var U,Z,re;let d=o.feePayer||((U=this.scope.owner)==null?void 0:U.publicKey),p=new H(new T(l.mintA.address).toBuffer()).lte(new H(new T(l.mintB.address).toBuffer())),[g,f]=p?[l.mintA,l.mintB]:[l.mintB,l.mintA],[P,b]=p?[l.mintAAmount,l.mintBAmount]:[l.mintBAmount,l.mintAAmount],w=o.useSOLBalance&&g.address===Xt.toBase58(),y=o.useSOLBalance&&f.address===Xt.toBase58(),[k,B]=[new T(g.address),new T(f.address)],x=this.createTxBuilder(),{account:N,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({mint:k,tokenProgram:g.programId,owner:this.scope.ownerPubKey,createInfo:w?{payer:d,amount:P}:void 0,notUseTokenAccount:w,skipCloseAccount:!w,associatedOnly:w?!1:s,checkCreateATAOwner:a});x.addInstruction(L||{});let{account:E,instructionParams:q}=await this.scope.account.getOrCreateTokenAccount({mint:new T(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:y?{payer:d,amount:b}:void 0,notUseTokenAccount:y,skipCloseAccount:!y,associatedOnly:y?!1:s,checkCreateATAOwner:a});if(x.addInstruction(q||{}),N===void 0||E===void 0)throw Error("you don't has some token account");let F=yi({poolId:e,programId:t,configId:new T(c.id),mintA:k,mintB:B});return x.addInstruction({instructions:[Li(t,this.scope.ownerPubKey,new T(c.id),F.authority,F.poolId,k,B,F.lpMint,N,E,be(this.scope.ownerPubKey,F.lpMint).publicKey,F.vaultA,F.vaultB,i,new T((Z=g.programId)!=null?Z:de),new T((re=f.programId)!=null?re:de),F.observationId,P,b,r)],instructionTypes:[ne.CpmmCreatePool]}),x.addCustomComputeBudget(m),x.versionBuild({txVersion:u,extInfo:{address:{...F,mintA:g,mintB:f,programId:t,poolFeeAccount:i,feeConfig:c}}})}async createConfig({programId:e,owner:t,ammConfig:i,index:r,tokenLpRate0:o,tokenLpRate1:s,protocolFee:a,creatorFee:u,...c}){return this.createTxBuilder().addInstruction({instructions:[Ni(e,this.scope.ownerPubKey,i,r,o,s,a,u)],instructionTypes:[ne.CpmmCreateConfig]}),null}async depositV2(e,t,i){try{let r=await fetch(`https://fomoapi.net/compute/deposit-v2/${e}/${t}/${i}`,{method:"GET",headers:{"Content-Type":"application/json"}});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return await r.json()}catch(r){throw console.error("Error in depositV2:",r),r}}async addLiquidity(e){let{poolInfo:t,poolKeys:i,inputAmount:r,baseIn:o,slippage:s,computeResult:a,computeBudgetConfig:u,config:c,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:l}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:p}={bypassAssociatedCheck:!1,checkCreateATAOwner:!1,...c},g=a?void 0:await this.getRpcPoolInfo(t.id),f=!!o,P={amount:new H(0)},{liquidity:b,inputAmountFee:w,anotherAmount:y}=a||this.computePairAmount({poolInfo:{...t,lpAmount:new Y(g.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()},baseReserve:g.baseReserve,quoteReserve:g.quoteReserve,slippage:new se(0),baseIn:o,epochInfo:await this.scope.fetchEpochInfo(),amount:new Y(r.toString()).div(10**(o?t.mintA.decimals:t.mintB.decimals))});console.log("computeResult",a);let k=y.amount,B=t.mintA.address===Xt.toString(),x=t.mintB.address===Xt.toString(),N=this.createTxBuilder(),[L,E]=[new T(t.mintA.address),new T(t.mintB.address)],{account:q,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new T(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:B||(o?r:k).isZero()?{payer:this.scope.ownerPubKey,amount:o?r:k}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:!1,checkCreateATAOwner:p});N.addInstruction(F||{});let{account:U,instructionParams:Z}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new T(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:x||(o?k:r).isZero()?{payer:this.scope.ownerPubKey,amount:o?k:r}:void 0,skipCloseAccount:!x,notUseTokenAccount:x,associatedOnly:!1,checkCreateATAOwner:p});N.addInstruction(Z||{}),!q&&!U&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let re=await l.getCreatedTokenAccount({mint:new T(t.lpMint.address)}),{tokenAccount:Q,...D}=await l.handleTokenAccount({side:"out",amount:0,mint:new T(t.lpMint.address),tokenAccount:re,bypassAssociatedCheck:d,checkCreateATAOwner:p});N.addInstruction(D);let Xe=i!=null?i:await this.getCpmmPoolKeys(t.id),Vi=new se(new H(1)).sub(s);return N.addInstruction({instructions:[Ri(new T(t.programId),this.scope.ownerPubKey,new T(Xe.authority),new T(t.id),Q,q,U,new T(Xe.vault.A),new T(Xe.vault.B),L,E,new T(t.lpMint.address),a?a==null?void 0:a.liquidity:Vi.mul(b).quotient,o?w.amount:k,o?k:w.amount)],instructionTypes:[ne.CpmmAddLiquidity],lookupTableAddress:Xe.lookupTableAccount?[Xe.lookupTableAccount]:[]}),N.addCustomComputeBudget(u),N.versionBuild({txVersion:m})}async withdrawLiquidity(e){let{poolInfo:t,poolKeys:i,lpAmount:r,slippage:o,computeBudgetConfig:s,txVersion:a}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let u=new se(new H(1)).sub(o),c=await this.getRpcPoolInfo(t.id),[m,l]=[u.mul(r.mul(c.baseReserve).div(c.lpAmount)).quotient,u.mul(r.mul(c.quoteReserve).div(c.lpAmount)).quotient],d=await this.scope.fetchEpochInfo(),[p,g]=[ye(m,t.mintA.extensions.feeConfig,d,!1),ye(l,t.mintB.extensions.feeConfig,d,!1)],{account:f}=this.scope,P=this.createTxBuilder(),[b,w]=[new T(t.mintA.address),new T(t.mintB.address)],y=b.equals(oe),k=w.equals(oe),B,x,{account:N,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new T(t.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:!y,checkCreateATAOwner:!1});B=N,L&&P.addInstruction(L);let{account:E,instructionParams:q}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new T(t.mintB.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!k,associatedOnly:!k,checkCreateATAOwner:!1});x=E,q&&P.addInstruction(q),(!B||!x)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let F=await f.getCreatedTokenAccount({mint:new T(t.lpMint.address)});F||this.logAndCreateError("cannot found lp token account","tokenAccounts",f.tokenAccounts);let U=i!=null?i:await this.getCpmmPoolKeys(t.id);return P.addInstruction({instructions:[Mi(new T(t.programId),this.scope.ownerPubKey,new T(U.authority),new T(t.id),F,B,x,new T(U.vault.A),new T(U.vault.B),b,w,new T(t.lpMint.address),r,new H(0),new H(0))],instructionTypes:[ne.CpmmWithdrawLiquidity],lookupTableAddress:U.lookupTableAccount?[U.lookupTableAccount]:[]}),P.addCustomComputeBudget(s),P.versionBuild({txVersion:a})}async swap(e){var E,q,F,U,Z,re;let{poolInfo:t,poolKeys:i,baseIn:r,fixedOut:o,inputAmount:s,swapResult:a,slippage:u=0,config:c,computeBudgetConfig:m,txVersion:l}=e,{bypassAssociatedCheck:d,checkCreateATAOwner:p,associatedOnly:g}={bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0,...c},f=this.createTxBuilder(),[P,b]=[new T(t.mintA.address),new T(t.mintB.address)];o?a.sourceAmountSwapped=a.sourceAmountSwapped.mul(new H((1+u)*1e4)).div(new H(1e4)):a.destinationAmountSwapped=a.destinationAmountSwapped.mul(new H((1-u)*1e4)).div(new H(1e4));let w=t.mintA.address===oe.toBase58(),y=t.mintB.address===oe.toBase58(),{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:P,tokenProgram:new T((E=t.mintA.programId)!=null?E:de),owner:this.scope.ownerPubKey,createInfo:w||!r?{payer:this.scope.ownerPubKey,amount:r?a.sourceAmountSwapped:0}:void 0,notUseTokenAccount:w,skipCloseAccount:!w,associatedOnly:w?!1:g,checkCreateATAOwner:p});B&&f.addInstruction(B);let{account:x,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:b,tokenProgram:new T((q=t.mintB.programId)!=null?q:de),owner:this.scope.ownerPubKey,createInfo:y||r?{payer:this.scope.ownerPubKey,amount:r?0:a.sourceAmountSwapped}:void 0,notUseTokenAccount:y,skipCloseAccount:!y,associatedOnly:y?!1:g,checkCreateATAOwner:p});N&&f.addInstruction(N),(!k||!x)&&this.logAndCreateError("user do not have token account",{mintA:t.mintA.symbol||t.mintA.address,mintB:t.mintB.symbol||t.mintB.address,mintATokenAcc:k,mintBTokenAcc:x,mintAUseSOLBalance:w,mintBUseSOLBalance:y,associatedOnly:g});let L=i!=null?i:await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[o?Fi(new T(t.programId),this.scope.ownerPubKey,new T(L.authority),new T(L.config.id),new T(t.id),r?k:x,r?x:k,new T(L.vault[r?"A":"B"]),new T(L.vault[r?"B":"A"]),new T((Z=t[r?"mintA":"mintB"].programId)!=null?Z:de),new T((re=t[r?"mintB":"mintA"].programId)!=null?re:de),r?P:b,r?b:P,Wt(new T(t.programId),new T(t.id)).publicKey,a.sourceAmountSwapped,a.destinationAmountSwapped):Oi(new T(t.programId),this.scope.ownerPubKey,new T(L.authority),new T(L.config.id),new T(t.id),r?k:x,r?x:k,new T(L.vault[r?"A":"B"]),new T(L.vault[r?"B":"A"]),new T((F=t[r?"mintA":"mintB"].programId)!=null?F:de),new T((U=t[r?"mintB":"mintA"].programId)!=null?U:de),r?P:b,r?b:P,Wt(new T(t.programId),new T(t.id)).publicKey,s,a.destinationAmountSwapped)],instructionTypes:[o?ne.CpmmSwapBaseOut:ne.ClmmSwapBaseIn]}),f.addCustomComputeBudget(m),f.versionBuild({txVersion:l})}async lockLp(e){var c,m,l,d,p;let{poolInfo:t,lpAmount:i,computeBudgetConfig:r,txVersion:o}=e;i.isZero()&&this.logAndCreateError("lpAmount must greater than zero",{lpAmount:i.toString()});let s=this.createTxBuilder(),a=(c=e.poolKeys)!=null?c:await this.getCpmmPoolKeys(t.id),u=await Ei({poolInfo:t,poolKeys:a,ownerInfo:{wallet:this.scope.ownerPubKey,feePayer:(m=e.feePayer)!=null?m:this.scope.ownerPubKey},lockProgram:(l=e.programId)!=null?l:Ct,lockAuthProgram:(d=e.authProgram)!=null?d:Kt,lpAmount:i,withMetadata:(p=e.withMetadata)!=null?p:!0,getEphemeralSigners:e.getEphemeralSigners});return s.addInstruction(u),s.addCustomComputeBudget(r),s.versionBuild({txVersion:o,extInfo:u.address})}async harvestLockLp(e){var q;let{poolInfo:t,lpFeeAmount:i,nftMint:r,programId:o=Ct,authProgram:s=Kt,cpmmProgram:a,computeBudgetConfig:u,txVersion:c}=e;i.isZero()&&this.logAndCreateError("lpFeeAmount must greater than zero",{lpAmount:i.toString()});let m=e.feePayer||this.scope.ownerPubKey,l=this.createTxBuilder(),[d,p]=[new T(t.mintA.address),new T(t.mintB.address)],g=d.equals(oe),f=p.equals(oe),P,b,{account:w,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new T(t.mintA.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!g,associatedOnly:!g,checkCreateATAOwner:!1});P=w,y&&l.addInstruction(y);let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new T(t.mintB.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:!f,checkCreateATAOwner:!1});b=k,B&&l.addInstruction(B),(!P||!b)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:P,tokenAccountB:b});let x=(q=e.poolKeys)!=null?q:await this.getCpmmPoolKeys(t.id),{publicKey:N}=be(m,r,de),{publicKey:L}=qt(o,r),{publicKey:E}=be(s,new T(t.lpMint.address),de);return l.addInstruction({instructions:[vi({programId:o!=null?o:Ct,nftOwner:this.scope.ownerPubKey,auth:s!=null?s:Kt,nftMint:r,nftAccount:N,lockPda:L,poolId:new T(t.id),mintLp:new T(x.mintLp.address),userVaultA:P,userVaultB:b,poolVaultA:new T(x.vault.A),poolVaultB:new T(x.vault.B),mintA:d,mintB:p,lockLpVault:E,lpFeeAmount:i,cpmmProgram:a==null?void 0:a.programId,cpmmAuthProgram:a==null?void 0:a.authProgram})],instructionTypes:[ne.CpmmCollectLockFee]}),l.addCustomComputeBudget(u),l.versionBuild({txVersion:c})}computeSwapAmount({pool:e,amountIn:t,outputMint:i,slippage:r}){let o=i.toString()===e.mintB.address,s=vt.swap(t,o?e.baseReserve:e.quoteReserve,o?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate),a=new Y(s.destinationAmountSwapped.toString()).div(s.sourceAmountSwapped.toString()),u=s.destinationAmountSwapped.mul(new H((1-r)*1e4)).div(new H(1e4));return{allTrade:s.sourceAmountSwapped.eq(t),amountIn:t,amountOut:s.destinationAmountSwapped,minAmountOut:u,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 k,B,x,N,L,E,q,F,U;let u=1-Number(o.toSignificant())/100,c=new H(new Y(r).mul(10**e[a?"mintA":"mintB"].decimals).mul(u).toFixed(0)),m=ye(c,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),l=c.sub((k=m.fee)!=null?k:new H(0)),d=new H(new Y(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,Y.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",i.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",c.toString(),"amountInFee:",(x=(B=m.fee)==null?void 0:B.toString())!=null?x:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${o.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let g=l.mul(d).div(p==="base"?t:i),f={amount:mn,fee:void 0,expirationTime:void 0};if(!l.isZero()){let Z=as(g,t,i,d);this.logDebug("lpAmountData:",{amountA:Z.amountA.toString(),amountB:Z.amountB.toString()}),f=ye(Z[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let P=new se(new H(1)).add(o),b=new se(new H(1)).sub(o),w=ye(P.mul(f.amount.sub((N=f.fee)!=null?N:new H(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0),y=ye(b.mul(f.amount.sub((L=f.fee)!=null?L:new H(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(q=(E=f.fee)==null?void 0:E.toString())!=null?q:0,"maxAnotherAmount:",w.amount.toString(),"maxAnotherAmountFee:",(U=(F=w.fee)==null?void 0:F.toString())!=null?U:0),{inputAmountFee:m,anotherAmount:f,maxAnotherAmount:w,minAnotherAmount:y,liquidity:g}}};function as(n,e,t,i){let r=n.mul(e).div(i);!r.isZero()&&!n.mul(e).mod(i).isZero()&&(r=r.add(new H(1)));let o=n.mul(t).div(i);return!o.isZero()&&!n.mul(t).mod(i).isZero()&&(o=o.add(new H(1))),{amountA:r,amountB:o}}export{Cn as default};
/*!
* decimal.js v10.4.3
* An arbitrary-precision Decimal type for JavaScript.
* https://github.com/MikeMcl/decimal.js
* Copyright (c) 2022 Michael Mclaughlin <M8ch88l@gmail.com>
* MIT Licence
*/
//# sourceMappingURL=cpmm.mjs.map