@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
3 lines • 231 kB
JavaScript
var gs=Object.defineProperty,Ps=Object.defineProperties;var As=Object.getOwnPropertyDescriptors;var On=Object.getOwnPropertySymbols;var Mo=Object.prototype.hasOwnProperty,Fo=Object.prototype.propertyIsEnumerable;var Oo=(o,e,t)=>e in o?gs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,G=(o,e)=>{for(var t in e||(e={}))Mo.call(e,t)&&Oo(o,t,e[t]);if(On)for(var t of On(e))Fo.call(e,t)&&Oo(o,t,e[t]);return o},Q=(o,e)=>Ps(o,As(e));var Ct=(o,e)=>{var t={};for(var n in o)Mo.call(o,n)&&e.indexOf(n)<0&&(t[n]=o[n]);if(o!=null&&On)for(var n of On(o))e.indexOf(n)<0&&Fo.call(o,n)&&(t[n]=o[n]);return t};import{PublicKey as ue,SystemProgram as Pc}from"@solana/web3.js";import{createTransferInstruction as bs,TOKEN_PROGRAM_ID as ce,TOKEN_2022_PROGRAM_ID as un,createAssociatedTokenAccountIdempotentInstruction as Co,createSyncNativeInstruction as Ac}from"@solana/spl-token";import Ne from"bn.js";var Zt=9e15,Ot=1e9,Ii="0123456789abcdef",Fn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",vn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",xi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Zt,maxE:Zt,crypto:!1},Vo,kt,j=!0,Wn="[DecimalError] ",Rt=Wn+"Invalid argument: ",_o=Wn+"Precision limit exceeded",Do=Wn+"crypto unavailable",qo="[object Decimal]",De=Math.floor,Le=Math.pow,ks=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ws=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,hs=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Go=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,at=1e7,Y=7,Ts=9007199254740991,Bs=Fn.length-1,Si=vn.length-1,C={toStringTag:qo};C.absoluteValue=C.abs=function(){var o=new this.constructor(this);return o.s<0&&(o.s=1),U(o)};C.ceil=function(){return U(new this.constructor(this),this.e+1,2)};C.clampedTo=C.clamp=function(o,e){var t,n=this,i=n.constructor;if(o=new i(o),e=new i(e),!o.s||!e.s)return new i(NaN);if(o.gt(e))throw Error(Rt+e);return t=n.cmp(o),t<0?o:n.cmp(e)>0?e:new i(n)};C.comparedTo=C.cmp=function(o){var e,t,n,i,r=this,s=r.d,a=(o=new r.constructor(o)).d,c=r.s,u=o.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(r.e!==o.e)return r.e>o.e^c<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^c<0?1:-1;return n===i?0:n>i^c<0?1:-1};C.cosine=C.cos=function(){var o,e,t=this,n=t.constructor;return t.d?t.d[0]?(o=n.precision,e=n.rounding,n.precision=o+Math.max(t.e,t.sd())+Y,n.rounding=1,t=Is(n,Ho(n,t)),n.precision=o,n.rounding=e,U(kt==2||kt==3?t.neg():t,o,e,!0)):new n(1):new n(NaN)};C.cubeRoot=C.cbrt=function(){var o,e,t,n,i,r,s,a,c,u,l=this,p=l.constructor;if(!l.isFinite()||l.isZero())return new p(l);for(j=!1,r=l.s*Le(l.s*l,1/3),!r||Math.abs(r)==1/0?(t=We(l.d),o=l.e,(r=(o-t.length+1)%3)&&(t+=r==1||r==-2?"0":"00"),r=Le(t,1/3),o=De((o+1)/3)-(o%3==(o<0?-1:2)),r==1/0?t="5e"+o:(t=r.toExponential(),t=t.slice(0,t.indexOf("e")+1)+o),n=new p(t),n.s=l.s):n=new p(r.toString()),s=(o=p.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=le(u.plus(l).times(a),u.plus(c),s+2,1),We(a.d).slice(0,s)===(t=We(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(U(a,o+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(U(n,o+1,1),e=!n.times(n).times(n).eq(l));break}return j=!0,U(n,o,p.rounding,e)};C.decimalPlaces=C.dp=function(){var o,e=this.d,t=NaN;if(e){if(o=e.length-1,t=(o-De(this.e/Y))*Y,o=e[o],o)for(;o%10==0;o/=10)t--;t<0&&(t=0)}return t};C.dividedBy=C.div=function(o){return le(this,new this.constructor(o))};C.dividedToIntegerBy=C.divToInt=function(o){var e=this,t=e.constructor;return U(le(e,new t(o),0,1,1),t.precision,t.rounding)};C.equals=C.eq=function(o){return this.cmp(o)===0};C.floor=function(){return U(new this.constructor(this),this.e+1,3)};C.greaterThan=C.gt=function(o){return this.cmp(o)>0};C.greaterThanOrEqualTo=C.gte=function(o){var e=this.cmp(o);return e==1||e===0};C.hyperbolicCosine=C.cosh=function(){var o,e,t,n,i,r=this,s=r.constructor,a=new s(1);if(!r.isFinite())return new s(r.s?1/0:NaN);if(r.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(r.e,r.sd())+4,s.rounding=1,i=r.d.length,i<32?(o=Math.ceil(i/3),e=(1/_n(4,o)).toString()):(o=16,e="2.3283064365386962890625e-10"),r=jt(s,1,r.times(e),new s(1),!0);for(var c,u=o,l=new s(8);u--;)c=r.times(r),r=a.minus(c.times(l.minus(c.times(l))));return U(r,s.precision=t,s.rounding=n,!0)};C.hyperbolicSine=C.sinh=function(){var o,e,t,n,i=this,r=i.constructor;if(!i.isFinite()||i.isZero())return new r(i);if(e=r.precision,t=r.rounding,r.precision=e+Math.max(i.e,i.sd())+4,r.rounding=1,n=i.d.length,n<3)i=jt(r,2,i,i,!0);else{o=1.4*Math.sqrt(n),o=o>16?16:o|0,i=i.times(1/_n(5,o)),i=jt(r,2,i,i,!0);for(var s,a=new r(5),c=new r(16),u=new r(20);o--;)s=i.times(i),i=i.times(a.plus(s.times(c.times(s).plus(u))))}return r.precision=e,r.rounding=t,U(i,e,t,!0)};C.hyperbolicTangent=C.tanh=function(){var o,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+7,n.rounding=1,le(t.sinh(),t.cosh(),n.precision=o,n.rounding=e)):new n(t.s)};C.inverseCosine=C.acos=function(){var o,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,r=t.rounding;return n!==-1?n===0?e.isNeg()?st(t,i,r):new t(0):new t(NaN):e.isZero()?st(t,i+4,r).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),o=st(t,i+4,r).times(.5),t.precision=i,t.rounding=r,o.minus(e))};C.inverseHyperbolicCosine=C.acosh=function(){var o,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(o=n.precision,e=n.rounding,n.precision=o+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,j=!1,t=t.times(t).minus(1).sqrt().plus(t),j=!0,n.precision=o,n.rounding=e,t.ln()):new n(t)};C.inverseHyperbolicSine=C.asinh=function(){var o,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,j=!1,t=t.times(t).plus(1).sqrt().plus(t),j=!0,n.precision=o,n.rounding=e,t.ln())};C.inverseHyperbolicTangent=C.atanh=function(){var o,e,t,n,i=this,r=i.constructor;return i.isFinite()?i.e>=0?new r(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(o=r.precision,e=r.rounding,n=i.sd(),Math.max(n,o)<2*-i.e-1?U(new r(i),o,e,!0):(r.precision=t=n-i.e,i=le(i.plus(1),new r(1).minus(i),t+o,1),r.precision=o+4,r.rounding=1,i=i.ln(),r.precision=o,r.rounding=e,i.times(.5))):new r(NaN)};C.inverseSine=C.asin=function(){var o,e,t,n,i=this,r=i.constructor;return i.isZero()?new r(i):(e=i.abs().cmp(1),t=r.precision,n=r.rounding,e!==-1?e===0?(o=st(r,t+4,n).times(.5),o.s=i.s,o):new r(NaN):(r.precision=t+6,r.rounding=1,i=i.div(new r(1).minus(i.times(i)).sqrt().plus(1)).atan(),r.precision=t,r.rounding=n,i.times(2)))};C.inverseTangent=C.atan=function(){var o,e,t,n,i,r,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<=Si)return s=st(l,p+4,m).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(p+4<=Si)return s=st(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/Y+2|0),o=t;o;--o)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(j=!1,e=Math.ceil(a/Y),n=1,c=u.times(u),s=new l(u),i=u;o!==-1;)if(i=i.times(c),r=s.minus(i.div(n+=2)),i=i.times(c),s=r.plus(i.div(n+=2)),s.d[e]!==void 0)for(o=e;s.d[o]===r.d[o]&&o--;);return t&&(s=s.times(2<<t-1)),j=!0,U(s,l.precision=p,l.rounding=m,!0)};C.isFinite=function(){return!!this.d};C.isInteger=C.isInt=function(){return!!this.d&&De(this.e/Y)>this.d.length-2};C.isNaN=function(){return!this.s};C.isNegative=C.isNeg=function(){return this.s<0};C.isPositive=C.isPos=function(){return this.s>0};C.isZero=function(){return!!this.d&&this.d[0]===0};C.lessThan=C.lt=function(o){return this.cmp(o)<0};C.lessThanOrEqualTo=C.lte=function(o){return this.cmp(o)<1};C.logarithm=C.log=function(o){var e,t,n,i,r,s,a,c,u=this,l=u.constructor,p=l.precision,m=l.rounding,d=5;if(o==null)o=new l(10),e=!0;else{if(o=new l(o),t=o.d,o.s<0||!t||!t[0]||o.eq(1))return new l(NaN);e=o.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)r=!0;else{for(i=t[0];i%10===0;)i/=10;r=i!==1}if(j=!1,a=p+d,s=Lt(u,a),n=e?En(l,a+10):Lt(o,a),c=le(s,n,a,1),cn(c.d,i=p,m))do if(a+=10,s=Lt(u,a),n=e?En(l,a+10):Lt(o,a),c=le(s,n,a,1),!r){+We(c.d).slice(i+1,i+15)+1==1e14&&(c=U(c,p+1,0));break}while(cn(c.d,i+=10,m));return j=!0,U(c,p,m)};C.minus=C.sub=function(o){var e,t,n,i,r,s,a,c,u,l,p,m,d=this,f=d.constructor;if(o=new f(o),!d.d||!o.d)return!d.s||!o.s?o=new f(NaN):d.d?o.s=-o.s:o=new f(o.d||d.s!==o.s?d:NaN),o;if(d.s!=o.s)return o.s=-o.s,d.plus(o);if(u=d.d,m=o.d,a=f.precision,c=f.rounding,!u[0]||!m[0]){if(m[0])o.s=-o.s;else if(u[0])o=new f(d);else return new f(c===3?-0:0);return j?U(o,a,c):o}if(t=De(o.e/Y),l=De(d.e/Y),u=u.slice(),r=l-t,r){for(p=r<0,p?(e=u,r=-r,s=m.length):(e=m,t=l,s=u.length),n=Math.max(Math.ceil(a/Y),s)+2,r>n&&(r=n,e.length=1),e.reverse(),n=r;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}r=0}for(p&&(e=u,u=m,m=e,o.s=-o.s),s=u.length,n=m.length-s;n>0;--n)u[s++]=0;for(n=m.length;n>r;){if(u[--n]<m[n]){for(i=n;i&&u[--i]===0;)u[i]=at-1;--u[i],u[n]+=at}u[n]-=m[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(o.d=u,o.e=Vn(u,t),j?U(o,a,c):o):new f(c===3?-0:0)};C.modulo=C.mod=function(o){var e,t=this,n=t.constructor;return o=new n(o),!t.d||!o.s||o.d&&!o.d[0]?new n(NaN):!o.d||t.d&&!t.d[0]?U(new n(t),n.precision,n.rounding):(j=!1,n.modulo==9?(e=le(t,o.abs(),0,3,1),e.s*=o.s):e=le(t,o,0,n.modulo,1),e=e.times(o),j=!0,t.minus(e))};C.naturalExponential=C.exp=function(){return Ki(this)};C.naturalLogarithm=C.ln=function(){return Lt(this)};C.negated=C.neg=function(){var o=new this.constructor(this);return o.s=-o.s,U(o)};C.plus=C.add=function(o){var e,t,n,i,r,s,a,c,u,l,p=this,m=p.constructor;if(o=new m(o),!p.d||!o.d)return!p.s||!o.s?o=new m(NaN):p.d||(o=new m(o.d||p.s===o.s?p:NaN)),o;if(p.s!=o.s)return o.s=-o.s,p.minus(o);if(u=p.d,l=o.d,a=m.precision,c=m.rounding,!u[0]||!l[0])return l[0]||(o=new m(p)),j?U(o,a,c):o;if(r=De(p.e/Y),n=De(o.e/Y),u=u.slice(),i=r-n,i){for(i<0?(t=u,i=-i,s=l.length):(t=l,n=r,s=u.length),r=Math.ceil(a/Y),s=r>s?r+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=u.length,i=l.length,s-i<0&&(i=s,t=l,l=u,u=t),e=0;i;)e=(u[--i]=u[i]+l[i]+e)/at|0,u[i]%=at;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return o.d=u,o.e=Vn(u,n),j?U(o,a,c):o};C.precision=C.sd=function(o){var e,t=this;if(o!==void 0&&o!==!!o&&o!==1&&o!==0)throw Error(Rt+o);return t.d?(e=Uo(t.d),o&&t.e+1>e&&(e=t.e+1)):e=NaN,e};C.round=function(){var o=this,e=o.constructor;return U(new e(o),o.e+1,e.rounding)};C.sine=C.sin=function(){var o,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+Math.max(t.e,t.sd())+Y,n.rounding=1,t=Ss(n,Ho(n,t)),n.precision=o,n.rounding=e,U(kt>2?t.neg():t,o,e,!0)):new n(NaN)};C.squareRoot=C.sqrt=function(){var o,e,t,n,i,r,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(j=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=We(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=De((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(r=n,n=r.plus(le(s,r,t+2,1)).times(.5),We(r.d).slice(0,t)===(e=We(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(U(r,c+1,0),r.times(r).eq(s))){n=r;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(U(n,c+1,1),o=!n.times(n).eq(s));break}return j=!0,U(n,c,l.rounding,o)};C.tangent=C.tan=function(){var o,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+10,n.rounding=1,t=t.sin(),t.s=1,t=le(t,new n(1).minus(t.times(t)).sqrt(),o+10,0),n.precision=o,n.rounding=e,U(kt==2||kt==4?t.neg():t,o,e,!0)):new n(NaN)};C.times=C.mul=function(o){var e,t,n,i,r,s,a,c,u,l=this,p=l.constructor,m=l.d,d=(o=new p(o)).d;if(o.s*=l.s,!m||!m[0]||!d||!d[0])return new p(!o.s||m&&!m[0]&&!d||d&&!d[0]&&!m?NaN:!m||!d?o.s/0:o.s*0);for(t=De(l.e/Y)+De(o.e/Y),c=m.length,u=d.length,c<u&&(r=m,m=d,d=r,s=c,c=u,u=s),r=[],s=c+u,n=s;n--;)r.push(0);for(n=u;--n>=0;){for(e=0,i=c+n;i>n;)a=r[i]+d[n]*m[i-n-1]+e,r[i--]=a%at|0,e=a/at|0;r[i]=(r[i]+e)%at|0}for(;!r[--s];)r.pop();return e?++t:r.shift(),o.d=r,o.e=Vn(r,t),j?U(o,p.precision,p.rounding):o};C.toBinary=function(o,e){return Ni(this,2,o,e)};C.toDecimalPlaces=C.toDP=function(o,e){var t=this,n=t.constructor;return t=new n(t),o===void 0?t:(Ye(o,0,Ot),e===void 0?e=n.rounding:Ye(e,0,8),U(t,o+t.e+1,e))};C.toExponential=function(o,e){var t,n=this,i=n.constructor;return o===void 0?t=pt(n,!0):(Ye(o,0,Ot),e===void 0?e=i.rounding:Ye(e,0,8),n=U(new i(n),o+1,e),t=pt(n,!0,o+1)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toFixed=function(o,e){var t,n,i=this,r=i.constructor;return o===void 0?t=pt(i):(Ye(o,0,Ot),e===void 0?e=r.rounding:Ye(e,0,8),n=U(new r(i),o+i.e+1,e),t=pt(n,!1,o+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};C.toFraction=function(o){var e,t,n,i,r,s,a,c,u,l,p,m,d=this,f=d.d,b=d.constructor;if(!f)return new b(d);if(u=t=new b(1),n=c=new b(0),e=new b(n),r=e.e=Uo(f)-d.e-1,s=r%Y,e.d[0]=Le(10,s<0?Y+s:s),o==null)o=r>0?e:u;else{if(a=new b(o),!a.isInt()||a.lt(u))throw Error(Rt+a);o=a.gt(e)?r>0?e:u:a}for(j=!1,a=new b(We(f)),l=b.precision,b.precision=r=f.length*Y*2;p=le(a,e,0,1,1),i=t.plus(p.times(n)),i.cmp(o)!=1;)t=n,n=i,i=u,u=c.plus(p.times(i)),c=i,i=e,e=a.minus(p.times(i)),a=i;return i=le(o.minus(t),n,0,1,1),c=c.plus(i.times(u)),t=t.plus(i.times(n)),c.s=u.s=d.s,m=le(u,n,r,1).minus(d).abs().cmp(le(c,t,r,1).minus(d).abs())<1?[u,n]:[c,t],b.precision=l,j=!0,m};C.toHexadecimal=C.toHex=function(o,e){return Ni(this,16,o,e)};C.toNearest=function(o,e){var t=this,n=t.constructor;if(t=new n(t),o==null){if(!t.d)return t;o=new n(1),e=n.rounding}else{if(o=new n(o),e===void 0?e=n.rounding:Ye(e,0,8),!t.d)return o.s?t:o;if(!o.d)return o.s&&(o.s=t.s),o}return o.d[0]?(j=!1,t=le(t,o,0,e,1).times(o),j=!0,U(t)):(o.s=t.s,t=o),t};C.toNumber=function(){return+this};C.toOctal=function(o,e){return Ni(this,8,o,e)};C.toPower=C.pow=function(o){var e,t,n,i,r,s,a=this,c=a.constructor,u=+(o=new c(o));if(!a.d||!o.d||!a.d[0]||!o.d[0])return new c(Le(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,r=c.rounding,o.eq(1))return U(a,n,r);if(e=De(o.e/Y),e>=o.d.length-1&&(t=u<0?-u:u)<=Ts)return i=Xo(c,a,t,n),o.s<0?new c(1).div(i):U(i,n,r);if(s=a.s,s<0){if(e<o.d.length-1)return new c(NaN);if((o.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Le(+a,u),e=t==0||!isFinite(t)?De(u*(Math.log("0."+We(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):(j=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Ki(o.times(Lt(a,n+t)),n),i.d&&(i=U(i,n+5,1),cn(i.d,n,r)&&(e=n+10,i=U(Ki(o.times(Lt(a,e+t)),e),e+5,1),+We(i.d).slice(n+1,n+15)+1==1e14&&(i=U(i,n+1,0)))),i.s=s,j=!0,c.rounding=r,U(i,n,r))};C.toPrecision=function(o,e){var t,n=this,i=n.constructor;return o===void 0?t=pt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ye(o,1,Ot),e===void 0?e=i.rounding:Ye(e,0,8),n=U(new i(n),o,e),t=pt(n,o<=n.e||n.e<=i.toExpNeg,o)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toSignificantDigits=C.toSD=function(o,e){var t=this,n=t.constructor;return o===void 0?(o=n.precision,e=n.rounding):(Ye(o,1,Ot),e===void 0?e=n.rounding:Ye(e,0,8)),U(new n(t),o,e)};C.toString=function(){var o=this,e=o.constructor,t=pt(o,o.e<=e.toExpNeg||o.e>=e.toExpPos);return o.isNeg()&&!o.isZero()?"-"+t:t};C.truncated=C.trunc=function(){return U(new this.constructor(this),this.e+1,1)};C.valueOf=C.toJSON=function(){var o=this,e=o.constructor,t=pt(o,o.e<=e.toExpNeg||o.e>=e.toExpPos);return o.isNeg()?"-"+t:t};function We(o){var e,t,n,i=o.length-1,r="",s=o[0];if(i>0){for(r+=s,e=1;e<i;e++)n=o[e]+"",t=Y-n.length,t&&(r+=Nt(t)),r+=n;s=o[e],n=s+"",t=Y-n.length,t&&(r+=Nt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return r+s}function Ye(o,e,t){if(o!==~~o||o<e||o>t)throw Error(Rt+o)}function cn(o,e,t,n){var i,r,s,a;for(r=o[0];r>=10;r/=10)--e;return--e<0?(e+=Y,i=0):(i=Math.ceil((e+1)/Y),e%=Y),r=Le(10,Y-e),a=o[i]%r|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==r||t>3&&a+1==r/2)&&(o[i+1]/r/100|0)==Le(10,e-2)-1||(a==r/2||a==0)&&(o[i+1]/r/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==r||!n&&t>3&&a+1==r/2)&&(o[i+1]/r/1e3|0)==Le(10,e-3)-1,s}function Mn(o,e,t){for(var n,i=[0],r,s=0,a=o.length;s<a;){for(r=i.length;r--;)i[r]*=e;for(i[0]+=Ii.indexOf(o.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function Is(o,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/_n(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),o.precision+=t,e=jt(o,1,e.times(i),new o(1));for(var r=t;r--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return o.precision-=t,e}var le=function(){function o(n,i,r){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*i+a,n[c]=s%r|0,a=s/r|0;return a&&n.unshift(a),n}function e(n,i,r,s){var a,c;if(r!=s)c=r>s?1:-1;else for(a=c=0;a<r;a++)if(n[a]!=i[a]){c=n[a]>i[a]?1:-1;break}return c}function t(n,i,r,s){for(var a=0;r--;)n[r]-=a,a=n[r]<i[r]?1:0,n[r]=a*s+n[r]-i[r];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,r,s,a,c){var u,l,p,m,d,f,b,y,g,k,w,h,T,A,x,I,R,B,L,_,O=n.constructor,z=n.s==i.s?1:-1,D=n.d,E=i.d;if(!D||!D[0]||!E||!E[0])return new O(!n.s||!i.s||(D?E&&D[0]==E[0]:!E)?NaN:D&&D[0]==0||!E?z*0:z/0);for(c?(d=1,l=n.e-i.e):(c=at,d=Y,l=De(n.e/d)-De(i.e/d)),L=E.length,R=D.length,g=new O(z),k=g.d=[],p=0;E[p]==(D[p]||0);p++);if(E[p]>(D[p]||0)&&l--,r==null?(A=r=O.precision,s=O.rounding):a?A=r+(n.e-i.e)+1:A=r,A<0)k.push(1),f=!0;else{if(A=A/d+2|0,p=0,L==1){for(m=0,E=E[0],A++;(p<R||m)&&A--;p++)x=m*c+(D[p]||0),k[p]=x/E|0,m=x%E|0;f=m||p<R}else{for(m=c/(E[0]+1)|0,m>1&&(E=o(E,m,c),D=o(D,m,c),L=E.length,R=D.length),I=L,w=D.slice(0,L),h=w.length;h<L;)w[h++]=0;_=E.slice(),_.unshift(0),B=E[0],E[1]>=c/2&&++B;do m=0,u=e(E,w,L,h),u<0?(T=w[0],L!=h&&(T=T*c+(w[1]||0)),m=T/B|0,m>1?(m>=c&&(m=c-1),b=o(E,m,c),y=b.length,h=w.length,u=e(b,w,y,h),u==1&&(m--,t(b,L<y?_:E,y,c))):(m==0&&(u=m=1),b=E.slice()),y=b.length,y<h&&b.unshift(0),t(w,b,h,c),u==-1&&(h=w.length,u=e(E,w,L,h),u<1&&(m++,t(w,L<h?_:E,h,c))),h=w.length):u===0&&(m++,w=[0]),k[p++]=m,u&&w[0]?w[h++]=D[I]||0:(w=[D[I]],h=1);while((I++<R||w[0]!==void 0)&&A--);f=w[0]!==void 0}k[0]||k.shift()}if(d==1)g.e=l,Vo=f;else{for(p=1,m=k[0];m>=10;m/=10)p++;g.e=p+l*d-1,U(g,a?r+g.e+1:r,s,f)}return g}}();function U(o,e,t,n){var i,r,s,a,c,u,l,p,m,d=o.constructor;e:if(e!=null){if(p=o.d,!p)return o;for(i=1,a=p[0];a>=10;a/=10)i++;if(r=e-i,r<0)r+=Y,s=e,l=p[m=0],c=l/Le(10,i-s-1)%10|0;else if(m=Math.ceil((r+1)/Y),a=p.length,m>=a)if(n){for(;a++<=m;)p.push(0);l=c=0,i=1,r%=Y,s=r-Y+1}else break e;else{for(l=a=p[m],i=1;a>=10;a/=10)i++;r%=Y,s=r-Y+i,c=s<0?0:l/Le(10,i-s-1)%10|0}if(n=n||e<0||p[m+1]!==void 0||(s<0?l:l%Le(10,i-s-1)),u=t<4?(c||n)&&(t==0||t==(o.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(r>0?s>0?l/Le(10,i-s):0:p[m-1])%10&1||t==(o.s<0?8:7)),e<1||!p[0])return p.length=0,u?(e-=o.e+1,p[0]=Le(10,(Y-e%Y)%Y),o.e=-e||0):p[0]=o.e=0,o;if(r==0?(p.length=m,a=1,m--):(p.length=m+1,a=Le(10,Y-r),p[m]=s>0?(l/Le(10,i-s)%Le(10,s)|0)*a:0),u)for(;;)if(m==0){for(r=1,s=p[0];s>=10;s/=10)r++;for(s=p[0]+=a,a=1;s>=10;s/=10)a++;r!=a&&(o.e++,p[0]==at&&(p[0]=1));break}else{if(p[m]+=a,p[m]!=at)break;p[m--]=0,a=1}for(r=p.length;p[--r]===0;)p.pop()}return j&&(o.e>d.maxE?(o.d=null,o.e=NaN):o.e<d.minE&&(o.e=0,o.d=[0])),o}function pt(o,e,t){if(!o.isFinite())return Yo(o);var n,i=o.e,r=We(o.d),s=r.length;return e?(t&&(n=t-s)>0?r=r.charAt(0)+"."+r.slice(1)+Nt(n):s>1&&(r=r.charAt(0)+"."+r.slice(1)),r=r+(o.e<0?"e":"e+")+o.e):i<0?(r="0."+Nt(-i-1)+r,t&&(n=t-s)>0&&(r+=Nt(n))):i>=s?(r+=Nt(i+1-s),t&&(n=t-i-1)>0&&(r=r+"."+Nt(n))):((n=i+1)<s&&(r=r.slice(0,n)+"."+r.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(r+="."),r+=Nt(n))),r}function Vn(o,e){var t=o[0];for(e*=Y;t>=10;t/=10)e++;return e}function En(o,e,t){if(e>Bs)throw j=!0,t&&(o.precision=t),Error(_o);return U(new o(Fn),e,1,!0)}function st(o,e,t){if(e>Si)throw Error(_o);return U(new o(vn),e,t,!0)}function Uo(o){var e=o.length-1,t=e*Y+1;if(e=o[e],e){for(;e%10==0;e/=10)t--;for(e=o[0];e>=10;e/=10)t++}return t}function Nt(o){for(var e="";o--;)e+="0";return e}function Xo(o,e,t,n){var i,r=new o(1),s=Math.ceil(n/Y+4);for(j=!1;;){if(t%2&&(r=r.times(e),Eo(r.d,s)&&(i=!0)),t=De(t/2),t===0){t=r.d.length-1,i&&r.d[t]===0&&++r.d[t];break}e=e.times(e),Eo(e.d,s)}return j=!0,r}function vo(o){return o.d[o.d.length-1]&1}function zo(o,e,t){for(var n,i=new o(e[0]),r=0;++r<e.length;)if(n=new o(e[r]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Ki(o,e){var t,n,i,r,s,a,c,u=0,l=0,p=0,m=o.constructor,d=m.rounding,f=m.precision;if(!o.d||!o.d[0]||o.e>17)return new m(o.d?o.d[0]?o.s<0?0:1/0:1:o.s?o.s<0?0:o:0/0);for(e==null?(j=!1,c=f):c=e,a=new m(.03125);o.e>-2;)o=o.times(a),p+=5;for(n=Math.log(Le(2,p))/Math.LN10*2+5|0,c+=n,t=r=s=new m(1),m.precision=c;;){if(r=U(r.times(o),c,1),t=t.times(++l),a=s.plus(le(r,t,c,1)),We(a.d).slice(0,c)===We(s.d).slice(0,c)){for(i=p;i--;)s=U(s.times(s),c,1);if(e==null)if(u<3&&cn(s.d,c-n,d,u))m.precision=c+=10,t=r=a=new m(1),l=0,u++;else return U(s,m.precision=f,d,j=!0);else return m.precision=f,s}s=a}}function Lt(o,e){var t,n,i,r,s,a,c,u,l,p,m,d=1,f=10,b=o,y=b.d,g=b.constructor,k=g.rounding,w=g.precision;if(b.s<0||!y||!y[0]||!b.e&&y[0]==1&&y.length==1)return new g(y&&!y[0]?-1/0:b.s!=1?NaN:y?0:b);if(e==null?(j=!1,l=w):l=e,g.precision=l+=f,t=We(y),n=t.charAt(0),Math.abs(r=b.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)b=b.times(o),t=We(b.d),n=t.charAt(0),d++;r=b.e,n>1?(b=new g("0."+t),r++):b=new g(n+"."+t.slice(1))}else return u=En(g,l+2,w).times(r+""),b=Lt(new g(n+"."+t.slice(1)),l-f).plus(u),g.precision=w,e==null?U(b,w,k,j=!0):b;for(p=b,c=s=b=le(b.minus(1),b.plus(1),l,1),m=U(b.times(b),l,1),i=3;;){if(s=U(s.times(m),l,1),u=c.plus(le(s,new g(i),l,1)),We(u.d).slice(0,l)===We(c.d).slice(0,l))if(c=c.times(2),r!==0&&(c=c.plus(En(g,l+2,w).times(r+""))),c=le(c,new g(d),l,1),e==null)if(cn(c.d,l-f,k,a))g.precision=l+=f,u=s=b=le(p.minus(1),p.plus(1),l,1),m=U(b.times(b),l,1),i=a=1;else return U(c,g.precision=w,k,j=!0);else return g.precision=w,c;c=u,i+=2}}function Yo(o){return String(o.s*o.s/0)}function Ci(o,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,o.e=t=t-n-1,o.d=[],n=(t+1)%Y,t<0&&(n+=Y),n<i){for(n&&o.d.push(+e.slice(0,n)),i-=Y;n<i;)o.d.push(+e.slice(n,n+=Y));e=e.slice(n),n=Y-e.length}else n-=i;for(;n--;)e+="0";o.d.push(+e),j&&(o.e>o.constructor.maxE?(o.d=null,o.e=NaN):o.e<o.constructor.minE&&(o.e=0,o.d=[0]))}else o.e=0,o.d=[0];return o}function xs(o,e){var t,n,i,r,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Go.test(e))return Ci(o,e)}else if(e==="Infinity"||e==="NaN")return+e||(o.s=NaN),o.e=NaN,o.d=null,o;if(ws.test(e))t=16,e=e.toLowerCase();else if(ks.test(e))t=2;else if(hs.test(e))t=8;else throw Error(Rt+e);for(r=e.search(/p/i),r>0?(c=+e.slice(r+1),e=e.substring(2,r)):e=e.slice(2),r=e.indexOf("."),s=r>=0,n=o.constructor,s&&(e=e.replace(".",""),a=e.length,r=a-r,i=Xo(n,new n(t),r,r*2)),u=Mn(e,t,at),l=u.length-1,r=l;u[r]===0;--r)u.pop();return r<0?new n(o.s*0):(o.e=Vn(u,l),o.d=u,j=!1,s&&(o=le(o,i,a*4)),c&&(o=o.times(Math.abs(c)<54?Le(2,c):ln.pow(2,c))),j=!0,o)}function Ss(o,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:jt(o,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_n(5,t)),e=jt(o,2,e,e);for(var i,r=new o(5),s=new o(16),a=new o(20);t--;)i=e.times(e),e=e.times(r.plus(i.times(s.times(i).minus(a))));return e}function jt(o,e,t,n,i){var r,s,a,c,u=1,l=o.precision,p=Math.ceil(l/Y);for(j=!1,c=t.times(t),a=new o(n);;){if(s=le(a.times(c),new o(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=le(s.times(c),new o(e++*e++),l,1),s=a.plus(n),s.d[p]!==void 0){for(r=p;s.d[r]===a.d[r]&&r--;);if(r==-1)break}r=a,a=n,n=s,s=r,u++}return j=!0,s.d.length=p+1,s}function _n(o,e){for(var t=o;--e;)t*=o;return t}function Ho(o,e){var t,n=e.s<0,i=st(o,o.precision,1),r=i.times(.5);if(e=e.abs(),e.lte(r))return kt=n?4:1,e;if(t=e.divToInt(i),t.isZero())kt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(r))return kt=vo(t)?n?2:3:n?4:1,e;kt=vo(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Ni(o,e,t,n){var i,r,s,a,c,u,l,p,m,d=o.constructor,f=t!==void 0;if(f?(Ye(t,1,Ot),n===void 0?n=d.rounding:Ye(n,0,8)):(t=d.precision,n=d.rounding),!o.isFinite())l=Yo(o);else{for(l=pt(o),s=l.indexOf("."),f?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),m=new d(1),m.e=l.length-s,m.d=Mn(pt(m),10,i),m.e=m.d.length),p=Mn(l,10,i),r=c=p.length;p[--c]==0;)p.pop();if(!p[0])l=f?"0p+0":"0";else{if(s<0?r--:(o=new d(o),o.d=p,o.e=r,o=le(o,m,t,n,0,i),p=o.d,r=o.e,u=Vo),s=p[t],a=i/2,u=u||p[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(o.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&p[t-1]&1||n===(o.s<0?8:7)),p.length=t,u)for(;++p[--t]>i-1;)p[t]=0,t||(++r,p.unshift(1));for(c=p.length;!p[c-1];--c);for(s=0,l="";s<c;s++)l+=Ii.charAt(p[s]);if(f){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(p=Mn(l,i,e),c=p.length;!p[c-1];--c);for(s=1,l="1.";s<c;s++)l+=Ii.charAt(p[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(r<0?"p":"p+")+r}else if(r<0){for(;++r;)l="0"+l;l="0."+l}else if(++r>c)for(r-=c;r--;)l+="0";else r<c&&(l=l.slice(0,r)+"."+l.slice(r))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return o.s<0?"-"+l:l}function Eo(o,e){if(o.length>e)return o.length=e,!0}function Ks(o){return new this(o).abs()}function Cs(o){return new this(o).acos()}function Ns(o){return new this(o).acosh()}function Ls(o,e){return new this(o).plus(e)}function Rs(o){return new this(o).asin()}function Os(o){return new this(o).asinh()}function Ms(o){return new this(o).atan()}function Fs(o){return new this(o).atanh()}function vs(o,e){o=new this(o),e=new this(e);var t,n=this.precision,i=this.rounding,r=n+4;return!o.s||!e.s?t=new this(NaN):!o.d&&!e.d?(t=st(this,r,1).times(e.s>0?.25:.75),t.s=o.s):!e.d||o.isZero()?(t=e.s<0?st(this,n,i):new this(0),t.s=o.s):!o.d||e.isZero()?(t=st(this,r,1).times(.5),t.s=o.s):e.s<0?(this.precision=r,this.rounding=1,t=this.atan(le(o,e,r,1)),e=st(this,r,1),this.precision=n,this.rounding=i,t=o.s<0?t.minus(e):t.plus(e)):t=this.atan(le(o,e,r,1)),t}function Es(o){return new this(o).cbrt()}function Ws(o){return U(o=new this(o),o.e+1,2)}function Vs(o,e,t){return new this(o).clamp(e,t)}function _s(o){if(!o||typeof o!="object")throw Error(Wn+"Object expected");var e,t,n,i=o.defaults===!0,r=["precision",1,Ot,"rounding",0,8,"toExpNeg",-Zt,0,"toExpPos",0,Zt,"maxE",0,Zt,"minE",-Zt,0,"modulo",0,9];for(e=0;e<r.length;e+=3)if(t=r[e],i&&(this[t]=xi[t]),(n=o[t])!==void 0)if(De(n)===n&&n>=r[e+1]&&n<=r[e+2])this[t]=n;else throw Error(Rt+t+": "+n);if(t="crypto",i&&(this[t]=xi[t]),(n=o[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(Do);else this[t]=!1;else throw Error(Rt+t+": "+n);return this}function Ds(o){return new this(o).cos()}function qs(o){return new this(o).cosh()}function Qo(o){var e,t,n;function i(r){var s,a,c,u=this;if(!(u instanceof i))return new i(r);if(u.constructor=i,Wo(r)){u.s=r.s,j?!r.d||r.e>i.maxE?(u.e=NaN,u.d=null):r.e<i.minE?(u.e=0,u.d=[0]):(u.e=r.e,u.d=r.d.slice()):(u.e=r.e,u.d=r.d?r.d.slice():r.d);return}if(c=typeof r,c==="number"){if(r===0){u.s=1/r<0?-1:1,u.e=0,u.d=[0];return}if(r<0?(r=-r,u.s=-1):u.s=1,r===~~r&&r<1e7){for(s=0,a=r;a>=10;a/=10)s++;j?s>i.maxE?(u.e=NaN,u.d=null):s<i.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[r]):(u.e=s,u.d=[r]);return}else if(r*0!==0){r||(u.s=NaN),u.e=NaN,u.d=null;return}return Ci(u,r.toString())}else if(c!=="string")throw Error(Rt+r);return(a=r.charCodeAt(0))===45?(r=r.slice(1),u.s=-1):(a===43&&(r=r.slice(1)),u.s=1),Go.test(r)?Ci(u,r):xs(u,r)}if(i.prototype=C,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=_s,i.clone=Qo,i.isDecimal=Wo,i.abs=Ks,i.acos=Cs,i.acosh=Ns,i.add=Ls,i.asin=Rs,i.asinh=Os,i.atan=Ms,i.atanh=Fs,i.atan2=vs,i.cbrt=Es,i.ceil=Ws,i.clamp=Vs,i.cos=Ds,i.cosh=qs,i.div=Gs,i.exp=Us,i.floor=Xs,i.hypot=zs,i.ln=Ys,i.log=Hs,i.log10=Zs,i.log2=Qs,i.max=js,i.min=Js,i.mod=$s,i.mul=ea,i.pow=ta,i.random=na,i.round=ia,i.sign=oa,i.sin=ra,i.sinh=sa,i.sqrt=aa,i.sub=ua,i.sum=ca,i.tan=la,i.tanh=ma,i.trunc=pa,o===void 0&&(o={}),o&&o.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)o.hasOwnProperty(t=n[e++])||(o[t]=this[t]);return i.config(o),i}function Gs(o,e){return new this(o).div(e)}function Us(o){return new this(o).exp()}function Xs(o){return U(o=new this(o),o.e+1,3)}function zs(){var o,e,t=new this(0);for(j=!1,o=0;o<arguments.length;)if(e=new this(arguments[o++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return j=!0,new this(1/0);t=e}return j=!0,t.sqrt()}function Wo(o){return o instanceof ln||o&&o.toStringTag===qo||!1}function Ys(o){return new this(o).ln()}function Hs(o,e){return new this(o).log(e)}function Qs(o){return new this(o).log(2)}function Zs(o){return new this(o).log(10)}function js(){return zo(this,arguments,"lt")}function Js(){return zo(this,arguments,"gt")}function $s(o,e){return new this(o).mod(e)}function ea(o,e){return new this(o).mul(e)}function ta(o,e){return new this(o).pow(e)}function na(o){var e,t,n,i,r=0,s=new this(1),a=[];if(o===void 0?o=this.precision:Ye(o,1,Ot),n=Math.ceil(o/Y),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));r<n;)i=e[r],i>=429e7?e[r]=crypto.getRandomValues(new Uint32Array(1))[0]:a[r++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);r<n;)i=e[r]+(e[r+1]<<8)+(e[r+2]<<16)+((e[r+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,r):(a.push(i%1e7),r+=4);r=n/4}else throw Error(Do);else for(;r<n;)a[r++]=Math.random()*1e7|0;for(n=a[--r],o%=Y,n&&o&&(i=Le(10,Y-o),a[r]=(n/i|0)*i);a[r]===0;r--)a.pop();if(r<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=Y)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<Y&&(t-=Y-n)}return s.e=t,s.d=a,s}function ia(o){return U(o=new this(o),o.e+1,this.rounding)}function oa(o){return o=new this(o),o.d?o.d[0]?o.s:0*o.s:o.s||NaN}function ra(o){return new this(o).sin()}function sa(o){return new this(o).sinh()}function aa(o){return new this(o).sqrt()}function ua(o,e){return new this(o).sub(e)}function ca(){var o=0,e=arguments,t=new this(e[o]);for(j=!1;t.s&&++o<e.length;)t=t.plus(e[o]);return j=!0,U(t,this.precision,this.rounding)}function la(o){return new this(o).tan()}function ma(o){return new this(o).tanh()}function pa(o){return U(o=new this(o),o.e+1,1)}C[Symbol.for("nodejs.util.inspect.custom")]=C.toString;C[Symbol.toStringTag]="Decimal";var ln=C.constructor=Qo(xi);Fn=new ln(Fn);vn=new ln(vn);var S=ln;import{PublicKey as Jo}from"@solana/web3.js";import{get as Zo,set as da}from"lodash";var Li=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}},jo={},fa={};function me(o){let e=Zo(jo,o);if(!e){let t=Zo(fa,o);e=new Li({name:o,logLevel:t}),da(jo,o,e)}return e}import{MINT_SIZE as ba,TOKEN_PROGRAM_ID as ya,getTransferFeeConfig as ga,unpackMint as Pa}from"@solana/spl-token";var Ri=me("Raydium_accountInfo_util");async function wt(o,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:r=100}=G({batchRequest:!1},t),s=Oi(e,r),a=new Array(s.length).fill([]);if(n){let c=s.map(p=>{let m=o._buildArgs([p.map(d=>d.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Oi(c,10);a=(await(await Promise.all(u.map(async p=>await o._rpcBatchRequest(p)))).flat()).map(p=>(p.error&&Ri.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${p.error.message}`),p.result.value.map(m=>{if(m){let{data:d,executable:f,lamports:b,owner:y,rentEpoch:g}=m;return d.length!==2&&d[1]!=="base64"&&Ri.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:f,lamports:b,owner:new Jo(y),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(c=>o.getMultipleAccountsInfo(c,i)))}catch(c){c instanceof Error&&Ri.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function Mt(o,e,t){let n=await wt(o,e.map(i=>i.pubkey),t);return e.map((i,r)=>Q(G({},i),{accountInfo:n[r]}))}async function Mi({connection:o,mints:e,config:t}){var r,s,a;if(e.length===0)return{};let n=await Mt(o,e.map(c=>({pubkey:dt(c)})),t),i={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<ba){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=Pa(c.pubkey,c.accountInfo,(r=c.accountInfo)==null?void 0:r.owner);i[c.pubkey.toString()]=Q(G({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||ya,feeConfig:(a=ga(u))!=null?a:void 0})}return i[Jo.default.toBase58()]=i[Ve.toBase58()],i}import bt from"bn.js";import xa from"big.js";import Gn from"bn.js";import Aa from"toformat";var ka=Aa,mn=ka;import qn from"big.js";import ha from"bn.js";import Ta from"decimal.js-light";import pn from"bn.js";var $o=9007199254740991;function pe(o){let e=me("Raydium_parseBigNumberish");if(o instanceof pn)return o;if(typeof o=="string"){if(o.match(/^-?[0-9]+$/))return new pn(o);e.logWithError(`invalid BigNumberish string: ${o}`)}return typeof o=="number"?(o%1&&e.logWithError(`BigNumberish number underflow: ${o}`),(o>=$o||o<=-$o)&&e.logWithError(`BigNumberish number overflow: ${o}`),new pn(String(o))):typeof o=="bigint"?new pn(o.toString()):(e.error(`invalid BigNumberish value: ${o}`),new pn(0))}var Dn=me("module/fraction"),Fi=mn(qn),dn=mn(Ta),Ba={[0]:dn.ROUND_DOWN,[1]:dn.ROUND_HALF_UP,[2]:dn.ROUND_UP},Ia={[0]:qn.roundDown,[1]:qn.roundHalfUp,[2]:qn.roundUp},re=class{constructor(e,t=new ha(1)){this.numerator=pe(e),this.denominator=pe(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new re(this.denominator,this.numerator)}add(e){let t=e instanceof re?e:new re(pe(e));return this.denominator.eq(t.denominator)?new re(this.numerator.add(t.numerator),this.denominator):new re(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof re?e:new re(pe(e));return this.denominator.eq(t.denominator)?new re(this.numerator.sub(t.numerator),this.denominator):new re(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof re?e:new re(pe(e));return new re(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof re?e:new re(pe(e));return new re(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Dn.logWithError(`${e} is not an integer.`),e<=0&&Dn.logWithError(`${e} is not positive.`),dn.set({precision:e+1,rounding:Ba[n]});let i=new dn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Dn.logWithError(`${e} is not an integer.`),e<0&&Dn.logWithError(`${e} is negative.`),Fi.DP=e,Fi.RM=Ia[n]||1,new Fi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Sa=me("Raydium_amount"),er=mn(xa);function Ka(o,e){let t="0",n="0";if(o.includes(".")){let i=o.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):Sa.logWithError(`invalid number string, num: ${o}`)}else t=o;return[t,n.slice(0,e)||n]}var be=class extends re{constructor(t,n,i=!0,r){let s=new Gn(0),a=vi.pow(new Gn(t.decimals));if(i)s=pe(n);else{let c=new Gn(0),u=new Gn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,p]=Ka(n.toString(),t.decimals);c=pe(l),u=pe(p)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=me(r||"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 be(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new be(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return er.DP=this.token.decimals,new er(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Ca}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as tr}from"@solana/spl-token";var Ei={chainId:101,address:Ca.default.toBase58(),programId:tr.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ft={chainId:101,address:"So11111111111111111111111111111111111111112",programId:tr.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 _i}from"@solana/web3.js";import{PublicKey as ke,SystemProgram as nr,SYSVAR_RENT_PUBKEY as Na}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as La}from"@solana/spl-token";function N({pubkey:o,isSigner:e=!1,isWritable:t=!0}){return{pubkey:o,isWritable:t,isSigner:e}}var ul=[N({pubkey:La,isWritable:!1}),N({pubkey:nr.programId,isWritable:!1}),N({pubkey:Na,isWritable:!1})];function Wi({publicKey:o,transformSol:e}){let t=Vi(o.toString());if(t instanceof ke)return e&&t.equals(fn)?Ve:t;if(e&&t.toString()===fn.toBase58())return Ve;if(typeof t=="string"){if(t===ke.default.toBase58())return ke.default;try{return new ke(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Vi(o){try{return new ke(o)}catch{return o}}var Un=new ke("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Jt=new ke("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ut=new ke("SysvarRent111111111111111111111111111111111"),cl=new ke("SysvarC1ock11111111111111111111111111111111"),ht=new ke("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ll=new ke("Sysvar1nstructions1111111111111111111111111"),Ra=nr.programId,ml=new ke("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),pl=new ke("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),dl=new ke("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),fl=new ke("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),bl=new ke("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),yl=new ke("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),gl=new ke("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Pl=new ke("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Al=new ke("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),kl=new ke("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),wl=new ke("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ve=new ke("So11111111111111111111111111111111111111112"),fn=ke.default;function dt(o){return Wi({publicKey:o,transformSol:!0})}var Di=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:r=!1,isToken2022:s=!1}){if(e===fn.toBase58()||e instanceof _i&&fn.equals(e)){this.decimals=ft.decimals,this.symbol=ft.symbol,this.name=ft.name,this.mint=new _i(ft.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=r?_i.default:Wi({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},je=Di;je.WSOL=new Di(Q(G({},ft),{mint:ft.address}));var qi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Xn=qi;Xn.SOL=new qi(Ei);import Oa from"bn.js";var ir=new re(new Oa(100)),Tt=class extends re{toSignificant(e=5,t,n){return this.mul(ir).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(ir).toFixed(e,t,n)}};var Ma=me("Raydium_price"),He=class extends re{constructor(t){let{baseToken:n,quoteToken:i,numerator:r,denominator:s}=t;super(r,s);this.baseToken=n,this.quoteToken=i,this.scalar=new re(Gi(n.decimals),Gi(i.decimals))}get raw(){return new re(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new He({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Ma.logWithError("mul token not equals");let n=super.mul(t);return new He({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var or=new bt(0),Fa=new bt(1),lm=new bt(2),mm=new bt(3),pm=new bt(5),vi=new bt(10),dm=new bt(100),fm=new bt(1e3),bm=new bt(1e4);function Gi(o){return vi.pow(pe(o))}function Ui(o,e,t){return o.mul(e).add(t).sub(new bt(1)).div(t)}function Oi(o,e=1,t=[]){let n=[...o];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as qa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ga}from"@solana/spl-token";import{ComputeBudgetProgram as rr,Keypair as ar,PublicKey as va,Transaction as ur,TransactionMessage as Ea,VersionedTransaction as cr}from"@solana/web3.js";var ne={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{TOKEN_PROGRAM_ID as Wa}from"@solana/spl-token";var sr=me("Raydium_txUtil"),lr=1644;function zn(o){let e=[],t=[];return o.microLamports&&(e.push(rr.setComputeUnitPrice({microLamports:o.microLamports})),t.push(ne.SetComputeUnitPrice)),o.units&&(e.push(rr.setComputeUnitLimit({units:o.units})),t.push(ne.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function $t(o,e){var n,i;let t=e!=null?e:"confirmed";return(i=await((n=o.getLatestBlockhash)==null?void 0:n.call(o,{commitment:t})))==null?void 0:i.blockhash}async function Yn(o,e){return o.getSignatureStatuses([e]),new Promise((t,n)=>{let i=setTimeout(n,6e4);o.onSignature(e,r=>{if(clearTimeout(i),!r.err){t("");return}n(Object.assign(r.err,{txId:e}))},"confirmed")})}function Va(o,e){o.length<1&&sr.logWithError(`no instructions provided: ${o.toString()}`),e.length<1&&sr.logWithError(`no signers provided:, ${e.toString()}`);let t=new ur;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...o);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<lr}catch{return!1}}function ye(o,e){let[t,n]=va.findProgramAddressSync(o,e);return{publicKey:t,nonce:n}}function bn({instructions:o,payer:e,signers:t}){return Va(o,[e,...t])}function yn({instructions:o,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=ar.generate().publicKey.toString()}){let r=new Ea({payerKey:e,recentBlockhash:n,instructions:o}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new cr(r).serialize()).toString("base64").length<lr}catch{return!1}}var _a=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o),Da=o=>{let e=o.serialize({requireAllSignatures:!1,verifySignatures:!1});o instanceof cr&&(e=_a(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Dt(o){let e=[];return o.forEach(t=>{t instanceof ur&&(t.recentBlockhash||(t.recentBlockhash=Wa.toBase58()),t.feePayer||(t.feePayer=ar.generate().publicKey)),e.push(Da(t))}),console.log("simulate tx string:",e),e}function fe(o,e,t){return ye([o.toBuffer(),(t!=null?t:Ga).toBuffer(),e.toBuffer()],new qa("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as X}from"@solana/web3.js";var vm=new X("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Em=new X("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Wm=new X("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Vm=new X("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),_m=new X("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Dm=new X("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Xi=new X("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),mr=new X("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),qm=new X("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),pr=new X("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),zi=new X("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ua=new X("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Xa=new X("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Hn=new X("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Gm=new X("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Um=new X("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Xm=new X("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),zm=new X("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ym=new X("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Hm=new X("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Yi=new X("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),za=new X("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Qm=new X("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Zm=new X("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),jm=new X("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ya=new X("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Jm=new X("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),$m=new X("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),ep=new X("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),tp=new X("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),np=new X("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var ip={OPEN_BOOK_PROGRAM:new X("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new X("Ray1111111111111111111111111111111111111111"),AMM_V4:new X("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new X("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new X("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new X("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new X("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new X("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new X("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new X("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new X("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new X("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:X.default,Router:new X("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new X("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new X("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new X("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new X("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new X("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new X("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new X("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new X("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new X("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new X("Ray1111111111111111111111111111111111111111")};import ge from"bn.js";var yt=1e4;function xe(o,e,t,n){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let i=Q(G({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),r=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new ge(r.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(r.transferFeeBasisPoints===yt){let c=new ge(r.maximumFee.toString());return{amount:o.add(c),fee:c,expirationTime:a}}else{let c=en(o.mul(new ge(yt)),new ge(yt-r.transferFeeBasisPoints)),u=new ge(r.maximumFee.toString()),l=c.sub(o).gt(u)?o.add(u):c,p=en(l.mul(new ge(r.transferFeeBasisPoints)),new ge(yt)),m=p.gt(s)?s:p;return{amount:l,fee:m,expirationTime:a}}else{let c=en(o.mul(new ge(r.transferFeeBasisPoints)),new ge(yt)),u=c.gt(s)?s:c;return{amount:o,fee:u,expirationTime:a}}}function ct(o,e){return o===void 0?e:e===void 0?o:Math.min(o,e)}function en(o,e){let{div:t,mod:n}=o.divmod(e);return n.gt(new ge(0))?t.add(new ge(1)):t}function qt(o,e){if(o.isZero())return new ge(0);let t=o.div(e);return t.isZero()?new ge(1):o.mod(e).gt(new ge(0))?t.add(new ge(1)):t}function Hi(o,e,t){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let n=Math.floor(t/432e3),i=n<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,r=new ge(i.maximumFee.toString()),s=n<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0,a=en(o.mul(new ge(i.transferFeeBasisPoints)),new ge(yt)),c=a.gt(r)?r:a;return{amount:o,fee:c,expirationTime:s}}function Qi(o,e,t){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let n=Math.floor(t/432e3),i=n<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,r=new ge(i.maximumFee.toString()),s=n<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0;if(i.transferFeeBasisPoints===yt){let a=new ge(i.maximumFee.toString());return{amount:o.add(a),fee:a,expirationTime:s}}else{let a=en(o.mul(new ge(yt)),new ge(yt-i.transferFeeBasisPoints)),c=new ge(i.maximumFee.toString()),u=a.sub(o).gt(c)?o.add(c):a,l=en(u.mul(new ge(i.transferFeeBasisPoints)),new ge(yt)),p=l.gt(r)?r:l;return{amount:u,fee:p,expirationTime:s}}}import{PublicKey as Zi,AddressLookupTableAccount as on}from"@solana/web3.js";async function ji({connection:o,address:e,cluster:t="mainnet"}){let n=await wt(o,[...new Set(e.map(r=>r.toString()))].map(r=>new Zi(r))),i={};for(let r=0;r<e.length;r++){let s=n[r],a=e[r];if(!s)continue;let c=new on({key:a,state:on.deserialize(s.data)});i[a.toString()]=c,t==="devnet"?nn[a.toString()]=c:tn[a.toString()]=c}return i}var tn={},Ji=async o=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(tn[e])return tn;let t=new Zi(e),n=await o.getAccountInfo(t);return n&&(tn[e]=new on({key:t,state:on.deserialize(n.data)})),tn},nn={},$i=async o=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(nn[e])return nn;let t=new Zi(e),n=await o.getAccountInfo(t);return n&&(nn[e]=new on({key:t,state:on.deserialize(n.data)})),nn};import{PublicKey as rn,sendAndConfirmTransaction as eo,SystemProgram as Ha,Transaction as gn,TransactionMessage as Pn,VersionedTransaction as An}from"@solana/web3.js";import Qa from"axios";var Qn=2e3,Zn=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 Qa.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}=zn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Ha.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new rn(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(ne.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:i=[],endInstructionTypes:r=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...r),this.lookupTableAddress.push(...s.filter(a=>a!==rn.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(G({},t||{})):this.build(t)}build(e){var n;let t=new gn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.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 i=>{var l;let{recentBlockHash:r,skipPreflight:s=!0,sendAndConfirm:a,notSendToRpc:c}=i||{},u=r!=null?r:await $t(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),Dt([t]),(l=this.owner)!=null&&l.isKeyPair)return{txId:a?await eo(this.connection,t,this.signers.find(m=>m.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let p=await this.signAllTransactions([t]);if(this.signers.length)for(let m of p)try{m.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(p[0].serialize(),{skipPreflight:s}),signedTx:p[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:i}=this.build(n),r=t.filter(l=>l.transaction.instructions.length>0),s=[i,...r.map(l=>l.transaction)],a=[this.signers,...r.map(l=>l.signers)],c=[...this.instructionTypes,...r.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:f,skipPreflight:b=!0}=l||{},y=f!=null?f:await $t(this.connection,this.blockhashCommitment);if((g=this.owner)!=null&&g.isKeyPair){if(p){let k=[],w=0;for(let h of s){if(++w,w<=d)continue;let T=await eo(this.connection,h,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});k.push(T)}return{txIds:k,signedTxs:s}}return{txIds:await await Promise.all(s.map(async k=>(k.recentBlockhash=y,await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:b})))),signedTxs:s}}if(this.signAllTransactions){let k=s.map((h,T)=>(h.recentBlockhash=y,a[T].length&&h.sign(...a[T]),h));Dt(k);let w=await this.signAllTransactions(k);if(p){let h=0,T=[],A=async()=>{if(!w[h])return;let x=await this.connection.sendRawTransaction(w[h].serialize(),{skipPreflight:b});T.push({txId:x,status:"sent",signedTx:w[h]}),m==null||m([...T]),h++;let I=!1,R=null,B=null,L=_=>{R!==null&&clearInterval(R),B!==null&&this.connection.removeSignatureListener(B);let O=T.findIndex(z=>z.txId===x);if(O>-1){if(T[O].status==="error"||T[O].status==="success")return;T[O].status=_.err?"error":"success"}m==null||m([...T]),_.err||A()};this.loopMultiTxStatus&&(R=setInterval(async()=>{var _;if(I){clearInterval(R);return}try{let O=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});O&&(I=!0,clearInterval(R),L({err:((_=O.meta)==null?void 0:_.err)||null}),console.log("tx status from getTransaction:",x))}catch(O){I=!0,clearInterval(R),console.error("getTransaction timeout:",O,x)}},Qn)),B=this.connection.onSignature(x,_=>{if(I){this.connection.removeSignatureListener(B);return}I=!0,L(_)},"confirmed"),this.connection.getSignatureStatus(x)};return await A(),{txIds:T.map(x=>x.txId),signedTxs:w}}else{let h=[];for(let T=0;T<w.length;T+=1){let A=await this.connection.sendRawTransaction(w[T].serialize(),{skipPreflight:b});h.push(A)}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 b;let f=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:r}=f,s=Ct(f,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=G(G({},this.cluster==="devnet"?await $i(this.connection):await Ji(this.connection)),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let y of c)a[y]===void 0&&u.push(new rn(y));let l=await ji({connection:this.connection,address:u});for(let[y,g]of Object.entries(l))a[y]=g;let p=i?rn.default.toBase58():r!=null?r:await $t(this.connection,this.blockhashCommitment),m=new Pn({payerKey:this.feePayer,recentBlockhash:p,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((b=this.owner)==null?void 0:b.signer)&&!this.signers.some(y=>y.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let d=new An(m);return d.sign(this.signers),{builder:this,transaction:d,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async y=>{var h;let{skipPreflight:g=!0,sendAndConfirm:k,notSendToRpc:w}=y||{};if(Dt([d]),(h=this.owner)!=null&&h.isKeyPair){let T=await this.connection.sendTransaction(d,{skipPreflight:g});return k&&await Yn(this.connection,T),{txId:T,signedTx:d}}if(this.signAllTransactions){let T=await this.signAllTransactions([d]);if(this.signers.length)for(let A of T)try{A.sign(this.signers)}catch{}return{txId:w?"":await this.connection.sendTransaction(T[0],{skipPreflight:g}),signedTx:T[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:i}=await this.buildV0(n),r=t.filter(l=>l.builder.instructions.length>0),s=[i,...r.map(l=>l.transaction)],a=[this.signers,...r.map(l=>l.signers)],c=[...this.instructionTypes,...r.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 b;let{sequentially:p,onTxUpdate:m,recentBlockHash:d,skipPreflight:f=!0}=l||{};if(d&&s.forEach(y=>y.message.recentBlockhash=d),Dt(s),(b=this.owner)!=null&&b.isKeyPair){if(p){let y=[];for(let g of s){let k=await this.connection.sendTransaction(g,{skipPreflight:f});await Yn(this.connection,k),y.push(k)}return{txIds:y,signedTxs:s}}return{txIds:await Promise.all(s.map(async y=>await this.connection.sendTransaction(y,{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(p){let g=0,k=[],w=async()=>{if(!y[g])return;let h=await this.connection.sendTransaction(y[g],{skipPreflight:f});k.push({txId:h,status:"sent",signedTx:y[g]}),m==null||m([...k]),g++;let T=!1,A=null,x=null,I=R=>{A!==null&&clearInterval(A),x!==null&&this.connection.removeSignatureListener(x);let B=k.findIndex(L=>L.txId===h);if(B>-1){if(k[B].status==="error"||k[B].status==="success")return;k[B].status=R.err?"error":"success"}m==null||m([...k]),R.err||w()};this.loopMultiTxStatus&&(A=setInterval(async()=>{var R;if(T){clearInterval(A);return}try{let B=await this.connection.getTransaction(h,{commitment:"confirmed",maxSupportedTransactionVersion:0});B&&(T=!0,clearInterval(A),I({err:((R=B.meta)==null?void 0:R.err)||null}),console.log("tx status from getTransaction:",h))}catch(B){T=!0,clearInterval(A),console.error("getTransaction timeout:",B,h)}},Qn)),x=this.connection.onSignature(h,R=>{if(T){this.connection.removeSignatureListener(x);return}T=!0,I(R)},"confirmed"),this.connection.getSignatureStatus(h)};return w(),{txIds:[],signedTxs:y}}else{let g=[];for(let k=0;k<y.length;k+=1){let w=await this.connection.sendTransaction(y[k],{skipPreflight:f});g.push(w)}return{txIds:g,signedTxs:y}}}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,i=Ct(p,["splitIns","computeBudgetConfig"]),r=n?zn(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((d,f)=>Q(G({},d),{[f.publicKey.toBase58()]:f}),{}),a=[],c=[],u=[],l=0;if(this.allInstructions.forEach(d=>{let f=[...u,d],b=n?[...r.instructions,...f]:f,g=[...new Set(f.map(k=>k.keys.filter(w=>w.isSigner).map(w=>w.pubkey.toString())).flat()).values()].map(k=>new rn(k));if(d!==t[l]&&u.length<12&&(bn({instructions:b,payer:this.feePayer,signers:g})||bn({instructions:f,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,bn({instructions:n?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:g})?a.push(new gn().add(...r.instructions,...u)):a.push(new gn().add(...u)),c.push(Array.from(new Set(u.map(k=>k.keys.filter(w=>w.isSigner).map(w=>w.pubkey.toString())).flat())).map(k=>s[k]).filter(k=>k!==void 0)),u=[d]}}),u.length>0){let f=[...new Set(u.map(b=>b.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(b=>s[b]).filter(b=>b!==void 0);bn({instructions:n?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:f.map(b=>b.publicKey)})?a.push(new gn().add(...r.instructions,...u)):a.push(new gn().add(...u)),c.push(f)}return a.forEach(d=>d.feePayer=this.feePayer),(m=this.owner)!=null&&m.signer&&c.forEach(d=>{d.some(f=>f.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:f,onTxUpdate:b,skipTxCount:y=0,recentBlockHash:g,skipPreflight:k=!0}=d||{},w=g!=null?g:await $t(this.connection,this.blockhashCommitment);if(a.forEach(async(T,A)=>{T.recentBlockhash=w,c[A].length&&T.sign(...c[A])}),Dt(a),(h=this.owner)!=null&&h.isKeyPair){if(f){let T=0,A=[];for(let x of a){if(++T,T<=y){A.push("tx skipped");continue}let I=await eo(this.connection,x,this.signers.find(R=>R.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:k});A.push(I)}return{txIds:A,signedTxs:a}}return{txIds:await Promise.all(a.map(async T=>await this.connection.sendRawTransaction(T.serialize(),{skipPreflight:k}))),signedTxs:a}}if(this.signAllTransactions){let T=await this.signAllTransactions(a.slice(y,a.length)),A=[...a.slice(0,y),...T];if(f){let x=0,I=[],R=async()=>{if(!A[x])return;x<y&&(I.push({txId:"",status:"success",signedTx:A[x]}),b==null||b([...I]),x++,R());let B=await this.connection.sendRawTransaction(A[x].serialize(),{skipPreflight:k});I.push({txId:B,status:"sent",signedTx:A[x]}),b==null||b([...I]),x++;let L=!1,_=null,O=null,z=D=>{_!==null&&clearInterval(_),O!==null&&this.connection.removeSignatureListener(O);let E=I.findIndex(he=>he.txId===B);if(E>-1){if(I[E].status==="error"||I[E].status==="success")return;I[E].status=D.err?"error":"success"}b==null||b([...I]),D.err||R()};this.loopMultiTxStatus&&(_=setInterval(async()=>{var D;if(L){clearInterval(_);return}try{let E=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});E&&(L=!0,clearInterval(_),z({err:((D=E.meta)==null?void 0:D.err)||null}),console.log("tx status from getTransaction:",B))}catch(E){L=!0,clearInterval(_),console.error("getTransaction timeout:",E,B)}},Qn)),O=this.connection.onSignature(B,D=>{if(L){this.connection.removeSignatureListener(O);return}L=!0,z(D)},"confirmed"),this.connection.getSignatureStatus(B)};return await R(),{txIds:I.map(B=>B.txId),signedTxs:A}}else{let x=[];for(let I=0;I<A.length;I+=1){let R=await this.connection.sendRawTransaction(A[I].serialize(),{skipPreflight:k});x.push(R)}return{txIds:x,signedTxs:A}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var w;let k=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:r=[]}=k,s=Ct(k,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress"]),a=G(G({},this.cluster==="devnet"?await $i(this.connection):await Ji(this.connection)),i),c=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let h of c)a[h]===void 0&&u.push(new rn(h));let l=await ji({connection:this.connection,address:u});for(let[h,T]of Object.entries(l))a[h]=T;let p=t?zn(t):{instructions:[],instructionTypes:[]},m=await $t(this.connection,this.blockhashCommitment),d=this.signers.reduce((h,T)=>Q(G({},h),{[T.publicKey.toBase58()]:T}),{}),f=[],b=[],y=[],g=0;if(this.allInstructions.forEach(h=>{let T=[...y,h],A=t?[...p.instructions,...T]:T;if(h!==n[g]&&y.length<12&&(yn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:a})||yn({instructions:T,payer:this.feePayer,lookupTableAddressAccount:a})))y.push(h);else{if(y.length===0)throw Error("item ins too big");g+=h===n[g]?1:0;let x={};for(let I of[...new Set(c)])a[I]!==void 0&&(x[I]=a[I]);if(t&&yn({instructions:[...p.instructions,...y],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:m})){let I=new Pn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...p.instructions,...y]}).compileToV0Message(Object.values(a));f.push(new An(I))}else{let I=new Pn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...y]}).compileToV0Message(Object.values(a));f.push(new An(I))}b.push(Array.from(new Set(y.map(I=>I.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat())).map(I=>d[I]).filter(I=>I!==void 0)),y=[h]}}),y.length>0){let T=[...new Set(y.map(A=>A.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat()).values()].map(A=>d[A]).filter(A=>A!==void 0);if(t&&yn({instructions:[...p.instructions,...y],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:m})){let A=new Pn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...p.instructions,...y]}).compileToV0Message(Object.values(a));f.push(new An(A))}else{let A=new Pn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...y]}).compileToV0Message(Object.values(a));f.push(new An(A))}b.push(T)}return(w=this.owner)!=null&&w.signer&&b.forEach(h=>{h.some(T=>T.publicKey.equals(this.owner.publicKey))||h.push(this.owner.signer)}),f.forEach((h,T)=>{h.sign(b[T])}),{builder:this,transactions:f,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async h=>{var B;let{sequentially:T,onTxUpdate:A,skipTxCount:x=0,recentBlockHash:I,skipPreflight:R=!0}=h||{};if(f.map(async(L,_)=>{b[_].length&&L.sign(b[_]),I&&(L.message.recentBlockhash=I)}),Dt(f),(B=this.owner)!=null&&B.isKeyPair){if(T){let L=0,_=[];for(let O of f){if(++L,L<=x){console.log("skip tx: ",L),_.push("tx skipped");continue}let z=await this.connection.sendTransaction(O,{skipPreflight:R});await Yn(this.connection,z),_.push(z)}return{txIds:_,signedTxs:f}}return{txIds:await Promise.all(f.map(async L=>await this.connection.sendTransaction(L,{skipPreflight:R}))),signedTxs:f}}if(this.signAllTransactions){let L=await this.signAllTransactions(f.slice(x,f.length)),_=[...f.slice(0,x),...L];if(T){let O=0,z=[],D=async()=>{if(!_[O])return;if(O<x){z.push({txId:"",status:"success",signedTx:_[O]}),A==null||A([...z]),O++,D();return}let E=await this.connection.sendTransaction(_[O],{skipPreflight:R});z.push({txId:E,status:"sent",signedTx:_[O]}),A==null||A([...z]),O++;let he=!1,Te=null,ve=null,Ge=Ke=>{Te!==null&&clearInterval(Te),ve!==null&&this.connection.removeSignatureListener(ve);let Ie=z.findIndex(Xe=>Xe.txId===E);if(Ie>-1){if(z[Ie].status==="error"||z[Ie].status==="success")return;z[Ie].status=Ke.err?"error":"success"}A==null||A([...z]),Ke.err||D()};this.loopMultiTxStatus&&(Te=setInterval(async()=>{var Ke;if(he){clearInterval(Te);return}try{let Ie=await this.connection.getTransaction(E,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ie&&(he=!0,clearInterval(Te),Ge({err:((Ke=Ie.meta)==null?void 0:Ke.err)||null}),console.log("tx status from getTransaction:",E))}catch(Ie){he=!0,clearInterval(Te),console.error("getTransaction timeout:",Ie,E)}},Qn)),ve=this.connection.onSignature(E,Ke=>{if(he){this.connection.removeSignatureListener(ve);return}he=!0,Ge(Ke)},"confirmed"),this.connection.getSignatureStatus(E)};return D(),{txIds:[],signedTxs:_}}else{let O=[];for(let z=0;z<_.length;z+=1){let D=await this.connection.sendTransaction(_[z],{skipPreflight:R});O.push(D)}return{txIds:O,signedTxs:_}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};import{PublicKey as Za}from"@solana/web3.js";import ja from"bn.js";function Ja(o){return typeof o=="object"&&o!==null&&![je,be,Za,re,ja,He,Tt].some(e=>typeof e=="object"&&o instanceof e)}function Gt(o){return typeof o=="string"?Vi(o):Array.isArray(o)?o.map(e=>Gt(e)):Ja(o)?Object.fromEntries(Object.entries(o).map(([e,t])=>[e,Gt(t)])):o}import $a from"bn.js";var Ft=new $a(1e6);import{PublicKey as lu}from"@solana/web3.js";import Pr,{isBN as Ar}from"bn.js";import{bits as Zp,BitStructure as jp,blob as eu,Blob as Jp,cstr as $p,f32 as ed,f32be as td,f64 as nd,f64be as id,greedy as od,Layout as tu,ns64 as rd,ns64be as sd,nu64 as ad,nu64be as ud,offset as nu,s16 as cd,s16be as ld,s24 as md,s24be as pd,s32 as iu,s32be as dd,s40 as fd,s40be as bd,s48 as yd,s48be as gd,s8 as Pd,seq as ou,struct as Ad,Structure as ru,u16 as su,u16be as kd,u24 as wd,u24be as hd,u32 as au,u32be as Td,u40 as Bd,u40be as Id,u48 as xd,u48be as Sd,u8 as uu,UInt as cu,union as Kd,Union as Cd,unionLayoutDiscriminator as Nd,utf8 as Ld}from"@solana/buffer-layout";var no=tu,dr=ru;var io=cu;var fr=uu,gt=su;var br=au;var Pe=iu;var yr=ou;var Se=eu;var gr=nu;var sn=class extends no{constructor(t,n,i){super(t,i);this.blob=Se(t),this.signed=n}decode(t,n=0){let i=new Pr(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new Pr(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function V(o){return new io(1,o)}function Je(o){return new io(4,o)}function P(o){return new sn(8,!1,o)}function J(o){return new sn(16,!1,o)}function kr(o){return new sn(8,!0,o)}function wr(o){return new sn(16,!0,o)}var kn=class extends no{constructor(t,n,i,r){super(t.span,r);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function K(o){return new kn(Se(32),e=>new lu(e),e=>e.toBuffer(),o)}function Re(o){return new kn(fr(),mu,pu,o)}function mu(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function pu(o){return o?1:0}function hr(o,e){let t=br("length"),n=W([t,$(o,gr(t,-t.span),"values")]);return new kn(n,({values:i})=>i,i=>({values:i}),e)}var oo=class extends dr{decode(e,t){return super.decode(e,t)}};function W(o,e,t){return new oo(o,e,t)}function $(o,e,t){let n,i=typeof e=="number"?e:Ar(e)?e.toNumber():new Proxy(e,{get(r,s){if(!n){let a=Reflect.get(r,"count");n=Ar(a)?a.toNumber():a,Reflect.set(r,"count",n)}return Reflect.get(r,s)},set(r,s,a){return s==="count"&&(n=a),Reflect.set(r,s,a)}});return yr(o,i,t)}import{PublicKey as Ub}from"@solana/web3.js";import zb from"bn.js";import{AccountLayout as Zb,createAssociatedTokenAccountIdempotentInstruction as jb,TOKEN_2022_PROGRAM_ID as Jb,TOKEN_PROGRAM_ID as $b}from"@solana/spl-token";import{PublicKey as Ud}from"@solana/web3.js";import{MintLayout as zd,TOKEN_PROGRAM_ID as Hd}from"@solana/spl-token";var Tr=o=>new je({mint:o.address,decimals:o.decimals,symbol:o.symbol,name:o.name}),wn=i=>{var r=i,{amount:o,isRaw:e,name:t}=r,n=Ct(r,["amount","isRaw","name"]);return new be(new je({mint:dt(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),o,e,t)};var Ut=i=>{var r=i,{address:o,programId:e,decimals:t}=r,n=Ct(r,["address","programId","decimals"]);return G({chainId:101,address:dt(o).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};var ro=(...o)=>o.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Xt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=me(t)}createTxBuilder(e){return this.scope.checkOwner(),new Zn({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(ro(e))}logInfo(...e){this.logger.info(ro(e))}logAndCreateError(...e){let t=ro(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{Keypair as ii,PublicKey as v,SystemProgram as St,TransactionInstruction as _e}from"@solana/web3.js";import bo from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Kn,TOKEN_2022_PROGRAM_ID as Be,TOKEN_PROGRAM_ID as ae}from"@solana/spl-token";import wu from"bn.js";import ot from"bn.js";var we=new ot(0),$e=new ot(1),Bt=new ot(-1),Oe=new ot(1).shln(64),jn=new ot(1).shln(128),hn=Oe.sub($e),Tn=64,Br=jn.subn(1),qe=-443636,Ue=-qe,et=new ot("4295048016"),tt=new ot("79226673521066979257578248091"),Jn=new ot("4295048017"),$n=new ot("79226673521066979257578248090"),Ir=16,xr="59543866431248",Sr="184467440737095516",Kr="15793534762490258745",ei=new ot(10).pow(new ot(6));var sf=new ot("18446744073700000000");import te from"bn.js";function ti(o){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,o,!1),new Uint8Array(e)}function so(o,e){let t=0;for(let n=o-1;n>=0&&!e.testn(n);n--)t++;return t}function ao(o,e){let t=0;for(let n=0;n<o&&!e.testn(n);n++)t++;return t}function Bn(o,e){for(let t=0;t<o;t++)if(e.testn(t))return!1;return!0}function Cr(o,e){return Bn(o,e)?null:so(o,e)}function Nr(o,e){return Bn(o,e)?null:ao(o,e)}var mf=Buffer.from("amm_config","utf8"),Lr=Buffer.from("pool","utf8"),Rr=Buffer.from("pool_vault","utf8"),fu=Buffer.from("pool_reward_vault","utf8"),Or=Buffer.from("position","utf8"),bu=Buffer.from("tick_array","utf8"),yu=Buffer.from("operation","utf8"),gu=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Pu=Buffer.from("observation","utf8");function Mr(o,e,t,n){return ye([Lr,e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}function uo(o,e,t){return ye([Rr,e.toBuffer(),t.toBuffer()],o)}function Fr(o,e,t){return ye([fu,e.toBuffer(),t.toBuffer()],o)}function se(o,e,t){return ye([bu,e.toBuffer(),ti(t)],o)}function It(o,e,t,n){return ye([Or,e.toBuffer(),ti(t),ti(n)],o)}function Qe(o,e){return ye([Or,e.toBuffer()],o)}function zt(o){return ye([Buffer.from("metadata","utf8"),ht.toBuffer(),o.toBuffer()],ht)}function ni(o){return ye([yu],o)}function Ce(o,e){return ye([gu,e.toBuffer()],o)}function vr(o,e){return ye([Pu,e.toBuffer()],o)}var Er=Buffer.from("locked_position","utf8");function co(o,e){return ye([Er,e.toBuffer()],o)}function lo(o,e){return ye([Er,e.toBuffer()],o)}var pf=Buffer.from("support_mint","utf8");import{PublicKey as nt}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Wr}from"@solana/spl-token";import Ae from"bn.js";import Pt from"bn.js";var In=class{static getfeeGrowthInside(e,t,n){let i=new Pt(0),r=new Pt(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,r=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),r=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Pt(0),a=new Pt(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=ee.wrappingSubU128(ee.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),u=ee.wrappingSubU128(ee.wrappingSubU128(e.feeGrowthGlobalX64B,r),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:r,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=ee.mulDivFloor(ee.wrappingSubU128(r,t.feeGrowthInsideLastX64A),t.liquidity,Oe),c=t.tokenFeesOwedA.add(a),u=ee.mulDivFloor(ee.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Oe),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:r,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=ee.mulDivFloor(ee.wrappingSubU128(r,t.feeGrowthInsideLastX64A),t.liquidity,Oe),c=t.tokenFeesOwedA.add(a),u=ee.mulDivFloor(ee.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Oe),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let r=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=ee.wrappingSubU128(c,u.growthInsideLastX64),p=ee.mulDivFloor(l,t.liquidity,Oe),m=u.rewardAmountOwed.add(p);r.push(m)}return r}static GetPositionRewards(e,t,n,i){let r=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=ee.wrappingSubU128(c,u.growthInsideLastX64),p=ee.mulDivFloor(l,t.liquidity,Oe),m=u.rewardAmountOwed.add(p);r.push(m)}return r}static getRewardGrowthInside(e,t,n,i){let r=[];for(let s=0;s<i.length;s++){let a=new Pt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let c=new Pt(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),r.push(ee.wrappingSubU128(ee.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return r}static getRewardGrowthInsideV2(e,t,n,i){let r=[];for(let s=0;s<i.length;s++){let a=new Pt(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let c=new Pt(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),r.push(ee.wrappingSubU128(ee.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return r}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:r,epochInfo:s}){var y,g,k,w;let a=Z.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),c=Z.getSqrtPriceX64FromTick(t.tickLower),u=Z.getSqrtPriceX64FromTick(t.tickUpper),l=r?1+i:1-i,p=oe.getAmountsFromLiquidity(a,c,u,n,r),[m,d]=[xe(p.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),xe(p.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[f,b]=[xe(new Pt(new S(p.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),xe(new Pt(new S(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:f,amountSlippageB:b,expirationTime:ct(m.expirationTime,d.expirationTime)}}};var Au=15,ie=class{static async getTickArrays(e,t,n,i,r,s,a){let c=[],u=q.getTickArrayStartIndexByTick(i,r),l=q.getInitializedTickArrayInRange(s,a,r,u,Math.floor(Au/2));for(let d=0;d<l.length;d++){let{publicKey:f}=se(t,n,l[d]);c.push(f)}let p=(await wt(e,c)).map(d=>d!==null?xn.decode(d.data):null),m={};for(let d=0;d<c.length;d++){let f=p[d];f!==null&&(m[f.startTickIndex]=Q(G({},f),{address:c[d]}))}return m}static nextInitializedTick(e,t,n,i,r,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,i,r,s);for(;a==null||a.liquidityGross.lten(0);){if(u=q.getNextTickArrayStartIndex(u,r,s),this.checkIsValidStartIndex(u,r))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,i,r){let s=Math.floor(e/ie.tickCount(t)),a=n?q.searchLowBitFromStart(i,r,s-1,1,t):q.searchHightBitFromStart(i,r,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let r;if(i){let a=Me-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){r=c;break}a=a-1}}else{let a=0;for(;a<Me;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){r=c;break}a=a+1}}let{publicKey:s}=se(e,t,n.startTickIndex);return{nextTick:r,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,r,s){let a=q.getTickArrayStartIndexByTick(i,r),c=Math.floor((i-a)/r),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<Me;){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(q.checkIsOutOfBoundary(e)){if(e>Ue)return!1;let n=q.getTickArrayStartIndexByTick(qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Me*e}};var mo=14,xt=class{static maxTickInTickarrayBitmap(e){return e*Me*Yt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let r=n*i;return e<0?{minValue:-r,maxValue:-r+n}:{minValue:r,maxValue:r+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!ie.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let r=this.maxTickInTickarrayBitmap(n),s=i?t-ie.tickCount(n):t+ie.tickCount(n);if(s<-r||s>=r)return{isInit:!1,tickIndex:t};let a=n*Me,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(i){let l=e.shln(1024-u-1),p=Cr(1024,l);if(p!==null){let m=(u-p-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:-r}}else{let l=e.shrn(u),p=Nr(1024,l);if(p!==null){let m=(u+p-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:r-ie.tickCount(n)}}}},Sn=class{static getBitmapOffset(e,t){if(!ie.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=xt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=xt.maxTickInTickarrayBitmap(e),n=-t;if(Ue<=t)throw Error(`extensionTickBoundary check error: ${Ue}, ${t}`);if(n<=qe)throw Error(`extensionTickBoundary check error: ${n}, ${qe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),r=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:q.mergeTickArrayBitmap(i).testn(r),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let r=ie.tickCount(t),s=n?e-r:e+r,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:r,maxValue:s}=xt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let c=q.mergeTickArrayBitmap(e).shln(Yt-1-a),u=Bn(512,c)?null:so(512,c);if(u!==null){let l=t-u*ie.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:r}}else{let c=q.mergeTickArrayBitmap(e).shrn(a),u=Bn(512,c)?null:ao(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)%xt.maxTickInTickarrayBitmap(t),i=Math.floor(n/ie.tickCount(t));return e<0&&n!=0&&(i=Yt-i),i}};var de=class{static getOutputAmountAndRemainAccounts(e,t,n,i,r,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:f,sqrtPriceX64:b,feeAmount:y}=Ht.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,l,r,s);return c.push(...f),{allTrade:m,expectedAmountOut:d.mul(Bt),remainingAccounts:c,executionPrice:b,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,r){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 b=this.preInitializedTickArrayStartIndex(e,s);if(b.isExist){let{publicKey:y}=se(e.programId,e.id,b.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:p,accounts:m,sqrtPriceX64:d,feeAmount:f}=Ht.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Bt),u,r);return a.push(...m),{expectedAmountIn:p,remainingAccounts:a,executionPrice:d,feeAmount:f}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=de.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Sn.checkTickArrayIsInit(ie.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):q.checkTickArrayIsInitialized(q.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=se(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:r,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,ie.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(r){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)),i=t?q.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):q.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=ie.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:r}=xt.nextInitializedTickArrayStartIndex(q.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:r};t=r;let{isInit:s,tickIndex:a}=Sn.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<qe||t>Ue)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:r}){var a,c,u;let s=[];for(let l=0;l<r.length;l++){let p=r[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=Q(G({},p),{perSecond:ee.x64ToDecimal(p.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new nt(m)});if(d.tokenMint.equals(nt.default))continue;if(n<=d.openTime.toNumber()||i.eq(we)){s.push(d);continue}let f=new Ae(Math.min(d.endTime.toNumber(),n)),b=f.sub(d.lastUpdateTime),y=ee.mulDivFloor(b,d.emissionsPerSecondX64,i),g=d.rewardGrowthGlobalX64.add(y),k=ee.mulDivFloor(b,d.emissionsPerSecondX64,Oe),w=d.rewardTotalEmissioned.add(k);s.push(Q(G({},d),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:w,lastUpdateTime:f}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let r of t){let s=q.getTickArrayStartIndexByTick(r,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=xt.maxTickInTickarrayBitmap(e),n=-t;return t>Ue&&(t=ie.getArrayStartIndex(Ue,e)+ie.tickCount(e)),n<qe&&(n=ie.getArrayStartIndex(qe,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)*Yt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Mt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),r={};for(let s of i)s.accountInfo!==null&&(r[s.pubkey.toString()]=Vr.decode(s.accountInfo.data));return r}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},r=[];for(let c of t){let u=q.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=q.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let p of l){let{publicKey:m}=se(c.programId,c.id,p);r.push({pubkey:m}),i[m.toString()]=c.id}}let s=await Mt(e,r,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=i[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=xn.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=Q(G({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:r=!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(Qe(d,m).publicKey);let l=await wt(t,u,{batchRequest:i}),p={};for(let m of l){if(m===null)continue;let d=po.decode(m.data),f=d.poolId.toString(),b=e.find(I=>I.state.id.toBase58()===f);if(b===void 0)continue;let y=b.state,g=q._getTickPriceLegacy({poolInfo:y,tick:d.tickLower,baseIn:!0}),k=q._getTickPriceLegacy({poolInfo:y,tick:d.tickUpper,baseIn:!0}),{amountA:w,amountB:h}=oe.getAmountsFromLiquidity(y.sqrtPriceX64,g.tickSqrtPriceX64,k.tickSqrtPriceX64,d.liquidity,!1),T=1/(1-Math.sqrt(Math.sqrt(g.price.div(k.price).toNumber())));b.positionAccount=[...(a=b.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:g.price,priceUpper:k.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(I=>Q(G({},I),{pendingReward:new Ae(0)})),leverage:T,tokenFeeAmountA:new Ae(0),tokenFeeAmountB:new Ae(0)}];let A=await q.getTickArrayAddressByTick(b.state.programId,d.poolId,d.tickLower,b.state.tickSpacing),x=await q.getTickArrayAddressByTick(b.state.programId,d.poolId,d.tickUpper,b.state.tickSpacing);p[`${b.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=A,p[`${b.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=x}if(r){let m=Object.values(p),d=await wt(t,m,{batchRequest:i}),f={};for(let b=0;b<m.length;b++){let y=d[b];if(y===null)continue;let g=m[b].toString();f[g]=xn.decode(y.data)}for(let{state:b,positionAccount:y}of e)if(!!y)for(let g of y){let k=`${b.programId.toString()}-${b.id.toString()}-${g.tickLower}`,w=`${b.programId.toString()}-${b.id.toString()}-${g.tickUpper}`,h=f[p[k].toString()],T=f[p[w].toString()],A=h.ticks[q.getTickOffsetInArray(g.tickLower,b.tickSpacing)],x=T.ticks[q.getTickOffsetInArray(g.tickUpper,b.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:R}=await In.GetPositionFees(b,g,A,x),B=await In.GetPositionRewards(b,g,A,x);g.tokenFeeAmountA=I.gte(new Ae(0))?I:new Ae(0),g.tokenFeeAmountB=R.gte(new Ae(0))?R:new Ae(0);for(let L=0;L<B.length;L++)g.rewardInfos[L].pendingReward=B[L].gte(new Ae(0))?B[L]:new Ae(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:r,slippage:s,priceLimit:a=new S(0),catchLiquidityInsufficient:c=!1}){var _;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 S(0))?u=l?et.add(new Ae(1)):tt.sub(new Ae(1)):u=Z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=xe(r,p,i,!1),{allTrade:f,expectedAmountOut:b,remainingAccounts:y,executionPrice:g,feeAmount:k}=de.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((_=d.fee)!=null?_:we),u,c),w=xe(b,m,i,!1),h=Z.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),T=l?h:new S(1).div(h),A=b.mul(new Ae(Math.floor((1-s)*1e10))).div(new Ae(1e10)),x=xe(A,m,i,!1),I=l?e.currentPrice:new S(1).div(e.currentPrice),R=new S(T).sub(I).abs(),B=I,L=new Tt(new S(R).mul(10**15).toFixed(0),new S(B).mul(10**15).toFixed(0));return{allTrade:f,realAmountIn:d,amountOut:w,minAmountOut:x,expirationTime:ct(d.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:T,priceImpact:L,fee:k,remainingAccounts:y,executionPriceX64:g}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:r,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=i.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[p,m]=[new je(Q(G({},u),{mint:u.address,isToken2022:u.programId===Wr.toBase58()})),new je(Q(G({},l),{mint:l.address,isToken2022:l.programId===Wr.toBase58()}))],{allTrade:d,realAmountIn:f,amountOut:b,minAmountOut:y,expirationTime:g,currentPrice:k,executionPrice:w,priceImpact:h,fee:T,remainingAccounts:A,executionPriceX64:x}=de.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new nt(u.address),amountIn:n,slippage:r,epochInfo:s,catchLiquidityInsufficient:a}),I=Q(G({},f),{amount:new be(p,f.amount),fee:f.fee===void 0?void 0:new be(p,f.fee)}),R=Q(G({},b),{amount:new be(m,b.amount),fee:b.fee===void 0?void 0:new be(m,b.fee)}),B=Q(G({},y),{amount:new be(m,y.amount),fee:y.fee===void 0?void 0:new be(m,y.fee)}),L=new He({baseToken:p,denominator:new Ae(10).pow(new Ae(20+p.decimals)),quoteToken:m,numerator:k.mul(new S(10**(20+m.decimals))).toFixed(0)}),_=new He({baseToken:p,denominator:new Ae(10).pow(new Ae(20+p.decimals)),quoteToken:m,numerator:w.mul(new S(10**(20+m.decimals))).toFixed(0)}),O=new be(p,T);return{allTrade:d,realAmountIn:I,amountOut:R,minAmountOut:B,expirationTime:g,currentPrice:L,executionPrice:_,priceImpact:h,fee:O,remainingAccounts:A,executionPriceX64:x}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountOut:r,slippage:s,priceLimit:a=new S(0)}){var B;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 S(0))?l=c?tt.sub(new Ae(1)):et.add(new Ae(1)):l=Z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=xe(r,u[n.toString()],i,!0),{expectedAmountIn:m,remainingAccounts:d,executionPrice:f,feeAmount:b}=de.getInputAmountAndRemainAccounts(e,t,n,p.amount.sub((B=p.fee)!=null?B:we),l),y=c?e.mintB.address:e.mintA.address,g=xe(m,u[y],i,!1),k=Z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),w=c?k:new S(1).div(k),h=m.mul(new Ae(Math.floor((1+s)*1e10))).div(new Ae(1e10)),T=xe(h,u[y],i,!0),A=c?e.currentPrice:new S(1).div(e.currentPrice),x=new S(w).sub(A).abs(),I=A,R=new Tt(new S(x).mul(10**15).toFixed(0),new S(I).mul(10**15).toFixed(0));return{amountIn:g,maxAmountIn:T,realAmountOut:p,expirationTime:ct(g.expirationTime,p.expirationTime),currentPrice:e.currentPrice,executionPrice:w,priceImpact:R,fee:b,remainingAccounts:d}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var f,b,y;let r=e[t],s=q.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=q.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),c=Math.max(s,r.priceMin),l=Math.min(a,r.priceMax)-c,p=a-s,m=r.priceMax-r.priceMin,d;return l<=0?d=0:p===l?d=m/l:m===l?d=l/p:d=l/m*(l/p),{feeApr:r.feeApr*d,rewardsApr:[((f=r.rewardApr[0])!=null?f:0)*d,((b=r.rewardApr[1])!=null?b:0)*d,((y=r.rewardApr[2])!=null?y:0)*d],apr:r.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:r,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],p=i[dt(e.mintA.address).toString()],m=i[dt(e.mintB.address).toString()],d=e.mintA.decimals,f=e.mintB.decimals;if(!l||!p||!m)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let b=Z.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),y=Z.getSqrtPriceX64FromTick(s),g=Z.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:w}=oe.getAmountsFromLiquidityWithSlippage(b,y,g,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:T}=oe.getAmountsFromLiquidityWithSlippage(b,y,g,r,!1,!1,0),A=new S(k.toString()).div(new S(10).pow(d)).mul(p.value).add(new S(w.toString()).div(new S(10).pow(f)).mul(m.value)),x=new S(h.toString()).div(new S(10).pow(d)).mul(p.value).add(new S(T.toString()).div(new S(10).pow(f)).mul(m.value)),I=new S(1).div(A.add(x)),B=new S(l.volumeFee).mul(365).div(u).mul(I).mul(100).toNumber(),L=3600*24*365,_=e.rewardDefaultInfos.map(O=>{var E,he;let z=O.mint.decimals,D=i[O.mint.address];return c<((E=O.startTime)!=null?E:0)||c>((he=O.endTime)!=null?he:0)||!O.perSecond||!D||z===void 0?0:new S(D.value).mul(new S(O.perSecond).mul(L)).div(new S(10).pow(z)).mul(I).mul(100).toNumber()});return{feeApr:B,rewardsApr:_,apr:B+_.reduce((O,z)=>O+z,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:r,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var g,k;let l=Z.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),p=Z.getSqrtPriceX64FromTick(n),m=Z.getSqrtPriceX64FromTick(i),d=xe(r,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,c,!u),f=new Ae(new S(d.amount.sub((k=d.fee)!=null?k:we).toString()).toFixed(0)),b;if(l.lte(p))b=t?oe.getLiquidityFromTokenAmountA(p,m,f,!a):new Ae(0);else if(l.lte(m)){let w=oe.getLiquidityFromTokenAmountA(l,m,f,!a),h=oe.getLiquidityFromTokenAmountB(p,l,f);b=t?w:h}else b=t?new Ae(0):oe.getLiquidityFromTokenAmountB(p,m,f);let y=await de.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a});return{liquidity:b,amountA:t?d:y.amountA,amountB:t?y.amountB:d,amountSlippageA:t?d:y.amountSlippageA,amountSlippageB:t?y.amountSlippageB:d,expirationTime:y.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:r,slippage:s,add:a}){var y,g,k,w;let c=Z.getSqrtPriceX64FromTick(n),u=Z.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,p=oe.getAmountsFromLiquidity(Z.priceToSqrtPriceX64(new S(t.price),t.mintA.decimals,t.mintB.decimals),c,u,r,a),[m,d]=[xe(p.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),xe(p.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[f,b]=[xe(p.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),xe(p.amountB.muln(l),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:r,amountA:m,amountB:d,amountSlippageA:f,amountSlippageB:b,expirationTime:ct(m.expirationTime,d.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(c=>!n[c.id]).map(c=>new nt(c.id));(await wt(e,i)).forEach((c,u)=>{!c||(n[i[u].toBase58()]=an.decode(c.data))});let s=t.map(c=>Ce(new nt(c.programId),new nt(c.id)).publicKey),a=await de.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>Q(G({},c),{[u.id]:Q(G({},n[u.id]),{id:new nt(u.id),version:6,programId:new nt(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:Q(G({},u.config),{id:new nt(u.config.id),fundOwner:""}),currentPrice:new S(u.price),exBitmapAccount:Ce(new nt(u.programId),new nt(u.id)).publicKey,exBitmapInfo:a[Ce(new nt(u.programId),new nt(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 ee=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),r=i.div(n);return i.mod(n).eq(we)||(r=r.add($e)),r}static mulDivFloor(e,t,n){if(n.eq(we))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(we))throw new Error("division by 0");return e.mul(t).add(n.sub($e)).div(n)}static x64ToDecimal(e,t){return new S(e.toString()).div(S.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new te(e.mul(S.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(jn).sub(t).mod(jn)}};function Ee(o,e){return fo(o.mul(e),64,256)}function ku(o,e,t){let n=o.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function fo(o,e,t){let n=o.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var Z=class{static sqrtPriceX64ToPrice(e,t,n){return ee.x64ToDecimal(e).pow(2).mul(S.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return ee.decimalToX64(e.mul(S.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(we))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(we))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(we))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(we))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(we))return e;let r=t.shln(Tn);if(i){let s=r,a=r.add(n.mul(e));return a.gte(s)?ee.mulDivCeil(s,e,a):ee.mulDivRoundingUp(s,$e,s.div(e).add(n))}else{let s=n.mul(e);if(!r.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=r.sub(s);return ee.mulDivCeil(r,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let r=n.shln(Tn);if(i)return e.add(r.div(t));{let s=ee.mulDivRoundingUp(r,$e,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<qe||e>Ue)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new te("18445821805675395072"):new te("18446744073709551616");return(t&2)!=0&&(n=Ee(n,new te("18444899583751176192"))),(t&4)!=0&&(n=Ee(n,new te("18443055278223355904"))),(t&8)!=0&&(n=Ee(n,new te("18439367220385607680"))),(t&16)!=0&&(n=Ee(n,new te("18431993317065453568"))),(t&32)!=0&&(n=Ee(n,new te("18417254355718170624"))),(t&64)!=0&&(n=Ee(n,new te("18387811781193609216"))),(t&128)!=0&&(n=Ee(n,new te("18329067761203558400"))),(t&256)!=0&&(n=Ee(n,new te("18212142134806163456"))),(t&512)!=0&&(n=Ee(n,new te("17980523815641700352"))),(t&1024)!=0&&(n=Ee(n,new te("17526086738831433728"))),(t&2048)!=0&&(n=Ee(n,new te("16651378430235570176"))),(t&4096)!=0&&(n=Ee(n,new te("15030750278694412288"))),(t&8192)!=0&&(n=Ee(n,new te("12247334978884435968"))),(t&16384)!=0&&(n=Ee(n,new te("8131365268886854656"))),(t&32768)!=0&&(n=Ee(n,new te("3584323654725218816"))),(t&65536)!=0&&(n=Ee(n,new te("696457651848324352"))),(t&131072)!=0&&(n=Ee(n,new te("26294789957507116"))),(t&262144)!=0&&(n=Ee(n,new te("37481735321082"))),e>0&&(n=Br.div(n)),n}static getTickFromPrice(e,t,n){return Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(tt)||e.lt(et))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new te(t-64),i=ku(n,32,128),r=new te("8000000000000000","hex"),s=0,a=new te(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;r.gt(new te(0))&&s<Ir;){c=c.mul(c);let f=c.shrn(127);c=c.shrn(63+f.toNumber()),a=a.add(r.mul(f)),r=r.shrn(1),s+=1}let u=a.shrn(32),p=i.add(u).mul(new te(xr)),m=fo(p.sub(new te(Sr)),64,128).toNumber(),d=fo(p.add(new te(Kr)),64,128).toNumber();return m==d?m:Z.getSqrtPriceX64FromTick(d).lte(e)?d:m}},Qt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let r=Qt.getTickWithPriceAndTickspacing(e,t,n,i),s=Z.getSqrtPriceX64FromTick(r);return Z.sqrtPriceX64ToPrice(s,n,i)}},oe=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(we))throw new Error("sqrtPriceX64A must greater than 0");let r=n.ushln(Tn),s=t.sub(e);return i?ee.mulDivRoundingUp(ee.mulDivCeil(r,s,t),$e,e):ee.mulDivFloor(r,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(we))throw new Error("sqrtPriceX64A must greater than 0");return i?ee.mulDivCeil(n,t.sub(e),Oe):ee.mulDivFloor(n,t.sub(e),Oe)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let r=n.mul(e).mul(t),s=t.sub(e),a=r.div(s);return i?ee.mulDivRoundingUp(a,$e,hn):a.shrn(Tn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),ee.mulDivFloor(n,hn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,r){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return oe.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=oe.getLiquidityFromTokenAmountA(e,n,i,!1),a=oe.getLiquidityFromTokenAmountB(t,e,r);return s.lt(a)?s:a}else return oe.getLiquidityFromTokenAmountB(t,n,r)}static getAmountsFromLiquidity(e,t,n,i,r){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:oe.getTokenAmountAFromLiquidity(t,n,i,r),amountB:new te(0)};if(e.lt(n)){let s=oe.getTokenAmountAFromLiquidity(e,n,i,r),a=oe.getTokenAmountBFromLiquidity(t,e,i,r);return{amountA:s,amountB:a}}else return{amountA:new te(0),amountB:oe.getTokenAmountBFromLiquidity(t,n,i,r)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,r,s,a){let{amountA:c,amountB:u}=oe.getAmountsFromLiquidity(e,t,n,i,s),l=r?1+a:1-a,p=new te(new S(c.toString()).mul(l).toFixed(0)),m=new te(new S(u.toString()).mul(l).toFixed(0));return{amountSlippageA:p,amountSlippageB:m}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:r,add:s,epochInfo:a,amountAddFee:c}){var k,w,h,T;let u=Z.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),l=Z.getSqrtPriceX64FromTick(t),p=Z.getSqrtPriceX64FromTick(n),m=s?1+r:1-r,d=oe.getAmountsFromLiquidity(u,l,p,i,s),[f,b]=[xe(d.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,c),xe(d.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,c)],[y,g]=[xe(new te(new S(d.amountA.toString()).mul(m).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),xe(new te(new S(d.amountB.toString()).mul(m).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,a,c)];return{liquidity:i,amountA:f,amountB:b,amountSlippageA:y,amountSlippageB:g,expirationTime:ct(f.expirationTime,b.expirationTime)}}},Ht=class{static swapCompute(e,t,n,i,r,s,a,c,u,l,p,m,d,f,b=!1){if(m.eq(we))throw new Error("amountSpecified must not be 0");if(f||(f=s?et.add($e):tt.sub($e)),s){if(f.lt(et))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(f.gte(p))throw new Error("sqrtPriceX64 must smaller than current")}else{if(f.gt(tt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(f.lte(p))throw new Error("sqrtPriceX64 must greater than current")}let y=m.gt(we),g={amountSpecifiedRemaining:m,amountCalculated:we,sqrtPriceX64:p,tick:u>d?Math.min(d+ie.tickCount(l)-1,u):d,accounts:[],liquidity:c,feeAmount:new te(0)},k=d,w=n[d],h=0,T=!s&&w.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(we)&&!g.sqrtPriceX64.eq(f);){h>10;let A={};A.sqrtPriceStartX64=g.sqrtPriceX64;let x=q.nextInitTick(w,g.tick,l,s,T),I=x||null,R=null;if(!(I!=null&&I.liquidityGross.gtn(0))){let L=de.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:r},k,s);if(!L.isExist){if(b)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")}k=L.nextStartIndex;let{publicKey:_}=se(e,t,k);R=_,w=n[k];try{I=q.firstInitializedTick(w,s)}catch{throw Error("not found next tick info")}}A.tickNext=I.tick,A.initialized=I.liquidityGross.gtn(0),d!==k&&R&&(g.accounts.push(R),d=k),A.tickNext<qe?A.tickNext=qe:A.tickNext>Ue&&(A.tickNext=Ue),A.sqrtPriceNextX64=Z.getSqrtPriceX64FromTick(A.tickNext);let B;if(s&&A.sqrtPriceNextX64.lt(f)||!s&&A.sqrtPriceNextX64.gt(f)?B=f:B=A.sqrtPriceNextX64,[g.sqrtPriceX64,A.amountIn,A.amountOut,A.feeAmount]=Ht.swapStepCompute(g.sqrtPriceX64,B,g.liquidity,g.amountSpecifiedRemaining,a,s),g.feeAmount=g.feeAmount.add(A.feeAmount),y?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(A.amountIn.add(A.feeAmount)),g.amountCalculated=g.amountCalculated.sub(A.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(A.amountOut),g.amountCalculated=g.amountCalculated.add(A.amountIn.add(A.feeAmount))),g.sqrtPriceX64.eq(A.sqrtPriceNextX64)){if(A.initialized){let L=I.liquidityNet;s&&(L=L.mul(Bt)),g.liquidity=oe.addDelta(g.liquidity,L)}T=A.tickNext!=g.tick&&!s&&w.startTickIndex===A.tickNext,g.tick=s?A.tickNext-1:A.tickNext}else if(g.sqrtPriceX64!=A.sqrtPriceStartX64){let L=Z.getTickFromSqrtPriceX64(g.sqrtPriceX64);T=L!=g.tick&&!s&&w.startTickIndex===L,g.tick=L}++h}try{let{nextStartIndex:A,isExist:x}=ie.nextInitializedTickArray(g.tick,l,s,i,r);x&&d!==A&&(g.accounts.push(se(e,t,A).publicKey),d=A)}catch{}return{allTrade:!0,amountSpecifiedRemaining:we,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,i,r,s){let a={sqrtPriceX64Next:new te(0),amountIn:new te(0),amountOut:new te(0),feeAmount:new te(0)},c=i.gte(we);if(c){let l=ee.mulDivFloor(i,ei.sub(new te(r.toString())),ei);a.amountIn=s?oe.getTokenAmountAFromLiquidity(t,e,n,!0):oe.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(a.amountIn)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromInput(e,n,l,s)}else a.amountOut=s?oe.getTokenAmountBFromLiquidity(t,e,n,!1):oe.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Bt).gte(a.amountOut)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromOutput(e,n,i.mul(Bt),s);let u=t.eq(a.sqrtPriceX64Next);return s?(u&&c||(a.amountIn=oe.getTokenAmountAFromLiquidity(a.sqrtPriceX64Next,e,n,!0)),u&&!c||(a.amountOut=oe.getTokenAmountBFromLiquidity(a.sqrtPriceX64Next,e,n,!1))):(a.amountIn=u&&c?a.amountIn:oe.getTokenAmountBFromLiquidity(e,a.sqrtPriceX64Next,n,!0),a.amountOut=u&&!c?a.amountOut:oe.getTokenAmountAFromLiquidity(e,a.sqrtPriceX64Next,n,!1)),!c&&a.amountOut.gt(i.mul(Bt))&&(a.amountOut=i.mul(Bt)),c&&!a.sqrtPriceX64Next.eq(t)?a.feeAmount=i.sub(a.amountIn):a.feeAmount=ee.mulDivCeil(a.amountIn,new te(r),ei.sub(new te(r))),[a.sqrtPriceX64Next,a.amountIn,a.amountOut,a.feeAmount]}};var Me=60,Yt=512,q=class{static getTickArrayAddressByTick(e,t,n,i){let r=q.getTickArrayStartIndexByTick(n,i),{publicKey:s}=se(e,t,r);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=q.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Me)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=ie.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*ie.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Me,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Me,r=Math.floor(t/i)+512,s=Math.abs(r);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Me:e+t*Me}static mergeTickArrayBitmap(e){let t=new wu(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,r){let s=Math.floor(i/(n*Me));return[...q.searchLowBitFromStart(e,t,s-1,r,n),...q.searchHightBitFromStart(e,t,s,r,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return q.searchHightBitFromStart(e,t,-7680,Yt,n)}static getAllInitializedTickArrayInfo(e,t,n,i,r){let s=[],a=q.getAllInitializedTickArrayStartIndex(n,i,r);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,i,r){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>q.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===i)break}let c=ie.tickCount(r);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,i,r){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>q.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===i)break}let c=ie.tickCount(r);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<qe||e>Ue}static nextInitTick(e,t,n,i,r){if(ie.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(r||(a=a+1);a<Me;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Me-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Me;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),r=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:r,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(r),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),r=Qt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(r),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:r,price:a}:{tick:r,price:new S(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),r=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:r,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(r),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),r=Qt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(r),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:r,price:a}:{tick:r,price:new S(1).div(a)}}};var hu=W([Se(8),V("bump"),gt("index"),K(""),Je("protocolFeeRate"),Je("tradeFeeRate"),gt("tickSpacing"),$(P(),8,"")]),Tu=W([Je("blockTimestamp"),kr("tickCumulative"),$(P(),4)]),_r=W([Se(8),Re("initialized"),P("recentEpoch"),gt("observationIndex"),K("poolId"),$(Tu,100,"observations"),$(P(),4)]),Bu=W([V("rewardState"),P("openTime"),P("endTime"),P("lastUpdateTime"),J("emissionsPerSecondX64"),P("rewardTotalEmissioned"),P("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),J("rewardGrowthGlobalX64")]),an=W([Se(8),V("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),V("mintDecimalsA"),V("mintDecimalsB"),gt("tickSpacing"),J("liquidity"),J("sqrtPriceX64"),Pe("tickCurrent"),Je(),J("feeGrowthGlobalX64A"),J("feeGrowthGlobalX64B"),P("protocolFeesTokenA"),P("protocolFeesTokenB"),J("swapInAmountTokenA"),J("swapOutAmountTokenB"),J("swapInAmountTokenB"),J("swapOutAmountTokenA"),V("status"),$(V(),7,""),$(Bu,3,"rewardInfos"),$(P(),16,"tickArrayBitmap"),P("totalFeesTokenA"),P("totalFeesClaimedTokenA"),P("totalFeesTokenB"),P("totalFeesClaimedTokenB"),P("fundFeesTokenA"),P("fundFeesTokenB"),P("startTime"),$(P(),15*4-3,"padding")]),Iu=W([J("growthInsideLastX64"),P("rewardAmountOwed")]),po=W([Se(8),V("bump"),K("nftMint"),K("poolId"),Pe("tickLower"),Pe("tickUpper"),J("liquidity"),J("feeGrowthInsideLastX64A"),J("feeGrowthInsideLastX64B"),P("tokenFeesOwedA"),P("tokenFeesOwedB"),$(Iu,3,"rewardInfos"),$(P(),8,"")]),wb=W([Se(8),V("bump"),K("poolId"),Pe("tickLowerIndex"),Pe("tickUpperIndex"),J("liquidity"),J("feeGrowthInsideLastX64A"),J("feeGrowthInsideLastX64B"),P("tokenFeesOwedA"),P("tokenFeesOwedB"),$(J(),3,"rewardGrowthInside"),$(P(),8,"")]),xu=W([Pe("tick"),wr("liquidityNet"),J("liquidityGross"),J("feeGrowthOutsideX64A"),J("feeGrowthOutsideX64B"),$(J(),3,"rewardGrowthsOutsideX64"),$(Je(),13,"")]),xn=W([Se(8),K("poolId"),Pe("startTickIndex"),$(xu,Me,"ticks"),V("initializedTickCount"),$(V(),115,"")]),Su=W([Se(329),$(K(),100,"whitelistMints")]),Vr=W([Se(8),K("poolId"),$($(P(),8),mo,"positiveTickArrayBitmap"),$($(P(),8),mo,"negativeTickArrayBitmap")]),hb=W([P(),V("bump"),K("owner"),K("poolId"),K("positionId"),K("nftAccount"),$(P(),8)]),Ku=W([Se(8),V("bump"),K("lockOwner"),K("poolId"),K("positionId"),K("nftAccount"),K("lockNftMint"),P("recentEpoch"),$(P(),8)]);_r.span;var Dr=me("Raydium_Clmm"),it={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]},qr=[188,37,179,131,82,150,84,73],Gr=[16,72,250,198,14,162,212,19],lt=class{static createPoolInstruction(e,t,n,i,r,s,a,c,u,l,p,m,d,f){let b=W([J("sqrtPriceX64"),P("zero")]),y=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:St.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},...(f==null?void 0:f.map(w=>({pubkey:w,isSigner:!1,isWritable:!1})))||[]],g=Buffer.alloc(b.span);b.encode({sqrtPriceX64:d,zero:we},g);let k=Buffer.from([...it.createPool,...g]);return new _e({keys:y,programId:e,data:k})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:r,ammConfigId:s,initialPriceX64:a,extendMintAccount:c}=e,[u,l]=[new v(i.address),new v(r.address)],{publicKey:p}=Mr(t,s,u,l),{publicKey:m}=vr(t,p),{publicKey:d}=uo(t,p,u),{publicKey:f}=uo(t,p,l),b=Ce(t,p).publicKey,y=[this.createPoolInstruction(t,p,n,s,m,u,d,new v(i.programId||ae),l,f,new v(r.programId||ae),b,a,c)];return{signers:[],instructions:y,instructionTypes:[ne.CreateAccount,ne.ClmmCreatePool],address:{poolId:p,observationId:m,exBitmapAccount:b,mintAVault:d,mintBVault:f},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,r,s,a,c,u,l,p,m,d,f,b,y,g,k,w,h,T,A,x,I,R,B){let L=W([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),J("liquidity"),P("amountMaxA"),P("amountMaxB"),Re("withMetadata"),V("optionBaseFlag"),Re("baseFlag")]),_=[...B?[{pubkey:B,isSigner:!1,isWritable:!0}]:[]],O=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:St.programId,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:Kn,isSigner:!1,isWritable:!1},{pubkey:ht,isSigner:!1,isWritable:!1},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},..._],z=Buffer.alloc(L.span);L.encode({tickLowerIndex:k,tickUpperIndex:w,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:A,amountMaxA:x,amountMaxB:I,withMetadata:R==="create",baseFlag:!1,optionBaseFlag:0},z);let D=Buffer.from([...it.openPosition,...z]);return new _e({keys:O,programId:e,data:D})}static openPositionFromLiquidityInstruction22(e,t,n,i,r,s,a,c,u,l,p,m,d,f,b,y,g,k,w,h,T,A,x,I,R){let B=W([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),J("liquidity"),P("amountMaxA"),P("amountMaxB"),Re("withMetadata"),V("optionBaseFlag"),Re("baseFlag")]),L=[...R?[{pubkey:R,isSigner:!1,isWritable:!0}]:[]],_=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:St.programId,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:Kn,isSigner:!1,isWritable:!1},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...L],O=Buffer.alloc(B.span);B.encode({tickLowerIndex:g,tickUpperIndex:k,tickArrayLowerStartIndex:w,tickArrayUpperStartIndex:h,liquidity:T,amountMaxA:A,amountMaxB:x,withMetadata:I==="create",baseFlag:!1,optionBaseFlag:0},O);let z=Buffer.from([...it.openPositionWithTokenEx,...O]);return new _e({keys:_,programId:e,data:z})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:r,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l,nft2022:p}){let m=[],[d,f]=[new v(e.programId),new v(e.id)],b;if(l)b=new v((await l(1))[0]);else{let R=ii.generate();m.push(R),b=R.publicKey}let y=q.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=q.getTickArrayStartIndexByTick(r,e.config.tickSpacing),{publicKey:k}=se(d,f,y),{publicKey:w}=se(d,f,g),{publicKey:h}=p?fe(n.wallet,b,Be):fe(n.wallet,b,ae),{publicKey:T}=zt(b),{publicKey:A}=Qe(d,b),{publicKey:x}=It(d,f,i,r),I=p?this.openPositionFromLiquidityInstruction22(d,n.feePayer,f,n.wallet,b,h,x,k,w,A,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,r,y,g,s,a,c,u,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?Ce(d,f).publicKey:void 0):this.openPositionFromLiquidityInstruction(d,n.feePayer,f,n.wallet,b,h,T,x,k,w,A,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,r,y,g,s,a,c,u,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?Ce(d,f).publicKey:void 0);return{signers:m,instructions:[I],instructionTypes:[ne.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:k,tickArrayUpper:w,positionNftAccount:h,metadataAccount:T,personalPosition:A,protocolPosition:x}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:r,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l,nft2022:p}){let m=[],[d,f]=[new v(e.programId),new v(e.id)],b;if(l)b=new v((await l(1))[0]);else{let R=ii.generate();m.push(R),b=R.publicKey}let y=q.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=q.getTickArrayStartIndexByTick(r,e.config.tickSpacing),{publicKey:k}=se(d,f,y),{publicKey:w}=se(d,f,g),{publicKey:h}=p?fe(n.wallet,b,Be):fe(n.wallet,b,ae),{publicKey:T}=zt(b),{publicKey:A}=Qe(d,b),{publicKey:x}=It(d,f,i,r),I=p?this.openPositionFromBaseInstruction22(d,n.feePayer,f,n.wallet,b,h,x,k,w,A,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,r,y,g,u,s,a,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?Ce(d,f).publicKey:void 0):this.openPositionFromBaseInstruction(d,n.feePayer,f,n.wallet,b,h,T,x,k,w,A,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,r,y,g,u,s,a,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?Ce(d,f).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:k,tickArrayUpper:w,positionNftAccount:h,metadataAccount:T,personalPosition:A,protocolPosition:x},instructions:[I],signers:m,instructionTypes:[ne.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,r,s,a,c,u,l,p,m,d,f,b,y,g,k,w,h,T,A,x,I,R,B){let L=W([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),J("liquidity"),P("amountMaxA"),P("amountMaxB"),Re("withMetadata"),V("optionBaseFlag"),Re("baseFlag")]),_=[...B?[{pubkey:B,isSigner:!1,isWritable:!0}]:[]],O=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:St.programId,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:Kn,isSigner:!1,isWritable:!1},{pubkey:ht,isSigner:!1,isWritable:!1},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},..._],z=Buffer.alloc(L.span);L.encode({tickLowerIndex:k,tickUpperIndex:w,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:new bo(0),amountMaxA:x==="MintA"?I:R,amountMaxB:x==="MintA"?R:I,withMetadata:A==="create",baseFlag:x==="MintA",optionBaseFlag:1},z);let D=Buffer.from([...it.openPosition,...z]);return new _e({keys:O,programId:e,data:D})}static openPositionFromBaseInstruction22(e,t,n,i,r,s,a,c,u,l,p,m,d,f,b,y,g,k,w,h,T,A,x,I,R){let B=W([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),J("liquidity"),P("amountMaxA"),P("amountMaxB"),Re("withMetadata"),V("optionBaseFlag"),Re("baseFlag")]),L=[...R?[{pubkey:R,isSigner:!1,isWritable:!0}]:[]],_=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:St.programId,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:Kn,isSigner:!1,isWritable:!1},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...L],O=Buffer.alloc(B.span);B.encode({tickLowerIndex:g,tickUpperIndex:k,tickArrayLowerStartIndex:w,tickArrayUpperStartIndex:h,liquidity:new bo(0),amountMaxA:A==="MintA"?x:I,amountMaxB:A==="MintA"?I:x,withMetadata:T==="create",baseFlag:A==="MintA",optionBaseFlag:1},O);let z=Buffer.from([...it.openPositionWithTokenEx,...O]);return new _e({keys:_,programId:e,data:z})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:r,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l,nft2022:p}){let m,d=[];if(l)m=new v((await l(1))[0]);else{let R=ii.generate();d.push(R),m=R.publicKey}let[f,b]=[new v(e.programId),new v(e.id)],y=q.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=q.getTickArrayStartIndexByTick(r,e.config.tickSpacing),{publicKey:k}=se(f,b,y),{publicKey:w}=se(f,b,g),{publicKey:h}=p?fe(n.wallet,m,Be):fe(n.wallet,m,ae),{publicKey:T}=zt(m),{publicKey:A}=Qe(f,m),{publicKey:x}=It(f,b,i,r),I=p?this.openPositionFromLiquidityInstruction22(f,n.wallet,b,n.wallet,m,h,x,k,w,A,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(t.mintA.address),new v(t.mintB.address),i,r,y,g,s,a,c,u,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?Ce(f,b).publicKey:void 0):this.openPositionFromLiquidityInstruction(f,n.wallet,b,n.wallet,m,h,T,x,k,w,A,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(t.mintA.address),new v(t.mintB.address),i,r,y,g,s,a,c,u,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?Ce(f,b).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:k,tickArrayUpper:w,positionNftAccount:h,metadataAccount:T,personalPosition:A,protocolPosition:x},instructions:[I],signers:d,instructionTypes:[ne.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,r,s){let a=W([]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:St.programId,isSigner:!1,isWritable:!1},{pubkey:s?Be:ae,isSigner:!1,isWritable:!1}],u=Buffer.alloc(a.span);a.encode({},u);let l=Buffer.from([...it.closePosition,...u]);return new _e({keys:c,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i,nft2022:r}){let s=new v(e.programId),a=r?fe(n.wallet,i.nftMint,Be).publicKey:fe(n.wallet,i.nftMint,ae).publicKey,{publicKey:c}=Qe(s,i.nftMint),u=[];return u.push(this.closePositionInstruction(s,n.wallet,i.nftMint,a,c,r)),{address:{positionNftAccount:a,personalPosition:c},signers:[],instructions:u,instructionTypes:[ne.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,r,s,a,c,u,l,p,m,d,f,b,y,g,k){let w=W([J("liquidity"),P("amountMaxA"),P("amountMaxB"),V("optionBaseFlag"),Re("baseFlag")]),h=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,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:Be,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...h],A=Buffer.alloc(w.span);w.encode({liquidity:b,amountMaxA:y,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},A);let x=Buffer.from([...it.increaseLiquidity,...A]);return new _e({keys:T,programId:e,data:x})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:r,amountMaxA:s,amountMaxB:a,nft2022:c}){let[u,l]=[new v(e.programId),new v(e.id)],p=q.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=q.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=se(u,l,p),{publicKey:f}=se(u,l,m),{publicKey:b}=c?fe(i.wallet,n.nftMint,Be):fe(i.wallet,n.nftMint,ae),{publicKey:y}=Qe(u,n.nftMint),{publicKey:g}=It(u,l,n.tickLower,n.tickUpper),k=this.increasePositionFromLiquidityInstruction(u,i.wallet,b,y,l,g,d,f,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),r,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[p,m])?Ce(u,l).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:f,positionNftAccount:b,personalPosition:y,protocolPosition:g},signers:[],instructions:[k],instructionTypes:[ne.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:r,baseAmount:s,otherAmountMax:a,nft2022:c}){let[u,l]=[new v(e.programId),new v(e.id)],p=q.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=q.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=se(u,l,p),{publicKey:f}=se(u,l,m),{publicKey:b}=c?fe(i.wallet,n.nftMint,Be):fe(i.wallet,n.nftMint,ae),{publicKey:y}=Qe(u,n.nftMint),{publicKey:g}=It(u,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:f,positionNftAccount:b,personalPosition:y,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,b,y,l,g,d,f,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),r,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[p,m])?Ce(u,l).publicKey:void 0)],signers:[],instructionTypes:[ne.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,r,s,a,c,u,l,p,m,d,f,b,y,g,k){let w=W([J("liquidity"),P("amountMaxA"),P("amountMaxB"),V("optionBaseFlag"),Re("baseFlag")]),h=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,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:Be,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...h],A=Buffer.alloc(w.span);w.encode({liquidity:new bo(0),amountMaxA:b==="MintA"?y:g,amountMaxB:b==="MintA"?g:y,baseFlag:b==="MintA",optionBaseFlag:1},A);let x=Buffer.from([...it.increaseLiquidity,...A]);return new _e({keys:T,programId:e,data:x})}static decreaseLiquidityInstruction(e,t,n,i,r,s,a,c,u,l,p,m,d,f,b,y,g,k,w){let h=W([J("liquidity"),P("amountMinA"),P("amountMinB")]),T=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...b.map(R=>[{pubkey:R.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.rewardMint,isSigner:!1,isWritable:!1}]).flat()],A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,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:Be,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...T],x=Buffer.alloc(h.span);h.encode({liquidity:y,amountMinA:g,amountMinB:k},x);let I=Buffer.from([...it.decreaseLiquidity,...x]);return new _e({keys:A,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:r,amountMinA:s,amountMinB:a,programId:c,nft2022:u}){let[l,p]=[new v(e.programId),new v(e.id)],m=q.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=q.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=se(l,p,m),{publicKey:b}=se(l,p,d),{publicKey:y}=u?fe(i.wallet,n.nftMint,Be):fe(i.wallet,n.nftMint,c),{publicKey:g}=Qe(l,n.nftMint),{publicKey:k}=It(l,p,n.tickLower,n.tickUpper),w=[];for(let A=0;A<e.rewardDefaultInfos.length;A++)w.push({poolRewardVault:new v(t.rewardInfos[A].vault),ownerRewardVault:i.rewardAccounts[A],rewardMint:new v(e.rewardDefaultInfos[A].mint.address)});let h=[],T=this.decreaseLiquidityInstruction(l,i.wallet,y,g,p,k,f,b,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),w,r,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Ce(l,p).publicKey:void 0);return h.push(T),{address:{tickArrayLower:f,tickArrayUpper:b,positionNftAccount:y,personalPosition:g,protocolPosition:k},signers:[],instructions:h,instructionTypes:[ne.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,r,s,a,c,u,l,p,m,d,f,b,y,g){let k=W([P("amount"),P("otherAmountThreshold"),J("sqrtPriceLimitX64"),Re("isBaseInput")]),w=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...p.map(x=>({pubkey:x,isSigner:!1,isWritable:!0}))],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,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:Be,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...w],T=Buffer.alloc(k.span);k.encode({amount:d,otherAmountThreshold:f,sqrtPriceLimitX64:b,isBaseInput:y},T);let A=Buffer.from([...it.swap,...T]);return new _e({keys:h,programId:e,data:A})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:r,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,p]=[new v(e.programId),new v(e.id)],[m,d]=[new v(t.vault.A),new v(t.vault.B)],[f,b]=[new v(e.mintA.address),new v(e.mintB.address)],y=e.mintA.address===r.toString(),g=[this.swapInstruction(l,i.wallet,p,new v(e.config.id),y?i.tokenAccountA:i.tokenAccountB,y?i.tokenAccountB:i.tokenAccountA,y?m:d,y?d:m,y?f:b,y?b:f,u,n,s,a,c,!0,Ce(l,p).publicKey)];return{signers:[],instructions:g,instructionTypes:[ne.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,outputMint:r,amountOut:s,amountInMax:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,p]=[new v(e.programId),new v(e.id)],[m,d]=[new v(t.vault.A),new v(t.vault.B)],[f,b]=[new v(e.mintA.address),new v(e.mintB.address)],y=e.mintA.address===r.toBase58(),g=[this.swapInstruction(l,i.wallet,p,new v(e.config.id),y?i.tokenAccountB:i.tokenAccountA,y?i.tokenAccountA:i.tokenAccountB,y?d:m,y?m:d,y?b:f,y?f:b,u,n,s,a,c,!1,Ce(l,p).publicKey)];return{signers:[],instructions:g,instructionTypes:[ne.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,r,s,a,c,u,l,p,m){let d=W([P("openTime"),P("endTime"),J("emissionsPerSecondX64")]),f=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:St.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],b=Buffer.alloc(d.span);d.encode({openTime:pe(l),endTime:pe(p),emissionsPerSecondX64:m},b);let y=Buffer.from([...it.initReward,...b]);return new _e({keys:f,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[r,s]=[new v(e.programId),new v(e.id)],a=Fr(r,s,i.mint).publicKey,c=ni(r).publicKey,u=[this.initRewardInstruction(r,n.wallet,s,c,new v(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[ne.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,r,s,a,c,u,l,p,m){let d=W([V("rewardIndex"),J("emissionsPerSecondX64"),P("openTime"),P("endTime")]),f=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],b=Buffer.alloc(d.span);d.encode({rewardIndex:u,emissionsPerSecondX64:m,openTime:pe(l),endTime:pe(p)},b);let y=Buffer.from([...it.setRewardEmissions,...b]);return new _e({keys:f,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[r,s]=[new v(e.programId),new v(e.id)],a,c,u;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===i.mint.toString()&&(a=m,c=new v(t.rewardInfos[m].vault),u=new v(t.rewardInfos[m].mint.address));(a===void 0||c===void 0)&&Dr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=ni(r).publicKey,p=[this.setRewardInstruction(r,n.wallet,s,l,new v(e.config.id),n.tokenAccount,c,u,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:p,instructionTypes:[ne.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,r,s,a){let c=W([V("rewardIndex")]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let p=Buffer.from([...it.collectReward,...l]);return new _e({keys:u,programId:e,data:p})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[r,s]=[new v(e.programId),new v(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,c=new v(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&Dr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(r,n.wallet,s,n.tokenAccount,c,i,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[ne.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:i,wallet:r,nftMint:s,nft2022:a,getEphemeralSigners:c}){let u=[],l;if(c)l=new v((await c(1))[0]);else{let g=ii.generate();u.push(g),l=g.publicKey}let p=a?fe(r,s,Be).publicKey:fe(r,s,ae).publicKey,{publicKey:m}=Qe(n,s),d=lo(e,l).publicKey,f=fe(r,l,ae).publicKey,b=zt(l).publicKey,y=lt.lockPositionInstructionV2({programId:e,auth:t,payer:i,positionOwner:r,lockOwner:r,positionNftAccount:p,positionId:m,lockPositionId:d,lockNftMint:l,lockNftAccount:f,metadataAccount:b,withMetadata:!0,nft2022:a,positionNftMint:s,authPositionNftAccount:fe(t,s,a?Be:ae).publicKey,positionNftProgram:a?Be:ae});return{address:{positionId:m,lockPositionId:d,lockNftAccount:f,lockNftMint:l,positionNftAccount:p,metadataAccount:b},instructions:[y],signers:u,instructionTypes:[ne.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:i,lockOwner:r,positionNftAccount:s,positionId:a,positionNftMint:c,authPositionNftAccount:u,positionNftProgram:l,lockPositionId:p,lockNftMint:m,lockNftAccount:d,metadataAccount:f,withMetadata:b}){let y=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:r,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:f,isSigner:!1,isWritable:!0},{pubkey:ht,isSigner:!1,isWritable:!1},{pubkey:Kn,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:St.programId,isSigner:!1,isWritable:!1}],g=W([Re("withMetadata")]),k=Buffer.alloc(g.span);g.encode({withMetadata:b},k);let w=Buffer.from([...qr,...k]);return new _e({keys:y,programId:e,data:w})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:i,positionNft:r}){let{publicKey:s}=fe(i,r,ae),{publicKey:a}=Qe(n,r),c=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:co(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:St.programId,isSigner:!1,isWritable:!1}];return new _e({keys:c,programId:e,data:Buffer.from(qr)})}static harvestLockPositionInstruction(e){let[t,n]=[new v(e.poolKeys.programId),new v(e.poolKeys.id)],i=q.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),r=q.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:s}=se(t,n,i),{publicKey:a}=se(t,n,r),{publicKey:c}=fe(e.owner,e.ownerPosition.nftMint,ae),{publicKey:u}=Qe(t,e.ownerPosition.nftMint),{publicKey:l}=It(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),p=[];for(let f=0;f<e.poolKeys.rewardInfos.length;f++)p.push({poolRewardVault:new v(e.poolKeys.rewardInfos[f].vault),ownerRewardVault:e.ownerRewardAccounts[f],rewardMint:new v(e.poolKeys.rewardInfos[f].mint.address)});let m=[...p.map(f=>[{pubkey:f.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.rewardMint,isSigner:!1,isWritable:!1}]).flat()],d=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:co(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 v(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new v(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:Be,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:new v(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new v(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...m];return new _e({keys:d,programId:e.programId,data:Buffer.from(Gr)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:i,lockOwner:r,lockNftMint:s,lockNftAccount:a,positionNftAccount:c,positionId:u,poolId:l,protocolPosition:p,vaultA:m,vaultB:d,tickArrayLower:f,tickArrayUpper:b,userVaultA:y,userVaultB:g,mintA:k,mintB:w,rewardAccounts:h,exTickArrayBitmap:T}){let A=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[],...h.map(I=>[{pubkey:I.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:I.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:I.rewardMint,isSigner:!1,isWritable:!1}]).flat()],x=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,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:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:Be,isSigner:!1,isWritable:!1},{pubkey:Jt,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...A];return new _e({keys:x,programId:e,data:Buffer.from(Gr)})}};var vy=W([Se(8),V("bump"),Re("disableCreatePool"),gt("index"),P("tradeFeeRate"),P("protocolFeeRate"),P("fundFeeRate"),P("createPoolFee"),K("protocolOwner"),K("fundOwner"),P("creatorFeeRate"),$(P(),15)]),Ur=W([Se(8),K("configId"),K("poolCreator"),K("vaultA"),K("vaultB"),K("mintLp"),K("mintA"),K("mintB"),K("mintProgramA"),K("mintProgramB"),K("observationId"),V("bump"),V("status"),V("lpDecimals"),V("mintDecimalA"),V("mintDecimalB"),P("lpAmount"),P("protocolFeesMintA"),P("protocolFeesMintB"),P("fundFeesMintA"),P("fundFeesMintB"),P("openTime"),P("epoch"),V("feeOn"),Re("enableCreatorFee"),$(V(),6),P("creatorFeesMintA"),P("creatorFeesMintB"),$(P(),28)]),Ey=W([Se(8),K("configId"),$(P(),30)]);import{PublicKey as $y,TransactionInstruction as Nu,Keypair as tg,SystemProgram as ng}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as og,TOKEN_2022_PROGRAM_ID as rg,TOKEN_PROGRAM_ID as sg}from"@solana/spl-token";var Cu=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Dy=Buffer.from("amm_config","utf8"),qy=Buffer.from("pool","utf8"),Gy=Buffer.from("pool_lp_mint","utf8"),Uy=Buffer.from("pool_vault","utf8"),Xy=Buffer.from("observation","utf8"),zy=Buffer.from("permission","utf8");function Xr(o){return ye([Cu],o)}var Yy=Buffer.from("locked_liquidity","utf8");var pg=me("Raydium_cpmm"),Lu={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],createPermissionPda:Buffer.from([135,136,2,216,137,169,181,202]),closePermissionPda:Buffer.from([156,84,32,118,69,135,70,123]),initializeWithPermission:Buffer.from([63,55,254,65,49,178,89,121]),collectCreatorFee:Buffer.from([20,22,86,123,198,28,219,132])};function zr(o,e,t,n,i,r,s,a,c,u,l,p,m,d,f,b){let y=W([P("amountIn"),P("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,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}],k=Buffer.alloc(y.span);return y.encode({amountIn:f,amounOutMin:b},k),new Nu({keys:g,programId:o,data:Buffer.from([...Lu.swapBaseInput,...k])})}import Cg from"bn.js";import Ru from"bn.js";var gg=new Ru(0);import hg from"bn.js";import Yr from"bn.js";var Gg=new Yr(25),Ug=new Yr(1e4);var yo=W([V("instruction"),P("amountIn"),P("minAmountOut")]),go=W([V("instruction"),P("maxAmountIn"),P("amountOut")]),Hg=W([V("instruction"),V("nonce")]),Ou=W([V("instruction"),V("nonce"),P("startTime")]),Po=W([P("status"),P("nonce"),P("maxOrder"),P("depth"),P("baseDecimal"),P("quoteDecimal"),P("state"),P("resetFlag"),P("minSize"),P("volMaxCutRatio"),P("amountWaveRatio"),P("baseLotSize"),P("quoteLotSize"),P("minPriceMultiplier"),P("maxPriceMultiplier"),P("systemDecimalValue"),P("minSeparateNumerator"),P("minSeparateDenominator"),P("tradeFeeNumerator"),P("tradeFeeDenominator"),P("pnlNumerator"),P("pnlDenominator"),P("swapFeeNumerator"),P("swapFeeDenominator"),P("baseNeedTakePnl"),P("quoteNeedTakePnl"),P("quoteTotalPnl"),P("baseTotalPnl"),P("poolOpenTime"),P("punishPcAmount"),P("punishCoinAmount"),P("orderbookToInitTime"),J("swapBaseInAmount"),J("swapQuoteOutAmount"),P("swapBase2QuoteFee"),J("swapQuoteInAmount"),J("swapBaseOutAmount"),P("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),P("lpReserve"),$(P(),3,"padding")]),Qg=W([P("accountType"),P("status"),P("nonce"),P("maxOrder"),P("depth"),P("baseDecimal"),P("quoteDecimal"),P("state"),P("resetFlag"),P("minSize"),P("volMaxCutRatio"),P("amountWaveRatio"),P("baseLotSize"),P("quoteLotSize"),P("minPriceMultiplier"),P("maxPriceMultiplier"),P("systemDecimalsValue"),P("abortTradeFactor"),P("priceTickMultiplier"),P("priceTick"),P("minSeparateNumerator"),P("minSeparateDenominator"),P("tradeFeeNumerator"),P("tradeFeeDenominator"),P("pnlNumerator"),P("pnlDenominator"),P("swapFeeNumerator"),P("swapFeeDenominator"),P("baseNeedTakePnl"),P("quoteNeedTakePnl"),P("quoteTotalPnl"),P("baseTotalPnl"),P("poolOpenTime"),P("punishPcAmount"),P("punishCoinAmount"),P("orderbookToInitTime"),J("swapBaseInAmount"),J("swapQuoteOutAmount"),J("swapQuoteInAmount"),J("swapBaseOutAmount"),P("swapQuote2BaseFee"),P("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),$(P(),64,"padding")]),Mu=W([V("instruction"),P("baseAmountIn"),P("quoteAmountIn"),P("fixedSide"),P("otherAmountMin")]),Fu=W([V("instruction"),P("lpAmount"),P("baseAmountMin"),P("quoteAmountMin")]);var Zg=W([P("fee")]);import{PublicKey as NA}from"@solana/web3.js";import RA from"bn.js";import{TOKEN_PROGRAM_ID as ic}from"@solana/spl-token";import{PublicKey as At,SystemProgram as $g,SYSVAR_RENT_PUBKEY as eP,TransactionInstruction as si}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as nP,TOKEN_PROGRAM_ID as ai}from"@solana/spl-token";import oi from"bn.js";var ri=me("Raydium_liquidity_instruction");function vu({poolKeys:o,userKeys:e,amountIn:t,minAmountOut:n,modelDataPubKey:i=Hn},r){let s=Gt(o),a=Buffer.alloc(yo.span);yo.encode({instruction:9,amountIn:pe(t),minAmountOut:pe(n)},a);let c=[N({pubkey:ai,isWritable:!1}),N({pubkey:s.id}),N({pubkey:s.authority,isWritable:!1}),N({pubkey:s.openOrders})];return r===4&&c.push(N({pubkey:s.targetOrders})),c.push(N({pubkey:s.vault.A}),N({pubkey:s.vault.B})),r===5&&c.push(N({pubkey:i})),c.push(N({pubkey:s.marketProgramId,isWritable:!1}),N({pubkey:s.marketId}),N({pubkey:s.marketBids}),N({pubkey:s.marketAsks}),N({pubkey:s.marketEventQueue}),N({pubkey:s.marketBaseVault}),N({pubkey:s.marketQuoteVault}),N({pubkey:s.marketAuthority,isWritable:!1}),N({pubkey:e.tokenAccountIn}),N({pubkey:e.tokenAccountOut}),N({pubkey:e.owner,isWritable:!1,isSigner:!0})),new si({programId:s.programId,keys:c,data:a})}function Eu({poolKeys:o,userKeys:e,maxAmountIn:t,amountOut:n,modelDataPubKey:i=Hn},r){let s=Gt(o),a=Buffer.alloc(go.span);go.encode({instruction:11,maxAmountIn:pe(t),amountOut:pe(n)},a);let c=[N({pubkey:ai,isWritable:!1}),N({pubkey:s.id}),N({pubkey:s.authority,isWritable:!1}),N({pubkey:s.openOrders}),N({pubkey:s.targetOrders}),N({pubkey:s.vault.A}),N({pubkey:s.vault.B})];return r===5&&c.push(N({pubkey:i})),c.push(N({pubkey:s.marketProgramId,isWritable:!1}),N({pubkey:s.marketId}),N({pubkey:s.marketBids}),N({pubkey:s.marketAsks}),N({pubkey:s.marketEventQueue}),N({pubkey:s.marketBaseVault}),N({pubkey:s.marketQuoteVault}),N({pubkey:s.marketAuthority,isWritable:!1}),N({pubkey:e.tokenAccountIn}),N({pubkey:e.tokenAccountOut}),N({pubkey:e.owner,isWritable:!1,isSigner:!0})),new si({programId:s.programId,keys:c,data:a})}function Wu(o,e,t,n,i,r,s,a,c,u){let l=W([V("instructionId"),P("amountIn"),P("minAmountOut")]),p=Buffer.alloc(l.span);l.encode({instructionId:16,amountIn:c,minAmountOut:u},p);let m=[{pubkey:ai,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:s,isWritable:!0,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!0}];return new si({programId:o,keys:m,data:p})}function Vu(o,e,t,n,i,r,s,a,c,u){let l=W([V("instructionId"),P("maxAmountIn"),P("amountOut")]),p=Buffer.alloc(l.span);l.encode({instructionId:17,maxAmountIn:c,amountOut:u},p);let m=[{pubkey:ai,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:s,isWritable:!0,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!0}];return new si({programId:o,keys:m,data:p})}function Hr(o){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:r,fixedSide:s}=o;if(t===4){if(s==="in")return Wu(new At(e.programId),new At(e.id),new At(e.authority),new At(e.vault.A),new At(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new oi(i.toString()),new oi(r.toString()));if(s==="out")return Vu(new At(e.programId),new At(e.id),new At(e.authority),new At(e.vault.A),new At(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new oi(i.toString()),new oi(r.toString()));ri.logWithError("invalid params","params",o)}throw ri.logWithError("invalid version, only support pool v4","poolKeys.version",t),new Error("invalid version")}function Qr(o){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:r,fixedSide:s}=o;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return vu(Q(G({},a),{amountIn:i,minAmountOut:r}),t);if(s==="out")return Eu(Q(G({},a),{maxAmountIn:i,amountOut:r}),t);ri.logWithError("invalid params","params",o)}throw ri.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{PublicKey as bP}from"@solana/web3.js";var PP=me("Raydium_liquidity_serum");var _u=5e4,Du=W([P("x"),P("y"),P("price")]),hP=W([P("accountType"),P("status"),P("multiplier"),P("validDataCount"),$(Du,_u,"DataElement")]);var Cn=W([K("mint"),K("owner"),P("amount"),Je("delegateOption"),K("delegate"),V("state"),Je("isNativeOption"),P("isNative"),P("delegatedAmount"),Je("closeAuthorityOption"),K("closeAuthority")]);import{Keypair as zu,PublicKey as Yu}from"@solana/web3.js";import qP from"bn.js";import{TOKEN_PROGRAM_ID as Hu}from"@solana/spl-token";function qu(o){return o instanceof Uint8Array||o!=null&&typeof o=="object"&&o.constructor.name==="Uint8Array"}function Ao(o,...e){if(!qu(o))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(o.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${o.length}`)}function ko(o,e=!0){if(o.destroyed)throw new Error("Hash instance has been destroyed");if(e&&o.finished)throw new Error("Hash#digest() has already been called")}function Zr(o,e){Ao(o);let t=e.outputLen;if(o.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var ci=o=>new DataView(o.buffer,o.byteOffset,o.byteLength),mt=(o,e)=>o<<32-e|o>>>e;var KP=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Gu(o){if(typeof o!="string")throw new Error(`utf8ToBytes expected string, got ${typeof o}`);return new Uint8Array(new TextEncoder().encode(o))}function wo(o){return typeof o=="string"&&(o=Gu(o)),Ao(o),o}var ui=class{clone(){return this._cloneInto()}},CP={}.toString;function jr(o){let e=n=>o().update(wo(n)).digest(),t=o();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>o(),e}function Uu(o,e,t,n){if(typeof o.setBigUint64=="function")return o.setBigUint64(e,t,n);let i=BigInt(32),r=BigInt(4294967295),s=Number(t>>i&r),a=Number(t&r),c=n?4:0,u=n?0:4;o.setUint32(e+c,s,n),o.setUint32(e+u,a,n)}var Jr=(o,e,t)=>o&e^~o&t,$r=(o,e,t)=>o&e^o&t^e&t,li=class extends ui{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=ci(this.buffer)}update(e){ko(this);let{view:t,buffer:n,blockLen:i}=this;e=wo(e);let r=e.length;for(let s=0;s<r;){let a=Math.min(i-this.pos,r-s);if(a===i){let c=ci(e);for(;i<=r-s;s+=i)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){ko(this),Zr(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:r}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let p=s;p<i;p++)t[p]=0;Uu(n,i-8,BigInt(this.length*8),r),this.process(n,0);let a=ci(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],r)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:r,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=r,e.destroyed=s,i%t&&e.buffer.set(n),e}};var Xu=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]),vt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Et=new Uint32Array(64),ho=class extends li{constructor(){super(64,32,8,!1),this.A=vt[0]|0,this.B=vt[1]|0,this.C=vt[2]|0,this.D=vt[3]|0,this.E=vt[4]|0,this.F=vt[5]|0,this.G=vt[6]|0,this.H=vt[7]|0}get(){let{A:e,B:t,C:n,D:i,E:r,F:s,G:a,H:c}=this;return[e,t,n,i,r,s,a,c]}set(e,t,n,i,r,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=r|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)Et[p]=e.getUint32(t,!1);for(let p=16;p<64;p++){let m=Et[p-15],d=Et[p-2],f=mt(m,7)^mt(m,18)^m>>>3,b=mt(d,17)^mt(d,19)^d>>>10;Et[p]=b+Et[p-7]+f+Et[p-16]|0}let{A:n,B:i,C:r,D:s,E:a,F:c,G:u,H:l}=this;for(let p=0;p<64;p++){let m=mt(a,6)^mt(a,11)^mt(a,25),d=l+m+Jr(a,c,u)+Xu[p]+Et[p]|0,b=(mt(n,2)^mt(n,13)^mt(n,22))+$r(n,i,r)|0;l=u,u=c,c=a,a=s+d|0,s=r,r=i,i=n,n=d+b|0}n=n+this.A|0,i=i+this.B|0,r=r+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,i,r,s,a,c,u,l)}roundClean(){Et.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var es=jr(()=>new ho);var YP=me("Raydium_Util");function ts({fromPublicKey:o,programId:e=Hu,assignSeed:t}){let n=t?btoa(t).slice(0,32):zu.generate().publicKey.toBase58().slice(0,32);return{publicKey:Qu(o,n,e),seed:n}}function Qu(o,e,t){let n=Buffer.concat([o.toBuffer(),Buffer.from(e),t.toBuffer()]),i=es(n);return new Yu(i)}import{PublicKey as Zu,SystemProgram as ju}from"@solana/web3.js";import Ju from"bn.js";import{createCloseAccountInstruction as $u,createInitializeAccountInstruction as ec,createTransferInstruction as oA,TOKEN_PROGRAM_ID as Nn}from"@solana/spl-token";function tc(o){let{mint:e,tokenAccount:t,owner:n,programId:i=Nn}=o;return ec(t,e,n,i)}function Ln(o){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:r=Nn}=o;return $u(e,t,i,n,r)}async function ns(o){let{connection:e,amount:t,commitment:n,payer:i,owner:r,skipCloseAccount:s}=o,a=await e.getMinimumBalanceForRentExemption(Cn.span,n),c=pe(t).add(new Ju(a)),u=ts({fromPublicKey:i,programId:Nn});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[ju.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:Cn.span,programId:Nn}),tc({mint:new Zu(ft.address),tokenAccount:u.publicKey,owner:r,programId:Nn})],instructionTypes:[ne.CreateAccount,ne.InitAccount],endInstructionTypes:s?[]:[ne.CloseAccount],endInstructions:s?[]:[Ln({tokenAccount:u.publicKey,payer:i,owner:r})]}}var nc=W([Je("mintAuthorityOption"),K("mintAuthority"),P("supply"),V("decimals"),V("isInitialized"),Je("freezeAuthorityOption"),K("freezeAuthority")]);function oc({programId:o}){let{publicKey:e}=ye([Buffer.from("amm_config_account_seed","utf-8")],o);return e}function is({programId:o}){return ye([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],o)}var To={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},os=o=>{let e={},t=ic.toBase58();return Object.keys(o).map(n=>{let i=o[n],[r,s]=[i.baseMint.toBase58(),i.quoteMint.toBase58()];e[n]={id:n,version:4,status:i.status.toNumber(),programId:i.programId.toBase58(),mintA:Ut({address:r,programId:t,decimals:i.baseDecimal.toNumber()}),mintB:Ut({address:s,programId:t,decimals:i.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:i.poolPrice.toNumber(),mintAmountA:new S(i.mintAAmount.toString()).div(10**i.baseDecimal.toNumber()).toNumber(),mintAmountB:new S(i.mintBAmount.toString()).div(10**i.quoteDecimal.toNumber()).toNumber(),baseReserve:i.baseReserve,quoteReserve:i.quoteReserve,feeRate:new S(i.tradeFeeNumerator.toString()).div(i.tradeFeeDenominator.toString()).toNumber(),openTime:i.poolOpenTime.toString(),tvl:0,day:To,week:To,month:To,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:i.marketId.toBase58(),configId:oc({programId:i.programId}).toBase58(),lpPrice:0,lpAmount:new S(i.lpReserve.toString()).div(10**Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())).toNumber(),lpMint:Ut({address:i.lpMint.toBase58(),programId:t,decimals:Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())}),burnPercent:0}}),e};var rs={[Xi.toBase58()]:3},ss={3:Xi};var Bo=W([Se(5),Se(8),K("ownAddress"),P("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),P("baseDepositsTotal"),P("baseFeesAccrued"),K("quoteVault"),P("quoteDepositsTotal"),P("quoteFeesAccrued"),P("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),P("baseLotSize"),P("quoteLotSize"),P("feeRateBps"),P("referrerRebatesAccrued"),Se(7)]),as={3:Bo};import{PublicKey as us}from"@solana/web3.js";var mi=me("Serum"),pi=class{static getProgramId(e){let t=ss[e];return t||mi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=rs[t];return n||mi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=as[e];return t||mi.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()],i=0,r;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));r=us.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:r,nonce:i}}return mi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:us.default,nonce:i}}};import{PublicKey as H,SystemProgram as rc,TransactionInstruction as sc}from"@solana/web3.js";import Wt from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as ac,TOKEN_2022_PROGRAM_ID as uc,TOKEN_PROGRAM_ID as cc}from"@solana/spl-token";function lc(o,e,t,n,i,r,s,a,c,u,l,p,m,d,f){var A;let b=[],y=[N({pubkey:cc,isWritable:!1}),N({pubkey:uc,isWritable:!1}),N({pubkey:ac,isWritable:!1}),N({pubkey:rc.programId,isWritable:!1}),N({pubkey:e,isSigner:!0})];y.push(N({pubkey:t})),y.push(N({pubkey:i}));let g=[c,u],k=[l,p],w=[r,s,a];for(let x=0;x<g.length;x++){let I=g[x],R=w[x]===I.mintA.address;if(y.push(N({pubkey:new H(I.programId),isWritable:!1})),x===g.length-1?y.push(N({pubkey:i})):y.push(N({pubkey:n})),y.push(N({pubkey:new H(w[x])})),y.push(N({pubkey:new H(w[x+1])})),I.version===6){let B=k[x];y.push(N({pubkey:new H(B.config.id)})),y.push(N({pubkey:new H(B.id)})),y.push(N({pubkey:new H(R?B.vault.A:B.vault.B)})),y.push(N({pubkey:new H(R?B.vault.B:B.vault.A)})),y.push(N({pubkey:new H(I.observationId)})),y.push(N({pubkey:Jt})),y.push(N({pubkey:Ce(new H(I.programId),new H(I.id)).publicKey})),b.push(mc(I.sqrtPriceX64.toString(),R));for(let L of(A=f[x])!=null?A:[])y.push(N({pubkey:new H(L)}))}else if(I.version===5){let B=k[x];y.push(N({pubkey:new H(B.id)})),y.push(N({pubkey:new H(B.authority),isWritable:!1})),y.push(N({pubkey:new H(B.marketProgramId)})),y.push(N({pubkey:new H(B.marketAuthority)})),y.push(N({pubkey:pr,isWritable:!1})),y.push(N({pubkey:new H(B.openOrders)})),y.push(N({pubkey:new H(B.vault.A)})),y.push(N({pubkey:new H(B.vault.B)})),y.push(N({pubkey:new H(B.id)})),y.push(N({pubkey:new H(B.id)})),y.push(N({pubkey:new H(B.id)})),y.push(N({pubkey:new H(B.id)})),y.push(N({pubkey:new H(B.id)})),y.push(N({pubkey:new H(B.id)})),y.push(N({pubkey:new H(B.marketId)})),y.push(N({pubkey:new H(B.marketBids)})),y.push(N({pubkey:new H(B.marketAsks)})),y.push(N({pubkey:new H(B.marketEventQueue)})),y.push(N({pubkey:new H(B.marketBaseVault)})),y.push(N({pubkey:new H(B.marketQuoteVault)}))}else if(I.version===4){let B=k[x],L=I.status!==1;y.push(N({pubkey:new H(B.id)})),y.push(N({pubkey:new H(B.authority),isWritable:!1})),y.push(N({pubkey:new H(L?B.id:B.marketProgramId)})),y.push(N({pubkey:new H(L?B.id:B.marketAuthority)})),y.push(N({pubkey:new H(L?B.id:B.openOrders)})),y.push(N({pubkey:new H(B.vault.A)})),y.push(N({pubkey:new H(B.vault.B)})),y.push(N({pubkey:new H(L?B.id:B.marketId)})),y.push(N({pubkey:new H(L?B.id:B.marketBids)})),y.push(N({pubkey:new H(L?B.id:B.marketAsks)})),y.push(N({pubkey:new H(L?B.id:B.marketEventQueue)})),y.push(N({pubkey:new H(L?B.id:B.marketBaseVault)})),y.push(N({pubkey:new H(L?B.id:B.marketQuoteVault)}))}else if(I.version===7){let B=k[x];y.push(N({pubkey:new H(B.authority)})),y.push(N({pubkey:new H(B.config.id)})),y.push(N({pubkey:new H(B.id)})),y.push(N({pubkey:new H(R?B.vault.A:B.vault.B)})),y.push(N({pubkey:new H(R?B.vault.B:B.vault.A)})),y.push(N({pubkey:new H(I.observationId)}))}else throw Error("pool type error")}let h=W([V("insId"),P("amountIn"),P("amountOut"),$(J(),b.length,"clmmPriceLimit")]),T=Buffer.alloc(h.span);return h.encode({insId:0,amountIn:m,amountOut:d,clmmPriceLimit:b},T),new sc({keys:y,programId:o,data:T})}function mc(o,e){if(o)if(e){let t=new Wt(o).div(new Wt(25));return t.gt(Jn)?t:Jn}else{let t=new Wt(o).mul(new Wt(25));return t.lt($n)?t:$n}else return e?Jn:$n}function cs({routeProgram:o,ownerInfo:e,inputMint:t,swapInfo:n}){var i,r,s,a,c,u,l,p,m;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let d=n.poolKey[0],f=Gt(d),b=t.equals(f.mintA.address)?et.add($e):tt.sub($e);return lt.makeSwapBaseInInstructions({poolInfo:d,poolKeys:d,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:f.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:f.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((r=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?r:new Wt(0)),sqrtPriceLimitX64:b,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else if(n.poolInfo[0].version===7){let d=n.poolInfo[0],f=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[zr(d.programId,e.wallet,d.authority,d.configId,d.id,e.sourceToken,e.destinationToken,f?d.vaultA:d.vaultB,f?d.vaultB:d.vaultA,f?d.mintProgramA:d.mintProgramB,f?d.mintProgramB:d.mintProgramA,new H(d[f?"mintA":"mintB"].address),new H(d[f?"mintB":"mintA"].address),d.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[f?ne.CpmmSwapBaseIn:ne.CpmmSwapBaseOut],address:{}}}else{let d=n.poolKey[0];return{signers:[],instructions:[n.poolInfo[0].pooltype.includes("StablePool")?Qr({poolKeys:d,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 Wt(0)),fixedSide:"in"}):Hr({poolKeys:d,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((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new Wt(0)),fixedSide:"in"})],lookupTableAddress:d.lookupTableAccount?[d.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?ne.AmmV5SwapBaseIn:ne.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let d=n.poolInfo[0],f=n.poolInfo[1],b=n.poolKey[0],y=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[lc(o,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),d,f,b,y,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((m=(p=n.minAmountOut.fee)==null?void 0:p.raw)!=null?m:new Wt(0)),n.remainingAccounts)],instructionTypes:[ne.RouteSwap],lookupTableAddress:[b.lookupTableAccount,y.lookupTableAccount].filter(g=>g!==void 0),address:{}}}else throw Error("route type error")}import{ASSOCIATED_TOKEN_PROGRAM_ID as _k,TOKEN_2022_PROGRAM_ID as Dk,TOKEN_PROGRAM_ID as qk}from"@solana/spl-token";import{SystemProgram as ms,TransactionInstruction as ps}from"@solana/web3.js";import xo from"bn.js";var pc=W([P(),P("epoch"),V("curveType"),gt("index"),P("migrateFee"),P("tradeFeeRate"),P("maxShareFeeRate"),P("minSupplyA"),P("maxLockRate"),P("minSellRateA"),P("minMigrateRateA"),P("minFundRaisingB"),K("mintB"),K("protocolFeeOwner"),K("migrateFeeOwner"),K("migrateToAmmWallet"),K("migrateToCpmmWallet"),$(P(),16)]),dc=W([P("totalLockedAmount"),P("cliffPeriod"),P("unlockPeriod"),P("startTime"),P("totalAllocatedShare")]),fc=W([P(),P("epoch"),V("bump"),V("status"),V("mintDecimalsA"),V("mintDecimalsB"),V("migrateType"),P("supply"),P("totalSellA"),P("virtualA"),P("virtualB"),P("realA"),P("realB"),P("totalFundRaisingB"),P("protocolFee"),P("platformFee"),P("migrateFee"),dc.replicate("vestingSchedule"),K("configId"),K("platformId"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("creator"),V("mintProgramFlag"),V("cpmmCreatorFeeOn"),$(V(),62)]),Bk=W([P(),P("epoch"),K("poolId"),K("beneficiary"),P("claimedAmount"),P("tokenShareAmount"),$(P(),8)]),ls=W([V("migrateType"),V("migrateCpmmFeeOn"),P("supply"),P("totalSellA"),P("totalFundRaisingB"),P("totalLockedAmount"),P("cliffPeriod"),P("unlockPeriod")]),bc=W([P("epoch"),V("index"),K("configId"),ls.replicate("bondingCurveParam"),$(P(),50)]),di=W([P(),P("epoch"),K("platformClaimFeeWallet"),K("platformLockNftWallet"),P("platformScale"),P("creatorScale"),P("burnScale"),P("feeRate"),$(V(),64,"name"),$(V(),256,"web"),$(V(),256,"img"),K("cpConfigId"),P("creatorFeeRate"),K("transferFeeExtensionAuth"),$(V(),180),hr(bc,"platformCurve")]);var yc=Buffer.from("vault_auth_seed","utf8"),Ck=Buffer.from("global_config","utf8"),Nk=Buffer.from("pool_vesting","utf8"),Lk=Buffer.from("platform_config","utf8"),Rk=Buffer.from("platform_fee_vault_auth_seed","utf8"),Ok=Buffer.from("creator_fee_vault_auth_seed","utf8");function fi(o){return ye([yc],o)}function Io(o){return ye([Buffer.from("__event_authority","utf8")],o)}function bi(o,e,t){return ye([e.toBuffer(),t.toBuffer()],o)}function yi(o,e,t){return ye([e.toBuffer(),t.toBuffer()],o)}var ds={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145])};function So(o,e,t,n,i,r,s,a,c,u,l,p,m,d,f,b,y,g,k,w){let h=W([P("amountB"),P("minAmountA"),P("shareFeeRate")]),T=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:Io(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}];w&&T.push({pubkey:w,isSigner:!1,isWritable:!0}),T.push({pubkey:ms.programId,isSigner:!1,isWritable:!1}),T.push({pubkey:f,isSigner:!1,isWritable:!0}),T.push({pubkey:b,isSigner:!1,isWritable:!0});let A=Buffer.alloc(h.span);return h.encode({amountB:y,minAmountA:g,shareFeeRate:k!=null?k:new xo(0)},A),new ps({keys:T,programId:o,data:Buffer.from([...ds.buyExactIn,...A])})}function Ko(o,e,t,n,i,r,s,a,c,u,l,p,m,d,f,b,y,g,k,w){let h=W([P("amountA"),P("minAmountB"),P("shareFeeRate")]),T=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:Io(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}];w&&T.push({pubkey:w,isSigner:!1,isWritable:!0}),T.push({pubkey:ms.programId,isSigner:!1,isWritable:!1}),T.push({pubkey:f,isSigner:!1,isWritable:!0}),T.push({pubkey:b,isSigner:!1,isWritable:!0});let A=Buffer.alloc(h.span);return h.encode({amountA:y,minAmountB:g,shareFeeRate:k!=null?k:new xo(0)},A),new ps({keys:T,programId:o,data:Buffer.from([...ds.sellExactIn,...A])})}var Qk=new xo("18446744073709551615");import gi from"bn.js";var Vt=class{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i}){throw Error()}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:i,migrateFee:r,decimalA:s,decimalB:a}){throw Error()}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,migrateFee:r}){throw Error()}static buyExactIn({poolInfo:e,amount:t}){throw Error()}static buyExactOut({poolInfo:e,amount:t}){throw Error()}static sellExactIn({poolInfo:e,amount:t}){throw Error()}static sellExactOut({poolInfo:e,amount:t}){throw Error()}};var Pi=class extends Vt{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new S(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i}){return new S(t.toString()).div(e.toString()).mul(10**(n-i))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new S(e.virtualB.add(e.realB).toString()).div(e.virtualA.sub(e.realA).toString()).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:i,migrateFee:r,decimalA:s,decimalB:a}){return new S(i.sub(r).toString()).div(e.sub(t).sub(n).toString()).mul(10**(s-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let i=e.totalSellA.sub(e.realA),r=e.totalFundRaisingB.sub(e.realB);return new S(e.virtualB.add(e.realB.add(r)).toString()).div(e.virtualA.sub(e.realA.add(i)).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,migrateFee:r}){if(e.lte(n))throw Error("supply need gt total sell");let s=e.sub(n).sub(i);if(s.lte(new gi(0)))throw Error("supplyMinusSellLocked <= 0");let a=t.sub(r);if(a.lte(new gi(0)))throw Error("tfMinusMf <= 0");let c=a.mul(n).mul(n).div(s),u=a.mul(n).div(s).sub(t),l=c.div(u),p=t.mul(t).div(u);if(l.lt(new gi(0))||p.lt(new gi(0)))throw Error("invalid input 0");return{a:l,b:p,c:n}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static getAmountOut({amountIn:e,inputReserve:t,outputReserve:n}){let i=e.mul(n),r=t.add(e);return i.div(r)}static getAmountIn({amountOut:e,inputReserve:t,outputReserve:n}){let i=t.mul(e),r=n.sub(e);return qt(i,r)}};import rt from"bn.js";import Ai from"bn.js";var ki=class extends Vt{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new S(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i}){return new S(t.toString()).div(e.toString()).mul(10**(n-i))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new S(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:i,migrateFee:r,decimalA:s,decimalB:a}){return new S(i.sub(r).toString()).div(e.sub(t).sub(n).toString()).mul(10**(s-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let i=e.totalSellA.sub(e.realA),r=e.totalFundRaisingB.sub(e.realB);return new S(e.virtualB.add(e.realB).add(r).toString()).div(e.virtualA.sub(e.realA).add(i).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,migrateFee:r}){let s=e.sub(i);if(s.lte(new Ai(0)))throw Error("invalid input 1");let a=new Ai(2).mul(t).sub(r),u=t.mul(s).div(a);if(u.lt(new Ai(0))||t.lt(new Ai(0)))throw Error("invalid input 0");return{a:u,b:t,c:u}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualB,initOutput:e.virtualA})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualB,initOutput:e.virtualA})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualA,initOutput:e.virtualB})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualA,initOutput:e.virtualB})}static getAmountOut({amountIn:e,initInput:t,initOutput:n}){return n.mul(e).div(t)}static getAmountIn({amountOut:e,initInput:t,initOutput:n}){let i=t.mul(e);return qt(i,n)}};import Ze from"bn.js";import fs from"bn.js";var Rn=class{static _multipler(e){return new S(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new S(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(n))}static getPriceX64({price:e,decimalA:t,decimalB:n}){let i=e.mul(this._multipler(n)).div(this._multipler(t));return new fs(i.mul(this._Q64).toFixed(0))}};Rn._Q64=new S(new fs(1).shln(64).toString());var wi=class extends Vt{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new S(0)}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i}){return new S(0)}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new S(e.virtualA.mul(e.realA).toString()).div(Rn._Q64).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:i,migrateFee:r,decimalA:s,decimalB:a}){return new S(i.sub(r).toString()).div(e.sub(t).sub(n).toString()).mul(10**(s-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let i=e.totalSellA.sub(e.realA),r=e.totalFundRaisingB.sub(e.realB);return new S(e.virtualB.add(e.realB).add(r).toString()).div(e.virtualA.sub(e.realA).add(i).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,migrateFee:r}){let s=e.sub(i);if(s.lte(new Ze(0)))throw Error("supplyMinusLocked need gt 0");let a=t.mul(new Ze(3)).sub(r),u=t.mul(new Ze(2)).mul(s).div(a),l=u.mul(u),p=t.mul(new Ze(2)).mul(Oe).div(l);if(!p.gt(new Ze(0)))throw Error("a need gt 0");if(!hn.gt(p))throw Error("a need lt u64 max");if(p.lt(new Ze(0))||u.lt(new Ze(0)))throw Error("invalid input 0");return{a:p,b:new Ze(0),c:u}}static buyExactIn({poolInfo:e,amount:t}){let n=e.realB.add(t),i=new Ze(2).mul(n).mul(Oe).div(e.virtualA);return new Ze(new S(i.toString()).sqrt().toFixed(0)).sub(e.realA)}static buyExactOut({poolInfo:e,amount:t}){let n=e.realA.add(t),i=n.mul(n);return qt(e.virtualA.mul(i),new Ze(2).mul(Oe)).sub(e.realB)}static sellExactIn({poolInfo:e,amount:t}){let n=e.realA.sub(t),i=n.mul(n),r=qt(e.virtualA.mul(i),new Ze(2).mul(Oe));return e.realB.sub(r)}static sellExactOut({poolInfo:e,amount:t}){let n=e.realB.sub(t),i=new Ze(2).mul(n).mul(Oe).div(e.virtualA),r=new Ze(new S(i.toString()).sqrt().toFixed(0));return e.realA.sub(r)}};var _t=class{static getPoolCurvePointByPoolInfo({curveType:e,pointCount:t,poolInfo:n}){return this.getPoolCurvePointByInit({curveType:e,pointCount:t,supply:n.supply,totalFundRaising:n.totalFundRaisingB,totalSell:n.totalSellA,totalLockedAmount:n.vestingSchedule.totalLockedAmount,migrateFee:n.migrateFee,decimalA:n.mintDecimalsA,decimalB:n.mintDecimalsB})}static getPoolCurvePointByInit({curveType:e,pointCount:t,supply:n,totalFundRaising:i,totalSell:r,totalLockedAmount:s,migrateFee:a,decimalA:c,decimalB:u}){if(t<3)throw Error("point count < 3");let l=this.getCurve(e),p=l.getInitParam({supply:n,totalFundRaising:i,totalSell:r,totalLockedAmount:s,migrateFee:a}),m=l.getPoolInitPriceByInit(Q(G({},p),{decimalA:c,decimalB:u})),d=i.div(new rt(t-1)),f=new rt(0),b=[{price:m,totalSellSupply:0}],{a:y,b:g}=p,k=f,w=f;for(let h=1;h<t;h++){let T=h!==t-1?d:i.sub(w),A=this.buyExactIn({poolInfo:{virtualA:y,virtualB:g,realA:k,realB:w,totalFundRaisingB:i,totalSellA:r},amountB:T,protocolFeeRate:f,platformFeeRate:f,curveType:e,shareFeeRate:f,creatorFeeRate:f,transferFeeConfigA:void 0,slot:0});k=k.add(A.amountA.amount),w=w.add(A.amountB);let x=this.getPrice({poolInfo:{virtualA:y,virtualB:g,realA:k,realB:w},decimalA:c,decimalB:u,curveType:e});b.push({price:x,totalSellSupply:new S(k.toString()).div(10**c).toNumber()})}return b}static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n,curveType:i}){return this.getCurve(i).getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n})}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i,curveType:r}){return this.getCurve(r).getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i})}static getPrice({poolInfo:e,curveType:t,decimalA:n,decimalB:i}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:n,decimalB:i})}static getEndPrice({poolInfo:e,curveType:t,decimalA:n,decimalB:i}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:n,decimalB:i})}static getPoolEndPriceReal({poolInfo:e,curveType:t,decimalA:n,decimalB:i}){return this.getCurve(t).getPoolEndPriceReal({poolInfo:e,decimalA:n,decimalB:i})}static checkParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,decimals:r,config:s,migrateType:a}){if(Number(r)!==6)throw Error("decimals = 6");if(e.mul(s.maxLockRate).div(Ft).lt(i))throw Error("total lock amount gte max lock amount");if(e.lt(s.minSupplyA.mul(new rt(10**r))))throw Error("supply lt min supply");let u=e.mul(s.minSellRateA).div(Ft);if(n.lt(u))throw Error("invalid input");if(t.lt(s.minFundRaisingB))throw Error("total fund raising lt min fund raising");let l=e.sub(n).sub(i),p=e.mul(s.minMigrateRateA).div(Ft);if(l.lt(p))throw Error("migrate lt min migrate amoount");let m=e.sub(n).sub(i),d=new rt(new S(m.mul(t).toString()).sqrt().toFixed(0));if(a==="amm"){let f=new rt(10).pow(new rt(r));if(d.lte(f))throw Error("check migrate lp error")}else if(a==="cpmm"){let f=new rt(100);if(d.lte(f))throw Error("check migrate lp error")}else throw Error("migrate type error")}static buyExactIn({poolInfo:e,amountB:t,protocolFeeRate:n,platformFeeRate:i,curveType:r,shareFeeRate:s,creatorFeeRate:a,transferFeeConfigA:c,slot:u}){let l=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a}),p=this.calculateFee({amount:t,feeRate:l}),m=t.sub(p),d=this.getCurve(r),f=d.buyExactIn({poolInfo:e,amount:m}),b=e.totalSellA.sub(e.realA),y,g,k;if(f.gt(b)){y=b;let h=d.buyExactOut({poolInfo:e,amount:y});g=this.calculatePreFee({postFeeAmount:h,feeRate:l}),k=g.sub(h)}else y=f,g=t,k=p;let w=this.splitFee({totalFee:k,protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a});return{amountA:Hi(y,c,u),amountB:g,splitFee:w}}static buyExactOut({poolInfo:e,amountA:t,protocolFeeRate:n,platformFeeRate:i,curveType:r,shareFeeRate:s,creatorFeeRate:a,transferFeeConfigA:c,slot:u}){let l=e.totalSellA.sub(e.realA),p=Qi(t,c,u),m=p.fee?p.amount.add(p.fee):p.amount;t.gt(l)&&(m=l);let f=this.getCurve(r).buyExactOut({poolInfo:e,amount:m}),b=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a}),y=this.calculatePreFee({postFeeAmount:f,feeRate:b}),g=y.sub(f),k=this.splitFee({totalFee:g,protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a});return{amountA:p,amountB:y,splitFee:k}}static sellExactIn({poolInfo:e,amountA:t,protocolFeeRate:n,platformFeeRate:i,curveType:r,shareFeeRate:s,creatorFeeRate:a,transferFeeConfigA:c,slot:u}){let l=this.getCurve(r),p=Hi(t,c,u),m=p.fee?p.amount.sub(p.fee):p.amount,d=l.sellExactIn({poolInfo:e,amount:m}),f=this.calculateFee({amount:d,feeRate:this.totalFeeRate({protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a})}),b=this.splitFee({totalFee:f,protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a});return{amountA:p,amountB:d.sub(f),splitFee:b}}static sellExactOut({poolInfo:e,amountB:t,protocolFeeRate:n,platformFeeRate:i,curveType:r,shareFeeRate:s,creatorFeeRate:a,transferFeeConfigA:c,slot:u}){let l=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a}),p=this.calculatePreFee({postFeeAmount:t,feeRate:l});if(e.realB.lt(p))throw Error("Insufficient liquidity");let m=p.sub(t),f=_t.getCurve(r).sellExactOut({poolInfo:e,amount:p});if(f.gt(e.realA))throw Error();let b=this.splitFee({totalFee:m,protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a});return{amountA:Qi(f,c,u),amountB:t,splitFee:b}}static splitFee({totalFee:e,protocolFeeRate:t,platformFeeRate:n,shareFeeRate:i,creatorFeeRate:r}){let s=this.totalFeeRate({protocolFeeRate:t,platformFeeRate:n,shareFeeRate:i,creatorFeeRate:r}),a=s.isZero()?new rt(0):e.mul(n).div(s),c=s.isZero()?new rt(0):e.mul(i).div(s),u=s.isZero()?new rt(0):e.mul(r).div(s),l=e.sub(a).sub(c).sub(u);return{platformFee:a,shareFee:c,protocolFee:l,creatorFee:u}}static calculateFee({amount:e,feeRate:t}){return Ui(e,t,Ft)}static calculatePreFee({postFeeAmount:e,feeRate:t}){if(t.isZero())return e;let n=e.mul(Ft),i=Ft.sub(t);return n.add(i).sub(new rt(1)).div(i)}static totalFeeRate({protocolFeeRate:e,platformFeeRate:t,shareFeeRate:n,creatorFeeRate:i}){if(e.add(t).add(n).add(i).gt(new rt(1e6)))throw Error("total fee rate gt 1_000_000");return e.add(t).add(n).add(i)}static getCurve(e){switch(e){case 0:return Pi;case 1:return ki;case 2:return wi}throw Error("find curve error")}};import{NATIVE_MINT as Th,TOKEN_2022_PROGRAM_ID as Bh,TOKEN_PROGRAM_ID as Ih,createAssociatedTokenAccountIdempotentInstruction as Sh,createSyncNativeInstruction as Kh,getTransferFeeConfig as Ch,unpackMint as Nh}from"@solana/spl-token";import Fe from"bn.js";import{PublicKey as gc,SystemProgram as Oh}from"@solana/web3.js";var Vh={initPriceX64:new Fe("515752397214619"),supply:new Fe(1e15),totalSellA:new Fe(7931e11),totalFundRaisingB:new Fe(85e9),totalFundRaisingBUSD:new Fe(125e8),totalLockedAmount:new Fe("0"),cliffPeriod:new Fe("0"),unlockPeriod:new Fe("0"),decimals:6,virtualA:new Fe("1073471847374405"),virtualB:new Fe("30050573465"),realA:new Fe(0),realB:new Fe(0),protocolFee:new Fe(0),platformId:new gc("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new Fe(0),cliffPeriod:new Fe(0),unlockPeriod:new Fe(0),startTime:new Fe(0),totalAllocatedShare:new Fe(0)}},_h=new Fe(1e4);var Kt=new Ne(0),No=class extends Xt{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(Ve));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:i=1,feePayer:r}=e,s=await this.getWSolAccounts(),a=this.createTxBuilder(r);a.addCustomComputeBudget(e.computeBudgetConfig);let c=pe(t);for(let u=0;u<s.length;u++)c.gte(s[u].amount)?(a.addInstruction({instructions:[Ln({tokenAccount:s[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(s[u].amount)):a.addInstruction({instructions:[Ln({tokenAccount:s[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]});return a.versionBuild({txVersion:i})}async wrapWSol(e,t,n,i){let r=this.createTxBuilder(i),s=await ns({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return r.addInstruction(s),r.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:i,routeProgram:r,txVersion:s,feePayer:a}){let c=this.createTxBuilder(a),u=e.amountIn,l=e.amountOut,p=u.amount.token.mint.equals(Ve),m=l.amount.token.mint.equals(Ve),d=u.amount.token.mint,f=l.amount.token.mint,{account:b,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.amount.token.isToken2022?un:ce,mint:d,notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:p?{payer:this.scope.ownerPubKey,amount:u.amount.raw}:void 0,associatedOnly:p?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(y&&c.addInstruction(y),b===void 0)throw Error("input account check error");let g;if(e.routeType==="route"&&!m)g=this.scope.account.getAssociatedTokenAccount(f,l.amount.token.isToken2022?un:ce);else{let{account:T,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:l.amount.token.isToken2022?un:ce,mint:f,notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!0,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:m?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});g=T,A&&c.addInstruction(A)}m&&c.addInstruction({endInstructions:[Ln({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:g,programId:ce})],endInstructionTypes:[ne.CloseAccount]});let k;if(e.routeType==="route"){let T=e.middleToken;k=this.scope.account.getAssociatedTokenAccount(T.mint,T.isToken2022?un:ce)}let w=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),h=cs({routeProgram:r,inputMint:d,swapInfo:Q(G({},e),{poolInfo:[...e.poolInfoList],poolKey:w,outputMint:f}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:b,routeToken:k,destinationToken:g}});if(e.feeConfig!==void 0){let T=this.createTxBuilder();T.addInstruction({instructions:[bs(b,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[ne.TransferAmount]}),T.addInstruction(h);let{transactions:A}=s===0?await T.sizeCheckBuildV0():await T.sizeCheckBuild();A.length<2&&c.addInstruction({instructions:[bs(b,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[ne.TransferAmount]})}return c.addInstruction(h),s===0?c.sizeCheckBuildV0({computeBudgetConfig:i,address:h.address}):c.sizeCheckBuild({computeBudgetConfig:i,address:h.address})}async swapClmmToLaunchMint({inputMint:e,inputAmount:t,fixClmmOut:n=!1,clmmPoolId:i,launchPoolId:r,priceLimit:s,slippage:a=.01,shareFeeRate:c=new Ne(0),shareFeeReceiver:u,launchPlatformInfo:l,slot:p,mintInfo:m,epochInfo:d,ownerInfo:f={useSOLBalance:!0},checkCreateATAOwner:b=!1,computeBudgetConfig:y,txVersion:g}){let k=(f==null?void 0:f.feePayer)||this.scope.ownerPubKey,w=d!=null?d:await this.scope.fetchEpochInfo(),{clmmPoolData:h,clmmComputeAmount:{maxClmmAmountIn:T,clmmAmountOut:A,remainingAccounts:x},launchPoolInfo:I,launchAuthProgramId:R,launchSwapInfo:B,outAmount:L,minOutAmount:_}=await this.computeClmmToLaunchAmount({inputMint:e,inputAmount:t,fixClmmOut:n,clmmPoolId:i,launchPoolId:r,slippage:a,epochInfo:w,shareFeeRate:c,launchPlatformInfo:l,slot:p,mintInfo:m}),O=e.toString()===h.poolInfo.mintA.address,z=f.useSOLBalance&&h.poolInfo.mintA.address===Ve.toBase58(),D=f.useSOLBalance&&h.poolInfo.mintB.address===Ve.toBase58(),E={},he;!s||s.equals(new S(0))?he=O?et.add(new Ne(1)):tt.sub(new Ne(1)):he=Z.priceToSqrtPriceX64(s,h.poolInfo.mintA.decimals,h.poolInfo.mintB.decimals);let Te=this.createTxBuilder(k),[ve,Ge]=[new ue(h.poolInfo.mintA.address),new ue(h.poolInfo.mintB.address)],[Ke,Ie]=[new ue(h.poolInfo.mintA.programId),new ue(h.poolInfo.mintB.programId)],Xe=this.scope.account.getAssociatedTokenAccount(ve,Ke),ze=this.scope.account.getAssociatedTokenAccount(Ge,Ie);Te.addInstruction({instructions:[Co(this.scope.ownerPubKey,Xe,this.scope.ownerPubKey,ve,Ke),Co(this.scope.ownerPubKey,ze,this.scope.ownerPubKey,Ge,Ie)]}),(O&&z||!O&&D)&&Te.addInstruction({instructions:[Pc.transfer({fromPubkey:this.scope.ownerPubKey,toPubkey:O?Xe:ze,lamports:BigInt(T.toString())}),Ac(O?Xe:ze)]}),E[h.poolInfo.mintA.address]=Xe,E[h.poolInfo.mintB.address]=ze,(!Xe||!ze)&&this.logAndCreateError("user do not have token account",{ownerTokenAccountA:Xe,ownerTokenAccountB:ze}),Te.addInstruction(n?lt.makeSwapBaseOutInstructions({poolInfo:h.poolInfo,poolKeys:h.poolKeys,observationId:h.computePoolInfo.observationId,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:Xe,tokenAccountB:ze},outputMint:O?Ge:ve,amountOut:A,amountInMax:T,sqrtPriceLimitX64:he,remainingAccounts:x}):lt.makeSwapBaseInInstructions({poolInfo:h.poolInfo,poolKeys:h.poolKeys,observationId:h.computePoolInfo.observationId,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:Xe,tokenAccountB:ze},inputMint:new ue(e),amountIn:t,amountOutMin:A,sqrtPriceLimitX64:he,remainingAccounts:x}));let hi=I.mintProgramFlag===0?ce:un,Lo=this.scope.account.getAssociatedTokenAccount(I.mintA,hi),Ti=E[I.mintB.toBase58()];if(Te.addInstruction({instructions:[Co(this.scope.ownerPubKey,Lo,this.scope.ownerPubKey,I.mintA,hi)]}),!Ti){let Bi=I.mintB.equals(Ve),{account:ys,instructionParams:Ro}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ce,mint:I.mintB,notUseTokenAccount:Bi,owner:this.scope.ownerPubKey,skipCloseAccount:!Bi,createInfo:Bi?{payer:this.scope.ownerPubKey,amount:A}:void 0,associatedOnly:!1,checkCreateATAOwner:b});Ti=ys,Ro&&Te.addInstruction(Ro)}return Te.addInstruction({instructions:[So(I.programId,this.scope.ownerPubKey,R,I.configId,I.platformId,new ue(r),Lo,Ti,I.vaultA,I.vaultB,I.mintA,I.mintB,hi,ce,bi(I.programId,I.platformId,I.mintB).publicKey,yi(I.programId,I.creator,I.mintB).publicKey,B.amountB.lt(A)?B.amountB:A,_,c,u)]}),Te.addCustomComputeBudget(y),Te.versionBuild({txVersion:g,extInfo:{routes:[{mint:new ue(e),amount:n?T:t,decimal:h.poolInfo[O?"mintA":"mintB"].decimals},{mint:O?Ge:ve,amount:A,decimal:h.poolInfo[O?"mintB":"mintA"].decimals},{mint:I.mintA,amount:L,decimal:I.mintDecimalsA}],outAmount:L,minOutAmount:_}})}async computeClmmToLaunchAmount({inputMint:e,inputAmount:t,fixClmmOut:n=!1,clmmPoolId:i,launchPoolId:r,slippage:s,epochInfo:a,shareFeeRate:c=new Ne(0),clmmPoolData:u,launchPoolInfo:l,launchPlatformInfo:p,slot:m,mintInfo:d}){var z,D,E,he,Te,ve;let f=s>0?new S(s).div(2).toDecimalPlaces(4,S.ROUND_DOWN).toNumber():s,b=u!=null?u:await this.scope.clmm.getPoolInfoFromRpc(i.toString());if(e.toString()!==b.poolInfo.mintA.address&&e.toString()!==b.poolInfo.mintB.address)throw new Error("input mint does not match clmm pool mints, please check");let y=e.toString()===b.poolInfo.mintA.address,g=b.poolInfo[y?"mintB":"mintA"],k=n?await de.computeAmountIn({poolInfo:b.computePoolInfo,tickArrayCache:b.tickData[i.toString()],amountOut:t,baseMint:new ue(b.poolInfo[y?"mintB":"mintA"].address),slippage:f,epochInfo:a!=null?a:await this.scope.fetchEpochInfo()}):await de.computeAmountOutFormat({poolInfo:b.computePoolInfo,tickArrayCache:b.tickData[i.toString()],amountIn:t,tokenOut:g,slippage:f,epochInfo:a!=null?a:await this.scope.fetchEpochInfo()}),w=l;if(w||(w=await this.scope.launchpad.getRpcPoolInfo({poolId:new ue(r)})),g.address!==w.mintB.toBase58())throw new Error(`clmm swap mint(${g.address}) != launch pool mintB(${w.mintB.toBase58()})`);let h=p;if(!h){let Ge=await this.scope.connection.getAccountInfo(w.platformId);h=di.decode(Ge.data)}let T=d!=null?d:await this.scope.token.getTokenInfo(w.mintA),A=fi(w.programId).publicKey,x=T.extensions.feeConfig?{transferFeeConfigAuthority:ue.default,withdrawWithheldAuthority:ue.default,withheldAmount:BigInt(0),olderTransferFee:{epoch:BigInt((D=(z=T.extensions.feeConfig.olderTransferFee.epoch)!=null?z:a==null?void 0:a.epoch)!=null?D:0),maximumFee:BigInt(T.extensions.feeConfig.olderTransferFee.maximumFee),transferFeeBasisPoints:T.extensions.feeConfig.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt((he=(E=T.extensions.feeConfig.newerTransferFee.epoch)!=null?E:a==null?void 0:a.epoch)!=null?he:0),maximumFee:BigInt(T.extensions.feeConfig.newerTransferFee.maximumFee),transferFeeBasisPoints:T.extensions.feeConfig.newerTransferFee.transferFeeBasisPoints}}:void 0,I=n?t:k.minAmountOut.amount.raw,R=_t.buyExactIn({poolInfo:w,amountB:I,protocolFeeRate:w.configInfo.tradeFeeRate,platformFeeRate:h.feeRate,curveType:w.configInfo.curveType,shareFeeRate:c,creatorFeeRate:h.creatorFeeRate,transferFeeConfigA:x,slot:m!=null?m:await this.scope.connection.getSlot()}),B=R.amountA.amount.sub((Te=R.amountA.fee)!=null?Te:new Ne(0)),L=new S(B.toString()),_=new Ne(1e4),O=f?new S(_.sub(new Ne(f*1e4)).toNumber()/_.toNumber()).clampedTo(0,1):new S(1);return{clmmPoolData:b,clmmComputeAmount:{maxClmmAmountIn:n?k.maxAmountIn.amount:t,clmmAmountOut:I,remainingAccounts:k.remainingAccounts},clmmComputeInfo:k,launchPoolInfo:w,launchAuthProgramId:A,launchMintTransferFeeConfig:x,launchSwapInfo:R,outAmount:R.amountA.amount.sub((ve=R.amountA.fee)!=null?ve:new Ne(0)),minOutAmount:new Ne(L.mul(O).toFixed(0))}}async swapLaunchMintToClmm({inputAmount:e,clmmPoolId:t,launchPoolId:n,priceLimit:i,slippage:r=.01,shareFeeRate:s=new Ne(0),shareFeeReceiver:a,ownerInfo:c={useSOLBalance:!0},checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:p}){let m=(c==null?void 0:c.feePayer)||this.scope.ownerPubKey,d=await this.scope.fetchEpochInfo(),{clmmPoolData:f,clmmComputeAmount:{remainingAccounts:b},launchPoolInfo:y,launchAuthProgramId:g,launchSwapInfo:k,minLaunchOutAmount:w,outAmount:h,minOutAmount:T}=await this.computeLaunchToClmmAmount({inputAmount:e,clmmPoolId:t,launchPoolId:n,slippage:r,epochInfo:d,shareFeeRate:s}),A=this.createTxBuilder(m),x={},I=y.mintProgramFlag===0?ce:un,{account:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:I,mint:y.mintA,notUseTokenAccount:!1,owner:this.scope.ownerPubKey,skipCloseAccount:!0,createInfo:void 0,associatedOnly:!0,checkCreateATAOwner:u});if(!R)throw new Error(`do not have launch mint(${y.mintA.toString()}) token account`);let B=y.mintB.equals(Ve),{account:L,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ce,mint:y.mintB,notUseTokenAccount:B,owner:this.scope.ownerPubKey,skipCloseAccount:!B,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1,checkCreateATAOwner:u});if(_&&A.addInstruction(_),!L)throw new Error(`do not have launch mint(${y.mintA.toString()}) token account`);x[y.mintB.toBase58()]=L,A.addInstruction({instructions:[Ko(y.programId,this.scope.ownerPubKey,g,y.configId,y.platformId,new ue(n),R,L,y.vaultA,y.vaultB,y.mintA,y.mintB,I,ce,bi(y.programId,y.platformId,y.mintB).publicKey,yi(y.programId,y.creator,y.mintB).publicKey,k.amountA.amount.lt(e)?k.amountA.amount:e,w,s,a)]});let O=y.mintB.toString()===f.poolInfo.mintA.address,z=c.useSOLBalance&&f.poolInfo.mintA.address===Ve.toBase58(),D=c.useSOLBalance&&f.poolInfo.mintB.address===Ve.toBase58(),E;!i||i.equals(new S(0))?E=O?et.add(new Ne(1)):tt.sub(new Ne(1)):E=Z.priceToSqrtPriceX64(i,f.poolInfo.mintA.decimals,f.poolInfo.mintB.decimals);let[he,Te]=[new ue(f.poolInfo.mintA.address),new ue(f.poolInfo.mintB.address)],[ve,Ge]=[new ue(f.poolInfo.mintA.programId),new ue(f.poolInfo.mintB.programId)],Ke=z?void 0:this.scope.account.getAssociatedTokenAccount(he,ve),Ie=D?void 0:this.scope.account.getAssociatedTokenAccount(Te,Ge);if(!Ke){let{account:Xe,instructionParams:ze}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ve,mint:he,notUseTokenAccount:!0,owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:c.feePayer||this.scope.ownerPubKey,amount:O?e:0},associatedOnly:!1,checkCreateATAOwner:u});Ke=Xe,ze&&A.addInstruction(ze)}if(!Ie){let{account:Xe,instructionParams:ze}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ge,mint:Te,notUseTokenAccount:!0,owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:c.feePayer||this.scope.ownerPubKey,amount:O?0:e},associatedOnly:!1,checkCreateATAOwner:u});Ie=Xe,ze&&A.addInstruction(ze)}return x[f.poolInfo.mintA.address]=Ke,x[f.poolInfo.mintB.address]=Ie,(!Ke||!Ie)&&this.logAndCreateError("user do not have token account",{ownerTokenAccountA:Ke,ownerTokenAccountB:Ie}),A.addInstruction(lt.makeSwapBaseInInstructions({poolInfo:f.poolInfo,poolKeys:f.poolKeys,observationId:f.computePoolInfo.observationId,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:Ke,tokenAccountB:Ie},inputMint:new ue(f.poolKeys[O?"mintA":"mintB"].address),amountIn:w,amountOutMin:T,sqrtPriceLimitX64:E,remainingAccounts:b})),A.addCustomComputeBudget(l),A.versionBuild({txVersion:p,extInfo:{routes:[{mint:y.mintA,amount:e,decimal:y.mintDecimalsA},{mint:y.mintB,amount:w,decimal:y.mintDecimalsB},{mint:new ue(f.poolKeys[O?"mintB":"mintA"].address),amount:h,decimal:f.poolKeys[O?"mintB":"mintA"].decimals}],outAmount:h,minOutAmount:T}})}async computeLaunchToClmmAmount({inputAmount:e,clmmPoolId:t,launchPoolId:n,slippage:i,epochInfo:r,shareFeeRate:s=new Ne(0),clmmPoolData:a,launchPoolInfo:c,launchPlatformInfo:u}){var L,_,O,z;let l=i>0?new S(i).div(2).toDecimalPlaces(4,S.ROUND_DOWN).toNumber():i,p=c;p||(p=await this.scope.launchpad.getRpcPoolInfo({poolId:new ue(n)}));let m=p.mintB,d=a!=null?a:await this.scope.clmm.getPoolInfoFromRpc(t.toString());if(m.toString()!==d.poolInfo.mintA.address&&m.toString()!==d.poolInfo.mintB.address)throw new Error("input mint does not match clmm pool mints, please check");let f=m.toString()===d.poolInfo.mintA.address,b=d.poolInfo[f?"mintB":"mintA"],y=u;if(!y){let D=await this.scope.connection.getAccountInfo(p.platformId);y=di.decode(D.data)}let g=await this.scope.token.getTokenInfo(p.mintA),k=fi(p.programId).publicKey,w=g.extensions.feeConfig?{transferFeeConfigAuthority:ue.default,withdrawWithheldAuthority:ue.default,withheldAmount:BigInt(0),olderTransferFee:{epoch:BigInt((_=(L=g.extensions.feeConfig.olderTransferFee.epoch)!=null?L:r==null?void 0:r.epoch)!=null?_:0),maximumFee:BigInt(g.extensions.feeConfig.olderTransferFee.maximumFee),transferFeeBasisPoints:g.extensions.feeConfig.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt((z=(O=g.extensions.feeConfig.newerTransferFee.epoch)!=null?O:r==null?void 0:r.epoch)!=null?z:0),maximumFee:BigInt(g.extensions.feeConfig.newerTransferFee.maximumFee),transferFeeBasisPoints:g.extensions.feeConfig.newerTransferFee.transferFeeBasisPoints}}:void 0,h=_t.sellExactIn({poolInfo:p,amountA:e,protocolFeeRate:p.configInfo.tradeFeeRate,platformFeeRate:y.feeRate,curveType:p.configInfo.curveType,shareFeeRate:s,creatorFeeRate:y.creatorFeeRate,transferFeeConfigA:w,slot:await this.scope.connection.getSlot()}),T=h.amountB,A=new S(T.toString()),x=new Ne(1e4),I=l?new S(x.sub(new Ne(l*1e4)).toNumber()/x.toNumber()).clampedTo(0,1):new S(1),R=new Ne(A.mul(I).toFixed(0)),B=await de.computeAmountOutFormat({poolInfo:d.computePoolInfo,tickArrayCache:d.tickData[t.toString()],amountIn:R,tokenOut:b,slippage:l,epochInfo:r!=null?r:await this.scope.fetchEpochInfo()});return{clmmPoolData:d,clmmComputeAmount:B,launchPoolInfo:p,launchAuthProgramId:k,launchMintTransferFeeConfig:w,launchSwapInfo:h,minLaunchOutAmount:R,outAmount:B.amountOut.amount.raw,minOutAmount:B.minAmountOut.amount.raw}}async fetchRoutePoolBasicInfo(e){let{amm:t=mr,clmm:n=zi,cpmm:i=Yi}=e||{},r=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:Po.offsetOf("baseMint"),length:64}}),s=W([K("baseMint"),K("quoteMint")]),a=r.map(d=>({id:d.pubkey,version:4,mintA:s.decode(d.account.data).baseMint,mintB:s.decode(d.account.data).quoteMint})),c=W([K("mintA"),K("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:an.span}],dataSlice:{offset:an.offsetOf("mintA"),length:64}})).map(d=>{let f=c.decode(d.account.data);return{id:d.pubkey,version:6,mintA:f.mintA,mintB:f.mintB}}),m=(await this.scope.connection.getProgramAccounts(i,{dataSlice:{offset:Ur.offsetOf("mintA"),length:64}})).map(d=>{let f=c.decode(d.account.data);return{id:d.pubkey,version:7,mintA:f.mintA,mintB:f.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:m}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:i,cpmmPools:r}){e=e.toString()===ue.default.toString()?Ve:e,t=t.toString()===ue.default.toString()?Ve: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:ce,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:ce,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:ce,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:ce,in:[],out:[],mDecimals:0}),l[d].out.push(m)}}let p=[];for(let m of i)(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:ce,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:ce,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:ce,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:ce,in:[],out:[],mDecimals:0}),l[m.mintA.toBase58()].out.push(m));for(let m of r)(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:ce,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:ce,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:ce,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:ce,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 f of d.in)for(let b of d.out)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),b.version===6&&a[b.id.toString()]===void 0?a[b.id.toString()]=b:b.version===7&&c[b.id.toString()]===void 0?c[b.id.toString()]=b:(b.version===4||b.version===5)&&s[b.id.toString()]===void 0&&(s[b.id.toString()]=b)}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 i=new Set([...e.needTickArray.map(b=>[b.mintA.toBase58(),b.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let r=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(b=>b.id)),s=os(r),a={};Object.values(s).forEach(b=>{i.delete(b.mintA.address),a[b.mintA.address]={address:new ue(b.mintA.address),programId:ce,mintAuthority:null,supply:BigInt(0),decimals:b.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},i.delete(b.mintB.address),a[b.mintB.address]={address:new ue(b.mintB.address),programId:ce,mintAuthority:null,supply:BigInt(0),decimals:b.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(b=>b.id.toBase58()),!0);Object.values(c).forEach(b=>{let[y,g]=[b.mintA.toBase58(),b.mintB.toBase58()];b.mintProgramA.equals(ce)?(i.delete(y),a[y]={address:b.mintA,programId:b.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:b.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):i.add(y),b.mintProgramB.equals(ce)?(i.delete(g),a[g]={address:b.mintB,programId:b.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:b.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):i.add(g)}),console.log("fetching mints info, total: ",i.size);let u=await Mi({connection:this.scope.connection,mints:Array.from(i).map(b=>new ue(b))});a=G(G({},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(b=>b.id)}),{computeClmmPoolInfo:m,computePoolTickData:d}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:p,mintInfos:a}),f=Object.keys(e.routePathDict).reduce((b,y)=>Q(G({},b),{[y]:Q(G({},e.routePathDict[y]),{mintProgram:a[y].programId,mDecimals:a[y].decimals,in:e.routePathDict[y].in.map(g=>s[g.id.toBase58()]||m[g.id.toBase58()]||l[g.id.toBase58()]),out:e.routePathDict[y].out.map(g=>s[g.id.toBase58()]||m[g.id.toBase58()]||l[g.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:r,ammSimulateCache:s,clmmPoolsRpcInfo:p,computeClmmPoolInfo:m,computePoolTickData:d,computeCpmmData:l,routePathDict:f}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:i,simulateCache:r,tickCache:s,slippage:a,chainTime:c,epochInfo:u,feeConfig:l}){var g,k,w,h,T,A,x,I,R;let p=l===void 0?new Ne(0):e.raw.mul(new Ne(l.feeBps.toNumber())).div(new Ne(1e4)),m=e.raw.sub(p),d=new be(e.token,m),f=l===void 0?void 0:{feeAmount:p,feeAccount:l.feeAccount},b=Q(G({},t),{address:dt(t.address).toString()}),y=[];for(let B of n)try{y.push(Q(G({},this.computeAmountOut({itemPool:B,tickCache:s,simulateCache:r,chainTime:c,epochInfo:u,slippage:a,outputToken:b,amountIn:d})),{feeConfig:f}))}catch(L){this.logDebug("direct error",B.version,B.id.toString(),L.message)}this.logDebug("direct done");for(let[B,L]of Object.entries(i)){let _={chainId:101,address:B,programId:L.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:L.mDecimals,tags:[],extensions:{}},O=L.in.map(D=>{try{return{pool:D,data:this.computeAmountOut({itemPool:D,tickCache:s,simulateCache:r,chainTime:c,epochInfo:u,slippage:a,outputToken:_,amountIn:d})}}catch(E){this.logDebug("route in error",D.version,D.id.toString(),E.message);return}}).sort((D,E)=>{var ve,Ge,Ke,Ie;let he=D===void 0?Kt:D.data.amountOut.amount.raw.sub((Ge=(ve=D.data.amountOut.fee)==null?void 0:ve.raw)!=null?Ge:Kt),Te=E===void 0?Kt:E.data.amountOut.amount.raw.sub((Ie=(Ke=E.data.amountOut.fee)==null?void 0:Ke.raw)!=null?Ie:Kt);return he.lt(Te)?1:-1})[0];if(O===void 0)continue;let z=new be(Tr(_),O.data.amountOut.amount.raw.sub((k=(g=O.data.amountOut.fee)==null?void 0:g.raw)!=null?k:Kt));for(let D of L.out)try{let E=this.computeAmountOut({itemPool:D,tickCache:s,simulateCache:r,chainTime:c,epochInfo:u,slippage:a,outputToken:b,amountIn:z});y.push(Q(G({},E),{allTrade:!!(O.data.allTrade&&E.allTrade),amountIn:O.data.amountIn,amountOut:E.amountOut,minAmountOut:E.minAmountOut,currentPrice:void 0,executionPrice:new S(new He({baseToken:O.data.amountIn.amount.token,denominator:O.data.amountIn.amount.raw,quoteToken:E.amountOut.amount.token,numerator:E.amountOut.amount.raw.sub((h=(w=E.amountOut.fee)==null?void 0:w.raw)!=null?h:Kt)}).toFixed()),priceImpact:new S(O.data.priceImpact.add(E.priceImpact).toFixed()),fee:[O.data.fee[0],E.fee[0]],routeType:"route",poolInfoList:[O.pool,D],remainingAccounts:[O.data.remainingAccounts[0],E.remainingAccounts[0]],minMiddleAmountFee:(T=E.amountOut.fee)!=null&&T.raw?new be(O.data.amountOut.amount.token,((x=(A=O.data.amountOut.fee)==null?void 0:A.raw)!=null?x:Kt).add((R=(I=E.amountOut.fee)==null?void 0:I.raw)!=null?R:Kt)):void 0,middleToken:O.data.amountOut.amount.token,poolReady:O.data.poolReady&&E.poolReady,poolType:[O.data.poolType,E.poolType],feeConfig:f,expirationTime:ct(O.data.expirationTime,E.expirationTime)}))}catch(E){this.logDebug("route out error",D.version,D.id.toString(),E.message)}}return y.filter(B=>(B.allTrade||this.logDebug(`pool ${B.poolInfoList.map(L=>L.id.toString()).join(",")} filter out since not all trade`),B.allTrade)).sort((B,L)=>B.amountOut.amount.raw.sub(L.amountOut.amount.raw).gt(Kt)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:i,epochInfo:r,slippage:s,outputToken:a,amountIn:c}){if(e.version===6){let{allTrade:u,realAmountIn:l,amountOut:p,minAmountOut:m,expirationTime:d,currentPrice:f,executionPrice:b,priceImpact:y,fee:g,remainingAccounts:k,executionPriceX64:w}=de.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:s,epochInfo:r,catchLiquidityInsufficient:!0});return{allTrade:u,amountIn:l,amountOut:p,minAmountOut:m,currentPrice:new S(f.toFixed()),executionPrice:new S(b.toFixed()),priceImpact:new S(y.toFixed()),fee:[g],remainingAccounts:[k],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<i,poolType:"CLMM",slippage:s,clmmExPriceX64:[w],expirationTime:ct(l.expirationTime,d)}}else if(e.version===7){let{allTrade:u,executionPrice:l,amountOut:p,minAmountOut:m,priceImpact:d,fee:f}=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:wn(Q(G({},a),{amount:p})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:wn(Q(G({},a),{amount:m})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:d,fee:[new be(c.token,f)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<i,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:f}=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:wn(Q(G({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:wn(Q(G({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:p,executionPrice:m,priceImpact:d,fee:[new be(c.token,f)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<i,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 i=new Set(e.filter(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(i.size>0){let u=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(i)});Object.keys(u).forEach(l=>{t[l]=u[l]})}let r=new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString()));if(r.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 Mt(this.scope.connection,Array.from(s).map(l=>({pubkey:new ue(l)})))).forEach(l=>{if(!l.accountInfo)return;let p=Bo.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:pi.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:Q(G({},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=G({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:is({programId:new ue(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:Xr(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:Ut({address:u.mintLp.toBase58(),programId:ce.toBase58(),decimals:u.lpDecimals}),config:Q(G({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{No as default};
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=trade.mjs.map