UNPKG

snapper-sdk

Version:

An SDK for building applications on top of Snapper.

9 lines 178 kB
import{PublicKey as C}from"@solana/web3.js";import Ke from"bn.js";var bt=9e15,rt=1e9,xn="0123456789abcdef",Qt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Jt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Bn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-bt,maxE:bt,crypto:!1},li,Ye,_=!0,en="[DecimalError] ",it=en+"Invalid argument: ",mi=en+"Precision limit exceeded",di=en+"crypto unavailable",fi="[object Decimal]",ke=Math.floor,fe=Math.pow,wr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,hr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Pr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,pi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Fe=1e7,E=7,kr=9007199254740991,Ar=Qt.length-1,In=Jt.length-1,x={toStringTag:fi};x.absoluteValue=x.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),R(r)};x.ceil=function(){return R(new this.constructor(this),this.e+1,2)};x.clampedTo=x.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(it+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};x.comparedTo=x.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,c=o.s,u=r.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==r.e)return o.e>r.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};x.cosine=x.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+E,n.rounding=1,t=Tr(n,hi(n,t)),n.precision=r,n.rounding=e,R(Ye==2||Ye==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};x.cubeRoot=x.cbrt=function(){var r,e,t,n,i,o,s,a,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(_=!1,o=l.s*fe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=ye(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=fe(t,1/3),r=ke((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=te(u.plus(l).times(a),u.plus(c),s+2,1),ye(a.d).slice(0,s)===(t=ye(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(R(a,r+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")&&(R(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return _=!0,R(n,r,m.rounding,e)};x.decimalPlaces=x.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-ke(this.e/E))*E,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};x.dividedBy=x.div=function(r){return te(this,new this.constructor(r))};x.dividedToIntegerBy=x.divToInt=function(r){var e=this,t=e.constructor;return R(te(e,new t(r),0,1,1),t.precision,t.rounding)};x.equals=x.eq=function(r){return this.cmp(r)===0};x.floor=function(){return R(new this.constructor(this),this.e+1,3)};x.greaterThan=x.gt=function(r){return this.cmp(r)>0};x.greaterThanOrEqualTo=x.gte=function(r){var e=this.cmp(r);return e==1||e===0};x.hyperbolicCosine=x.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/nn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=yt(s,1,o.times(e),new s(1),!0);for(var c,u=r,l=new s(8);u--;)c=o.times(o),o=a.minus(c.times(l.minus(c.times(l))));return R(o,s.precision=t,s.rounding=n,!0)};x.hyperbolicSine=x.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=yt(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/nn(5,r)),i=yt(o,2,i,i,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,R(i,e,t,!0)};x.hyperbolicTangent=x.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,te(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};x.inverseCosine=x.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?Ee(t,i,o):new t(0):new t(NaN):e.isZero()?Ee(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=Ee(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};x.inverseHyperbolicCosine=x.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,_=!1,t=t.times(t).minus(1).sqrt().plus(t),_=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};x.inverseHyperbolicSine=x.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,_=!1,t=t.times(t).plus(1).sqrt().plus(t),_=!0,n.precision=r,n.rounding=e,t.ln())};x.inverseHyperbolicTangent=x.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?R(new o(i),r,e,!0):(o.precision=t=n-i.e,i=te(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};x.inverseSine=x.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=Ee(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};x.inverseTangent=x.atan=function(){var r,e,t,n,i,o,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&m+4<=In)return s=Ee(l,m+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=In)return s=Ee(l,m+4,d).times(.5),s.s=u.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/E+2|0),r=t;r;--r)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(_=!1,e=Math.ceil(a/E),n=1,c=u.times(u),s=new l(u),i=u;r!==-1;)if(i=i.times(c),o=s.minus(i.div(n+=2)),i=i.times(c),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),_=!0,R(s,l.precision=m,l.rounding=d,!0)};x.isFinite=function(){return!!this.d};x.isInteger=x.isInt=function(){return!!this.d&&ke(this.e/E)>this.d.length-2};x.isNaN=function(){return!this.s};x.isNegative=x.isNeg=function(){return this.s<0};x.isPositive=x.isPos=function(){return this.s>0};x.isZero=function(){return!!this.d&&this.d[0]===0};x.lessThan=x.lt=function(r){return this.cmp(r)<0};x.lessThanOrEqualTo=x.lte=function(r){return this.cmp(r)<1};x.logarithm=x.log=function(r){var e,t,n,i,o,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding,f=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(_=!1,a=m+f,s=nt(u,a),n=e?$t(l,a+10):nt(r,a),c=te(s,n,a,1),Tt(c.d,i=m,d))do if(a+=10,s=nt(u,a),n=e?$t(l,a+10):nt(r,a),c=te(s,n,a,1),!o){+ye(c.d).slice(i+1,i+15)+1==1e14&&(c=R(c,m+1,0));break}while(Tt(c.d,i+=10,d));return _=!0,R(c,m,d)};x.minus=x.sub=function(r){var e,t,n,i,o,s,a,c,u,l,m,d,f=this,g=f.constructor;if(r=new g(r),!f.d||!r.d)return!f.s||!r.s?r=new g(NaN):f.d?r.s=-r.s:r=new g(r.d||f.s!==r.s?f:NaN),r;if(f.s!=r.s)return r.s=-r.s,f.plus(r);if(u=f.d,d=r.d,a=g.precision,c=g.rounding,!u[0]||!d[0]){if(d[0])r.s=-r.s;else if(u[0])r=new g(f);else return new g(c===3?-0:0);return _?R(r,a,c):r}if(t=ke(r.e/E),l=ke(f.e/E),u=u.slice(),o=l-t,o){for(m=o<0,m?(e=u,o=-o,s=d.length):(e=d,t=l,s=u.length),n=Math.max(Math.ceil(a/E),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(u[n]!=d[n]){m=u[n]<d[n];break}o=0}for(m&&(e=u,u=d,d=e,r.s=-r.s),s=u.length,n=d.length-s;n>0;--n)u[s++]=0;for(n=d.length;n>o;){if(u[--n]<d[n]){for(i=n;i&&u[--i]===0;)u[i]=Fe-1;--u[i],u[n]+=Fe}u[n]-=d[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(r.d=u,r.e=tn(u,t),_?R(r,a,c):r):new g(c===3?-0:0)};x.modulo=x.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?R(new n(t),n.precision,n.rounding):(_=!1,n.modulo==9?(e=te(t,r.abs(),0,3,1),e.s*=r.s):e=te(t,r,0,n.modulo,1),e=e.times(r),_=!0,t.minus(e))};x.naturalExponential=x.exp=function(){return Sn(this)};x.naturalLogarithm=x.ln=function(){return nt(this)};x.negated=x.neg=function(){var r=new this.constructor(this);return r.s=-r.s,R(r)};x.plus=x.add=function(r){var e,t,n,i,o,s,a,c,u,l,m=this,d=m.constructor;if(r=new d(r),!m.d||!r.d)return!m.s||!r.s?r=new d(NaN):m.d||(r=new d(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(u=m.d,l=r.d,a=d.precision,c=d.rounding,!u[0]||!l[0])return l[0]||(r=new d(m)),_?R(r,a,c):r;if(o=ke(m.e/E),n=ke(r.e/E),u=u.slice(),i=o-n,i){for(i<0?(t=u,i=-i,s=l.length):(t=l,n=o,s=u.length),o=Math.ceil(a/E),s=o>s?o+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)/Fe|0,u[i]%=Fe;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return r.d=u,r.e=tn(u,n),_?R(r,a,c):r};x.precision=x.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(it+r);return t.d?(e=gi(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};x.round=function(){var r=this,e=r.constructor;return R(new e(r),r.e+1,e.rounding)};x.sine=x.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+E,n.rounding=1,t=Br(n,hi(n,t)),n.precision=r,n.rounding=e,R(Ye>2?t.neg():t,r,e,!0)):new n(NaN)};x.squareRoot=x.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(_=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=ye(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=ke((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(o=n,n=o.plus(te(s,o,t+2,1)).times(.5),ye(o.d).slice(0,t)===(e=ye(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(R(o,c+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(R(n,c+1,1),r=!n.times(n).eq(s));break}return _=!0,R(n,c,l.rounding,r)};x.tangent=x.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=te(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,R(Ye==2||Ye==4?t.neg():t,r,e,!0)):new n(NaN)};x.times=x.mul=function(r){var e,t,n,i,o,s,a,c,u,l=this,m=l.constructor,d=l.d,f=(r=new m(r)).d;if(r.s*=l.s,!d||!d[0]||!f||!f[0])return new m(!r.s||d&&!d[0]&&!f||f&&!f[0]&&!d?NaN:!d||!f?r.s/0:r.s*0);for(t=ke(l.e/E)+ke(r.e/E),c=d.length,u=f.length,c<u&&(o=d,d=f,f=o,s=c,c=u,u=s),o=[],s=c+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,i=c+n;i>n;)a=o[i]+f[n]*d[i-n-1]+e,o[i--]=a%Fe|0,e=a/Fe|0;o[i]=(o[i]+e)%Fe|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=tn(o,t),_?R(r,m.precision,m.rounding):r};x.toBinary=function(r,e){return Kn(this,2,r,e)};x.toDecimalPlaces=x.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Ce(r,0,rt),e===void 0?e=n.rounding:Ce(e,0,8),R(t,r+t.e+1,e))};x.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ue(n,!0):(Ce(r,0,rt),e===void 0?e=i.rounding:Ce(e,0,8),n=R(new i(n),r+1,e),t=Ue(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=Ue(i):(Ce(r,0,rt),e===void 0?e=o.rounding:Ce(e,0,8),n=R(new o(i),r+i.e+1,e),t=Ue(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};x.toFraction=function(r){var e,t,n,i,o,s,a,c,u,l,m,d,f=this,g=f.d,p=f.constructor;if(!g)return new p(f);if(u=t=new p(1),n=c=new p(0),e=new p(n),o=e.e=gi(g)-f.e-1,s=o%E,e.d[0]=fe(10,s<0?E+s:s),r==null)r=o>0?e:u;else{if(a=new p(r),!a.isInt()||a.lt(u))throw Error(it+a);r=a.gt(e)?o>0?e:u:a}for(_=!1,a=new p(ye(g)),l=p.precision,p.precision=o=g.length*E*2;m=te(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=u,u=c.plus(m.times(i)),c=i,i=e,e=a.minus(m.times(i)),a=i;return i=te(r.minus(t),n,0,1,1),c=c.plus(i.times(u)),t=t.plus(i.times(n)),c.s=u.s=f.s,d=te(u,n,o,1).minus(f).abs().cmp(te(c,t,o,1).minus(f).abs())<1?[u,n]:[c,t],p.precision=l,_=!0,d};x.toHexadecimal=x.toHex=function(r,e){return Kn(this,16,r,e)};x.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:Ce(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(_=!1,t=te(t,r,0,e,1).times(r),_=!0,R(t)):(r.s=t.s,t=r),t};x.toNumber=function(){return+this};x.toOctal=function(r,e){return Kn(this,8,r,e)};x.toPower=x.pow=function(r){var e,t,n,i,o,s,a=this,c=a.constructor,u=+(r=new c(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new c(fe(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,r.eq(1))return R(a,n,o);if(e=ke(r.e/E),e>=r.d.length-1&&(t=u<0?-u:u)<=kr)return i=bi(c,a,t,n),r.s<0?new c(1).div(i):R(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new c(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=fe(+a,u),e=t==0||!isFinite(t)?ke(u*(Math.log("0."+ye(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):(_=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Sn(r.times(nt(a,n+t)),n),i.d&&(i=R(i,n+5,1),Tt(i.d,n,o)&&(e=n+10,i=R(Sn(r.times(nt(a,e+t)),e),e+5,1),+ye(i.d).slice(n+1,n+15)+1==1e14&&(i=R(i,n+1,0)))),i.s=s,_=!0,c.rounding=o,R(i,n,o))};x.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=Ue(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ce(r,1,rt),e===void 0?e=i.rounding:Ce(e,0,8),n=R(new i(n),r,e),t=Ue(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toSignificantDigits=x.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Ce(r,1,rt),e===void 0?e=n.rounding:Ce(e,0,8)),R(new n(t),r,e)};x.toString=function(){var r=this,e=r.constructor,t=Ue(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};x.truncated=x.trunc=function(){return R(new this.constructor(this),this.e+1,1)};x.valueOf=x.toJSON=function(){var r=this,e=r.constructor,t=Ue(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function ye(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=E-n.length,t&&(o+=tt(t)),o+=n;s=r[e],n=s+"",t=E-n.length,t&&(o+=tt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ce(r,e,t){if(r!==~~r||r<e||r>t)throw Error(it+r)}function Tt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=E,i=0):(i=Math.ceil((e+1)/E),e%=E),o=fe(10,E-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==fe(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==fe(10,e-3)-1,s}function Yt(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=xn.indexOf(r.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 Tr(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/nn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=yt(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var te=function(){function r(n,i,o){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*i+a,n[c]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(n[a]!=i[a]){c=n[a]>i[a]?1:-1;break}return c}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,c){var u,l,m,d,f,g,p,y,b,h,w,k,T,P,A,B,N,O,L,Z,Q=n.constructor,ae=n.s==i.s?1:-1,ee=n.d,j=i.d;if(!ee||!ee[0]||!j||!j[0])return new Q(!n.s||!i.s||(ee?j&&ee[0]==j[0]:!j)?NaN:ee&&ee[0]==0||!j?ae*0:ae/0);for(c?(f=1,l=n.e-i.e):(c=Fe,f=E,l=ke(n.e/f)-ke(i.e/f)),L=j.length,N=ee.length,b=new Q(ae),h=b.d=[],m=0;j[m]==(ee[m]||0);m++);if(j[m]>(ee[m]||0)&&l--,o==null?(P=o=Q.precision,s=Q.rounding):a?P=o+(n.e-i.e)+1:P=o,P<0)h.push(1),g=!0;else{if(P=P/f+2|0,m=0,L==1){for(d=0,j=j[0],P++;(m<N||d)&&P--;m++)A=d*c+(ee[m]||0),h[m]=A/j|0,d=A%j|0;g=d||m<N}else{for(d=c/(j[0]+1)|0,d>1&&(j=r(j,d,c),ee=r(ee,d,c),L=j.length,N=ee.length),B=L,w=ee.slice(0,L),k=w.length;k<L;)w[k++]=0;Z=j.slice(),Z.unshift(0),O=j[0],j[1]>=c/2&&++O;do d=0,u=e(j,w,L,k),u<0?(T=w[0],L!=k&&(T=T*c+(w[1]||0)),d=T/O|0,d>1?(d>=c&&(d=c-1),p=r(j,d,c),y=p.length,k=w.length,u=e(p,w,y,k),u==1&&(d--,t(p,L<y?Z:j,y,c))):(d==0&&(u=d=1),p=j.slice()),y=p.length,y<k&&p.unshift(0),t(w,p,k,c),u==-1&&(k=w.length,u=e(j,w,L,k),u<1&&(d++,t(w,L<k?Z:j,k,c))),k=w.length):u===0&&(d++,w=[0]),h[m++]=d,u&&w[0]?w[k++]=ee[B]||0:(w=[ee[B]],k=1);while((B++<N||w[0]!==void 0)&&P--);g=w[0]!==void 0}h[0]||h.shift()}if(f==1)b.e=l,li=g;else{for(m=1,d=h[0];d>=10;d/=10)m++;b.e=m+l*f-1,R(b,a?o+b.e+1:o,s,g)}return b}}();function R(r,e,t,n){var i,o,s,a,c,u,l,m,d,f=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=E,s=e,l=m[d=0],c=l/fe(10,i-s-1)%10|0;else if(d=Math.ceil((o+1)/E),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=c=0,i=1,o%=E,s=o-E+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;o%=E,s=o-E+i,c=s<0?0:l/fe(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%fe(10,i-s-1)),u=t<4?(c||n)&&(t==0||t==(r.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(o>0?s>0?l/fe(10,i-s):0:m[d-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,u?(e-=r.e+1,m[0]=fe(10,(E-e%E)%E),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=fe(10,E-o),m[d]=s>0?(l/fe(10,i-s)%fe(10,s)|0)*a:0),u)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==Fe&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=Fe)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return _&&(r.e>f.maxE?(r.d=null,r.e=NaN):r.e<f.minE&&(r.e=0,r.d=[0])),r}function Ue(r,e,t){if(!r.isFinite())return wi(r);var n,i=r.e,o=ye(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+tt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+tt(-i-1)+o,t&&(n=t-s)>0&&(o+=tt(n))):i>=s?(o+=tt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+tt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=tt(n))),o}function tn(r,e){var t=r[0];for(e*=E;t>=10;t/=10)e++;return e}function $t(r,e,t){if(e>Ar)throw _=!0,t&&(r.precision=t),Error(mi);return R(new r(Qt),e,1,!0)}function Ee(r,e,t){if(e>In)throw Error(mi);return R(new r(Jt),e,t,!0)}function gi(r){var e=r.length-1,t=e*E+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function tt(r){for(var e="";r--;)e+="0";return e}function bi(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/E+4);for(_=!1;;){if(t%2&&(o=o.times(e),ci(o.d,s)&&(i=!0)),t=ke(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ci(e.d,s)}return _=!0,o}function ai(r){return r.d[r.d.length-1]&1}function yi(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Sn(r,e){var t,n,i,o,s,a,c,u=0,l=0,m=0,d=r.constructor,f=d.rounding,g=d.precision;if(!r.d||!r.d[0]||r.e>17)return new d(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(_=!1,c=g):c=e,a=new d(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(fe(2,m))/Math.LN10*2+5|0,c+=n,t=o=s=new d(1),d.precision=c;;){if(o=R(o.times(r),c,1),t=t.times(++l),a=s.plus(te(o,t,c,1)),ye(a.d).slice(0,c)===ye(s.d).slice(0,c)){for(i=m;i--;)s=R(s.times(s),c,1);if(e==null)if(u<3&&Tt(s.d,c-n,f,u))d.precision=c+=10,t=o=a=new d(1),l=0,u++;else return R(s,d.precision=g,f,_=!0);else return d.precision=g,s}s=a}}function nt(r,e){var t,n,i,o,s,a,c,u,l,m,d,f=1,g=10,p=r,y=p.d,b=p.constructor,h=b.rounding,w=b.precision;if(p.s<0||!y||!y[0]||!p.e&&y[0]==1&&y.length==1)return new b(y&&!y[0]?-1/0:p.s!=1?NaN:y?0:p);if(e==null?(_=!1,l=w):l=e,b.precision=l+=g,t=ye(y),n=t.charAt(0),Math.abs(o=p.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)p=p.times(r),t=ye(p.d),n=t.charAt(0),f++;o=p.e,n>1?(p=new b("0."+t),o++):p=new b(n+"."+t.slice(1))}else return u=$t(b,l+2,w).times(o+""),p=nt(new b(n+"."+t.slice(1)),l-g).plus(u),b.precision=w,e==null?R(p,w,h,_=!0):p;for(m=p,c=s=p=te(p.minus(1),p.plus(1),l,1),d=R(p.times(p),l,1),i=3;;){if(s=R(s.times(d),l,1),u=c.plus(te(s,new b(i),l,1)),ye(u.d).slice(0,l)===ye(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus($t(b,l+2,w).times(o+""))),c=te(c,new b(f),l,1),e==null)if(Tt(c.d,l-g,h,a))b.precision=l+=g,u=s=p=te(m.minus(1),m.plus(1),l,1),d=R(p.times(p),l,1),i=a=1;else return R(c,b.precision=w,h,_=!0);else return b.precision=w,c;c=u,i+=2}}function wi(r){return String(r.s*r.s/0)}function Cn(r,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,r.e=t=t-n-1,r.d=[],n=(t+1)%E,t<0&&(n+=E),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=E;n<i;)r.d.push(+e.slice(n,n+=E));e=e.slice(n),n=E-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),_&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function xr(r,e){var t,n,i,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),pi.test(e))return Cn(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(hr.test(e))t=16,e=e.toLowerCase();else if(wr.test(e))t=2;else if(Pr.test(e))t=8;else throw Error(it+e);for(o=e.search(/p/i),o>0?(c=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=bi(n,new n(t),o,o*2)),u=Yt(e,t,Fe),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(r.s*0):(r.e=tn(u,l),r.d=u,_=!1,s&&(r=te(r,i,a*4)),c&&(r=r.times(Math.abs(c)<54?fe(2,c):xt.pow(2,c))),_=!0,r)}function Br(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:yt(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/nn(5,t)),e=yt(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function yt(r,e,t,n,i){var o,s,a,c,u=1,l=r.precision,m=Math.ceil(l/E);for(_=!1,c=t.times(t),a=new r(n);;){if(s=te(a.times(c),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=te(s.times(c),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,u++}return _=!0,s.d.length=m+1,s}function nn(r,e){for(var t=r;--e;)t*=r;return t}function hi(r,e){var t,n=e.s<0,i=Ee(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Ye=n?4:1,e;if(t=e.divToInt(i),t.isZero())Ye=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Ye=ai(t)?n?2:3:n?4:1,e;Ye=ai(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Kn(r,e,t,n){var i,o,s,a,c,u,l,m,d,f=r.constructor,g=t!==void 0;if(g?(Ce(t,1,rt),n===void 0?n=f.rounding:Ce(n,0,8)):(t=f.precision,n=f.rounding),!r.isFinite())l=wi(r);else{for(l=Ue(r),s=l.indexOf("."),g?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new f(1),d.e=l.length-s,d.d=Yt(Ue(d),10,i),d.e=d.d.length),m=Yt(l,10,i),o=c=m.length;m[--c]==0;)m.pop();if(!m[0])l=g?"0p+0":"0";else{if(s<0?o--:(r=new f(r),r.d=m,r.e=o,r=te(r,d,t,n,0,i),m=r.d,o=r.e,u=li),s=m[t],a=i/2,u=u||m[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,u)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=xn.charAt(m[s]);if(g){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=Yt(l,i,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=xn.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>c)for(o-=c;o--;)l+="0";else o<c&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function ci(r,e){if(r.length>e)return r.length=e,!0}function Ir(r){return new this(r).abs()}function Sr(r){return new this(r).acos()}function Cr(r){return new this(r).acosh()}function Kr(r,e){return new this(r).plus(e)}function Nr(r){return new this(r).asin()}function Lr(r){return new this(r).asinh()}function Rr(r){return new this(r).atan()}function Mr(r){return new this(r).atanh()}function Or(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=Ee(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?Ee(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=Ee(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(te(r,e,o,1)),e=Ee(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(te(r,e,o,1)),t}function Er(r){return new this(r).cbrt()}function Fr(r){return R(r=new this(r),r.e+1,2)}function Dr(r,e,t){return new this(r).clamp(e,t)}function _r(r){if(!r||typeof r!="object")throw Error(en+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,rt,"rounding",0,8,"toExpNeg",-bt,0,"toExpPos",0,bt,"maxE",0,bt,"minE",-bt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Bn[t]),(n=r[t])!==void 0)if(ke(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(it+t+": "+n);if(t="crypto",i&&(this[t]=Bn[t]),(n=r[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(di);else this[t]=!1;else throw Error(it+t+": "+n);return this}function vr(r){return new this(r).cos()}function Wr(r){return new this(r).cosh()}function Pi(r){var e,t,n;function i(o){var s,a,c,u=this;if(!(u instanceof i))return new i(o);if(u.constructor=i,ui(o)){u.s=o.s,_?!o.d||o.e>i.maxE?(u.e=NaN,u.d=null):o.e<i.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;_?s>i.maxE?(u.e=NaN,u.d=null):s<i.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return Cn(u,o.toString())}else if(c!=="string")throw Error(it+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),pi.test(o)?Cn(u,o):xr(u,o)}if(i.prototype=x,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=_r,i.clone=Pi,i.isDecimal=ui,i.abs=Ir,i.acos=Sr,i.acosh=Cr,i.add=Kr,i.asin=Nr,i.asinh=Lr,i.atan=Rr,i.atanh=Mr,i.atan2=Or,i.cbrt=Er,i.ceil=Fr,i.clamp=Dr,i.cos=vr,i.cosh=Wr,i.div=qr,i.exp=Vr,i.floor=Ur,i.hypot=Gr,i.ln=Xr,i.log=zr,i.log10=jr,i.log2=Hr,i.max=Zr,i.min=Yr,i.mod=Qr,i.mul=Jr,i.pow=$r,i.random=eo,i.round=to,i.sign=no,i.sin=io,i.sinh=ro,i.sqrt=oo,i.sub=so,i.sum=ao,i.tan=co,i.tanh=uo,i.trunc=lo,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function qr(r,e){return new this(r).div(e)}function Vr(r){return new this(r).exp()}function Ur(r){return R(r=new this(r),r.e+1,3)}function Gr(){var r,e,t=new this(0);for(_=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return _=!0,new this(1/0);t=e}return _=!0,t.sqrt()}function ui(r){return r instanceof xt||r&&r.toStringTag===fi||!1}function Xr(r){return new this(r).ln()}function zr(r,e){return new this(r).log(e)}function Hr(r){return new this(r).log(2)}function jr(r){return new this(r).log(10)}function Zr(){return yi(this,arguments,"lt")}function Yr(){return yi(this,arguments,"gt")}function Qr(r,e){return new this(r).mod(e)}function Jr(r,e){return new this(r).mul(e)}function $r(r,e){return new this(r).pow(e)}function eo(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Ce(r,1,rt),n=Math.ceil(r/E),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(di);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=E,n&&r&&(i=fe(10,E-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=E)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<E&&(t-=E-n)}return s.e=t,s.d=a,s}function to(r){return R(r=new this(r),r.e+1,this.rounding)}function no(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function io(r){return new this(r).sin()}function ro(r){return new this(r).sinh()}function oo(r){return new this(r).sqrt()}function so(r,e){return new this(r).sub(e)}function ao(){var r=0,e=arguments,t=new this(e[r]);for(_=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return _=!0,R(t,this.precision,this.rounding)}function co(r){return new this(r).tan()}function uo(r){return new this(r).tanh()}function lo(r){return R(r=new this(r),r.e+1,1)}x[Symbol.for("nodejs.util.inspect.custom")]=x.toString;x[Symbol.toStringTag]="Decimal";var xt=x.constructor=Pi(Bn);Qt=new xt(Qt);Jt=new xt(Jt);var S=xt;import{PublicKey as Ti}from"@solana/web3.js";import{get as ki,set as mo}from"lodash";var Nn=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}},Ai={},fo={};function we(r){let e=ki(Ai,r);if(!e){let t=ki(fo,r);e=new Nn({name:r,logLevel:t}),mo(Ai,r,e)}return e}import{MINT_SIZE as po,TOKEN_PROGRAM_ID as go,getTransferFeeConfig as bo,unpackMint as yo}from"@solana/spl-token";var Ln=we("Raydium_accountInfo_util");async function Qe(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}={batchRequest:!1,...t},s=Rn(e,o),a=new Array(s.length).fill([]);if(n){let c=s.map(m=>{let d=r._buildArgs([m.map(f=>f.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:d}}),u=Rn(c,10);a=(await(await Promise.all(u.map(async m=>await r._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&Ln.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:f,executable:g,lamports:p,owner:y,rentEpoch:b}=d;return f.length!==2&&f[1]!=="base64"&&Ln.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(f[0],"base64"),executable:g,lamports:p,owner:new Ti(y),rentEpoch:b}}return null})))}else try{a=await Promise.all(s.map(c=>r.getMultipleAccountsInfo(c,i)))}catch(c){c instanceof Error&&Ln.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function ot(r,e,t){let n=await Qe(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>({...i,accountInfo:n[o]}))}async function xi({connection:r,mints:e,config:t}){var o,s,a;if(e.length===0)return{};let n=await ot(r,e.map(c=>({pubkey:ut(c)})),t),i={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<po){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=yo(c.pubkey,c.accountInfo,(o=c.accountInfo)==null?void 0:o.owner);i[c.pubkey.toString()]={...u,programId:((s=c.accountInfo)==null?void 0:s.owner)||go,feeConfig:(a=bo(u))!=null?a:void 0}}return i[Ti.default.toBase58()]=i[H.toBase58()],i}import Je from"bn.js";import Bo from"big.js";import sn from"bn.js";import wo from"toformat";var ho=wo,Bt=ho;import on from"big.js";import ko from"bn.js";import Ao from"decimal.js-light";import It from"bn.js";var Bi=9007199254740991;function ge(r){let e=we("Raydium_parseBigNumberish");if(r instanceof It)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new It(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Bi||r<=-Bi)&&e.logWithError(`BigNumberish number overflow: ${r}`),new It(String(r))):typeof r=="bigint"?new It(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new It(0))}var rn=we("module/fraction"),Mn=Bt(on),St=Bt(Ao),To={[0]:St.ROUND_DOWN,[1]:St.ROUND_HALF_UP,[2]:St.ROUND_UP},xo={[0]:on.roundDown,[1]:on.roundHalfUp,[2]:on.roundUp},Y=class{constructor(e,t=new ko(1)){this.numerator=ge(e),this.denominator=ge(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Y(this.denominator,this.numerator)}add(e){let t=e instanceof Y?e:new Y(ge(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.add(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Y?e:new Y(ge(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.sub(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Y?e:new Y(ge(e));return new Y(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Y?e:new Y(ge(e));return new Y(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||rn.logWithError(`${e} is not an integer.`),e<=0&&rn.logWithError(`${e} is not positive.`),St.set({precision:e+1,rounding:To[n]});let i=new St(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)||rn.logWithError(`${e} is not an integer.`),e<0&&rn.logWithError(`${e} is negative.`),Mn.DP=e,Mn.RM=xo[n]||1,new Mn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Io=we("Raydium_amount"),Ii=Bt(Bo);function So(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):Io.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var he=class extends Y{constructor(t,n,i=!0,o){let s=new sn(0),a=On.pow(new sn(t.decimals));if(i)s=ge(n);else{let c=new sn(0),u=new sn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=So(n.toString(),t.decimals);c=ge(l),u=ge(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=we(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new he(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new he(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 Ii.DP=this.token.decimals,new Ii(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Co}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Si}from"@solana/spl-token";var En={chainId:101,address:Co.default.toBase58(),programId:Si.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},st={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Si.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as vn}from"@solana/web3.js";import{PublicKey as oe,SystemProgram as Ci,SYSVAR_RENT_PUBKEY as Ko}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as No}from"@solana/spl-token";function Fn({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var aa=[Fn({pubkey:No,isWritable:!1}),Fn({pubkey:Ci.programId,isWritable:!1}),Fn({pubkey:Ko,isWritable:!1})];function Dn({publicKey:r,transformSol:e}){let t=Ki(r.toString());if(t instanceof oe)return e&&t.equals(Ct)?H:t;if(e&&t.toString()===Ct.toBase58())return H;if(typeof t=="string"){if(t===oe.default.toBase58())return oe.default;try{return new oe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ki(r){try{return new oe(r)}catch{return r}}var an=new oe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),_n=new oe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),wt=new oe("SysvarRent111111111111111111111111111111111"),ca=new oe("SysvarC1ock11111111111111111111111111111111"),lt=new oe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ua=new oe("Sysvar1nstructions1111111111111111111111111"),la=Ci.programId,ma=new oe("2cpMA1jNS4obgRz8XNg38QuSP83L1AXpUgfxPNcvnAGj"),da=new oe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),fa=new oe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),pa=new oe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ga=new oe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),ba=new oe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),ya=new oe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),wa=new oe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ha=new oe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Pa=new oe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ka=new oe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),H=new oe("So11111111111111111111111111111111111111112"),Ct=oe.default;function ut(r){return Dn({publicKey:r,transformSol:!0})}var Wn=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ct.toBase58()||e instanceof vn&&Ct.equals(e)){this.decimals=st.decimals,this.symbol=st.symbol,this.name=st.name,this.mint=new vn(st.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=o?vn.default:Dn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ge=Wn;Ge.WSOL=new Wn({...st,mint:st.address});var qn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},cn=qn;cn.SOL=new qn(En);import Lo from"bn.js";var Ni=new Y(new Lo(100)),at=class extends Y{toSignificant(e=5,t,n){return this.mul(Ni).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ni).toFixed(e,t,n)}};var Ro=we("Raydium_price"),De=class extends Y{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new Y(Vn(n.decimals),Vn(i.decimals))}get raw(){return new Y(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new De({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Ro.logWithError("mul token not equals");let n=super.mul(t);return new De({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)}};import{PublicKey as $a}from"@solana/web3.js";import tc from"bn.js";var Mo=new Je(0),hc=new Je(1),Pc=new Je(2),kc=new Je(3),Ac=new Je(5),On=new Je(10),Tc=new Je(100),xc=new Je(1e3),Bc=new Je(1e4);function Vn(r){return On.pow(ge(r))}function Rn(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as Wo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qo}from"@solana/spl-token";import{ComputeBudgetProgram as Li,Keypair as Mi,PublicKey as Oo,Transaction as Oi,TransactionMessage as Eo,VersionedTransaction as Ei}from"@solana/web3.js";var ce={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmCreateConfig:"CpmmCreateConfig",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee"};import{TOKEN_PROGRAM_ID as Fo}from"@solana/spl-token";var Ri=we("Raydium_txUtil"),Fi=1644;function un(r){let e=[],t=[];return r.microLamports&&(e.push(Li.setComputeUnitPrice({microLamports:r.microLamports})),t.push(ce.SetComputeUnitPrice)),r.units&&(e.push(Li.setComputeUnitLimit({units:r.units})),t.push(ce.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function ht(r,e){var n,i;let t=e!=null?e:"confirmed";return(i=await((n=r.getLatestBlockhash)==null?void 0:n.call(r,{commitment:t})))==null?void 0:i.blockhash}async function ln(r,e){return r.getSignatureStatuses([e]),new Promise((t,n)=>{let i=setTimeout(n,6e4);r.onSignature(e,o=>{if(clearTimeout(i),!o.err){t("");return}n(o.err.toString())},"confirmed")})}function Do(r,e){r.length<1&&Ri.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Ri.logWithError(`no signers provided:, ${e.toString()}`);let t=new Oi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Fi}catch{return!1}}function xe(r,e){let[t,n]=Oo.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Kt({instructions:r,payer:e,signers:t}){return Do(r,[e,...t])}function Nt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Mi.generate().publicKey.toString()}){let o=new Eo({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ei(o).serialize()).toString("base64").length<Fi}catch{return!1}}var _o=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),vo=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof Ei&&(e=_o(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function mt(r){let e=[];return r.forEach(t=>{t instanceof Oi&&(t.recentBlockhash||(t.recentBlockhash=Fo.toBase58()),t.feePayer||(t.feePayer=Mi.generate().publicKey)),e.push(vo(t))}),console.log("simulate tx string:",e),e}function Ae(r,e,t){return xe([r.toBuffer(),(t!=null?t:qo).toBuffer(),e.toBuffer()],new Wo("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as V}from"@solana/web3.js";var zc=new V("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Hc=new V("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),jc=new V("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Zc=new V("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Yc=new V("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Qc=new V("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Jc=new V("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),$c=new V("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),eu=new V("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),mn=new V("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Lt=new V("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),dn=new V("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),tu=new V("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),nu=new V("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),iu=new V("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),ru=new V("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ou=new V("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),su=new V("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),au=new V("SNaPnpKUY656VPwbKmKT8FG4T85g4VWhRH1B4TQUfKs"),cu=new V("9pR79Lqe6wDNjag3v8MeVYUostoXjY2ognTydor6AtEZ"),uu=new V("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Vo=new V("4AscABy58S62owbByjUUkQfZsP7fxYH1rDYb69V58HPM"),Uo=new V("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Go=new V("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),lu=new V("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Xo=new V("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),mu=new V("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),zo=new V("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var du={SERUM_MARKET:V.default,OPENBOOK_MARKET:new V("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:V.default,FarmV3:new V("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new V("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new V("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new V("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new V("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new V("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new V("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new V("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new V("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Vo,CREATE_CPMM_POOL_AUTH:Uo,CREATE_CPMM_POOL_FEE_ACC:Go,FEE_DESTINATION_ID:new V("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:Xo,LCOK_CPMM_AUTH:zo};import _e from"bn.js";var Rt=1e4;function ue(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i={...e,olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}},o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new _e(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Rt){let c=new _e(o.maximumFee.toString());return{amount:r.add(c),fee:c,expirationTime:a}}else{let c=Un(r.mul(new _e(Rt)),new _e(Rt-o.transferFeeBasisPoints)),u=new _e(o.maximumFee.toString()),l=c.sub(r).gt(u)?r.add(u):c,m=Un(l.mul(new _e(o.transferFeeBasisPoints)),new _e(Rt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let c=Un(r.mul(new _e(o.transferFeeBasisPoints)),new _e(Rt)),u=c.gt(s)?s:c;return{amount:r,fee:u,expirationTime:a}}}function ct(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Un(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new _e(0))?t.add(new _e(1)):t}import{PublicKey as Di,AddressLookupTableAccount as fn}from"@solana/web3.js";async function Gn({connection:r,address:e}){let t=await Qe(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Di(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new fn({key:s,state:fn.deserialize(o.data)});n[s.toString()]=a,pn[s.toString()]=a}return n}var pn={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new fn({key:new Di("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:fn.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};import{PublicKey as Mt,sendAndConfirmTransaction as Xn,Transaction as Ot,TransactionMessage as Et,VersionedTransaction as Ft}from"@solana/web3.js";import jo from"axios";var gn=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.api=e.api}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await jo.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}=un(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!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:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Mt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0({...t||{}}):this.build(t)}build(e){var n;let t=new Ot;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 u;let{recentBlockHash:o,skipPreflight:s=!0,sendAndConfirm:a}=i||{},c=o!=null?o:await ht(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),mt([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await Xn(this.connection,t,this.signers.find(m=>m.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(l=>l.transaction.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],c=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async l=>{var y;let{sequentially:m,onTxUpdate:d,recentBlockHash:f,skipPreflight:g=!0}=l||{},p=f!=null?f:await ht(this.connection,this.blockhashCommitment);if((y=this.owner)!=null&&y.isKeyPair){if(m){let b=[];for(let h of s){let w=await Xn(this.connection,h,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});b.push(w)}return{txIds:b,signedTxs:s}}return{txIds:await await Promise.all(s.map(async b=>(b.recentBlockhash=p,await this.connection.sendRawTransaction(b.serialize(),{skipPreflight:g})))),signedTxs:s}}if(this.signAllTransactions){let b=s.map((w,k)=>(w.recentBlockhash=p,a[k].length&&w.sign(...a[k]),w));mt(b);let h=await this.signAllTransactions(b);if(m){let w=0,k=[],T=async()=>{if(!h[w])return;let P=await this.connection.sendRawTransaction(h[w].serialize(),{skipPreflight:g});k.push({txId:P,status:"sent",signedTx:h[w]}),d==null||d([...k]),w++,this.connection.onSignature(P,A=>{let B=k.findIndex(N=>N.txId===P);B>-1&&(k[B].status=A.err?"error":"success"),d==null||d([...k]),A.err||T()},"processed"),this.connection.getSignatureStatus(P)};return await T(),{txIds:k.map(P=>P.txId),signedTxs:h}}else{let w=[];for(let k=0;k<h.length;k+=1){let T=await this.connection.sendRawTransaction(h[k].serialize(),{skipPreflight:g});w.push(T)}return{txIds:w,signedTxs:h}}}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 g;let{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:o,...s}=e||{},a={...this.cluster==="devnet"?{}:pn,...t},c=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of c)a[p]===void 0&&u.push(new Mt(p));let l=await Gn({connection:this.connection,address:u});for(let[p,y]of Object.entries(l))a[p]=y;let m=i?Mt.default.toBase58():o!=null?o:await ht(this.connection,this.blockhashCommitment),d=new Et({payerKey:this.feePayer,recentBlockhash:m,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((g=this.owner)==null?void 0:g.signer)&&!this.signers.some(p=>p.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let f=new Ft(d);return f.sign(this.signers),{builder:this,transaction:f,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var h;let{skipPreflight:y=!0,sendAndConfirm:b}=p||{};if(mt([f]),(h=this.owner)!=null&&h.isKeyPair){let w=await this.connection.sendTransaction(f,{skipPreflight:y});return b&&await ln(this.connection,w),{txId:w,signedTx:f}}if(this.signAllTransactions){let w=await this.signAllTransactions([f]);return{txId:await this.connection.sendTransaction(w[0],{skipPreflight:y}),signedTx:w[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),o=t.filter(l=>l.builder.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],c=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async l=>{var p;let{sequentially:m,onTxUpdate:d,recentBlockHash:f,skipPreflight:g=!0}=l||{};if(f&&s.forEach(y=>y.message.recentBlockhash=f),mt(s),(p=this.owner)!=null&&p.isKeyPair){if(m){let y=[];for(let b of s){let h=await this.connection.sendTransaction(b,{skipPreflight:g});await ln(this.connection,h),y.push(h)}return{txIds:y,signedTxs:s}}return{txIds:await Promise.all(s.map(async y=>await this.connection.sendTransaction(y,{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(m){let b=0,h=[],w=async()=>{if(!y[b])return;let k=await this.connection.sendTransaction(y[b],{skipPreflight:g});h.push({txId:k,status:"sent",signedTx:y[b]}),d==null||d([...h]),b++,this.connection.onSignature(k,T=>{let P=h.findIndex(A=>A.txId===k);P>-1&&(h[P].status=T.err?"error":"success"),d==null||d([...h]),T.err||w()},"processed"),this.connection.getSignatureStatus(k)};return w(),{txIds:[],signedTxs:y}}else{let b=[];for(let h=0;h<y.length;h+=1){let w=await this.connection.sendTransaction(y[h],{skipPreflight:g});b.push(w)}return{txIds:b,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var u;let{computeBudgetConfig:t,...n}=e||{},i=t?un(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>({...l,[m.publicKey.toBase58()]:m}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(l=>{let m=[...c,l],d=t?[...i.instructions,...m]:m,g=[...new Set(m.map(p=>p.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(p=>new Mt(p));if(c.length<12&&Kt({instructions:d,payer:this.feePayer,signers:g})||Kt({instructions:m,payer:this.feePayer,signers:g}))c.push(l);else{if(c.length===0)throw Error("item ins too big");Kt({instructions:t?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:g})?s.push(new Ot().add(...i.instructions,...c)):s.push(new Ot().add(...c)),a.push(Array.from(new Set(c.map(p=>p.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat())).map(p=>o[p]).filter(p=>p!==void 0)),c=[l]}}),c.length>0){let m=[...new Set(c.map(d=>d.keys.filter(f=>f.isSigner).map(f=>f.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);Kt({instructions:t?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new Ot().add(...i.instructions,...c)):s.push(new Ot().add(...c)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||l.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var y;let{sequentially:m,onTxUpdate:d,recentBlockHash:f,skipPreflight:g=!0}=l||{},p=f!=null?f:await ht(this.connection,this.blockhashCommitment);if(s.forEach(async(b,h)=>{b.recentBlockhash=p,a[h].length&&b.sign(...a[h])}),mt(s),(y=this.owner)!=null&&y.isKeyPair){if(m){let b=[];for(let h of s){let w=await Xn(this.connection,h,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});b.push(w)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>await this.connection.sendRawTransaction(b.serialize(),{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(m){let h=0,w=[],k=async()=>{if(!b[h])return;let T=await this.connection.sendRawTransaction(b[h].serialize(),{skipPreflight:g});w.push({txId:T,status:"sent",signedTx:b[h]}),d==null||d([...w]),h++,this.connection.onSignature(T,P=>{let A=w.findIndex(B=>B.txId===T);A>-1&&(w[A].status=P.err?"error":"success"),d==null||d([...w]),P.err||k()},"processed"),this.connection.getSignatureStatus(T)};return await k(),{txIds:w.map(T=>T.txId),signedTxs:b}}else{let h=[];for(let w=0;w<b.length;w+=1){let k=await this.connection.sendRawTransaction(b[w].serialize(),{skipPreflight:g});h.push(k)}return{txIds:h,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){var y;let{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[],...o}=e||{},s={...this.cluster==="devnet"?{}:pn,...n},a=Array.from(new Set([...this.lookupTableAddress,...i])),c=[];for(let b of a)s[b]===void 0&&c.push(new Mt(b));let u=await Gn({connection:this.connection,address:c});for(let[b,h]of Object.entries(u))s[b]=h;let l=t?un(t):{instructions:[],instructionTypes:[]},m=await ht(this.connection,this.blockhashCommitment),d=this.signers.reduce((b,h)=>({...b,[h.publicKey.toBase58()]:h}),{}),f=[],g=[],p=[];if(this.allInstructions.forEach(b=>{let h=[...p,b],w=t?[...l.instructions,...h]:h;if(p.length<12&&Nt({instructions:w,payer:this.feePayer,lookupTableAddressAccount:s})||Nt({instructions:h,payer:this.feePayer,lookupTableAddressAccount:s}))p.push(b);else{if(p.length===0)throw Error("item ins too big");let k={};for(let T of[...new Set(a)])s[T]!==void 0&&(k[T]=s[T]);if(t&&Nt({instructions:[...l.instructions,...p],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new Et({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...p]}).compileToV0Message(Object.values(s));f.push(new Ft(T))}else{let T=new Et({payerKey:this.feePayer,recentBlockhash:m,instructions:[...p]}).compileToV0Message(Object.values(s));f.push(new Ft(T))}g.push(Array.from(new Set(p.map(T=>T.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat())).map(T=>d[T]).filter(T=>T!==void 0)),p=[b]}}),p.length>0){let h=[...new Set(p.map(w=>w.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(w=>d[w]).filter(w=>w!==void 0);if(t&&Nt({instructions:[...l.instructions,...p],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let w=new Et({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...p]}).compileToV0Message(Object.values(s));f.push(new Ft(w))}else{let w=new Et({payerKey:this.feePayer,recentBlockhash:m,instructions:[...p]}).compileToV0Message(Object.values(s));f.push(new Ft(w))}g.push(h)}return(y=this.owner)!=null&&y.signer&&g.forEach(b=>{b.some(h=>h.publicKey.equals(this.owner.publicKey))||b.push(this.owner.signer)}),{builder:this,transactions:f,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async b=>{var P;let{sequentially:h,onTxUpdate:w,recentBlockHash:k,skipPreflight:T=!0}=b||{};if(f.map(async(A,B)=>{g[B].length&&A.sign(g[B]),k&&(A.message.recentBlockhash=k)}),mt(f),(P=this.owner)!=null&&P.isKeyPair){if(h){let A=[];for(let B of f){let N=await this.connection.sendTransaction(B,{skipPreflight:T});await ln(this.connection,N),A.push(N)}return{txIds:A,signedTxs:f}}return{txIds:await Promise.all(f.map(async A=>await this.connection.sendTransaction(A,{skipPreflight:T}))),signedTxs:f}}if(this.signAllTransactions){let A=await this.signAllTransactions(f);if(h){let B=0,N=[],O=async()=>{if(!A[B])return;let L=await this.connection.sendTransaction(A[B],{skipPreflight:T});N.push({txId:L,status:"sent",signedTx:A[B]}),w==null||w([...N]),B++,this.connection.onSignature(L,Z=>{let Q=N.findIndex(ae=>ae.txId===L);Q>-1&&(N[Q].status=Z.err?"error":"success"),w==null||w([...N]),Z.err||O()},"processed"),this.connection.getSignatureStatus(L)};return O(),{txIds:[],signedTxs:A}}else{let B=[];for(let N=0;N<A.length;N+=1){let O=await this.connection.sendTransaction(A[N],{skipPreflight:T});B.push(O)}return{txIds:B,signedTxs:A}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};import{AccountLayout as pr,TOKEN_PROGRAM_ID as jt}from"@solana/spl-token";import{PublicKey as Qu}from"@solana/web3.js";import{MintLayout as $u,TOKEN_PROGRAM_ID as tl}from"@solana/spl-token";var bn=({address:r,programId:e,decimals:t,...n})=>({chainId:101,address:ut(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{},...n}),zn=r=>r?{...r,transferFeeConfigAuthority:r.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:r.withdrawWithheldAuthority.toBase58(),withheldAmount:r.withheldAmount.toString(),olderTransferFee:{...r.olderTransferFee,epoch:r.olderTransferFee.epoch.toString(),maximumFee:r.olderTransferFee.maximumFee.toString()},newerTransferFee:{...r.newerTransferFee,epoch:r.newerTransferFee.epoch.toString(),maximumFee:r.newerTransferFee.maximumFee.toString()}}:void 0;var Hn=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Dt=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=we(t)}createTxBuilder(e){return this.scope.checkOwner(),new gn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Hn(e))}logInfo(...e){this.logger.info(Hn(e))}logAndCreateError(...e){let t=Hn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{Keypair as An,PublicKey as I,SystemProgram as gt,TransactionInstruction as Se}from"@solana/web3.js";import lr from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as oi,TOKEN_2022_PROGRAM_ID as Ze,TOKEN_PROGRAM_ID as ie}from"@solana/spl-token";import{PublicKey as is}from"@solana/web3.js";import qi,{isBN as Vi}from"bn.js";import{bits as dl,BitStructure as fl,blob as Zo,Blob as pl,cstr as gl,f32 as bl,f32be as yl,f64 as wl,f64be as hl,greedy as Pl,Layout as Yo,ns64 as kl,ns64be as Al,nu64 as Tl,nu64be as xl,offset as Bl,s16 as Il,s16be as Sl,s24 as Cl,s24be as Kl,s32 as Qo,s32be as Nl,s40 as Ll,s40be as Rl,s48 as Ml,s48be as Ol,s8 as El,seq as Jo,struct as Fl,Structure as $o,u16 as es,u16be as Dl,u24 as _l,u24be as vl,u32 as Wl,u32be as ql,u40 as Vl,u40be as Ul,u48 as Gl,u48be as Xl,u8 as ts,UInt as ns,union as zl,Union as Hl,unionLayoutDiscriminator as jl,utf8 as Zl}from"@solana/buffer-layout";var jn=Yo,_i=$o;var Zn=ns;var vi=ts,_t=es;var Pe=Qo;var Wi=Jo;var Ne=Zo;var Pt=class extends jn{constructor(t,n,i){super(t,i);this.blob=Ne(t),this.signed=n}decode(t,n=0){let i=new qi(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 qi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function me(r){return new Zn(1,r)}function kt(r){return new Zn(4,r)}function M(r){return new Pt(8,!1,r)}function X(r){return new Pt(16,!1,r)}function Ui(r){return new Pt(8,!0,r)}function Gi(r){return new Pt(16,!0,r)}var yn=class extends jn{constructor(t,n,i,o){super(t.span,o);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 J(r){return new yn(Ne(32),e=>new is(e),e=>e.toBuffer(),r)}function ve(r){return new yn(vi(),rs,os,r)}function rs(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function os(r){return r?1:0}var Yn=class extends _i{decode(e,t){return super.decode(e,t)}};function $(r,e,t){return new Yn(r,e,t)}function se(r,e,t){let n,i=typeof e=="number"?e:Vi(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Vi(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return Wi(r,i,t)}import gs from"bn.js";import Re from"bn.js";var le=new Re(0),Xe=new Re(1),$e=new Re(-1),Le=new Re(1).shln(64),wn=new Re(1).shln(128),Qn=Le.sub(Xe),vt=64,Xi=wn.subn(1),Te=-443636,Be=-Te,ze=new Re("4295048016"),He=new Re("79226673521066979257578248091"),um=new Re("4295048017"),lm=new Re("79226673521066979257578248090"),zi=16,Hi="59543866431248",ji="184467440737095516",Zi="15793534762490258745",hn=new Re(10).pow(new Re(6));var Yi={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},mm=new Re("18446744073700000000");import q from"bn.js";function Pn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Jn(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function $n(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Wt(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Qi(r,e){return Wt(r,e)?null:Jn(r,e)}function Ji(r,e){return Wt(r,e)?null:$n(r,e)}var ym=Buffer.from("amm_config","utf8"),ss=Buffer.from("pool","utf8"),as=Buffer.from("pool_vault","utf8"),cs=Buffer.from("pool_reward_vault","utf8"),$i=Buffer.from("position","utf8"),us=Buffer.from("tick_array","utf8"),ls=Buffer.from("operation","utf8"),ms=Buffer.from("pool_tick_array_bitmap_extension","utf8"),ds=Buffer.from("observation","utf8");function er(r,e,t,n){return xe([ss,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function ei(r,e,t){return xe([as,e.toBuffer(),t.toBuffer()],r)}function tr(r,e,t){return xe([cs,e.toBuffer(),t.toBuffer()],r)}function U(r,e,t){return xe([us,e.toBuffer(),Pn(t)],r)}function We(r,e,t,n){return xe([$i,e.toBuffer(),Pn(t),Pn(n)],r)}function Ie(r,e){return xe([$i,e.toBuffer()],r)}function qt(r){return xe([Buffer.from("metadata","utf8"),lt.toBuffer(),r.toBuffer()],lt)}function Vt(r){return xe([ls],r)}function Me(r,e){return xe([ms,e.toBuffer()],r)}function nr(r,e){return xe([ds,e.toBuffer()],r)}var ir=Buffer.from("locked_position","utf8");function ti(r,e){return xe([ir,e.toBuffer()],r)}function Ut(r,e){return xe([ir,e.toBuffer()],r)}import{PublicKey as qe}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as rr}from"@solana/spl-token";import ne from"bn.js";import je from"bn.js";var Gt=class{static getfeeGrowthInside(e,t,n){let i=new je(0),o=new je(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new je(0),a=new je(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=D.wrappingSubU128(D.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),u=D.wrappingSubU128(D.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=D.mulDivFloor(D.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Le),c=t.tokenFeesOwedA.add(a),u=D.mulDivFloor(D.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Le),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=D.mulDivFloor(D.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Le),c=t.tokenFeesOwedA.add(a),u=D.mulDivFloor(D.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Le),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],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=D.wrappingSubU128(c,u.growthInsideLastX64),m=D.mulDivFloor(l,t.liquidity,Le),d=u.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,i){let o=[],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=D.wrappingSubU128(c,u.growthInsideLastX64),m=D.mulDivFloor(l,t.liquidity,Le),d=u.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new je(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 je(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(D.wrappingSubU128(D.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new je(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 je(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(D.wrappingSubU128(D.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var y,b,h,w;let a=F.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),c=F.getSqrtPriceX64FromTick(t.tickLower),u=F.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=z.getAmountsFromLiquidity(a,c,u,n,o),[d,f]=[ue(m.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),ue(m.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,s,!0)],[g,p]=[ue(new je(new S(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),ue(new je(new S(m.amountB.toString()).mul(l).toFixed(0)),(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:f,amountSlippageA:g,amountSlippageB:p,expirationTime:ct(d.expirationTime,f.expirationTime)}}};var fs=15,G=class{static async getTickArrays(e,t,n,i,o,s,a){let c=[],u=K.getTickArrayStartIndexByTick(i,o),l=K.getInitializedTickArrayInRange(s,a,o,u,Math.floor(fs/2));for(let f=0;f<l.length;f++){let{publicKey:g}=U(t,n,l[f]);c.push(g)}let m=(await Qe(e,c)).map(f=>f!==null?Xt.decode(f.data):null),d={};for(let f=0;f<c.length;f++){let g=m[f];g!==null&&(d[g.startTickIndex]={...g,address:c[f]})}return d}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(u=K.getNextTickArrayStartIndex(u,o,s),this.checkIsValidStartIndex(u,o))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:f}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[m,d,f]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/G.tickCount(t)),a=n?K.searchLowBitFromStart(i,o,s-1,1,t):K.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=pe-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a-1}}else{let a=0;for(;a<pe;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=U(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=K.getTickArrayStartIndexByTick(i,o),c=Math.floor((i-a)/o),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c-1}else for(c=c+1;c<pe;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c+1}let{publicKey:m}=U(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(K.checkIsOutOfBoundary(e)){if(e>Be)return!1;let n=K.getTickArrayStartIndexByTick(Te,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return pe*e}};var ni=14,et=class{static maxTickInTickarrayBitmap(e){return e*pe*dt}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 o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!G.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-G.tickCount(n):t+G.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*pe,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(i){let l=e.shln(1024-u-1),m=Qi(1024,l);if(m!==null){let d=(u-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),m=Ji(1024,l);if(m!==null){let d=(u+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-G.tickCount(n)}}}},zt=class{static getBitmapOffset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=et.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=et.maxTickInTickarrayBitmap(e),n=-t;if(Be<=t)throw Error(`extensionTickBoundary check error: ${Be}, ${t}`);if(n<=Te)throw Error(`extensionTickBoundary check error: ${n}, ${Te}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:K.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=G.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=et.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let c=K.mergeTickArrayBitmap(e).shln(dt-1-a),u=Wt(512,c)?null:Jn(512,c);if(u!==null){let l=t-u*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=K.mergeTickArrayBitmap(e).shrn(a),u=Wt(512,c)?null:$n(512,c);if(u!==null){let l=t+u*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-G.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%et.maxTickInTickarrayBitmap(t),i=Math.floor(n/G.tickCount(t));return e<0&&n!=0&&(i=dt-i),i}};var de=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!u||l===void 0||!m)throw new Error("Invalid tick array");c.push(m);let{allTrade:d,amountCalculated:f,accounts:g,sqrtPriceX64:p,feeAmount:y}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,l,o,s);return c.push(...g),{allTrade:d,expectedAmountOut:f.mul($e),remainingAccounts:c,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let p=this.preInitializedTickArrayStartIndex(e,s);if(p.isExist){let{publicKey:y}=U(e.programId,e.id,p.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:f,feeAmount:g}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul($e),u,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:f,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=de.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?zt.checkTickArrayIsInit(G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):K.checkTickArrayIsInitialized(K.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=U(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=U(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/G.tickCount(e.tickSpacing)),i=t?K.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):K.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=G.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=et.nextInitializedTickArrayStartIndex(K.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=zt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Te||t>Be)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,c,u;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(m.tokenMint))==null?void 0:c.owner;if(d===void 0)throw Error("get new reward mint info error");let f={...m,perSecond:D.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new qe(d)};if(f.tokenMint.equals(qe.default))continue;if(n<=f.openTime.toNumber()||i.eq(le)){s.push(f);continue}let g=new ne(Math.min(f.endTime.toNumber(),n)),p=g.sub(f.lastUpdateTime),y=D.mulDivFloor(p,f.emissionsPerSecondX64,i),b=f.rewardGrowthGlobalX64.add(y),h=D.mulDivFloor(p,f.emissionsPerSecondX64,Le),w=f.rewardTotalEmissioned.add(h);s.push({...f,rewardGrowthGlobalX64:b,rewardTotalEmissioned:w,lastUpdateTime:g})}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=K.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=et.maxTickInTickarrayBitmap(e),n=-t;return t>Be&&(t=G.getArrayStartIndex(Be,e)+G.tickCount(e)),n<Te&&(n=G.getArrayStartIndex(Te,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/G.tickCount(t)*dt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await ot(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=sr.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let c of t){let u=K.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=K.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let m of l){let{publicKey:d}=U(c.programId,c.id,m);o.push({pubkey:d}),i[d.toString()]=c.id}}let s=await ot(e,o,{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=Xt.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]={...l,address:c.pubkey}}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(d=>d.accountInfo.mint),u=[];for(let d of c)for(let f of s)u.push(Ie(f,d).publicKey);let l=await Qe(t,u,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let f=Ht.decode(d.data),g=f.poolId.toString(),p=e.find(B=>B.state.id.toBase58()===g);if(p===void 0)continue;let y=p.state,b=K._getTickPriceLegacy({poolInfo:y,tick:f.tickLower,baseIn:!0}),h=K._getTickPriceLegacy({poolInfo:y,tick:f.tickUpper,baseIn:!0}),{amountA:w,amountB:k}=z.getAmountsFromLiquidity(y.sqrtPriceX64,b.tickSqrtPriceX64,h.tickSqrtPriceX64,f.liquidity,!1),T=1/(1-Math.sqrt(Math.sqrt(b.price.div(h.price).toNumber())));p.positionAccount=[...(a=p.positionAccount)!=null?a:[],{poolId:f.poolId,nftMint:f.nftMint,priceLower:b.price,priceUpper:h.price,amountA:w,amountB:k,tickLower:f.tickLower,tickUpper:f.tickUpper,liquidity:f.liquidity,feeGrowthInsideLastX64A:f.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:f.feeGrowthInsideLastX64B,tokenFeesOwedA:f.tokenFeesOwedA,tokenFeesOwedB:f.tokenFeesOwedB,rewardInfos:f.rewardInfos.map(B=>({...B,pendingReward:new ne(0)})),leverage:T,tokenFeeAmountA:new ne(0),tokenFeeAmountB:new ne(0)}];let P=await K.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickLower,p.state.tickSpacing),A=await K.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickUpper,p.state.tickSpacing);m[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickLower}`]=P,m[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickUpper}`]=A}if(o){let d=Object.values(m),f=await Qe(t,d,{batchRequest:i}),g={};for(let p=0;p<d.length;p++){let y=f[p];if(y===null)continue;let b=d[p].toString();g[b]=Xt.decode(y.data)}for(let{state:p,positionAccount:y}of e)if(!!y)for(let b of y){let h=`${p.programId.toString()}-${p.id.toString()}-${b.tickLower}`,w=`${p.programId.toString()}-${p.id.toString()}-${b.tickUpper}`,k=g[m[h].toString()],T=g[m[w].toString()],P=k.ticks[K.getTickOffsetInArray(b.tickLower,p.tickSpacing)],A=T.ticks[K.getTickOffsetInArray(b.tickUpper,p.tickSpacing)],{tokenFeeAmountA:B,tokenFeeAmountB:N}=await Gt.GetPositionFees(p,b,P,A),O=await Gt.GetPositionRewards(p,b,P,A);b.tokenFeeAmountA=B.gte(new ne(0))?B:new ne(0),b.tokenFeeAmountB=N.gte(new ne(0))?N:new ne(0);for(let L=0;L<O.length;L++)b.rewardInfos[L].pendingReward=O[L].gte(new ne(0))?O[L]:new ne(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new S(0),catchLiquidityInsufficient:c=!1}){var Z;let u,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new S(0))?u=l?ze.add(new ne(1)):He.sub(new ne(1)):u=F.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let f=ue(o,m,i,!1),{allTrade:g,expectedAmountOut:p,remainingAccounts:y,executionPrice:b,feeAmount:h}=de.getOutputAmountAndRemainAccounts(e,t,n,f.amount.sub((Z=f.fee)!=null?Z:le),u,c),w=ue(p,d,i,!1),k=F.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),T=l?k:new S(1).div(k),P=p.mul(new ne(Math.floor((1-s)*1e10))).div(new ne(1e10)),A=ue(P,d,i,!1),B=l?e.currentPrice:new S(1).div(e.currentPrice),N=new S(T).sub(B).abs(),O=B,L=new at(new S(N).mul(10**15).toFixed(0),new S(O).mul(10**15).toFixed(0));return{allTrade:g,realAmountIn:f,amountOut:w,minAmountOut:A,expirationTime:ct(f.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:T,priceImpact:L,fee:h,remainingAccounts:y,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=i.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new Ge({...u,mint:u.address,isToken2022:u.programId===rr.toBase58()}),new Ge({...l,mint:l.address,isToken2022:l.programId===rr.toBase58()})],{allTrade:f,realAmountIn:g,amountOut:p,minAmountOut:y,expirationTime:b,currentPrice:h,executionPrice:w,priceImpact:k,fee:T,remainingAccounts:P,executionPriceX64:A}=de.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new qe(u.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),B={...g,amount:new he(m,g.amount),fee:g.fee===void 0?void 0:new he(m,g.fee)},N={...p,amount:new he(d,p.amount),fee:p.fee===void 0?void 0:new he(d,p.fee)},O={...y,amount:new he(d,y.amount),fee:y.fee===void 0?void 0:new he(d,y.fee)},L=new De({baseToken:m,denominator:new ne(10).pow(new ne(20+m.decimals)),quoteToken:d,numerator:h.mul(new S(10**(20+d.decimals))).toFixed(0)}),Z=new De({baseToken:m,denominator:new ne(10).pow(new ne(20+m.decimals)),quoteToken:d,numerator:w.mul(new S(10**(20+d.decimals))).toFixed(0)}),Q=new he(m,T);return{allTrade:f,realAmountIn:B,amountOut:N,minAmountOut:O,expirationTime:b,currentPrice:L,executionPrice:Z,priceImpact:k,fee:Q,remainingAccounts:P,executionPriceX64:A}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountOut:o,slippage:s,priceLimit:a=new S(0)}){var O;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?He.sub(new ne(1)):ze.add(new ne(1)):l=F.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let m=ue(o,u[n.toString()],i,!0),{expectedAmountIn:d,remainingAccounts:f,executionPrice:g,feeAmount:p}=de.getInputAmountAndRemainAccounts(e,t,n,m.amount.sub((O=m.fee)!=null?O:le),l),y=c?e.mintB.address:e.mintA.address,b=ue(d,u[y],i,!1),h=F.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),w=c?h:new S(1).div(h),k=d.mul(new ne(Math.floor((1+s)*1e10))).div(new ne(1e10)),T=ue(k,u[y],i,!0),P=c?e.currentPrice:new S(1).div(e.currentPrice),A=new S(w).sub(P).abs(),B=P,N=new at(new S(A).mul(10**15).toFixed(0),new S(B).mul(10**15).toFixed(0));return{amountIn:b,maxAmountIn:T,realAmountOut:m,expirationTime:ct(b.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:w,priceImpact:N,fee:p,remainingAccounts:f}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var g,p,y;let o=e[t],s=K.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=K.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,m=a-s,d=o.priceMax-o.priceMin,f;return l<=0?f=0:m===l?f=d/l:d===l?f=l/m:f=l/d*(l/m),{feeApr:o.feeApr*f,rewardsApr:[((g=o.rewardApr[0])!=null?g:0)*f,((p=o.rewardApr[1])!=null?p:0)*f,((y=o.rewardApr[2])!=null?y:0)*f],apr:o.apr*f}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[ut(e.mintA.address).toString()],d=i[ut(e.mintB.address).toString()],f=e.mintA.decimals,g=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let p=F.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),y=F.getSqrtPriceX64FromTick(s),b=F.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:w}=z.getAmountsFromLiquidityWithSlippage(p,y,b,t,!1,!1,0),{amountSlippageA:k,amountSlippageB:T}=z.getAmountsFromLiquidityWithSlippage(p,y,b,o,!1,!1,0),P=new S(h.toString()).div(new S(10).pow(f)).mul(m.value).add(new S(w.toString()).div(new S(10).pow(g)).mul(d.value)),A=new S(k.toString()).div(new S(10).pow(f)).mul(m.value).add(new S(T.toString()).div(new S(10).pow(g)).mul(d.value)),B=new S(1).div(P.add(A)),O=new S(l.volumeFee).mul(365).div(u).mul(B).mul(100).toNumber(),L=3600*24*365,Z=e.rewardDefaultInfos.map(Q=>{var j,At;let ae=Q.mint.decimals,ee=i[Q.mint.address];return c<((j=Q.startTime)!=null?j:0)||c>((At=Q.endTime)!=null?At:0)||!Q.perSecond||!ee||ae===void 0?0:new S(ee.value).mul(new S(Q.perSecond).mul(L)).div(new S(10).pow(ae)).mul(B).mul(100).toNumber()});return{feeApr:O,rewardsApr:Z,apr:O+Z.reduce((Q,ae)=>Q+ae,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var b,h;let l=F.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),m=F.getSqrtPriceX64FromTick(n),d=F.getSqrtPriceX64FromTick(i),f=a?1-s:1+s,g=ue(o,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,c,!u),p=new ne(new S(g.amount.sub((h=g.fee)!=null?h:le).toString()).mul(f).toFixed(0)),y;if(l.lte(m))y=t?z.getLiquidityFromTokenAmountA(m,d,p,!a):new ne(0);else if(l.lte(d)){let w=z.getLiquidityFromTokenAmountA(l,d,p,!a),k=z.getLiquidityFromTokenAmountB(m,l,p);y=t?w:k}else y=t?new ne(0):z.getLiquidityFromTokenAmountB(m,d,p);return de.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:i,liquidity:y,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var y,b,h,w;let c=F.getSqrtPriceX64FromTick(n),u=F.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=z.getAmountsFromLiquidity(F.priceToSqrtPriceX64(new S(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[d,f]=[ue(m.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),ue(m.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[g,p]=[ue(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),ue(m.amountB.muln(l),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:f,amountSlippageA:g,amountSlippageB:p,expirationTime:ct(d.expirationTime,f.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(c=>!n[c.id]).map(c=>new qe(c.id));(await Qe(e,i)).forEach((c,u)=>{!c||(n[i[u].toBase58()]=kn.decode(c.data))});let s=t.map(c=>Me(new qe(c.programId),new qe(c.id)).publicKey),a=await de.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>({...c,[u.id]:{...n[u.id],id:new qe(u.id),version:6,programId:new qe(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:{...u.config,id:new qe(u.config.id),fundOwner:""},currentPrice:new S(u.price),exBitmapInfo:a[Me(new qe(u.programId),new qe(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 ii={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function or(r){return{...r,type:"Concentrated",programId:r.programId.toString(),id:r.id.toString(),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Clmm",price:r.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:r.ammConfig.tradeFeeRate,openTime:r.startTime.toString(),tvl:0,day:ii,week:ii,month:ii,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,burnPercent:0,config:{...r.ammConfig,id:r.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}}}var D=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(le)||(o=o.add(Xe)),o}static mulDivFloor(e,t,n){if(n.eq(le))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(le))throw new Error("division by 0");return e.mul(t).add(n.sub(Xe)).div(n)}static x64ToDecimal(e,t){return new S(e.toString()).div(S.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new q(e.mul(S.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(wn).sub(t).mod(wn)}};function be(r,e){return ri(r.mul(e),64,256)}function ps(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function ri(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var F=class{static sqrtPriceX64ToPrice(e,t,n){return D.x64ToDecimal(e).pow(2).mul(S.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return D.decimalToX64(e.mul(S.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(le))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(le))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(le))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(le))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(le))return e;let o=t.shln(vt);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?D.mulDivCeil(s,e,a):D.mulDivRoundingUp(s,Xe,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return D.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(vt);if(i)return e.add(o.div(t));{let s=D.mulDivRoundingUp(o,Xe,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<Te||e>Be)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new q("18445821805675395072"):new q("18446744073709551616");return(t&2)!=0&&(n=be(n,new q("18444899583751176192"))),(t&4)!=0&&(n=be(n,new q("18443055278223355904"))),(t&8)!=0&&(n=be(n,new q("18439367220385607680"))),(t&16)!=0&&(n=be(n,new q("18431993317065453568"))),(t&32)!=0&&(n=be(n,new q("18417254355718170624"))),(t&64)!=0&&(n=be(n,new q("18387811781193609216"))),(t&128)!=0&&(n=be(n,new q("18329067761203558400"))),(t&256)!=0&&(n=be(n,new q("18212142134806163456"))),(t&512)!=0&&(n=be(n,new q("17980523815641700352"))),(t&1024)!=0&&(n=be(n,new q("17526086738831433728"))),(t&2048)!=0&&(n=be(n,new q("16651378430235570176"))),(t&4096)!=0&&(n=be(n,new q("15030750278694412288"))),(t&8192)!=0&&(n=be(n,new q("12247334978884435968"))),(t&16384)!=0&&(n=be(n,new q("8131365268886854656"))),(t&32768)!=0&&(n=be(n,new q("3584323654725218816"))),(t&65536)!=0&&(n=be(n,new q("696457651848324352"))),(t&131072)!=0&&(n=be(n,new q("26294789957507116"))),(t&262144)!=0&&(n=be(n,new q("37481735321082"))),e>0&&(n=Xi.div(n)),n}static getTickFromPrice(e,t,n){return F.getTickFromSqrtPriceX64(F.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(He)||e.lt(ze))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new q(t-64),i=ps(n,32,128),o=new q("8000000000000000","hex"),s=0,a=new q(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new q(0))&&s<zi;){c=c.mul(c);let g=c.shrn(127);c=c.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let u=a.shrn(32),m=i.add(u).mul(new q(Hi)),d=ri(m.sub(new q(ji)),64,128).toNumber(),f=ri(m.add(new q(Zi)),64,128).toNumber();return d==f?d:F.getSqrtPriceX64FromTick(f).lte(e)?f:d}},pt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=F.getTickFromSqrtPriceX64(F.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 o=pt.getTickWithPriceAndTickspacing(e,t,n,i),s=F.getSqrtPriceX64FromTick(o);return F.sqrtPriceX64ToPrice(s,n,i)}},z=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(le))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(vt),s=t.sub(e);return i?D.mulDivRoundingUp(D.mulDivCeil(o,s,t),Xe,e):D.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(le))throw new Error("sqrtPriceX64A must greater than 0");return i?D.mulDivCeil(n,t.sub(e),Le):D.mulDivFloor(n,t.sub(e),Le)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?D.mulDivRoundingUp(a,Xe,Qn):a.shrn(vt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),D.mulDivFloor(n,Qn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return z.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=z.getLiquidityFromTokenAmountA(e,n,i,!1),a=z.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return z.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:z.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new q(0)};if(e.lt(n)){let s=z.getTokenAmountAFromLiquidity(e,n,i,o),a=z.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new q(0),amountB:z.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:c,amountB:u}=z.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new q(new S(c.toString()).mul(l).toFixed(0)),d=new q(new S(u.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var h,w,k,T;let u=F.priceToSqrtPriceX64(new S(e.price),e.mintA.decimals,e.mintB.decimals),l=F.getSqrtPriceX64FromTick(t),m=F.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,f=z.getAmountsFromLiquidity(u,l,m,i,s),[g,p]=[ue(f.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),ue(f.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,c)],[y,b]=[ue(new q(new S(f.amountA.toString()).mul(d).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,c),ue(new q(new S(f.amountB.toString()).mul(d).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,a,c)];return{liquidity:i,amountA:g,amountB:p,amountSlippageA:y,amountSlippageB:b,expirationTime:ct(g.expirationTime,p.expirationTime)}}},ft=class{static swapCompute(e,t,n,i,o,s,a,c,u,l,m,d,f,g,p=!1){if(d.eq(le))throw new Error("amountSpecified must not be 0");if(g||(g=s?ze.add(Xe):He.sub(Xe)),s){if(g.lt(ze))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(He))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let y=d.gt(le),b={amountSpecifiedRemaining:d,amountCalculated:le,sqrtPriceX64:m,tick:u>f?Math.min(f+G.tickCount(l)-1,u):f,accounts:[],liquidity:c,feeAmount:new q(0)},h=f,w=n[f],k=0,T=!s&&w.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(le)&&!b.sqrtPriceX64.eq(g);){k>10;let P={};P.sqrtPriceStartX64=b.sqrtPriceX64;let A=K.nextInitTick(w,b.tick,l,s,T),B=A||null,N=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let L=de.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},h,s);if(!L.isExist){if(p)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts};throw Error("swapCompute LiquidityInsufficient")}h=L.nextStartIndex;let{publicKey:Z}=U(e,t,h);N=Z,w=n[h];try{B=K.firstInitializedTick(w,s)}catch{throw Error("not found next tick info")}}P.tickNext=B.tick,P.initialized=B.liquidityGross.gtn(0),f!==h&&N&&(b.accounts.push(N),f=h),P.tickNext<Te?P.tickNext=Te:P.tickNext>Be&&(P.tickNext=Be),P.sqrtPriceNextX64=F.getSqrtPriceX64FromTick(P.tickNext);let O;if(s&&P.sqrtPriceNextX64.lt(g)||!s&&P.sqrtPriceNextX64.gt(g)?O=g:O=P.sqrtPriceNextX64,[b.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=ft.swapStepCompute(b.sqrtPriceX64,O,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(P.feeAmount),y?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),b.amountCalculated=b.amountCalculated.sub(P.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(P.amountOut),b.amountCalculated=b.amountCalculated.add(P.amountIn.add(P.feeAmount))),b.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let L=B.liquidityNet;s&&(L=L.mul($e)),b.liquidity=z.addDelta(b.liquidity,L)}T=P.tickNext!=b.tick&&!s&&w.startTickIndex===P.tickNext,b.tick=s?P.tickNext-1:P.tickNext}else if(b.sqrtPriceX64!=P.sqrtPriceStartX64){let L=F.getTickFromSqrtPriceX64(b.sqrtPriceX64);T=L!=b.tick&&!s&&w.startTickIndex===L,b.tick=L}++k}try{let{nextStartIndex:P,isExist:A}=G.nextInitializedTickArray(b.tick,l,s,i,o);A&&f!==P&&(b.accounts.push(U(e,t,P).publicKey),f=P)}catch{}return{allTrade:!0,amountSpecifiedRemaining:le,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new q(0),amountIn:new q(0),amountOut:new q(0),feeAmount:new q(0)},a=e.gte(t),c=i.gte(le);if(c){let l=D.mulDivFloor(i,hn.sub(new q(o.toString())),hn);s.amountIn=a?z.getTokenAmountAFromLiquidity(t,e,n,!0):z.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=F.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?z.getTokenAmountBFromLiquidity(t,e,n,!1):z.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul($e).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=F.getNextSqrtPriceX64FromOutput(e,n,i.mul($e),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=z.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=z.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:z.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:z.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(i.mul($e))&&(s.amountOut=i.mul($e)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=D.mulDivCeil(s.amountIn,new q(o),hn.sub(new q(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var pe=60,dt=512,K=class{static getTickArrayAddressByTick(e,t,n,i){let o=K.getTickArrayStartIndexByTick(n,i),{publicKey:s}=U(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=K.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=pe)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=G.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)*G.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*pe,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*pe,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*pe:e+t*pe}static mergeTickArrayBitmap(e){let t=new gs(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,o){let s=Math.floor(i/(n*pe));return[...K.searchLowBitFromStart(e,t,s-1,o,n),...K.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return K.searchHightBitFromStart(e,t,0,dt,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=K.getAllInitializedTickArrayStartIndex(n,i,o);for(let c of a){let{publicKey:u}=U(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,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>K.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=G.tickCount(o);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>K.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=G.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<Te||e>Be}static nextInitTick(e,t,n,i,o){if(G.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(o||(a=a+1);a<pe;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=pe-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<pe;){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=F.getSqrtPriceX64FromTick(t),o=F.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),o=pt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=F.getSqrtPriceX64FromTick(o),a=F.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=F.getSqrtPriceX64FromTick(t),o=F.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new S(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new S(1).div(t),o=pt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=F.getSqrtPriceX64FromTick(o),a=F.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new S(1).div(a)}}};var ar=$([Ne(8),me("bump"),_t("index"),J(""),kt("protocolFeeRate"),kt("tradeFeeRate"),_t("tickSpacing"),se(M(),8,"")]),bs=$([kt("blockTimestamp"),Ui("tickCumulative"),se(M(),4)]),cr=$([Ne(8),ve("initialized"),M("recentEpoch"),_t("observationIndex"),J("poolId"),se(bs,100,"observations"),se(M(),4)]),ys=$([me("rewardState"),M("openTime"),M("endTime"),M("lastUpdateTime"),X("emissionsPerSecondX64"),M("rewardTotalEmissioned"),M("rewardClaimed"),J("tokenMint"),J("tokenVault"),J("creator"),X("rewardGrowthGlobalX64")]),kn=$([Ne(8),me("bump"),J("ammConfig"),J("creator"),J("mintA"),J("mintB"),J("vaultA"),J("vaultB"),J("observationId"),me("mintDecimalsA"),me("mintDecimalsB"),_t("tickSpacing"),X("liquidity"),X("sqrtPriceX64"),Pe("tickCurrent"),kt(),X("feeGrowthGlobalX64A"),X("feeGrowthGlobalX64B"),M("protocolFeesTokenA"),M("protocolFeesTokenB"),X("swapInAmountTokenA"),X("swapOutAmountTokenB"),X("swapInAmountTokenB"),X("swapOutAmountTokenA"),me("status"),se(me(),7,""),se(ys,3,"rewardInfos"),se(M(),16,"tickArrayBitmap"),M("totalFeesTokenA"),M("totalFeesClaimedTokenA"),M("totalFeesTokenB"),M("totalFeesClaimedTokenB"),M("fundFeesTokenA"),M("fundFeesTokenB"),M("startTime"),se(M(),15*4-3,"padding")]),ws=$([X("growthInsideLastX64"),M("rewardAmountOwed")]),Ht=$([Ne(8),me("bump"),J("nftMint"),J("poolId"),Pe("tickLower"),Pe("tickUpper"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),M("tokenFeesOwedA"),M("tokenFeesOwedB"),se(ws,3,"rewardInfos"),se(M(),8,"")]),Bd=$([Ne(8),me("bump"),J("poolId"),Pe("tickLowerIndex"),Pe("tickUpperIndex"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),M("tokenFeesOwedA"),M("tokenFeesOwedB"),se(X(),3,"rewardGrowthInside"),se(M(),8,"")]),hs=$([Pe("tick"),Gi("liquidityNet"),X("liquidityGross"),X("feeGrowthOutsideX64A"),X("feeGrowthOutsideX64B"),se(X(),3,"rewardGrowthsOutsideX64"),se(kt(),13,"")]),Xt=$([Ne(8),J("poolId"),Pe("startTickIndex"),se(hs,pe,"ticks"),me("initializedTickCount"),se(me(),115,"")]),ur=$([Ne(329),se(J(),100,"whitelistMints")]),sr=$([Ne(8),J("poolId"),se(se(M(),8),ni,"positiveTickArrayBitmap"),se(se(M(),8),ni,"negativeTickArrayBitmap")]),Id=$([M(),me("bump"),J("owner"),J("poolId"),J("positionId"),J("nftAccount"),se(M(),8)]),Sd=$([Ne(8),me("bump"),J("lockOwner"),J("poolId"),J("positionId"),J("nftAccount"),J("lockNftMint"),M("recentEpoch"),se(M(),8)]);cr.span;var mr=we("Raydium_Clmm"),Ve={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],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]},dr=[188,37,179,131,82,150,84,73],fr=[16,72,250,198,14,162,212,19],re=class{static createPoolInstruction(e,t,n,i,o,s,a,c,u,l,m,d,f,g){let p=$([X("sqrtPriceX64"),M("startTime")]),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:o,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:gt.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],b=Buffer.alloc(p.span);p.encode({sqrtPriceX64:f,startTime:g},b);let h=Buffer.from([...Ve.createPool,...b]);return new Se({keys:y,programId:e,data:h})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:o,ammConfigId:s,initialPriceX64:a,startTime:c}=e,[u,l]=[new I(i.address),new I(o.address)],{publicKey:m}=er(t,s,u,l),{publicKey:d}=nr(t,m),{publicKey:f}=ei(t,m,u),{publicKey:g}=ei(t,m,l),p=[this.createPoolInstruction(t,m,n,s,d,u,f,new I(i.programId||ie),l,g,new I(o.programId||ie),Me(t,m).publicKey,a,c)];return{signers:[],instructions:p,instructionTypes:[ce.CreateAccount,ce.ClmmCreatePool],address:{poolId:m,observationId:d,mintAVault:f,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,f,g,p,y,b,h,w,k,T,P,A,B,N,O){let L=$([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),X("liquidity"),M("amountMaxA"),M("amountMaxB"),ve("withMetadata"),me("optionBaseFlag"),ve("baseFlag")]),Z=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],Q=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:gt.programId,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:oi,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:Ze,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...Z],ae=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:T,liquidity:P,amountMaxA:A,amountMaxB:B,withMetadata:N==="create",baseFlag:!1,optionBaseFlag:0},ae);let ee=Buffer.from([...Ve.openPosition,...ae]);return new Se({keys:Q,programId:e,data:ee})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,f]=[new I(e.programId),new I(e.id)],g;if(l)g=new I((await l(1))[0]);else{let B=An.generate();m.push(B),g=B.publicKey}let p=K.getTickArrayStartIndexByTick(i,e.config.tickSpacing),y=K.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=U(d,f,p),{publicKey:h}=U(d,f,y),{publicKey:w}=Ae(n.wallet,g,ie),{publicKey:k}=qt(g),{publicKey:T}=Ie(d,g),{publicKey:P}=We(d,f,i,o),A=this.openPositionFromLiquidityInstruction(d,n.feePayer,f,n.wallet,g,w,k,P,b,h,T,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),i,o,p,y,s,a,c,u);return{signers:m,instructions:[A],instructionTypes:[ce.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:w,metadataAccount:k,personalPosition:T,protocolPosition:P}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,f]=[new I(e.programId),new I(e.id)],g;if(l)g=new I((await l(1))[0]);else{let B=An.generate();m.push(B),g=B.publicKey}let p=K.getTickArrayStartIndexByTick(i,e.config.tickSpacing),y=K.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=U(d,f,p),{publicKey:h}=U(d,f,y),{publicKey:w}=Ae(n.wallet,g,ie),{publicKey:k}=qt(g),{publicKey:T}=Ie(d,g),{publicKey:P}=We(d,f,i,o),A=this.openPositionFromBaseInstruction(d,n.feePayer,f,n.wallet,g,w,k,P,b,h,T,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),i,o,p,y,u,s,a,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[p,y])?Me(d,f).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:w,metadataAccount:k,personalPosition:T,protocolPosition:P},instructions:[A],signers:m,instructionTypes:[ce.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,c,u,l,m,d,f,g,p,y,b,h,w,k,T,P,A,B,N,O){let L=$([Pe("tickLowerIndex"),Pe("tickUpperIndex"),Pe("tickArrayLowerStartIndex"),Pe("tickArrayUpperStartIndex"),X("liquidity"),M("amountMaxA"),M("amountMaxB"),ve("withMetadata"),me("optionBaseFlag"),ve("baseFlag")]),Z=[...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],Q=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:gt.programId,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:oi,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:Ze,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...Z],ae=Buffer.alloc(L.span);L.encode({tickLowerIndex:h,tickUpperIndex:w,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:T,liquidity:new lr(0),amountMaxA:A==="MintA"?B:N,amountMaxB:A==="MintA"?N:B,withMetadata:P==="create",baseFlag:A==="MintA",optionBaseFlag:1},ae);let ee=Buffer.from([...Ve.openPosition,...ae]);return new Se({keys:Q,programId:e,data:ee})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m,d=[];if(l)m=new I((await l(1))[0]);else{let B=An.generate();d.push(B),m=B.publicKey}let[f,g]=[new I(e.programId),new I(e.id)],p=K.getTickArrayStartIndexByTick(i,e.config.tickSpacing),y=K.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:b}=U(f,g,p),{publicKey:h}=U(f,g,y),{publicKey:w}=Ae(n.wallet,m,ie),{publicKey:k}=qt(m),{publicKey:T}=Ie(f,m),{publicKey:P}=We(f,g,i,o),A=this.openPositionFromLiquidityInstruction(f,n.wallet,g,n.wallet,m,w,k,P,b,h,T,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(t.mintA.address),new I(t.mintB.address),i,o,p,y,s,a,c,u,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[p,y])?Me(f,g).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:b,tickArrayUpper:h,positionNftAccount:w,metadataAccount:k,personalPosition:T,protocolPosition:P},instructions:[A],signers:d,instructionTypes:[ce.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=$([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:gt.programId,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...Ve.closePosition,...c]);return new Se({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new I(e.programId),{publicKey:s}=Ae(n.wallet,i.nftMint,ie),{publicKey:a}=Ie(o,i.nftMint),c=[];return c.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[ce.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,f,g,p,y,b,h){let w=$([X("liquidity"),M("amountMaxA"),M("amountMaxB"),me("optionBaseFlag"),ve("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey: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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:Ze,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...k],P=Buffer.alloc(w.span);w.encode({liquidity:p,amountMaxA:y,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},P);let A=Buffer.from([...Ve.increaseLiquidity,...P]);return new Se({keys:T,programId:e,data:A})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[c,u]=[new I(e.programId),new I(e.id)],l=K.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=K.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=U(c,u,l),{publicKey:f}=U(c,u,m),{publicKey:g}=Ae(i.wallet,n.nftMint,ie),{publicKey:p}=Ie(c,n.nftMint),{publicKey:y}=We(c,u,n.tickLower,n.tickUpper),b=this.increasePositionFromLiquidityInstruction(c,i.wallet,g,p,u,y,d,f,i.tokenAccountA,i.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),o,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Me(c,u).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:f,positionNftAccount:g,personalPosition:p,protocolPosition:y},signers:[],instructions:[b],instructionTypes:[ce.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[c,u]=[new I(e.programId),new I(e.id)],l=K.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=K.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=U(c,u,l),{publicKey:f}=U(c,u,m),{publicKey:g}=Ae(i.wallet,n.nftMint,ie),{publicKey:p}=Ie(c,n.nftMint),{publicKey:y}=We(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:f,positionNftAccount:g,personalPosition:p,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(c,i.wallet,g,p,u,y,d,f,i.tokenAccountA,i.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),o,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Me(c,u).publicKey:void 0)],signers:[],instructionTypes:[ce.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,c,u,l,m,d,f,g,p,y,b,h){let w=$([X("liquidity"),M("amountMaxA"),M("amountMaxB"),me("optionBaseFlag"),ve("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey: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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:Ze,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...k],P=Buffer.alloc(w.span);w.encode({liquidity:new lr(0),amountMaxA:p==="MintA"?y:b,amountMaxB:p==="MintA"?b:y,baseFlag:p==="MintA",optionBaseFlag:1},P);let A=Buffer.from([...Ve.increaseLiquidity,...P]);return new Se({keys:T,programId:e,data:A})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,c,u,l,m,d,f,g,p,y,b,h,w){let k=$([X("liquidity"),M("amountMinA"),M("amountMinB")]),T=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...p.map(N=>[{pubkey:N.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:N.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:N.rewardMint,isSigner:!1,isWritable:!1}]).flat()],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,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:ie,isSigner:!1,isWritable:!1},{pubkey:Ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...T],A=Buffer.alloc(k.span);k.encode({liquidity:y,amountMinA:b,amountMinB:h},A);let B=Buffer.from([...Ve.decreaseLiquidity,...A]);return new Se({keys:P,programId:e,data:B})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new I(e.programId),new I(e.id)],m=K.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=K.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=U(u,l,m),{publicKey:g}=U(u,l,d),{publicKey:p}=Ae(i.wallet,n.nftMint,c),{publicKey:y}=Ie(u,n.nftMint),{publicKey:b}=We(u,l,n.tickLower,n.tickUpper),h=[];for(let T=0;T<e.rewardDefaultInfos.length;T++)h.push({poolRewardVault:new I(t.rewardInfos[T].vault),ownerRewardVault:i.rewardAccounts[T],rewardMint:new I(e.rewardDefaultInfos[T].mint.address)});let w=[],k=this.decreaseLiquidityInstruction(u,i.wallet,p,y,l,b,f,g,i.tokenAccountA,i.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),h,o,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?Me(u,l).publicKey:void 0);return w.push(k),{address:{tickArrayLower:f,tickArrayUpper:g,positionNftAccount:p,personalPosition:y,protocolPosition:b},signers:[],instructions:w,instructionTypes:[ce.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,c,u,l,m,d,f,g,p,y,b){let h=$([M("amount"),M("otherAmountThreshold"),X("sqrtPriceLimitX64"),ve("isBaseInput")]),w=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...m.map(A=>({pubkey:A,isSigner:!1,isWritable:!0}))],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:Ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...w],T=Buffer.alloc(h.span);h.encode({amount:f,otherAmountThreshold:g,sqrtPriceLimitX64:p,isBaseInput:y},T);let P=Buffer.from([...Ve.swap,...T]);return new Se({keys:k,programId:e,data:P})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,m]=[new I(e.programId),new I(e.id)],[d,f]=[new I(t.vault.A),new I(t.vault.B)],[g,p]=[new I(e.mintA.address),new I(e.mintB.address)],y=e.mintA.address===o.toString(),b=[this.swapInstruction(l,i.wallet,m,new I(e.config.id),y?i.tokenAccountA:i.tokenAccountB,y?i.tokenAccountB:i.tokenAccountA,y?d:f,y?f:d,y?g:p,y?p:g,u,n,s,a,c,!0,Me(l,m).publicKey)];return{signers:[],instructions:b,instructionTypes:[ce.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,outputMint:o,amountOut:s,amountInMax:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,m]=[new I(e.programId),new I(e.id)],[d,f]=[new I(t.vault.A),new I(t.vault.B)],[g,p]=[new I(e.mintA.address),new I(e.mintB.address)],y=e.mintA.address===o.toBase58(),b=[this.swapInstruction(l,i.wallet,m,new I(e.config.id),y?i.tokenAccountB:i.tokenAccountA,y?i.tokenAccountA:i.tokenAccountB,y?f:d,y?d:f,y?p:g,y?g:p,u,n,s,a,c,!1,Me(l,m).publicKey)];return{signers:[],instructions:b,instructionTypes:[ce.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,c,u,l,m,d){let f=$([M("openTime"),M("endTime"),X("emissionsPerSecondX64")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:gt.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],p=Buffer.alloc(f.span);f.encode({openTime:ge(l),endTime:ge(m),emissionsPerSecondX64:d},p);let y=Buffer.from([...Ve.initReward,...p]);return new Se({keys:g,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new I(e.programId),new I(e.id)],a=tr(o,s,i.mint).publicKey,c=Vt(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new I(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:[ce.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,c,u,l,m,d){let f=$([me("rewardIndex"),X("emissionsPerSecondX64"),M("openTime"),M("endTime")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:Ze,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],p=Buffer.alloc(f.span);f.encode({rewardIndex:u,emissionsPerSecondX64:d,openTime:ge(l),endTime:ge(m)},p);let y=Buffer.from([...Ve.setRewardEmissions,...p]);return new Se({keys:g,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new I(e.programId),new I(e.id)],a,c,u;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,c=new I(t.rewardInfos[d].vault),u=new I(t.rewardInfos[d].mint.address));(a===void 0||c===void 0)&&mr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Vt(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new I(e.config.id),n.tokenAccount,c,u,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:m,instructionTypes:[ce.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let c=$([me("rewardIndex")]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:Ze,isSigner:!1,isWritable:!1},{pubkey:an,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let m=Buffer.from([...Ve.collectReward,...l]);return new Se({keys:u,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new I(e.programId),new I(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,c=new I(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&mr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,c,i,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[ce.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:i,wallet:o,nftMint:s,getEphemeralSigners:a}){let c=[],u;if(a)u=new I((await a(1))[0]);else{let y=An.generate();c.push(y),u=y.publicKey}let{publicKey:l}=Ae(o,s,ie),{publicKey:m}=Ie(n,s),d=Ut(e,u).publicKey,f=Ae(o,u,ie).publicKey,g=qt(u).publicKey,p=re.lockPositionInstructionV2({programId:e,auth:t,payer:i,positionOwner:o,lockOwner:o,positionNftAccount:l,positionId:m,lockPositionId:d,lockNftMint:u,lockNftAccount:f,metadataAccount:g,withMetadata:!0});return{address:{positionId:m,lockPositionId:d,lockNftAccount:f,lockNftMint:u,positionNftAccount:l,metadataAccount:g},instructions:[p],signers:c,instructionTypes:[ce.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:i,lockOwner:o,positionNftAccount:s,positionId:a,lockPositionId:c,lockNftMint:u,lockNftAccount:l,metadataAccount:m,withMetadata:d}){let f=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!0,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:oi,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:gt.programId,isSigner:!1,isWritable:!1}],g=$([ve("withMetadata")]),p=Buffer.alloc(g.span);g.encode({withMetadata:d},p);let y=Buffer.from([...dr,...p]);return new Se({keys:f,programId:e,data:y})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:i,positionNft:o}){let{publicKey:s}=Ae(i,o,ie),{publicKey:a}=Ie(n,o),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:ti(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:gt.programId,isSigner:!1,isWritable:!1}];return new Se({keys:c,programId:e,data:Buffer.from(dr)})}static harvestLockPositionInstruction(e){let[t,n]=[new I(e.poolKeys.programId),new I(e.poolKeys.id)],i=K.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),o=K.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:s}=U(t,n,i),{publicKey:a}=U(t,n,o),{publicKey:c}=Ae(e.owner,e.ownerPosition.nftMint,ie),{publicKey:u}=Ie(t,e.ownerPosition.nftMint),{publicKey:l}=We(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),m=[];for(let g=0;g<e.poolKeys.rewardInfos.length;g++)m.push({poolRewardVault:new I(e.poolKeys.rewardInfos[g].vault),ownerRewardVault:e.ownerRewardAccounts[g],rewardMint:new I(e.poolKeys.rewardInfos[g].mint.address)});let d=[...m.map(g=>[{pubkey:g.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:g.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:g.rewardMint,isSigner:!1,isWritable:!1}]).flat()],f=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:ti(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 I(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new I(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:ie,isSigner:!1,isWritable:!1},{pubkey:Ze,isSigner:!1,isWritable:!1},{pubkey:_n,isSigner:!1,isWritable:!1},{pubkey:new I(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new I(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...d];return new Se({keys:f,programId:e.programId,data:Buffer.from(fr)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:i,lockOwner:o,lockNftMint:s,lockNftAccount:a,positionNftAccount:c,positionId:u,poolId:l,protocolPosition:m,vaultA:d,vaultB:f,tickArrayLower:g,tickArrayUpper:p,userVaultA:y,userVaultB:b,mintA:h,mintB:w,rewardAccounts:k,exTickArrayBitmap:T}){let P=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[],...k.map(B=>[{pubkey:B.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:B.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:B.rewardMint,isSigner:!1,isWritable:!1}]).flat()],A=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:Ze,isSigner:!1,isWritable:!1},{pubkey:_n,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...P];return new Se({keys:A,programId:e,data:Buffer.from(fr)})}};var gr=class extends Dt{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var w;let{programId:t,owner:n=((w=this.scope.owner)==null?void 0:w.publicKey)||C.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:c,computeBudgetConfig:u,forerunCreate:l,getObserveState:m,txVersion:d}=e,f=this.createTxBuilder(),[g,p,y]=new Ke(new C(i.address).toBuffer()).gt(new Ke(new C(o.address).toBuffer()))?[o,i,new S(1).div(a)]:[i,o,a],b=F.priceToSqrtPriceX64(y,g.decimals,p.decimals),h=await re.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:g,mintB:p,ammConfigId:s.id,initialPriceX64:b,startTime:c,forerunCreate:!m&&l});return f.addInstruction(h),f.addCustomComputeBudget(u),f.versionBuild({txVersion:d,extInfo:{address:{...h.address,programId:t.toString(),id:h.address.poolId.toString(),mintA:g,mintB:p,openTime:c.toString(),vault:{A:h.address.mintAVault.toString(),B:h.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},mockPoolInfo:{type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:h.address.poolId.toString(),mintA:g,mintB:p,feeRate:s.tradeFeeRate,openTime:c.toString(),programId:t.toString(),price:y.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]},burnPercent:0,...Yi},forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:f,txVersion:g}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let p=this.createTxBuilder(),y=null,b=null,h=n.useSOLBalance&&e.mintA.address===H.toString(),w=n.useSOLBalance&&e.mintB.address===H.toString(),[k,T]=s==="MintA"?[a,c]:[c,a],{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new C(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});P&&(y=P),p.addInstruction(A||{});let{account:B,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new C(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:w||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!w,notUseTokenAccount:w,associatedOnly:w?!1:u,checkCreateATAOwner:l});B&&(b=B),p.addInstruction(N||{}),(!y||!b)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:y==null?void 0:y.toBase58(),ownerTokenAccountB:b==null?void 0:b.toBase58()});let O=t||await this.getClmmPoolKeys(e.id),L=await re.openPositionFromBaseInstructions({poolInfo:e,poolKeys:O,ownerInfo:{...n,feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b},tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:m,getEphemeralSigners:d});return p.addInstruction(L),p.addCustomComputeBudget(f),p.versionBuild({txVersion:g,extInfo:{...L.address}})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,computeBudgetConfig:f,getEphemeralSigners:g}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let p=this.createTxBuilder(),y=null,b=null,h=n.useSOLBalance&&e.mintA.address===H.toBase58(),w=n.useSOLBalance&&e.mintB.address===H.toBase58(),{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new C(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});k&&(y=k),p.addInstruction(T||{});let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new C(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:w||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!w,notUseTokenAccount:w,associatedOnly:w?!1:u,checkCreateATAOwner:l});P&&(b=P),p.addInstruction(A||{}),(y===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=t||await this.getClmmPoolKeys(e.id),N=await re.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:i,amountMaxB:o,withMetadata:m,getEphemeralSigners:g});return p.addInstruction(N),p.addCustomComputeBudget(f),p.versionBuild({txVersion:d,extInfo:{address:N.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:i,amountMaxA:o,amountMaxB:s,liquidity:a,ownerInfo:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txVersion:d}=e,f=this.createTxBuilder(),g,p,y=c.useSOLBalance&&t.mintA.address===H.toString(),b=c.useSOLBalance&&t.mintB.address===H.toString(),{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new C(t.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:y||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:l});h&&(g=h),f.addInstruction(w||{});let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new C(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:l});k&&(p=k),f.addInstruction(T||{}),!g&&!p&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let P=n!=null?n:await this.getClmmPoolKeys(t.id),A=re.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:P,ownerPosition:i,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:p},liquidity:a,amountMaxA:o,amountMaxB:s});return f.addInstruction(A),f.addCustomComputeBudget(m),f.versionBuild({txVersion:d,extInfo:{address:A.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),f,g,p=a.useSOLBalance&&t.mintA.address===H.toString(),y=a.useSOLBalance&&t.mintB.address===H.toString(),{account:b,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new C(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:p||(i==="MintA"?o:s).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!p,associatedOnly:p?!1:c,checkCreateATAOwner:u});b&&(f=b),d.addInstruction(h||{});let{account:w,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new C(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:y||(i==="MintA"?s:o).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:y,skipCloseAccount:!y,associatedOnly:y?!1:c,checkCreateATAOwner:u});w&&(g=w),d.addInstruction(k||{}),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),P=re.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:g},base:i,baseAmount:o,otherAmountMax:s});return d.addInstruction(P),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:P.address}})}async decreaseLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:i,ownerInfo:o,amountMinA:s,amountMinB:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txVersion:d}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let f=this.createTxBuilder(),g=o.useSOLBalance&&t.mintA.address===H.toString(),p=o.useSOLBalance&&t.mintB.address===H.toString(),y,b,{account:h,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new C(t.mintA.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:l});y=h,w&&f.addInstruction(w);let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new C(t.mintB.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:u,checkCreateATAOwner:l});b=k,T&&f.addInstruction(T);let P=[];for(let O of t.rewardDefaultInfos){let L=o.useSOLBalance&&O.mint.address===H.toString(),Z;if(O.mint.address===t.mintA.address)Z=y;else if(O.mint.address===t.mintB.address)Z=b;else{let{account:Q,instructionParams:ae}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new C(O.mint.programId),mint:new C(O.mint.address),notUseTokenAccount:L,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!L,associatedOnly:L?!1:u,checkCreateATAOwner:l});Z=Q,ae&&f.addInstruction(ae)}P.push(Z)}!y&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let A=n!=null?n:await this.getClmmPoolKeys(t.id),B=await re.decreaseLiquidityInstructions({poolInfo:t,poolKeys:A,ownerPosition:i,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b,rewardAccounts:P},liquidity:c,amountMinA:s,amountMinB:a});f.addInstruction({instructions:B.instructions,instructionTypes:[ce.ClmmDecreasePosition]});let N={...B.address};if(o.closePosition){let O=await re.closePositionInstructions({poolInfo:t,poolKeys:A,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:i});f.addInstruction({endInstructions:O.instructions,endInstructionTypes:O.instructionTypes}),N={...N,...O.address}}return f.addCustomComputeBudget(m),f.versionBuild({txVersion:d,extInfo:{address:N}})}async lockPosition(e){let{programId:t=Lt,authProgramId:n=dn,poolProgramId:i=mn,ownerPosition:o,payer:s,computeBudgetConfig:a,txVersion:c}=e,u=this.createTxBuilder(),l=await re.makeLockPositions({programId:t,authProgramId:n,poolProgramId:i,wallet:this.scope.ownerPubKey,payer:s!=null?s:this.scope.ownerPubKey,nftMint:o.nftMint});return u.addInstruction(l),u.addCustomComputeBudget(a),u.versionBuild({txVersion:c,extInfo:l.address})}async harvestLockPosition(e){let{programId:t=Lt,authProgramId:n=dn,clmmProgram:i=mn,poolKeys:o,lockData:s,ownerInfo:a={useSOLBalance:!0},associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e,d=o||await this.getClmmPoolKeys(s.poolId.toString()),f=this.createTxBuilder(),g=await this.scope.connection.getAccountInfo(s.positionId);g||this.logger.logWithError("position not found",s.positionId);let p=Ht.decode(g.data),y=a.useSOLBalance&&d.mintA.address===H.toString(),b=a.useSOLBalance&&d.mintB.address===H.toString(),h,w,{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new C(d.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:c,checkCreateATAOwner:u});h=k,T&&f.addInstruction(T);let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new C(d.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});w=P,A&&f.addInstruction(A);let B={},N=[];for(let Oe of d.rewardInfos){let Tn=a.useSOLBalance&&Oe.mint.address===H.toString(),Zt=B[Oe.mint.address];if(!Zt){let{account:yr,instructionParams:si}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new C(Oe.mint.programId),mint:new C(Oe.mint.address),notUseTokenAccount:Tn,owner:this.scope.ownerPubKey,skipCloseAccount:!Tn,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:Tn?!1:c});Zt=yr,si&&f.addInstruction(si)}B[Oe.mint.address]=Zt,N.push(Zt)}let O=Ut(t,s.lockNftMint).publicKey,L=Ae(this.scope.ownerPubKey,s.lockNftMint,jt).publicKey,Z=K.getTickArrayStartIndexByTick(p.tickLower,d.config.tickSpacing),Q=K.getTickArrayStartIndexByTick(p.tickUpper,d.config.tickSpacing),{publicKey:ae}=U(new C(d.programId),s.poolId,Z),{publicKey:ee}=U(new C(d.programId),s.poolId,Q),{publicKey:j}=We(new C(d.programId),s.poolId,p.tickLower,p.tickUpper),At=[];for(let Oe=0;Oe<d.rewardInfos.length;Oe++)At.push({poolRewardVault:new C(d.rewardInfos[Oe].vault),ownerRewardVault:N[Oe],rewardMint:new C(d.rewardInfos[Oe].mint.address)});let br=await re.harvestLockPositionInstructionV2({programId:t,auth:n,lockPositionId:O,clmmProgram:i,lockOwner:s.lockOwner,lockNftMint:s.lockNftMint,lockNftAccount:L,positionNftAccount:s.nftAccount,positionId:s.positionId,poolId:s.poolId,protocolPosition:j,vaultA:new C(d.vault.A),vaultB:new C(d.vault.B),tickArrayLower:ae,tickArrayUpper:ee,userVaultA:h,userVaultB:w,mintA:new C(d.mintA.address),mintB:new C(d.mintB.address),rewardAccounts:At});return f.addInstruction({instructions:[br],instructionTypes:[ce.ClmmHarvestLockPosition]}),f.addCustomComputeBudget(l),f.versionBuild({txVersion:m})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:i}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let o=this.createTxBuilder(),s=t!=null?t:await this.getClmmPoolKeys(e.id),a=re.closePositionInstructions({poolInfo:e,poolKeys:s,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});return o.addInstruction(a).versionBuild({txVersion:i,extInfo:{address:a.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.address.toString()===H.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new C(n.mint.address),mint:new C(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Ke(new S(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:i,checkCreateATAOwner:o});d&&c.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),g=re.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new C(n.mint.programId),mint:new C(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:D.decimalToX64(n.perSecond)}});return c.addInstruction(g),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:g.address}})}async initRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:c}){for(let m of i)m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let u=this.createTxBuilder(),l={};for(let m of i){let d=n.useSOLBalance&&m.mint.address===H.toString(),f=m.perSecond.mul(m.endTime-m.openTime),{account:g,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new C(m.mint.programId),mint:new C(m.mint.address),notUseTokenAccount:!!d,skipCloseAccount:!d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new Ke(new S(f.toFixed(0)).gte(f)?f.toFixed(0):f.add(1).toFixed(0))}:void 0,associatedOnly:d?!1:o,checkCreateATAOwner:s});p&&u.addInstruction(p),g||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=t!=null?t:await this.getClmmPoolKeys(e.id),b=re.initRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:g},rewardInfo:{programId:new C(m.mint.programId),mint:new C(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:D.decimalToX64(m.perSecond)}});l={...l,...b.address},u.addInstruction(b)}return u.addCustomComputeBudget(a),u.versionBuild({txVersion:c,extInfo:{address:l}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.equals(H),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Ke(new S(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:u?!1:i,checkCreateATAOwner:o});m&&c.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),f=re.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:D.decimalToX64(n.perSecond)}});return c.addInstruction(f),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:f.address}})}async setRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:c}){let u=this.createTxBuilder(),l={};for(let m of i){m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let d=n.useSOLBalance&&m.mint.address===H.toString(),{account:f,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new C(m.mint.programId),mint:new C(m.mint.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new Ke(new S(m.perSecond.sub(m.endTime-m.openTime).toFixed(0)).gte(m.perSecond.sub(m.endTime-m.openTime))?m.perSecond.sub(m.endTime-m.openTime).toFixed(0):m.perSecond.sub(m.endTime-m.openTime).add(1).toFixed(0))}:void 0,associatedOnly:d?!1:o,checkCreateATAOwner:s});g&&u.addInstruction(g),f||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=t!=null?t:await this.getClmmPoolKeys(e.id),y=re.setRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:f},rewardInfo:{mint:new C(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:D.decimalToX64(m.perSecond)}});u.addInstruction(y),l={...l,...y.address}}return u.addCustomComputeBudget(a),u.versionBuild({txVersion:c,extInfo:{address:l}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(f=>f.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),c=t.useSOLBalance&&n.equals(H),{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new C(s.mint.programId),mint:n,notUseTokenAccount:c,owner:this.scope.ownerPubKey,skipCloseAccount:!c,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:c?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),u||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=re.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:u},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let c of n){let u=e.rewardDefaultInfos.find(p=>p.mint.address===c.toString());if(!u){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let l=t.useSOLBalance&&c.equals(H),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new C(u.mint.programId),mint:c,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let f=await this.getClmmPoolKeys(e.id),g=re.collectRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:c});s.addInstruction(g),a={...a,...g.address}}return s.build({address:a})}async swap({poolInfo:e,poolKeys:t,inputMint:n,amountIn:i,amountOutMin:o,priceLimit:s,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:l=!0,checkCreateATAOwner:m=!1,txVersion:d,computeBudgetConfig:f}){let g=this.createTxBuilder(),p=n.toString()===e.mintA.address,y=c.useSOLBalance&&e.mintA.address===H.toBase58(),b=c.useSOLBalance&&e.mintB.address===H.toBase58(),h;!s||s.equals(new S(0))?h=p?ze.add(new Ke(1)):He.sub(new Ke(1)):h=F.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let w;if(!w){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new C(e.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:y||!p?{payer:c.feePayer||this.scope.ownerPubKey,amount:p?i:0}:void 0,associatedOnly:y?!1:l,checkCreateATAOwner:m});w=P,A&&g.addInstruction(A)}let k;if(!k){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new C(e.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,skipCloseAccount:!b,createInfo:b||p?{payer:c.feePayer||this.scope.ownerPubKey,amount:p?0:i}:void 0,associatedOnly:b?!1:l,checkCreateATAOwner:m});k=P,A&&g.addInstruction(A)}(!w||!k)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.symbol||e.mintA.address,tokenB:e.mintB.symbol||e.mintB.address,ownerTokenAccountA:w,ownerTokenAccountB:k,mintAUseSOLBalance:y,mintBUseSOLBalance:b,associatedOnly:l});let T=t!=null?t:await this.getClmmPoolKeys(e.id);return g.addInstruction(re.makeSwapBaseInInstructions({poolInfo:e,poolKeys:T,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:w,tokenAccountB:k},inputMint:new C(n),amountIn:i,amountOutMin:o,sqrtPriceLimitX64:h,remainingAccounts:u})),g.addCustomComputeBudget(f),g.versionBuild({txVersion:d})}async swapBaseOut({poolInfo:e,poolKeys:t,outputMint:n,amountOut:i,amountInMax:o,priceLimit:s,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:l=!0,checkCreateATAOwner:m=!1,txVersion:d,computeBudgetConfig:f}){let g=this.createTxBuilder(),p=n.toString()===e.mintB.address,y=c.useSOLBalance&&e.mintA.address===H.toBase58(),b=c.useSOLBalance&&e.mintB.address===H.toBase58(),h;!s||s.equals(new S(0))?h=n.toString()===e.mintB.address?ze.add(new Ke(1)):He.sub(new Ke(1)):h=F.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let w;if(!w){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new C(e.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:y||!p?{payer:c.feePayer||this.scope.ownerPubKey,amount:p?o:0}:void 0,associatedOnly:y?!1:l,checkCreateATAOwner:m});w=P,A&&g.addInstruction(A)}let k;if(!k){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new C(e.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,skipCloseAccount:!b,createInfo:b||p?{payer:c.feePayer||this.scope.ownerPubKey,amount:p?0:o}:void 0,associatedOnly:b?!1:l,checkCreateATAOwner:m});k=P,A&&g.addInstruction(A)}(!w||!k)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.symbol||e.mintA.address,tokenB:e.mintB.symbol||e.mintB.address,ownerTokenAccountA:w,ownerTokenAccountB:k,mintAUseSOLBalance:y,mintBUseSOLBalance:b,associatedOnly:l});let T=t!=null?t:await this.getClmmPoolKeys(e.id);return g.addInstruction(re.makeSwapBaseOutInstructions({poolInfo:e,poolKeys:T,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:w,tokenAccountB:k},outputMint:new C(n),amountOut:i,amountInMax:o,sqrtPriceLimitX64:h,remainingAccounts:u})),g.addCustomComputeBudget(f),g.versionBuild({txVersion:d})}async harvestAllRewards({allPoolInfo:e,allPositions:t,lockInfo:n,ownerInfo:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,programId:a,txVersion:c,computeBudgetConfig:u}){var d;let l={};for(let f of this.scope.account.tokenAccountRawInfos)o?Ae(this.scope.ownerPubKey,f.accountInfo.mint,a).publicKey.equals(f.pubkey)&&(l[f.accountInfo.mint.toString()]=f.pubkey):l[f.accountInfo.mint.toString()]=f.pubkey;let m=this.createTxBuilder();for(let f of Object.values(e)){if(t[f.id]===void 0||!t[f.id].find(P=>!P.liquidity.isZero()||P.rewardInfos.find(A=>!A.rewardAmountOwed.isZero())))continue;let g=f,p=i.useSOLBalance&&g.mintA.address===H.toString(),y=i.useSOLBalance&&g.mintB.address===H.toString(),b=l[g.mintA.address];if(!b){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:g.mintA.programId,mint:new C(g.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:i.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:o,checkCreateATAOwner:s});b=P,A&&m.addInstruction(A)}let h=l[g.mintB.address];if(!h){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:g.mintB.programId,mint:new C(g.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:i.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:o,checkCreateATAOwner:s});h=P,A&&m.addInstruction(A)}l[g.mintA.address]=b,l[g.mintB.address]=h;let w=[];for(let P of g.rewardDefaultInfos){let A=i.useSOLBalance&&P.mint.address===H.toString(),B=l[P.mint.address];if(!B){let{account:N,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new C(P.mint.programId),mint:new C(P.mint.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,skipCloseAccount:!A,createInfo:{payer:i.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:A?!1:o});B=N,O&&m.addInstruction(O)}l[P.mint.address]=B,w.push(B)}let k=await this.getClmmPoolKeys(g.id),T=[];for(let P=0;P<k.rewardInfos.length;P++)T.push({poolRewardVault:new C(k.rewardInfos[P].vault),ownerRewardVault:w[P],rewardMint:new C(k.rewardInfos[P].mint.address)});for(let P of t[f.id]){let A=(d=n==null?void 0:n[f.id])==null?void 0:d[P.nftMint.toBase58()];if(A){let B=Ae(this.scope.ownerPubKey,A.lockNftMint,jt).publicKey,N=K.getTickArrayStartIndexByTick(P.tickLower,k.config.tickSpacing),O=K.getTickArrayStartIndexByTick(P.tickUpper,k.config.tickSpacing),{publicKey:L}=U(new C(k.programId),A.poolId,N),{publicKey:Z}=U(new C(k.programId),A.poolId,O),{publicKey:Q}=We(new C(k.programId),A.poolId,P.tickLower,P.tickUpper),ae=Ut(Lt,A.lockNftMint).publicKey,ee=re.harvestLockPositionInstructionV2({programId:Lt,auth:dn,lockPositionId:ae,clmmProgram:mn,lockOwner:A.lockOwner,lockNftMint:A.lockNftMint,lockNftAccount:B,positionNftAccount:A.nftAccount,positionId:A.positionId,poolId:A.poolId,protocolPosition:Q,vaultA:new C(k.vault.A),vaultB:new C(k.vault.B),tickArrayLower:L,tickArrayUpper:Z,userVaultA:b,userVaultB:h,mintA:new C(k.mintA.address),mintB:new C(k.mintB.address),rewardAccounts:T});m.addInstruction({instructions:[ee],instructionTypes:[ce.ClmmHarvestLockPosition],lookupTableAddress:k.lookupTableAccount?[k.lookupTableAccount]:[]})}else{let B=re.decreaseLiquidityInstructions({poolInfo:g,poolKeys:k,ownerPosition:P,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:h,rewardAccounts:w},liquidity:new Ke(0),amountMinA:new Ke(0),amountMinB:new Ke(0)});m.addInstruction(B)}}}return c===0?m.sizeCheckBuildV0({computeBudgetConfig:u}):m.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Vt(e).publicKey);return t?ur.decode(t.data).whitelistMints.filter(i=>!i.equals(C.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new Ke(1))).map(s=>Ie(new C(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=Ht.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await ot(this.scope.connection,e.map(o=>({pubkey:new C(o)})),t),i={};for(let o=0;o<e.length;o++){let s=n[o];if(s===null||!s.accountInfo)throw Error("fetch pool info error: "+String(e[o]));let a=kn.decode(s.accountInfo.data),c=F.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();i[String(e[o])]={...a,currentPrice:c,programId:s.accountInfo.owner}}return i}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(c=>e[c].ammConfig.toBase58())),i=await ot(this.scope.connection,Array.from(n).map(c=>({pubkey:new C(c)}))),o={};i.forEach(c=>{!c.accountInfo||(o[c.pubkey.toBase58()]=ar.decode(c.accountInfo.data))});let s=await de.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(c=>{var m,d,f,g;let[u,l]=[e[c].mintA.toBase58(),e[c].mintB.toBase58()];return{id:c,programId:e[c].programId.toBase58(),mintA:bn({address:u,decimals:e[c].mintDecimalsA,programId:t[u].programId.toBase58()||jt.toBase58(),extensions:{feeConfig:(m=t[u])!=null&&m.feeConfig?zn((d=t[u])==null?void 0:d.feeConfig):void 0}}),mintB:bn({address:l,decimals:e[c].mintDecimalsB,programId:t[l].programId.toBase58()||jt.toBase58(),extensions:{feeConfig:(f=t[l])!=null&&f.feeConfig?zn((g=t[l])==null?void 0:g.feeConfig):void 0}}),price:e[c].currentPrice,config:{...o[e[c].ammConfig.toBase58()],id:e[c].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]}}})}),a=await de.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(s)});return{computeClmmPoolInfo:s,computePoolTickData:a}}async getPoolInfoFromRpc(e){var l;let t=await this.getRpcClmmPoolInfo({poolId:e}),n=new Set([t.mintA.toBase58(),t.mintB.toBase58()]),i=await xi({connection:this.scope.connection,mints:Array.from(n).map(m=>new C(m))}),{computeClmmPoolInfo:o,computePoolTickData:s}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:i}),a=await ot(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),c=or(o[e]);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");c.mintAmountA=Number(pr.decode(a[0].accountInfo.data).amount.toString()),c.mintAmountB=Number(pr.decode((l=a[1].accountInfo)==null?void 0:l.data).amount.toString());let u={...o[e],id:e,programId:t.programId.toBase58(),openTime:t.startTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},config:c.config,rewardInfos:o[e].rewardInfos.filter(m=>!m.tokenVault.equals(C.default)).map(m=>({mint:bn({address:m.tokenMint.toBase58(),programId:jt.toBase58(),decimals:10}),vault:m.tokenVault.toBase58()}))};return{poolInfo:c,poolKeys:u,computePoolInfo:o[e],tickData:s}}};export{gr as Clmm};
/*!
 *  decimal.js v10.4.3
 *  An arbitrary-precision Decimal type for JavaScript.
 *  https://github.com/MikeMcl/decimal.js
 *  Copyright (c) 2022 Michael Mclaughlin <M8ch88l@gmail.com>
 *  MIT Licence
 */
//# sourceMappingURL=clmm.mjs.map