@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 157 kB
JavaScript
var lr=Object.defineProperty,mr=Object.defineProperties;var pr=Object.getOwnPropertyDescriptors;var ei=Object.getOwnPropertySymbols;var dr=Object.prototype.hasOwnProperty,fr=Object.prototype.propertyIsEnumerable;var ti=(i,e,t)=>e in i?lr(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,j=(i,e)=>{for(var t in e||(e={}))dr.call(e,t)&&ti(i,t,e[t]);if(ei)for(var t of ei(e))fr.call(e,t)&&ti(i,t,e[t]);return i},te=(i,e)=>mr(i,pr(e));import{PublicKey as bP}from"@solana/web3.js";import{createTransferInstruction as gP,TOKEN_PROGRAM_ID as PP,TOKEN_2022_PROGRAM_ID as kP}from"@solana/spl-token";import Xs from"bn.js";var wt=9e15,mt=1e9,dn="0123456789abcdef",Ut="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Xt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",fn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-wt,maxE:wt,crypto:!1},oi,$e,G=!0,Qt="[DecimalError] ",lt=Qt+"Invalid argument: ",si=Qt+"Precision limit exceeded",ai=Qt+"crypto unavailable",ui="[object Decimal]",Ce=Math.floor,Ae=Math.pow,br=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,yr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,gr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ci=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ue=1e7,W=7,Pr=9007199254740991,kr=Ut.length-1,bn=Xt.length-1,w={toStringTag:ui};w.absoluteValue=w.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),_(i)};w.ceil=function(){return _(new this.constructor(this),this.e+1,2)};w.clampedTo=w.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(lt+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};w.comparedTo=w.cmp=function(i){var e,t,n,r,o=this,a=o.d,s=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!a||!s)return!u||!c?NaN:u!==c?u:a===s?0:!a^u<0?1:-1;if(!a[0]||!s[0])return a[0]?u:s[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<0?1:-1;for(n=a.length,r=s.length,e=0,t=n<r?n:r;e<t;++e)if(a[e]!==s[e])return a[e]>s[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};w.cosine=w.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+W,n.rounding=1,t=Ar(n,fi(n,t)),n.precision=i,n.rounding=e,_($e==2||$e==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};w.cubeRoot=w.cbrt=function(){var i,e,t,n,r,o,a,s,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(G=!1,o=l.s*Ae(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=xe(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Ae(t,1/3),i=Ce((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),a=(i=m.precision)+3;;)if(s=n,u=s.times(s).times(s),c=u.plus(l),n=oe(c.plus(l).times(s),c.plus(u),a+2,1),xe(s.d).slice(0,a)===(t=xe(n.d)).slice(0,a))if(t=t.slice(a-3,a+1),t=="9999"||!r&&t=="4999"){if(!r&&(_(s,i+1,0),s.times(s).times(s).eq(l))){n=s;break}a+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(_(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return G=!0,_(n,i,m.rounding,e)};w.decimalPlaces=w.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-Ce(this.e/W))*W,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};w.dividedBy=w.div=function(i){return oe(this,new this.constructor(i))};w.dividedToIntegerBy=w.divToInt=function(i){var e=this,t=e.constructor;return _(oe(e,new t(i),0,1,1),t.precision,t.rounding)};w.equals=w.eq=function(i){return this.cmp(i)===0};w.floor=function(){return _(new this.constructor(this),this.e+1,3)};w.greaterThan=w.gt=function(i){return this.cmp(i)>0};w.greaterThanOrEqualTo=w.gte=function(i){var e=this.cmp(i);return e==1||e===0};w.hyperbolicCosine=w.cosh=function(){var i,e,t,n,r,o=this,a=o.constructor,s=new a(1);if(!o.isFinite())return new a(o.s?1/0:NaN);if(o.isZero())return s;t=a.precision,n=a.rounding,a.precision=t+Math.max(o.e,o.sd())+4,a.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/Ht(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=Tt(a,1,o.times(e),new a(1),!0);for(var u,c=i,l=new a(8);c--;)u=o.times(o),o=s.minus(u.times(l.minus(u.times(l))));return _(o,a.precision=t,a.rounding=n,!0)};w.hyperbolicSine=w.sinh=function(){var i,e,t,n,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,n=r.d.length,n<3)r=Tt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/Ht(5,i)),r=Tt(o,2,r,r,!0);for(var a,s=new o(5),u=new o(16),c=new o(20);i--;)a=r.times(r),r=r.times(s.plus(a.times(u.times(a).plus(c))))}return o.precision=e,o.rounding=t,_(r,e,t,!0)};w.hyperbolicTangent=w.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,oe(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};w.inverseCosine=w.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Ge(t,r,o):new t(0):new t(NaN):e.isZero()?Ge(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Ge(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};w.inverseHyperbolicCosine=w.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,G=!1,t=t.times(t).minus(1).sqrt().plus(t),G=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};w.inverseHyperbolicSine=w.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,G=!1,t=t.times(t).plus(1).sqrt().plus(t),G=!0,n.precision=i,n.rounding=e,t.ln())};w.inverseHyperbolicTangent=w.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?_(new o(r),i,e,!0):(o.precision=t=n-r.e,r=oe(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};w.inverseSine=w.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=Ge(o,t+4,n).times(.5),i.s=r.s,i):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=n,r.times(2)))};w.inverseTangent=w.atan=function(){var i,e,t,n,r,o,a,s,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=bn)return a=Ge(l,m+4,p).times(.25),a.s=c.s,a}else{if(!c.s)return new l(NaN);if(m+4<=bn)return a=Ge(l,m+4,p).times(.5),a.s=c.s,a}for(l.precision=s=m+10,l.rounding=1,t=Math.min(28,s/W+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(G=!1,e=Math.ceil(s/W),n=1,u=c.times(c),a=new l(c),r=c;i!==-1;)if(r=r.times(u),o=a.minus(r.div(n+=2)),r=r.times(u),a=o.plus(r.div(n+=2)),a.d[e]!==void 0)for(i=e;a.d[i]===o.d[i]&&i--;);return t&&(a=a.times(2<<t-1)),G=!0,_(a,l.precision=m,l.rounding=p,!0)};w.isFinite=function(){return!!this.d};w.isInteger=w.isInt=function(){return!!this.d&&Ce(this.e/W)>this.d.length-2};w.isNaN=function(){return!this.s};w.isNegative=w.isNeg=function(){return this.s<0};w.isPositive=w.isPos=function(){return this.s>0};w.isZero=function(){return!!this.d&&this.d[0]===0};w.lessThan=w.lt=function(i){return this.cmp(i)<0};w.lessThanOrEqualTo=w.lte=function(i){return this.cmp(i)<1};w.logarithm=w.log=function(i){var e,t,n,r,o,a,s,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if(G=!1,s=m+d,a=ct(c,s),n=e?zt(l,s+10):ct(i,s),u=oe(a,n,s,1),xt(u.d,r=m,p))do if(s+=10,a=ct(c,s),n=e?zt(l,s+10):ct(i,s),u=oe(a,n,s,1),!o){+xe(u.d).slice(r+1,r+15)+1==1e14&&(u=_(u,m+1,0));break}while(xt(u.d,r+=10,p));return G=!0,_(u,m,p)};w.minus=w.sub=function(i){var e,t,n,r,o,a,s,u,c,l,m,p,d=this,g=d.constructor;if(i=new g(i),!d.d||!i.d)return!d.s||!i.s?i=new g(NaN):d.d?i.s=-i.s:i=new g(i.d||d.s!==i.s?d:NaN),i;if(d.s!=i.s)return i.s=-i.s,d.plus(i);if(c=d.d,p=i.d,s=g.precision,u=g.rounding,!c[0]||!p[0]){if(p[0])i.s=-i.s;else if(c[0])i=new g(d);else return new g(u===3?-0:0);return G?_(i,s,u):i}if(t=Ce(i.e/W),l=Ce(d.e/W),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,a=p.length):(e=p,t=l,a=c.length),n=Math.max(Math.ceil(s/W),a)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,a=p.length,m=n<a,m&&(a=n),n=0;n<a;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,i.s=-i.s),a=c.length,n=p.length-a;n>0;--n)c[a++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(r=n;r&&c[--r]===0;)c[r]=Ue-1;--c[r],c[n]+=Ue}c[n]-=p[n]}for(;c[--a]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=Yt(c,t),G?_(i,s,u):i):new g(u===3?-0:0)};w.modulo=w.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?_(new n(t),n.precision,n.rounding):(G=!1,n.modulo==9?(e=oe(t,i.abs(),0,3,1),e.s*=i.s):e=oe(t,i,0,n.modulo,1),e=e.times(i),G=!0,t.minus(e))};w.naturalExponential=w.exp=function(){return yn(this)};w.naturalLogarithm=w.ln=function(){return ct(this)};w.negated=w.neg=function(){var i=new this.constructor(this);return i.s=-i.s,_(i)};w.plus=w.add=function(i){var e,t,n,r,o,a,s,u,c,l,m=this,p=m.constructor;if(i=new p(i),!m.d||!i.d)return!m.s||!i.s?i=new p(NaN):m.d||(i=new p(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,s=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(i=new p(m)),G?_(i,s,u):i;if(o=Ce(m.e/W),n=Ce(i.e/W),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,a=l.length):(t=l,n=o,a=c.length),o=Math.ceil(s/W),a=o>a?o+1:a+1,r>a&&(r=a,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(a=c.length,r=l.length,a-r<0&&(r=a,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/Ue|0,c[r]%=Ue;for(e&&(c.unshift(e),++n),a=c.length;c[--a]==0;)c.pop();return i.d=c,i.e=Yt(c,n),G?_(i,s,u):i};w.precision=w.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(lt+i);return t.d?(e=li(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};w.round=function(){var i=this,e=i.constructor;return _(new e(i),i.e+1,e.rounding)};w.sine=w.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+W,n.rounding=1,t=Tr(n,fi(n,t)),n.precision=i,n.rounding=e,_($e>2?t.neg():t,i,e,!0)):new n(NaN)};w.squareRoot=w.sqrt=function(){var i,e,t,n,r,o,a=this,s=a.d,u=a.e,c=a.s,l=a.constructor;if(c!==1||!s||!s[0])return new l(!c||c<0&&(!s||s[0])?NaN:s?a:1/0);for(G=!1,c=Math.sqrt(+a),c==0||c==1/0?(e=xe(s),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ce((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(oe(a,o,t+2,1)).times(.5),xe(o.d).slice(0,t)===(e=xe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(_(o,u+1,0),o.times(o).eq(a))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(_(n,u+1,1),i=!n.times(n).eq(a));break}return G=!0,_(n,u,l.rounding,i)};w.tangent=w.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=oe(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,_($e==2||$e==4?t.neg():t,i,e,!0)):new n(NaN)};w.times=w.mul=function(i){var e,t,n,r,o,a,s,u,c,l=this,m=l.constructor,p=l.d,d=(i=new m(i)).d;if(i.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!i.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?i.s/0:i.s*0);for(t=Ce(l.e/W)+Ce(i.e/W),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,a=u,u=c,c=a),o=[],a=u+c,n=a;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)s=o[r]+d[n]*p[r-n-1]+e,o[r--]=s%Ue|0,e=s/Ue|0;o[r]=(o[r]+e)%Ue|0}for(;!o[--a];)o.pop();return e?++t:o.shift(),i.d=o,i.e=Yt(o,t),G?_(i,m.precision,m.rounding):i};w.toBinary=function(i,e){return Pn(this,2,i,e)};w.toDecimalPlaces=w.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Me(i,0,mt),e===void 0?e=n.rounding:Me(e,0,8),_(t,i+t.e+1,e))};w.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Qe(n,!0):(Me(i,0,mt),e===void 0?e=r.rounding:Me(e,0,8),n=_(new r(n),i+1,e),t=Qe(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=Qe(r):(Me(i,0,mt),e===void 0?e=o.rounding:Me(e,0,8),n=_(new o(r),i+r.e+1,e),t=Qe(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};w.toFraction=function(i){var e,t,n,r,o,a,s,u,c,l,m,p,d=this,g=d.d,b=d.constructor;if(!g)return new b(d);if(c=t=new b(1),n=u=new b(0),e=new b(n),o=e.e=li(g)-d.e-1,a=o%W,e.d[0]=Ae(10,a<0?W+a:a),i==null)i=o>0?e:c;else{if(s=new b(i),!s.isInt()||s.lt(c))throw Error(lt+s);i=s.gt(e)?o>0?e:c:s}for(G=!1,s=new b(xe(g)),l=b.precision,b.precision=o=g.length*W*2;m=oe(s,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=s.minus(m.times(r)),s=r;return r=oe(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=d.s,p=oe(c,n,o,1).minus(d).abs().cmp(oe(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],b.precision=l,G=!0,p};w.toHexadecimal=w.toHex=function(i,e){return Pn(this,16,i,e)};w.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:Me(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?(G=!1,t=oe(t,i,0,e,1).times(i),G=!0,_(t)):(i.s=t.s,t=i),t};w.toNumber=function(){return+this};w.toOctal=function(i,e){return Pn(this,8,i,e)};w.toPower=w.pow=function(i){var e,t,n,r,o,a,s=this,u=s.constructor,c=+(i=new u(i));if(!s.d||!i.d||!s.d[0]||!i.d[0])return new u(Ae(+s,c));if(s=new u(s),s.eq(1))return s;if(n=u.precision,o=u.rounding,i.eq(1))return _(s,n,o);if(e=Ce(i.e/W),e>=i.d.length-1&&(t=c<0?-c:c)<=Pr)return r=mi(u,s,t,n),i.s<0?new u(1).div(r):_(r,n,o);if(a=s.s,a<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(a=1),s.e==0&&s.d[0]==1&&s.d.length==1)return s.s=a,s}return t=Ae(+s,c),e=t==0||!isFinite(t)?Ce(c*(Math.log("0."+xe(s.d))/Math.LN10+s.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?a/0:0):(G=!1,u.rounding=s.s=1,t=Math.min(12,(e+"").length),r=yn(i.times(ct(s,n+t)),n),r.d&&(r=_(r,n+5,1),xt(r.d,n,o)&&(e=n+10,r=_(yn(i.times(ct(s,e+t)),e),e+5,1),+xe(r.d).slice(n+1,n+15)+1==1e14&&(r=_(r,n+1,0)))),r.s=a,G=!0,u.rounding=o,_(r,n,o))};w.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Qe(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Me(i,1,mt),e===void 0?e=r.rounding:Me(e,0,8),n=_(new r(n),i,e),t=Qe(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toSignificantDigits=w.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Me(i,1,mt),e===void 0?e=n.rounding:Me(e,0,8)),_(new n(t),i,e)};w.toString=function(){var i=this,e=i.constructor,t=Qe(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};w.truncated=w.trunc=function(){return _(new this.constructor(this),this.e+1,1)};w.valueOf=w.toJSON=function(){var i=this,e=i.constructor,t=Qe(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function xe(i){var e,t,n,r=i.length-1,o="",a=i[0];if(r>0){for(o+=a,e=1;e<r;e++)n=i[e]+"",t=W-n.length,t&&(o+=ut(t)),o+=n;a=i[e],n=a+"",t=W-n.length,t&&(o+=ut(t))}else if(a===0)return"0";for(;a%10===0;)a/=10;return o+a}function Me(i,e,t){if(i!==~~i||i<e||i>t)throw Error(lt+i)}function xt(i,e,t,n){var r,o,a,s;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=W,r=0):(r=Math.ceil((e+1)/W),e%=W),o=Ae(10,W-e),s=i[r]%o|0,n==null?e<3?(e==0?s=s/100|0:e==1&&(s=s/10|0),a=t<4&&s==99999||t>3&&s==49999||s==5e4||s==0):a=(t<4&&s+1==o||t>3&&s+1==o/2)&&(i[r+1]/o/100|0)==Ae(10,e-2)-1||(s==o/2||s==0)&&(i[r+1]/o/100|0)==0:e<4?(e==0?s=s/1e3|0:e==1?s=s/100|0:e==2&&(s=s/10|0),a=(n||t<4)&&s==9999||!n&&t>3&&s==4999):a=((n||t<4)&&s+1==o||!n&&t>3&&s+1==o/2)&&(i[r+1]/o/1e3|0)==Ae(10,e-3)-1,a}function Gt(i,e,t){for(var n,r=[0],o,a=0,s=i.length;a<s;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=dn.indexOf(i.charAt(a++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function Ar(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/Ht(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=Tt(i,1,e.times(r),new i(1));for(var o=t;o--;){var a=e.times(e);e=a.times(a).minus(a).times(8).plus(1)}return i.precision-=t,e}var oe=function(){function i(n,r,o){var a,s=0,u=n.length;for(n=n.slice();u--;)a=n[u]*r+s,n[u]=a%o|0,s=a/o|0;return s&&n.unshift(s),n}function e(n,r,o,a){var s,u;if(o!=a)u=o>a?1:-1;else for(s=u=0;s<o;s++)if(n[s]!=r[s]){u=n[s]>r[s]?1:-1;break}return u}function t(n,r,o,a){for(var s=0;o--;)n[o]-=s,s=n[o]<r[o]?1:0,n[o]=s*a+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,a,s,u){var c,l,m,p,d,g,b,f,y,B,T,N,v,h,R,L,D,x,F,ye,se=n.constructor,he=n.s==r.s?1:-1,de=n.d,ee=r.d;if(!de||!de[0]||!ee||!ee[0])return new se(!n.s||!r.s||(de?ee&&de[0]==ee[0]:!ee)?NaN:de&&de[0]==0||!ee?he*0:he/0);for(u?(d=1,l=n.e-r.e):(u=Ue,d=W,l=Ce(n.e/d)-Ce(r.e/d)),F=ee.length,D=de.length,y=new se(he),B=y.d=[],m=0;ee[m]==(de[m]||0);m++);if(ee[m]>(de[m]||0)&&l--,o==null?(h=o=se.precision,a=se.rounding):s?h=o+(n.e-r.e)+1:h=o,h<0)B.push(1),g=!0;else{if(h=h/d+2|0,m=0,F==1){for(p=0,ee=ee[0],h++;(m<D||p)&&h--;m++)R=p*u+(de[m]||0),B[m]=R/ee|0,p=R%ee|0;g=p||m<D}else{for(p=u/(ee[0]+1)|0,p>1&&(ee=i(ee,p,u),de=i(de,p,u),F=ee.length,D=de.length),L=F,T=de.slice(0,F),N=T.length;N<F;)T[N++]=0;ye=ee.slice(),ye.unshift(0),x=ee[0],ee[1]>=u/2&&++x;do p=0,c=e(ee,T,F,N),c<0?(v=T[0],F!=N&&(v=v*u+(T[1]||0)),p=v/x|0,p>1?(p>=u&&(p=u-1),b=i(ee,p,u),f=b.length,N=T.length,c=e(b,T,f,N),c==1&&(p--,t(b,F<f?ye:ee,f,u))):(p==0&&(c=p=1),b=ee.slice()),f=b.length,f<N&&b.unshift(0),t(T,b,N,u),c==-1&&(N=T.length,c=e(ee,T,F,N),c<1&&(p++,t(T,F<N?ye:ee,N,u))),N=T.length):c===0&&(p++,T=[0]),B[m++]=p,c&&T[0]?T[N++]=de[L]||0:(T=[de[L]],N=1);while((L++<D||T[0]!==void 0)&&h--);g=T[0]!==void 0}B[0]||B.shift()}if(d==1)y.e=l,oi=g;else{for(m=1,p=B[0];p>=10;p/=10)m++;y.e=m+l*d-1,_(y,s?o+y.e+1:o,a,g)}return y}}();function _(i,e,t,n){var r,o,a,s,u,c,l,m,p,d=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,s=m[0];s>=10;s/=10)r++;if(o=e-r,o<0)o+=W,a=e,l=m[p=0],u=l/Ae(10,r-a-1)%10|0;else if(p=Math.ceil((o+1)/W),s=m.length,p>=s)if(n){for(;s++<=p;)m.push(0);l=u=0,r=1,o%=W,a=o-W+1}else break e;else{for(l=s=m[p],r=1;s>=10;s/=10)r++;o%=W,a=o-W+r,u=a<0?0:l/Ae(10,r-a-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(a<0?l:l%Ae(10,r-a-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?a>0?l/Ae(10,r-a):0:m[p-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=Ae(10,(W-e%W)%W),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=p,s=1,p--):(m.length=p+1,s=Ae(10,W-o),m[p]=a>0?(l/Ae(10,r-a)%Ae(10,a)|0)*s:0),c)for(;;)if(p==0){for(o=1,a=m[0];a>=10;a/=10)o++;for(a=m[0]+=s,s=1;a>=10;a/=10)s++;o!=s&&(i.e++,m[0]==Ue&&(m[0]=1));break}else{if(m[p]+=s,m[p]!=Ue)break;m[p--]=0,s=1}for(o=m.length;m[--o]===0;)m.pop()}return G&&(i.e>d.maxE?(i.d=null,i.e=NaN):i.e<d.minE&&(i.e=0,i.d=[0])),i}function Qe(i,e,t){if(!i.isFinite())return di(i);var n,r=i.e,o=xe(i.d),a=o.length;return e?(t&&(n=t-a)>0?o=o.charAt(0)+"."+o.slice(1)+ut(n):a>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+ut(-r-1)+o,t&&(n=t-a)>0&&(o+=ut(n))):r>=a?(o+=ut(r+1-a),t&&(n=t-r-1)>0&&(o=o+"."+ut(n))):((n=r+1)<a&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-a)>0&&(r+1===a&&(o+="."),o+=ut(n))),o}function Yt(i,e){var t=i[0];for(e*=W;t>=10;t/=10)e++;return e}function zt(i,e,t){if(e>kr)throw G=!0,t&&(i.precision=t),Error(si);return _(new i(Ut),e,1,!0)}function Ge(i,e,t){if(e>bn)throw Error(si);return _(new i(Xt),e,t,!0)}function li(i){var e=i.length-1,t=e*W+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function ut(i){for(var e="";i--;)e+="0";return e}function mi(i,e,t,n){var r,o=new i(1),a=Math.ceil(n/W+4);for(G=!1;;){if(t%2&&(o=o.times(e),ii(o.d,a)&&(r=!0)),t=Ce(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ii(e.d,a)}return G=!0,o}function ni(i){return i.d[i.d.length-1]&1}function pi(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function yn(i,e){var t,n,r,o,a,s,u,c=0,l=0,m=0,p=i.constructor,d=p.rounding,g=p.precision;if(!i.d||!i.d[0]||i.e>17)return new p(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(G=!1,u=g):u=e,s=new p(.03125);i.e>-2;)i=i.times(s),m+=5;for(n=Math.log(Ae(2,m))/Math.LN10*2+5|0,u+=n,t=o=a=new p(1),p.precision=u;;){if(o=_(o.times(i),u,1),t=t.times(++l),s=a.plus(oe(o,t,u,1)),xe(s.d).slice(0,u)===xe(a.d).slice(0,u)){for(r=m;r--;)a=_(a.times(a),u,1);if(e==null)if(c<3&&xt(a.d,u-n,d,c))p.precision=u+=10,t=o=s=new p(1),l=0,c++;else return _(a,p.precision=g,d,G=!0);else return p.precision=g,a}a=s}}function ct(i,e){var t,n,r,o,a,s,u,c,l,m,p,d=1,g=10,b=i,f=b.d,y=b.constructor,B=y.rounding,T=y.precision;if(b.s<0||!f||!f[0]||!b.e&&f[0]==1&&f.length==1)return new y(f&&!f[0]?-1/0:b.s!=1?NaN:f?0:b);if(e==null?(G=!1,l=T):l=e,y.precision=l+=g,t=xe(f),n=t.charAt(0),Math.abs(o=b.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)b=b.times(i),t=xe(b.d),n=t.charAt(0),d++;o=b.e,n>1?(b=new y("0."+t),o++):b=new y(n+"."+t.slice(1))}else return c=zt(y,l+2,T).times(o+""),b=ct(new y(n+"."+t.slice(1)),l-g).plus(c),y.precision=T,e==null?_(b,T,B,G=!0):b;for(m=b,u=a=b=oe(b.minus(1),b.plus(1),l,1),p=_(b.times(b),l,1),r=3;;){if(a=_(a.times(p),l,1),c=u.plus(oe(a,new y(r),l,1)),xe(c.d).slice(0,l)===xe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(zt(y,l+2,T).times(o+""))),u=oe(u,new y(d),l,1),e==null)if(xt(u.d,l-g,B,s))y.precision=l+=g,c=a=b=oe(m.minus(1),m.plus(1),l,1),p=_(b.times(b),l,1),r=s=1;else return _(u,y.precision=T,B,G=!0);else return y.precision=T,u;u=c,r+=2}}function di(i){return String(i.s*i.s/0)}function gn(i,e){var t,n,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%W,t<0&&(n+=W),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=W;n<r;)i.d.push(+e.slice(n,n+=W));e=e.slice(n),n=W-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),G&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function wr(i,e){var t,n,r,o,a,s,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ci.test(e))return gn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(yr.test(e))t=16,e=e.toLowerCase();else if(br.test(e))t=2;else if(gr.test(e))t=8;else throw Error(lt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),a=o>=0,n=i.constructor,a&&(e=e.replace(".",""),s=e.length,o=s-o,r=mi(n,new n(t),o,o*2)),c=Gt(e,t,Ue),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=Yt(c,l),i.d=c,G=!1,a&&(i=oe(i,r,s*4)),u&&(i=i.times(Math.abs(u)<54?Ae(2,u):St.pow(2,u))),G=!0,i)}function Tr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Tt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Ht(5,t)),e=Tt(i,2,e,e);for(var r,o=new i(5),a=new i(16),s=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(a.times(r).minus(s))));return e}function Tt(i,e,t,n,r){var o,a,s,u,c=1,l=i.precision,m=Math.ceil(l/W);for(G=!1,u=t.times(t),s=new i(n);;){if(a=oe(s.times(u),new i(e++*e++),l,1),s=r?n.plus(a):n.minus(a),n=oe(a.times(u),new i(e++*e++),l,1),a=s.plus(n),a.d[m]!==void 0){for(o=m;a.d[o]===s.d[o]&&o--;);if(o==-1)break}o=s,s=n,n=a,a=o,c++}return G=!0,a.d.length=m+1,a}function Ht(i,e){for(var t=i;--e;)t*=i;return t}function fi(i,e){var t,n=e.s<0,r=Ge(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return $e=n?4:1,e;if(t=e.divToInt(r),t.isZero())$e=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return $e=ni(t)?n?2:3:n?4:1,e;$e=ni(t)?n?1:4:n?3:2}return e.minus(r).abs()}function Pn(i,e,t,n){var r,o,a,s,u,c,l,m,p,d=i.constructor,g=t!==void 0;if(g?(Me(t,1,mt),n===void 0?n=d.rounding:Me(n,0,8)):(t=d.precision,n=d.rounding),!i.isFinite())l=di(i);else{for(l=Qe(i),a=l.indexOf("."),g?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,a>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-a,p.d=Gt(Qe(p),10,r),p.e=p.d.length),m=Gt(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=g?"0p+0":"0";else{if(a<0?o--:(i=new d(i),i.d=m,i.e=o,i=oe(i,p,t,n,0,r),m=i.d,o=i.e,c=oi),a=m[t],s=r/2,c=c||m[t+1]!==void 0,c=n<4?(a!==void 0||c)&&(n===0||n===(i.s<0?3:2)):a>s||a===s&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(a=0,l="";a<u;a++)l+=dn.charAt(m[a]);if(g){if(u>1)if(e==16||e==8){for(a=e==16?4:3,--u;u%a;u++)l+="0";for(m=Gt(l,r,e),u=m.length;!m[u-1];--u);for(a=1,l="1.";a<u;a++)l+=dn.charAt(m[a])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function ii(i,e){if(i.length>e)return i.length=e,!0}function hr(i){return new this(i).abs()}function Br(i){return new this(i).acos()}function Ir(i){return new this(i).acosh()}function xr(i,e){return new this(i).plus(e)}function Sr(i){return new this(i).asin()}function Kr(i){return new this(i).asinh()}function Cr(i){return new this(i).atan()}function Nr(i){return new this(i).atanh()}function Rr(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=Ge(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Ge(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Ge(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(oe(i,e,o,1)),e=Ge(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(oe(i,e,o,1)),t}function Lr(i){return new this(i).cbrt()}function Mr(i){return _(i=new this(i),i.e+1,2)}function Or(i,e,t){return new this(i).clamp(e,t)}function Er(i){if(!i||typeof i!="object")throw Error(Qt+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,mt,"rounding",0,8,"toExpNeg",-wt,0,"toExpPos",0,wt,"maxE",0,wt,"minE",-wt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=fn[t]),(n=i[t])!==void 0)if(Ce(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(lt+t+": "+n);if(t="crypto",r&&(this[t]=fn[t]),(n=i[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(ai);else this[t]=!1;else throw Error(lt+t+": "+n);return this}function vr(i){return new this(i).cos()}function Fr(i){return new this(i).cosh()}function bi(i){var e,t,n;function r(o){var a,s,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,ri(o)){c.s=o.s,G?!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(a=0,s=o;s>=10;s/=10)a++;G?a>r.maxE?(c.e=NaN,c.d=null):a<r.minE?(c.e=0,c.d=[0]):(c.e=a,c.d=[o]):(c.e=a,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return gn(c,o.toString())}else if(u!=="string")throw Error(lt+o);return(s=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(s===43&&(o=o.slice(1)),c.s=1),ci.test(o)?gn(c,o):wr(c,o)}if(r.prototype=w,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=Er,r.clone=bi,r.isDecimal=ri,r.abs=hr,r.acos=Br,r.acosh=Ir,r.add=xr,r.asin=Sr,r.asinh=Kr,r.atan=Cr,r.atanh=Nr,r.atan2=Rr,r.cbrt=Lr,r.ceil=Mr,r.clamp=Or,r.cos=vr,r.cosh=Fr,r.div=_r,r.exp=Wr,r.floor=Vr,r.hypot=Dr,r.ln=qr,r.log=Gr,r.log10=Xr,r.log2=Ur,r.max=zr,r.min=Qr,r.mod=Yr,r.mul=Hr,r.pow=Zr,r.random=jr,r.round=Jr,r.sign=$r,r.sin=eo,r.sinh=to,r.sqrt=no,r.sub=io,r.sum=ro,r.tan=oo,r.tanh=so,r.trunc=ao,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function _r(i,e){return new this(i).div(e)}function Wr(i){return new this(i).exp()}function Vr(i){return _(i=new this(i),i.e+1,3)}function Dr(){var i,e,t=new this(0);for(G=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return G=!0,new this(1/0);t=e}return G=!0,t.sqrt()}function ri(i){return i instanceof St||i&&i.toStringTag===ui||!1}function qr(i){return new this(i).ln()}function Gr(i,e){return new this(i).log(e)}function Ur(i){return new this(i).log(2)}function Xr(i){return new this(i).log(10)}function zr(){return pi(this,arguments,"lt")}function Qr(){return pi(this,arguments,"gt")}function Yr(i,e){return new this(i).mod(e)}function Hr(i,e){return new this(i).mul(e)}function Zr(i,e){return new this(i).pow(e)}function jr(i){var e,t,n,r,o=0,a=new this(1),s=[];if(i===void 0?i=this.precision:Me(i,1,mt),n=Math.ceil(i/W),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:s[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(s.push(r%1e7),o+=4);o=n/4}else throw Error(ai);else for(;o<n;)s[o++]=Math.random()*1e7|0;for(n=s[--o],i%=W,n&&i&&(r=Ae(10,W-i),s[o]=(n/r|0)*r);s[o]===0;o--)s.pop();if(o<0)t=0,s=[0];else{for(t=-1;s[0]===0;t-=W)s.shift();for(n=1,r=s[0];r>=10;r/=10)n++;n<W&&(t-=W-n)}return a.e=t,a.d=s,a}function Jr(i){return _(i=new this(i),i.e+1,this.rounding)}function $r(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function eo(i){return new this(i).sin()}function to(i){return new this(i).sinh()}function no(i){return new this(i).sqrt()}function io(i,e){return new this(i).sub(e)}function ro(){var i=0,e=arguments,t=new this(e[i]);for(G=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return G=!0,_(t,this.precision,this.rounding)}function oo(i){return new this(i).tan()}function so(i){return new this(i).tanh()}function ao(i){return _(i=new this(i),i.e+1,1)}w[Symbol.for("nodejs.util.inspect.custom")]=w.toString;w[Symbol.toStringTag]="Decimal";var St=w.constructor=bi(fn);Ut=new St(Ut);Xt=new St(Xt);var O=St;import{PublicKey as lo}from"@solana/web3.js";import{get as yi,set as uo}from"lodash";var kn=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},gi={},co={};function ae(i){let e=yi(gi,i);if(!e){let t=yi(co,i);e=new kn({name:i,logLevel:t}),uo(gi,i,e)}return e}import{MINT_SIZE as ia,TOKEN_PROGRAM_ID as ra,getTransferFeeConfig as oa,unpackMint as sa}from"@solana/spl-token";var An=ae("Raydium_accountInfo_util");async function pt(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=j({batchRequest:!1},t),a=wn(e,o),s=new Array(a.length).fill([]);if(n){let u=a.map(m=>{let p=i._buildArgs([m.map(d=>d.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:p}}),c=wn(u,10);s=(await(await Promise.all(c.map(async m=>await i._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&An.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(p=>{if(p){let{data:d,executable:g,lamports:b,owner:f,rentEpoch:y}=p;return d.length!==2&&d[1]!=="base64"&&An.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:g,lamports:b,owner:new lo(f),rentEpoch:y}}return null})))}else try{s=await Promise.all(a.map(u=>i.getMultipleAccountsInfo(u,r)))}catch(u){u instanceof Error&&An.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return s.flat()}async function Kt(i,e,t){let n=await pt(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>te(j({},r),{accountInfo:n[o]}))}import nt from"bn.js";import ko from"big.js";import Jt from"bn.js";import mo from"toformat";var po=mo,Nt=po;import jt from"big.js";import bo from"bn.js";import yo from"decimal.js-light";import Rt from"bn.js";var Pi=9007199254740991;function ue(i){let e=ae("Raydium_parseBigNumberish");if(i instanceof Rt)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Rt(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Pi||i<=-Pi)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Rt(String(i))):typeof i=="bigint"?new Rt(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Rt(0))}var Zt=ae("module/fraction"),Tn=Nt(jt),Lt=Nt(yo),go={[0]:Lt.ROUND_DOWN,[1]:Lt.ROUND_HALF_UP,[2]:Lt.ROUND_UP},Po={[0]:jt.roundDown,[1]:jt.roundHalfUp,[2]:jt.roundUp},J=class{constructor(e,t=new bo(1)){this.numerator=ue(e),this.denominator=ue(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new J(this.denominator,this.numerator)}add(e){let t=e instanceof J?e:new J(ue(e));return this.denominator.eq(t.denominator)?new J(this.numerator.add(t.numerator),this.denominator):new J(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof J?e:new J(ue(e));return this.denominator.eq(t.denominator)?new J(this.numerator.sub(t.numerator),this.denominator):new J(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof J?e:new J(ue(e));return new J(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof J?e:new J(ue(e));return new J(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Zt.logWithError(`${e} is not an integer.`),e<=0&&Zt.logWithError(`${e} is not positive.`),Lt.set({precision:e+1,rounding:go[n]});let r=new Lt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Zt.logWithError(`${e} is not an integer.`),e<0&&Zt.logWithError(`${e} is negative.`),Tn.DP=e,Tn.RM=Po[n]||1,new Tn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Ao=ae("Raydium_amount"),ki=Nt(ko);function wo(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):Ao.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var we=class extends J{constructor(t,n,r=!0,o){let a=new Jt(0),s=hn.pow(new Jt(t.decimals));if(r)a=ue(n);else{let u=new Jt(0),c=new Jt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=wo(n.toString(),t.decimals);u=ue(l),c=ue(m)}u=u.mul(s),a=u.add(c)}super(a,s);this.logger=ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new we(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new we(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return ki.DP=this.token.decimals,new ki(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as To}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ai}from"@solana/spl-token";var Bn={chainId:101,address:To.default.toBase58(),programId:Ai.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},et={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Ai.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as Sn}from"@solana/web3.js";import{PublicKey as me,SystemProgram as wi,SYSVAR_RENT_PUBKEY as ho}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Bo}from"@solana/spl-token";function P({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var _a=[P({pubkey:Bo,isWritable:!1}),P({pubkey:wi.programId,isWritable:!1}),P({pubkey:ho,isWritable:!1})];function In({publicKey:i,transformSol:e}){let t=xn(i.toString());if(t instanceof me)return e&&t.equals(Mt)?Ct:t;if(e&&t.toString()===Mt.toBase58())return Ct;if(typeof t=="string"){if(t===me.default.toBase58())return me.default;try{return new me(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function xn(i){try{return new me(i)}catch{return i}}var $t=new me("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),dt=new me("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ye=new me("SysvarRent111111111111111111111111111111111"),Wa=new me("SysvarC1ock11111111111111111111111111111111"),ft=new me("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Va=new me("Sysvar1nstructions1111111111111111111111111"),Io=wi.programId,Da=new me("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),qa=new me("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ga=new me("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ua=new me("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Xa=new me("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),za=new me("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Qa=new me("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ya=new me("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ha=new me("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Za=new me("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ja=new me("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ct=new me("So11111111111111111111111111111111111111112"),Mt=me.default;function ht(i){return In({publicKey:i,transformSol:!0})}var Kn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:a=!1}){if(e===Mt.toBase58()||e instanceof Sn&&Mt.equals(e)){this.decimals=et.decimals,this.symbol=et.symbol,this.name=et.name,this.mint=new Sn(et.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=o?Sn.default:In({publicKey:e}),this.isToken2022=a}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Xe=Kn;Xe.WSOL=new Kn(te(j({},et),{mint:et.address}));var Cn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},en=Cn;en.SOL=new Cn(Bn);import xo from"bn.js";var Ti=new J(new xo(100)),tt=class extends J{toSignificant(e=5,t,n){return this.mul(Ti).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ti).toFixed(e,t,n)}};var So=ae("Raydium_price"),Ee=class extends J{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:a}=t;super(o,a);this.baseToken=n,this.quoteToken=r,this.scalar=new J(Nn(n.decimals),Nn(r.decimals))}get raw(){return new J(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ee({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&So.logWithError("mul token not equals");let n=super.mul(t);return new Ee({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};import{PublicKey as Ko}from"@solana/web3.js";import Co from"bn.js";function Bi(i){return typeof i=="object"&&i!==null&&![Xe,we,Ko,J,Co,Ee,tt].some(e=>typeof e=="object"&&i instanceof e)}function ve(i){return typeof i=="string"?xn(i):Array.isArray(i)?i.map(e=>ve(e)):Bi(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,ve(t)])):i}var hi=new nt(0),No=new nt(1),zu=new nt(2),Qu=new nt(3),Yu=new nt(5),hn=new nt(10),Hu=new nt(100),Zu=new nt(1e3),ju=new nt(1e4);function Nn(i){return hn.pow(ue(i))}function wn(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as Lo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Mo}from"@solana/spl-token";import{ComputeBudgetProgram as oc,Keypair as uc,PublicKey as Ro,Transaction as lc,TransactionMessage as pc,VersionedTransaction as dc}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",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{TOKEN_PROGRAM_ID as gc}from"@solana/spl-token";var Pc=ae("Raydium_txUtil");function Se(i,e){let[t,n]=Ro.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function re(i,e,t){return Se([i.toBuffer(),(t!=null?t:Mo).toBuffer(),e.toBuffer()],new Lo("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as z}from"@solana/web3.js";var Oo=new z("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ic=new z("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Eo=new z("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),vo=new z("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Fo=new z("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),_o=new z("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Rn=new z("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ii=new z("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Wo=new z("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),tn=new z("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ln=new z("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),xi=new z("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Si=new z("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Vo=new z("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),xc=new z("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Sc=new z("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Kc=new z("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Cc=new z("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Nc=new z("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Mn=new z("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ki=new z("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Do=new z("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),qo=new z("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Go=new z("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Uo=new z("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Xo=new z("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),zo=new z("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),Qo=new z("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Yo=new z("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var Re={AMM_V4:Ii,AMM_STABLE:Wo,CLMM_PROGRAM_ID:Ln,CLMM_LOCK_PROGRAM_ID:xi,CLMM_LOCK_AUTH_ID:Si,FARM_PROGRAM_ID_V3:Oo,FARM_PROGRAM_ID_V5:Eo,FARM_PROGRAM_ID_V6:vo,OPEN_BOOK_PROGRAM:_o,SERUM_PROGRAM_ID_V3:Rn,UTIL1216:Fo,Router:Vo,CREATE_CPMM_POOL_PROGRAM:Mn,CREATE_CPMM_POOL_AUTH:Ki,CREATE_CPMM_POOL_FEE_ACC:Do,LOCK_CPMM_PROGRAM:Xo,LOCK_CPMM_AUTH:Qo},Rc={SERUM_MARKET:z.default,OPENBOOK_MARKET:new z("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:z.default,FarmV3:new z("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new z("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new z("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new z("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new z("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new z("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new z("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new z("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new z("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:qo,CREATE_CPMM_POOL_AUTH:Go,CREATE_CPMM_POOL_FEE_ACC:Uo,FEE_DESTINATION_ID:new z("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:zo,LCOK_CPMM_AUTH:Yo};import ze from"bn.js";var Ot=1e4;function ge(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=te(j({},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,a=new ze(o.maximumFee.toString()),s=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Ot){let u=new ze(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:s}}else{let u=nn(i.mul(new ze(Ot)),new ze(Ot-o.transferFeeBasisPoints)),c=new ze(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=nn(l.mul(new ze(o.transferFeeBasisPoints)),new ze(Ot)),p=m.gt(a)?a:m;return{amount:l,fee:p,expirationTime:s}}else{let u=nn(i.mul(new ze(o.transferFeeBasisPoints)),new ze(Ot)),c=u.gt(a)?a:u;return{amount:i,fee:c,expirationTime:s}}}function it(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function nn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new ze(0))?t.add(new ze(1)):t}import{PublicKey as Ho,AddressLookupTableAccount as Ci}from"@solana/web3.js";var Zo={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Ci({key:new Ho("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Ci.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 Hc,sendAndConfirmTransaction as Zc,SystemProgram as $c,Transaction as el,TransactionMessage as nl,VersionedTransaction as il}from"@solana/web3.js";import ol from"axios";import{PublicKey as ss}from"@solana/web3.js";import Oi,{isBN as Ei}from"bn.js";import{bits as Nl,BitStructure as Rl,blob as Jo,Blob as Ll,cstr as Ml,f32 as Ol,f32be as El,f64 as vl,f64be as Fl,greedy as _l,Layout as $o,ns64 as Wl,ns64be as Vl,nu64 as Dl,nu64be as ql,offset as Gl,s16 as Ul,s16be as Xl,s24 as zl,s24be as Ql,s32 as es,s32be as Yl,s40 as Hl,s40be as Zl,s48 as jl,s48be as Jl,s8 as $l,seq as ts,struct as em,Structure as ns,u16 as is,u16be as tm,u24 as nm,u24be as im,u32 as rm,u32be as om,u40 as sm,u40be as am,u48 as um,u48be as cm,u8 as rs,UInt as os,union as lm,Union as mm,unionLayoutDiscriminator as pm,utf8 as dm}from"@solana/buffer-layout";var On=$o,Ri=ns;var En=os;var Li=rs,yt=is;var ce=es;var Mi=ts;var Pe=Jo;var Bt=class extends On{constructor(t,n,r){super(t,r);this.blob=Pe(t),this.signed=n}decode(t,n=0){let r=new Oi(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new Oi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function V(i){return new En(1,i)}function Fe(i){return new En(4,i)}function k(i){return new Bt(8,!1,i)}function q(i){return new Bt(16,!1,i)}function vi(i){return new Bt(8,!0,i)}function Fi(i){return new Bt(16,!0,i)}var rn=class extends On{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function S(i){return new rn(Pe(32),e=>new ss(e),e=>e.toBuffer(),i)}function Be(i){return new rn(Li(),as,us,i)}function as(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function us(i){return i?1:0}var vn=class extends Ri{decode(e,t){return super.decode(e,t)}};function M(i,e,t){return new vn(i,e,t)}function Y(i,e,t){let n,r=typeof e=="number"?e:Ei(e)?e.toNumber():new Proxy(e,{get(o,a){if(!n){let s=Reflect.get(o,"count");n=Ei(s)?s.toNumber():s,Reflect.set(o,"count",n)}return Reflect.get(o,a)},set(o,a,s){return a==="count"&&(n=s),Reflect.set(o,a,s)}});return Mi(i,r,t)}import{PublicKey as xd}from"@solana/web3.js";import Kd from"bn.js";import{AccountLayout as Ld,TOKEN_2022_PROGRAM_ID as Md,TOKEN_PROGRAM_ID as Od}from"@solana/spl-token";import{PublicKey as Km}from"@solana/web3.js";import{MintLayout as Nm,TOKEN_PROGRAM_ID as Lm}from"@solana/spl-token";import{Keypair as pn,PublicKey as I,SystemProgram as at,TransactionInstruction as Ke}from"@solana/web3.js";import zn from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Vt,TOKEN_2022_PROGRAM_ID as be,TOKEN_PROGRAM_ID as ie}from"@solana/spl-token";import Ps from"bn.js";import qe from"bn.js";var pe=new qe(0),_e=new qe(1),rt=new qe(-1),We=new qe(1).shln(64),on=new qe(1).shln(128),Fn=We.sub(_e),Et=64,_i=on.subn(1),Ne=-443636,Le=-Ne,He=new qe("4295048016"),Ze=new qe("79226673521066979257578248091"),sn=new qe("4295048017"),an=new qe("79226673521066979257578248090"),Wi=16,Vi="59543866431248",Di="184467440737095516",qi="15793534762490258745",un=new qe(10).pow(new qe(6));var Um=new qe("18446744073700000000");import Q from"bn.js";function cn(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function _n(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Wn(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function vt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Gi(i,e){return vt(i,e)?null:_n(i,e)}function Ui(i,e){return vt(i,e)?null:Wn(i,e)}var Zm=Buffer.from("amm_config","utf8"),cs=Buffer.from("pool","utf8"),ls=Buffer.from("pool_vault","utf8"),ms=Buffer.from("pool_reward_vault","utf8"),Xi=Buffer.from("position","utf8"),ps=Buffer.from("tick_array","utf8"),ds=Buffer.from("operation","utf8"),fs=Buffer.from("pool_tick_array_bitmap_extension","utf8"),bs=Buffer.from("observation","utf8");function zi(i,e,t,n){return Se([cs,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Vn(i,e,t){return Se([ls,e.toBuffer(),t.toBuffer()],i)}function Qi(i,e,t){return Se([ms,e.toBuffer(),t.toBuffer()],i)}function $(i,e,t){return Se([ps,e.toBuffer(),cn(t)],i)}function ot(i,e,t,n){return Se([Xi,e.toBuffer(),cn(t),cn(n)],i)}function Oe(i,e){return Se([Xi,e.toBuffer()],i)}function It(i){return Se([Buffer.from("metadata","utf8"),ft.toBuffer(),i.toBuffer()],ft)}function ln(i){return Se([ds],i)}function ke(i,e){return Se([fs,e.toBuffer()],i)}function Yi(i,e){return Se([bs,e.toBuffer()],i)}var Hi=Buffer.from("locked_position","utf8");function Dn(i,e){return Se([Hi,e.toBuffer()],i)}function qn(i,e){return Se([Hi,e.toBuffer()],i)}import{PublicKey as Ve}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Zi}from"@solana/spl-token";import le from"bn.js";import je from"bn.js";var Ft=class{static getfeeGrowthInside(e,t,n){let r=new je(0),o=new je(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let a=new je(0),s=new je(0);e.tickCurrent<n.tick?(a=n.feeGrowthOutsideX64A,s=n.feeGrowthOutsideX64B):(a=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),s=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=X.wrappingSubU128(X.wrappingSubU128(e.feeGrowthGlobalX64A,r),a),c=X.wrappingSubU128(X.wrappingSubU128(e.feeGrowthGlobalX64B,o),s);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:a}=this.getfeeGrowthInside(e,n,r),s=X.mulDivFloor(X.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,We),u=t.tokenFeesOwedA.add(s),c=X.mulDivFloor(X.wrappingSubU128(a,t.feeGrowthInsideLastX64B),t.liquidity,We),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:a}=this.getfeeGrowthInside(e,n,r),s=X.mulDivFloor(X.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,We),u=t.tokenFeesOwedA.add(s),c=X.mulDivFloor(X.wrappingSubU128(a,t.feeGrowthInsideLastX64B),t.liquidity,We),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],a=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let s=0;s<a.length;s++){let u=a[s],c=t.rewardInfos[s],l=X.wrappingSubU128(u,c.growthInsideLastX64),m=X.mulDivFloor(l,t.liquidity,We),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static GetPositionRewards(e,t,n,r){let o=[],a=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let s=0;s<a.length;s++){let u=a[s],c=t.rewardInfos[s],l=X.wrappingSubU128(u,c.growthInsideLastX64),m=X.mulDivFloor(l,t.liquidity,We),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let a=0;a<r.length;a++){let s=new je(0);t.liquidityGross.eqn(0)?s=r[a].rewardGrowthGlobalX64:e<t.tick?s=r[a].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[a]):s=t.rewardGrowthsOutsideX64[a];let u=new je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[a]:u=r[a].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[a])),o.push(X.wrappingSubU128(X.wrappingSubU128(r[a].rewardGrowthGlobalX64,s),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let a=0;a<r.length;a++){let s=new je(0);t.liquidityGross.eqn(0)?s=r[a].rewardGrowthGlobalX64:e<t.tick?s=r[a].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[a]):s=t.rewardGrowthsOutsideX64[a];let u=new je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[a]:u=r[a].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[a])),o.push(X.wrappingSubU128(X.wrappingSubU128(r[a].rewardGrowthGlobalX64,s),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:a}){var f,y,B,T;let s=U.priceToSqrtPriceX64(new O(e.price),e.mintA.decimals,e.mintB.decimals),u=U.getSqrtPriceX64FromTick(t.tickLower),c=U.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=Z.getAmountsFromLiquidity(s,u,c,n,o),[p,d]=[ge(m.amountA,(f=e.mintA.extensions)==null?void 0:f.feeConfig,a,!0),ge(m.amountB,(y=e.mintB.extensions)==null?void 0:y.feeConfig,a,!0)],[g,b]=[ge(new je(new O(m.amountA.toString()).mul(l).toFixed(0)),(B=e.mintA.extensions)==null?void 0:B.feeConfig,a,!0),ge(new je(new O(m.amountB.toString()).mul(l).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,a,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:g,amountSlippageB:b,expirationTime:it(p.expirationTime,d.expirationTime)}}};var ys=15,H=class{static async getTickArrays(e,t,n,r,o,a,s){let u=[],c=E.getTickArrayStartIndexByTick(r,o),l=E.getInitializedTickArrayInRange(a,s,o,c,Math.floor(ys/2));for(let d=0;d<l.length;d++){let{publicKey:g}=$(t,n,l[d]);u.push(g)}let m=(await pt(e,u)).map(d=>d!==null?_t.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let g=m[d];g!==null&&(p[g.startTickIndex]=te(j({},g),{address:u[d]}))}return p}static nextInitializedTick(e,t,n,r,o,a){let{initializedTick:s,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,a);for(;s==null||s.liquidityGross.lten(0);){if(c=E.getNextTickArrayStartIndex(c,o,a),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,a);[s,u,c]=[m,p,d]}if(s==null)throw new Error("No invaild tickArray cache");return{nextTick:s,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let a=Math.floor(e/H.tickCount(t)),s=n?E.searchLowBitFromStart(r,o,a-1,1,t):E.searchHightBitFromStart(r,o,a+1,1,t);return s.length>0?{isExist:!0,nextStartIndex:s[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let s=Te-1;for(;s>=0;){let u=n.ticks[s];if(u.liquidityGross.gtn(0)){o=u;break}s=s-1}}else{let s=0;for(;s<Te;){let u=n.ticks[s];if(u.liquidityGross.gtn(0)){o=u;break}s=s+1}}let{publicKey:a}=$(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:a,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,a){let s=E.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-s)/o),c=n[s];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:s};let l;if(a)for(;u>=0;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<Te;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=$(e,t,s);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(E.checkIsOutOfBoundary(e)){if(e>Le)return!1;let n=E.getTickArrayStartIndexByTick(Ne,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Te*e}};var Gn=14,st=class{static maxTickInTickarrayBitmap(e){return e*Te*gt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!H.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),a=r?t-H.tickCount(n):t+H.tickCount(n);if(a<-o||a>=o)return{isInit:!1,tickIndex:t};let s=n*Te,u=a/s+512;a<0&&a%s!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=Gi(1024,l);if(m!==null){let p=(c-m-512)*s;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Ui(1024,l);if(m!==null){let p=(c+m-512)*s;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-H.tickCount(n)}}}},Wt=class{static getBitmapOffset(e,t){if(!H.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=st.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=st.maxTickInTickarrayBitmap(e),n=-t;if(Le<=t)throw Error(`extensionTickBoundary check error: ${Le}, ${t}`);if(n<=Ne)throw Error(`extensionTickBoundary check error: ${n}, ${Ne}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:E.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=H.tickCount(t),a=n?e-o:e+o,{tickarrayBitmap:s}=this.getBitmap(a,t,r);return this.nextInitializedTickArrayInBitmap(s,a,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:a}=st.getBitmapTickBoundary(t,n),s=this.tickArrayOffsetInBitmap(t,n);if(r){let u=E.mergeTickArrayBitmap(e).shln(gt-1-s),c=vt(512,u)?null:_n(512,u);if(c!==null){let l=t-c*H.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=E.mergeTickArrayBitmap(e).shrn(s),c=vt(512,u)?null:Wn(512,u);if(c!==null){let l=t+c*H.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:a-H.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%st.maxTickInTickarrayBitmap(t),r=Math.floor(n/H.tickCount(t));return e<0&&n!=0&&(r=gt-r),r}};var fe=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o,a=!1){let s=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,s);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:p,amountCalculated:d,accounts:g,sqrtPriceX64:b,feeAmount:f}=Pt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,l,o,a);return u.push(...g),{allTrade:p,expectedAmountOut:d.mul(rt),remainingAccounts:u,executionPrice:b,feeAmount:f}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let a=n.toBase58()===e.mintB.address,s=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,a);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let b=this.preInitializedTickArrayStartIndex(e,a);if(b.isExist){let{publicKey:f}=$(e.programId,e.id,b.nextStartIndex);s.push(f)}}catch{}s.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:g}=Pt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(rt),c,o);return s.push(...p),{expectedAmountIn:m,remainingAccounts:s,executionPrice:d,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=fe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Wt.checkTickArrayIsInit(H.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):E.checkTickArrayIsInitialized(E.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:s}=$(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:s}}let{isExist:o,nextStartIndex:a}=this.nextInitializedTickArrayStartIndex(e,H.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:s}=$(e.programId,e.id,a);return{isExist:!0,startIndex:a,nextAccountMeta:s}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/H.tickCount(e.tickSpacing)),r=t?E.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):E.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=H.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=st.nextInitializedTickArrayStartIndex(E.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:a,tickIndex:s}=Wt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(a)return{isExist:!0,nextStartIndex:s};if(t=s,t<Ne||t>Le)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var s,u,c;let a=[];for(let l=0;l<o.length;l++){let m=o[l],p=(c=(s=t.rewardDefaultInfos[l])==null?void 0:s.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(p===void 0)throw Error("get new reward mint info error");let d=te(j({},m),{perSecond:X.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Ve(p)});if(d.tokenMint.equals(Ve.default))continue;if(n<=d.openTime.toNumber()||r.eq(pe)){a.push(d);continue}let g=new le(Math.min(d.endTime.toNumber(),n)),b=g.sub(d.lastUpdateTime),f=X.mulDivFloor(b,d.emissionsPerSecondX64,r),y=d.rewardGrowthGlobalX64.add(f),B=X.mulDivFloor(b,d.emissionsPerSecondX64,We),T=d.rewardTotalEmissioned.add(B);a.push(te(j({},d),{rewardGrowthGlobalX64:y,rewardTotalEmissioned:T,lastUpdateTime:g}))}return a}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let a=E.getTickArrayStartIndexByTick(o,e);if(a>=n||a<r)return!0}return!1}static tickRange(e){let t=st.maxTickInTickarrayBitmap(e),n=-t;return t>Le&&(t=H.getArrayStartIndex(Le,e)+H.tickCount(e)),n<Ne&&(n=H.getArrayStartIndex(Ne,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!H.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/H.tickCount(t)*gt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Kt(e,t.map(a=>({pubkey:a})),{batchRequest:n}),o={};for(let a of r)a.accountInfo!==null&&(o[a.pubkey.toString()]=ji.decode(a.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=E.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=E.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=$(u.programId,u.id,m);o.push({pubkey:p}),r[p.toString()]=u.id}}let a=await Kt(e,o,{batchRequest:n}),s={};for(let u of a){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;s[c.toString()]===void 0&&(s[c.toString()]={});let l=_t.decode(u.accountInfo.data);s[c.toString()][l.startTickIndex]=te(j({},l),{address:u.pubkey})}return s}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var s;let a=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(a.find(l=>l.equals(c.state.programId))||a.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of a)c.push(Oe(d,p).publicKey);let l=await pt(t,c,{batchRequest:r}),m={};for(let p of l){if(p===null)continue;let d=Un.decode(p.data),g=d.poolId.toString(),b=e.find(L=>L.state.id.toBase58()===g);if(b===void 0)continue;let f=b.state,y=E._getTickPriceLegacy({poolInfo:f,tick:d.tickLower,baseIn:!0}),B=E._getTickPriceLegacy({poolInfo:f,tick:d.tickUpper,baseIn:!0}),{amountA:T,amountB:N}=Z.getAmountsFromLiquidity(f.sqrtPriceX64,y.tickSqrtPriceX64,B.tickSqrtPriceX64,d.liquidity,!1),v=1/(1-Math.sqrt(Math.sqrt(y.price.div(B.price).toNumber())));b.positionAccount=[...(s=b.positionAccount)!=null?s:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:y.price,priceUpper:B.price,amountA:T,amountB:N,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(L=>te(j({},L),{pendingReward:new le(0)})),leverage:v,tokenFeeAmountA:new le(0),tokenFeeAmountB:new le(0)}];let h=await E.getTickArrayAddressByTick(b.state.programId,d.poolId,d.tickLower,b.state.tickSpacing),R=await E.getTickArrayAddressByTick(b.state.programId,d.poolId,d.tickUpper,b.state.tickSpacing);m[`${b.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=h,m[`${b.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=R}if(o){let p=Object.values(m),d=await pt(t,p,{batchRequest:r}),g={};for(let b=0;b<p.length;b++){let f=d[b];if(f===null)continue;let y=p[b].toString();g[y]=_t.decode(f.data)}for(let{state:b,positionAccount:f}of e)if(!!f)for(let y of f){let B=`${b.programId.toString()}-${b.id.toString()}-${y.tickLower}`,T=`${b.programId.toString()}-${b.id.toString()}-${y.tickUpper}`,N=g[m[B].toString()],v=g[m[T].toString()],h=N.ticks[E.getTickOffsetInArray(y.tickLower,b.tickSpacing)],R=v.ticks[E.getTickOffsetInArray(y.tickUpper,b.tickSpacing)],{tokenFeeAmountA:L,tokenFeeAmountB:D}=await Ft.GetPositionFees(b,y,h,R),x=await Ft.GetPositionRewards(b,y,h,R);y.tokenFeeAmountA=L.gte(new le(0))?L:new le(0),y.tokenFeeAmountB=D.gte(new le(0))?D:new le(0);for(let F=0;F<x.length;F++)y.rewardInfos[F].pendingReward=x[F].gte(new le(0))?x[F]:new le(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:a,priceLimit:s=new O(0),catchLiquidityInsufficient:u=!1}){var ye;let c,l=n.toBase58()===e.mintA.address,[m,p]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];s.equals(new O(0))?c=l?He.add(new le(1)):Ze.sub(new le(1)):c=U.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let d=ge(o,m,r,!1),{allTrade:g,expectedAmountOut:b,remainingAccounts:f,executionPrice:y,feeAmount:B}=fe.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((ye=d.fee)!=null?ye:pe),c,u),T=ge(b,p,r,!1),N=U.sqrtPriceX64ToPrice(y,e.mintA.decimals,e.mintB.decimals),v=l?N:new O(1).div(N),h=b.mul(new le(Math.floor((1-a)*1e10))).div(new le(1e10)),R=ge(h,p,r,!1),L=l?e.currentPrice:new O(1).div(e.currentPrice),D=new O(v).sub(L).abs(),x=L,F=new tt(new O(D).mul(10**15).toFixed(0),new O(x).mul(10**15).toFixed(0));return{allTrade:g,realAmountIn:d,amountOut:T,minAmountOut:R,expirationTime:it(d.expirationTime,T.expirationTime),currentPrice:e.currentPrice,executionPrice:v,priceImpact:F,fee:B,remainingAccounts:f,executionPriceX64:y}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:a,catchLiquidityInsufficient:s=!1}){let u=r.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,p]=[new Xe(te(j({},c),{mint:c.address,isToken2022:c.programId===Zi.toBase58()})),new Xe(te(j({},l),{mint:l.address,isToken2022:l.programId===Zi.toBase58()}))],{allTrade:d,realAmountIn:g,amountOut:b,minAmountOut:f,expirationTime:y,currentPrice:B,executionPrice:T,priceImpact:N,fee:v,remainingAccounts:h,executionPriceX64:R}=fe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Ve(c.address),amountIn:n,slippage:o,epochInfo:a,catchLiquidityInsufficient:s}),L=te(j({},g),{amount:new we(m,g.amount),fee:g.fee===void 0?void 0:new we(m,g.fee)}),D=te(j({},b),{amount:new we(p,b.amount),fee:b.fee===void 0?void 0:new we(p,b.fee)}),x=te(j({},f),{amount:new we(p,f.amount),fee:f.fee===void 0?void 0:new we(p,f.fee)}),F=new Ee({baseToken:m,denominator:new le(10).pow(new le(20+m.decimals)),quoteToken:p,numerator:B.mul(new O(10**(20+p.decimals))).toFixed(0)}),ye=new Ee({baseToken:m,denominator:new le(10).pow(new le(20+m.decimals)),quoteToken:p,numerator:T.mul(new O(10**(20+p.decimals))).toFixed(0)}),se=new we(m,v);return{allTrade:d,realAmountIn:L,amountOut:D,minAmountOut:x,expirationTime:y,currentPrice:F,executionPrice:ye,priceImpact:N,fee:se,remainingAccounts:h,executionPriceX64:R}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountOut:o,slippage:a,priceLimit:s=new O(0)}){var x;let u=n.toBase58()===e.mintA.address,c={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;s.equals(new O(0))?l=u?Ze.sub(new le(1)):He.add(new le(1)):l=U.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let m=ge(o,c[n.toString()],r,!0),{expectedAmountIn:p,remainingAccounts:d,executionPrice:g,feeAmount:b}=fe.getInputAmountAndRemainAccounts(e,t,n,m.amount.sub((x=m.fee)!=null?x:pe),l),f=u?e.mintB.address:e.mintA.address,y=ge(p,c[f],r,!1),B=U.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),T=u?B:new O(1).div(B),N=p.mul(new le(Math.floor((1+a)*1e10))).div(new le(1e10)),v=ge(N,c[f],r,!0),h=u?e.currentPrice:new O(1).div(e.currentPrice),R=new O(T).sub(h).abs(),L=h,D=new tt(new O(R).mul(10**15).toFixed(0),new O(L).mul(10**15).toFixed(0));return{amountIn:y,maxAmountIn:v,realAmountOut:m,expirationTime:it(y.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:T,priceImpact:D,fee:b,remainingAccounts:d}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var g,b,f;let o=e[t],a=E.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),s=E.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(a,o.priceMin),l=Math.min(s,o.priceMax)-u,m=s-a,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[((g=o.rewardApr[0])!=null?g:0)*d,((b=o.rewardApr[1])!=null?b:0)*d,((f=o.rewardApr[2])!=null?f:0)*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:a,positionTickUpperIndex:s,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[ht(e.mintA.address).toString()],p=r[ht(e.mintB.address).toString()],d=e.mintA.decimals,g=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let b=U.priceToSqrtPriceX64(new O(e.price),e.mintA.decimals,e.mintB.decimals),f=U.getSqrtPriceX64FromTick(a),y=U.getSqrtPriceX64FromTick(s),{amountSlippageA:B,amountSlippageB:T}=Z.getAmountsFromLiquidityWithSlippage(b,f,y,t,!1,!1,0),{amountSlippageA:N,amountSlippageB:v}=Z.getAmountsFromLiquidityWithSlippage(b,f,y,o,!1,!1,0),h=new O(B.toString()).div(new O(10).pow(d)).mul(m.value).add(new O(T.toString()).div(new O(10).pow(g)).mul(p.value)),R=new O(N.toString()).div(new O(10).pow(d)).mul(m.value).add(new O(v.toString()).div(new O(10).pow(g)).mul(p.value)),L=new O(1).div(h.add(R)),x=new O(l.volumeFee).mul(365).div(c).mul(L).mul(100).toNumber(),F=3600*24*365,ye=e.rewardDefaultInfos.map(se=>{var ee,$n;let he=se.mint.decimals,de=r[se.mint.address];return u<((ee=se.startTime)!=null?ee:0)||u>(($n=se.endTime)!=null?$n:0)||!se.perSecond||!de||he===void 0?0:new O(de.value).mul(new O(se.perSecond).mul(F)).div(new O(10).pow(he)).mul(L).mul(100).toNumber()});return{feeApr:x,rewardsApr:ye,apr:x+ye.reduce((se,he)=>se+he,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:a,add:s,epochInfo:u,amountHasFee:c}){var y,B;let l=U.priceToSqrtPriceX64(new O(e.price),e.mintA.decimals,e.mintB.decimals),m=U.getSqrtPriceX64FromTick(n),p=U.getSqrtPriceX64FromTick(r),d=s?1-a:1+a,g=ge(o,(y=e[t?"mintA":"mintB"].extensions)==null?void 0:y.feeConfig,u,!c),b=new le(new O(g.amount.sub((B=g.fee)!=null?B:pe).toString()).mul(d).toFixed(0)),f;if(l.lte(m))f=t?Z.getLiquidityFromTokenAmountA(m,p,b,!s):new le(0);else if(l.lte(p)){let T=Z.getLiquidityFromTokenAmountA(l,p,b,!s),N=Z.getLiquidityFromTokenAmountB(m,l,b);f=t?T:N}else f=t?new le(0):Z.getLiquidityFromTokenAmountB(m,p,b);return fe.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:f,slippage:a,add:s})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:a,add:s}){var f,y,B,T;let u=U.getSqrtPriceX64FromTick(n),c=U.getSqrtPriceX64FromTick(r),l=s?1+a:1-a,m=Z.getAmountsFromLiquidity(U.priceToSqrtPriceX64(new O(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,s),[p,d]=[ge(m.amountA,(f=t.mintA.extensions)==null?void 0:f.feeConfig,e,!0),ge(m.amountB,(y=t.mintB.extensions)==null?void 0:y.feeConfig,e,!0)],[g,b]=[ge(m.amountA.muln(l),(B=t.mintA.extensions)==null?void 0:B.feeConfig,e,!0),ge(m.amountB.muln(l),(T=t.mintB.extensions)==null?void 0:T.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:g,amountSlippageB:b,expirationTime:it(p.expirationTime,d.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(u=>!n[u.id]).map(u=>new Ve(u.id));(await pt(e,r)).forEach((u,c)=>{!u||(n[r[c].toBase58()]=mn.decode(u.data))});let a=t.map(u=>ke(new Ve(u.programId),new Ve(u.id)).publicKey),s=await fe.fetchExBitmaps({connection:e,exBitmapAddress:a,batchRequest:!1});return t.reduce((u,c)=>te(j({},u),{[c.id]:te(j({},n[c.id]),{id:new Ve(c.id),version:6,programId:new Ve(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:te(j({},c.config),{id:new Ve(c.config.id),fundOwner:""}),currentPrice:new O(c.price),exBitmapAccount:ke(new Ve(c.programId),new Ve(c.id)).publicKey,exBitmapInfo:s[ke(new Ve(c.programId),new Ve(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber(),rewardInfos:n[c.id].rewardInfos})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var X=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(pe)||(o=o.add(_e)),o}static mulDivFloor(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).add(n.sub(_e)).div(n)}static x64ToDecimal(e,t){return new O(e.toString()).div(O.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new Q(e.mul(O.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(on).sub(t).mod(on)}};function Ie(i,e){return Xn(i.mul(e),64,256)}function gs(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Xn(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var U=class{static sqrtPriceX64ToPrice(e,t,n){return X.x64ToDecimal(e).pow(2).mul(O.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return X.decimalToX64(e.mul(O.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(pe))return e;let o=t.shln(Et);if(r){let a=o,s=o.add(n.mul(e));return s.gte(a)?X.mulDivCeil(a,e,s):X.mulDivRoundingUp(a,_e,a.div(e).add(n))}else{let a=n.mul(e);if(!o.gt(a))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let s=o.sub(a);return X.mulDivCeil(o,e,s)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Et);if(r)return e.add(o.div(t));{let a=X.mulDivRoundingUp(o,_e,t);if(!e.gt(a))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(a)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Ne||e>Le)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new Q("18445821805675395072"):new Q("18446744073709551616");return(t&2)!=0&&(n=Ie(n,new Q("18444899583751176192"))),(t&4)!=0&&(n=Ie(n,new Q("18443055278223355904"))),(t&8)!=0&&(n=Ie(n,new Q("18439367220385607680"))),(t&16)!=0&&(n=Ie(n,new Q("18431993317065453568"))),(t&32)!=0&&(n=Ie(n,new Q("18417254355718170624"))),(t&64)!=0&&(n=Ie(n,new Q("18387811781193609216"))),(t&128)!=0&&(n=Ie(n,new Q("18329067761203558400"))),(t&256)!=0&&(n=Ie(n,new Q("18212142134806163456"))),(t&512)!=0&&(n=Ie(n,new Q("17980523815641700352"))),(t&1024)!=0&&(n=Ie(n,new Q("17526086738831433728"))),(t&2048)!=0&&(n=Ie(n,new Q("16651378430235570176"))),(t&4096)!=0&&(n=Ie(n,new Q("15030750278694412288"))),(t&8192)!=0&&(n=Ie(n,new Q("12247334978884435968"))),(t&16384)!=0&&(n=Ie(n,new Q("8131365268886854656"))),(t&32768)!=0&&(n=Ie(n,new Q("3584323654725218816"))),(t&65536)!=0&&(n=Ie(n,new Q("696457651848324352"))),(t&131072)!=0&&(n=Ie(n,new Q("26294789957507116"))),(t&262144)!=0&&(n=Ie(n,new Q("37481735321082"))),e>0&&(n=_i.div(n)),n}static getTickFromPrice(e,t,n){return U.getTickFromSqrtPriceX64(U.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ze)||e.lt(He))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new Q(t-64),r=gs(n,32,128),o=new Q("8000000000000000","hex"),a=0,s=new Q(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new Q(0))&&a<Wi;){u=u.mul(u);let g=u.shrn(127);u=u.shrn(63+g.toNumber()),s=s.add(o.mul(g)),o=o.shrn(1),a+=1}let c=s.shrn(32),m=r.add(c).mul(new Q(Vi)),p=Xn(m.sub(new Q(Di)),64,128).toNumber(),d=Xn(m.add(new Q(qi)),64,128).toNumber();return p==d?p:U.getSqrtPriceX64FromTick(d).lte(e)?d:p}},kt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let a=U.getTickFromSqrtPriceX64(U.priceToSqrtPriceX64(e,n,r))/t;return a<0?a=Math.floor(a):a=Math.ceil(a),a*t}static roundPriceWithTickspacing(e,t,n,r){let o=kt.getTickWithPriceAndTickspacing(e,t,n,r),a=U.getSqrtPriceX64FromTick(o);return U.sqrtPriceX64ToPrice(a,n,r)}},Z=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Et),a=t.sub(e);return r?X.mulDivRoundingUp(X.mulDivCeil(o,a,t),_e,e):X.mulDivFloor(o,a,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");return r?X.mulDivCeil(n,t.sub(e),We):X.mulDivFloor(n,t.sub(e),We)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),a=t.sub(e),s=o.div(a);return r?X.mulDivRoundingUp(s,_e,Fn):s.shrn(Et)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),X.mulDivFloor(n,Fn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return Z.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let a=Z.getLiquidityFromTokenAmountA(e,n,r,!1),s=Z.getLiquidityFromTokenAmountB(t,e,o);return a.lt(s)?a:s}else return Z.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:Z.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new Q(0)};if(e.lt(n)){let a=Z.getTokenAmountAFromLiquidity(e,n,r,o),s=Z.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:a,amountB:s}}else return{amountA:new Q(0),amountB:Z.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,a,s){let{amountA:u,amountB:c}=Z.getAmountsFromLiquidity(e,t,n,r,a),l=o?1+s:1-s,m=new Q(new O(u.toString()).mul(l).toFixed(0)),p=new Q(new O(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:a,epochInfo:s,amountAddFee:u}){var B,T,N,v;let c=U.priceToSqrtPriceX64(new O(e.price),e.mintA.decimals,e.mintB.decimals),l=U.getSqrtPriceX64FromTick(t),m=U.getSqrtPriceX64FromTick(n),p=a?1+o:1-o,d=Z.getAmountsFromLiquidity(c,l,m,r,a),[g,b]=[ge(d.amountA,(B=e.mintA.extensions)==null?void 0:B.feeConfig,s,u),ge(d.amountB,(T=e.mintB.extensions)==null?void 0:T.feeConfig,s,u)],[f,y]=[ge(new Q(new O(d.amountA.toString()).mul(p).toFixed(0)),(N=e.mintA.extensions)==null?void 0:N.feeConfig,s,u),ge(new Q(new O(d.amountB.toString()).mul(p).toFixed(0)),(v=e.mintB.extensions)==null?void 0:v.feeConfig,s,u)];return{liquidity:r,amountA:g,amountB:b,amountSlippageA:f,amountSlippageB:y,expirationTime:it(g.expirationTime,b.expirationTime)}}},Pt=class{static swapCompute(e,t,n,r,o,a,s,u,c,l,m,p,d,g,b=!1){if(p.eq(pe))throw new Error("amountSpecified must not be 0");if(g||(g=a?He.add(_e):Ze.sub(_e)),a){if(g.lt(He))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(Ze))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(pe),y={amountSpecifiedRemaining:p,amountCalculated:pe,sqrtPriceX64:m,tick:c>d?Math.min(d+H.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new Q(0)},B=d,T=n[d],N=0,v=!a&&T.startTickIndex===y.tick;for(;!y.amountSpecifiedRemaining.eq(pe)&&!y.sqrtPriceX64.eq(g);){N>10;let h={};h.sqrtPriceStartX64=y.sqrtPriceX64;let R=E.nextInitTick(T,y.tick,l,a,v),L=R||null,D=null;if(!(L!=null&&L.liquidityGross.gtn(0))){let F=fe.nextInitializedTickArrayStartIndex({tickCurrent:y.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},B,a);if(!F.isExist){if(b)return{allTrade:!1,amountSpecifiedRemaining:y.amountSpecifiedRemaining,amountCalculated:y.amountCalculated,feeAmount:y.feeAmount,sqrtPriceX64:y.sqrtPriceX64,liquidity:y.liquidity,tickCurrent:y.tick,accounts:y.accounts};throw Error("swapCompute LiquidityInsufficient")}B=F.nextStartIndex;let{publicKey:ye}=$(e,t,B);D=ye,T=n[B];try{L=E.firstInitializedTick(T,a)}catch{throw Error("not found next tick info")}}h.tickNext=L.tick,h.initialized=L.liquidityGross.gtn(0),d!==B&&D&&(y.accounts.push(D),d=B),h.tickNext<Ne?h.tickNext=Ne:h.tickNext>Le&&(h.tickNext=Le),h.sqrtPriceNextX64=U.getSqrtPriceX64FromTick(h.tickNext);let x;if(a&&h.sqrtPriceNextX64.lt(g)||!a&&h.sqrtPriceNextX64.gt(g)?x=g:x=h.sqrtPriceNextX64,[y.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=Pt.swapStepCompute(y.sqrtPriceX64,x,y.liquidity,y.amountSpecifiedRemaining,s,a),y.feeAmount=y.feeAmount.add(h.feeAmount),f?(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),y.amountCalculated=y.amountCalculated.sub(h.amountOut)):(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.add(h.amountOut),y.amountCalculated=y.amountCalculated.add(h.amountIn.add(h.feeAmount))),y.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let F=L.liquidityNet;a&&(F=F.mul(rt)),y.liquidity=Z.addDelta(y.liquidity,F)}v=h.tickNext!=y.tick&&!a&&T.startTickIndex===h.tickNext,y.tick=a?h.tickNext-1:h.tickNext}else if(y.sqrtPriceX64!=h.sqrtPriceStartX64){let F=U.getTickFromSqrtPriceX64(y.sqrtPriceX64);v=F!=y.tick&&!a&&T.startTickIndex===F,y.tick=F}++N}try{let{nextStartIndex:h,isExist:R}=H.nextInitializedTickArray(y.tick,l,a,r,o);R&&d!==h&&(y.accounts.push($(e,t,h).publicKey),d=h)}catch{}return{allTrade:!0,amountSpecifiedRemaining:pe,amountCalculated:y.amountCalculated,feeAmount:y.feeAmount,sqrtPriceX64:y.sqrtPriceX64,liquidity:y.liquidity,tickCurrent:y.tick,accounts:y.accounts}}static swapStepCompute(e,t,n,r,o,a){let s={sqrtPriceX64Next:new Q(0),amountIn:new Q(0),amountOut:new Q(0),feeAmount:new Q(0)},u=r.gte(pe);if(u){let l=X.mulDivFloor(r,un.sub(new Q(o.toString())),un);s.amountIn=a?Z.getTokenAmountAFromLiquidity(t,e,n,!0):Z.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=U.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?Z.getTokenAmountBFromLiquidity(t,e,n,!1):Z.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(rt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=U.getNextSqrtPriceX64FromOutput(e,n,r.mul(rt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=Z.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=Z.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:Z.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:Z.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(rt))&&(s.amountOut=r.mul(rt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=X.mulDivCeil(s.amountIn,new Q(o),un.sub(new Q(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Te=60,gt=512,E=class{static getTickArrayAddressByTick(e,t,n,r){let o=E.getTickArrayStartIndexByTick(n,r),{publicKey:a}=$(e,t,o);return a}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=E.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=Te)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=H.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*H.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Te,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*Te,o=Math.floor(t/r)+512,a=Math.abs(o);return{isInitialized:e.testn(a),startIndex:(a-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Te:e+t*Te}static mergeTickArrayBitmap(e){let t=new Ps(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let a=Math.floor(r/(n*Te));return[...E.searchLowBitFromStart(e,t,a-1,o,n),...E.searchHightBitFromStart(e,t,a,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return E.searchHightBitFromStart(e,t,-7680,gt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let a=[],s=E.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of s){let{publicKey:c}=$(e,t,u);a.push({tickArrayStartIndex:u,tickArrayAddress:c})}return a}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let a=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>E.mergeTickArrayBitmap(c)),s=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(a[c].testn(l)&&s.push(n),n--,s.length===r)break}let u=H.tickCount(o);return s.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let a=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>E.mergeTickArrayBitmap(c)),s=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(a[c].testn(l)&&s.push(n),n++,s.length===r)break}let u=H.tickCount(o);return s.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Ne||e>Le}static nextInitTick(e,t,n,r,o){if(H.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let s=Math.floor((t-e.startTickIndex)/n);if(r)for(;s>=0;){if(e.ticks[s].liquidityGross.gtn(0))return e.ticks[s];s=s-1}else for(o||(s=s+1);s<Te;){if(e.ticks[s].liquidityGross.gtn(0))return e.ticks[s];s=s+1}return null}static firstInitializedTick(e,t){if(t){let n=Te-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Te;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=U.getSqrtPriceX64FromTick(t),o=U.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new O(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new O(1).div(t),o=kt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),a=U.getSqrtPriceX64FromTick(o),s=U.sqrtPriceX64ToPrice(a,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:s}:{tick:o,price:new O(1).div(s)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=U.getSqrtPriceX64FromTick(t),o=U.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new O(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new O(1).div(t),o=kt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),a=U.getSqrtPriceX64FromTick(o),s=U.sqrtPriceX64ToPrice(a,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:s}:{tick:o,price:new O(1).div(s)}}};var ks=M([Pe(8),V("bump"),yt("index"),S(""),Fe("protocolFeeRate"),Fe("tradeFeeRate"),yt("tickSpacing"),Y(k(),8,"")]),As=M([Fe("blockTimestamp"),vi("tickCumulative"),Y(k(),4)]),Ji=M([Pe(8),Be("initialized"),k("recentEpoch"),yt("observationIndex"),S("poolId"),Y(As,100,"observations"),Y(k(),4)]),ws=M([V("rewardState"),k("openTime"),k("endTime"),k("lastUpdateTime"),q("emissionsPerSecondX64"),k("rewardTotalEmissioned"),k("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),q("rewardGrowthGlobalX64")]),mn=M([Pe(8),V("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),V("mintDecimalsA"),V("mintDecimalsB"),yt("tickSpacing"),q("liquidity"),q("sqrtPriceX64"),ce("tickCurrent"),Fe(),q("feeGrowthGlobalX64A"),q("feeGrowthGlobalX64B"),k("protocolFeesTokenA"),k("protocolFeesTokenB"),q("swapInAmountTokenA"),q("swapOutAmountTokenB"),q("swapInAmountTokenB"),q("swapOutAmountTokenA"),V("status"),Y(V(),7,""),Y(ws,3,"rewardInfos"),Y(k(),16,"tickArrayBitmap"),k("totalFeesTokenA"),k("totalFeesClaimedTokenA"),k("totalFeesTokenB"),k("totalFeesClaimedTokenB"),k("fundFeesTokenA"),k("fundFeesTokenB"),k("startTime"),Y(k(),15*4-3,"padding")]),Ts=M([q("growthInsideLastX64"),k("rewardAmountOwed")]),Un=M([Pe(8),V("bump"),S("nftMint"),S("poolId"),ce("tickLower"),ce("tickUpper"),q("liquidity"),q("feeGrowthInsideLastX64A"),q("feeGrowthInsideLastX64B"),k("tokenFeesOwedA"),k("tokenFeesOwedB"),Y(Ts,3,"rewardInfos"),Y(k(),8,"")]),rd=M([Pe(8),V("bump"),S("poolId"),ce("tickLowerIndex"),ce("tickUpperIndex"),q("liquidity"),q("feeGrowthInsideLastX64A"),q("feeGrowthInsideLastX64B"),k("tokenFeesOwedA"),k("tokenFeesOwedB"),Y(q(),3,"rewardGrowthInside"),Y(k(),8,"")]),hs=M([ce("tick"),Fi("liquidityNet"),q("liquidityGross"),q("feeGrowthOutsideX64A"),q("feeGrowthOutsideX64B"),Y(q(),3,"rewardGrowthsOutsideX64"),Y(Fe(),13,"")]),_t=M([Pe(8),S("poolId"),ce("startTickIndex"),Y(hs,Te,"ticks"),V("initializedTickCount"),Y(V(),115,"")]),Bs=M([Pe(329),Y(S(),100,"whitelistMints")]),ji=M([Pe(8),S("poolId"),Y(Y(k(),8),Gn,"positiveTickArrayBitmap"),Y(Y(k(),8),Gn,"negativeTickArrayBitmap")]),od=M([k(),V("bump"),S("owner"),S("poolId"),S("positionId"),S("nftAccount"),Y(k(),8)]),sd=M([Pe(8),V("bump"),S("lockOwner"),S("poolId"),S("positionId"),S("nftAccount"),S("lockNftMint"),k("recentEpoch"),Y(k(),8)]);Ji.span;var $i=ae("Raydium_Clmm"),De={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],openPositionWithTokenEx:[77,255,174,82,125,29,201,46],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},er=[188,37,179,131,82,150,84,73],tr=[16,72,250,198,14,162,212,19],At=class{static createPoolInstruction(e,t,n,r,o,a,s,u,c,l,m,p,d){let g=M([q("sqrtPriceX64"),k("zero")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1},{pubkey:Ye,isSigner:!1,isWritable:!1}],f=Buffer.alloc(g.span);g.encode({sqrtPriceX64:d,zero:pe},f);let y=Buffer.from([...De.createPool,...f]);return new Ke({keys:b,programId:e,data:y})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:r,mintB:o,ammConfigId:a,initialPriceX64:s}=e,[u,c]=[new I(r.address),new I(o.address)],{publicKey:l}=zi(t,a,u,c),{publicKey:m}=Yi(t,l),{publicKey:p}=Vn(t,l,u),{publicKey:d}=Vn(t,l,c),g=ke(t,l).publicKey,b=[this.createPoolInstruction(t,l,n,a,m,u,p,new I(r.programId||ie),c,d,new I(o.programId||ie),g,s)];return{signers:[],instructions:b,instructionTypes:[ne.CreateAccount,ne.ClmmCreatePool],address:{poolId:l,observationId:m,exBitmapAccount:g,mintAVault:p,mintBVault:d},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,a,s,u,c,l,m,p,d,g,b,f,y,B,T,N,v,h,R,L,D,x){let F=M([ce("tickLowerIndex"),ce("tickUpperIndex"),ce("tickArrayLowerStartIndex"),ce("tickArrayUpperStartIndex"),q("liquidity"),k("amountMaxA"),k("amountMaxB"),Be("withMetadata"),V("optionBaseFlag"),Be("baseFlag")]),ye=[...x?[{pubkey:x,isSigner:!1,isWritable:!0}]:[]],se=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Ye,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:Vt,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:be,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...ye],he=Buffer.alloc(F.span);F.encode({tickLowerIndex:B,tickUpperIndex:T,tickArrayLowerStartIndex:N,tickArrayUpperStartIndex:v,liquidity:h,amountMaxA:R,amountMaxB:L,withMetadata:D==="create",baseFlag:!1,optionBaseFlag:0},he);let de=Buffer.from([...De.openPosition,...he]);return new Ke({keys:se,programId:e,data:de})}static openPositionFromLiquidityInstruction22(e,t,n,r,o,a,s,u,c,l,m,p,d,g,b,f,y,B,T,N,v,h,R,L,D){let x=M([ce("tickLowerIndex"),ce("tickUpperIndex"),ce("tickArrayLowerStartIndex"),ce("tickArrayUpperStartIndex"),q("liquidity"),k("amountMaxA"),k("amountMaxB"),Be("withMetadata"),V("optionBaseFlag"),Be("baseFlag")]),F=[...D?[{pubkey:D,isSigner:!1,isWritable:!0}]:[]],ye=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:Ye,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:Vt,isSigner:!1,isWritable:!1},{pubkey:be,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...F],se=Buffer.alloc(x.span);x.encode({tickLowerIndex:y,tickUpperIndex:B,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:N,liquidity:v,amountMaxA:h,amountMaxB:R,withMetadata:L==="create",baseFlag:!1,optionBaseFlag:0},se);let he=Buffer.from([...De.openPositionWithTokenEx,...se]);return new Ke({keys:ye,programId:e,data:he})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:a,amountMaxA:s,amountMaxB:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let p=[],[d,g]=[new I(e.programId),new I(e.id)],b;if(l)b=new I((await l(1))[0]);else{let D=pn.generate();p.push(D),b=D.publicKey}let f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:B}=$(d,g,f),{publicKey:T}=$(d,g,y),{publicKey:N}=m?re(n.wallet,b,be):re(n.wallet,b,ie),{publicKey:v}=It(b),{publicKey:h}=Oe(d,b),{publicKey:R}=ot(d,g,r,o),L=m?this.openPositionFromLiquidityInstruction22(d,n.feePayer,g,n.wallet,b,N,R,B,T,h,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),r,o,f,y,a,s,u,c,fe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?ke(d,g).publicKey:void 0):this.openPositionFromLiquidityInstruction(d,n.feePayer,g,n.wallet,b,N,v,R,B,T,h,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),r,o,f,y,a,s,u,c,fe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?ke(d,g).publicKey:void 0);return{signers:p,instructions:[L],instructionTypes:[ne.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:B,tickArrayUpper:T,positionNftAccount:N,metadataAccount:v,personalPosition:h,protocolPosition:R}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:a,baseAmount:s,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let p=[],[d,g]=[new I(e.programId),new I(e.id)],b;if(l)b=new I((await l(1))[0]);else{let D=pn.generate();p.push(D),b=D.publicKey}let f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:B}=$(d,g,f),{publicKey:T}=$(d,g,y),{publicKey:N}=m?re(n.wallet,b,be):re(n.wallet,b,ie),{publicKey:v}=It(b),{publicKey:h}=Oe(d,b),{publicKey:R}=ot(d,g,r,o),L=m?this.openPositionFromBaseInstruction22(d,n.feePayer,g,n.wallet,b,N,R,B,T,h,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),r,o,f,y,c,a,s,u,fe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?ke(d,g).publicKey:void 0):this.openPositionFromBaseInstruction(d,n.feePayer,g,n.wallet,b,N,v,R,B,T,h,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),r,o,f,y,c,a,s,u,fe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?ke(d,g).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:B,tickArrayUpper:T,positionNftAccount:N,metadataAccount:v,personalPosition:h,protocolPosition:R},instructions:[L],signers:p,instructionTypes:[ne.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,a,s,u,c,l,m,p,d,g,b,f,y,B,T,N,v,h,R,L,D,x){let F=M([ce("tickLowerIndex"),ce("tickUpperIndex"),ce("tickArrayLowerStartIndex"),ce("tickArrayUpperStartIndex"),q("liquidity"),k("amountMaxA"),k("amountMaxB"),Be("withMetadata"),V("optionBaseFlag"),Be("baseFlag")]),ye=[...x?[{pubkey:x,isSigner:!1,isWritable:!0}]:[]],se=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Ye,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:Vt,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:be,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...ye],he=Buffer.alloc(F.span);F.encode({tickLowerIndex:B,tickUpperIndex:T,tickArrayLowerStartIndex:N,tickArrayUpperStartIndex:v,liquidity:new zn(0),amountMaxA:R==="MintA"?L:D,amountMaxB:R==="MintA"?D:L,withMetadata:h==="create",baseFlag:R==="MintA",optionBaseFlag:1},he);let de=Buffer.from([...De.openPosition,...he]);return new Ke({keys:se,programId:e,data:de})}static openPositionFromBaseInstruction22(e,t,n,r,o,a,s,u,c,l,m,p,d,g,b,f,y,B,T,N,v,h,R,L,D){let x=M([ce("tickLowerIndex"),ce("tickUpperIndex"),ce("tickArrayLowerStartIndex"),ce("tickArrayUpperStartIndex"),q("liquidity"),k("amountMaxA"),k("amountMaxB"),Be("withMetadata"),V("optionBaseFlag"),Be("baseFlag")]),F=[...D?[{pubkey:D,isSigner:!1,isWritable:!0}]:[]],ye=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:Ye,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:Vt,isSigner:!1,isWritable:!1},{pubkey:be,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...F],se=Buffer.alloc(x.span);x.encode({tickLowerIndex:y,tickUpperIndex:B,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:N,liquidity:new zn(0),amountMaxA:h==="MintA"?R:L,amountMaxB:h==="MintA"?L:R,withMetadata:v==="create",baseFlag:h==="MintA",optionBaseFlag:1},se);let he=Buffer.from([...De.openPositionWithTokenEx,...se]);return new Ke({keys:ye,programId:e,data:he})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:a,amountMaxA:s,amountMaxB:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let p,d=[];if(l)p=new I((await l(1))[0]);else{let D=pn.generate();d.push(D),p=D.publicKey}let[g,b]=[new I(e.programId),new I(e.id)],f=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:B}=$(g,b,f),{publicKey:T}=$(g,b,y),{publicKey:N}=m?re(n.wallet,p,be):re(n.wallet,p,ie),{publicKey:v}=It(p),{publicKey:h}=Oe(g,p),{publicKey:R}=ot(g,b,r,o),L=m?this.openPositionFromLiquidityInstruction22(g,n.wallet,b,n.wallet,p,N,R,B,T,h,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(t.mintA.address),new I(t.mintB.address),r,o,f,y,a,s,u,c,fe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?ke(g,b).publicKey:void 0):this.openPositionFromLiquidityInstruction(g,n.wallet,b,n.wallet,p,N,v,R,B,T,h,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(t.mintA.address),new I(t.mintB.address),r,o,f,y,a,s,u,c,fe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?ke(g,b).publicKey:void 0);return{address:{nftMint:p,tickArrayLower:B,tickArrayUpper:T,positionNftAccount:N,metadataAccount:v,personalPosition:h,protocolPosition:R},instructions:[L],signers:d,instructionTypes:[ne.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o,a){let s=M([]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:at.programId,isSigner:!1,isWritable:!1},{pubkey:a?be:ie,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let l=Buffer.from([...De.closePosition,...c]);return new Ke({keys:u,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r,nft2022:o}){let a=new I(e.programId),s=o?re(n.wallet,r.nftMint,be).publicKey:re(n.wallet,r.nftMint,ie).publicKey,{publicKey:u}=Oe(a,r.nftMint),c=[];return c.push(this.closePositionInstruction(a,n.wallet,r.nftMint,s,u,o)),{address:{positionNftAccount:s,personalPosition:u},signers:[],instructions:c,instructionTypes:[ne.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,a,s,u,c,l,m,p,d,g,b,f,y,B){let T=M([q("liquidity"),k("amountMaxA"),k("amountMaxB"),V("optionBaseFlag"),Be("baseFlag")]),N=[...B?[{pubkey:B,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:be,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...N],h=Buffer.alloc(T.span);T.encode({liquidity:b,amountMaxA:f,amountMaxB:y,optionBaseFlag:0,baseFlag:!1},h);let R=Buffer.from([...De.increaseLiquidity,...h]);return new Ke({keys:v,programId:e,data:R})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:a,amountMaxB:s,nft2022:u}){let[c,l]=[new I(e.programId),new I(e.id)],m=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=$(c,l,m),{publicKey:g}=$(c,l,p),{publicKey:b}=u?re(r.wallet,n.nftMint,be):re(r.wallet,n.nftMint,ie),{publicKey:f}=Oe(c,n.nftMint),{publicKey:y}=ot(c,l,n.tickLower,n.tickUpper),B=this.increasePositionFromLiquidityInstruction(c,r.wallet,b,f,l,y,d,g,r.tokenAccountA,r.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),o,a,s,fe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?ke(c,l).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:g,positionNftAccount:b,personalPosition:f,protocolPosition:y},signers:[],instructions:[B],instructionTypes:[ne.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:a,otherAmountMax:s,nft2022:u}){let[c,l]=[new I(e.programId),new I(e.id)],m=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=$(c,l,m),{publicKey:g}=$(c,l,p),{publicKey:b}=u?re(r.wallet,n.nftMint,be):re(r.wallet,n.nftMint,ie),{publicKey:f}=Oe(c,n.nftMint),{publicKey:y}=ot(c,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:g,positionNftAccount:b,personalPosition:f,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(c,r.wallet,b,f,l,y,d,g,r.tokenAccountA,r.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),o,a,s,fe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?ke(c,l).publicKey:void 0)],signers:[],instructionTypes:[ne.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,a,s,u,c,l,m,p,d,g,b,f,y,B){let T=M([q("liquidity"),k("amountMaxA"),k("amountMaxB"),V("optionBaseFlag"),Be("baseFlag")]),N=[...B?[{pubkey:B,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:be,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...N],h=Buffer.alloc(T.span);T.encode({liquidity:new zn(0),amountMaxA:b==="MintA"?f:y,amountMaxB:b==="MintA"?y:f,baseFlag:b==="MintA",optionBaseFlag:1},h);let R=Buffer.from([...De.increaseLiquidity,...h]);return new Ke({keys:v,programId:e,data:R})}static decreaseLiquidityInstruction(e,t,n,r,o,a,s,u,c,l,m,p,d,g,b,f,y,B,T){let N=M([q("liquidity"),k("amountMinA"),k("amountMinB")]),v=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[],...b.map(D=>[{pubkey:D.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:D.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:D.rewardMint,isSigner:!1,isWritable:!1}]).flat()],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:be,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...v],R=Buffer.alloc(N.span);N.encode({liquidity:f,amountMinA:y,amountMinB:B},R);let L=Buffer.from([...De.decreaseLiquidity,...R]);return new Ke({keys:h,programId:e,data:L})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:a,amountMinB:s,programId:u,nft2022:c}){let[l,m]=[new I(e.programId),new I(e.id)],p=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:g}=$(l,m,p),{publicKey:b}=$(l,m,d),{publicKey:f}=c?re(r.wallet,n.nftMint,be):re(r.wallet,n.nftMint,u),{publicKey:y}=Oe(l,n.nftMint),{publicKey:B}=ot(l,m,n.tickLower,n.tickUpper),T=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)T.push({poolRewardVault:new I(t.rewardInfos[h].vault),ownerRewardVault:r.rewardAccounts[h],rewardMint:new I(e.rewardDefaultInfos[h].mint.address)});let N=[],v=this.decreaseLiquidityInstruction(l,r.wallet,f,y,m,B,g,b,r.tokenAccountA,r.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),T,o,a,s,fe.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[p,d])?ke(l,m).publicKey:void 0);return N.push(v),{address:{tickArrayLower:g,tickArrayUpper:b,positionNftAccount:f,personalPosition:y,protocolPosition:B},signers:[],instructions:N,instructionTypes:[ne.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,a,s,u,c,l,m,p,d,g,b,f,y){let B=M([k("amount"),k("otherAmountThreshold"),q("sqrtPriceLimitX64"),Be("isBaseInput")]),T=[...y?[{pubkey:y,isSigner:!1,isWritable:!0}]:[],...m.map(R=>({pubkey:R,isSigner:!1,isWritable:!0}))],N=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:be,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...T],v=Buffer.alloc(B.span);B.encode({amount:d,otherAmountThreshold:g,sqrtPriceLimitX64:b,isBaseInput:f},v);let h=Buffer.from([...De.swap,...v]);return new Ke({keys:N,programId:e,data:h})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:a,amountOutMin:s,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new I(e.programId),new I(e.id)],[p,d]=[new I(t.vault.A),new I(t.vault.B)],[g,b]=[new I(e.mintA.address),new I(e.mintB.address)],f=e.mintA.address===o.toString(),y=[this.swapInstruction(l,r.wallet,m,new I(e.config.id),f?r.tokenAccountA:r.tokenAccountB,f?r.tokenAccountB:r.tokenAccountA,f?p:d,f?d:p,f?g:b,f?b:g,c,n,a,s,u,!0,ke(l,m).publicKey)];return{signers:[],instructions:y,instructionTypes:[ne.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,outputMint:o,amountOut:a,amountInMax:s,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new I(e.programId),new I(e.id)],[p,d]=[new I(t.vault.A),new I(t.vault.B)],[g,b]=[new I(e.mintA.address),new I(e.mintB.address)],f=e.mintA.address===o.toBase58(),y=[this.swapInstruction(l,r.wallet,m,new I(e.config.id),f?r.tokenAccountB:r.tokenAccountA,f?r.tokenAccountA:r.tokenAccountB,f?d:p,f?p:d,f?b:g,f?g:b,c,n,a,s,u,!1,ke(l,m).publicKey)];return{signers:[],instructions:y,instructionTypes:[ne.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,a,s,u,c,l,m,p){let d=M([k("openTime"),k("endTime"),q("emissionsPerSecondX64")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1},{pubkey:Ye,isSigner:!1,isWritable:!1}],b=Buffer.alloc(d.span);d.encode({openTime:ue(l),endTime:ue(m),emissionsPerSecondX64:p},b);let f=Buffer.from([...De.initReward,...b]);return new Ke({keys:g,programId:e,data:f})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,a]=[new I(e.programId),new I(e.id)],s=Qi(o,a,r.mint).publicKey,u=ln(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,a,u,new I(e.config.id),n.tokenAccount,r.programId,r.mint,s,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:s,operationId:u},signers:[],instructions:c,instructionTypes:[ne.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,a,s,u,c,l,m,p){let d=M([V("rewardIndex"),q("emissionsPerSecondX64"),k("openTime"),k("endTime")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:be,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],b=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:ue(l),endTime:ue(m)},b);let f=Buffer.from([...De.setRewardEmissions,...b]);return new Ke({keys:g,programId:e,data:f})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,a]=[new I(e.programId),new I(e.id)],s,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===r.mint.toString()&&(s=p,u=new I(t.rewardInfos[p].vault),c=new I(t.rewardInfos[p].mint.address));(s===void 0||u===void 0)&&$i.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=ln(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,a,l,new I(e.config.id),n.tokenAccount,u,c,s,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[ne.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,a,s){let u=M([V("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:be,isSigner:!1,isWritable:!1},{pubkey:$t,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:s},l);let m=Buffer.from([...De.collectReward,...l]);return new Ke({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,a]=[new I(e.programId),new I(e.id)],s,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(s=l,u=new I(t.rewardInfos[l].vault));(s===void 0||u===void 0)&&$i.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,a,n.tokenAccount,u,r,s)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[ne.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:r,wallet:o,nftMint:a,nft2022:s,getEphemeralSigners:u}){let c=[],l;if(u)l=new I((await u(1))[0]);else{let y=pn.generate();c.push(y),l=y.publicKey}let m=s?re(o,a,be).publicKey:re(o,a,ie).publicKey,{publicKey:p}=Oe(n,a),d=qn(e,l).publicKey,g=re(o,l,ie).publicKey,b=It(l).publicKey,f=At.lockPositionInstructionV2({programId:e,auth:t,payer:r,positionOwner:o,lockOwner:o,positionNftAccount:m,positionId:p,lockPositionId:d,lockNftMint:l,lockNftAccount:g,metadataAccount:b,withMetadata:!0,nft2022:s,positionNftMint:a,authPositionNftAccount:re(t,a,s?be:ie).publicKey,positionNftProgram:s?be:ie});return{address:{positionId:p,lockPositionId:d,lockNftAccount:g,lockNftMint:l,positionNftAccount:m,metadataAccount:b},instructions:[f],signers:c,instructionTypes:[ne.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:r,lockOwner:o,positionNftAccount:a,positionId:s,positionNftMint:u,authPositionNftAccount:c,positionNftProgram:l,lockPositionId:m,lockNftMint:p,lockNftAccount:d,metadataAccount:g,withMetadata:b}){let f=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!0,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:Vt,isSigner:!1,isWritable:!1},{pubkey:Ye,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1}],y=M([Be("withMetadata")]),B=Buffer.alloc(y.span);y.encode({withMetadata:b},B);let T=Buffer.from([...er,...B]);return new Ke({keys:f,programId:e,data:T})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:r,positionNft:o}){let{publicKey:a}=re(r,o,ie),{publicKey:s}=Oe(n,o),u=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Dn(e,s).publicKey,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1}];return new Ke({keys:u,programId:e,data:Buffer.from(er)})}static harvestLockPositionInstruction(e){let[t,n]=[new I(e.poolKeys.programId),new I(e.poolKeys.id)],r=E.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),o=E.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:a}=$(t,n,r),{publicKey:s}=$(t,n,o),{publicKey:u}=re(e.owner,e.ownerPosition.nftMint,ie),{publicKey:c}=Oe(t,e.ownerPosition.nftMint),{publicKey:l}=ot(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),m=[];for(let g=0;g<e.poolKeys.rewardInfos.length;g++)m.push({poolRewardVault:new I(e.poolKeys.rewardInfos[g].vault),ownerRewardVault:e.ownerRewardAccounts[g],rewardMint:new I(e.poolKeys.rewardInfos[g].mint.address)});let p=[...m.map(g=>[{pubkey:g.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:g.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:g.rewardMint,isSigner:!1,isWritable:!1}]).flat()],d=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:Dn(e.programId,c).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:new I(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new I(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:be,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:new I(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new I(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...p];return new Ke({keys:d,programId:e.programId,data:Buffer.from(tr)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:r,lockOwner:o,lockNftMint:a,lockNftAccount:s,positionNftAccount:u,positionId:c,poolId:l,protocolPosition:m,vaultA:p,vaultB:d,tickArrayLower:g,tickArrayUpper:b,userVaultA:f,userVaultB:y,mintA:B,mintB:T,rewardAccounts:N,exTickArrayBitmap:v}){let h=[...v?[{pubkey:v,isSigner:!1,isWritable:!0}]:[],...N.map(L=>[{pubkey:L.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.rewardMint,isSigner:!1,isWritable:!1}]).flat()],R=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:be,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:B,isSigner:!1,isWritable:!1},{pubkey:T,isSigner:!1,isWritable:!1},...h];return new Ke({keys:R,programId:e,data:Buffer.from(tr)})}};var kf=M([Pe(8),V("bump"),Be("disableCreatePool"),yt("index"),k("tradeFeeRate"),k("protocolFeeRate"),k("fundFeeRate"),k("createPoolFee"),S("protocolOwner"),S("fundOwner"),Y(k(),16)]),Ss=M([Pe(8),S("configId"),S("poolCreator"),S("vaultA"),S("vaultB"),S("mintLp"),S("mintA"),S("mintB"),S("mintProgramA"),S("mintProgramB"),S("observationId"),V("bump"),V("status"),V("lpDecimals"),V("mintDecimalA"),V("mintDecimalB"),k("lpAmount"),k("protocolFeesMintA"),k("protocolFeesMintB"),k("fundFeesMintA"),k("fundFeesMintB"),k("openTime"),Y(k(),32)]);import{PublicKey as Of,TransactionInstruction as Ks,Keypair as vf,SystemProgram as Ff}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Wf,TOKEN_2022_PROGRAM_ID as Vf,TOKEN_PROGRAM_ID as Df}from"@solana/spl-token";var Tf=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),hf=Buffer.from("amm_config","utf8"),Bf=Buffer.from("pool","utf8"),If=Buffer.from("pool_lp_mint","utf8"),xf=Buffer.from("pool_vault","utf8"),Sf=Buffer.from("observation","utf8");var Kf=Buffer.from("locked_liquidity","utf8");var Qf=ae("Raydium_cpmm"),Cs={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133]};function ir(i,e,t,n,r,o,a,s,u,c,l,m,p,d,g,b){let f=M([k("amountIn"),k("amounOutMin")]),y=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],B=Buffer.alloc(f.span);return f.encode({amountIn:g,amounOutMin:b},B),new Ks({keys:y,programId:i,data:Buffer.from([...Cs.swapBaseInput,...B])})}import ub from"bn.js";import lb from"decimal.js-light";import Ns from"bn.js";var $f=new Ns(0);import Rs from"bn.js";var ib=new Rs(1e6);import rr from"bn.js";var Ib=new rr(25),xb=new rr(1e4);var Qn=M([V("instruction"),k("amountIn"),k("minAmountOut")]),Yn=M([V("instruction"),k("maxAmountIn"),k("amountOut")]),Nb=M([V("instruction"),V("nonce")]),Ls=M([V("instruction"),V("nonce"),k("startTime")]),Ms=M([k("status"),k("nonce"),k("maxOrder"),k("depth"),k("baseDecimal"),k("quoteDecimal"),k("state"),k("resetFlag"),k("minSize"),k("volMaxCutRatio"),k("amountWaveRatio"),k("baseLotSize"),k("quoteLotSize"),k("minPriceMultiplier"),k("maxPriceMultiplier"),k("systemDecimalValue"),k("minSeparateNumerator"),k("minSeparateDenominator"),k("tradeFeeNumerator"),k("tradeFeeDenominator"),k("pnlNumerator"),k("pnlDenominator"),k("swapFeeNumerator"),k("swapFeeDenominator"),k("baseNeedTakePnl"),k("quoteNeedTakePnl"),k("quoteTotalPnl"),k("baseTotalPnl"),k("poolOpenTime"),k("punishPcAmount"),k("punishCoinAmount"),k("orderbookToInitTime"),q("swapBaseInAmount"),q("swapQuoteOutAmount"),k("swapBase2QuoteFee"),q("swapQuoteInAmount"),q("swapBaseOutAmount"),k("swapQuote2BaseFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("withdrawQueue"),S("lpVault"),S("owner"),k("lpReserve"),Y(k(),3,"padding")]),Rb=M([k("accountType"),k("status"),k("nonce"),k("maxOrder"),k("depth"),k("baseDecimal"),k("quoteDecimal"),k("state"),k("resetFlag"),k("minSize"),k("volMaxCutRatio"),k("amountWaveRatio"),k("baseLotSize"),k("quoteLotSize"),k("minPriceMultiplier"),k("maxPriceMultiplier"),k("systemDecimalsValue"),k("abortTradeFactor"),k("priceTickMultiplier"),k("priceTick"),k("minSeparateNumerator"),k("minSeparateDenominator"),k("tradeFeeNumerator"),k("tradeFeeDenominator"),k("pnlNumerator"),k("pnlDenominator"),k("swapFeeNumerator"),k("swapFeeDenominator"),k("baseNeedTakePnl"),k("quoteNeedTakePnl"),k("quoteTotalPnl"),k("baseTotalPnl"),k("poolOpenTime"),k("punishPcAmount"),k("punishCoinAmount"),k("orderbookToInitTime"),q("swapBaseInAmount"),q("swapQuoteOutAmount"),q("swapQuoteInAmount"),q("swapBaseOutAmount"),k("swapQuote2BaseFee"),k("swapBase2QuoteFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("modelDataAccount"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("owner"),Y(k(),64,"padding")]),Os=M([V("instruction"),k("baseAmountIn"),k("quoteAmountIn"),k("fixedSide"),k("otherAmountMin")]),Es=M([V("instruction"),k("lpAmount"),k("baseAmountMin"),k("quoteAmountMin")]);var Lb=M([k("fee")]);import{PublicKey as by}from"@solana/web3.js";import gy from"bn.js";import{TOKEN_PROGRAM_ID as Ay}from"@solana/spl-token";import{PublicKey as Vb,SystemProgram as Db,SYSVAR_RENT_PUBKEY as qb,TransactionInstruction as sr}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Ub,TOKEN_PROGRAM_ID as ar}from"@solana/spl-token";import{PublicKey as vs}from"@solana/web3.js";var Hn=new vs("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Fs=5e4,_s=M([k("x"),k("y"),k("price")]),Fb=M([k("accountType"),k("status"),k("multiplier"),k("validDataCount"),Y(_s,Fs,"DataElement")]);var or=ae("Raydium_liquidity_instruction");function Ws({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=ve(i),a=Buffer.alloc(Qn.span);Qn.encode({instruction:9,amountIn:ue(t),minAmountOut:ue(n)},a);let s=[P({pubkey:ar,isWritable:!1}),P({pubkey:o.id}),P({pubkey:o.authority,isWritable:!1}),P({pubkey:o.openOrders})];return r===4&&s.push(P({pubkey:o.targetOrders})),s.push(P({pubkey:o.vault.A}),P({pubkey:o.vault.B})),r===5&&s.push(P({pubkey:Hn})),s.push(P({pubkey:o.marketProgramId,isWritable:!1}),P({pubkey:o.marketId}),P({pubkey:o.marketBids}),P({pubkey:o.marketAsks}),P({pubkey:o.marketEventQueue}),P({pubkey:o.marketBaseVault}),P({pubkey:o.marketQuoteVault}),P({pubkey:o.marketAuthority,isWritable:!1}),P({pubkey:e.tokenAccountIn}),P({pubkey:e.tokenAccountOut}),P({pubkey:e.owner,isWritable:!1,isSigner:!0})),new sr({programId:o.programId,keys:s,data:a})}function Vs({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=ve(i),a=Buffer.alloc(Yn.span);Yn.encode({instruction:11,maxAmountIn:ue(t),amountOut:ue(n)},a);let s=[P({pubkey:ar,isWritable:!1}),P({pubkey:o.id}),P({pubkey:o.authority,isWritable:!1}),P({pubkey:o.openOrders}),P({pubkey:o.targetOrders}),P({pubkey:o.vault.A}),P({pubkey:o.vault.B})];return r===5&&s.push(P({pubkey:Hn})),s.push(P({pubkey:o.marketProgramId,isWritable:!1}),P({pubkey:o.marketId}),P({pubkey:o.marketBids}),P({pubkey:o.marketAsks}),P({pubkey:o.marketEventQueue}),P({pubkey:o.marketBaseVault}),P({pubkey:o.marketQuoteVault}),P({pubkey:o.marketAuthority,isWritable:!1}),P({pubkey:e.tokenAccountIn}),P({pubkey:e.tokenAccountOut}),P({pubkey:e.owner,isWritable:!1,isSigner:!0})),new sr({programId:o.programId,keys:s,data:a})}function ur(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:a}=i;if(t===4||t===5){let s={poolKeys:e,userKeys:n};if(a==="in")return Ws(te(j({},s),{amountIn:r,minAmountOut:o}),t);if(a==="out")return Vs(te(j({},s),{maxAmountIn:r,amountOut:o}),t);or.logWithError("invalid params","params",i)}throw or.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{PublicKey as ny}from"@solana/web3.js";var oy=ae("Raydium_liquidity_serum");import{PublicKey as eg,SystemProgram as ng}from"@solana/web3.js";import og from"bn.js";import{createCloseAccountInstruction as cg,createInitializeAccountInstruction as lg,createTransferInstruction as mg,TOKEN_PROGRAM_ID as pg}from"@solana/spl-token";import{Keypair as Wy,PublicKey as Vy}from"@solana/web3.js";import Gy from"bn.js";import{TOKEN_PROGRAM_ID as zy}from"@solana/spl-token";var cr=M([S("mint"),S("owner"),k("amount"),Fe("delegateOption"),S("delegate"),V("state"),Fe("isNativeOption"),k("isNative"),k("delegatedAmount"),Fe("closeAuthorityOption"),S("closeAuthority")]);var Yy=ae("Raydium_Util");var Ds={[Rn.toBase58()]:3};var qs=M([Pe(5),Pe(8),S("ownAddress"),k("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),k("baseDepositsTotal"),k("baseFeesAccrued"),S("quoteVault"),k("quoteDepositsTotal"),k("quoteFeesAccrued"),k("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),k("baseLotSize"),k("quoteLotSize"),k("feeRateBps"),k("referrerRebatesAccrued"),Pe(7)]);import{PublicKey as xg}from"@solana/web3.js";var Rg=ae("Serum");var Wg=M([Fe("mintAuthorityOption"),S("mintAuthority"),k("supply"),V("decimals"),V("isInitialized"),Fe("freezeAuthorityOption"),S("freezeAuthority")]);import{PublicKey as A,SystemProgram as Dt,TransactionInstruction as qt}from"@solana/web3.js";import Je from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Zn,TOKEN_2022_PROGRAM_ID as jn,TOKEN_PROGRAM_ID as bt}from"@solana/spl-token";function eP(i,e,t,n,r,o,a,s,u,c,l,m){let p=M([V("instruction"),k("amountIn"),k("amountOut")]),d=[{pubkey:Dt.programId,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:new A(t.programId),isSigner:!1,isWritable:!1},{pubkey:new A(t.id),isSigner:!1,isWritable:!0},{pubkey:new A(n.id),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let b=ve(t);d.push({pubkey:b.config.id,isSigner:!1,isWritable:!1},{pubkey:b.id,isSigner:!1,isWritable:!0},{pubkey:b.mintA.address.equals(u)?b.vault.A:b.vault.B,isSigner:!1,isWritable:!0},{pubkey:b.mintA.address.equals(u)?b.vault.B:b.vault.A,isSigner:!1,isWritable:!0},{pubkey:b.id,isSigner:!1,isWritable:!0},...m.map(f=>({pubkey:f,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let b=ve(t);d.push({pubkey:b.authority,isSigner:!1,isWritable:!1},{pubkey:b.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:b.id,isSigner:!1,isWritable:!0},{pubkey:new A("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:b.openOrders,isSigner:!1,isWritable:!0},{pubkey:b.vault.A,isSigner:!1,isWritable:!0},{pubkey:b.vault.B,isSigner:!1,isWritable:!0},{pubkey:b.marketId,isSigner:!1,isWritable:!0},{pubkey:b.marketBids,isSigner:!1,isWritable:!0},{pubkey:b.marketAsks,isSigner:!1,isWritable:!0},{pubkey:b.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:b.id,isSigner:!1,isWritable:!0},{pubkey:b.id,isSigner:!1,isWritable:!0})}else{let b=ve(t);d.push({pubkey:b.authority,isSigner:!1,isWritable:!1},{pubkey:b.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:b.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:b.openOrders,isSigner:!1,isWritable:!0},{pubkey:b.vault.A,isSigner:!1,isWritable:!0},{pubkey:b.vault.B,isSigner:!1,isWritable:!0},{pubkey:b.marketId,isSigner:!1,isWritable:!0},{pubkey:b.marketBids,isSigner:!1,isWritable:!0},{pubkey:b.marketAsks,isSigner:!1,isWritable:!0},{pubkey:b.marketEventQueue,isSigner:!1,isWritable:!0},...b.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:b.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:b.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:b.id,isSigner:!1,isWritable:!0},{pubkey:b.id,isSigner:!1,isWritable:!0}])}let g=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},g),new qt({keys:d,programId:i,data:g})}function tP(i,e,t,n,r,o,a,s,u,c){let l=M([V("instruction")]),m=[{pubkey:Dt.programId,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:new A(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new A(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new A(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=ve(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(g=>({pubkey:g,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=ve(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new A("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=ve(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new qt({keys:m,programId:i,data:p})}function Gs(i,e,t,n,r,o,a,s,u,c,l,m,p,d,g){var h;let b=[],f=[P({pubkey:bt,isWritable:!1}),P({pubkey:jn,isWritable:!1}),P({pubkey:Zn,isWritable:!1}),P({pubkey:Dt.programId,isWritable:!1}),P({pubkey:e,isSigner:!0})];f.push(P({pubkey:t})),f.push(P({pubkey:r}));let y=[u,c],B=[l,m],T=[o,a,s];for(let R=0;R<y.length;R++){let L=y[R],D=T[R]===L.mintA.address;if(f.push(P({pubkey:new A(L.programId),isWritable:!1})),R===y.length-1?f.push(P({pubkey:r})):f.push(P({pubkey:n})),f.push(P({pubkey:new A(T[R])})),f.push(P({pubkey:new A(T[R+1])})),L.version===6){let x=B[R];f.push(P({pubkey:new A(x.config.id)})),f.push(P({pubkey:new A(x.id)})),f.push(P({pubkey:new A(D?x.vault.A:x.vault.B)})),f.push(P({pubkey:new A(D?x.vault.B:x.vault.A)})),f.push(P({pubkey:new A(L.observationId)})),f.push(P({pubkey:dt})),f.push(P({pubkey:ke(new A(L.programId),new A(L.id)).publicKey})),b.push(Jn(L.sqrtPriceX64.toString(),D));for(let F of(h=g[R])!=null?h:[])f.push(P({pubkey:new A(F)}))}else if(L.version===5){let x=B[R];f.push(P({pubkey:new A(x.id)})),f.push(P({pubkey:new A(x.authority),isWritable:!1})),f.push(P({pubkey:new A(x.marketProgramId)})),f.push(P({pubkey:new A(x.marketAuthority)})),f.push(P({pubkey:tn,isWritable:!1})),f.push(P({pubkey:new A(x.openOrders)})),f.push(P({pubkey:new A(x.vault.A)})),f.push(P({pubkey:new A(x.vault.B)})),f.push(P({pubkey:new A(x.id)})),f.push(P({pubkey:new A(x.id)})),f.push(P({pubkey:new A(x.id)})),f.push(P({pubkey:new A(x.id)})),f.push(P({pubkey:new A(x.id)})),f.push(P({pubkey:new A(x.id)})),f.push(P({pubkey:new A(x.marketId)})),f.push(P({pubkey:new A(x.marketBids)})),f.push(P({pubkey:new A(x.marketAsks)})),f.push(P({pubkey:new A(x.marketEventQueue)})),f.push(P({pubkey:new A(x.marketBaseVault)})),f.push(P({pubkey:new A(x.marketQuoteVault)}))}else if(L.version===4){let x=B[R],F=L.status!==1;f.push(P({pubkey:new A(x.id)})),f.push(P({pubkey:new A(x.authority),isWritable:!1})),f.push(P({pubkey:new A(F?x.id:x.marketProgramId)})),f.push(P({pubkey:new A(F?x.id:x.marketAuthority)})),f.push(P({pubkey:new A(F?x.id:x.openOrders)})),f.push(P({pubkey:new A(x.vault.A)})),f.push(P({pubkey:new A(x.vault.B)})),f.push(P({pubkey:new A(F?x.id:x.marketId)})),f.push(P({pubkey:new A(F?x.id:x.marketBids)})),f.push(P({pubkey:new A(F?x.id:x.marketAsks)})),f.push(P({pubkey:new A(F?x.id:x.marketEventQueue)})),f.push(P({pubkey:new A(F?x.id:x.marketBaseVault)})),f.push(P({pubkey:new A(F?x.id:x.marketQuoteVault)}))}else if(L.version===7){let x=B[R];f.push(P({pubkey:new A(x.authority)})),f.push(P({pubkey:new A(x.config.id)})),f.push(P({pubkey:new A(x.id)})),f.push(P({pubkey:new A(D?x.vault.A:x.vault.B)})),f.push(P({pubkey:new A(D?x.vault.B:x.vault.A)})),f.push(P({pubkey:new A(L.observationId)}))}else throw Error("pool type error")}let N=M([V("insId"),k("amountIn"),k("amountOut"),Y(q(),b.length,"clmmPriceLimit")]),v=Buffer.alloc(N.span);return N.encode({insId:0,amountIn:p,amountOut:d,clmmPriceLimit:b},v),new qt({keys:f,programId:i,data:v})}function Jn(i,e){if(i)if(e){let t=new Je(i).div(new Je(25));return t.gt(sn)?t:sn}else{let t=new Je(i).mul(new Je(25));return t.lt(an)?t:an}else return e?sn:an}function Us({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,a,s,u,c,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],p=ve(m),d=t.equals(p.mintA.address)?He.add(_e):Ze.sub(_e);return At.makeSwapBaseInInstructions({poolInfo:m,poolKeys:m,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:p.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:p.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?o:new Je(0)),sqrtPriceLimitX64:d,remainingAccounts:(a=n.remainingAccounts[0])!=null?a:[]})}else if(n.poolInfo[0].version===7){let m=n.poolInfo[0],p=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[ir(m.programId,e.wallet,m.authority,m.configId,m.id,e.sourceToken,e.destinationToken,p?m.vaultA:m.vaultB,p?m.vaultB:m.vaultA,p?m.mintProgramA:m.mintProgramB,p?m.mintProgramB:m.mintProgramA,new A(m[p?"mintA":"mintB"].address),new A(m[p?"mintB":"mintA"].address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[p?ne.CpmmSwapBaseIn:ne.CpmmSwapBaseOut],address:{}}}else{let m=n.poolKey[0];return{signers:[],instructions:[ur({poolKeys:m,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((u=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?u:new Je(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?ne.AmmV5SwapBaseIn:ne.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],p=n.poolInfo[1],d=n.poolKey[0],g=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[Gs(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),m,p,d,g,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(c=n.minAmountOut.fee)==null?void 0:c.raw)!=null?l:new Je(0)),n.remainingAccounts)],instructionTypes:[ne.RouteSwap],lookupTableAddress:[d.lookupTableAccount,g.lookupTableAccount].filter(b=>b!==void 0),address:{}}}else throw Error("route type error")}function nP({programId:i,wallet:e,amount:t,inputAccount:n,outputAccount:r,routeInfo:o,poolKeys:a}){var p;if(o.success===!1)throw Error("route info error");let s=[],u=[P({pubkey:bt,isWritable:!1}),P({pubkey:jn,isWritable:!1}),P({pubkey:Zn,isWritable:!1}),P({pubkey:Dt.programId,isWritable:!1}),P({pubkey:e,isSigner:!0})],c={[o.data.inputMint]:n,[o.data.outputMint]:r};u.push(P({pubkey:c[o.data.inputMint]})),u.push(P({pubkey:c[o.data.outputMint]}));for(let d=0;d<a.length;d++){let g=o.data.routePlan[d],b=a[d],f=g.inputMint===b.mintA.address;if(u.push(P({pubkey:new A(b.programId),isWritable:!1})),d===a.length-1)u.push(P({pubkey:c[g.outputMint]}));else{let y=g.outputMint;if(c[y]===void 0){let B=re(e,new A(y),b.programId===Re.CLMM_PROGRAM_ID.toBase58()||b.programId===Re.CREATE_CPMM_POOL_PROGRAM.toBase58()?new A(f?b.mintB.programId:b.mintA.programId):bt).publicKey;c[y]=B}u.push(P({pubkey:c[y]}))}if(u.push(P({pubkey:new A(g.inputMint)})),u.push(P({pubkey:new A(g.outputMint)})),b.programId===Re.CLMM_PROGRAM_ID.toBase58()){let y=b;u.push(P({pubkey:new A(y.config.id)})),u.push(P({pubkey:new A(y.id)})),u.push(P({pubkey:new A(f?y.vault.A:y.vault.B)})),u.push(P({pubkey:new A(f?y.vault.B:y.vault.A)})),u.push(P({pubkey:new A(y.observationId)})),u.push(P({pubkey:dt,isWritable:!1})),u.push(P({pubkey:new A(y.exBitmapAccount)})),s.push(Jn(g.lastPoolPriceX64,f));for(let B of(p=g.remainingAccounts)!=null?p:[])u.push(P({pubkey:new A(B)}))}else if(b.programId===Re.AMM_STABLE.toBase58()){let y=b;u.push(P({pubkey:new A(y.id)})),u.push(P({pubkey:new A(y.authority),isWritable:!1})),u.push(P({pubkey:new A(y.marketProgramId),isWritable:!1})),u.push(P({pubkey:new A(y.marketAuthority),isWritable:!1})),u.push(P({pubkey:tn,isWritable:!1})),u.push(P({pubkey:new A(y.openOrders)})),u.push(P({pubkey:new A(y.vault.A)})),u.push(P({pubkey:new A(y.vault.B)})),u.push(P({pubkey:new A(y.marketId)})),u.push(P({pubkey:new A(y.marketBids)})),u.push(P({pubkey:new A(y.marketAsks)})),u.push(P({pubkey:new A(y.marketEventQueue)})),u.push(P({pubkey:new A(y.marketBaseVault)})),u.push(P({pubkey:new A(y.marketQuoteVault)}))}else if(b.programId===Re.AMM_V4.toBase58()){let y=b;u.push(P({pubkey:new A(y.id)})),u.push(P({pubkey:new A(y.authority),isWritable:!1})),u.push(P({pubkey:new A(y.id)})),u.push(P({pubkey:new A(y.id)})),u.push(P({pubkey:new A(y.id)})),u.push(P({pubkey:new A(y.vault.A)})),u.push(P({pubkey:new A(y.vault.B)})),u.push(P({pubkey:new A(y.id)})),u.push(P({pubkey:new A(y.id)})),u.push(P({pubkey:new A(y.id)})),u.push(P({pubkey:new A(y.id)})),u.push(P({pubkey:new A(y.id)})),u.push(P({pubkey:new A(y.id)}))}else if(b.programId===Re.CREATE_CPMM_POOL_PROGRAM.toBase58()){let y=b;u.push(P({pubkey:new A(y.authority)})),u.push(P({pubkey:new A(y.config.id)})),u.push(P({pubkey:new A(y.id)})),u.push(P({pubkey:new A(f?y.vault.A:y.vault.B)})),u.push(P({pubkey:new A(f?y.vault.B:y.vault.A)})),u.push(P({pubkey:new A(y.observationId)}))}else throw Error("pool type error")}let l=M([V("insId"),k("amountIn"),k("amountOut"),Y(q(),s.length,"clmmPriceLimit")]),m=Buffer.alloc(l.span);return l.encode({insId:0,amountIn:t,amountOut:new Je(o.data.otherAmountThreshold),clmmPriceLimit:s},m),new qt({keys:u,programId:i,data:m})}function iP({programId:i,wallet:e,inputAccount:t,outputAccount:n,routeInfo:r,poolKeys:o}){var m;if(r.success===!1)throw Error("route info error");let a=[],s=[P({pubkey:bt,isWritable:!1}),P({pubkey:jn,isWritable:!1}),P({pubkey:Zn,isWritable:!1}),P({pubkey:Dt.programId,isWritable:!1}),P({pubkey:e,isSigner:!0})],u={[r.data.inputMint]:t,[r.data.outputMint]:n};for(let p=o.length-1;p>=0;p--){let d=r.data.routePlan[p],g=o[p],b=d.inputMint===g.mintA.address;if(s.push(P({pubkey:new A(g.programId)})),p===0)s.push(P({pubkey:u[d.inputMint]}));else{let f=d.inputMint;if(u[f]===void 0){let y=re(e,new A(f),g.programId===Re.CLMM_PROGRAM_ID.toBase58()||g.programId===Re.CREATE_CPMM_POOL_PROGRAM.toBase58()?new A(b?g.mintA.programId:g.mintB.programId):bt).publicKey;u[f]=y}s.push(P({pubkey:u[f]}))}if(p===o.length-1)s.push(P({pubkey:u[d.outputMint]}));else{let f=d.outputMint;if(u[f]===void 0){let y=re(e,new A(f),g.programId===Re.CLMM_PROGRAM_ID.toBase58()||g.programId===Re.CREATE_CPMM_POOL_PROGRAM.toBase58()?new A(b?g.mintB.programId:g.mintA.programId):bt).publicKey;u[f]=y}s.push(P({pubkey:u[f]}))}if(s.push(P({pubkey:new A(d.inputMint)})),s.push(P({pubkey:new A(d.outputMint)})),g.programId===Re.CLMM_PROGRAM_ID.toBase58()){let f=g;s.push(P({pubkey:new A(f.config.id)})),s.push(P({pubkey:new A(f.id)})),s.push(P({pubkey:new A(b?f.vault.A:f.vault.B)})),s.push(P({pubkey:new A(b?f.vault.B:f.vault.A)})),s.push(P({pubkey:new A(f.observationId)})),s.push(P({pubkey:dt,isWritable:!1})),s.push(P({pubkey:new A(f.exBitmapAccount)})),a.push(Jn(d.lastPoolPriceX64,b));for(let y of(m=d.remainingAccounts)!=null?m:[])s.push(P({pubkey:new A(y)}))}else if(g.programId===Re.AMM_STABLE.toBase58()){let f=g;s.push(P({pubkey:new A(f.id)})),s.push(P({pubkey:new A(f.authority),isWritable:!1})),s.push(P({pubkey:new A(f.marketProgramId),isWritable:!1})),s.push(P({pubkey:new A(f.marketAuthority),isWritable:!1})),s.push(P({pubkey:tn,isWritable:!1})),s.push(P({pubkey:new A(f.openOrders)})),s.push(P({pubkey:new A(f.vault.A)})),s.push(P({pubkey:new A(f.vault.B)})),s.push(P({pubkey:new A(f.marketId)})),s.push(P({pubkey:new A(f.marketBids)})),s.push(P({pubkey:new A(f.marketAsks)})),s.push(P({pubkey:new A(f.marketEventQueue)})),s.push(P({pubkey:new A(f.marketBaseVault)})),s.push(P({pubkey:new A(f.marketQuoteVault)}))}else if(g.programId===Re.AMM_V4.toBase58()){let f=g;s.push(P({pubkey:new A(f.id)})),s.push(P({pubkey:new A(f.authority),isWritable:!1})),s.push(P({pubkey:new A(f.id)})),s.push(P({pubkey:new A(f.id)})),s.push(P({pubkey:new A(f.id)})),s.push(P({pubkey:new A(f.vault.A)})),s.push(P({pubkey:new A(f.vault.B)})),s.push(P({pubkey:new A(f.id)})),s.push(P({pubkey:new A(f.id)})),s.push(P({pubkey:new A(f.id)})),s.push(P({pubkey:new A(f.id)})),s.push(P({pubkey:new A(f.id)})),s.push(P({pubkey:new A(f.id)}))}else if(g.programId===Re.CREATE_CPMM_POOL_PROGRAM.toBase58()){let f=g;s.push(P({pubkey:new A(f.authority)})),s.push(P({pubkey:new A(f.config.id)})),s.push(P({pubkey:new A(f.id)})),s.push(P({pubkey:new A(b?f.vault.A:f.vault.B)})),s.push(P({pubkey:new A(b?f.vault.B:f.vault.A)})),s.push(P({pubkey:new A(f.observationId)}))}else throw Error("pool type error")}let c=M([V("insId"),k("amountIn"),k("amountOut"),Y(q(),a.length,"clmmPriceLimit")]),l=Buffer.alloc(c.span);return c.encode({insId:1,amountIn:new Je(r.data.otherAmountThreshold),amountOut:new Je(r.data.outputAmount),clmmPriceLimit:a},l),new qt({keys:s,programId:i,data:l})}var DP=new Xs(0);export{Us as makeSwapInstruction,eP as route1Instruction,tP as route2Instruction,Gs as routeInstruction,nP as swapBaseInAutoAccount,iP as swapBaseOutAutoAccount};
//# sourceMappingURL=index.mjs.map