@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 130 kB
JavaScript
var Ci=Object.defineProperty,Li=Object.defineProperties;var Mi=Object.getOwnPropertyDescriptors;var Cn=Object.getOwnPropertySymbols;var Ri=Object.prototype.hasOwnProperty,Ei=Object.prototype.propertyIsEnumerable;var Ln=(i,e,t)=>e in i?Ci(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,$=(i,e)=>{for(var t in e||(e={}))Ri.call(e,t)&&Ln(i,t,e[t]);if(Cn)for(var t of Cn(e))Ei.call(e,t)&&Ln(i,t,e[t]);return i},se=(i,e)=>Li(i,Mi(e));import{Keypair as Ht,PublicKey as P,SystemProgram as je,TransactionInstruction as Pe}from"@solana/web3.js";import Nn from"bn.js";import{PublicKey as vi}from"@solana/web3.js";import{get as Mn,set as Fi}from"lodash";var Zt=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}},Rn={},_i={};function Be(i){let e=Mn(Rn,i);if(!e){let t=Mn(_i,i);e=new Zt({name:i,logLevel:t}),Fi(Rn,i,e)}return e}import{MINT_SIZE as Oo,TOKEN_PROGRAM_ID as Do,getTransferFeeConfig as qo,unpackMint as Vo}from"@solana/spl-token";var Yt=Be("Raydium_accountInfo_util");async function Ze(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=$({batchRequest:!1},t),s=Qt(e,o),a=new Array(s.length).fill([]);if(n){let u=s.map(m=>{let d=i._buildArgs([m.map(f=>f.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=Qt(u,10);a=(await(await Promise.all(c.map(async m=>await i._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&Yt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:f,executable:b,lamports:p,owner:y,rentEpoch:g}=d;return f.length!==2&&f[1]!=="base64"&&Yt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(f[0],"base64"),executable:b,lamports:p,owner:new vi(y),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(u=>i.getMultipleAccountsInfo(u,r)))}catch(u){u instanceof Error&&Yt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function Jt(i,e,t){let n=await Ze(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>se($({},r),{accountInfo:n[o]}))}import Xe from"bn.js";var mt=9e15,$e=1e9,en="0123456789abcdef",Mt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Rt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",tn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-mt,maxE:mt,crypto:!1},vn,Ge,M=!0,Ft="[DecimalError] ",Je=Ft+"Invalid argument: ",Wn=Ft+"Precision limit exceeded",On=Ft+"crypto unavailable",Dn="[object Decimal]",Ae=Math.floor,fe=Math.pow,Wi=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Oi=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Di=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,qn=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ve=1e7,L=7,qi=9007199254740991,Vi=Mt.length-1,nn=Rt.length-1,h={toStringTag:Dn};h.absoluteValue=h.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),S(i)};h.ceil=function(){return S(new this.constructor(this),this.e+1,2)};h.clampedTo=h.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(Je+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};h.comparedTo=h.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};h.cosine=h.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+L,n.rounding=1,t=Gi(n,zn(n,t)),n.precision=i,n.rounding=e,S(Ge==2||Ge==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};h.cubeRoot=h.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(M=!1,o=l.s*fe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=we(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=fe(t,1/3),i=Ae((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=Q(c.plus(l).times(a),c.plus(u),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(S(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(S(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return M=!0,S(n,i,m.rounding,e)};h.decimalPlaces=h.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-Ae(this.e/L))*L,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};h.dividedBy=h.div=function(i){return Q(this,new this.constructor(i))};h.dividedToIntegerBy=h.divToInt=function(i){var e=this,t=e.constructor;return S(Q(e,new t(i),0,1,1),t.precision,t.rounding)};h.equals=h.eq=function(i){return this.cmp(i)===0};h.floor=function(){return S(new this.constructor(this),this.e+1,3)};h.greaterThan=h.gt=function(i){return this.cmp(i)>0};h.greaterThanOrEqualTo=h.gte=function(i){var e=this.cmp(i);return e==1||e===0};h.hyperbolicCosine=h.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/vt(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=dt(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return S(o,s.precision=t,s.rounding=n,!0)};h.hyperbolicSine=h.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=dt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/vt(5,i)),r=dt(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,S(r,e,t,!0)};h.hyperbolicTangent=h.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,Q(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};h.inverseCosine=h.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?_e(t,r,o):new t(0):new t(NaN):e.isZero()?_e(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=_e(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};h.inverseHyperbolicCosine=h.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,M=!1,t=t.times(t).minus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};h.inverseHyperbolicSine=h.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,M=!1,t=t.times(t).plus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln())};h.inverseHyperbolicTangent=h.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?S(new o(r),i,e,!0):(o.precision=t=n-r.e,r=Q(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};h.inverseSine=h.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=_e(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};h.inverseTangent=h.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=nn)return s=_e(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=nn)return s=_e(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/L+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(M=!1,e=Math.ceil(a/L),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),M=!0,S(s,l.precision=m,l.rounding=d,!0)};h.isFinite=function(){return!!this.d};h.isInteger=h.isInt=function(){return!!this.d&&Ae(this.e/L)>this.d.length-2};h.isNaN=function(){return!this.s};h.isNegative=h.isNeg=function(){return this.s<0};h.isPositive=h.isPos=function(){return this.s>0};h.isZero=function(){return!!this.d&&this.d[0]===0};h.lessThan=h.lt=function(i){return this.cmp(i)<0};h.lessThanOrEqualTo=h.lte=function(i){return this.cmp(i)<1};h.logarithm=h.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,f=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if(M=!1,a=m+f,s=Qe(c,a),n=e?Et(l,a+10):Qe(i,a),u=Q(s,n,a,1),bt(u.d,r=m,d))do if(a+=10,s=Qe(c,a),n=e?Et(l,a+10):Qe(i,a),u=Q(s,n,a,1),!o){+we(u.d).slice(r+1,r+15)+1==1e14&&(u=S(u,m+1,0));break}while(bt(u.d,r+=10,d));return M=!0,S(u,m,d)};h.minus=h.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,f=this,b=f.constructor;if(i=new b(i),!f.d||!i.d)return!f.s||!i.s?i=new b(NaN):f.d?i.s=-i.s:i=new b(i.d||f.s!==i.s?f:NaN),i;if(f.s!=i.s)return i.s=-i.s,f.plus(i);if(c=f.d,d=i.d,a=b.precision,u=b.rounding,!c[0]||!d[0]){if(d[0])i.s=-i.s;else if(c[0])i=new b(f);else return new b(u===3?-0:0);return M?S(i,a,u):i}if(t=Ae(i.e/L),l=Ae(f.e/L),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/L),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,i.s=-i.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(r=n;r&&c[--r]===0;)c[r]=ve-1;--c[r],c[n]+=ve}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=_t(c,t),M?S(i,a,u):i):new b(u===3?-0:0)};h.modulo=h.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?S(new n(t),n.precision,n.rounding):(M=!1,n.modulo==9?(e=Q(t,i.abs(),0,3,1),e.s*=i.s):e=Q(t,i,0,n.modulo,1),e=e.times(i),M=!0,t.minus(e))};h.naturalExponential=h.exp=function(){return rn(this)};h.naturalLogarithm=h.ln=function(){return Qe(this)};h.negated=h.neg=function(){var i=new this.constructor(this);return i.s=-i.s,S(i)};h.plus=h.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,d=m.constructor;if(i=new d(i),!m.d||!i.d)return!m.s||!i.s?i=new d(NaN):m.d||(i=new d(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(i=new d(m)),M?S(i,a,u):i;if(o=Ae(m.e/L),n=Ae(i.e/L),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/L),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/ve|0,c[r]%=ve;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=_t(c,n),M?S(i,a,u):i};h.precision=h.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(Je+i);return t.d?(e=Vn(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};h.round=function(){var i=this,e=i.constructor;return S(new e(i),i.e+1,e.rounding)};h.sine=h.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+L,n.rounding=1,t=Xi(n,zn(n,t)),n.precision=i,n.rounding=e,S(Ge>2?t.neg():t,i,e,!0)):new n(NaN)};h.squareRoot=h.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(M=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=we(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ae((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(Q(s,o,t+2,1)).times(.5),we(o.d).slice(0,t)===(e=we(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(S(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(S(n,u+1,1),i=!n.times(n).eq(s));break}return M=!0,S(n,u,l.rounding,i)};h.tangent=h.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=Q(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,S(Ge==2||Ge==4?t.neg():t,i,e,!0)):new n(NaN)};h.times=h.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,d=l.d,f=(i=new m(i)).d;if(i.s*=l.s,!d||!d[0]||!f||!f[0])return new m(!i.s||d&&!d[0]&&!f||f&&!f[0]&&!d?NaN:!d||!f?i.s/0:i.s*0);for(t=Ae(l.e/L)+Ae(i.e/L),u=d.length,c=f.length,u<c&&(o=d,d=f,f=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=o[r]+f[n]*d[r-n-1]+e,o[r--]=a%ve|0,e=a/ve|0;o[r]=(o[r]+e)%ve|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=_t(o,t),M?S(i,m.precision,m.rounding):i};h.toBinary=function(i,e){return sn(this,2,i,e)};h.toDecimalPlaces=h.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ke(i,0,$e),e===void 0?e=n.rounding:Ke(e,0,8),S(t,i+t.e+1,e))};h.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=De(n,!0):(Ke(i,0,$e),e===void 0?e=r.rounding:Ke(e,0,8),n=S(new r(n),i+1,e),t=De(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};h.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=De(r):(Ke(i,0,$e),e===void 0?e=o.rounding:Ke(e,0,8),n=S(new o(r),i+r.e+1,e),t=De(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};h.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,f=this,b=f.d,p=f.constructor;if(!b)return new p(f);if(c=t=new p(1),n=u=new p(0),e=new p(n),o=e.e=Vn(b)-f.e-1,s=o%L,e.d[0]=fe(10,s<0?L+s:s),i==null)i=o>0?e:c;else{if(a=new p(i),!a.isInt()||a.lt(c))throw Error(Je+a);i=a.gt(e)?o>0?e:c:a}for(M=!1,a=new p(we(b)),l=p.precision,p.precision=o=b.length*L*2;m=Q(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=Q(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=f.s,d=Q(c,n,o,1).minus(f).abs().cmp(Q(u,t,o,1).minus(f).abs())<1?[c,n]:[u,t],p.precision=l,M=!0,d};h.toHexadecimal=h.toHex=function(i,e){return sn(this,16,i,e)};h.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:Ke(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?(M=!1,t=Q(t,i,0,e,1).times(i),M=!0,S(t)):(i.s=t.s,t=i),t};h.toNumber=function(){return+this};h.toOctal=function(i,e){return sn(this,8,i,e)};h.toPower=h.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(fe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return S(a,n,o);if(e=Ae(i.e/L),e>=i.d.length-1&&(t=c<0?-c:c)<=qi)return r=Gn(u,a,t,n),i.s<0?new u(1).div(r):S(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=fe(+a,c),e=t==0||!isFinite(t)?Ae(c*(Math.log("0."+we(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(M=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=rn(i.times(Qe(a,n+t)),n),r.d&&(r=S(r,n+5,1),bt(r.d,n,o)&&(e=n+10,r=S(rn(i.times(Qe(a,e+t)),e),e+5,1),+we(r.d).slice(n+1,n+15)+1==1e14&&(r=S(r,n+1,0)))),r.s=s,M=!0,u.rounding=o,S(r,n,o))};h.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=De(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ke(i,1,$e),e===void 0?e=r.rounding:Ke(e,0,8),n=S(new r(n),i,e),t=De(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};h.toSignificantDigits=h.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Ke(i,1,$e),e===void 0?e=n.rounding:Ke(e,0,8)),S(new n(t),i,e)};h.toString=function(){var i=this,e=i.constructor,t=De(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};h.truncated=h.trunc=function(){return S(new this.constructor(this),this.e+1,1)};h.valueOf=h.toJSON=function(){var i=this,e=i.constructor,t=De(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function we(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=L-n.length,t&&(o+=Ye(t)),o+=n;s=i[e],n=s+"",t=L-n.length,t&&(o+=Ye(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ke(i,e,t){if(i!==~~i||i<e||i>t)throw Error(Je+i)}function bt(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=L,r=0):(r=Math.ceil((e+1)/L),e%=L),o=fe(10,L-e),a=i[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(i[r+1]/o/100|0)==fe(10,e-2)-1||(a==o/2||a==0)&&(i[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(i[r+1]/o/1e3|0)==fe(10,e-3)-1,s}function Lt(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=en.indexOf(i.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function Gi(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/vt(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=dt(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var Q=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,u){var c,l,m,d,f,b,p,y,g,A,w,T,N,k,K,C,F,G,R,ce,J=n.constructor,be=n.s==r.s?1:-1,oe=n.d,j=r.d;if(!oe||!oe[0]||!j||!j[0])return new J(!n.s||!r.s||(oe?j&&oe[0]==j[0]:!j)?NaN:oe&&oe[0]==0||!j?be*0:be/0);for(u?(f=1,l=n.e-r.e):(u=ve,f=L,l=Ae(n.e/f)-Ae(r.e/f)),R=j.length,F=oe.length,g=new J(be),A=g.d=[],m=0;j[m]==(oe[m]||0);m++);if(j[m]>(oe[m]||0)&&l--,o==null?(k=o=J.precision,s=J.rounding):a?k=o+(n.e-r.e)+1:k=o,k<0)A.push(1),b=!0;else{if(k=k/f+2|0,m=0,R==1){for(d=0,j=j[0],k++;(m<F||d)&&k--;m++)K=d*u+(oe[m]||0),A[m]=K/j|0,d=K%j|0;b=d||m<F}else{for(d=u/(j[0]+1)|0,d>1&&(j=i(j,d,u),oe=i(oe,d,u),R=j.length,F=oe.length),C=R,w=oe.slice(0,R),T=w.length;T<R;)w[T++]=0;ce=j.slice(),ce.unshift(0),G=j[0],j[1]>=u/2&&++G;do d=0,c=e(j,w,R,T),c<0?(N=w[0],R!=T&&(N=N*u+(w[1]||0)),d=N/G|0,d>1?(d>=u&&(d=u-1),p=i(j,d,u),y=p.length,T=w.length,c=e(p,w,y,T),c==1&&(d--,t(p,R<y?ce:j,y,u))):(d==0&&(c=d=1),p=j.slice()),y=p.length,y<T&&p.unshift(0),t(w,p,T,u),c==-1&&(T=w.length,c=e(j,w,R,T),c<1&&(d++,t(w,R<T?ce:j,T,u))),T=w.length):c===0&&(d++,w=[0]),A[m++]=d,c&&w[0]?w[T++]=oe[C]||0:(w=[oe[C]],T=1);while((C++<F||w[0]!==void 0)&&k--);b=w[0]!==void 0}A[0]||A.shift()}if(f==1)g.e=l,vn=b;else{for(m=1,d=A[0];d>=10;d/=10)m++;g.e=m+l*f-1,S(g,a?o+g.e+1:o,s,b)}return g}}();function S(i,e,t,n){var r,o,s,a,u,c,l,m,d,f=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=L,s=e,l=m[d=0],u=l/fe(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/L),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,r=1,o%=L,s=o-L+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;o%=L,s=o-L+r,u=s<0?0:l/fe(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%fe(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/fe(10,r-s):0:m[d-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=fe(10,(L-e%L)%L),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=fe(10,L-o),m[d]=s>0?(l/fe(10,r-s)%fe(10,s)|0)*a:0),c)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&&(i.e++,m[0]==ve&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=ve)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return M&&(i.e>f.maxE?(i.d=null,i.e=NaN):i.e<f.minE&&(i.e=0,i.d=[0])),i}function De(i,e,t){if(!i.isFinite())return Xn(i);var n,r=i.e,o=we(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Ye(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+Ye(-r-1)+o,t&&(n=t-s)>0&&(o+=Ye(n))):r>=s?(o+=Ye(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+Ye(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=Ye(n))),o}function _t(i,e){var t=i[0];for(e*=L;t>=10;t/=10)e++;return e}function Et(i,e,t){if(e>Vi)throw M=!0,t&&(i.precision=t),Error(Wn);return S(new i(Mt),e,1,!0)}function _e(i,e,t){if(e>nn)throw Error(Wn);return S(new i(Rt),e,t,!0)}function Vn(i){var e=i.length-1,t=e*L+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function Ye(i){for(var e="";i--;)e+="0";return e}function Gn(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/L+4);for(M=!1;;){if(t%2&&(o=o.times(e),Fn(o.d,s)&&(r=!0)),t=Ae(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Fn(e.d,s)}return M=!0,o}function En(i){return i.d[i.d.length-1]&1}function Un(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function rn(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,d=i.constructor,f=d.rounding,b=d.precision;if(!i.d||!i.d[0]||i.e>17)return new d(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(M=!1,u=b):u=e,a=new d(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(fe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=S(o.times(i),u,1),t=t.times(++l),a=s.plus(Q(o,t,u,1)),we(a.d).slice(0,u)===we(s.d).slice(0,u)){for(r=m;r--;)s=S(s.times(s),u,1);if(e==null)if(c<3&&bt(s.d,u-n,f,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return S(s,d.precision=b,f,M=!0);else return d.precision=b,s}s=a}}function Qe(i,e){var t,n,r,o,s,a,u,c,l,m,d,f=1,b=10,p=i,y=p.d,g=p.constructor,A=g.rounding,w=g.precision;if(p.s<0||!y||!y[0]||!p.e&&y[0]==1&&y.length==1)return new g(y&&!y[0]?-1/0:p.s!=1?NaN:y?0:p);if(e==null?(M=!1,l=w):l=e,g.precision=l+=b,t=we(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(i),t=we(p.d),n=t.charAt(0),f++;o=p.e,n>1?(p=new g("0."+t),o++):p=new g(n+"."+t.slice(1))}else return c=Et(g,l+2,w).times(o+""),p=Qe(new g(n+"."+t.slice(1)),l-b).plus(c),g.precision=w,e==null?S(p,w,A,M=!0):p;for(m=p,u=s=p=Q(p.minus(1),p.plus(1),l,1),d=S(p.times(p),l,1),r=3;;){if(s=S(s.times(d),l,1),c=u.plus(Q(s,new g(r),l,1)),we(c.d).slice(0,l)===we(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Et(g,l+2,w).times(o+""))),u=Q(u,new g(f),l,1),e==null)if(bt(u.d,l-b,A,a))g.precision=l+=b,c=s=p=Q(m.minus(1),m.plus(1),l,1),d=S(p.times(p),l,1),r=a=1;else return S(u,g.precision=w,A,M=!0);else return g.precision=w,u;u=c,r+=2}}function Xn(i){return String(i.s*i.s/0)}function on(i,e){var t,n,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%L,t<0&&(n+=L),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=L;n<r;)i.d.push(+e.slice(n,n+=L));e=e.slice(n),n=L-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),M&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function Ui(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),qn.test(e))return on(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(Oi.test(e))t=16,e=e.toLowerCase();else if(Wi.test(e))t=2;else if(Di.test(e))t=8;else throw Error(Je+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Gn(n,new n(t),o,o*2)),c=Lt(e,t,ve),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=_t(c,l),i.d=c,M=!1,s&&(i=Q(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?fe(2,u):gt.pow(2,u))),M=!0,i)}function Xi(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:dt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/vt(5,t)),e=dt(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function dt(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/L);for(M=!1,u=t.times(t),a=new i(n);;){if(s=Q(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=Q(s.times(u),new i(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,c++}return M=!0,s.d.length=m+1,s}function vt(i,e){for(var t=i;--e;)t*=i;return t}function zn(i,e){var t,n=e.s<0,r=_e(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return Ge=n?4:1,e;if(t=e.divToInt(r),t.isZero())Ge=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return Ge=En(t)?n?2:3:n?4:1,e;Ge=En(t)?n?1:4:n?3:2}return e.minus(r).abs()}function sn(i,e,t,n){var r,o,s,a,u,c,l,m,d,f=i.constructor,b=t!==void 0;if(b?(Ke(t,1,$e),n===void 0?n=f.rounding:Ke(n,0,8)):(t=f.precision,n=f.rounding),!i.isFinite())l=Xn(i);else{for(l=De(i),s=l.indexOf("."),b?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new f(1),d.e=l.length-s,d.d=Lt(De(d),10,r),d.e=d.d.length),m=Lt(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=b?"0p+0":"0";else{if(s<0?o--:(i=new f(i),i.d=m,i.e=o,i=Q(i,d,t,n,0,r),m=i.d,o=i.e,c=vn),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=en.charAt(m[s]);if(b){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Lt(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=en.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>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function Fn(i,e){if(i.length>e)return i.length=e,!0}function zi(i){return new this(i).abs()}function Hi(i){return new this(i).acos()}function ji(i){return new this(i).acosh()}function Zi(i,e){return new this(i).plus(e)}function Yi(i){return new this(i).asin()}function Qi(i){return new this(i).asinh()}function Ji(i){return new this(i).atan()}function $i(i){return new this(i).atanh()}function er(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=_e(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?_e(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=_e(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(Q(i,e,o,1)),e=_e(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(Q(i,e,o,1)),t}function tr(i){return new this(i).cbrt()}function nr(i){return S(i=new this(i),i.e+1,2)}function ir(i,e,t){return new this(i).clamp(e,t)}function rr(i){if(!i||typeof i!="object")throw Error(Ft+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,$e,"rounding",0,8,"toExpNeg",-mt,0,"toExpPos",0,mt,"maxE",0,mt,"minE",-mt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=tn[t]),(n=i[t])!==void 0)if(Ae(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Je+t+": "+n);if(t="crypto",r&&(this[t]=tn[t]),(n=i[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(On);else this[t]=!1;else throw Error(Je+t+": "+n);return this}function or(i){return new this(i).cos()}function sr(i){return new this(i).cosh()}function Hn(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,_n(o)){c.s=o.s,M?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;M?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return on(c,o.toString())}else if(u!=="string")throw Error(Je+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),qn.test(o)?on(c,o):Ui(c,o)}if(r.prototype=h,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=rr,r.clone=Hn,r.isDecimal=_n,r.abs=zi,r.acos=Hi,r.acosh=ji,r.add=Zi,r.asin=Yi,r.asinh=Qi,r.atan=Ji,r.atanh=$i,r.atan2=er,r.cbrt=tr,r.ceil=nr,r.clamp=ir,r.cos=or,r.cosh=sr,r.div=ar,r.exp=ur,r.floor=cr,r.hypot=lr,r.ln=mr,r.log=dr,r.log10=pr,r.log2=fr,r.max=br,r.min=gr,r.mod=yr,r.mul=hr,r.pow=wr,r.random=kr,r.round=Pr,r.sign=Ar,r.sin=Tr,r.sinh=xr,r.sqrt=Br,r.sub=Sr,r.sum=Ir,r.tan=Nr,r.tanh=Kr,r.trunc=Cr,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function ar(i,e){return new this(i).div(e)}function ur(i){return new this(i).exp()}function cr(i){return S(i=new this(i),i.e+1,3)}function lr(){var i,e,t=new this(0);for(M=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return M=!0,new this(1/0);t=e}return M=!0,t.sqrt()}function _n(i){return i instanceof gt||i&&i.toStringTag===Dn||!1}function mr(i){return new this(i).ln()}function dr(i,e){return new this(i).log(e)}function fr(i){return new this(i).log(2)}function pr(i){return new this(i).log(10)}function br(){return Un(this,arguments,"lt")}function gr(){return Un(this,arguments,"gt")}function yr(i,e){return new this(i).mod(e)}function hr(i,e){return new this(i).mul(e)}function wr(i,e){return new this(i).pow(e)}function kr(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ke(i,1,$e),n=Math.ceil(i/L),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error(On);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=L,n&&i&&(r=fe(10,L-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=L)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<L&&(t-=L-n)}return s.e=t,s.d=a,s}function Pr(i){return S(i=new this(i),i.e+1,this.rounding)}function Ar(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Tr(i){return new this(i).sin()}function xr(i){return new this(i).sinh()}function Br(i){return new this(i).sqrt()}function Sr(i,e){return new this(i).sub(e)}function Ir(){var i=0,e=arguments,t=new this(e[i]);for(M=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return M=!0,S(t,this.precision,this.rounding)}function Nr(i){return new this(i).tan()}function Kr(i){return new this(i).tanh()}function Cr(i){return S(i=new this(i),i.e+1,1)}h[Symbol.for("nodejs.util.inspect.custom")]=h.toString;h[Symbol.toStringTag]="Decimal";var gt=h.constructor=Hn(tn);Mt=new gt(Mt);Rt=new gt(Rt);var B=gt;import Wr from"big.js";import Dt from"bn.js";import Lr from"toformat";var Mr=Lr,yt=Mr;import Ot from"big.js";import Er from"bn.js";import Fr from"decimal.js-light";import ht from"bn.js";var jn=9007199254740991;function ge(i){let e=Be("Raydium_parseBigNumberish");if(i instanceof ht)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new ht(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=jn||i<=-jn)&&e.logWithError(`BigNumberish number overflow: ${i}`),new ht(String(i))):typeof i=="bigint"?new ht(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new ht(0))}var Wt=Be("module/fraction"),an=yt(Ot),wt=yt(Fr),_r={[0]:wt.ROUND_DOWN,[1]:wt.ROUND_HALF_UP,[2]:wt.ROUND_UP},vr={[0]:Ot.roundDown,[1]:Ot.roundHalfUp,[2]:Ot.roundUp},X=class{constructor(e,t=new Er(1)){this.numerator=ge(e),this.denominator=ge(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new X(this.denominator,this.numerator)}add(e){let t=e instanceof X?e:new X(ge(e));return this.denominator.eq(t.denominator)?new X(this.numerator.add(t.numerator),this.denominator):new X(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof X?e:new X(ge(e));return this.denominator.eq(t.denominator)?new X(this.numerator.sub(t.numerator),this.denominator):new X(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof X?e:new X(ge(e));return new X(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof X?e:new X(ge(e));return new X(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Wt.logWithError(`${e} is not an integer.`),e<=0&&Wt.logWithError(`${e} is not positive.`),wt.set({precision:e+1,rounding:_r[n]});let r=new wt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Wt.logWithError(`${e} is not an integer.`),e<0&&Wt.logWithError(`${e} is negative.`),an.DP=e,an.RM=vr[n]||1,new an(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Or=Be("Raydium_amount"),Zn=yt(Wr);function Dr(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):Or.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var Te=class extends X{constructor(t,n,r=!0,o){let s=new Dt(0),a=un.pow(new Dt(t.decimals));if(r)s=ge(n);else{let u=new Dt(0),c=new Dt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Dr(n.toString(),t.decimals);u=ge(l),c=ge(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=Be(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 Te(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Te(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return Zn.DP=this.token.decimals,new Zn(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as qr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Yn}from"@solana/spl-token";var Qn={chainId:101,address:qr.default.toBase58(),programId:Yn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},rt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Yn.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as dn}from"@solana/web3.js";import{PublicKey as ne,SystemProgram as Jn,SYSVAR_RENT_PUBKEY as Vr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Gr}from"@solana/spl-token";function cn({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Ps=[cn({pubkey:Gr,isWritable:!1}),cn({pubkey:Jn.programId,isWritable:!1}),cn({pubkey:Vr,isWritable:!1})];function ln({publicKey:i,transformSol:e}){let t=$n(i.toString());if(t instanceof ne)return e&&t.equals(kt)?$t:t;if(e&&t.toString()===kt.toBase58())return $t;if(typeof t=="string"){if(t===ne.default.toBase58())return ne.default;try{return new ne(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function $n(i){try{return new ne(i)}catch{return i}}var qt=new ne("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),mn=new ne("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),et=new ne("SysvarRent111111111111111111111111111111111"),As=new ne("SysvarC1ock11111111111111111111111111111111"),ot=new ne("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ts=new ne("Sysvar1nstructions1111111111111111111111111"),xs=Jn.programId,Bs=new ne("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ss=new ne("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Is=new ne("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ns=new ne("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ks=new ne("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Cs=new ne("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ls=new ne("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ms=new ne("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Rs=new ne("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Es=new ne("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Fs=new ne("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),$t=new ne("So11111111111111111111111111111111111111112"),kt=ne.default;function Ct(i){return ln({publicKey:i,transformSol:!0})}var fn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===kt.toBase58()||e instanceof dn&&kt.equals(e)){this.decimals=rt.decimals,this.symbol=rt.symbol,this.name=rt.name,this.mint=new dn(rt.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=o?dn.default:ln({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ue=fn;Ue.WSOL=new fn(se($({},rt),{mint:rt.address}));var pn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Vt=pn;Vt.SOL=new pn(Qn);import Ur from"bn.js";var ei=new X(new Ur(100)),tt=class extends X{toSignificant(e=5,t,n){return this.mul(ei).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(ei).toFixed(e,t,n)}};var Xr=Be("Raydium_price"),We=class extends X{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new X(bn(n.decimals),bn(r.decimals))}get raw(){return new X(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new We({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Xr.logWithError("mul token not equals");let n=super.mul(t);return new We({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};import{PublicKey as fa}from"@solana/web3.js";import ba from"bn.js";var zr=new Xe(0),Ra=new Xe(1),Ea=new Xe(2),Fa=new Xe(3),_a=new Xe(5),un=new Xe(10),va=new Xe(100),Wa=new Xe(1e3),Oa=new Xe(1e4);function bn(i){return un.pow(ge(i))}function Qt(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as jr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zr}from"@solana/spl-token";import{ComputeBudgetProgram as Ha,Keypair as Ya,PublicKey as Hr,Transaction as Ja,TransactionMessage as eu,VersionedTransaction as tu}from"@solana/web3.js";var ye={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{TOKEN_PROGRAM_ID as ou}from"@solana/spl-token";var su=Be("Raydium_txUtil");function Se(i,e){let[t,n]=Hr.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function me(i,e,t){return Se([i.toBuffer(),(t!=null?t:Zr).toBuffer(),e.toBuffer()],new jr("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as _}from"@solana/web3.js";var fu=new _("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),pu=new _("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),bu=new _("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),gu=new _("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),yu=new _("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),hu=new _("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),wu=new _("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ku=new _("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Pu=new _("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Au=new _("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Tu=new _("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),xu=new _("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Bu=new _("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Su=new _("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Iu=new _("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Nu=new _("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Ku=new _("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Cu=new _("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Lu=new _("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Mu=new _("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ru=new _("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Eu=new _("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Yr=new _("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Qr=new _("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Jr=new _("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Fu=new _("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),$r=new _("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),_u=new _("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),eo=new _("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var vu={SERUM_MARKET:_.default,OPENBOOK_MARKET:new _("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:_.default,FarmV3:new _("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new _("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new _("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new _("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new _("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new _("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new _("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new _("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new _("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Yr,CREATE_CPMM_POOL_AUTH:Qr,CREATE_CPMM_POOL_FEE_ACC:Jr,FEE_DESTINATION_ID:new _("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:$r,LCOK_CPMM_AUTH:eo};import Oe from"bn.js";var Pt=1e4;function le(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=se($({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new Oe(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Pt){let u=new Oe(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=gn(i.mul(new Oe(Pt)),new Oe(Pt-o.transferFeeBasisPoints)),c=new Oe(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=gn(l.mul(new Oe(o.transferFeeBasisPoints)),new Oe(Pt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=gn(i.mul(new Oe(o.transferFeeBasisPoints)),new Oe(Pt)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function nt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function gn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Oe(0))?t.add(new Oe(1)):t}import{PublicKey as to,AddressLookupTableAccount as ti}from"@solana/web3.js";var no={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new ti({key:new to("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:ti.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 ic,sendAndConfirmTransaction as rc,SystemProgram as ac,Transaction as uc,TransactionMessage as lc,VersionedTransaction as mc}from"@solana/web3.js";import fc from"axios";import{ASSOCIATED_TOKEN_PROGRAM_ID as Kt,TOKEN_2022_PROGRAM_ID as ue,TOKEN_PROGRAM_ID as Z}from"@solana/spl-token";import{PublicKey as mo}from"@solana/web3.js";import oi,{isBN as si}from"bn.js";import{bits as Wc,BitStructure as Oc,blob as io,Blob as Dc,cstr as qc,f32 as Vc,f32be as Gc,f64 as Uc,f64be as Xc,greedy as zc,Layout as ro,ns64 as Hc,ns64be as jc,nu64 as Zc,nu64be as Yc,offset as Qc,s16 as Jc,s16be as $c,s24 as el,s24be as tl,s32 as oo,s32be as nl,s40 as il,s40be as rl,s48 as ol,s48be as sl,s8 as al,seq as so,struct as ul,Structure as ao,u16 as uo,u16be as cl,u24 as ll,u24be as ml,u32 as dl,u32be as fl,u40 as pl,u40be as bl,u48 as gl,u48be as yl,u8 as co,UInt as lo,union as hl,Union as wl,unionLayoutDiscriminator as kl,utf8 as Pl}from"@solana/buffer-layout";var yn=ro,ni=ao;var hn=lo;var ii=co,At=uo;var ee=oo;var ri=so;var Ce=io;var ft=class extends yn{constructor(t,n,r){super(t,r);this.blob=Ce(t),this.signed=n}decode(t,n=0){let r=new oi(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new oi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function ae(i){return new hn(1,i)}function pt(i){return new hn(4,i)}function I(i){return new ft(8,!1,i)}function q(i){return new ft(16,!1,i)}function ai(i){return new ft(8,!0,i)}function ui(i){return new ft(16,!0,i)}var Gt=class extends yn{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function Y(i){return new Gt(Ce(32),e=>new mo(e),e=>e.toBuffer(),i)}function Ie(i){return new Gt(ii(),fo,po,i)}function fo(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function po(i){return i?1:0}var wn=class extends ni{decode(e,t){return super.decode(e,t)}};function z(i,e,t){return new wn(i,e,t)}function ie(i,e,t){let n,r=typeof e=="number"?e:si(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=si(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 ri(i,r,t)}import xo from"bn.js";import Fe from"bn.js";var re=new Fe(0),qe=new Fe(1),ze=new Fe(-1),Le=new Fe(1).shln(64),Ut=new Fe(1).shln(128),kn=Le.sub(qe),Tt=64,ci=Ut.subn(1),xe=-443636,Ne=-xe,st=new Fe("4295048016"),at=new Fe("79226673521066979257578248091"),Fl=new Fe("4295048017"),_l=new Fe("79226673521066979257578248090"),li=16,mi="59543866431248",di="184467440737095516",fi="15793534762490258745",Xt=new Fe(10).pow(new Fe(6));var vl=new Fe("18446744073700000000");import W from"bn.js";function zt(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Pn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function An(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function xt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function pi(i,e){return xt(i,e)?null:Pn(i,e)}function bi(i,e){return xt(i,e)?null:An(i,e)}var Gl=Buffer.from("amm_config","utf8"),bo=Buffer.from("pool","utf8"),go=Buffer.from("pool_vault","utf8"),yo=Buffer.from("pool_reward_vault","utf8"),gi=Buffer.from("position","utf8"),ho=Buffer.from("tick_array","utf8"),wo=Buffer.from("operation","utf8"),ko=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Po=Buffer.from("observation","utf8");function yi(i,e,t,n){return Se([bo,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Tn(i,e,t){return Se([go,e.toBuffer(),t.toBuffer()],i)}function hi(i,e,t){return Se([yo,e.toBuffer(),t.toBuffer()],i)}function H(i,e,t){return Se([ho,e.toBuffer(),zt(t)],i)}function it(i,e,t,n){return Se([gi,e.toBuffer(),zt(t),zt(n)],i)}function Me(i,e){return Se([gi,e.toBuffer()],i)}function Bt(i){return Se([Buffer.from("metadata","utf8"),ot.toBuffer(),i.toBuffer()],ot)}function xn(i){return Se([wo],i)}function ke(i,e){return Se([ko,e.toBuffer()],i)}function wi(i,e){return Se([Po,e.toBuffer()],i)}var ki=Buffer.from("locked_position","utf8");function Bn(i,e){return Se([ki,e.toBuffer()],i)}function Pi(i,e){return Se([ki,e.toBuffer()],i)}import{PublicKey as Re}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Ai}from"@solana/spl-token";import te from"bn.js";import Ve from"bn.js";var St=class{static getfeeGrowthInside(e,t,n){let r=new Ve(0),o=new Ve(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Ve(0),a=new Ve(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Le),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Le),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Le),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Le),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Le),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Le),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new Ve(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ve(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new Ve(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ve(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var y,g,A,w;let a=E.priceToSqrtPriceX64(new B(e.price),e.mintA.decimals,e.mintB.decimals),u=E.getSqrtPriceX64FromTick(t.tickLower),c=E.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=U.getAmountsFromLiquidity(a,u,c,n,o),[d,f]=[le(m.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),le(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[b,p]=[le(new Ve(new B(m.amountA.toString()).mul(l).toFixed(0)),(A=e.mintA.extensions)==null?void 0:A.feeConfig,s,!0),le(new Ve(new B(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:b,amountSlippageB:p,expirationTime:nt(d.expirationTime,f.expirationTime)}}};var Ao=15,V=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=x.getTickArrayStartIndexByTick(r,o),l=x.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Ao/2));for(let f=0;f<l.length;f++){let{publicKey:b}=H(t,n,l[f]);u.push(b)}let m=(await Ze(e,u)).map(f=>f!==null?It.decode(f.data):null),d={};for(let f=0;f<u.length;f++){let b=m[f];b!==null&&(d[b.startTickIndex]=se($({},b),{address:u[f]}))}return d}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=x.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:f}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,f]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/V.tickCount(t)),a=n?x.searchLowBitFromStart(r,o,s-1,1,t):x.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=pe-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<pe;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=H(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=x.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<pe;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=H(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(x.checkIsOutOfBoundary(e)){if(e>Ne)return!1;let n=x.getTickArrayStartIndexByTick(xe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return pe*e}};var Sn=14,He=class{static maxTickInTickarrayBitmap(e){return e*pe*ut}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!V.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-V.tickCount(n):t+V.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*pe,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=pi(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=bi(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-V.tickCount(n)}}}},Nt=class{static getBitmapOffset(e,t){if(!V.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=He.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=He.maxTickInTickarrayBitmap(e),n=-t;if(Ne<=t)throw Error(`extensionTickBoundary check error: ${Ne}, ${t}`);if(n<=xe)throw Error(`extensionTickBoundary check error: ${n}, ${xe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:x.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=V.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=He.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=x.mergeTickArrayBitmap(e).shln(ut-1-a),c=xt(512,u)?null:Pn(512,u);if(c!==null){let l=t-c*V.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=x.mergeTickArrayBitmap(e).shrn(a),c=xt(512,u)?null:An(512,u);if(c!==null){let l=t+c*V.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-V.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%He.maxTickInTickarrayBitmap(t),r=Math.floor(n/V.tickCount(t));return e<0&&n!=0&&(r=ut-r),r}};var de=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o,s=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:d,amountCalculated:f,accounts:b,sqrtPriceX64:p,feeAmount:y}=ct.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,l,o,s);return u.push(...b),{allTrade:d,expectedAmountOut:f.mul(ze),remainingAccounts:u,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let p=this.preInitializedTickArrayStartIndex(e,s);if(p.isExist){let{publicKey:y}=H(e.programId,e.id,p.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:f,feeAmount:b}=ct.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(ze),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:f,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=de.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Nt.checkTickArrayIsInit(V.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):x.checkTickArrayIsInitialized(x.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=H(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,V.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=H(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/V.tickCount(e.tickSpacing)),r=t?x.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):x.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=V.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=He.nextInitializedTickArrayStartIndex(x.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Nt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<xe||t>Ne)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let f=se($({},m),{perSecond:v.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Re(d)});if(f.tokenMint.equals(Re.default))continue;if(n<=f.openTime.toNumber()||r.eq(re)){s.push(f);continue}let b=new te(Math.min(f.endTime.toNumber(),n)),p=b.sub(f.lastUpdateTime),y=v.mulDivFloor(p,f.emissionsPerSecondX64,r),g=f.rewardGrowthGlobalX64.add(y),A=v.mulDivFloor(p,f.emissionsPerSecondX64,Le),w=f.rewardTotalEmissioned.add(A);s.push(se($({},f),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:w,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=x.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=He.maxTickInTickarrayBitmap(e),n=-t;return t>Ne&&(t=V.getArrayStartIndex(Ne,e)+V.tickCount(e)),n<xe&&(n=V.getArrayStartIndex(xe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!V.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/V.tickCount(t)*ut}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Jt(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=Bi.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=x.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=x.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=H(u.programId,u.id,m);o.push({pubkey:d}),r[d.toString()]=u.id}}let s=await Jt(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=It.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=se($({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let f of s)c.push(Me(f,d).publicKey);let l=await Ze(t,c,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let f=xi.decode(d.data),b=f.poolId.toString(),p=e.find(C=>C.state.id.toBase58()===b);if(p===void 0)continue;let y=p.state,g=x._getTickPriceLegacy({poolInfo:y,tick:f.tickLower,baseIn:!0}),A=x._getTickPriceLegacy({poolInfo:y,tick:f.tickUpper,baseIn:!0}),{amountA:w,amountB:T}=U.getAmountsFromLiquidity(y.sqrtPriceX64,g.tickSqrtPriceX64,A.tickSqrtPriceX64,f.liquidity,!1),N=1/(1-Math.sqrt(Math.sqrt(g.price.div(A.price).toNumber())));p.positionAccount=[...(a=p.positionAccount)!=null?a:[],{poolId:f.poolId,nftMint:f.nftMint,priceLower:g.price,priceUpper:A.price,amountA:w,amountB:T,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(C=>se($({},C),{pendingReward:new te(0)})),leverage:N,tokenFeeAmountA:new te(0),tokenFeeAmountB:new te(0)}];let k=await x.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickLower,p.state.tickSpacing),K=await x.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickUpper,p.state.tickSpacing);m[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickLower}`]=k,m[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickUpper}`]=K}if(o){let d=Object.values(m),f=await Ze(t,d,{batchRequest:r}),b={};for(let p=0;p<d.length;p++){let y=f[p];if(y===null)continue;let g=d[p].toString();b[g]=It.decode(y.data)}for(let{state:p,positionAccount:y}of e)if(!!y)for(let g of y){let A=`${p.programId.toString()}-${p.id.toString()}-${g.tickLower}`,w=`${p.programId.toString()}-${p.id.toString()}-${g.tickUpper}`,T=b[m[A].toString()],N=b[m[w].toString()],k=T.ticks[x.getTickOffsetInArray(g.tickLower,p.tickSpacing)],K=N.ticks[x.getTickOffsetInArray(g.tickUpper,p.tickSpacing)],{tokenFeeAmountA:C,tokenFeeAmountB:F}=await St.GetPositionFees(p,g,k,K),G=await St.GetPositionRewards(p,g,k,K);g.tokenFeeAmountA=C.gte(new te(0))?C:new te(0),g.tokenFeeAmountB=F.gte(new te(0))?F:new te(0);for(let R=0;R<G.length;R++)g.rewardInfos[R].pendingReward=G[R].gte(new te(0))?G[R]:new te(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new B(0),catchLiquidityInsufficient:u=!1}){var ce;let c,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 B(0))?c=l?st.add(new te(1)):at.sub(new te(1)):c=E.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let f=le(o,m,r,!1),{allTrade:b,expectedAmountOut:p,remainingAccounts:y,executionPrice:g,feeAmount:A}=de.getOutputAmountAndRemainAccounts(e,t,n,f.amount.sub((ce=f.fee)!=null?ce:re),c,u),w=le(p,d,r,!1),T=E.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),N=l?T:new B(1).div(T),k=p.mul(new te(Math.floor((1-s)*1e10))).div(new te(1e10)),K=le(k,d,r,!1),C=l?e.currentPrice:new B(1).div(e.currentPrice),F=new B(N).sub(C).abs(),G=C,R=new tt(new B(F).mul(10**15).toFixed(0),new B(G).mul(10**15).toFixed(0));return{allTrade:b,realAmountIn:f,amountOut:w,minAmountOut:K,expirationTime:nt(f.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:N,priceImpact:R,fee:A,remainingAccounts:y,executionPriceX64:g}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let u=r.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new Ue(se($({},c),{mint:c.address,isToken2022:c.programId===Ai.toBase58()})),new Ue(se($({},l),{mint:l.address,isToken2022:l.programId===Ai.toBase58()}))],{allTrade:f,realAmountIn:b,amountOut:p,minAmountOut:y,expirationTime:g,currentPrice:A,executionPrice:w,priceImpact:T,fee:N,remainingAccounts:k,executionPriceX64:K}=de.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Re(c.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),C=se($({},b),{amount:new Te(m,b.amount),fee:b.fee===void 0?void 0:new Te(m,b.fee)}),F=se($({},p),{amount:new Te(d,p.amount),fee:p.fee===void 0?void 0:new Te(d,p.fee)}),G=se($({},y),{amount:new Te(d,y.amount),fee:y.fee===void 0?void 0:new Te(d,y.fee)}),R=new We({baseToken:m,denominator:new te(10).pow(new te(20+m.decimals)),quoteToken:d,numerator:A.mul(new B(10**(20+d.decimals))).toFixed(0)}),ce=new We({baseToken:m,denominator:new te(10).pow(new te(20+m.decimals)),quoteToken:d,numerator:w.mul(new B(10**(20+d.decimals))).toFixed(0)}),J=new Te(m,N);return{allTrade:f,realAmountIn:C,amountOut:F,minAmountOut:G,expirationTime:g,currentPrice:R,executionPrice:ce,priceImpact:T,fee:J,remainingAccounts:k,executionPriceX64:K}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountOut:o,slippage:s,priceLimit:a=new B(0)}){var G;let u=n.toBase58()===e.mintA.address,c={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;a.equals(new B(0))?l=u?at.sub(new te(1)):st.add(new te(1)):l=E.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let m=le(o,c[n.toString()],r,!0),{expectedAmountIn:d,remainingAccounts:f,executionPrice:b,feeAmount:p}=de.getInputAmountAndRemainAccounts(e,t,n,m.amount.sub((G=m.fee)!=null?G:re),l),y=u?e.mintB.address:e.mintA.address,g=le(d,c[y],r,!1),A=E.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),w=u?A:new B(1).div(A),T=d.mul(new te(Math.floor((1+s)*1e10))).div(new te(1e10)),N=le(T,c[y],r,!0),k=u?e.currentPrice:new B(1).div(e.currentPrice),K=new B(w).sub(k).abs(),C=k,F=new tt(new B(K).mul(10**15).toFixed(0),new B(C).mul(10**15).toFixed(0));return{amountIn:g,maxAmountIn:N,realAmountOut:m,expirationTime:nt(g.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:w,priceImpact:F,fee:p,remainingAccounts:f}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var b,p,y;let o=e[t],s=x.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=x.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,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:[((b=o.rewardApr[0])!=null?b: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:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[Ct(e.mintA.address).toString()],d=r[Ct(e.mintB.address).toString()],f=e.mintA.decimals,b=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let p=E.priceToSqrtPriceX64(new B(e.price),e.mintA.decimals,e.mintB.decimals),y=E.getSqrtPriceX64FromTick(s),g=E.getSqrtPriceX64FromTick(a),{amountSlippageA:A,amountSlippageB:w}=U.getAmountsFromLiquidityWithSlippage(p,y,g,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:N}=U.getAmountsFromLiquidityWithSlippage(p,y,g,o,!1,!1,0),k=new B(A.toString()).div(new B(10).pow(f)).mul(m.value).add(new B(w.toString()).div(new B(10).pow(b)).mul(d.value)),K=new B(T.toString()).div(new B(10).pow(f)).mul(m.value).add(new B(N.toString()).div(new B(10).pow(b)).mul(d.value)),C=new B(1).div(k.add(K)),G=new B(l.volumeFee).mul(365).div(c).mul(C).mul(100).toNumber(),R=3600*24*365,ce=e.rewardDefaultInfos.map(J=>{var j,Kn;let be=J.mint.decimals,oe=r[J.mint.address];return u<((j=J.startTime)!=null?j:0)||u>((Kn=J.endTime)!=null?Kn:0)||!J.perSecond||!oe||be===void 0?0:new B(oe.value).mul(new B(J.perSecond).mul(R)).div(new B(10).pow(be)).mul(C).mul(100).toNumber()});return{feeApr:G,rewardsApr:ce,apr:G+ce.reduce((J,be)=>J+be,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,A;let l=E.priceToSqrtPriceX64(new B(e.price),e.mintA.decimals,e.mintB.decimals),m=E.getSqrtPriceX64FromTick(n),d=E.getSqrtPriceX64FromTick(r),f=a?1-s:1+s,b=le(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),p=new te(new B(b.amount.sub((A=b.fee)!=null?A:re).toString()).mul(f).toFixed(0)),y;if(l.lte(m))y=t?U.getLiquidityFromTokenAmountA(m,d,p,!a):new te(0);else if(l.lte(d)){let w=U.getLiquidityFromTokenAmountA(l,d,p,!a),T=U.getLiquidityFromTokenAmountB(m,l,p);y=t?w:T}else y=t?new te(0):U.getLiquidityFromTokenAmountB(m,d,p);return de.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:y,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var y,g,A,w;let u=E.getSqrtPriceX64FromTick(n),c=E.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(E.priceToSqrtPriceX64(new B(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,f]=[le(m.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),le(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[b,p]=[le(m.amountA.muln(l),(A=t.mintA.extensions)==null?void 0:A.feeConfig,e,!0),le(m.amountB.muln(l),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:f,amountSlippageA:b,amountSlippageB:p,expirationTime:nt(d.expirationTime,f.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(u=>!n[u.id]).map(u=>new Re(u.id));(await Ze(e,r)).forEach((u,c)=>{!u||(n[r[c].toBase58()]=Ti.decode(u.data))});let s=t.map(u=>ke(new Re(u.programId),new Re(u.id)).publicKey),a=await de.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>se($({},u),{[c.id]:se($({},n[c.id]),{id:new Re(c.id),version:6,programId:new Re(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:se($({},c.config),{id:new Re(c.config.id),fundOwner:""}),currentPrice:new B(c.price),exBitmapAccount:ke(new Re(c.programId),new Re(c.id)).publicKey,exBitmapInfo:a[ke(new Re(c.programId),new Re(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber(),rewardInfos:n[c.id].rewardInfos})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var v=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(re)||(o=o.add(qe)),o}static mulDivFloor(e,t,n){if(n.eq(re))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(re))throw new Error("division by 0");return e.mul(t).add(n.sub(qe)).div(n)}static x64ToDecimal(e,t){return new B(e.toString()).div(B.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new W(e.mul(B.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Ut).sub(t).mod(Ut)}};function he(i,e){return In(i.mul(e),64,256)}function To(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function In(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var E=class{static sqrtPriceX64ToPrice(e,t,n){return v.x64ToDecimal(e).pow(2).mul(B.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return v.decimalToX64(e.mul(B.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(re))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(re))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(re))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(re))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(re))return e;let o=t.shln(Tt);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?v.mulDivCeil(s,e,a):v.mulDivRoundingUp(s,qe,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 v.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Tt);if(r)return e.add(o.div(t));{let s=v.mulDivRoundingUp(o,qe,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<xe||e>Ne)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new W("18445821805675395072"):new W("18446744073709551616");return(t&2)!=0&&(n=he(n,new W("18444899583751176192"))),(t&4)!=0&&(n=he(n,new W("18443055278223355904"))),(t&8)!=0&&(n=he(n,new W("18439367220385607680"))),(t&16)!=0&&(n=he(n,new W("18431993317065453568"))),(t&32)!=0&&(n=he(n,new W("18417254355718170624"))),(t&64)!=0&&(n=he(n,new W("18387811781193609216"))),(t&128)!=0&&(n=he(n,new W("18329067761203558400"))),(t&256)!=0&&(n=he(n,new W("18212142134806163456"))),(t&512)!=0&&(n=he(n,new W("17980523815641700352"))),(t&1024)!=0&&(n=he(n,new W("17526086738831433728"))),(t&2048)!=0&&(n=he(n,new W("16651378430235570176"))),(t&4096)!=0&&(n=he(n,new W("15030750278694412288"))),(t&8192)!=0&&(n=he(n,new W("12247334978884435968"))),(t&16384)!=0&&(n=he(n,new W("8131365268886854656"))),(t&32768)!=0&&(n=he(n,new W("3584323654725218816"))),(t&65536)!=0&&(n=he(n,new W("696457651848324352"))),(t&131072)!=0&&(n=he(n,new W("26294789957507116"))),(t&262144)!=0&&(n=he(n,new W("37481735321082"))),e>0&&(n=ci.div(n)),n}static getTickFromPrice(e,t,n){return E.getTickFromSqrtPriceX64(E.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(at)||e.lt(st))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new W(t-64),r=To(n,32,128),o=new W("8000000000000000","hex"),s=0,a=new W(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new W(0))&&s<li;){u=u.mul(u);let b=u.shrn(127);u=u.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new W(mi)),d=In(m.sub(new W(di)),64,128).toNumber(),f=In(m.add(new W(fi)),64,128).toNumber();return d==f?d:E.getSqrtPriceX64FromTick(f).lte(e)?f:d}},lt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=E.getTickFromSqrtPriceX64(E.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=lt.getTickWithPriceAndTickspacing(e,t,n,r),s=E.getSqrtPriceX64FromTick(o);return E.sqrtPriceX64ToPrice(s,n,r)}},U=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(re))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Tt),s=t.sub(e);return r?v.mulDivRoundingUp(v.mulDivCeil(o,s,t),qe,e):v.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(re))throw new Error("sqrtPriceX64A must greater than 0");return r?v.mulDivCeil(n,t.sub(e),Le):v.mulDivFloor(n,t.sub(e),Le)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?v.mulDivRoundingUp(a,qe,kn):a.shrn(Tt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),v.mulDivFloor(n,kn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,r,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new W(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,r,o),a=U.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new W(0),amountB:U.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=U.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new W(new B(u.toString()).mul(l).toFixed(0)),d=new W(new B(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var A,w,T,N;let c=E.priceToSqrtPriceX64(new B(e.price),e.mintA.decimals,e.mintB.decimals),l=E.getSqrtPriceX64FromTick(t),m=E.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,f=U.getAmountsFromLiquidity(c,l,m,r,s),[b,p]=[le(f.amountA,(A=e.mintA.extensions)==null?void 0:A.feeConfig,a,u),le(f.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,u)],[y,g]=[le(new W(new B(f.amountA.toString()).mul(d).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),le(new W(new B(f.amountB.toString()).mul(d).toFixed(0)),(N=e.mintB.extensions)==null?void 0:N.feeConfig,a,u)];return{liquidity:r,amountA:b,amountB:p,amountSlippageA:y,amountSlippageB:g,expirationTime:nt(b.expirationTime,p.expirationTime)}}},ct=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p=!1){if(d.eq(re))throw new Error("amountSpecified must not be 0");if(b||(b=s?st.add(qe):at.sub(qe)),s){if(b.lt(st))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(at))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let y=d.gt(re),g={amountSpecifiedRemaining:d,amountCalculated:re,sqrtPriceX64:m,tick:c>f?Math.min(f+V.tickCount(l)-1,c):f,accounts:[],liquidity:u,feeAmount:new W(0)},A=f,w=n[f],T=0,N=!s&&w.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(re)&&!g.sqrtPriceX64.eq(b);){T>10;let k={};k.sqrtPriceStartX64=g.sqrtPriceX64;let K=x.nextInitTick(w,g.tick,l,s,N),C=K||null,F=null;if(!(C!=null&&C.liquidityGross.gtn(0))){let R=de.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},A,s);if(!R.isExist){if(p)return{allTrade:!1,amountSpecifiedRemaining:g.amountSpecifiedRemaining,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts};throw Error("swapCompute LiquidityInsufficient")}A=R.nextStartIndex;let{publicKey:ce}=H(e,t,A);F=ce,w=n[A];try{C=x.firstInitializedTick(w,s)}catch{throw Error("not found next tick info")}}k.tickNext=C.tick,k.initialized=C.liquidityGross.gtn(0),f!==A&&F&&(g.accounts.push(F),f=A),k.tickNext<xe?k.tickNext=xe:k.tickNext>Ne&&(k.tickNext=Ne),k.sqrtPriceNextX64=E.getSqrtPriceX64FromTick(k.tickNext);let G;if(s&&k.sqrtPriceNextX64.lt(b)||!s&&k.sqrtPriceNextX64.gt(b)?G=b:G=k.sqrtPriceNextX64,[g.sqrtPriceX64,k.amountIn,k.amountOut,k.feeAmount]=ct.swapStepCompute(g.sqrtPriceX64,G,g.liquidity,g.amountSpecifiedRemaining,a,s),g.feeAmount=g.feeAmount.add(k.feeAmount),y?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(k.amountIn.add(k.feeAmount)),g.amountCalculated=g.amountCalculated.sub(k.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(k.amountOut),g.amountCalculated=g.amountCalculated.add(k.amountIn.add(k.feeAmount))),g.sqrtPriceX64.eq(k.sqrtPriceNextX64)){if(k.initialized){let R=C.liquidityNet;s&&(R=R.mul(ze)),g.liquidity=U.addDelta(g.liquidity,R)}N=k.tickNext!=g.tick&&!s&&w.startTickIndex===k.tickNext,g.tick=s?k.tickNext-1:k.tickNext}else if(g.sqrtPriceX64!=k.sqrtPriceStartX64){let R=E.getTickFromSqrtPriceX64(g.sqrtPriceX64);N=R!=g.tick&&!s&&w.startTickIndex===R,g.tick=R}++T}try{let{nextStartIndex:k,isExist:K}=V.nextInitializedTickArray(g.tick,l,s,r,o);K&&f!==k&&(g.accounts.push(H(e,t,k).publicKey),f=k)}catch{}return{allTrade:!0,amountSpecifiedRemaining:re,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,r,o,s){let a={sqrtPriceX64Next:new W(0),amountIn:new W(0),amountOut:new W(0),feeAmount:new W(0)},u=r.gte(re);if(u){let l=v.mulDivFloor(r,Xt.sub(new W(o.toString())),Xt);a.amountIn=s?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(a.amountIn)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=E.getNextSqrtPriceX64FromInput(e,n,l,s)}else a.amountOut=s?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(ze).gte(a.amountOut)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=E.getNextSqrtPriceX64FromOutput(e,n,r.mul(ze),s);let c=t.eq(a.sqrtPriceX64Next);return s?(c&&u||(a.amountIn=U.getTokenAmountAFromLiquidity(a.sqrtPriceX64Next,e,n,!0)),c&&!u||(a.amountOut=U.getTokenAmountBFromLiquidity(a.sqrtPriceX64Next,e,n,!1))):(a.amountIn=c&&u?a.amountIn:U.getTokenAmountBFromLiquidity(e,a.sqrtPriceX64Next,n,!0),a.amountOut=c&&!u?a.amountOut:U.getTokenAmountAFromLiquidity(e,a.sqrtPriceX64Next,n,!1)),!u&&a.amountOut.gt(r.mul(ze))&&(a.amountOut=r.mul(ze)),u&&!a.sqrtPriceX64Next.eq(t)?a.feeAmount=r.sub(a.amountIn):a.feeAmount=v.mulDivCeil(a.amountIn,new W(o),Xt.sub(new W(o))),[a.sqrtPriceX64Next,a.amountIn,a.amountOut,a.feeAmount]}};var pe=60,ut=512,x=class{static getTickArrayAddressByTick(e,t,n,r){let o=x.getTickArrayStartIndexByTick(n,r),{publicKey:s}=H(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=x.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=pe)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=V.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*V.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*pe,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*pe,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*pe:e+t*pe}static mergeTickArrayBitmap(e){let t=new xo(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*pe));return[...x.searchLowBitFromStart(e,t,s-1,o,n),...x.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return x.searchHightBitFromStart(e,t,-7680,ut,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=x.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=H(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>x.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===r)break}let u=V.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>x.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===r)break}let u=V.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<xe||e>Ne}static nextInitTick(e,t,n,r,o){if(V.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<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 r=E.getSqrtPriceX64FromTick(t),o=E.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new B(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new B(1).div(t),o=lt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=E.getSqrtPriceX64FromTick(o),a=E.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new B(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=E.getSqrtPriceX64FromTick(t),o=E.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new B(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new B(1).div(t),o=lt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=E.getSqrtPriceX64FromTick(o),a=E.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new B(1).div(a)}}};var Qm=z([Ce(8),ae("bump"),At("index"),Y(""),pt("protocolFeeRate"),pt("tradeFeeRate"),At("tickSpacing"),ie(I(),8,"")]),Bo=z([pt("blockTimestamp"),ai("tickCumulative"),ie(I(),4)]),Si=z([Ce(8),Ie("initialized"),I("recentEpoch"),At("observationIndex"),Y("poolId"),ie(Bo,100,"observations"),ie(I(),4)]),So=z([ae("rewardState"),I("openTime"),I("endTime"),I("lastUpdateTime"),q("emissionsPerSecondX64"),I("rewardTotalEmissioned"),I("rewardClaimed"),Y("tokenMint"),Y("tokenVault"),Y("creator"),q("rewardGrowthGlobalX64")]),Ti=z([Ce(8),ae("bump"),Y("ammConfig"),Y("creator"),Y("mintA"),Y("mintB"),Y("vaultA"),Y("vaultB"),Y("observationId"),ae("mintDecimalsA"),ae("mintDecimalsB"),At("tickSpacing"),q("liquidity"),q("sqrtPriceX64"),ee("tickCurrent"),pt(),q("feeGrowthGlobalX64A"),q("feeGrowthGlobalX64B"),I("protocolFeesTokenA"),I("protocolFeesTokenB"),q("swapInAmountTokenA"),q("swapOutAmountTokenB"),q("swapInAmountTokenB"),q("swapOutAmountTokenA"),ae("status"),ie(ae(),7,""),ie(So,3,"rewardInfos"),ie(I(),16,"tickArrayBitmap"),I("totalFeesTokenA"),I("totalFeesClaimedTokenA"),I("totalFeesTokenB"),I("totalFeesClaimedTokenB"),I("fundFeesTokenA"),I("fundFeesTokenB"),I("startTime"),ie(I(),15*4-3,"padding")]),Io=z([q("growthInsideLastX64"),I("rewardAmountOwed")]),xi=z([Ce(8),ae("bump"),Y("nftMint"),Y("poolId"),ee("tickLower"),ee("tickUpper"),q("liquidity"),q("feeGrowthInsideLastX64A"),q("feeGrowthInsideLastX64B"),I("tokenFeesOwedA"),I("tokenFeesOwedB"),ie(Io,3,"rewardInfos"),ie(I(),8,"")]),Jm=z([Ce(8),ae("bump"),Y("poolId"),ee("tickLowerIndex"),ee("tickUpperIndex"),q("liquidity"),q("feeGrowthInsideLastX64A"),q("feeGrowthInsideLastX64B"),I("tokenFeesOwedA"),I("tokenFeesOwedB"),ie(q(),3,"rewardGrowthInside"),ie(I(),8,"")]),No=z([ee("tick"),ui("liquidityNet"),q("liquidityGross"),q("feeGrowthOutsideX64A"),q("feeGrowthOutsideX64B"),ie(q(),3,"rewardGrowthsOutsideX64"),ie(pt(),13,"")]),It=z([Ce(8),Y("poolId"),ee("startTickIndex"),ie(No,pe,"ticks"),ae("initializedTickCount"),ie(ae(),115,"")]),$m=z([Ce(329),ie(Y(),100,"whitelistMints")]),Bi=z([Ce(8),Y("poolId"),ie(ie(I(),8),Sn,"positiveTickArrayBitmap"),ie(ie(I(),8),Sn,"negativeTickArrayBitmap")]),ed=z([I(),ae("bump"),Y("owner"),Y("poolId"),Y("positionId"),Y("nftAccount"),ie(I(),8)]),td=z([Ce(8),ae("bump"),Y("lockOwner"),Y("poolId"),Y("positionId"),Y("nftAccount"),Y("lockNftMint"),I("recentEpoch"),ie(I(),8)]);Si.span;var Ii=Be("Raydium_Clmm"),Ee={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],openPositionWithTokenEx:[77,255,174,82,125,29,201,46],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Ni=[188,37,179,131,82,150,84,73],Ki=[16,72,250,198,14,162,212,19],jt=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f){let b=z([q("sqrtPriceX64"),I("zero")]),p=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,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:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:je.programId,isSigner:!1,isWritable:!1},{pubkey:et,isSigner:!1,isWritable:!1}],y=Buffer.alloc(b.span);b.encode({sqrtPriceX64:f,zero:re},y);let g=Buffer.from([...Ee.createPool,...y]);return new Pe({keys:p,programId:e,data:g})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:r,mintB:o,ammConfigId:s,initialPriceX64:a}=e,[u,c]=[new P(r.address),new P(o.address)],{publicKey:l}=yi(t,s,u,c),{publicKey:m}=wi(t,l),{publicKey:d}=Tn(t,l,u),{publicKey:f}=Tn(t,l,c),b=ke(t,l).publicKey,p=[this.createPoolInstruction(t,l,n,s,m,u,d,new P(r.programId||Z),c,f,new P(o.programId||Z),b,a)];return{signers:[],instructions:p,instructionTypes:[ye.CreateAccount,ye.ClmmCreatePool],address:{poolId:l,observationId:m,exBitmapAccount:b,mintAVault:d,mintBVault:f},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,A,w,T,N,k,K,C,F,G){let R=z([ee("tickLowerIndex"),ee("tickUpperIndex"),ee("tickArrayLowerStartIndex"),ee("tickArrayUpperStartIndex"),q("liquidity"),I("amountMaxA"),I("amountMaxB"),Ie("withMetadata"),ae("optionBaseFlag"),Ie("baseFlag")]),ce=[...G?[{pubkey:G,isSigner:!1,isWritable:!0}]:[]],J=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,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:b,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:je.programId,isSigner:!1,isWritable:!1},{pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...ce],be=Buffer.alloc(R.span);R.encode({tickLowerIndex:A,tickUpperIndex:w,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:N,liquidity:k,amountMaxA:K,amountMaxB:C,withMetadata:F==="create",baseFlag:!1,optionBaseFlag:0},be);let oe=Buffer.from([...Ee.openPosition,...be]);return new Pe({keys:J,programId:e,data:oe})}static openPositionFromLiquidityInstruction22(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,A,w,T,N,k,K,C,F){let G=z([ee("tickLowerIndex"),ee("tickUpperIndex"),ee("tickArrayLowerStartIndex"),ee("tickArrayUpperStartIndex"),q("liquidity"),I("amountMaxA"),I("amountMaxB"),Ie("withMetadata"),ae("optionBaseFlag"),Ie("baseFlag")]),R=[...F?[{pubkey:F,isSigner:!1,isWritable:!0}]:[]],ce=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,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:b,isSigner:!1,isWritable:!0},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:je.programId,isSigner:!1,isWritable:!1},{pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...R],J=Buffer.alloc(G.span);G.encode({tickLowerIndex:g,tickUpperIndex:A,tickArrayLowerStartIndex:w,tickArrayUpperStartIndex:T,liquidity:N,amountMaxA:k,amountMaxB:K,withMetadata:C==="create",baseFlag:!1,optionBaseFlag:0},J);let be=Buffer.from([...Ee.openPositionWithTokenEx,...J]);return new Pe({keys:ce,programId:e,data:be})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let d=[],[f,b]=[new P(e.programId),new P(e.id)],p;if(l)p=new P((await l(1))[0]);else{let F=Ht.generate();d.push(F),p=F.publicKey}let y=x.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=x.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:A}=H(f,b,y),{publicKey:w}=H(f,b,g),{publicKey:T}=m?me(n.wallet,p,ue):me(n.wallet,p,Z),{publicKey:N}=Bt(p),{publicKey:k}=Me(f,p),{publicKey:K}=it(f,b,r,o),C=m?this.openPositionFromLiquidityInstruction22(f,n.feePayer,b,n.wallet,p,T,K,A,w,k,n.tokenAccountA,n.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),r,o,y,g,s,a,u,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?ke(f,b).publicKey:void 0):this.openPositionFromLiquidityInstruction(f,n.feePayer,b,n.wallet,p,T,N,K,A,w,k,n.tokenAccountA,n.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),r,o,y,g,s,a,u,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?ke(f,b).publicKey:void 0);return{signers:d,instructions:[C],instructionTypes:[ye.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:p,tickArrayLower:A,tickArrayUpper:w,positionNftAccount:T,metadataAccount:N,personalPosition:k,protocolPosition:K}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let d=[],[f,b]=[new P(e.programId),new P(e.id)],p;if(l)p=new P((await l(1))[0]);else{let F=Ht.generate();d.push(F),p=F.publicKey}let y=x.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=x.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:A}=H(f,b,y),{publicKey:w}=H(f,b,g),{publicKey:T}=m?me(n.wallet,p,ue):me(n.wallet,p,Z),{publicKey:N}=Bt(p),{publicKey:k}=Me(f,p),{publicKey:K}=it(f,b,r,o),C=m?this.openPositionFromBaseInstruction22(f,n.feePayer,b,n.wallet,p,T,K,A,w,k,n.tokenAccountA,n.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),r,o,y,g,c,s,a,u,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?ke(f,b).publicKey:void 0):this.openPositionFromBaseInstruction(f,n.feePayer,b,n.wallet,p,T,N,K,A,w,k,n.tokenAccountA,n.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),r,o,y,g,c,s,a,u,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?ke(f,b).publicKey:void 0);return{address:{nftMint:p,tickArrayLower:A,tickArrayUpper:w,positionNftAccount:T,metadataAccount:N,personalPosition:k,protocolPosition:K},instructions:[C],signers:d,instructionTypes:[ye.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,A,w,T,N,k,K,C,F,G){let R=z([ee("tickLowerIndex"),ee("tickUpperIndex"),ee("tickArrayLowerStartIndex"),ee("tickArrayUpperStartIndex"),q("liquidity"),I("amountMaxA"),I("amountMaxB"),Ie("withMetadata"),ae("optionBaseFlag"),Ie("baseFlag")]),ce=[...G?[{pubkey:G,isSigner:!1,isWritable:!0}]:[]],J=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,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:b,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:je.programId,isSigner:!1,isWritable:!1},{pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...ce],be=Buffer.alloc(R.span);R.encode({tickLowerIndex:A,tickUpperIndex:w,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:N,liquidity:new Nn(0),amountMaxA:K==="MintA"?C:F,amountMaxB:K==="MintA"?F:C,withMetadata:k==="create",baseFlag:K==="MintA",optionBaseFlag:1},be);let oe=Buffer.from([...Ee.openPosition,...be]);return new Pe({keys:J,programId:e,data:oe})}static openPositionFromBaseInstruction22(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,A,w,T,N,k,K,C,F){let G=z([ee("tickLowerIndex"),ee("tickUpperIndex"),ee("tickArrayLowerStartIndex"),ee("tickArrayUpperStartIndex"),q("liquidity"),I("amountMaxA"),I("amountMaxB"),Ie("withMetadata"),ae("optionBaseFlag"),Ie("baseFlag")]),R=[...F?[{pubkey:F,isSigner:!1,isWritable:!0}]:[]],ce=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,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:b,isSigner:!1,isWritable:!0},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:je.programId,isSigner:!1,isWritable:!1},{pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...R],J=Buffer.alloc(G.span);G.encode({tickLowerIndex:g,tickUpperIndex:A,tickArrayLowerStartIndex:w,tickArrayUpperStartIndex:T,liquidity:new Nn(0),amountMaxA:k==="MintA"?K:C,amountMaxB:k==="MintA"?C:K,withMetadata:N==="create",baseFlag:k==="MintA",optionBaseFlag:1},J);let be=Buffer.from([...Ee.openPositionWithTokenEx,...J]);return new Pe({keys:ce,programId:e,data:be})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let d,f=[];if(l)d=new P((await l(1))[0]);else{let F=Ht.generate();f.push(F),d=F.publicKey}let[b,p]=[new P(e.programId),new P(e.id)],y=x.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=x.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:A}=H(b,p,y),{publicKey:w}=H(b,p,g),{publicKey:T}=m?me(n.wallet,d,ue):me(n.wallet,d,Z),{publicKey:N}=Bt(d),{publicKey:k}=Me(b,d),{publicKey:K}=it(b,p,r,o),C=m?this.openPositionFromLiquidityInstruction22(b,n.wallet,p,n.wallet,d,T,K,A,w,k,n.tokenAccountA,n.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(t.mintA.address),new P(t.mintB.address),r,o,y,g,s,a,u,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?ke(b,p).publicKey:void 0):this.openPositionFromLiquidityInstruction(b,n.wallet,p,n.wallet,d,T,N,K,A,w,k,n.tokenAccountA,n.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(t.mintA.address),new P(t.mintB.address),r,o,y,g,s,a,u,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?ke(b,p).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:A,tickArrayUpper:w,positionNftAccount:T,metadataAccount:N,personalPosition:k,protocolPosition:K},instructions:[C],signers:f,instructionTypes:[ye.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o,s){let a=z([]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:je.programId,isSigner:!1,isWritable:!1},{pubkey:s?ue:Z,isSigner:!1,isWritable:!1}],c=Buffer.alloc(a.span);a.encode({},c);let l=Buffer.from([...Ee.closePosition,...c]);return new Pe({keys:u,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r,nft2022:o}){let s=new P(e.programId),a=o?me(n.wallet,r.nftMint,ue).publicKey:me(n.wallet,r.nftMint,Z).publicKey,{publicKey:u}=Me(s,r.nftMint),c=[];return c.push(this.closePositionInstruction(s,n.wallet,r.nftMint,a,u,o)),{address:{positionNftAccount:a,personalPosition:u},signers:[],instructions:c,instructionTypes:[ye.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,A){let w=z([q("liquidity"),I("amountMaxA"),I("amountMaxB"),ae("optionBaseFlag"),Ie("baseFlag")]),T=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[]],N=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...T],k=Buffer.alloc(w.span);w.encode({liquidity:p,amountMaxA:y,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},k);let K=Buffer.from([...Ee.increaseLiquidity,...k]);return new Pe({keys:N,programId:e,data:K})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a,nft2022:u}){let[c,l]=[new P(e.programId),new P(e.id)],m=x.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=x.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=H(c,l,m),{publicKey:b}=H(c,l,d),{publicKey:p}=u?me(r.wallet,n.nftMint,ue):me(r.wallet,n.nftMint,Z),{publicKey:y}=Me(c,n.nftMint),{publicKey:g}=it(c,l,n.tickLower,n.tickUpper),A=this.increasePositionFromLiquidityInstruction(c,r.wallet,p,y,l,g,f,b,r.tokenAccountA,r.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),o,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?ke(c,l).publicKey:void 0);return{address:{tickArrayLower:f,tickArrayUpper:b,positionNftAccount:p,personalPosition:y,protocolPosition:g},signers:[],instructions:[A],instructionTypes:[ye.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a,nft2022:u}){let[c,l]=[new P(e.programId),new P(e.id)],m=x.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=x.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=H(c,l,m),{publicKey:b}=H(c,l,d),{publicKey:p}=u?me(r.wallet,n.nftMint,ue):me(r.wallet,n.nftMint,Z),{publicKey:y}=Me(c,n.nftMint),{publicKey:g}=it(c,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:f,tickArrayUpper:b,positionNftAccount:p,personalPosition:y,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(c,r.wallet,p,y,l,g,f,b,r.tokenAccountA,r.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),o,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?ke(c,l).publicKey:void 0)],signers:[],instructionTypes:[ye.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,A){let w=z([q("liquidity"),I("amountMaxA"),I("amountMaxB"),ae("optionBaseFlag"),Ie("baseFlag")]),T=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[]],N=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...T],k=Buffer.alloc(w.span);w.encode({liquidity:new Nn(0),amountMaxA:p==="MintA"?y:g,amountMaxB:p==="MintA"?g:y,baseFlag:p==="MintA",optionBaseFlag:1},k);let K=Buffer.from([...Ee.increaseLiquidity,...k]);return new Pe({keys:N,programId:e,data:K})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,A,w){let T=z([q("liquidity"),I("amountMinA"),I("amountMinB")]),N=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...p.map(F=>[{pubkey:F.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:F.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:F.rewardMint,isSigner:!1,isWritable:!1}]).flat()],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...N],K=Buffer.alloc(T.span);T.encode({liquidity:y,amountMinA:g,amountMinB:A},K);let C=Buffer.from([...Ee.decreaseLiquidity,...K]);return new Pe({keys:k,programId:e,data:C})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u,nft2022:c}){let[l,m]=[new P(e.programId),new P(e.id)],d=x.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),f=x.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:b}=H(l,m,d),{publicKey:p}=H(l,m,f),{publicKey:y}=c?me(r.wallet,n.nftMint,ue):me(r.wallet,n.nftMint,u),{publicKey:g}=Me(l,n.nftMint),{publicKey:A}=it(l,m,n.tickLower,n.tickUpper),w=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)w.push({poolRewardVault:new P(t.rewardInfos[k].vault),ownerRewardVault:r.rewardAccounts[k],rewardMint:new P(e.rewardDefaultInfos[k].mint.address)});let T=[],N=this.decreaseLiquidityInstruction(l,r.wallet,y,g,m,A,b,p,r.tokenAccountA,r.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),w,o,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,f])?ke(l,m).publicKey:void 0);return T.push(N),{address:{tickArrayLower:b,tickArrayUpper:p,positionNftAccount:y,personalPosition:g,protocolPosition:A},signers:[],instructions:T,instructionTypes:[ye.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g){let A=z([I("amount"),I("otherAmountThreshold"),q("sqrtPriceLimitX64"),Ie("isBaseInput")]),w=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(K=>({pubkey:K,isSigner:!1,isWritable:!0}))],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...w],N=Buffer.alloc(A.span);A.encode({amount:f,otherAmountThreshold:b,sqrtPriceLimitX64:p,isBaseInput:y},N);let k=Buffer.from([...Ee.swap,...N]);return new Pe({keys:T,programId:e,data:k})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new P(e.programId),new P(e.id)],[d,f]=[new P(t.vault.A),new P(t.vault.B)],[b,p]=[new P(e.mintA.address),new P(e.mintB.address)],y=e.mintA.address===o.toString(),g=[this.swapInstruction(l,r.wallet,m,new P(e.config.id),y?r.tokenAccountA:r.tokenAccountB,y?r.tokenAccountB:r.tokenAccountA,y?d:f,y?f:d,y?b:p,y?p:b,c,n,s,a,u,!0,ke(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[ye.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,outputMint:o,amountOut:s,amountInMax:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new P(e.programId),new P(e.id)],[d,f]=[new P(t.vault.A),new P(t.vault.B)],[b,p]=[new P(e.mintA.address),new P(e.mintB.address)],y=e.mintA.address===o.toBase58(),g=[this.swapInstruction(l,r.wallet,m,new P(e.config.id),y?r.tokenAccountB:r.tokenAccountA,y?r.tokenAccountA:r.tokenAccountB,y?f:d,y?d:f,y?p:b,y?b:p,c,n,s,a,u,!1,ke(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[ye.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let f=z([I("openTime"),I("endTime"),q("emissionsPerSecondX64")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:je.programId,isSigner:!1,isWritable:!1},{pubkey:et,isSigner:!1,isWritable:!1}],p=Buffer.alloc(f.span);f.encode({openTime:ge(l),endTime:ge(m),emissionsPerSecondX64:d},p);let y=Buffer.from([...Ee.initReward,...p]);return new Pe({keys:b,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new P(e.programId),new P(e.id)],a=hi(o,s,r.mint).publicKey,u=xn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new P(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[ye.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let f=z([ae("rewardIndex"),q("emissionsPerSecondX64"),I("openTime"),I("endTime")]),b=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],p=Buffer.alloc(f.span);f.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:ge(l),endTime:ge(m)},p);let y=Buffer.from([...Ee.setRewardEmissions,...p]);return new Pe({keys:b,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new P(e.programId),new P(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,u=new P(t.rewardInfos[d].vault),c=new P(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&Ii.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=xn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new P(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[ye.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=z([ae("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Ee.collectReward,...l]);return new Pe({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new P(e.programId),new P(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new P(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Ii.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[ye.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:r,wallet:o,nftMint:s,nft2022:a,getEphemeralSigners:u}){let c=[],l;if(u)l=new P((await u(1))[0]);else{let g=Ht.generate();c.push(g),l=g.publicKey}let m=a?me(o,s,ue).publicKey:me(o,s,Z).publicKey,{publicKey:d}=Me(n,s),f=Pi(e,l).publicKey,b=me(o,l,Z).publicKey,p=Bt(l).publicKey,y=jt.lockPositionInstructionV2({programId:e,auth:t,payer:r,positionOwner:o,lockOwner:o,positionNftAccount:m,positionId:d,lockPositionId:f,lockNftMint:l,lockNftAccount:b,metadataAccount:p,withMetadata:!0,nft2022:a,positionNftMint:s,authPositionNftAccount:me(t,s,a?ue:Z).publicKey,positionNftProgram:a?ue:Z});return{address:{positionId:d,lockPositionId:f,lockNftAccount:b,lockNftMint:l,positionNftAccount:m,metadataAccount:p},instructions:[y],signers:c,instructionTypes:[ye.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:r,lockOwner:o,positionNftAccount:s,positionId:a,positionNftMint:u,authPositionNftAccount:c,positionNftProgram:l,lockPositionId:m,lockNftMint:d,lockNftAccount:f,metadataAccount:b,withMetadata:p}){let y=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:je.programId,isSigner:!1,isWritable:!1}],g=z([Ie("withMetadata")]),A=Buffer.alloc(g.span);g.encode({withMetadata:p},A);let w=Buffer.from([...Ni,...A]);return new Pe({keys:y,programId:e,data:w})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:r,positionNft:o}){let{publicKey:s}=me(r,o,Z),{publicKey:a}=Me(n,o),u=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Bn(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:je.programId,isSigner:!1,isWritable:!1}];return new Pe({keys:u,programId:e,data:Buffer.from(Ni)})}static harvestLockPositionInstruction(e){let[t,n]=[new P(e.poolKeys.programId),new P(e.poolKeys.id)],r=x.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),o=x.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:s}=H(t,n,r),{publicKey:a}=H(t,n,o),{publicKey:u}=me(e.owner,e.ownerPosition.nftMint,Z),{publicKey:c}=Me(t,e.ownerPosition.nftMint),{publicKey:l}=it(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),m=[];for(let b=0;b<e.poolKeys.rewardInfos.length;b++)m.push({poolRewardVault:new P(e.poolKeys.rewardInfos[b].vault),ownerRewardVault:e.ownerRewardAccounts[b],rewardMint:new P(e.poolKeys.rewardInfos[b].mint.address)});let d=[...m.map(b=>[{pubkey:b.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:b.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:b.rewardMint,isSigner:!1,isWritable:!1}]).flat()],f=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:Bn(e.programId,c).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:new P(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new P(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:Z,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:new P(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new P(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...d];return new Pe({keys:f,programId:e.programId,data:Buffer.from(Ki)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:r,lockOwner:o,lockNftMint:s,lockNftAccount:a,positionNftAccount:u,positionId:c,poolId:l,protocolPosition:m,vaultA:d,vaultB:f,tickArrayLower:b,tickArrayUpper:p,userVaultA:y,userVaultB:g,mintA:A,mintB:w,rewardAccounts:T,exTickArrayBitmap:N}){let k=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[],...T.map(C=>[{pubkey:C.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.rewardMint,isSigner:!1,isWritable:!1}]).flat()],K=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,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:b,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:Z,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:A,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...k];return new Pe({keys:K,programId:e,data:Buffer.from(Ki)})}};export{jt as ClmmInstrument};
//# sourceMappingURL=instrument.mjs.map