UNPKG

@cobaltx/sdk-v2

Version:

An SDK for building applications on top of CobaltX.

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