@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
3 lines • 194 kB
JavaScript
var Bo=Object.defineProperty,Io=Object.defineProperties;var xo=Object.getOwnPropertyDescriptors;var dn=Object.getOwnPropertySymbols;var Xi=Object.prototype.hasOwnProperty,zi=Object.prototype.propertyIsEnumerable;var Ui=(i,e,t)=>e in i?Bo(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,q=(i,e)=>{for(var t in e||(e={}))Xi.call(e,t)&&Ui(i,t,e[t]);if(dn)for(var t of dn(e))zi.call(e,t)&&Ui(i,t,e[t]);return i},j=(i,e)=>Io(i,xo(e));var Tt=(i,e)=>{var t={};for(var n in i)Xi.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&dn)for(var n of dn(i))e.indexOf(n)<0&&zi.call(i,n)&&(t[n]=i[n]);return t};import{PublicKey as Ot}from"@solana/web3.js";import{createTransferInstruction as ho,TOKEN_PROGRAM_ID as Ae,TOKEN_2022_PROGRAM_ID as Hn}from"@solana/spl-token";import Qn from"bn.js";var Et=9e15,kt=1e9,Yn="0123456789abcdef",bn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",yn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",jn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Et,maxE:Et,crypto:!1},ji,ot,H=!0,kn="[DecimalError] ",gt=kn+"Invalid argument: ",Zi=kn+"Precision limit exceeded",Ji=kn+"crypto unavailable",$i="[object Decimal]",Ne=Math.floor,Be=Math.pow,So=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Ko=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Co=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,er=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ze=1e7,U=7,No=9007199254740991,Lo=bn.length-1,Zn=yn.length-1,S={toStringTag:$i};S.absoluteValue=S.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),D(i)};S.ceil=function(){return D(new this.constructor(this),this.e+1,2)};S.clampedTo=S.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(gt+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};S.comparedTo=S.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,c=o.s,u=i.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==i.e)return o.e>i.e^c<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^c<0?1:-1;return n===r?0:n>r^c<0?1:-1};S.cosine=S.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())+U,n.rounding=1,t=Ro(n,or(n,t)),n.precision=i,n.rounding=e,D(ot==2||ot==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};S.cubeRoot=S.cbrt=function(){var i,e,t,n,r,o,s,a,c,u,l=this,p=l.constructor;if(!l.isFinite()||l.isZero())return new p(l);for(H=!1,o=l.s*Be(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Ke(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Be(t,1/3),i=Ne((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 p(t),n.s=l.s):n=new p(o.toString()),s=(i=p.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=ue(u.plus(l).times(a),u.plus(c),s+2,1),Ke(a.d).slice(0,s)===(t=Ke(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(D(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(D(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return H=!0,D(n,i,p.rounding,e)};S.decimalPlaces=S.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-Ne(this.e/U))*U,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};S.dividedBy=S.div=function(i){return ue(this,new this.constructor(i))};S.dividedToIntegerBy=S.divToInt=function(i){var e=this,t=e.constructor;return D(ue(e,new t(i),0,1,1),t.precision,t.rounding)};S.equals=S.eq=function(i){return this.cmp(i)===0};S.floor=function(){return D(new this.constructor(this),this.e+1,3)};S.greaterThan=S.gt=function(i){return this.cmp(i)>0};S.greaterThanOrEqualTo=S.gte=function(i){var e=this.cmp(i);return e==1||e===0};S.hyperbolicCosine=S.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/An(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=vt(s,1,o.times(e),new s(1),!0);for(var c,u=i,l=new s(8);u--;)c=o.times(o),o=a.minus(c.times(l.minus(c.times(l))));return D(o,s.precision=t,s.rounding=n,!0)};S.hyperbolicSine=S.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=vt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/An(5,i)),r=vt(o,2,r,r,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,D(r,e,t,!0)};S.hyperbolicTangent=S.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,ue(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};S.inverseCosine=S.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()?Xe(t,r,o):new t(0):new t(NaN):e.isZero()?Xe(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Xe(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};S.inverseHyperbolicCosine=S.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,H=!1,t=t.times(t).minus(1).sqrt().plus(t),H=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};S.inverseHyperbolicSine=S.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,H=!1,t=t.times(t).plus(1).sqrt().plus(t),H=!0,n.precision=i,n.rounding=e,t.ln())};S.inverseHyperbolicTangent=S.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?D(new o(r),i,e,!0):(o.precision=t=n-r.e,r=ue(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)};S.inverseSine=S.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=Xe(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)))};S.inverseTangent=S.atan=function(){var i,e,t,n,r,o,s,a,c,u=this,l=u.constructor,p=l.precision,m=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&p+4<=Zn)return s=Xe(l,p+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(p+4<=Zn)return s=Xe(l,p+4,m).times(.5),s.s=u.s,s}for(l.precision=a=p+10,l.rounding=1,t=Math.min(28,a/U+2|0),i=t;i;--i)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(H=!1,e=Math.ceil(a/U),n=1,c=u.times(u),s=new l(u),r=u;i!==-1;)if(r=r.times(c),o=s.minus(r.div(n+=2)),r=r.times(c),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),H=!0,D(s,l.precision=p,l.rounding=m,!0)};S.isFinite=function(){return!!this.d};S.isInteger=S.isInt=function(){return!!this.d&&Ne(this.e/U)>this.d.length-2};S.isNaN=function(){return!this.s};S.isNegative=S.isNeg=function(){return this.s<0};S.isPositive=S.isPos=function(){return this.s>0};S.isZero=function(){return!!this.d&&this.d[0]===0};S.lessThan=S.lt=function(i){return this.cmp(i)<0};S.lessThanOrEqualTo=S.lte=function(i){return this.cmp(i)<1};S.logarithm=S.log=function(i){var e,t,n,r,o,s,a,c,u=this,l=u.constructor,p=l.precision,m=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=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if(H=!1,a=p+d,s=yt(u,a),n=e?gn(l,a+10):yt(i,a),c=ue(s,n,a,1),Xt(c.d,r=p,m))do if(a+=10,s=yt(u,a),n=e?gn(l,a+10):yt(i,a),c=ue(s,n,a,1),!o){+Ke(c.d).slice(r+1,r+15)+1==1e14&&(c=D(c,p+1,0));break}while(Xt(c.d,r+=10,m));return H=!0,D(c,p,m)};S.minus=S.sub=function(i){var e,t,n,r,o,s,a,c,u,l,p,m,d=this,y=d.constructor;if(i=new y(i),!d.d||!i.d)return!d.s||!i.s?i=new y(NaN):d.d?i.s=-i.s:i=new y(i.d||d.s!==i.s?d:NaN),i;if(d.s!=i.s)return i.s=-i.s,d.plus(i);if(u=d.d,m=i.d,a=y.precision,c=y.rounding,!u[0]||!m[0]){if(m[0])i.s=-i.s;else if(u[0])i=new y(d);else return new y(c===3?-0:0);return H?D(i,a,c):i}if(t=Ne(i.e/U),l=Ne(d.e/U),u=u.slice(),o=l-t,o){for(p=o<0,p?(e=u,o=-o,s=m.length):(e=m,t=l,s=u.length),n=Math.max(Math.ceil(a/U),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=m.length,p=n<s,p&&(s=n),n=0;n<s;n++)if(u[n]!=m[n]){p=u[n]<m[n];break}o=0}for(p&&(e=u,u=m,m=e,i.s=-i.s),s=u.length,n=m.length-s;n>0;--n)u[s++]=0;for(n=m.length;n>o;){if(u[--n]<m[n]){for(r=n;r&&u[--r]===0;)u[r]=ze-1;--u[r],u[n]+=ze}u[n]-=m[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(i.d=u,i.e=Pn(u,t),H?D(i,a,c):i):new y(c===3?-0:0)};S.modulo=S.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]?D(new n(t),n.precision,n.rounding):(H=!1,n.modulo==9?(e=ue(t,i.abs(),0,3,1),e.s*=i.s):e=ue(t,i,0,n.modulo,1),e=e.times(i),H=!0,t.minus(e))};S.naturalExponential=S.exp=function(){return Jn(this)};S.naturalLogarithm=S.ln=function(){return yt(this)};S.negated=S.neg=function(){var i=new this.constructor(this);return i.s=-i.s,D(i)};S.plus=S.add=function(i){var e,t,n,r,o,s,a,c,u,l,p=this,m=p.constructor;if(i=new m(i),!p.d||!i.d)return!p.s||!i.s?i=new m(NaN):p.d||(i=new m(i.d||p.s===i.s?p:NaN)),i;if(p.s!=i.s)return i.s=-i.s,p.minus(i);if(u=p.d,l=i.d,a=m.precision,c=m.rounding,!u[0]||!l[0])return l[0]||(i=new m(p)),H?D(i,a,c):i;if(o=Ne(p.e/U),n=Ne(i.e/U),u=u.slice(),r=o-n,r){for(r<0?(t=u,r=-r,s=l.length):(t=l,n=o,s=u.length),o=Math.ceil(a/U),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=u.length,r=l.length,s-r<0&&(r=s,t=l,l=u,u=t),e=0;r;)e=(u[--r]=u[r]+l[r]+e)/ze|0,u[r]%=ze;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return i.d=u,i.e=Pn(u,n),H?D(i,a,c):i};S.precision=S.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(gt+i);return t.d?(e=tr(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};S.round=function(){var i=this,e=i.constructor;return D(new e(i),i.e+1,e.rounding)};S.sine=S.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())+U,n.rounding=1,t=Oo(n,or(n,t)),n.precision=i,n.rounding=e,D(ot>2?t.neg():t,i,e,!0)):new n(NaN)};S.squareRoot=S.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(H=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=Ke(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=Ne((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(o=n,n=o.plus(ue(s,o,t+2,1)).times(.5),Ke(o.d).slice(0,t)===(e=Ke(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(D(o,c+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(D(n,c+1,1),i=!n.times(n).eq(s));break}return H=!0,D(n,c,l.rounding,i)};S.tangent=S.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=ue(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,D(ot==2||ot==4?t.neg():t,i,e,!0)):new n(NaN)};S.times=S.mul=function(i){var e,t,n,r,o,s,a,c,u,l=this,p=l.constructor,m=l.d,d=(i=new p(i)).d;if(i.s*=l.s,!m||!m[0]||!d||!d[0])return new p(!i.s||m&&!m[0]&&!d||d&&!d[0]&&!m?NaN:!m||!d?i.s/0:i.s*0);for(t=Ne(l.e/U)+Ne(i.e/U),c=m.length,u=d.length,c<u&&(o=m,m=d,d=o,s=c,c=u,u=s),o=[],s=c+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,r=c+n;r>n;)a=o[r]+d[n]*m[r-n-1]+e,o[r--]=a%ze|0,e=a/ze|0;o[r]=(o[r]+e)%ze|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=Pn(o,t),H?D(i,p.precision,p.rounding):i};S.toBinary=function(i,e){return ei(this,2,i,e)};S.toDecimalPlaces=S.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Me(i,0,kt),e===void 0?e=n.rounding:Me(e,0,8),D(t,i+t.e+1,e))};S.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Je(n,!0):(Me(i,0,kt),e===void 0?e=r.rounding:Me(e,0,8),n=D(new r(n),i+1,e),t=Je(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};S.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=Je(r):(Me(i,0,kt),e===void 0?e=o.rounding:Me(e,0,8),n=D(new o(r),i+r.e+1,e),t=Je(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};S.toFraction=function(i){var e,t,n,r,o,s,a,c,u,l,p,m,d=this,y=d.d,f=d.constructor;if(!y)return new f(d);if(u=t=new f(1),n=c=new f(0),e=new f(n),o=e.e=tr(y)-d.e-1,s=o%U,e.d[0]=Be(10,s<0?U+s:s),i==null)i=o>0?e:u;else{if(a=new f(i),!a.isInt()||a.lt(u))throw Error(gt+a);i=a.gt(e)?o>0?e:u:a}for(H=!1,a=new f(Ke(y)),l=f.precision,f.precision=o=y.length*U*2;p=ue(a,e,0,1,1),r=t.plus(p.times(n)),r.cmp(i)!=1;)t=n,n=r,r=u,u=c.plus(p.times(r)),c=r,r=e,e=a.minus(p.times(r)),a=r;return r=ue(i.minus(t),n,0,1,1),c=c.plus(r.times(u)),t=t.plus(r.times(n)),c.s=u.s=d.s,m=ue(u,n,o,1).minus(d).abs().cmp(ue(c,t,o,1).minus(d).abs())<1?[u,n]:[c,t],f.precision=l,H=!0,m};S.toHexadecimal=S.toHex=function(i,e){return ei(this,16,i,e)};S.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]?(H=!1,t=ue(t,i,0,e,1).times(i),H=!0,D(t)):(i.s=t.s,t=i),t};S.toNumber=function(){return+this};S.toOctal=function(i,e){return ei(this,8,i,e)};S.toPower=S.pow=function(i){var e,t,n,r,o,s,a=this,c=a.constructor,u=+(i=new c(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new c(Be(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,i.eq(1))return D(a,n,o);if(e=Ne(i.e/U),e>=i.d.length-1&&(t=u<0?-u:u)<=No)return r=nr(c,a,t,n),i.s<0?new c(1).div(r):D(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new c(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Be(+a,u),e=t==0||!isFinite(t)?Ne(u*(Math.log("0."+Ke(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(H=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=Jn(i.times(yt(a,n+t)),n),r.d&&(r=D(r,n+5,1),Xt(r.d,n,o)&&(e=n+10,r=D(Jn(i.times(yt(a,e+t)),e),e+5,1),+Ke(r.d).slice(n+1,n+15)+1==1e14&&(r=D(r,n+1,0)))),r.s=s,H=!0,c.rounding=o,D(r,n,o))};S.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Je(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Me(i,1,kt),e===void 0?e=r.rounding:Me(e,0,8),n=D(new r(n),i,e),t=Je(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};S.toSignificantDigits=S.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Me(i,1,kt),e===void 0?e=n.rounding:Me(e,0,8)),D(new n(t),i,e)};S.toString=function(){var i=this,e=i.constructor,t=Je(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};S.truncated=S.trunc=function(){return D(new this.constructor(this),this.e+1,1)};S.valueOf=S.toJSON=function(){var i=this,e=i.constructor,t=Je(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function Ke(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=U-n.length,t&&(o+=bt(t)),o+=n;s=i[e],n=s+"",t=U-n.length,t&&(o+=bt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Me(i,e,t){if(i!==~~i||i<e||i>t)throw Error(gt+i)}function Xt(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=U,r=0):(r=Math.ceil((e+1)/U),e%=U),o=Be(10,U-e),a=i[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(i[r+1]/o/100|0)==Be(10,e-2)-1||(a==o/2||a==0)&&(i[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(i[r+1]/o/1e3|0)==Be(10,e-3)-1,s}function fn(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=Yn.indexOf(i.charAt(s++)),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 Ro(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/An(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=vt(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var ue=function(){function i(n,r,o){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*r+a,n[c]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(n[a]!=r[a]){c=n[a]>r[a]?1:-1;break}return c}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,c){var u,l,p,m,d,y,f,b,g,A,w,h,B,P,I,x,R,T,N,V,E=n.constructor,J=n.s==r.s?1:-1,G=n.d,v=r.d;if(!G||!G[0]||!v||!v[0])return new E(!n.s||!r.s||(G?v&&G[0]==v[0]:!v)?NaN:G&&G[0]==0||!v?J*0:J/0);for(c?(d=1,l=n.e-r.e):(c=ze,d=U,l=Ne(n.e/d)-Ne(r.e/d)),N=v.length,R=G.length,g=new E(J),A=g.d=[],p=0;v[p]==(G[p]||0);p++);if(v[p]>(G[p]||0)&&l--,o==null?(P=o=E.precision,s=E.rounding):a?P=o+(n.e-r.e)+1:P=o,P<0)A.push(1),y=!0;else{if(P=P/d+2|0,p=0,N==1){for(m=0,v=v[0],P++;(p<R||m)&&P--;p++)I=m*c+(G[p]||0),A[p]=I/v|0,m=I%v|0;y=m||p<R}else{for(m=c/(v[0]+1)|0,m>1&&(v=i(v,m,c),G=i(G,m,c),N=v.length,R=G.length),x=N,w=G.slice(0,N),h=w.length;h<N;)w[h++]=0;V=v.slice(),V.unshift(0),T=v[0],v[1]>=c/2&&++T;do m=0,u=e(v,w,N,h),u<0?(B=w[0],N!=h&&(B=B*c+(w[1]||0)),m=B/T|0,m>1?(m>=c&&(m=c-1),f=i(v,m,c),b=f.length,h=w.length,u=e(f,w,b,h),u==1&&(m--,t(f,N<b?V:v,b,c))):(m==0&&(u=m=1),f=v.slice()),b=f.length,b<h&&f.unshift(0),t(w,f,h,c),u==-1&&(h=w.length,u=e(v,w,N,h),u<1&&(m++,t(w,N<h?V:v,h,c))),h=w.length):u===0&&(m++,w=[0]),A[p++]=m,u&&w[0]?w[h++]=G[x]||0:(w=[G[x]],h=1);while((x++<R||w[0]!==void 0)&&P--);y=w[0]!==void 0}A[0]||A.shift()}if(d==1)g.e=l,ji=y;else{for(p=1,m=A[0];m>=10;m/=10)p++;g.e=p+l*d-1,D(g,a?o+g.e+1:o,s,y)}return g}}();function D(i,e,t,n){var r,o,s,a,c,u,l,p,m,d=i.constructor;e:if(e!=null){if(p=i.d,!p)return i;for(r=1,a=p[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=U,s=e,l=p[m=0],c=l/Be(10,r-s-1)%10|0;else if(m=Math.ceil((o+1)/U),a=p.length,m>=a)if(n){for(;a++<=m;)p.push(0);l=c=0,r=1,o%=U,s=o-U+1}else break e;else{for(l=a=p[m],r=1;a>=10;a/=10)r++;o%=U,s=o-U+r,c=s<0?0:l/Be(10,r-s-1)%10|0}if(n=n||e<0||p[m+1]!==void 0||(s<0?l:l%Be(10,r-s-1)),u=t<4?(c||n)&&(t==0||t==(i.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(o>0?s>0?l/Be(10,r-s):0:p[m-1])%10&1||t==(i.s<0?8:7)),e<1||!p[0])return p.length=0,u?(e-=i.e+1,p[0]=Be(10,(U-e%U)%U),i.e=-e||0):p[0]=i.e=0,i;if(o==0?(p.length=m,a=1,m--):(p.length=m+1,a=Be(10,U-o),p[m]=s>0?(l/Be(10,r-s)%Be(10,s)|0)*a:0),u)for(;;)if(m==0){for(o=1,s=p[0];s>=10;s/=10)o++;for(s=p[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,p[0]==ze&&(p[0]=1));break}else{if(p[m]+=a,p[m]!=ze)break;p[m--]=0,a=1}for(o=p.length;p[--o]===0;)p.pop()}return H&&(i.e>d.maxE?(i.d=null,i.e=NaN):i.e<d.minE&&(i.e=0,i.d=[0])),i}function Je(i,e,t){if(!i.isFinite())return rr(i);var n,r=i.e,o=Ke(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+bt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+bt(-r-1)+o,t&&(n=t-s)>0&&(o+=bt(n))):r>=s?(o+=bt(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+bt(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=bt(n))),o}function Pn(i,e){var t=i[0];for(e*=U;t>=10;t/=10)e++;return e}function gn(i,e,t){if(e>Lo)throw H=!0,t&&(i.precision=t),Error(Zi);return D(new i(bn),e,1,!0)}function Xe(i,e,t){if(e>Zn)throw Error(Zi);return D(new i(yn),e,t,!0)}function tr(i){var e=i.length-1,t=e*U+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 bt(i){for(var e="";i--;)e+="0";return e}function nr(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/U+4);for(H=!1;;){if(t%2&&(o=o.times(e),Qi(o.d,s)&&(r=!0)),t=Ne(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Qi(e.d,s)}return H=!0,o}function Hi(i){return i.d[i.d.length-1]&1}function ir(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 Jn(i,e){var t,n,r,o,s,a,c,u=0,l=0,p=0,m=i.constructor,d=m.rounding,y=m.precision;if(!i.d||!i.d[0]||i.e>17)return new m(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(H=!1,c=y):c=e,a=new m(.03125);i.e>-2;)i=i.times(a),p+=5;for(n=Math.log(Be(2,p))/Math.LN10*2+5|0,c+=n,t=o=s=new m(1),m.precision=c;;){if(o=D(o.times(i),c,1),t=t.times(++l),a=s.plus(ue(o,t,c,1)),Ke(a.d).slice(0,c)===Ke(s.d).slice(0,c)){for(r=p;r--;)s=D(s.times(s),c,1);if(e==null)if(u<3&&Xt(s.d,c-n,d,u))m.precision=c+=10,t=o=a=new m(1),l=0,u++;else return D(s,m.precision=y,d,H=!0);else return m.precision=y,s}s=a}}function yt(i,e){var t,n,r,o,s,a,c,u,l,p,m,d=1,y=10,f=i,b=f.d,g=f.constructor,A=g.rounding,w=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(H=!1,l=w):l=e,g.precision=l+=y,t=Ke(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(i),t=Ke(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return u=gn(g,l+2,w).times(o+""),f=yt(new g(n+"."+t.slice(1)),l-y).plus(u),g.precision=w,e==null?D(f,w,A,H=!0):f;for(p=f,c=s=f=ue(f.minus(1),f.plus(1),l,1),m=D(f.times(f),l,1),r=3;;){if(s=D(s.times(m),l,1),u=c.plus(ue(s,new g(r),l,1)),Ke(u.d).slice(0,l)===Ke(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(gn(g,l+2,w).times(o+""))),c=ue(c,new g(d),l,1),e==null)if(Xt(c.d,l-y,A,a))g.precision=l+=y,u=s=f=ue(p.minus(1),p.plus(1),l,1),m=D(f.times(f),l,1),r=a=1;else return D(c,g.precision=w,A,H=!0);else return g.precision=w,c;c=u,r+=2}}function rr(i){return String(i.s*i.s/0)}function $n(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)%U,t<0&&(n+=U),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=U;n<r;)i.d.push(+e.slice(n,n+=U));e=e.slice(n),n=U-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),H&&(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 Mo(i,e){var t,n,r,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),er.test(e))return $n(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(Ko.test(e))t=16,e=e.toLowerCase();else if(So.test(e))t=2;else if(Co.test(e))t=8;else throw Error(gt+e);for(o=e.search(/p/i),o>0?(c=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=nr(n,new n(t),o,o*2)),u=fn(e,t,ze),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(i.s*0):(i.e=Pn(u,l),i.d=u,H=!1,s&&(i=ue(i,r,a*4)),c&&(i=i.times(Math.abs(c)<54?Be(2,c):zt.pow(2,c))),H=!0,i)}function Oo(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:vt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/An(5,t)),e=vt(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function vt(i,e,t,n,r){var o,s,a,c,u=1,l=i.precision,p=Math.ceil(l/U);for(H=!1,c=t.times(t),a=new i(n);;){if(s=ue(a.times(c),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=ue(s.times(c),new i(e++*e++),l,1),s=a.plus(n),s.d[p]!==void 0){for(o=p;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return H=!0,s.d.length=p+1,s}function An(i,e){for(var t=i;--e;)t*=i;return t}function or(i,e){var t,n=e.s<0,r=Xe(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return ot=n?4:1,e;if(t=e.divToInt(r),t.isZero())ot=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return ot=Hi(t)?n?2:3:n?4:1,e;ot=Hi(t)?n?1:4:n?3:2}return e.minus(r).abs()}function ei(i,e,t,n){var r,o,s,a,c,u,l,p,m,d=i.constructor,y=t!==void 0;if(y?(Me(t,1,kt),n===void 0?n=d.rounding:Me(n,0,8)):(t=d.precision,n=d.rounding),!i.isFinite())l=rr(i);else{for(l=Je(i),s=l.indexOf("."),y?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),m=new d(1),m.e=l.length-s,m.d=fn(Je(m),10,r),m.e=m.d.length),p=fn(l,10,r),o=c=p.length;p[--c]==0;)p.pop();if(!p[0])l=y?"0p+0":"0";else{if(s<0?o--:(i=new d(i),i.d=p,i.e=o,i=ue(i,m,t,n,0,r),p=i.d,o=i.e,u=ji),s=p[t],a=r/2,u=u||p[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&p[t-1]&1||n===(i.s<0?8:7)),p.length=t,u)for(;++p[--t]>r-1;)p[t]=0,t||(++o,p.unshift(1));for(c=p.length;!p[c-1];--c);for(s=0,l="";s<c;s++)l+=Yn.charAt(p[s]);if(y){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(p=fn(l,r,e),c=p.length;!p[c-1];--c);for(s=1,l="1.";s<c;s++)l+=Yn.charAt(p[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>c)for(o-=c;o--;)l+="0";else o<c&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function Qi(i,e){if(i.length>e)return i.length=e,!0}function Eo(i){return new this(i).abs()}function vo(i){return new this(i).acos()}function _o(i){return new this(i).acosh()}function Wo(i,e){return new this(i).plus(e)}function Fo(i){return new this(i).asin()}function Vo(i){return new this(i).asinh()}function Do(i){return new this(i).atan()}function qo(i){return new this(i).atanh()}function Go(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=Xe(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Xe(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Xe(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ue(i,e,o,1)),e=Xe(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(ue(i,e,o,1)),t}function Uo(i){return new this(i).cbrt()}function Xo(i){return D(i=new this(i),i.e+1,2)}function zo(i,e,t){return new this(i).clamp(e,t)}function Ho(i){if(!i||typeof i!="object")throw Error(kn+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,kt,"rounding",0,8,"toExpNeg",-Et,0,"toExpPos",0,Et,"maxE",0,Et,"minE",-Et,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=jn[t]),(n=i[t])!==void 0)if(Ne(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(gt+t+": "+n);if(t="crypto",r&&(this[t]=jn[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(Ji);else this[t]=!1;else throw Error(gt+t+": "+n);return this}function Qo(i){return new this(i).cos()}function Yo(i){return new this(i).cosh()}function sr(i){var e,t,n;function r(o){var s,a,c,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,Yi(o)){u.s=o.s,H?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;H?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return $n(u,o.toString())}else if(c!=="string")throw Error(gt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),er.test(o)?$n(u,o):Mo(u,o)}if(r.prototype=S,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=Ho,r.clone=sr,r.isDecimal=Yi,r.abs=Eo,r.acos=vo,r.acosh=_o,r.add=Wo,r.asin=Fo,r.asinh=Vo,r.atan=Do,r.atanh=qo,r.atan2=Go,r.cbrt=Uo,r.ceil=Xo,r.clamp=zo,r.cos=Qo,r.cosh=Yo,r.div=jo,r.exp=Zo,r.floor=Jo,r.hypot=$o,r.ln=es,r.log=ts,r.log10=is,r.log2=ns,r.max=rs,r.min=os,r.mod=ss,r.mul=as,r.pow=us,r.random=cs,r.round=ls,r.sign=ms,r.sin=ps,r.sinh=ds,r.sqrt=fs,r.sub=bs,r.sum=ys,r.tan=gs,r.tanh=ks,r.trunc=Ps,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 jo(i,e){return new this(i).div(e)}function Zo(i){return new this(i).exp()}function Jo(i){return D(i=new this(i),i.e+1,3)}function $o(){var i,e,t=new this(0);for(H=!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 H=!0,new this(1/0);t=e}return H=!0,t.sqrt()}function Yi(i){return i instanceof zt||i&&i.toStringTag===$i||!1}function es(i){return new this(i).ln()}function ts(i,e){return new this(i).log(e)}function ns(i){return new this(i).log(2)}function is(i){return new this(i).log(10)}function rs(){return ir(this,arguments,"lt")}function os(){return ir(this,arguments,"gt")}function ss(i,e){return new this(i).mod(e)}function as(i,e){return new this(i).mul(e)}function us(i,e){return new this(i).pow(e)}function cs(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Me(i,1,kt),n=Math.ceil(i/U),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]:a[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):(a.push(r%1e7),o+=4);o=n/4}else throw Error(Ji);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=U,n&&i&&(r=Be(10,U-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=U)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<U&&(t-=U-n)}return s.e=t,s.d=a,s}function ls(i){return D(i=new this(i),i.e+1,this.rounding)}function ms(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function ps(i){return new this(i).sin()}function ds(i){return new this(i).sinh()}function fs(i){return new this(i).sqrt()}function bs(i,e){return new this(i).sub(e)}function ys(){var i=0,e=arguments,t=new this(e[i]);for(H=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return H=!0,D(t,this.precision,this.rounding)}function gs(i){return new this(i).tan()}function ks(i){return new this(i).tanh()}function Ps(i){return D(i=new this(i),i.e+1,1)}S[Symbol.for("nodejs.util.inspect.custom")]=S.toString;S[Symbol.toStringTag]="Decimal";var zt=S.constructor=sr(jn);bn=new zt(bn);yn=new zt(yn);var _=zt;import{PublicKey as cr}from"@solana/web3.js";import{get as ar,set as As}from"lodash";var ti=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}},ur={},ws={};function ce(i){let e=ar(ur,i);if(!e){let t=ar(ws,i);e=new ti({name:i,logLevel:t}),As(ur,i,e)}return e}import{MINT_SIZE as hs,TOKEN_PROGRAM_ID as Ts,getTransferFeeConfig as Bs,unpackMint as Is}from"@solana/spl-token";var ni=ce("Raydium_accountInfo_util");async function st(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=q({batchRequest:!1},t),s=ii(e,o),a=new Array(s.length).fill([]);if(n){let c=s.map(p=>{let m=i._buildArgs([p.map(d=>d.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=ii(c,10);a=(await(await Promise.all(u.map(async p=>await i._rpcBatchRequest(p)))).flat()).map(p=>(p.error&&ni.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${p.error.message}`),p.result.value.map(m=>{if(m){let{data:d,executable:y,lamports:f,owner:b,rentEpoch:g}=m;return d.length!==2&&d[1]!=="base64"&&ni.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:y,lamports:f,owner:new cr(b),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(c=>i.getMultipleAccountsInfo(c,r)))}catch(c){c instanceof Error&&ni.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function Bt(i,e,t){let n=await st(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>j(q({},r),{accountInfo:n[o]}))}async function ri({connection:i,mints:e,config:t}){var o,s,a;if(e.length===0)return{};let n=await Bt(i,e.map(c=>({pubkey:$e(c)})),t),r={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<hs){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=Is(c.pubkey,c.accountInfo,(o=c.accountInfo)==null?void 0:o.owner);r[c.pubkey.toString()]=j(q({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||Ts,feeConfig:(a=Bs(u))!=null?a:void 0})}return r[cr.default.toBase58()]=r[He.toBase58()],r}import ut from"bn.js";import Ms from"big.js";import Tn from"bn.js";import xs from"toformat";var Ss=xs,Ht=Ss;import hn from"big.js";import Cs from"bn.js";import Ns from"decimal.js-light";import Qt from"bn.js";var lr=9007199254740991;function le(i){let e=ce("Raydium_parseBigNumberish");if(i instanceof Qt)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Qt(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=lr||i<=-lr)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Qt(String(i))):typeof i=="bigint"?new Qt(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Qt(0))}var wn=ce("module/fraction"),oi=Ht(hn),Yt=Ht(Ns),Ls={[0]:Yt.ROUND_DOWN,[1]:Yt.ROUND_HALF_UP,[2]:Yt.ROUND_UP},Rs={[0]:hn.roundDown,[1]:hn.roundHalfUp,[2]:hn.roundUp},oe=class{constructor(e,t=new Cs(1)){this.numerator=le(e),this.denominator=le(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new oe(this.denominator,this.numerator)}add(e){let t=e instanceof oe?e:new oe(le(e));return this.denominator.eq(t.denominator)?new oe(this.numerator.add(t.numerator),this.denominator):new oe(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof oe?e:new oe(le(e));return this.denominator.eq(t.denominator)?new oe(this.numerator.sub(t.numerator),this.denominator):new oe(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof oe?e:new oe(le(e));return new oe(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof oe?e:new oe(le(e));return new oe(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||wn.logWithError(`${e} is not an integer.`),e<=0&&wn.logWithError(`${e} is not positive.`),Yt.set({precision:e+1,rounding:Ls[n]});let r=new Yt(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)||wn.logWithError(`${e} is not an integer.`),e<0&&wn.logWithError(`${e} is negative.`),oi.DP=e,oi.RM=Rs[n]||1,new oi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Os=ce("Raydium_amount"),mr=Ht(Ms);function Es(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")):Os.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var me=class extends oe{constructor(t,n,r=!0,o){let s=new Tn(0),a=si.pow(new Tn(t.decimals));if(r)s=le(n);else{let c=new Tn(0),u=new Tn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,p]=Es(n.toString(),t.decimals);c=le(l),u=le(p)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=ce(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 me(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new me(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 mr.DP=this.token.decimals,new mr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as vs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as pr}from"@solana/spl-token";var ai={chainId:101,address:vs.default.toBase58(),programId:pr.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:pr.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 li}from"@solana/web3.js";import{PublicKey as be,SystemProgram as dr,SYSVAR_RENT_PUBKEY as _s}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ws}from"@solana/spl-token";function K({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var sc=[K({pubkey:Ws,isWritable:!1}),K({pubkey:dr.programId,isWritable:!1}),K({pubkey:_s,isWritable:!1})];function ui({publicKey:i,transformSol:e}){let t=ci(i.toString());if(t instanceof be)return e&&t.equals(jt)?He:t;if(e&&t.toString()===jt.toBase58())return He;if(typeof t=="string"){if(t===be.default.toBase58())return be.default;try{return new be(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ci(i){try{return new be(i)}catch{return i}}var Bn=new be("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),_t=new be("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new be("SysvarRent111111111111111111111111111111111"),ac=new be("SysvarC1ock11111111111111111111111111111111"),Pt=new be("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),uc=new be("Sysvar1nstructions1111111111111111111111111"),Fs=dr.programId,cc=new be("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),lc=new be("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),mc=new be("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),pc=new be("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),dc=new be("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),fc=new be("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),bc=new be("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),yc=new be("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),gc=new be("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),kc=new be("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Pc=new be("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),He=new be("So11111111111111111111111111111111111111112"),jt=be.default;function $e(i){return ui({publicKey:i,transformSol:!0})}var mi=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===jt.toBase58()||e instanceof li&&jt.equals(e)){this.decimals=et.decimals,this.symbol=et.symbol,this.name=et.name,this.mint=new li(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?li.default:ui({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ve=mi;ve.WSOL=new mi(j(q({},et),{mint:et.address}));var pi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},In=pi;In.SOL=new pi(ai);import Vs from"bn.js";var fr=new oe(new Vs(100)),at=class extends oe{toSignificant(e=5,t,n){return this.mul(fr).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(fr).toFixed(e,t,n)}};var Ds=ce("Raydium_price"),Oe=class extends oe{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new oe(di(n.decimals),di(r.decimals))}get raw(){return new oe(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Oe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Ds.logWithError("mul token not equals");let n=super.mul(t);return new Oe({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 qs}from"@solana/web3.js";import Gs from"bn.js";function yr(i){return typeof i=="object"&&i!==null&&![ve,me,qs,oe,Gs,Oe,at].some(e=>typeof e=="object"&&i instanceof e)}function It(i){return typeof i=="string"?ci(i):Array.isArray(i)?i.map(e=>It(e)):yr(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,It(t)])):i}var br=new ut(0),Us=new ut(1),fl=new ut(2),bl=new ut(3),yl=new ut(5),si=new ut(10),gl=new ut(100),kl=new ut(1e3),Pl=new ut(1e4);function di(i){return si.pow(le(i))}function ii(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 Zs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Js}from"@solana/spl-token";import{ComputeBudgetProgram as gr,Keypair as Pr,PublicKey as Xs,Transaction as Ar,TransactionMessage as zs,VersionedTransaction as wr}from"@solana/web3.js";var te={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 Hs}from"@solana/spl-token";var kr=ce("Raydium_txUtil"),hr=1644;function xn(i){let e=[],t=[];return i.microLamports&&(e.push(gr.setComputeUnitPrice({microLamports:i.microLamports})),t.push(te.SetComputeUnitPrice)),i.units&&(e.push(gr.setComputeUnitLimit({units:i.units})),t.push(te.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Wt(i,e){var n,r;let t=e!=null?e:"confirmed";return(r=await((n=i.getLatestBlockhash)==null?void 0:n.call(i,{commitment:t})))==null?void 0:r.blockhash}async function Sn(i,e){return i.getSignatureStatuses([e]),new Promise((t,n)=>{let r=setTimeout(n,6e4);i.onSignature(e,o=>{if(clearTimeout(r),!o.err){t("");return}n(Object.assign(o.err,{txId:e}))},"confirmed")})}function Qs(i,e){i.length<1&&kr.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&kr.logWithError(`no signers provided:, ${e.toString()}`);let t=new Ar;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<hr}catch{return!1}}function we(i,e){let[t,n]=Xs.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Zt({instructions:i,payer:e,signers:t}){return Qs(i,[e,...t])}function Jt({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Pr.generate().publicKey.toString()}){let o=new zs({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new wr(o).serialize()).toString("base64").length<hr}catch{return!1}}var Ys=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),js=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof wr&&(e=Ys(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function xt(i){let e=[];return i.forEach(t=>{t instanceof Ar&&(t.recentBlockhash||(t.recentBlockhash=Hs.toBase58()),t.feePayer||(t.feePayer=Pr.generate().publicKey)),e.push(js(t))}),console.log("simulate tx string:",e),e}function pe(i,e,t){return we([i.toBuffer(),(t!=null?t:Js).toBuffer(),e.toBuffer()],new Zs("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as $}from"@solana/web3.js";var Vl=new $("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Dl=new $("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),ql=new $("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Gl=new $("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Ul=new $("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Xl=new $("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),fi=new $("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Tr=new $("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),zl=new $("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Br=new $("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),bi=new $("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),$s=new $("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ea=new $("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Hl=new $("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ql=new $("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Yl=new $("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),jl=new $("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Zl=new $("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Jl=new $("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),yi=new $("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ta=new $("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),$l=new $("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),na=new $("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),ia=new $("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),ra=new $("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),em=new $("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),oa=new $("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),tm=new $("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),sa=new $("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var nm={SERUM_MARKET:$.default,OPENBOOK_MARKET:new $("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:$.default,FarmV3:new $("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new $("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new $("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new $("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new $("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new $("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new $("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new $("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new $("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:na,CREATE_CPMM_POOL_AUTH:ia,CREATE_CPMM_POOL_FEE_ACC:ra,FEE_DESTINATION_ID:new $("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:oa,LCOK_CPMM_AUTH:sa};import Qe from"bn.js";var $t=1e4;function Pe(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=j(q({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new Qe(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===$t){let c=new Qe(o.maximumFee.toString());return{amount:i.add(c),fee:c,expirationTime:a}}else{let c=Kn(i.mul(new Qe($t)),new Qe($t-o.transferFeeBasisPoints)),u=new Qe(o.maximumFee.toString()),l=c.sub(i).gt(u)?i.add(u):c,p=Kn(l.mul(new Qe(o.transferFeeBasisPoints)),new Qe($t)),m=p.gt(s)?s:p;return{amount:l,fee:m,expirationTime:a}}else{let c=Kn(i.mul(new Qe(o.transferFeeBasisPoints)),new Qe($t)),u=c.gt(s)?s:c;return{amount:i,fee:u,expirationTime:a}}}function Ye(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Kn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Qe(0))?t.add(new Qe(1)):t}import{PublicKey as Ir,AddressLookupTableAccount as Cn}from"@solana/web3.js";async function gi({connection:i,address:e}){let t=await st(i,[...new Set(e.map(r=>r.toString()))].map(r=>new Ir(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new Cn({key:s,state:Cn.deserialize(o.data)});n[s.toString()]=a,Nn[s.toString()]=a}return n}var Nn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Cn({key:new Ir("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Cn.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 Ft,sendAndConfirmTransaction as ki,SystemProgram as aa,Transaction as en,TransactionMessage as tn,VersionedTransaction as nn}from"@solana/web3.js";import ua from"axios";var Ln=2e3,Rn=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await ua.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=xn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){return e?(this.endInstructions.push(aa.transfer({fromPubkey:this.owner.publicKey,toPubkey:new Ft(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(te.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Ft.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(q({},t||{})):this.build(t)}build(e){var n;let t=new en;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(r=>r.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async r=>{var u;let{recentBlockHash:o,skipPreflight:s=!0,sendAndConfirm:a}=r||{},c=o!=null?o:await Wt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),xt([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await ki(this.connection,t,this.signers.find(p=>p.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),o=t.filter(l=>l.transaction.instructions.length>0),s=[r,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],c=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(p=>p.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async l=>{var g;let{sequentially:p,onTxUpdate:m,skipTxCount:d=0,recentBlockHash:y,skipPreflight:f=!0}=l||{},b=y!=null?y:await Wt(this.connection,this.blockhashCommitment);if((g=this.owner)!=null&&g.isKeyPair){if(p){let A=[],w=0;for(let h of s){if(++w,w<=d)continue;let B=await ki(this.connection,h,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});A.push(B)}return{txIds:A,signedTxs:s}}return{txIds:await await Promise.all(s.map(async A=>(A.recentBlockhash=b,await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:f})))),signedTxs:s}}if(this.signAllTransactions){let A=s.map((h,B)=>(h.recentBlockhash=b,a[B].length&&h.sign(...a[B]),h));xt(A);let w=await this.signAllTransactions(A);if(p){let h=0,B=[],P=async()=>{if(!w[h])return;let I=await this.connection.sendRawTransaction(w[h].serialize(),{skipPreflight:f});B.push({txId:I,status:"sent",signedTx:w[h]}),m==null||m([...B]),h++;let x=!1,R=null,T=null,N=V=>{R!==null&&clearInterval(R),T!==null&&this.connection.removeSignatureListener(T);let E=B.findIndex(J=>J.txId===I);if(E>-1){if(B[E].status==="error"||B[E].status==="success")return;B[E].status=V.err?"error":"success"}m==null||m([...B]),V.err||P()};this.loopMultiTxStatus&&(R=setInterval(async()=>{var V;if(x){clearInterval(R);return}try{let E=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});E&&(x=!0,clearInterval(R),N({err:((V=E.meta)==null?void 0:V.err)||null}),console.log("tx status from getTransaction:",I))}catch(E){x=!0,clearInterval(R),console.error("getTransaction timeout:",E,I)}},Ln)),T=this.connection.onSignature(I,V=>{if(x){this.connection.removeSignatureListener(T);return}x=!0,N(V)},"confirmed"),this.connection.getSignatureStatus(I)};return await P(),{txIds:B.map(I=>I.txId),signedTxs:w}}else{let h=[];for(let B=0;B<w.length;B+=1){let P=await this.connection.sendRawTransaction(w[B].serialize(),{skipPreflight:f});h.push(P)}return{txIds:h,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var f;let y=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r,recentBlockhash:o}=y,s=Tt(y,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=q(q({},this.cluster==="devnet"?{}:Nn),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let b of c)a[b]===void 0&&u.push(new Ft(b));let l=await gi({connection:this.connection,address:u});for(let[b,g]of Object.entries(l))a[b]=g;let p=r?Ft.default.toBase58():o!=null?o:await Wt(this.connection,this.blockhashCommitment),m=new tn({payerKey:this.feePayer,recentBlockhash:p,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((f=this.owner)==null?void 0:f.signer)&&!this.signers.some(b=>b.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let d=new nn(m);return d.sign(this.signers),{builder:this,transaction:d,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var w;let{skipPreflight:g=!0,sendAndConfirm:A}=b||{};if(xt([d]),(w=this.owner)!=null&&w.isKeyPair){let h=await this.connection.sendTransaction(d,{skipPreflight:g});return A&&await Sn(this.connection,h),{txId:h,signedTx:d}}if(this.signAllTransactions){let h=await this.signAllTransactions([d]);return{txId:await this.connection.sendTransaction(h[0],{skipPreflight:g}),signedTx:h[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),o=t.filter(l=>l.builder.instructions.length>0),s=[r,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],c=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(p=>p.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,p)=>{l.sign(a[p])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async l=>{var f;let{sequentially:p,onTxUpdate:m,recentBlockHash:d,skipPreflight:y=!0}=l||{};if(d&&s.forEach(b=>b.message.recentBlockhash=d),xt(s),(f=this.owner)!=null&&f.isKeyPair){if(p){let b=[];for(let g of s){let A=await this.connection.sendTransaction(g,{skipPreflight:y});await Sn(this.connection,A),b.push(A)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(p){let g=0,A=[],w=async()=>{if(!b[g])return;let h=await this.connection.sendTransaction(b[g],{skipPreflight:y});A.push({txId:h,status:"sent",signedTx:b[g]}),m==null||m([...A]),g++;let B=!1,P=null,I=null,x=R=>{P!==null&&clearInterval(P),I!==null&&this.connection.removeSignatureListener(I);let T=A.findIndex(N=>N.txId===h);if(T>-1){if(A[T].status==="error"||A[T].status==="success")return;A[T].status=R.err?"error":"success"}m==null||m([...A]),R.err||w()};this.loopMultiTxStatus&&(P=setInterval(async()=>{var R;if(B){clearInterval(P);return}try{let T=await this.connection.getTransaction(h,{commitment:"confirmed",maxSupportedTransactionVersion:0});T&&(B=!0,clearInterval(P),x({err:((R=T.meta)==null?void 0:R.err)||null}),console.log("tx status from getTransaction:",h))}catch(T){B=!0,clearInterval(P),console.error("getTransaction timeout:",T,h)}},Ln)),I=this.connection.onSignature(h,R=>{if(B){this.connection.removeSignatureListener(I);return}B=!0,x(R)},"confirmed"),this.connection.getSignatureStatus(h)};return w(),{txIds:[],signedTxs:b}}else{let g=[];for(let A=0;A<b.length;A+=1){let w=await this.connection.sendTransaction(b[A],{skipPreflight:y});g.push(w)}return{txIds:g,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var m;let p=e||{},{splitIns:t=[],computeBudgetConfig:n}=p,r=Tt(p,["splitIns","computeBudgetConfig"]),o=n?xn(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((d,y)=>j(q({},d),{[y.publicKey.toBase58()]:y}),{}),a=[],c=[],u=[],l=0;if(this.allInstructions.forEach(d=>{let y=[...u,d],f=n?[...o.instructions,...y]:y,g=[...new Set(y.map(A=>A.keys.filter(w=>w.isSigner).map(w=>w.pubkey.toString())).flat()).values()].map(A=>new Ft(A));if(d!==t[l]&&u.length<12&&(Zt({instructions:f,payer:this.feePayer,signers:g})||Zt({instructions:y,payer:this.feePayer,signers:g})))u.push(d);else{if(u.length===0)throw Error("item ins too big");l+=d===t[l]?1:0,Zt({instructions:n?[...o.instructions,...u]:[...u],payer:this.feePayer,signers:g})?a.push(new en().add(...o.instructions,...u)):a.push(new en().add(...u)),c.push(Array.from(new Set(u.map(A=>A.keys.filter(w=>w.isSigner).map(w=>w.pubkey.toString())).flat())).map(A=>s[A]).filter(A=>A!==void 0)),u=[d]}}),u.length>0){let y=[...new Set(u.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>s[f]).filter(f=>f!==void 0);Zt({instructions:n?[...o.instructions,...u]:[...u],payer:this.feePayer,signers:y.map(f=>f.publicKey)})?a.push(new en().add(...o.instructions,...u)):a.push(new en().add(...u)),c.push(y)}return a.forEach(d=>d.feePayer=this.feePayer),(m=this.owner)!=null&&m.signer&&c.forEach(d=>{d.some(y=>y.publicKey.equals(this.owner.publicKey))||d.push(this.owner.signer)}),{builder:this,transactions:a,signers:c,instructionTypes:this.instructionTypes,execute:async d=>{var h;let{sequentially:y,onTxUpdate:f,skipTxCount:b=0,recentBlockHash:g,skipPreflight:A=!0}=d||{},w=g!=null?g:await Wt(this.connection,this.blockhashCommitment);if(a.forEach(async(B,P)=>{B.recentBlockhash=w,c[P].length&&B.sign(...c[P])}),xt(a),(h=this.owner)!=null&&h.isKeyPair){if(y){let B=0,P=[];for(let I of a){if(++B,B<=b){P.push("tx skipped");continue}let x=await ki(this.connection,I,this.signers.find(R=>R.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});P.push(x)}return{txIds:P,signedTxs:a}}return{txIds:await Promise.all(a.map(async B=>await this.connection.sendRawTransaction(B.serialize(),{skipPreflight:A}))),signedTxs:a}}if(this.signAllTransactions){let B=await this.signAllTransactions(a.slice(b,a.length)),P=[...a.slice(0,b),...B];if(y){let I=0,x=[],R=async()=>{if(!P[I])return;I<b&&(x.push({txId:"",status:"success",signedTx:P[I]}),f==null||f([...x]),I++,R());let T=await this.connection.sendRawTransaction(P[I].serialize(),{skipPreflight:A});x.push({txId:T,status:"sent",signedTx:P[I]}),f==null||f([...x]),I++;let N=!1,V=null,E=null,J=G=>{V!==null&&clearInterval(V),E!==null&&this.connection.removeSignatureListener(E);let v=x.findIndex(qe=>qe.txId===T);if(v>-1){if(x[v].status==="error"||x[v].status==="success")return;x[v].status=G.err?"error":"success"}f==null||f([...x]),G.err||R()};this.loopMultiTxStatus&&(V=setInterval(async()=>{var G;if(N){clearInterval(V);return}try{let v=await this.connection.getTransaction(T,{commitment:"confirmed",maxSupportedTransactionVersion:0});v&&(N=!0,clearInterval(V),J({err:((G=v.meta)==null?void 0:G.err)||null}),console.log("tx status from getTransaction:",T))}catch(v){N=!0,clearInterval(V),console.error("getTransaction timeout:",v,T)}},Ln)),E=this.connection.onSignature(T,G=>{if(N){this.connection.removeSignatureListener(E);return}N=!0,J(G)},"confirmed"),this.connection.getSignatureStatus(T)};return await R(),{txIds:x.map(T=>T.txId),signedTxs:P}}else{let I=[];for(let x=0;x<P.length;x+=1){let R=await this.connection.sendRawTransaction(P[x].serialize(),{skipPreflight:A});I.push(R)}return{txIds:I,signedTxs:P}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuildV0(e){var w;let A=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:r={},lookupTableAddress:o=[]}=A,s=Tt(A,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress"]),a=q(q({},this.cluster==="devnet"?{}:Nn),r),c=Array.from(new Set([...this.lookupTableAddress,...o])),u=[];for(let h of c)a[h]===void 0&&u.push(new Ft(h));let l=await gi({connection:this.connection,address:u});for(let[h,B]of Object.entries(l))a[h]=B;let p=t?xn(t):{instructions:[],instructionTypes:[]},m=await Wt(this.connection,this.blockhashCommitment),d=this.signers.reduce((h,B)=>j(q({},h),{[B.publicKey.toBase58()]:B}),{}),y=[],f=[],b=[],g=0;if(this.allInstructions.forEach(h=>{let B=[...b,h],P=t?[...p.instructions,...B]:B;if(h!==n[g]&&b.length<12&&(Jt({instructions:P,payer:this.feePayer,lookupTableAddressAccount:a})||Jt({instructions:B,payer:this.feePayer,lookupTableAddressAccount:a})))b.push(h);else{if(b.length===0)throw Error("item ins too big");g+=h===n[g]?1:0;let I={};for(let x of[...new Set(c)])a[x]!==void 0&&(I[x]=a[x]);if(t&&Jt({instructions:[...p.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:m})){let x=new tn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...p.instructions,...b]}).compileToV0Message(Object.values(a));y.push(new nn(x))}else{let x=new tn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...b]}).compileToV0Message(Object.values(a));y.push(new nn(x))}f.push(Array.from(new Set(b.map(x=>x.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat())).map(x=>d[x]).filter(x=>x!==void 0)),b=[h]}}),b.length>0){let B=[...new Set(b.map(P=>P.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(P=>d[P]).filter(P=>P!==void 0);if(t&&Jt({instructions:[...p.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:m})){let P=new tn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...p.instructions,...b]}).compileToV0Message(Object.values(a));y.push(new nn(P))}else{let P=new tn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...b]}).compileToV0Message(Object.values(a));y.push(new nn(P))}f.push(B)}return(w=this.owner)!=null&&w.signer&&f.forEach(h=>{h.some(B=>B.publicKey.equals(this.owner.publicKey))||h.push(this.owner.signer)}),{builder:this,transactions:y,buildProps:e,signers:f,instructionTypes:this.instructionTypes,execute:async h=>{var T;let{sequentially:B,onTxUpdate:P,skipTxCount:I=0,recentBlockHash:x,skipPreflight:R=!0}=h||{};if(y.map(async(N,V)=>{f[V].length&&N.sign(f[V]),x&&(N.message.recentBlockhash=x)}),xt(y),(T=this.owner)!=null&&T.isKeyPair){if(B){let N=0,V=[];for(let E of y){if(++N,N<=I){console.log("skip tx: ",N),V.push("tx skipped");continue}let J=await this.connection.sendTransaction(E,{skipPreflight:R});await Sn(this.connection,J),V.push(J)}return{txIds:V,signedTxs:y}}return{txIds:await Promise.all(y.map(async N=>await this.connection.sendTransaction(N,{skipPreflight:R}))),signedTxs:y}}if(this.signAllTransactions){let N=await this.signAllTransactions(y.slice(I,y.length)),V=[...y.slice(0,I),...N];if(B){let E=0,J=[],G=async()=>{if(!V[E])return;if(E<I){J.push({txId:"",status:"success",signedTx:V[E]}),P==null||P([...J]),E++,G();return}let v=await this.connection.sendTransaction(V[E],{skipPreflight:R});J.push({txId:v,status:"sent",signedTx:V[E]}),P==null||P([...J]),E++;let qe=!1,ft=null,ht=null,Ut=Ze=>{ft!==null&&clearInterval(ft),ht!==null&&this.connection.removeSignatureListener(ht);let Ge=J.findIndex(To=>To.txId===v);if(Ge>-1){if(J[Ge].status==="error"||J[Ge].status==="success")return;J[Ge].status=Ze.err?"error":"success"}P==null||P([...J]),Ze.err||G()};this.loopMultiTxStatus&&(ft=setInterval(async()=>{var Ze;if(qe){clearInterval(ft);return}try{let Ge=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ge&&(qe=!0,clearInterval(ft),Ut({err:((Ze=Ge.meta)==null?void 0:Ze.err)||null}),console.log("tx status from getTransaction:",v))}catch(Ge){qe=!0,clearInterval(ft),console.error("getTransaction timeout:",Ge,v)}},Ln)),ht=this.connection.onSignature(v,Ze=>{if(qe){this.connection.removeSignatureListener(ht);return}qe=!0,Ut(Ze)},"confirmed"),this.connection.getSignatureStatus(v)};return G(),{txIds:[],signedTxs:V}}else{let E=[];for(let J=0;J<V.length;J+=1){let G=await this.connection.sendTransaction(V[J],{skipPreflight:R});E.push(G)}return{txIds:E,signedTxs:V}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};import{PublicKey as ga}from"@solana/web3.js";import Nr,{isBN as Lr}from"bn.js";import{bits as Dm,BitStructure as qm,blob as ca,Blob as Gm,cstr as Um,f32 as Xm,f32be as zm,f64 as Hm,f64be as Qm,greedy as Ym,Layout as la,ns64 as jm,ns64be as Zm,nu64 as Jm,nu64be as $m,offset as ep,s16 as tp,s16be as np,s24 as ip,s24be as rp,s32 as ma,s32be as op,s40 as sp,s40be as ap,s48 as up,s48be as cp,s8 as lp,seq as pa,struct as mp,Structure as da,u16 as fa,u16be as pp,u24 as dp,u24be as fp,u32 as bp,u32be as yp,u40 as gp,u40be as kp,u48 as Pp,u48be as Ap,u8 as ba,UInt as ya,union as wp,Union as hp,unionLayoutDiscriminator as Tp,utf8 as Bp}from"@solana/buffer-layout";var Pi=la,Sr=da;var Ai=ya;var Kr=ba,St=fa;var de=ma;var Cr=pa;var he=ca;var Vt=class extends Pi{constructor(t,n,r){super(t,r);this.blob=he(t),this.signed=n}decode(t,n=0){let r=new Nr(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 Nr(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function z(i){return new Ai(1,i)}function _e(i){return new Ai(4,i)}function k(i){return new Vt(8,!1,i)}function Q(i){return new Vt(16,!1,i)}function Rr(i){return new Vt(8,!0,i)}function Mr(i){return new Vt(16,!0,i)}var Mn=class extends Pi{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 L(i){return new Mn(he(32),e=>new ga(e),e=>e.toBuffer(),i)}function xe(i){return new Mn(Kr(),ka,Pa,i)}function ka(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Pa(i){return i?1:0}var wi=class extends Sr{decode(e,t){return super.decode(e,t)}};function W(i,e,t){return new wi(i,e,t)}function ne(i,e,t){let n,r=typeof e=="number"?e:Lr(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Lr(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return Cr(i,r,t)}import{PublicKey as _f}from"@solana/web3.js";import Ff from"bn.js";import{AccountLayout as Gf,TOKEN_2022_PROGRAM_ID as Uf,TOKEN_PROGRAM_ID as Xf}from"@solana/spl-token";import{PublicKey as Fp}from"@solana/web3.js";import{MintLayout as Dp,TOKEN_PROGRAM_ID as Gp}from"@solana/spl-token";var Or=i=>new ve({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name}),rn=r=>{var o=r,{amount:i,isRaw:e,name:t}=o,n=Tt(o,["amount","isRaw","name"]);return new me(new ve({mint:$e(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),i,e,t)};var Kt=r=>{var o=r,{address:i,programId:e,decimals:t}=o,n=Tt(o,["address","programId","decimals"]);return q({chainId:101,address:$e(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};var hi=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Dt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ce(t)}createTxBuilder(e){return this.scope.checkOwner(),new Rn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(hi(e))}logInfo(...e){this.logger.info(hi(e))}logAndCreateError(...e){let t=hi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{Keypair as Vn,PublicKey as C,SystemProgram as pt,TransactionInstruction as Ce}from"@solana/web3.js";import Ri from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as ln,TOKEN_2022_PROGRAM_ID as ke,TOKEN_PROGRAM_ID as ae}from"@solana/spl-token";import Ca from"bn.js";import Ue from"bn.js";var ye=new Ue(0),We=new Ue(1),ct=new Ue(-1),Fe=new Ue(1).shln(64),On=new Ue(1).shln(128),Ti=Fe.sub(We),on=64,Er=On.subn(1),Le=-443636,Re=-Le,nt=new Ue("4295048016"),it=new Ue("79226673521066979257578248091"),En=new Ue("4295048017"),vn=new Ue("79226673521066979257578248090"),vr=16,_r="59543866431248",Wr="184467440737095516",Fr="15793534762490258745",_n=new Ue(10).pow(new Ue(6));var ed=new Ue("18446744073700000000");import ee from"bn.js";function Wn(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Bi(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Ii(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function sn(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Vr(i,e){return sn(i,e)?null:Bi(i,e)}function Dr(i,e){return sn(i,e)?null:Ii(i,e)}var sd=Buffer.from("amm_config","utf8"),Aa=Buffer.from("pool","utf8"),wa=Buffer.from("pool_vault","utf8"),ha=Buffer.from("pool_reward_vault","utf8"),qr=Buffer.from("position","utf8"),Ta=Buffer.from("tick_array","utf8"),Ba=Buffer.from("operation","utf8"),Ia=Buffer.from("pool_tick_array_bitmap_extension","utf8"),xa=Buffer.from("observation","utf8");function Gr(i,e,t,n){return we([Aa,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function xi(i,e,t){return we([wa,e.toBuffer(),t.toBuffer()],i)}function Ur(i,e,t){return we([ha,e.toBuffer(),t.toBuffer()],i)}function se(i,e,t){return we([Ta,e.toBuffer(),Wn(t)],i)}function lt(i,e,t,n){return we([qr,e.toBuffer(),Wn(t),Wn(n)],i)}function Ee(i,e){return we([qr,e.toBuffer()],i)}function qt(i){return we([Buffer.from("metadata","utf8"),Pt.toBuffer(),i.toBuffer()],Pt)}function Fn(i){return we([Ba],i)}function Te(i,e){return we([Ia,e.toBuffer()],i)}function Xr(i,e){return we([xa,e.toBuffer()],i)}var zr=Buffer.from("locked_position","utf8");function Si(i,e){return we([zr,e.toBuffer()],i)}function Ki(i,e){return we([zr,e.toBuffer()],i)}import{PublicKey as Ve}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Hr}from"@solana/spl-token";import fe from"bn.js";import rt from"bn.js";var an=class{static getfeeGrowthInside(e,t,n){let r=new rt(0),o=new rt(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new rt(0),a=new rt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let c=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),u=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Fe),c=t.tokenFeesOwedA.add(a),u=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Fe),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Fe),c=t.tokenFeesOwedA.add(a),u=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Fe),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=Z.wrappingSubU128(c,u.growthInsideLastX64),p=Z.mulDivFloor(l,t.liquidity,Fe),m=u.rewardAmountOwed.add(p);o.push(m)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=Z.wrappingSubU128(c,u.growthInsideLastX64),p=Z.mulDivFloor(l,t.liquidity,Fe),m=u.rewardAmountOwed.add(p);o.push(m)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new rt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let c=new rt(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new rt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let c=new rt(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var b,g,A,w;let a=Y.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),c=Y.getSqrtPriceX64FromTick(t.tickLower),u=Y.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,p=re.getAmountsFromLiquidity(a,c,u,n,o),[m,d]=[Pe(p.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Pe(p.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[Pe(new rt(new _(p.amountA.toString()).mul(l).toFixed(0)),(A=e.mintA.extensions)==null?void 0:A.feeConfig,s,!0),Pe(new rt(new _(p.amountB.toString()).mul(l).toFixed(0)),(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)];return{liquidity:n,amountA:m,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:Ye(m.expirationTime,d.expirationTime)}}};var Sa=15,ie=class{static async getTickArrays(e,t,n,r,o,s,a){let c=[],u=F.getTickArrayStartIndexByTick(r,o),l=F.getInitializedTickArrayInRange(s,a,o,u,Math.floor(Sa/2));for(let d=0;d<l.length;d++){let{publicKey:y}=se(t,n,l[d]);c.push(y)}let p=(await st(e,c)).map(d=>d!==null?un.decode(d.data):null),m={};for(let d=0;d<c.length;d++){let y=p[d];y!==null&&(m[y.startTickIndex]=j(q({},y),{address:c[d]}))}return m}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(u=F.getNextTickArrayStartIndex(u,o,s),this.checkIsValidStartIndex(u,o))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:p,tickArrayAddress:m,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[p,m,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/ie.tickCount(t)),a=n?F.searchLowBitFromStart(r,o,s-1,1,t):F.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=Ie-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a-1}}else{let a=0;for(;a<Ie;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=se(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=F.getTickArrayStartIndexByTick(r,o),c=Math.floor((r-a)/o),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c-1}else for(c=c+1;c<Ie;){let m=u.ticks[c];if(m.liquidityGross.gtn(0)){l=m;break}c=c+1}let{publicKey:p}=se(e,t,a);return{initializedTick:l,tickArrayAddress:p,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(F.checkIsOutOfBoundary(e)){if(e>Re)return!1;let n=F.getTickArrayStartIndexByTick(Le,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Ie*e}};var Ci=14,mt=class{static maxTickInTickarrayBitmap(e){return e*Ie*Ct}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(!ie.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-ie.tickCount(n):t+ie.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Ie,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(r){let l=e.shln(1024-u-1),p=Vr(1024,l);if(p!==null){let m=(u-p-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),p=Dr(1024,l);if(p!==null){let m=(u+p-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o-ie.tickCount(n)}}}},cn=class{static getBitmapOffset(e,t){if(!ie.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=mt.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=mt.maxTickInTickarrayBitmap(e),n=-t;if(Re<=t)throw Error(`extensionTickBoundary check error: ${Re}, ${t}`);if(n<=Le)throw Error(`extensionTickBoundary check error: ${n}, ${Le}`);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:F.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=ie.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=mt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let c=F.mergeTickArrayBitmap(e).shln(Ct-1-a),u=sn(512,c)?null:Bi(512,c);if(u!==null){let l=t-u*ie.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=F.mergeTickArrayBitmap(e).shrn(a),u=sn(512,c)?null:Ii(512,c);if(u!==null){let l=t+u*ie.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-ie.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%mt.maxTickInTickarrayBitmap(t),r=Math.floor(n/ie.tickCount(t));return e<0&&n!=0&&(r=Ct-r),r}};var ge=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:l,nextAccountMeta:p}=this.getFirstInitializedTickArray(e,a);if(!u||l===void 0||!p)throw new Error("Invalid tick array");c.push(p);let{allTrade:m,amountCalculated:d,accounts:y,sqrtPriceX64:f,feeAmount:b}=Nt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,l,o,s);return c.push(...y),{allTrade:m,expectedAmountOut:d.mul(ct),remainingAccounts:c,executionPrice:f,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=se(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:p,accounts:m,sqrtPriceX64:d,feeAmount:y}=Nt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(ct),u,o);return a.push(...m),{expectedAmountIn:p,remainingAccounts:a,executionPrice:d,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=ge.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?cn.checkTickArrayIsInit(ie.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):F.checkTickArrayIsInitialized(F.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=se(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,ie.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=se(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/ie.tickCount(e.tickSpacing)),r=t?F.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):F.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=ie.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=mt.nextInitializedTickArrayStartIndex(F.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=cn.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Le||t>Re)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,c,u;let s=[];for(let l=0;l<o.length;l++){let p=o[l],m=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(p.tokenMint))==null?void 0:c.owner;if(m===void 0)throw Error("get new reward mint info error");let d=j(q({},p),{perSecond:Z.x64ToDecimal(p.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Ve(m)});if(d.tokenMint.equals(Ve.default))continue;if(n<=d.openTime.toNumber()||r.eq(ye)){s.push(d);continue}let y=new fe(Math.min(d.endTime.toNumber(),n)),f=y.sub(d.lastUpdateTime),b=Z.mulDivFloor(f,d.emissionsPerSecondX64,r),g=d.rewardGrowthGlobalX64.add(b),A=Z.mulDivFloor(f,d.emissionsPerSecondX64,Fe),w=d.rewardTotalEmissioned.add(A);s.push(j(q({},d),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:w,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=F.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=mt.maxTickInTickarrayBitmap(e),n=-t;return t>Re&&(t=ie.getArrayStartIndex(Re,e)+ie.tickCount(e)),n<Le&&(n=ie.getArrayStartIndex(Le,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ie.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ie.tickCount(t)*Ct}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Bt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=Qr.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let c of t){let u=F.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=F.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let p of l){let{publicKey:m}=se(c.programId,c.id,p);o.push({pubkey:m}),r[m.toString()]=c.id}}let s=await Bt(e,o,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=r[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=un.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=j(q({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(m=>m.accountInfo.mint),u=[];for(let m of c)for(let d of s)u.push(Ee(d,m).publicKey);let l=await st(t,u,{batchRequest:r}),p={};for(let m of l){if(m===null)continue;let d=Ni.decode(m.data),y=d.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=F._getTickPriceLegacy({poolInfo:b,tick:d.tickLower,baseIn:!0}),A=F._getTickPriceLegacy({poolInfo:b,tick:d.tickUpper,baseIn:!0}),{amountA:w,amountB:h}=re.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,A.tickSqrtPriceX64,d.liquidity,!1),B=1/(1-Math.sqrt(Math.sqrt(g.price.div(A.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:g.price,priceUpper:A.price,amountA:w,amountB:h,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(x=>j(q({},x),{pendingReward:new fe(0)})),leverage:B,tokenFeeAmountA:new fe(0),tokenFeeAmountB:new fe(0)}];let P=await F.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),I=await F.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);p[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=P,p[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=I}if(o){let m=Object.values(p),d=await st(t,m,{batchRequest:r}),y={};for(let f=0;f<m.length;f++){let b=d[f];if(b===null)continue;let g=m[f].toString();y[g]=un.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let A=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,w=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,h=y[p[A].toString()],B=y[p[w].toString()],P=h.ticks[F.getTickOffsetInArray(g.tickLower,f.tickSpacing)],I=B.ticks[F.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:R}=await an.GetPositionFees(f,g,P,I),T=await an.GetPositionRewards(f,g,P,I);g.tokenFeeAmountA=x.gte(new fe(0))?x:new fe(0),g.tokenFeeAmountB=R.gte(new fe(0))?R:new fe(0);for(let N=0;N<T.length;N++)g.rewardInfos[N].pendingReward=T[N].gte(new fe(0))?T[N]:new fe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new _(0),catchLiquidityInsufficient:c=!1}){var V;let u,l=n.toBase58()===e.mintA.address,[p,m]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new _(0))?u=l?nt.add(new fe(1)):it.sub(new fe(1)):u=Y.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=Pe(o,p,r,!1),{allTrade:y,expectedAmountOut:f,remainingAccounts:b,executionPrice:g,feeAmount:A}=ge.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((V=d.fee)!=null?V:ye),u,c),w=Pe(f,m,r,!1),h=Y.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),B=l?h:new _(1).div(h),P=f.mul(new fe(Math.floor((1-s)*1e10))).div(new fe(1e10)),I=Pe(P,m,r,!1),x=l?e.currentPrice:new _(1).div(e.currentPrice),R=new _(B).sub(x).abs(),T=x,N=new at(new _(R).mul(10**15).toFixed(0),new _(T).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:d,amountOut:w,minAmountOut:I,expirationTime:Ye(d.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:B,priceImpact:N,fee:A,remainingAccounts:b,executionPriceX64:g}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=r.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[p,m]=[new ve(j(q({},u),{mint:u.address,isToken2022:u.programId===Hr.toBase58()})),new ve(j(q({},l),{mint:l.address,isToken2022:l.programId===Hr.toBase58()}))],{allTrade:d,realAmountIn:y,amountOut:f,minAmountOut:b,expirationTime:g,currentPrice:A,executionPrice:w,priceImpact:h,fee:B,remainingAccounts:P,executionPriceX64:I}=ge.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Ve(u.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),x=j(q({},y),{amount:new me(p,y.amount),fee:y.fee===void 0?void 0:new me(p,y.fee)}),R=j(q({},f),{amount:new me(m,f.amount),fee:f.fee===void 0?void 0:new me(m,f.fee)}),T=j(q({},b),{amount:new me(m,b.amount),fee:b.fee===void 0?void 0:new me(m,b.fee)}),N=new Oe({baseToken:p,denominator:new fe(10).pow(new fe(20+p.decimals)),quoteToken:m,numerator:A.mul(new _(10**(20+m.decimals))).toFixed(0)}),V=new Oe({baseToken:p,denominator:new fe(10).pow(new fe(20+p.decimals)),quoteToken:m,numerator:w.mul(new _(10**(20+m.decimals))).toFixed(0)}),E=new me(p,B);return{allTrade:d,realAmountIn:x,amountOut:R,minAmountOut:T,expirationTime:g,currentPrice:N,executionPrice:V,priceImpact:h,fee:E,remainingAccounts:P,executionPriceX64:I}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountOut:o,slippage:s,priceLimit:a=new _(0)}){var T;let c=n.toBase58()===e.mintA.address,u={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;a.equals(new _(0))?l=c?it.sub(new fe(1)):nt.add(new fe(1)):l=Y.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=Pe(o,u[n.toString()],r,!0),{expectedAmountIn:m,remainingAccounts:d,executionPrice:y,feeAmount:f}=ge.getInputAmountAndRemainAccounts(e,t,n,p.amount.sub((T=p.fee)!=null?T:ye),l),b=c?e.mintB.address:e.mintA.address,g=Pe(m,u[b],r,!1),A=Y.sqrtPriceX64ToPrice(y,e.mintA.decimals,e.mintB.decimals),w=c?A:new _(1).div(A),h=m.mul(new fe(Math.floor((1+s)*1e10))).div(new fe(1e10)),B=Pe(h,u[b],r,!0),P=c?e.currentPrice:new _(1).div(e.currentPrice),I=new _(w).sub(P).abs(),x=P,R=new at(new _(I).mul(10**15).toFixed(0),new _(x).mul(10**15).toFixed(0));return{amountIn:g,maxAmountIn:B,realAmountOut:p,expirationTime:Ye(g.expirationTime,p.expirationTime),currentPrice:e.currentPrice,executionPrice:w,priceImpact:R,fee:f,remainingAccounts:d}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var y,f,b;let o=e[t],s=F.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=F.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,p=a-s,m=o.priceMax-o.priceMin,d;return l<=0?d=0:p===l?d=m/l:m===l?d=l/p:d=l/m*(l/p),{feeApr:o.feeApr*d,rewardsApr:[((y=o.rewardApr[0])!=null?y:0)*d,((f=o.rewardApr[1])!=null?f:0)*d,((b=o.rewardApr[2])!=null?b:0)*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],p=r[$e(e.mintA.address).toString()],m=r[$e(e.mintB.address).toString()],d=e.mintA.decimals,y=e.mintB.decimals;if(!l||!p||!m)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=Y.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),b=Y.getSqrtPriceX64FromTick(s),g=Y.getSqrtPriceX64FromTick(a),{amountSlippageA:A,amountSlippageB:w}=re.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:B}=re.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),P=new _(A.toString()).div(new _(10).pow(d)).mul(p.value).add(new _(w.toString()).div(new _(10).pow(y)).mul(m.value)),I=new _(h.toString()).div(new _(10).pow(d)).mul(p.value).add(new _(B.toString()).div(new _(10).pow(y)).mul(m.value)),x=new _(1).div(P.add(I)),T=new _(l.volumeFee).mul(365).div(u).mul(x).mul(100).toNumber(),N=3600*24*365,V=e.rewardDefaultInfos.map(E=>{var v,qe;let J=E.mint.decimals,G=r[E.mint.address];return c<((v=E.startTime)!=null?v:0)||c>((qe=E.endTime)!=null?qe:0)||!E.perSecond||!G||J===void 0?0:new _(G.value).mul(new _(E.perSecond).mul(N)).div(new _(10).pow(J)).mul(x).mul(100).toNumber()});return{feeApr:T,rewardsApr:V,apr:T+V.reduce((E,J)=>E+J,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var g,A;let l=Y.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),p=Y.getSqrtPriceX64FromTick(n),m=Y.getSqrtPriceX64FromTick(r),d=a?1-s:1+s,y=Pe(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,c,!u),f=new fe(new _(y.amount.sub((A=y.fee)!=null?A:ye).toString()).mul(d).toFixed(0)),b;if(l.lte(p))b=t?re.getLiquidityFromTokenAmountA(p,m,f,!a):new fe(0);else if(l.lte(m)){let w=re.getLiquidityFromTokenAmountA(l,m,f,!a),h=re.getLiquidityFromTokenAmountB(p,l,f);b=t?w:h}else b=t?new fe(0):re.getLiquidityFromTokenAmountB(p,m,f);return ge.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:r,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var b,g,A,w;let c=Y.getSqrtPriceX64FromTick(n),u=Y.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,p=re.getAmountsFromLiquidity(Y.priceToSqrtPriceX64(new _(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[m,d]=[Pe(p.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Pe(p.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[Pe(p.amountA.muln(l),(A=t.mintA.extensions)==null?void 0:A.feeConfig,e,!0),Pe(p.amountB.muln(l),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:m,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:Ye(m.expirationTime,d.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(c=>!n[c.id]).map(c=>new Ve(c.id));(await st(e,r)).forEach((c,u)=>{!c||(n[r[u].toBase58()]=Gt.decode(c.data))});let s=t.map(c=>Te(new Ve(c.programId),new Ve(c.id)).publicKey),a=await ge.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>j(q({},c),{[u.id]:j(q({},n[u.id]),{id:new Ve(u.id),version:6,programId:new Ve(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:j(q({},u.config),{id:new Ve(u.config.id),fundOwner:""}),currentPrice:new _(u.price),exBitmapAccount:Te(new Ve(u.programId),new Ve(u.id)).publicKey,exBitmapInfo:a[Te(new Ve(u.programId),new Ve(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber(),rewardInfos:n[u.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 Z=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(ye)||(o=o.add(We)),o}static mulDivFloor(e,t,n){if(n.eq(ye))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(ye))throw new Error("division by 0");return e.mul(t).add(n.sub(We)).div(n)}static x64ToDecimal(e,t){return new _(e.toString()).div(_.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ee(e.mul(_.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(On).sub(t).mod(On)}};function Se(i,e){return Li(i.mul(e),64,256)}function Ka(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Li(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var Y=class{static sqrtPriceX64ToPrice(e,t,n){return Z.x64ToDecimal(e).pow(2).mul(_.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Z.decimalToX64(e.mul(_.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(ye))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ye))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(ye))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ye))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(ye))return e;let o=t.shln(on);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?Z.mulDivCeil(s,e,a):Z.mulDivRoundingUp(s,We,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return Z.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(on);if(r)return e.add(o.div(t));{let s=Z.mulDivRoundingUp(o,We,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Le||e>Re)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ee("18445821805675395072"):new ee("18446744073709551616");return(t&2)!=0&&(n=Se(n,new ee("18444899583751176192"))),(t&4)!=0&&(n=Se(n,new ee("18443055278223355904"))),(t&8)!=0&&(n=Se(n,new ee("18439367220385607680"))),(t&16)!=0&&(n=Se(n,new ee("18431993317065453568"))),(t&32)!=0&&(n=Se(n,new ee("18417254355718170624"))),(t&64)!=0&&(n=Se(n,new ee("18387811781193609216"))),(t&128)!=0&&(n=Se(n,new ee("18329067761203558400"))),(t&256)!=0&&(n=Se(n,new ee("18212142134806163456"))),(t&512)!=0&&(n=Se(n,new ee("17980523815641700352"))),(t&1024)!=0&&(n=Se(n,new ee("17526086738831433728"))),(t&2048)!=0&&(n=Se(n,new ee("16651378430235570176"))),(t&4096)!=0&&(n=Se(n,new ee("15030750278694412288"))),(t&8192)!=0&&(n=Se(n,new ee("12247334978884435968"))),(t&16384)!=0&&(n=Se(n,new ee("8131365268886854656"))),(t&32768)!=0&&(n=Se(n,new ee("3584323654725218816"))),(t&65536)!=0&&(n=Se(n,new ee("696457651848324352"))),(t&131072)!=0&&(n=Se(n,new ee("26294789957507116"))),(t&262144)!=0&&(n=Se(n,new ee("37481735321082"))),e>0&&(n=Er.div(n)),n}static getTickFromPrice(e,t,n){return Y.getTickFromSqrtPriceX64(Y.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(it)||e.lt(nt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ee(t-64),r=Ka(n,32,128),o=new ee("8000000000000000","hex"),s=0,a=new ee(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new ee(0))&&s<vr;){c=c.mul(c);let y=c.shrn(127);c=c.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let u=a.shrn(32),p=r.add(u).mul(new ee(_r)),m=Li(p.sub(new ee(Wr)),64,128).toNumber(),d=Li(p.add(new ee(Fr)),64,128).toNumber();return m==d?m:Y.getSqrtPriceX64FromTick(d).lte(e)?d:m}},Lt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=Y.getTickFromSqrtPriceX64(Y.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=Lt.getTickWithPriceAndTickspacing(e,t,n,r),s=Y.getSqrtPriceX64FromTick(o);return Y.sqrtPriceX64ToPrice(s,n,r)}},re=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(ye))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(on),s=t.sub(e);return r?Z.mulDivRoundingUp(Z.mulDivCeil(o,s,t),We,e):Z.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ye))throw new Error("sqrtPriceX64A must greater than 0");return r?Z.mulDivCeil(n,t.sub(e),Fe):Z.mulDivFloor(n,t.sub(e),Fe)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?Z.mulDivRoundingUp(a,We,Ti):a.shrn(on)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Z.mulDivFloor(n,Ti,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return re.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=re.getLiquidityFromTokenAmountA(e,n,r,!1),a=re.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return re.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:re.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new ee(0)};if(e.lt(n)){let s=re.getTokenAmountAFromLiquidity(e,n,r,o),a=re.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new ee(0),amountB:re.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:c,amountB:u}=re.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,p=new ee(new _(c.toString()).mul(l).toFixed(0)),m=new ee(new _(u.toString()).mul(l).toFixed(0));return{amountSlippageA:p,amountSlippageB:m}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var A,w,h,B;let u=Y.priceToSqrtPriceX64(new _(e.price),e.mintA.decimals,e.mintB.decimals),l=Y.getSqrtPriceX64FromTick(t),p=Y.getSqrtPriceX64FromTick(n),m=s?1+o:1-o,d=re.getAmountsFromLiquidity(u,l,p,r,s),[y,f]=[Pe(d.amountA,(A=e.mintA.extensions)==null?void 0:A.feeConfig,a,c),Pe(d.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,c)],[b,g]=[Pe(new ee(new _(d.amountA.toString()).mul(m).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),Pe(new ee(new _(d.amountB.toString()).mul(m).toFixed(0)),(B=e.mintB.extensions)==null?void 0:B.feeConfig,a,c)];return{liquidity:r,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Ye(y.expirationTime,f.expirationTime)}}},Nt=class{static swapCompute(e,t,n,r,o,s,a,c,u,l,p,m,d,y,f=!1){if(m.eq(ye))throw new Error("amountSpecified must not be 0");if(y||(y=s?nt.add(We):it.sub(We)),s){if(y.lt(nt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(p))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(it))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(p))throw new Error("sqrtPriceX64 must greater than current")}let b=m.gt(ye),g={amountSpecifiedRemaining:m,amountCalculated:ye,sqrtPriceX64:p,tick:u>d?Math.min(d+ie.tickCount(l)-1,u):d,accounts:[],liquidity:c,feeAmount:new ee(0)},A=d,w=n[d],h=0,B=!s&&w.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(ye)&&!g.sqrtPriceX64.eq(y);){h>10;let P={};P.sqrtPriceStartX64=g.sqrtPriceX64;let I=F.nextInitTick(w,g.tick,l,s,B),x=I||null,R=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let N=ge.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},A,s);if(!N.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:g.amountSpecifiedRemaining,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts};throw Error("swapCompute LiquidityInsufficient")}A=N.nextStartIndex;let{publicKey:V}=se(e,t,A);R=V,w=n[A];try{x=F.firstInitializedTick(w,s)}catch{throw Error("not found next tick info")}}P.tickNext=x.tick,P.initialized=x.liquidityGross.gtn(0),d!==A&&R&&(g.accounts.push(R),d=A),P.tickNext<Le?P.tickNext=Le:P.tickNext>Re&&(P.tickNext=Re),P.sqrtPriceNextX64=Y.getSqrtPriceX64FromTick(P.tickNext);let T;if(s&&P.sqrtPriceNextX64.lt(y)||!s&&P.sqrtPriceNextX64.gt(y)?T=y:T=P.sqrtPriceNextX64,[g.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=Nt.swapStepCompute(g.sqrtPriceX64,T,g.liquidity,g.amountSpecifiedRemaining,a,s),g.feeAmount=g.feeAmount.add(P.feeAmount),b?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),g.amountCalculated=g.amountCalculated.sub(P.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(P.amountOut),g.amountCalculated=g.amountCalculated.add(P.amountIn.add(P.feeAmount))),g.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let N=x.liquidityNet;s&&(N=N.mul(ct)),g.liquidity=re.addDelta(g.liquidity,N)}B=P.tickNext!=g.tick&&!s&&w.startTickIndex===P.tickNext,g.tick=s?P.tickNext-1:P.tickNext}else if(g.sqrtPriceX64!=P.sqrtPriceStartX64){let N=Y.getTickFromSqrtPriceX64(g.sqrtPriceX64);B=N!=g.tick&&!s&&w.startTickIndex===N,g.tick=N}++h}try{let{nextStartIndex:P,isExist:I}=ie.nextInitializedTickArray(g.tick,l,s,r,o);I&&d!==P&&(g.accounts.push(se(e,t,P).publicKey),d=P)}catch{}return{allTrade:!0,amountSpecifiedRemaining:ye,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,r,o,s){let a={sqrtPriceX64Next:new ee(0),amountIn:new ee(0),amountOut:new ee(0),feeAmount:new ee(0)},c=r.gte(ye);if(c){let l=Z.mulDivFloor(r,_n.sub(new ee(o.toString())),_n);a.amountIn=s?re.getTokenAmountAFromLiquidity(t,e,n,!0):re.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(a.amountIn)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=Y.getNextSqrtPriceX64FromInput(e,n,l,s)}else a.amountOut=s?re.getTokenAmountBFromLiquidity(t,e,n,!1):re.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(ct).gte(a.amountOut)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=Y.getNextSqrtPriceX64FromOutput(e,n,r.mul(ct),s);let u=t.eq(a.sqrtPriceX64Next);return s?(u&&c||(a.amountIn=re.getTokenAmountAFromLiquidity(a.sqrtPriceX64Next,e,n,!0)),u&&!c||(a.amountOut=re.getTokenAmountBFromLiquidity(a.sqrtPriceX64Next,e,n,!1))):(a.amountIn=u&&c?a.amountIn:re.getTokenAmountBFromLiquidity(e,a.sqrtPriceX64Next,n,!0),a.amountOut=u&&!c?a.amountOut:re.getTokenAmountAFromLiquidity(e,a.sqrtPriceX64Next,n,!1)),!c&&a.amountOut.gt(r.mul(ct))&&(a.amountOut=r.mul(ct)),c&&!a.sqrtPriceX64Next.eq(t)?a.feeAmount=r.sub(a.amountIn):a.feeAmount=Z.mulDivCeil(a.amountIn,new ee(o),_n.sub(new ee(o))),[a.sqrtPriceX64Next,a.amountIn,a.amountOut,a.feeAmount]}};var Ie=60,Ct=512,F=class{static getTickArrayAddressByTick(e,t,n,r){let o=F.getTickArrayStartIndexByTick(n,r),{publicKey:s}=se(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=F.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=Ie)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=ie.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)*ie.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Ie,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*Ie,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Ie:e+t*Ie}static mergeTickArrayBitmap(e){let t=new Ca(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 s=Math.floor(r/(n*Ie));return[...F.searchLowBitFromStart(e,t,s-1,o,n),...F.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return F.searchHightBitFromStart(e,t,-7680,Ct,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=F.getAllInitializedTickArrayStartIndex(n,r,o);for(let c of a){let{publicKey:u}=se(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>F.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===r)break}let c=ie.tickCount(o);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>F.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===r)break}let c=ie.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<Le||e>Re}static nextInitTick(e,t,n,r,o){if(ie.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Ie;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Ie-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Ie;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=Y.getSqrtPriceX64FromTick(t),o=Y.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new _(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new _(1).div(t),o=Lt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Y.getSqrtPriceX64FromTick(o),a=Y.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new _(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=Y.getSqrtPriceX64FromTick(t),o=Y.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new _(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new _(1).div(t),o=Lt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Y.getSqrtPriceX64FromTick(o),a=Y.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new _(1).div(a)}}};var Na=W([he(8),z("bump"),St("index"),L(""),_e("protocolFeeRate"),_e("tradeFeeRate"),St("tickSpacing"),ne(k(),8,"")]),La=W([_e("blockTimestamp"),Rr("tickCumulative"),ne(k(),4)]),Yr=W([he(8),xe("initialized"),k("recentEpoch"),St("observationIndex"),L("poolId"),ne(La,100,"observations"),ne(k(),4)]),Ra=W([z("rewardState"),k("openTime"),k("endTime"),k("lastUpdateTime"),Q("emissionsPerSecondX64"),k("rewardTotalEmissioned"),k("rewardClaimed"),L("tokenMint"),L("tokenVault"),L("creator"),Q("rewardGrowthGlobalX64")]),Gt=W([he(8),z("bump"),L("ammConfig"),L("creator"),L("mintA"),L("mintB"),L("vaultA"),L("vaultB"),L("observationId"),z("mintDecimalsA"),z("mintDecimalsB"),St("tickSpacing"),Q("liquidity"),Q("sqrtPriceX64"),de("tickCurrent"),_e(),Q("feeGrowthGlobalX64A"),Q("feeGrowthGlobalX64B"),k("protocolFeesTokenA"),k("protocolFeesTokenB"),Q("swapInAmountTokenA"),Q("swapOutAmountTokenB"),Q("swapInAmountTokenB"),Q("swapOutAmountTokenA"),z("status"),ne(z(),7,""),ne(Ra,3,"rewardInfos"),ne(k(),16,"tickArrayBitmap"),k("totalFeesTokenA"),k("totalFeesClaimedTokenA"),k("totalFeesTokenB"),k("totalFeesClaimedTokenB"),k("fundFeesTokenA"),k("fundFeesTokenB"),k("startTime"),ne(k(),15*4-3,"padding")]),Ma=W([Q("growthInsideLastX64"),k("rewardAmountOwed")]),Ni=W([he(8),z("bump"),L("nftMint"),L("poolId"),de("tickLower"),de("tickUpper"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),k("tokenFeesOwedA"),k("tokenFeesOwedB"),ne(Ma,3,"rewardInfos"),ne(k(),8,"")]),bf=W([he(8),z("bump"),L("poolId"),de("tickLowerIndex"),de("tickUpperIndex"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),k("tokenFeesOwedA"),k("tokenFeesOwedB"),ne(Q(),3,"rewardGrowthInside"),ne(k(),8,"")]),Oa=W([de("tick"),Mr("liquidityNet"),Q("liquidityGross"),Q("feeGrowthOutsideX64A"),Q("feeGrowthOutsideX64B"),ne(Q(),3,"rewardGrowthsOutsideX64"),ne(_e(),13,"")]),un=W([he(8),L("poolId"),de("startTickIndex"),ne(Oa,Ie,"ticks"),z("initializedTickCount"),ne(z(),115,"")]),Ea=W([he(329),ne(L(),100,"whitelistMints")]),Qr=W([he(8),L("poolId"),ne(ne(k(),8),Ci,"positiveTickArrayBitmap"),ne(ne(k(),8),Ci,"negativeTickArrayBitmap")]),yf=W([k(),z("bump"),L("owner"),L("poolId"),L("positionId"),L("nftAccount"),ne(k(),8)]),gf=W([he(8),z("bump"),L("lockOwner"),L("poolId"),L("positionId"),L("nftAccount"),L("lockNftMint"),k("recentEpoch"),ne(k(),8)]);Yr.span;var jr=ce("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]},Zr=[188,37,179,131,82,150,84,73],Jr=[16,72,250,198,14,162,212,19],Rt=class{static createPoolInstruction(e,t,n,r,o,s,a,c,u,l,p,m,d){let y=W([Q("sqrtPriceX64"),k("zero")]),f=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:pt.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],b=Buffer.alloc(y.span);y.encode({sqrtPriceX64:d,zero:ye},b);let g=Buffer.from([...De.createPool,...b]);return new Ce({keys:f,programId:e,data:g})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:r,mintB:o,ammConfigId:s,initialPriceX64:a}=e,[c,u]=[new C(r.address),new C(o.address)],{publicKey:l}=Gr(t,s,c,u),{publicKey:p}=Xr(t,l),{publicKey:m}=xi(t,l,c),{publicKey:d}=xi(t,l,u),y=Te(t,l).publicKey,f=[this.createPoolInstruction(t,l,n,s,p,c,m,new C(r.programId||ae),u,d,new C(o.programId||ae),y,a)];return{signers:[],instructions:f,instructionTypes:[te.CreateAccount,te.ClmmCreatePool],address:{poolId:l,observationId:p,exBitmapAccount:y,mintAVault:m,mintBVault:d},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,p,m,d,y,f,b,g,A,w,h,B,P,I,x,R,T){let N=W([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),Q("liquidity"),k("amountMaxA"),k("amountMaxB"),xe("withMetadata"),z("optionBaseFlag"),xe("baseFlag")]),V=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],E=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:pt.programId,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:Pt,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...V],J=Buffer.alloc(N.span);N.encode({tickLowerIndex:A,tickUpperIndex:w,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:B,liquidity:P,amountMaxA:I,amountMaxB:x,withMetadata:R==="create",baseFlag:!1,optionBaseFlag:0},J);let G=Buffer.from([...De.openPosition,...J]);return new Ce({keys:E,programId:e,data:G})}static openPositionFromLiquidityInstruction22(e,t,n,r,o,s,a,c,u,l,p,m,d,y,f,b,g,A,w,h,B,P,I,x,R){let T=W([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),Q("liquidity"),k("amountMaxA"),k("amountMaxB"),xe("withMetadata"),z("optionBaseFlag"),xe("baseFlag")]),N=[...R?[{pubkey:R,isSigner:!1,isWritable:!0}]:[]],V=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:pt.programId,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...N],E=Buffer.alloc(T.span);T.encode({tickLowerIndex:g,tickUpperIndex:A,tickArrayLowerStartIndex:w,tickArrayUpperStartIndex:h,liquidity:B,amountMaxA:P,amountMaxB:I,withMetadata:x==="create",baseFlag:!1,optionBaseFlag:0},E);let J=Buffer.from([...De.openPositionWithTokenEx,...E]);return new Ce({keys:V,programId:e,data:J})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l,nft2022:p}){let m=[],[d,y]=[new C(e.programId),new C(e.id)],f;if(l)f=new C((await l(1))[0]);else{let R=Vn.generate();m.push(R),f=R.publicKey}let b=F.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=F.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:A}=se(d,y,b),{publicKey:w}=se(d,y,g),{publicKey:h}=p?pe(n.wallet,f,ke):pe(n.wallet,f,ae),{publicKey:B}=qt(f),{publicKey:P}=Ee(d,f),{publicKey:I}=lt(d,y,r,o),x=p?this.openPositionFromLiquidityInstruction22(d,n.feePayer,y,n.wallet,f,h,I,A,w,P,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),r,o,b,g,s,a,c,u,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?Te(d,y).publicKey:void 0):this.openPositionFromLiquidityInstruction(d,n.feePayer,y,n.wallet,f,h,B,I,A,w,P,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),r,o,b,g,s,a,c,u,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?Te(d,y).publicKey:void 0);return{signers:m,instructions:[x],instructionTypes:[te.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:f,tickArrayLower:A,tickArrayUpper:w,positionNftAccount:h,metadataAccount:B,personalPosition:P,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l,nft2022:p}){let m=[],[d,y]=[new C(e.programId),new C(e.id)],f;if(l)f=new C((await l(1))[0]);else{let R=Vn.generate();m.push(R),f=R.publicKey}let b=F.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=F.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:A}=se(d,y,b),{publicKey:w}=se(d,y,g),{publicKey:h}=p?pe(n.wallet,f,ke):pe(n.wallet,f,ae),{publicKey:B}=qt(f),{publicKey:P}=Ee(d,f),{publicKey:I}=lt(d,y,r,o),x=p?this.openPositionFromBaseInstruction22(d,n.feePayer,y,n.wallet,f,h,I,A,w,P,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),r,o,b,g,u,s,a,c,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?Te(d,y).publicKey:void 0):this.openPositionFromBaseInstruction(d,n.feePayer,y,n.wallet,f,h,B,I,A,w,P,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),r,o,b,g,u,s,a,c,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?Te(d,y).publicKey:void 0);return{address:{nftMint:f,tickArrayLower:A,tickArrayUpper:w,positionNftAccount:h,metadataAccount:B,personalPosition:P,protocolPosition:I},instructions:[x],signers:m,instructionTypes:[te.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,p,m,d,y,f,b,g,A,w,h,B,P,I,x,R,T){let N=W([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),Q("liquidity"),k("amountMaxA"),k("amountMaxB"),xe("withMetadata"),z("optionBaseFlag"),xe("baseFlag")]),V=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],E=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:pt.programId,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:Pt,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...V],J=Buffer.alloc(N.span);N.encode({tickLowerIndex:A,tickUpperIndex:w,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:B,liquidity:new Ri(0),amountMaxA:I==="MintA"?x:R,amountMaxB:I==="MintA"?R:x,withMetadata:P==="create",baseFlag:I==="MintA",optionBaseFlag:1},J);let G=Buffer.from([...De.openPosition,...J]);return new Ce({keys:E,programId:e,data:G})}static openPositionFromBaseInstruction22(e,t,n,r,o,s,a,c,u,l,p,m,d,y,f,b,g,A,w,h,B,P,I,x,R){let T=W([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),Q("liquidity"),k("amountMaxA"),k("amountMaxB"),xe("withMetadata"),z("optionBaseFlag"),xe("baseFlag")]),N=[...R?[{pubkey:R,isSigner:!1,isWritable:!0}]:[]],V=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:pt.programId,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...N],E=Buffer.alloc(T.span);T.encode({tickLowerIndex:g,tickUpperIndex:A,tickArrayLowerStartIndex:w,tickArrayUpperStartIndex:h,liquidity:new Ri(0),amountMaxA:P==="MintA"?I:x,amountMaxB:P==="MintA"?x:I,withMetadata:B==="create",baseFlag:P==="MintA",optionBaseFlag:1},E);let J=Buffer.from([...De.openPositionWithTokenEx,...E]);return new Ce({keys:V,programId:e,data:J})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l,nft2022:p}){let m,d=[];if(l)m=new C((await l(1))[0]);else{let R=Vn.generate();d.push(R),m=R.publicKey}let[y,f]=[new C(e.programId),new C(e.id)],b=F.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=F.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:A}=se(y,f,b),{publicKey:w}=se(y,f,g),{publicKey:h}=p?pe(n.wallet,m,ke):pe(n.wallet,m,ae),{publicKey:B}=qt(m),{publicKey:P}=Ee(y,m),{publicKey:I}=lt(y,f,r,o),x=p?this.openPositionFromLiquidityInstruction22(y,n.wallet,f,n.wallet,m,h,I,A,w,P,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(t.mintA.address),new C(t.mintB.address),r,o,b,g,s,a,c,u,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?Te(y,f).publicKey:void 0):this.openPositionFromLiquidityInstruction(y,n.wallet,f,n.wallet,m,h,B,I,A,w,P,n.tokenAccountA,n.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(t.mintA.address),new C(t.mintB.address),r,o,b,g,s,a,c,u,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?Te(y,f).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:A,tickArrayUpper:w,positionNftAccount:h,metadataAccount:B,personalPosition:P,protocolPosition:I},instructions:[x],signers:d,instructionTypes:[te.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o,s){let a=W([]),c=[{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:pt.programId,isSigner:!1,isWritable:!1},{pubkey:s?ke:ae,isSigner:!1,isWritable:!1}],u=Buffer.alloc(a.span);a.encode({},u);let l=Buffer.from([...De.closePosition,...u]);return new Ce({keys:c,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r,nft2022:o}){let s=new C(e.programId),a=o?pe(n.wallet,r.nftMint,ke).publicKey:pe(n.wallet,r.nftMint,ae).publicKey,{publicKey:c}=Ee(s,r.nftMint),u=[];return u.push(this.closePositionInstruction(s,n.wallet,r.nftMint,a,c,o)),{address:{positionNftAccount:a,personalPosition:c},signers:[],instructions:u,instructionTypes:[te.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,p,m,d,y,f,b,g,A){let w=W([Q("liquidity"),k("amountMaxA"),k("amountMaxB"),z("optionBaseFlag"),xe("baseFlag")]),h=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],P=Buffer.alloc(w.span);w.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},P);let I=Buffer.from([...De.increaseLiquidity,...P]);return new Ce({keys:B,programId:e,data:I})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a,nft2022:c}){let[u,l]=[new C(e.programId),new C(e.id)],p=F.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=F.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=se(u,l,p),{publicKey:y}=se(u,l,m),{publicKey:f}=c?pe(r.wallet,n.nftMint,ke):pe(r.wallet,n.nftMint,ae),{publicKey:b}=Ee(u,n.nftMint),{publicKey:g}=lt(u,l,n.tickLower,n.tickUpper),A=this.increasePositionFromLiquidityInstruction(u,r.wallet,f,b,l,g,d,y,r.tokenAccountA,r.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),o,s,a,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[p,m])?Te(u,l).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:[A],instructionTypes:[te.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a,nft2022:c}){let[u,l]=[new C(e.programId),new C(e.id)],p=F.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=F.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=se(u,l,p),{publicKey:y}=se(u,l,m),{publicKey:f}=c?pe(r.wallet,n.nftMint,ke):pe(r.wallet,n.nftMint,ae),{publicKey:b}=Ee(u,n.nftMint),{publicKey:g}=lt(u,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,f,b,l,g,d,y,r.tokenAccountA,r.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),o,s,a,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[p,m])?Te(u,l).publicKey:void 0)],signers:[],instructionTypes:[te.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,p,m,d,y,f,b,g,A){let w=W([Q("liquidity"),k("amountMaxA"),k("amountMaxB"),z("optionBaseFlag"),xe("baseFlag")]),h=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],P=Buffer.alloc(w.span);w.encode({liquidity:new Ri(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},P);let I=Buffer.from([...De.increaseLiquidity,...P]);return new Ce({keys:B,programId:e,data:I})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,p,m,d,y,f,b,g,A,w){let h=W([Q("liquidity"),k("amountMinA"),k("amountMinB")]),B=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...f.map(R=>[{pubkey:R.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.rewardMint,isSigner:!1,isWritable:!1}]).flat()],P=[{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:s,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:Bn,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...B],I=Buffer.alloc(h.span);h.encode({liquidity:b,amountMinA:g,amountMinB:A},I);let x=Buffer.from([...De.decreaseLiquidity,...I]);return new Ce({keys:P,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:c,nft2022:u}){let[l,p]=[new C(e.programId),new C(e.id)],m=F.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=F.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:y}=se(l,p,m),{publicKey:f}=se(l,p,d),{publicKey:b}=u?pe(r.wallet,n.nftMint,ke):pe(r.wallet,n.nftMint,c),{publicKey:g}=Ee(l,n.nftMint),{publicKey:A}=lt(l,p,n.tickLower,n.tickUpper),w=[];for(let P=0;P<e.rewardDefaultInfos.length;P++)w.push({poolRewardVault:new C(t.rewardInfos[P].vault),ownerRewardVault:r.rewardAccounts[P],rewardMint:new C(e.rewardDefaultInfos[P].mint.address)});let h=[],B=this.decreaseLiquidityInstruction(l,r.wallet,b,g,p,A,y,f,r.tokenAccountA,r.tokenAccountB,new C(t.vault.A),new C(t.vault.B),new C(e.mintA.address),new C(e.mintB.address),w,o,s,a,ge.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Te(l,p).publicKey:void 0);return h.push(B),{address:{tickArrayLower:y,tickArrayUpper:f,positionNftAccount:b,personalPosition:g,protocolPosition:A},signers:[],instructions:h,instructionTypes:[te.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,c,u,l,p,m,d,y,f,b,g){let A=W([k("amount"),k("otherAmountThreshold"),Q("sqrtPriceLimitX64"),xe("isBaseInput")]),w=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...p.map(I=>({pubkey:I,isSigner:!1,isWritable:!0}))],h=[{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:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:Bn,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...w],B=Buffer.alloc(A.span);A.encode({amount:d,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},B);let P=Buffer.from([...De.swap,...B]);return new Ce({keys:h,programId:e,data:P})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,p]=[new C(e.programId),new C(e.id)],[m,d]=[new C(t.vault.A),new C(t.vault.B)],[y,f]=[new C(e.mintA.address),new C(e.mintB.address)],b=e.mintA.address===o.toString(),g=[this.swapInstruction(l,r.wallet,p,new C(e.config.id),b?r.tokenAccountA:r.tokenAccountB,b?r.tokenAccountB:r.tokenAccountA,b?m:d,b?d:m,b?y:f,b?f:y,u,n,s,a,c,!0,Te(l,p).publicKey)];return{signers:[],instructions:g,instructionTypes:[te.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,outputMint:o,amountOut:s,amountInMax:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,p]=[new C(e.programId),new C(e.id)],[m,d]=[new C(t.vault.A),new C(t.vault.B)],[y,f]=[new C(e.mintA.address),new C(e.mintB.address)],b=e.mintA.address===o.toBase58(),g=[this.swapInstruction(l,r.wallet,p,new C(e.config.id),b?r.tokenAccountB:r.tokenAccountA,b?r.tokenAccountA:r.tokenAccountB,b?d:m,b?m:d,b?f:y,b?y:f,u,n,s,a,c,!1,Te(l,p).publicKey)];return{signers:[],instructions:g,instructionTypes:[te.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,c,u,l,p,m){let d=W([k("openTime"),k("endTime"),Q("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:pt.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:le(l),endTime:le(p),emissionsPerSecondX64:m},f);let b=Buffer.from([...De.initReward,...f]);return new Ce({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new C(e.programId),new C(e.id)],a=Ur(o,s,r.mint).publicKey,c=Fn(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new C(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[te.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,c,u,l,p,m){let d=W([z("rewardIndex"),Q("emissionsPerSecondX64"),k("openTime"),k("endTime")]),y=[{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:ae,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:u,emissionsPerSecondX64:m,openTime:le(l),endTime:le(p)},f);let b=Buffer.from([...De.setRewardEmissions,...f]);return new Ce({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new C(e.programId),new C(e.id)],a,c,u;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===r.mint.toString()&&(a=m,c=new C(t.rewardInfos[m].vault),u=new C(t.rewardInfos[m].mint.address));(a===void 0||c===void 0)&&jr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Fn(o).publicKey,p=[this.setRewardInstruction(o,n.wallet,s,l,new C(e.config.id),n.tokenAccount,c,u,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:p,instructionTypes:[te.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let c=W([z("rewardIndex")]),u=[{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:s,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:Bn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let p=Buffer.from([...De.collectReward,...l]);return new Ce({keys:u,programId:e,data:p})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new C(e.programId),new C(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,c=new C(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&jr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,c,r,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[te.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:r,wallet:o,nftMint:s,nft2022:a,getEphemeralSigners:c}){let u=[],l;if(c)l=new C((await c(1))[0]);else{let g=Vn.generate();u.push(g),l=g.publicKey}let p=a?pe(o,s,ke).publicKey:pe(o,s,ae).publicKey,{publicKey:m}=Ee(n,s),d=Ki(e,l).publicKey,y=pe(o,l,ae).publicKey,f=qt(l).publicKey,b=Rt.lockPositionInstructionV2({programId:e,auth:t,payer:r,positionOwner:o,lockOwner:o,positionNftAccount:p,positionId:m,lockPositionId:d,lockNftMint:l,lockNftAccount:y,metadataAccount:f,withMetadata:!0,nft2022:a,positionNftMint:s,authPositionNftAccount:pe(t,s,a?ke:ae).publicKey,positionNftProgram:a?ke:ae});return{address:{positionId:m,lockPositionId:d,lockNftAccount:y,lockNftMint:l,positionNftAccount:p,metadataAccount:f},instructions:[b],signers:u,instructionTypes:[te.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:r,lockOwner:o,positionNftAccount:s,positionId:a,positionNftMint:c,authPositionNftAccount:u,positionNftProgram:l,lockPositionId:p,lockNftMint:m,lockNftAccount:d,metadataAccount:y,withMetadata:f}){let b=[{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:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!0,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:Pt,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:pt.programId,isSigner:!1,isWritable:!1}],g=W([xe("withMetadata")]),A=Buffer.alloc(g.span);g.encode({withMetadata:f},A);let w=Buffer.from([...Zr,...A]);return new Ce({keys:b,programId:e,data:w})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:r,positionNft:o}){let{publicKey:s}=pe(r,o,ae),{publicKey:a}=Ee(n,o),c=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Si(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:pt.programId,isSigner:!1,isWritable:!1}];return new Ce({keys:c,programId:e,data:Buffer.from(Zr)})}static harvestLockPositionInstruction(e){let[t,n]=[new C(e.poolKeys.programId),new C(e.poolKeys.id)],r=F.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),o=F.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:s}=se(t,n,r),{publicKey:a}=se(t,n,o),{publicKey:c}=pe(e.owner,e.ownerPosition.nftMint,ae),{publicKey:u}=Ee(t,e.ownerPosition.nftMint),{publicKey:l}=lt(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),p=[];for(let y=0;y<e.poolKeys.rewardInfos.length;y++)p.push({poolRewardVault:new C(e.poolKeys.rewardInfos[y].vault),ownerRewardVault:e.ownerRewardAccounts[y],rewardMint:new C(e.poolKeys.rewardInfos[y].mint.address)});let m=[...p.map(y=>[{pubkey:y.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:y.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:y.rewardMint,isSigner:!1,isWritable:!1}]).flat()],d=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:Si(e.programId,u).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:new C(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new C(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:_t,isSigner:!1,isWritable:!1},{pubkey:new C(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new C(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...m];return new Ce({keys:d,programId:e.programId,data:Buffer.from(Jr)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:r,lockOwner:o,lockNftMint:s,lockNftAccount:a,positionNftAccount:c,positionId:u,poolId:l,protocolPosition:p,vaultA:m,vaultB:d,tickArrayLower:y,tickArrayUpper:f,userVaultA:b,userVaultB:g,mintA:A,mintB:w,rewardAccounts:h,exTickArrayBitmap:B}){let P=[...B?[{pubkey:B,isSigner:!1,isWritable:!0}]:[],...h.map(x=>[{pubkey:x.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:x.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:x.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:ke,isSigner:!1,isWritable:!1},{pubkey:_t,isSigner:!1,isWritable:!1},{pubkey:A,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...P];return new Ce({keys:I,programId:e,data:Buffer.from(Jr)})}};var Cb=W([he(8),z("bump"),xe("disableCreatePool"),St("index"),k("tradeFeeRate"),k("protocolFeeRate"),k("fundFeeRate"),k("createPoolFee"),L("protocolOwner"),L("fundOwner"),ne(k(),16)]),$r=W([he(8),L("configId"),L("poolCreator"),L("vaultA"),L("vaultB"),L("mintLp"),L("mintA"),L("mintB"),L("mintProgramA"),L("mintProgramB"),L("observationId"),z("bump"),z("status"),z("lpDecimals"),z("mintDecimalA"),z("mintDecimalB"),k("lpAmount"),k("protocolFeesMintA"),k("protocolFeesMintB"),k("fundFeesMintA"),k("fundFeesMintB"),k("openTime"),ne(k(),32)]);import{PublicKey as Gb,TransactionInstruction as _a,Keypair as Xb,SystemProgram as zb}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Qb,TOKEN_2022_PROGRAM_ID as Yb,TOKEN_PROGRAM_ID as jb}from"@solana/spl-token";var va=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Rb=Buffer.from("amm_config","utf8"),Mb=Buffer.from("pool","utf8"),Ob=Buffer.from("pool_lp_mint","utf8"),Eb=Buffer.from("pool_vault","utf8"),vb=Buffer.from("observation","utf8");function eo(i){return we([va],i)}var _b=Buffer.from("locked_liquidity","utf8");var ny=ce("Raydium_cpmm"),Wa={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 to(i,e,t,n,r,o,s,a,c,u,l,p,m,d,y,f){let b=W([k("amountIn"),k("amounOutMin")]),g=[{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:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],A=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},A),new _a({keys:g,programId:i,data:Buffer.from([...Wa.swapBaseInput,...A])})}import gy from"bn.js";import Py from"decimal.js-light";import Fa from"bn.js";var uy=new Fa(0);import Va from"bn.js";var py=new Va(1e6);import no from"bn.js";var Oy=new no(25),Ey=new no(1e4);var Mi=W([z("instruction"),k("amountIn"),k("minAmountOut")]),Oi=W([z("instruction"),k("maxAmountIn"),k("amountOut")]),Fy=W([z("instruction"),z("nonce")]),Da=W([z("instruction"),z("nonce"),k("startTime")]),io=W([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"),L("baseVault"),L("quoteVault"),L("baseMint"),L("quoteMint"),L("lpMint"),L("openOrders"),L("marketId"),L("marketProgramId"),L("targetOrders"),L("withdrawQueue"),L("lpVault"),L("owner"),k("lpReserve"),ne(k(),3,"padding")]),Vy=W([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"),L("baseVault"),L("quoteVault"),L("baseMint"),L("quoteMint"),L("lpMint"),L("modelDataAccount"),L("openOrders"),L("marketId"),L("marketProgramId"),L("targetOrders"),L("owner"),ne(k(),64,"padding")]),qa=W([z("instruction"),k("baseAmountIn"),k("quoteAmountIn"),k("fixedSide"),k("otherAmountMin")]),Ga=W([z("instruction"),k("lpAmount"),k("baseAmountMin"),k("quoteAmountMin")]);var Dy=W([k("fee")]);import{PublicKey as Bg}from"@solana/web3.js";import xg from"bn.js";import{TOKEN_PROGRAM_ID as Ya}from"@solana/spl-token";import{PublicKey as Yy,SystemProgram as jy,SYSVAR_RENT_PUBKEY as Zy,TransactionInstruction as oo}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as $y,TOKEN_PROGRAM_ID as so}from"@solana/spl-token";import{PublicKey as Ua}from"@solana/web3.js";var Ei=new Ua("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Xa=5e4,za=W([k("x"),k("y"),k("price")]),zy=W([k("accountType"),k("status"),k("multiplier"),k("validDataCount"),ne(za,Xa,"DataElement")]);var ro=ce("Raydium_liquidity_instruction");function Ha({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=It(i),s=Buffer.alloc(Mi.span);Mi.encode({instruction:9,amountIn:le(t),minAmountOut:le(n)},s);let a=[K({pubkey:so,isWritable:!1}),K({pubkey:o.id}),K({pubkey:o.authority,isWritable:!1}),K({pubkey:o.openOrders})];return r===4&&a.push(K({pubkey:o.targetOrders})),a.push(K({pubkey:o.vault.A}),K({pubkey:o.vault.B})),r===5&&a.push(K({pubkey:Ei})),a.push(K({pubkey:o.marketProgramId,isWritable:!1}),K({pubkey:o.marketId}),K({pubkey:o.marketBids}),K({pubkey:o.marketAsks}),K({pubkey:o.marketEventQueue}),K({pubkey:o.marketBaseVault}),K({pubkey:o.marketQuoteVault}),K({pubkey:o.marketAuthority,isWritable:!1}),K({pubkey:e.tokenAccountIn}),K({pubkey:e.tokenAccountOut}),K({pubkey:e.owner,isWritable:!1,isSigner:!0})),new oo({programId:o.programId,keys:a,data:s})}function Qa({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=It(i),s=Buffer.alloc(Oi.span);Oi.encode({instruction:11,maxAmountIn:le(t),amountOut:le(n)},s);let a=[K({pubkey:so,isWritable:!1}),K({pubkey:o.id}),K({pubkey:o.authority,isWritable:!1}),K({pubkey:o.openOrders}),K({pubkey:o.targetOrders}),K({pubkey:o.vault.A}),K({pubkey:o.vault.B})];return r===5&&a.push(K({pubkey:Ei})),a.push(K({pubkey:o.marketProgramId,isWritable:!1}),K({pubkey:o.marketId}),K({pubkey:o.marketBids}),K({pubkey:o.marketAsks}),K({pubkey:o.marketEventQueue}),K({pubkey:o.marketBaseVault}),K({pubkey:o.marketQuoteVault}),K({pubkey:o.marketAuthority,isWritable:!1}),K({pubkey:e.tokenAccountIn}),K({pubkey:e.tokenAccountOut}),K({pubkey:e.owner,isWritable:!1,isSigner:!0})),new oo({programId:o.programId,keys:a,data:s})}function ao(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ha(j(q({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return Qa(j(q({},a),{maxAmountIn:r,amountOut:o}),t);ro.logWithError("invalid params","params",i)}throw ro.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{PublicKey as mg}from"@solana/web3.js";var fg=ce("Raydium_liquidity_serum");function ja({programId:i}){let{publicKey:e}=we([Buffer.from("amm_config_account_seed","utf-8")],i);return e}function uo({programId:i}){return we([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}var vi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},co=i=>{let e={},t=Ya.toBase58();return Object.keys(i).map(n=>{let r=i[n],[o,s]=[r.baseMint.toBase58(),r.quoteMint.toBase58()];e[n]={id:n,version:4,status:r.status.toNumber(),programId:r.programId.toBase58(),mintA:Kt({address:o,programId:t,decimals:r.baseDecimal.toNumber()}),mintB:Kt({address:s,programId:t,decimals:r.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:r.poolPrice.toNumber(),mintAmountA:new _(r.mintAAmount.toString()).div(10**r.baseDecimal.toNumber()).toNumber(),mintAmountB:new _(r.mintBAmount.toString()).div(10**r.quoteDecimal.toNumber()).toNumber(),baseReserve:r.baseReserve,quoteReserve:r.quoteReserve,feeRate:new _(r.tradeFeeNumerator.toString()).div(r.tradeFeeDenominator.toString()).toNumber(),openTime:r.poolOpenTime.toString(),tvl:0,day:vi,week:vi,month:vi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:r.marketId.toBase58(),configId:ja({programId:r.programId}).toBase58(),lpPrice:0,lpAmount:new _(r.lpReserve.toString()).div(10**Math.min(r.baseDecimal.toNumber(),r.quoteDecimal.toNumber())).toNumber(),lpMint:Kt({address:r.lpMint.toBase58(),programId:t,decimals:Math.min(r.baseDecimal.toNumber(),r.quoteDecimal.toNumber())}),burnPercent:0}}),e};import{PublicKey as ou,SystemProgram as su}from"@solana/web3.js";import au from"bn.js";import{createCloseAccountInstruction as uu,createInitializeAccountInstruction as cu,createTransferInstruction as hk,TOKEN_PROGRAM_ID as mn}from"@solana/spl-token";import{Keypair as tu,PublicKey as nu}from"@solana/web3.js";import sk from"bn.js";import{TOKEN_PROGRAM_ID as iu}from"@solana/spl-token";function Za(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function _i(i,...e){if(!Za(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function Wi(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function lo(i,e){_i(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var qn=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),je=(i,e)=>i<<32-e|i>>>e;var Ug=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ja(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Fi(i){return typeof i=="string"&&(i=Ja(i)),_i(i),i}var Dn=class{clone(){return this._cloneInto()}},Xg={}.toString;function mo(i){let e=n=>i().update(Fi(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function $a(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),c=n?4:0,u=n?0:4;i.setUint32(e+c,s,n),i.setUint32(e+u,a,n)}var po=(i,e,t)=>i&e^~i&t,fo=(i,e,t)=>i&e^i&t^e&t,Gn=class extends Dn{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=qn(this.buffer)}update(e){Wi(this);let{view:t,buffer:n,blockLen:r}=this;e=Fi(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let c=qn(e);for(;r<=o-s;s+=r)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Wi(this),lo(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let p=s;p<r;p++)t[p]=0;$a(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=qn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let p=0;p<u;p++)a.setUint32(4*p,l[p],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var eu=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),At=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),wt=new Uint32Array(64),Vi=class extends Gn{constructor(){super(64,32,8,!1),this.A=At[0]|0,this.B=At[1]|0,this.C=At[2]|0,this.D=At[3]|0,this.E=At[4]|0,this.F=At[5]|0,this.G=At[6]|0,this.H=At[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:c}=this;return[e,t,n,r,o,s,a,c]}set(e,t,n,r,o,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=c|0}process(e,t){for(let p=0;p<16;p++,t+=4)wt[p]=e.getUint32(t,!1);for(let p=16;p<64;p++){let m=wt[p-15],d=wt[p-2],y=je(m,7)^je(m,18)^m>>>3,f=je(d,17)^je(d,19)^d>>>10;wt[p]=f+wt[p-7]+y+wt[p-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:c,G:u,H:l}=this;for(let p=0;p<64;p++){let m=je(a,6)^je(a,11)^je(a,25),d=l+m+po(a,c,u)+eu[p]+wt[p]|0,f=(je(n,2)^je(n,13)^je(n,22))+fo(n,r,o)|0;l=u,u=c,c=a,a=s+d|0,s=o,o=r,r=n,n=d+f|0}n=n+this.A|0,r=r+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,c,u,l)}roundClean(){wt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var bo=mo(()=>new Vi);var Un=W([L("mint"),L("owner"),k("amount"),_e("delegateOption"),L("delegate"),z("state"),_e("isNativeOption"),k("isNative"),k("delegatedAmount"),_e("closeAuthorityOption"),L("closeAuthority")]);var mk=ce("Raydium_Util");function yo({fromPublicKey:i,programId:e=iu,assignSeed:t}){let n=t?btoa(t).slice(0,32):tu.generate().publicKey.toBase58().slice(0,32);return{publicKey:ru(i,n,e),seed:n}}function ru(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=bo(n);return new nu(r)}function lu(i){let{mint:e,tokenAccount:t,owner:n,programId:r=mn}=i;return cu(t,e,n,r)}function pn(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=mn}=i;return uu(e,t,r,n,o)}async function Di(i){let{connection:e,amount:t,commitment:n,payer:r,owner:o,skipCloseAccount:s}=i,a=await e.getMinimumBalanceForRentExemption(Un.span,n),c=le(t).add(new au(a)),u=yo({fromPublicKey:r,programId:mn});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[su.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:Un.span,programId:mn}),lu({mint:new ou(et.address),tokenAccount:u.publicKey,owner:o,programId:mn})],instructionTypes:[te.CreateAccount,te.InitAccount],endInstructionTypes:s?[]:[te.CloseAccount],endInstructions:s?[]:[pn({tokenAccount:u.publicKey,payer:r,owner:o})]}}var go={[fi.toBase58()]:3},ko={3:fi};var qi=W([he(5),he(8),L("ownAddress"),k("vaultSignerNonce"),L("baseMint"),L("quoteMint"),L("baseVault"),k("baseDepositsTotal"),k("baseFeesAccrued"),L("quoteVault"),k("quoteDepositsTotal"),k("quoteFeesAccrued"),k("quoteDustThreshold"),L("requestQueue"),L("eventQueue"),L("bids"),L("asks"),k("baseLotSize"),k("quoteLotSize"),k("feeRateBps"),k("referrerRebatesAccrued"),he(7)]),Po={3:qi};import{PublicKey as Ao}from"@solana/web3.js";var Xn=ce("Serum"),zn=class{static getProgramId(e){let t=ko[e];return t||Xn.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=go[t];return n||Xn.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Po[e];return t||Xn.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],r=0,o;for(;r<100;){try{let s=n.concat(Buffer.from([r]),Buffer.alloc(7));o=Ao.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;r++;continue}return{publicKey:o,nonce:r}}return Xn.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Ao.default,nonce:r}}};var Xk=W([_e("mintAuthorityOption"),L("mintAuthority"),k("supply"),z("decimals"),z("isInitialized"),_e("freezeAuthorityOption"),L("freezeAuthority")]);import{PublicKey as X,SystemProgram as mu,TransactionInstruction as pu}from"@solana/web3.js";import Mt from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as du,TOKEN_2022_PROGRAM_ID as fu,TOKEN_PROGRAM_ID as bu}from"@solana/spl-token";function yu(i,e,t,n,r,o,s,a,c,u,l,p,m,d,y){var P;let f=[],b=[K({pubkey:bu,isWritable:!1}),K({pubkey:fu,isWritable:!1}),K({pubkey:du,isWritable:!1}),K({pubkey:mu.programId,isWritable:!1}),K({pubkey:e,isSigner:!0})];b.push(K({pubkey:t})),b.push(K({pubkey:r}));let g=[c,u],A=[l,p],w=[o,s,a];for(let I=0;I<g.length;I++){let x=g[I],R=w[I]===x.mintA.address;if(b.push(K({pubkey:new X(x.programId),isWritable:!1})),I===g.length-1?b.push(K({pubkey:r})):b.push(K({pubkey:n})),b.push(K({pubkey:new X(w[I])})),b.push(K({pubkey:new X(w[I+1])})),x.version===6){let T=A[I];b.push(K({pubkey:new X(T.config.id)})),b.push(K({pubkey:new X(T.id)})),b.push(K({pubkey:new X(R?T.vault.A:T.vault.B)})),b.push(K({pubkey:new X(R?T.vault.B:T.vault.A)})),b.push(K({pubkey:new X(x.observationId)})),b.push(K({pubkey:_t})),b.push(K({pubkey:Te(new X(x.programId),new X(x.id)).publicKey})),f.push(gu(x.sqrtPriceX64.toString(),R));for(let N of(P=y[I])!=null?P:[])b.push(K({pubkey:new X(N)}))}else if(x.version===5){let T=A[I];b.push(K({pubkey:new X(T.id)})),b.push(K({pubkey:new X(T.authority),isWritable:!1})),b.push(K({pubkey:new X(T.marketProgramId)})),b.push(K({pubkey:new X(T.marketAuthority)})),b.push(K({pubkey:Br,isWritable:!1})),b.push(K({pubkey:new X(T.openOrders)})),b.push(K({pubkey:new X(T.vault.A)})),b.push(K({pubkey:new X(T.vault.B)})),b.push(K({pubkey:new X(T.id)})),b.push(K({pubkey:new X(T.id)})),b.push(K({pubkey:new X(T.id)})),b.push(K({pubkey:new X(T.id)})),b.push(K({pubkey:new X(T.id)})),b.push(K({pubkey:new X(T.id)})),b.push(K({pubkey:new X(T.marketId)})),b.push(K({pubkey:new X(T.marketBids)})),b.push(K({pubkey:new X(T.marketAsks)})),b.push(K({pubkey:new X(T.marketEventQueue)})),b.push(K({pubkey:new X(T.marketBaseVault)})),b.push(K({pubkey:new X(T.marketQuoteVault)}))}else if(x.version===4){let T=A[I],N=x.status!==1;b.push(K({pubkey:new X(T.id)})),b.push(K({pubkey:new X(T.authority),isWritable:!1})),b.push(K({pubkey:new X(N?T.id:T.marketProgramId)})),b.push(K({pubkey:new X(N?T.id:T.marketAuthority)})),b.push(K({pubkey:new X(N?T.id:T.openOrders)})),b.push(K({pubkey:new X(T.vault.A)})),b.push(K({pubkey:new X(T.vault.B)})),b.push(K({pubkey:new X(N?T.id:T.marketId)})),b.push(K({pubkey:new X(N?T.id:T.marketBids)})),b.push(K({pubkey:new X(N?T.id:T.marketAsks)})),b.push(K({pubkey:new X(N?T.id:T.marketEventQueue)})),b.push(K({pubkey:new X(N?T.id:T.marketBaseVault)})),b.push(K({pubkey:new X(N?T.id:T.marketQuoteVault)}))}else if(x.version===7){let T=A[I];b.push(K({pubkey:new X(T.authority)})),b.push(K({pubkey:new X(T.config.id)})),b.push(K({pubkey:new X(T.id)})),b.push(K({pubkey:new X(R?T.vault.A:T.vault.B)})),b.push(K({pubkey:new X(R?T.vault.B:T.vault.A)})),b.push(K({pubkey:new X(x.observationId)}))}else throw Error("pool type error")}let h=W([z("insId"),k("amountIn"),k("amountOut"),ne(Q(),f.length,"clmmPriceLimit")]),B=Buffer.alloc(h.span);return h.encode({insId:0,amountIn:m,amountOut:d,clmmPriceLimit:f},B),new pu({keys:b,programId:i,data:B})}function gu(i,e){if(i)if(e){let t=new Mt(i).div(new Mt(25));return t.gt(En)?t:En}else{let t=new Mt(i).mul(new Mt(25));return t.lt(vn)?t:vn}else return e?En:vn}function wo({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,c,u,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let p=n.poolKey[0],m=It(p),d=t.equals(m.mintA.address)?nt.add(We):it.sub(We);return Rt.makeSwapBaseInInstructions({poolInfo:p,poolKeys:p,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:m.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:m.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 Mt(0)),sqrtPriceLimitX64:d,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else if(n.poolInfo[0].version===7){let p=n.poolInfo[0],m=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[to(p.programId,e.wallet,p.authority,p.configId,p.id,e.sourceToken,e.destinationToken,m?p.vaultA:p.vaultB,m?p.vaultB:p.vaultA,m?p.mintProgramA:p.mintProgramB,m?p.mintProgramB:p.mintProgramA,new X(p[m?"mintA":"mintB"].address),new X(p[m?"mintB":"mintA"].address),p.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[m?te.CpmmSwapBaseIn:te.CpmmSwapBaseOut],address:{}}}else{let p=n.poolKey[0];return{signers:[],instructions:[ao({poolKeys:p,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((c=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?c:new Mt(0)),fixedSide:"in"})],lookupTableAddress:p.lookupTableAccount?[p.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?te.AmmV5SwapBaseIn:te.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let p=n.poolInfo[0],m=n.poolInfo[1],d=n.poolKey[0],y=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[yu(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),p,m,d,y,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new Mt(0)),n.remainingAccounts)],instructionTypes:[te.RouteSwap],lookupTableAddress:[d.lookupTableAccount,y.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var dt=new Qn(0),Gi=class extends Dt{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(He));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:r=1}=e,o=await this.getWSolAccounts(),s=this.createTxBuilder();s.addCustomComputeBudget(e.computeBudgetConfig);let a=await Di({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});s.addInstruction(a);let c=le(t);for(let u=0;u<o.length;u++)c.gte(o[u].amount)?(s.addInstruction({instructions:[pn({tokenAccount:o[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(o[u].amount)):s.addInstruction({instructions:[pn({tokenAccount:o[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]});return s.versionBuild({txVersion:r})}async wrapWSol(e,t,n){let r=this.createTxBuilder(),o=await Di({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return r.addInstruction(o),r.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:r,routeProgram:o,txVersion:s}){let a=this.createTxBuilder(),c=e.amountIn,u=e.amountOut,l=c.amount.token.mint.equals(He),p=u.amount.token.mint.equals(He),m=c.amount.token.mint,d=u.amount.token.mint,{account:y,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.amount.token.isToken2022?Hn:Ae,mint:m,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:c.amount.raw}:void 0,associatedOnly:l?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(f&&a.addInstruction(f),y===void 0)throw Error("input account check error");let b;if(e.routeType==="route"&&!p)b=this.scope.account.getAssociatedTokenAccount(d,u.amount.token.isToken2022?Hn:Ae);else{let{account:h,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.amount.token.isToken2022?Hn:Ae,mint:d,notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!0,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});b=h,B&&a.addInstruction(B)}p&&a.addInstruction({endInstructions:[pn({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:b,programId:Ae})],endInstructionTypes:[te.CloseAccount]});let g;if(e.routeType==="route"){let h=e.middleToken;g=this.scope.account.getAssociatedTokenAccount(h.mint,h.isToken2022?Hn:Ae)}let A=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),w=wo({routeProgram:o,inputMint:m,swapInfo:j(q({},e),{poolInfo:[...e.poolInfoList],poolKey:A,outputMint:d}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:y,routeToken:g,destinationToken:b}});if(e.feeConfig!==void 0){let h=this.createTxBuilder();h.addInstruction({instructions:[ho(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[te.TransferAmount]}),h.addInstruction(w);let{transactions:B}=s===0?await h.sizeCheckBuildV0():await h.sizeCheckBuild();B.length<2&&a.addInstruction({instructions:[ho(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[te.TransferAmount]})}return a.addInstruction(w),s===0?a.sizeCheckBuildV0({computeBudgetConfig:r,address:w.address}):a.sizeCheckBuild({computeBudgetConfig:r,address:w.address})}async fetchRoutePoolBasicInfo(e){let{amm:t=Tr,clmm:n=bi,cpmm:r=yi}=e||{},o=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:io.offsetOf("baseMint"),length:64}}),s=W([L("baseMint"),L("quoteMint")]),a=o.map(d=>({id:d.pubkey,version:4,mintA:s.decode(d.account.data).baseMint,mintB:s.decode(d.account.data).quoteMint})),c=W([L("mintA"),L("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:Gt.span}],dataSlice:{offset:Gt.offsetOf("mintA"),length:64}})).map(d=>{let y=c.decode(d.account.data);return{id:d.pubkey,version:6,mintA:y.mintA,mintB:y.mintB}}),m=(await this.scope.connection.getProgramAccounts(r,{dataSlice:{offset:$r.offsetOf("mintA"),length:64}})).map(d=>{let y=c.decode(d.account.data);return{id:d.pubkey,version:7,mintA:y.mintA,mintB:y.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:m}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:r,cpmmPools:o}){e=e.toString()===Ot.default.toString()?He:e,t=t.toString()===Ot.default.toString()?He:t;let s={},a={},c={},u=[],l={};for(let m of n!=null?n:[]){if((m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),a[m.id.toString()]=m),m.mintA.equals(e)){let d=m.mintB.toString();l[d]===void 0&&(l[d]={mintProgram:Ae,in:[],out:[],mDecimals:0}),l[d].in.push(m)}if(m.mintB.equals(e)){let d=m.mintA.toString();l[d]===void 0&&(l[d]={mintProgram:Ae,in:[],out:[],mDecimals:0}),l[d].in.push(m)}if(m.mintA.equals(t)){let d=m.mintB.toString();l[d]===void 0&&(l[d]={mintProgram:Ae,in:[],out:[],mDecimals:0}),l[d].out.push(m)}if(m.mintB.equals(t)){let d=m.mintA.toString();l[d]===void 0&&(l[d]={mintProgram:Ae,in:[],out:[],mDecimals:0}),l[d].out.push(m)}}let p=[];for(let m of r)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),s[m.id.toBase58()]=m,p.push(m)),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:Ae,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:Ae,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:Ae,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:Ae,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of o)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),c[m.id.toBase58()]=m),m.mintA.equals(e)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:Ae,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:Ae,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(l[m.mintB.toBase58()]===void 0&&(l[m.mintB.toBase58()]={mintProgram:Ae,in:[],out:[],mDecimals:0}),l[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(l[m.mintA.toBase58()]===void 0&&(l[m.mintA.toBase58()]={mintProgram:Ae,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of Object.keys(l)){if(l[m].in.length===1&&l[m].out.length===1&&l[m].in[0].id.equals(l[m].out[0].id)){delete l[m];continue}if(l[m].in.length===0||l[m].out.length===0){delete l[m];continue}let d=l[m];for(let y of d.in)for(let f of d.out)y.version===6&&a[y.id.toString()]===void 0?a[y.id.toString()]=y:y.version===7&&c[y.id.toString()]===void 0?c[y.id.toString()]=y:(y.version===4||y.version===5)&&s[y.id.toString()]===void 0&&(s[y.id.toString()]=y),f.version===6&&a[f.id.toString()]===void 0?a[f.id.toString()]=f:f.version===7&&c[f.id.toString()]===void 0?c[f.id.toString()]=f:(f.version===4||f.version===5)&&s[f.id.toString()]===void 0&&(s[f.id.toString()]=f)}return{directPath:u,addLiquidityPools:p,routePathDict:l,needSimulate:Object.values(s),needTickArray:Object.values(a),cpmmPoolList:Object.values(c)}}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let r=new Set([...e.needTickArray.map(f=>[f.mintA.toBase58(),f.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let o=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(f=>f.id)),s=co(o),a={};Object.values(s).forEach(f=>{r.delete(f.mintA.address),a[f.mintA.address]={address:new Ot(f.mintA.address),programId:Ae,mintAuthority:null,supply:BigInt(0),decimals:f.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},r.delete(f.mintB.address),a[f.mintB.address]={address:new Ot(f.mintB.address),programId:Ae,mintAuthority:null,supply:BigInt(0),decimals:f.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching cpmm pools info, total: ",e.cpmmPoolList.length);let c=await this.scope.cpmm.getRpcPoolInfos(e.cpmmPoolList.map(f=>f.id.toBase58()),!0);Object.values(c).forEach(f=>{let[b,g]=[f.mintA.toBase58(),f.mintB.toBase58()];f.mintProgramA.equals(Ae)?(r.delete(b),a[b]={address:f.mintA,programId:f.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(b),f.mintProgramB.equals(Ae)?(r.delete(g),a[g]={address:f.mintB,programId:f.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(g)}),console.log("fetching mints info, total: ",r.size);let u=await ri({connection:this.scope.connection,mints:Array.from(r).map(f=>new Ot(f))});a=q(q({},a),u);let l=this.scope.cpmm.toComputePoolInfos({pools:c,mintInfos:a});console.log("fetching clmm pools info, total:",e.needTickArray.length);let p=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(f=>f.id)}),{computeClmmPoolInfo:m,computePoolTickData:d}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:p,mintInfos:a}),y=Object.keys(e.routePathDict).reduce((f,b)=>j(q({},f),{[b]:j(q({},e.routePathDict[b]),{mintProgram:a[b].programId,mDecimals:a[b].decimals,in:e.routePathDict[b].in.map(g=>s[g.id.toBase58()]||m[g.id.toBase58()]||l[g.id.toBase58()]),out:e.routePathDict[b].out.map(g=>s[g.id.toBase58()]||m[g.id.toBase58()]||l[g.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:o,ammSimulateCache:s,clmmPoolsRpcInfo:p,computeClmmPoolInfo:m,computePoolTickData:d,computeCpmmData:l,routePathDict:y}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:r,simulateCache:o,tickCache:s,slippage:a,chainTime:c,epochInfo:u,feeConfig:l}){var g,A,w,h,B,P,I,x,R;let p=l===void 0?new Qn(0):e.raw.mul(new Qn(l.feeBps.toNumber())).div(new Qn(1e4)),m=e.raw.sub(p),d=new me(e.token,m),y=l===void 0?void 0:{feeAmount:p,feeAccount:l.feeAccount},f=j(q({},t),{address:$e(t.address).toString()}),b=[];for(let T of n)try{b.push(j(q({},this.computeAmountOut({itemPool:T,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:d})),{feeConfig:y}))}catch(N){this.logDebug("direct error",T.version,T.id.toString(),N.message)}this.logDebug("direct done");for(let[T,N]of Object.entries(r)){let V={chainId:101,address:T,programId:N.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:N.mDecimals,tags:[],extensions:{}},E=N.in.map(G=>{try{return{pool:G,data:this.computeAmountOut({itemPool:G,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:V,amountIn:d})}}catch(v){this.logDebug("route in error",G.version,G.id.toString(),v.message);return}}).sort((G,v)=>{var ht,Ut,Ze,Ge;let qe=G===void 0?dt:G.data.amountOut.amount.raw.sub((Ut=(ht=G.data.amountOut.fee)==null?void 0:ht.raw)!=null?Ut:dt),ft=v===void 0?dt:v.data.amountOut.amount.raw.sub((Ge=(Ze=v.data.amountOut.fee)==null?void 0:Ze.raw)!=null?Ge:dt);return qe.lt(ft)?1:-1})[0];if(E===void 0)continue;let J=new me(Or(V),E.data.amountOut.amount.raw.sub((A=(g=E.data.amountOut.fee)==null?void 0:g.raw)!=null?A:dt));for(let G of N.out)try{let v=this.computeAmountOut({itemPool:G,tickCache:s,simulateCache:o,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:J});b.push(j(q({},v),{allTrade:!!(E.data.allTrade&&v.allTrade),amountIn:E.data.amountIn,amountOut:v.amountOut,minAmountOut:v.minAmountOut,currentPrice:void 0,executionPrice:new _(new Oe({baseToken:E.data.amountIn.amount.token,denominator:E.data.amountIn.amount.raw,quoteToken:v.amountOut.amount.token,numerator:v.amountOut.amount.raw.sub((h=(w=v.amountOut.fee)==null?void 0:w.raw)!=null?h:dt)}).toFixed()),priceImpact:new _(E.data.priceImpact.add(v.priceImpact).toFixed()),fee:[E.data.fee[0],v.fee[0]],routeType:"route",poolInfoList:[E.pool,G],remainingAccounts:[E.data.remainingAccounts[0],v.remainingAccounts[0]],minMiddleAmountFee:(B=v.amountOut.fee)!=null&&B.raw?new me(E.data.amountOut.amount.token,((I=(P=E.data.amountOut.fee)==null?void 0:P.raw)!=null?I:dt).add((R=(x=v.amountOut.fee)==null?void 0:x.raw)!=null?R:dt)):void 0,middleToken:E.data.amountOut.amount.token,poolReady:E.data.poolReady&&v.poolReady,poolType:[E.data.poolType,v.poolType],feeConfig:y,expirationTime:Ye(E.data.expirationTime,v.expirationTime)}))}catch(v){this.logDebug("route out error",G.version,G.id.toString(),v.message)}}return b.filter(T=>(T.allTrade||this.logDebug(`pool ${T.poolInfoList.map(N=>N.id.toString()).join(",")} filter out since not all trade`),T.allTrade)).sort((T,N)=>T.amountOut.amount.raw.sub(N.amountOut.amount.raw).gt(dt)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:r,epochInfo:o,slippage:s,outputToken:a,amountIn:c}){if(e.version===6){let{allTrade:u,realAmountIn:l,amountOut:p,minAmountOut:m,expirationTime:d,currentPrice:y,executionPrice:f,priceImpact:b,fee:g,remainingAccounts:A,executionPriceX64:w}=ge.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:s,epochInfo:o,catchLiquidityInsufficient:!0});return{allTrade:u,amountIn:l,amountOut:p,minAmountOut:m,currentPrice:new _(y.toFixed()),executionPrice:new _(f.toFixed()),priceImpact:new _(b.toFixed()),fee:[g],remainingAccounts:[A],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<r,poolType:"CLMM",slippage:s,clmmExPriceX64:[w],expirationTime:Ye(l.expirationTime,d)}}else if(e.version===7){let{allTrade:u,executionPrice:l,amountOut:p,minAmountOut:m,priceImpact:d,fee:y}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:a.address,amountIn:c.raw,slippage:s});return{allTrade:u,amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:rn(j(q({},a),{amount:p})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:rn(j(q({},a),{amount:m})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:d,fee:[new me(c.token,y)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<r,poolType:"CPMM",slippage:s,clmmExPriceX64:[void 0],expirationTime:void 0}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:u,minAmountOut:l,currentPrice:p,executionPrice:m,priceImpact:d,fee:y}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:c.raw,mintIn:c.token.mint,mintOut:a.address,slippage:s});return{amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:rn(j(q({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:rn(j(q({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:p,executionPrice:m,priceImpact:d,fee:[new me(c.token,y)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<r,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:s,clmmExPriceX64:[void 0]}}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let r=new Set(e.filter(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(r.size>0){let u=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(r)});Object.keys(u).forEach(l=>{t[l]=u[l]})}if(new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString())).size>0){let u=await this.scope.liquidity.getRpcPoolInfos(Array.from(r));Object.keys(u).forEach(l=>{n[l]=u[l]})}let s=new Set(e.filter(u=>u.version===4).map(u=>u.marketId)),a={};s.size>0&&(await Bt(this.scope.connection,Array.from(s).map(l=>({pubkey:new Ot(l)})))).forEach(l=>{if(!l.accountInfo)return;let p=qi.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:zn.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:p.baseVault.toString(),marketQuoteVault:p.quoteVault.toString(),marketBids:p.bids.toString(),marketAsks:p.asks.toString(),marketEventQueue:p.eventQueue.toString()}});let c=[];return e.forEach(u=>{if(u.version===6){let l=t[u.id.toString()],p={programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:j(q({},u.ammConfig),{id:u.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[],observationId:u.observationId.toBase58(),exBitmapAccount:u.exBitmapAccount.toBase58()};c.push(p)}else if(u.version===4){let l=n[u.id.toString()],p=q({programId:u.programId,id:u.id,mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:uo({programId:new Ot(u.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:u.lpMint},a[u.marketId]);c.push(p)}else u.version===7&&c.push({observationId:u.observationId.toBase58(),programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),authority:eo(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:Kt({address:u.mintLp.toBase58(),programId:Ae.toBase58(),decimals:u.lpDecimals}),config:j(q({id:u.configId.toBase58()},u.configInfo),{protocolFeeRate:u.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:u.configInfo.tradeFeeRate.toNumber(),fundFeeRate:u.configInfo.fundFeeRate.toNumber(),createPoolFee:u.configInfo.createPoolFee.toString()})})}),c}};export{Gi as default};
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=trade.mjs.map