UNPKG

snapper-sdk

Version:

An SDK for building applications on top of Snapper.

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