@cobaltx/sdk-v2
Version:
An SDK for building applications on top of CobaltX.
9 lines • 162 kB
JavaScript
import{MINT_SIZE as _s,TOKEN_PROGRAM_ID as Ds,getTransferFeeConfig as vs,unpackMint as Ws}from"@solana/spl-token";import{PublicKey as or}from"@solana/web3.js";import{get as Zn,set as ir}from"lodash";var dn=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}},Jn={},rr={};function re(i){let e=Zn(Jn,i);if(!e){let t=Zn(rr,i);e=new dn({name:i,logLevel:t}),ir(Jn,i,e)}return e}var fn=re("CobaltX_accountInfo_util");async function at(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}={batchRequest:!1,...t},s=bn(e,o),a=new Array(s.length).fill([]);if(n){let c=s.map(m=>{let p=i._buildArgs([m.map(d=>d.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:p}}),u=bn(c,10);a=(await(await Promise.all(u.map(async m=>await i._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&fn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(p=>{if(p){let{data:d,executable:k,lamports:f,owner:y,rentEpoch:b}=p;return d.length!==2&&d[1]!=="base64"&&fn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:k,lamports:f,owner:new or(y),rentEpoch:b}}return null})))}else try{a=await Promise.all(s.map(c=>i.getMultipleAccountsInfo(c,r)))}catch(c){c instanceof Error&&fn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function St(i,e,t){let n=await at(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>({...r,accountInfo:n[o]}))}import tt from"bn.js";var Tt=9e15,mt=1e9,yn="0123456789abcdef",Xt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Ht="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",gn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Tt,maxE:Tt,crypto:!1},ni,Je,U=!0,Qt="[DecimalError] ",lt=Qt+"Invalid argument: ",ii=Qt+"Precision limit exceeded",ri=Qt+"crypto unavailable",oi="[object Decimal]",xe=Math.floor,Ae=Math.pow,sr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ar=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ur=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,si=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,qe=1e7,F=7,cr=9007199254740991,lr=Xt.length-1,kn=Ht.length-1,h={toStringTag:oi};h.absoluteValue=h.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),v(i)};h.ceil=function(){return v(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(lt+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,c=o.s,u=i.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==i.e)return o.e>i.e^c<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]^c<0?1:-1;return n===r?0:n>r^c<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())+F,n.rounding=1,t=mr(n,mi(n,t)),n.precision=i,n.rounding=e,v(Je==2||Je==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,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(U=!1,o=l.s*Ae(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Be(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Ae(t,1/3),i=xe((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,c=a.times(a).times(a),u=c.plus(l),n=ie(u.plus(l).times(a),u.plus(c),s+2,1),Be(a.d).slice(0,s)===(t=Be(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(v(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")&&(v(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return U=!0,v(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-xe(this.e/F))*F,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};h.dividedBy=h.div=function(i){return ie(this,new this.constructor(i))};h.dividedToIntegerBy=h.divToInt=function(i){var e=this,t=e.constructor;return v(ie(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 v(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/jt(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=ht(s,1,o.times(e),new s(1),!0);for(var c,u=i,l=new s(8);u--;)c=o.times(o),o=a.minus(c.times(l.minus(c.times(l))));return v(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=ht(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/jt(5,i)),r=ht(o,2,r,r,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,v(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,ie(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()?Ge(e,n,r):new e(0):new e(NaN):i.isZero()?Ge(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,U=!1,t=t.times(t).minus(1).sqrt().plus(t),U=!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,U=!1,t=t.times(t).plus(1).sqrt().plus(t),U=!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?v(new o(r),i,e,!0):(o.precision=t=n-r.e,r=ie(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=Ge(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,c,u=this,l=u.constructor,m=l.precision,p=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&m+4<=kn)return s=Ge(l,m+4,p).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=kn)return s=Ge(l,m+4,p).times(.5),s.s=u.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/F+2|0),i=t;i;--i)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(U=!1,e=Math.ceil(a/F),n=1,c=u.times(u),s=new l(u),r=u;i!==-1;)if(r=r.times(c),o=s.minus(r.div(n+=2)),r=r.times(c),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)),U=!0,v(s,l.precision=m,l.rounding=p,!0)};h.isFinite=function(){return!!this.d};h.isInteger=h.isInt=function(){return!!this.d&&xe(this.e/F)>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,c,u=this,l=u.constructor,m=l.precision,p=l.rounding,d=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=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if(U=!1,a=m+d,s=ct(u,a),n=e?zt(l,a+10):ct(i,a),c=ie(s,n,a,1),xt(c.d,r=m,p))do if(a+=10,s=ct(u,a),n=e?zt(l,a+10):ct(i,a),c=ie(s,n,a,1),!o){+Be(c.d).slice(r+1,r+15)+1==1e14&&(c=v(c,m+1,0));break}while(xt(c.d,r+=10,p));return U=!0,v(c,m,p)};h.minus=h.sub=function(i){var e,t,n,r,o,s,a,c,u,l,m,p,d=this,k=d.constructor;if(i=new k(i),!d.d||!i.d)return!d.s||!i.s?i=new k(NaN):d.d?i.s=-i.s:i=new k(i.d||d.s!==i.s?d:NaN),i;if(d.s!=i.s)return i.s=-i.s,d.plus(i);if(u=d.d,p=i.d,a=k.precision,c=k.rounding,!u[0]||!p[0]){if(p[0])i.s=-i.s;else if(u[0])i=new k(d);else return new k(c===3?-0:0);return U?v(i,a,c):i}if(t=xe(i.e/F),l=xe(d.e/F),u=u.slice(),o=l-t,o){for(m=o<0,m?(e=u,o=-o,s=p.length):(e=p,t=l,s=u.length),n=Math.max(Math.ceil(a/F),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(u[n]!=p[n]){m=u[n]<p[n];break}o=0}for(m&&(e=u,u=p,p=e,i.s=-i.s),s=u.length,n=p.length-s;n>0;--n)u[s++]=0;for(n=p.length;n>o;){if(u[--n]<p[n]){for(r=n;r&&u[--r]===0;)u[r]=qe-1;--u[r],u[n]+=qe}u[n]-=p[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(i.d=u,i.e=Yt(u,t),U?v(i,a,c):i):new k(c===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]?v(new n(t),n.precision,n.rounding):(U=!1,n.modulo==9?(e=ie(t,i.abs(),0,3,1),e.s*=i.s):e=ie(t,i,0,n.modulo,1),e=e.times(i),U=!0,t.minus(e))};h.naturalExponential=h.exp=function(){return An(this)};h.naturalLogarithm=h.ln=function(){return ct(this)};h.negated=h.neg=function(){var i=new this.constructor(this);return i.s=-i.s,v(i)};h.plus=h.add=function(i){var e,t,n,r,o,s,a,c,u,l,m=this,p=m.constructor;if(i=new p(i),!m.d||!i.d)return!m.s||!i.s?i=new p(NaN):m.d||(i=new p(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(u=m.d,l=i.d,a=p.precision,c=p.rounding,!u[0]||!l[0])return l[0]||(i=new p(m)),U?v(i,a,c):i;if(o=xe(m.e/F),n=xe(i.e/F),u=u.slice(),r=o-n,r){for(r<0?(t=u,r=-r,s=l.length):(t=l,n=o,s=u.length),o=Math.ceil(a/F),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=u.length,r=l.length,s-r<0&&(r=s,t=l,l=u,u=t),e=0;r;)e=(u[--r]=u[r]+l[r]+e)/qe|0,u[r]%=qe;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return i.d=u,i.e=Yt(u,n),U?v(i,a,c):i};h.precision=h.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(lt+i);return t.d?(e=ai(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};h.round=function(){var i=this,e=i.constructor;return v(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())+F,n.rounding=1,t=dr(n,mi(n,t)),n.precision=i,n.rounding=e,v(Je>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,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(U=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=Be(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=xe((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(o=n,n=o.plus(ie(s,o,t+2,1)).times(.5),Be(o.d).slice(0,t)===(e=Be(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(v(o,c+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(v(n,c+1,1),i=!n.times(n).eq(s));break}return U=!0,v(n,c,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=ie(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,v(Je==2||Je==4?t.neg():t,i,e,!0)):new n(NaN)};h.times=h.mul=function(i){var e,t,n,r,o,s,a,c,u,l=this,m=l.constructor,p=l.d,d=(i=new m(i)).d;if(i.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!i.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?i.s/0:i.s*0);for(t=xe(l.e/F)+xe(i.e/F),c=p.length,u=d.length,c<u&&(o=p,p=d,d=o,s=c,c=u,u=s),o=[],s=c+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,r=c+n;r>n;)a=o[r]+d[n]*p[r-n-1]+e,o[r--]=a%qe|0,e=a/qe|0;o[r]=(o[r]+e)%qe|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=Yt(o,t),U?v(i,m.precision,m.rounding):i};h.toBinary=function(i,e){return Pn(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:(Le(i,0,mt),e===void 0?e=n.rounding:Le(e,0,8),v(t,i+t.e+1,e))};h.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Xe(n,!0):(Le(i,0,mt),e===void 0?e=r.rounding:Le(e,0,8),n=v(new r(n),i+1,e),t=Xe(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=Xe(r):(Le(i,0,mt),e===void 0?e=o.rounding:Le(e,0,8),n=v(new o(r),i+r.e+1,e),t=Xe(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};h.toFraction=function(i){var e,t,n,r,o,s,a,c,u,l,m,p,d=this,k=d.d,f=d.constructor;if(!k)return new f(d);if(u=t=new f(1),n=c=new f(0),e=new f(n),o=e.e=ai(k)-d.e-1,s=o%F,e.d[0]=Ae(10,s<0?F+s:s),i==null)i=o>0?e:u;else{if(a=new f(i),!a.isInt()||a.lt(u))throw Error(lt+a);i=a.gt(e)?o>0?e:u:a}for(U=!1,a=new f(Be(k)),l=f.precision,f.precision=o=k.length*F*2;m=ie(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=u,u=c.plus(m.times(r)),c=r,r=e,e=a.minus(m.times(r)),a=r;return r=ie(i.minus(t),n,0,1,1),c=c.plus(r.times(u)),t=t.plus(r.times(n)),c.s=u.s=d.s,p=ie(u,n,o,1).minus(d).abs().cmp(ie(c,t,o,1).minus(d).abs())<1?[u,n]:[c,t],f.precision=l,U=!0,p};h.toHexadecimal=h.toHex=function(i,e){return Pn(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:Le(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]?(U=!1,t=ie(t,i,0,e,1).times(i),U=!0,v(t)):(i.s=t.s,t=i),t};h.toNumber=function(){return+this};h.toOctal=function(i,e){return Pn(this,8,i,e)};h.toPower=h.pow=function(i){var e,t,n,r,o,s,a=this,c=a.constructor,u=+(i=new c(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new c(Ae(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,i.eq(1))return v(a,n,o);if(e=xe(i.e/F),e>=i.d.length-1&&(t=u<0?-u:u)<=cr)return r=ui(c,a,t,n),i.s<0?new c(1).div(r):v(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new c(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=Ae(+a,u),e=t==0||!isFinite(t)?xe(u*(Math.log("0."+Be(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(U=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=An(i.times(ct(a,n+t)),n),r.d&&(r=v(r,n+5,1),xt(r.d,n,o)&&(e=n+10,r=v(An(i.times(ct(a,e+t)),e),e+5,1),+Be(r.d).slice(n+1,n+15)+1==1e14&&(r=v(r,n+1,0)))),r.s=s,U=!0,c.rounding=o,v(r,n,o))};h.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Xe(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Le(i,1,mt),e===void 0?e=r.rounding:Le(e,0,8),n=v(new r(n),i,e),t=Xe(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):(Le(i,1,mt),e===void 0?e=n.rounding:Le(e,0,8)),v(new n(t),i,e)};h.toString=function(){var i=this,e=i.constructor,t=Xe(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};h.truncated=h.trunc=function(){return v(new this.constructor(this),this.e+1,1)};h.valueOf=h.toJSON=function(){var i=this,e=i.constructor,t=Xe(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function Be(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=F-n.length,t&&(o+=ut(t)),o+=n;s=i[e],n=s+"",t=F-n.length,t&&(o+=ut(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Le(i,e,t){if(i!==~~i||i<e||i>t)throw Error(lt+i)}function xt(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=F,r=0):(r=Math.ceil((e+1)/F),e%=F),o=Ae(10,F-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)==Ae(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)==Ae(10,e-3)-1,s}function Ut(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]+=yn.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 mr(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/jt(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=ht(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 ie=function(){function i(n,r,o){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*r+a,n[c]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(n[a]!=r[a]){c=n[a]>r[a]?1:-1;break}return c}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,c){var u,l,m,p,d,k,f,y,b,P,T,N,_,B,L,O,W,S,D,be,ye=n.constructor,pe=n.s==r.s?1:-1,oe=n.d,$=r.d;if(!oe||!oe[0]||!$||!$[0])return new ye(!n.s||!r.s||(oe?$&&oe[0]==$[0]:!$)?NaN:oe&&oe[0]==0||!$?pe*0:pe/0);for(c?(d=1,l=n.e-r.e):(c=qe,d=F,l=xe(n.e/d)-xe(r.e/d)),D=$.length,W=oe.length,b=new ye(pe),P=b.d=[],m=0;$[m]==(oe[m]||0);m++);if($[m]>(oe[m]||0)&&l--,o==null?(B=o=ye.precision,s=ye.rounding):a?B=o+(n.e-r.e)+1:B=o,B<0)P.push(1),k=!0;else{if(B=B/d+2|0,m=0,D==1){for(p=0,$=$[0],B++;(m<W||p)&&B--;m++)L=p*c+(oe[m]||0),P[m]=L/$|0,p=L%$|0;k=p||m<W}else{for(p=c/($[0]+1)|0,p>1&&($=i($,p,c),oe=i(oe,p,c),D=$.length,W=oe.length),O=D,T=oe.slice(0,D),N=T.length;N<D;)T[N++]=0;be=$.slice(),be.unshift(0),S=$[0],$[1]>=c/2&&++S;do p=0,u=e($,T,D,N),u<0?(_=T[0],D!=N&&(_=_*c+(T[1]||0)),p=_/S|0,p>1?(p>=c&&(p=c-1),f=i($,p,c),y=f.length,N=T.length,u=e(f,T,y,N),u==1&&(p--,t(f,D<y?be:$,y,c))):(p==0&&(u=p=1),f=$.slice()),y=f.length,y<N&&f.unshift(0),t(T,f,N,c),u==-1&&(N=T.length,u=e($,T,D,N),u<1&&(p++,t(T,D<N?be:$,N,c))),N=T.length):u===0&&(p++,T=[0]),P[m++]=p,u&&T[0]?T[N++]=oe[O]||0:(T=[oe[O]],N=1);while((O++<W||T[0]!==void 0)&&B--);k=T[0]!==void 0}P[0]||P.shift()}if(d==1)b.e=l,ni=k;else{for(m=1,p=P[0];p>=10;p/=10)m++;b.e=m+l*d-1,v(b,a?o+b.e+1:o,s,k)}return b}}();function v(i,e,t,n){var r,o,s,a,c,u,l,m,p,d=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+=F,s=e,l=m[p=0],c=l/Ae(10,r-s-1)%10|0;else if(p=Math.ceil((o+1)/F),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=c=0,r=1,o%=F,s=o-F+1}else break e;else{for(l=a=m[p],r=1;a>=10;a/=10)r++;o%=F,s=o-F+r,c=s<0?0:l/Ae(10,r-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%Ae(10,r-s-1)),u=t<4?(c||n)&&(t==0||t==(i.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(o>0?s>0?l/Ae(10,r-s):0:m[p-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,u?(e-=i.e+1,m[0]=Ae(10,(F-e%F)%F),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=Ae(10,F-o),m[p]=s>0?(l/Ae(10,r-s)%Ae(10,s)|0)*a:0),u)for(;;)if(p==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]==qe&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=qe)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return U&&(i.e>d.maxE?(i.d=null,i.e=NaN):i.e<d.minE&&(i.e=0,i.d=[0])),i}function Xe(i,e,t){if(!i.isFinite())return li(i);var n,r=i.e,o=Be(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+ut(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+ut(-r-1)+o,t&&(n=t-s)>0&&(o+=ut(n))):r>=s?(o+=ut(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+ut(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=ut(n))),o}function Yt(i,e){var t=i[0];for(e*=F;t>=10;t/=10)e++;return e}function zt(i,e,t){if(e>lr)throw U=!0,t&&(i.precision=t),Error(ii);return v(new i(Xt),e,1,!0)}function Ge(i,e,t){if(e>kn)throw Error(ii);return v(new i(Ht),e,t,!0)}function ai(i){var e=i.length-1,t=e*F+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 ut(i){for(var e="";i--;)e+="0";return e}function ui(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/F+4);for(U=!1;;){if(t%2&&(o=o.times(e),ei(o.d,s)&&(r=!0)),t=xe(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ei(e.d,s)}return U=!0,o}function $n(i){return i.d[i.d.length-1]&1}function ci(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 An(i,e){var t,n,r,o,s,a,c,u=0,l=0,m=0,p=i.constructor,d=p.rounding,k=p.precision;if(!i.d||!i.d[0]||i.e>17)return new p(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(U=!1,c=k):c=e,a=new p(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(Ae(2,m))/Math.LN10*2+5|0,c+=n,t=o=s=new p(1),p.precision=c;;){if(o=v(o.times(i),c,1),t=t.times(++l),a=s.plus(ie(o,t,c,1)),Be(a.d).slice(0,c)===Be(s.d).slice(0,c)){for(r=m;r--;)s=v(s.times(s),c,1);if(e==null)if(u<3&&xt(s.d,c-n,d,u))p.precision=c+=10,t=o=a=new p(1),l=0,u++;else return v(s,p.precision=k,d,U=!0);else return p.precision=k,s}s=a}}function ct(i,e){var t,n,r,o,s,a,c,u,l,m,p,d=1,k=10,f=i,y=f.d,b=f.constructor,P=b.rounding,T=b.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new b(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(U=!1,l=T):l=e,b.precision=l+=k,t=Be(y),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(i),t=Be(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new b("0."+t),o++):f=new b(n+"."+t.slice(1))}else return u=zt(b,l+2,T).times(o+""),f=ct(new b(n+"."+t.slice(1)),l-k).plus(u),b.precision=T,e==null?v(f,T,P,U=!0):f;for(m=f,c=s=f=ie(f.minus(1),f.plus(1),l,1),p=v(f.times(f),l,1),r=3;;){if(s=v(s.times(p),l,1),u=c.plus(ie(s,new b(r),l,1)),Be(u.d).slice(0,l)===Be(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(zt(b,l+2,T).times(o+""))),c=ie(c,new b(d),l,1),e==null)if(xt(c.d,l-k,P,a))b.precision=l+=k,u=s=f=ie(m.minus(1),m.plus(1),l,1),p=v(f.times(f),l,1),r=a=1;else return v(c,b.precision=T,P,U=!0);else return b.precision=T,c;c=u,r+=2}}function li(i){return String(i.s*i.s/0)}function Gt(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)%F,t<0&&(n+=F),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=F;n<r;)i.d.push(+e.slice(n,n+=F));e=e.slice(n),n=F-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),U&&(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 pr(i,e){var t,n,r,o,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),si.test(e))return Gt(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(ar.test(e))t=16,e=e.toLowerCase();else if(sr.test(e))t=2;else if(ur.test(e))t=8;else throw Error(lt+e);for(o=e.search(/p/i),o>0?(c=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=ui(n,new n(t),o,o*2)),u=Ut(e,t,qe),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(i.s*0):(i.e=Yt(u,l),i.d=u,U=!1,s&&(i=ie(i,r,a*4)),c&&(i=i.times(Math.abs(c)<54?Ae(2,c):Kt.pow(2,c))),U=!0,i)}function dr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:ht(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/jt(5,t)),e=ht(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 ht(i,e,t,n,r){var o,s,a,c,u=1,l=i.precision,m=Math.ceil(l/F);for(U=!1,c=t.times(t),a=new i(n);;){if(s=ie(a.times(c),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=ie(s.times(c),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,u++}return U=!0,s.d.length=m+1,s}function jt(i,e){for(var t=i;--e;)t*=i;return t}function mi(i,e){var t,n=e.s<0,r=Ge(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return Je=n?4:1,e;if(t=e.divToInt(r),t.isZero())Je=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return Je=$n(t)?n?2:3:n?4:1,e;Je=$n(t)?n?1:4:n?3:2}return e.minus(r).abs()}function Pn(i,e,t,n){var r,o,s,a,c,u,l,m,p,d=i.constructor,k=t!==void 0;if(k?(Le(t,1,mt),n===void 0?n=d.rounding:Le(n,0,8)):(t=d.precision,n=d.rounding),!i.isFinite())l=li(i);else{for(l=Xe(i),s=l.indexOf("."),k?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Ut(Xe(p),10,r),p.e=p.d.length),m=Ut(l,10,r),o=c=m.length;m[--c]==0;)m.pop();if(!m[0])l=k?"0p+0":"0";else{if(s<0?o--:(i=new d(i),i.d=m,i.e=o,i=ie(i,p,t,n,0,r),m=i.d,o=i.e,u=ni),s=m[t],a=r/2,u=u||m[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,u)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=yn.charAt(m[s]);if(k){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=Ut(l,r,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=yn.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>c)for(o-=c;o--;)l+="0";else o<c&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function ei(i,e){if(i.length>e)return i.length=e,!0}function fr(i){return new this(i).abs()}function br(i){return new this(i).acos()}function yr(i){return new this(i).acosh()}function gr(i,e){return new this(i).plus(e)}function kr(i){return new this(i).asin()}function Ar(i){return new this(i).asinh()}function Pr(i){return new this(i).atan()}function wr(i){return new this(i).atanh()}function Tr(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=Ge(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Ge(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Ge(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ie(i,e,o,1)),e=Ge(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(ie(i,e,o,1)),t}function hr(i){return new this(i).cbrt()}function Br(i){return v(i=new this(i),i.e+1,2)}function Ir(i,e,t){return new this(i).clamp(e,t)}function Sr(i){if(!i||typeof i!="object")throw Error(Qt+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,mt,"rounding",0,8,"toExpNeg",-Tt,0,"toExpPos",0,Tt,"maxE",0,Tt,"minE",-Tt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=gn[t]),(n=i[t])!==void 0)if(xe(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(lt+t+": "+n);if(t="crypto",r&&(this[t]=gn[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(ri);else this[t]=!1;else throw Error(lt+t+": "+n);return this}function xr(i){return new this(i).cos()}function Kr(i){return new this(i).cosh()}function pi(i){var e,t,n;function r(o){var s,a,c,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,ti(o)){u.s=o.s,U?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;U?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return Gt(u,o.toString())}if(c==="string")return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),si.test(o)?Gt(u,o):pr(u,o);if(c==="bigint")return o<0?(o=-o,u.s=-1):u.s=1,Gt(u,o.toString());throw Error(lt+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=Sr,r.clone=pi,r.isDecimal=ti,r.abs=fr,r.acos=br,r.acosh=yr,r.add=gr,r.asin=kr,r.asinh=Ar,r.atan=Pr,r.atanh=wr,r.atan2=Tr,r.cbrt=hr,r.ceil=Br,r.clamp=Ir,r.cos=xr,r.cosh=Kr,r.div=Cr,r.exp=Nr,r.floor=Lr,r.hypot=Or,r.ln=Rr,r.log=Mr,r.log10=_r,r.log2=Er,r.max=Dr,r.min=vr,r.mod=Wr,r.mul=Fr,r.pow=Vr,r.random=qr,r.round=Ur,r.sign=Gr,r.sin=Xr,r.sinh=Hr,r.sqrt=zr,r.sub=Qr,r.sum=Yr,r.tan=jr,r.tanh=Zr,r.trunc=Jr,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 Cr(i,e){return new this(i).div(e)}function Nr(i){return new this(i).exp()}function Lr(i){return v(i=new this(i),i.e+1,3)}function Or(){var i,e,t=new this(0);for(U=!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 U=!0,new this(1/0);t=e}return U=!0,t.sqrt()}function ti(i){return i instanceof Kt||i&&i.toStringTag===oi||!1}function Rr(i){return new this(i).ln()}function Mr(i,e){return new this(i).log(e)}function Er(i){return new this(i).log(2)}function _r(i){return new this(i).log(10)}function Dr(){return ci(this,arguments,-1)}function vr(){return ci(this,arguments,1)}function Wr(i,e){return new this(i).mod(e)}function Fr(i,e){return new this(i).mul(e)}function Vr(i,e){return new this(i).pow(e)}function qr(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Le(i,1,mt),n=Math.ceil(i/F),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(ri);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=F,n&&i&&(r=Ae(10,F-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-=F)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<F&&(t-=F-n)}return s.e=t,s.d=a,s}function Ur(i){return v(i=new this(i),i.e+1,this.rounding)}function Gr(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Xr(i){return new this(i).sin()}function Hr(i){return new this(i).sinh()}function zr(i){return new this(i).sqrt()}function Qr(i,e){return new this(i).sub(e)}function Yr(){var i=0,e=arguments,t=new this(e[i]);for(U=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return U=!0,v(t,this.precision,this.rounding)}function jr(i){return new this(i).tan()}function Zr(i){return new this(i).tanh()}function Jr(i){return v(i=new this(i),i.e+1,1)}h[Symbol.for("nodejs.util.inspect.custom")]=h.toString;h[Symbol.toStringTag]="Decimal";var Kt=h.constructor=pi(gn);Xt=new Kt(Xt);Ht=new Kt(Ht);var M=Kt;import so from"big.js";import $t from"bn.js";import $r from"toformat";var eo=$r,Ct=eo;import Jt from"big.js";import no from"bn.js";import io from"decimal.js-light";import Nt from"bn.js";var di=9007199254740991;function se(i){let e=re("CobaltX_parseBigNumberish");if(i instanceof Nt)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Nt(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=di||i<=-di)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Nt(String(i))):typeof i=="bigint"?new Nt(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Nt(0))}var Zt=re("module/fraction"),wn=Ct(Jt),Lt=Ct(io),ro={[0]:Lt.ROUND_DOWN,[1]:Lt.ROUND_HALF_UP,[2]:Lt.ROUND_UP},oo={[0]:Jt.roundDown,[1]:Jt.roundHalfUp,[2]:Jt.roundUp},Z=class{constructor(e,t=new no(1)){this.numerator=se(e),this.denominator=se(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Z(this.denominator,this.numerator)}add(e){let t=e instanceof Z?e:new Z(se(e));return this.denominator.eq(t.denominator)?new Z(this.numerator.add(t.numerator),this.denominator):new Z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Z?e:new Z(se(e));return this.denominator.eq(t.denominator)?new Z(this.numerator.sub(t.numerator),this.denominator):new Z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Z?e:new Z(se(e));return new Z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Z?e:new Z(se(e));return new Z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Zt.logWithError(`${e} is not an integer.`),e<=0&&Zt.logWithError(`${e} is not positive.`),Lt.set({precision:e+1,rounding:ro[n]});let r=new Lt(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)||Zt.logWithError(`${e} is not an integer.`),e<0&&Zt.logWithError(`${e} is negative.`),wn.DP=e,wn.RM=oo[n]||1,new wn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ao=re("CobaltX_amount"),fi=Ct(so);function uo(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")):ao.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var Pe=class extends Z{constructor(t,n,r=!0,o){let s=new $t(0),a=Tn.pow(new $t(t.decimals));if(r)s=se(n);else{let c=new $t(0),u=new $t(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=uo(n.toString(),t.decimals);c=se(l),u=se(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=re(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 Pe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Pe(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 fi.DP=this.token.decimals,new fi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{TOKEN_PROGRAM_ID as lo}from"@solana/spl-token";import{PublicKey as Ta}from"@solana/web3.js";import{PublicKey as $e}from"@solana/web3.js";var co={["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:$e.default.toString(),OUTPUT_MINT_ADDRESS:"742wcXVzkhNuEePAot7L3GvPseh93pvYFPgyHLX8mUy9",POPULAR_TOKENS:{SOL:$e.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:$e.default.toBase58(),OUTPUT_MINT_ADDRESS:"ABoT7umUXnx8RtJTeRqKB6myebVjP2wdJGQuV23jVVH3",POPULAR_TOKENS:{SOL:$e.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:$e.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:$e.default.toString(),OUTPUT_MINT_ADDRESS:"63tPXWPnYeZ9hA3dJsAY5RcQ8YbwEz8uZ5nKu3uFD1aK",POPULAR_TOKENS:{SOL:$e.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:$e.default.toString(),OUTPUT_MINT_ADDRESS:"BoYN2f2gLQS4jpvMSV9dAZwfzKJiKGk4NPck5BjXfujo",POPULAR_TOKENS:{SOL:$e.default.toString(),ETH:"FkvCG5DcuYCQ1BnPH4ZzTkCdk3VzutgyDAFBec4qAjhh",USDC:"BoYN2f2gLQS4jpvMSV9dAZwfzKJiKGk4NPck5BjXfujo",USDT:"J87bysZjwfS3n6KR21cwbdPZVJWNSFcXpWF5kiChAwQH"},WSOL_DECIMALS:9}},bt=i=>co[i];function He(i){let e=bt(i);return{chainId:101,address:e.WSOL_MINT_ADDRESS,programId:lo.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 In}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as mo}from"@solana/spl-token";import{PublicKey as ce,SystemProgram as bi,SYSVAR_RENT_PUBKEY as po}from"@solana/web3.js";function g({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Na=[g({pubkey:mo,isWritable:!1}),g({pubkey:bi.programId,isWritable:!1}),g({pubkey:po,isWritable:!1})];function hn({publicKey:i,transformSol:e,network:t}){let n=Bn(i.toString());if(e&&t){let{WSOLMint:r}=qt(t);if(n instanceof ce)return e&&n.equals(Ot)?r:n;if(e&&n.toString()===Ot.toBase58())return r}else if(n instanceof ce)return n;if(typeof n=="string"){if(n===ce.default.toBase58())return ce.default;try{return new ce(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Bn(i){try{return new ce(i)}catch{return i}}var en=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),pt=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ze=new ce("SysvarRent111111111111111111111111111111111"),La=new ce("SysvarC1ock11111111111111111111111111111111"),dt=new ce("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Oa=new ce("Sysvar1nstructions1111111111111111111111111"),fo=bi.programId,Ot=ce.default;function qt(i){let e=bt(i);return{USDCMint:new ce(e.USDC_MINT_ADDRESS),USDTMint:new ce(e.USDT_MINT_ADDRESS),WSOLMint:new ce(e.WSOL_MINT_ADDRESS),ETHMint:new ce(e.ETH_MINT_ADDRESS),BONK_Mint:e.BONK_MINT_ADDRESS?new ce(e.BONK_MINT_ADDRESS):ce.default,SOL_Mint:e.SOL_MINT_ADDRESS?new ce(e.SOL_MINT_ADDRESS):ce.default,INPUT_MINT:new ce(e.INPUT_MINT_ADDRESS),OUTPUT_MINT:new ce(e.OUTPUT_MINT_ADDRESS)}}function wt(i,e){return hn({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===Ot.toBase58()||e instanceof In&&Ot.equals(e)&&a){this.decimals=He(a).decimals,this.symbol=He(a).symbol,this.name=He(a).name,this.mint=new In(He(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?In.default:hn({publicKey:e}),this.isToken2022=s}static getWSol(e){return new Fe({...He(e),mint:He(e).address})}equals(e){return this===e?!0:this.mint.equals(e.mint)}};import yo from"bn.js";var yi=new Z(new yo(100)),et=class extends Z{toSignificant(e=5,t,n){return this.mul(yi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(yi).toFixed(e,t,n)}};var go=re("CobaltX_price"),Re=class extends Z{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new Z(Sn(n.decimals),Sn(r.decimals))}get raw(){return new Z(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Re({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&go.logWithError("mul token not equals");let n=super.mul(t);return new Re({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};import{PublicKey as ko}from"@solana/web3.js";import Ao from"bn.js";function ki(i){return typeof i=="object"&&i!==null&&![Fe,Pe,ko,Z,Ao,Re,et].some(e=>typeof e=="object"&&i instanceof e)}function Me(i){return typeof i=="string"?Bn(i):Array.isArray(i)?i.map(e=>Me(e)):ki(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,Me(t)])):i}var gi=new tt(0),Po=new tt(1),Ku=new tt(2),Cu=new tt(3),Nu=new tt(5),Tn=new tt(10),Lu=new tt(100),Ou=new tt(1e3),Ru=new tt(1e4);function Sn(i){return Tn.pow(se(i))}function bn(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 To}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ho}from"@solana/spl-token";import{ComputeBudgetProgram as Vu,Keypair as Gu,PublicKey as wo,Transaction as Hu,TransactionMessage as Qu,VersionedTransaction as Yu}from"@solana/web3.js";var te={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 $u}from"@solana/spl-token";var ec=re("CobaltX_txUtil");function Ie(i,e){let[t,n]=wo.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function ne(i,e,t){return Ie([i.toBuffer(),(t!=null?t:ho).toBuffer(),e.toBuffer()],new To("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as H}from"@solana/web3.js";var Bo=new H("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),uc=new H("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Io=new H("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),So=new H("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),xo=new H("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Ko=new H("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),xn=new H("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ai=new H("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Co=new H("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),tn=new H("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo");function Kn(i){let e=bt(i);return new H(e.CLMM_PROGRAMM_ID)}var Pi=new H("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),wi=new H("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),No=new H("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),cc=new H("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),lc=new H("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),mc=new H("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),pc=new H("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),dc=new H("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Cn=new H("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ti=new H("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Lo=new H("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Oo=new H("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Ro=new H("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Mo=new H("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Eo=new H("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),_o=new H("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),Do=new H("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),vo=new H("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var Ce={AMM_V4:Ai,AMM_STABLE:Co,getCLMMProgramId:Kn,CLMM_LOCK_PROGRAM_ID:Pi,CLMM_LOCK_AUTH_ID:wi,FARM_PROGRAM_ID_V3:Bo,FARM_PROGRAM_ID_V5:Io,FARM_PROGRAM_ID_V6:So,OPEN_BOOK_PROGRAM:Ko,SERUM_PROGRAM_ID_V3:xn,UTIL1216:xo,Router:No,CREATE_CPMM_POOL_PROGRAM:Cn,CREATE_CPMM_POOL_AUTH:Ti,CREATE_CPMM_POOL_FEE_ACC:Lo,LOCK_CPMM_PROGRAM:Eo,LOCK_CPMM_AUTH:Do},fc={SERUM_MARKET:H.default,OPENBOOK_MARKET:new H("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:H.default,FarmV3:new H("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new H("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new H("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new H("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new H("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new H("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new H("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new H("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new H("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Oo,CREATE_CPMM_POOL_AUTH:Ro,CREATE_CPMM_POOL_FEE_ACC:Mo,FEE_DESTINATION_ID:new H("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:_o,LCOK_CPMM_AUTH:vo};import Ue from"bn.js";var Rt=1e4;function de(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 Ue(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===Rt){let c=new Ue(o.maximumFee.toString());return{amount:i.add(c),fee:c,expirationTime:a}}else{let c=nn(i.mul(new Ue(Rt)),new Ue(Rt-o.transferFeeBasisPoints)),u=new Ue(o.maximumFee.toString()),l=c.sub(i).gt(u)?i.add(u):c,m=nn(l.mul(new Ue(o.transferFeeBasisPoints)),new Ue(Rt)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let c=nn(i.mul(new Ue(o.transferFeeBasisPoints)),new Ue(Rt)),u=c.gt(s)?s:c;return{amount:i,fee:u,expirationTime:a}}}function nt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function nn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Ue(0))?t.add(new Ue(1)):t}import{PublicKey as Pc,AddressLookupTableAccount as wc}from"@solana/web3.js";import{PublicKey as Dc,sendAndConfirmTransaction as vc,Transaction as Fc,TransactionMessage as qc,VersionedTransaction as Uc}from"@solana/web3.js";import Xc from"axios";import{createTransferInstruction as nk,TOKEN_2022_PROGRAM_ID as ik,TOKEN_PROGRAM_ID as rk}from"@solana/spl-token";import{PublicKey as ak}from"@solana/web3.js";import Os from"bn.js";import{PublicKey as zo}from"@solana/web3.js";import xi,{isBN as Ki}from"bn.js";import{bits as yl,BitStructure as gl,blob as Wo,Blob as kl,cstr as Al,f32 as Pl,f32be as wl,f64 as Tl,f64be as hl,greedy as Bl,Layout as Fo,ns64 as Il,ns64be as Sl,nu64 as xl,nu64be as Kl,offset as Cl,s16 as Nl,s16be as Ll,s24 as Ol,s24be as Rl,s32 as Vo,s32be as Ml,s40 as El,s40be as _l,s48 as Dl,s48be as vl,s8 as Wl,seq as qo,struct as Fl,Structure as Uo,u16 as Go,u16be as Vl,u24 as ql,u24be as Ul,u32 as Gl,u32be as Xl,u40 as Hl,u40be as zl,u48 as Ql,u48be as Yl,u8 as Xo,UInt as Ho,union as jl,Union as Zl,unionLayoutDiscriminator as Jl,utf8 as $l}from"@solana/buffer-layout";var Nn=Fo,Bi=Uo;var Ln=Ho;var Ii=Xo,yt=Go;var ae=Vo;var Si=qo;var ge=Wo;var Bt=class extends Nn{constructor(t,n,r){super(t,r);this.blob=ge(t),this.signed=n}decode(t,n=0){let r=new xi(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 xi(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function V(i){return new Ln(1,i)}function Ee(i){return new Ln(4,i)}function A(i){return new Bt(8,!1,i)}function q(i){return new Bt(16,!1,i)}function Ci(i){return new Bt(8,!0,i)}function Ni(i){return new Bt(16,!0,i)}var rn=class extends Nn{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 x(i){return new rn(ge(32),e=>new zo(e),e=>e.toBuffer(),i)}function Te(i){return new rn(Ii(),Qo,Yo,i)}function Qo(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Yo(i){return i?1:0}var On=class extends Bi{decode(e,t){return super.decode(e,t)}};function R(i,e,t){return new On(i,e,t)}function Q(i,e,t){let n,r=typeof e=="number"?e:Ki(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Ki(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 Si(i,r,t)}import{createCloseAccountInstruction as Rm,createInitializeAccountInstruction as Mm,createTransferInstruction as Em,TOKEN_PROGRAM_ID as _m}from"@solana/spl-token";import{PublicKey as Fm,SystemProgram as qm}from"@solana/web3.js";import Xm from"bn.js";var Li=R([x("mint"),x("owner"),A("amount"),Ee("delegateOption"),x("delegate"),V("state"),Ee("isNativeOption"),A("isNative"),A("delegatedAmount"),Ee("closeAuthorityOption"),x("closeAuthority")]);import{TOKEN_PROGRAM_ID as bm}from"@solana/spl-token";import{Keypair as Am,PublicKey as Pm}from"@solana/web3.js";import hm from"bn.js";var Sm=re("CobaltX_Util");import{AccountLayout as sf,TOKEN_2022_PROGRAM_ID as af,TOKEN_PROGRAM_ID as uf}from"@solana/spl-token";import{PublicKey as lf}from"@solana/web3.js";import pf from"bn.js";var np=R([Ee("mintAuthorityOption"),x("mintAuthority"),A("supply"),V("decimals"),V("isInitialized"),Ee("freezeAuthorityOption"),x("freezeAuthority")]);import{PublicKey as sp}from"@solana/web3.js";import{MintLayout as up,TOKEN_PROGRAM_ID as lp}from"@solana/spl-token";import{ASSOCIATED_TOKEN_PROGRAM_ID as Wt,TOKEN_2022_PROGRAM_ID as me,TOKEN_PROGRAM_ID as ee}from"@solana/spl-token";import{Keypair as pn,PublicKey as I,SystemProgram as st,TransactionInstruction as Se}from"@solana/web3.js";import qn from"bn.js";import os from"bn.js";import Ve from"bn.js";var fe=new Ve(0),_e=new Ve(1),it=new Ve(-1),De=new Ve(1).shln(64),on=new Ve(1).shln(128),Rn=De.sub(_e),Mt=64,Oi=on.subn(1),Ke=-443636,Ne=-Ke,Qe=new Ve("4295048016"),Ye=new Ve("79226673521066979257578248091"),sn=new Ve("4295048017"),an=new Ve("79226673521066979257578248090"),Ri=16,Mi="59543866431248",Ei="184467440737095516",_i="15793534762490258745",un=new Ve(10).pow(new Ve(6));var Tp=new Ve("18446744073700000000");import z from"bn.js";function cn(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Mn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function En(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Et(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Di(i,e){return Et(i,e)?null:Mn(i,e)}function vi(i,e){return Et(i,e)?null:En(i,e)}var Kp=Buffer.from("amm_config","utf8"),jo=Buffer.from("pool","utf8"),Zo=Buffer.from("pool_vault","utf8"),Jo=Buffer.from("pool_reward_vault","utf8"),Wi=Buffer.from("position","utf8"),$o=Buffer.from("tick_array","utf8"),es=Buffer.from("operation","utf8"),ts=Buffer.from("pool_tick_array_bitmap_extension","utf8"),ns=Buffer.from("observation","utf8");function Fi(i,e,t,n){return Ie([jo,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function _n(i,e,t){return Ie([Zo,e.toBuffer(),t.toBuffer()],i)}function Vi(i,e,t){return Ie([Jo,e.toBuffer(),t.toBuffer()],i)}function J(i,e,t){return Ie([$o,e.toBuffer(),cn(t)],i)}function rt(i,e,t,n){return Ie([Wi,e.toBuffer(),cn(t),cn(n)],i)}function Oe(i,e){return Ie([Wi,e.toBuffer()],i)}function It(i){return Ie([Buffer.from("metadata","utf8"),dt.toBuffer(),i.toBuffer()],dt)}function ln(i){return Ie([es],i)}function ke(i,e){return Ie([ts,e.toBuffer()],i)}function qi(i,e){return Ie([ns,e.toBuffer()],i)}var Ui=Buffer.from("locked_position","utf8");function Dn(i,e){return Ie([Ui,e.toBuffer()],i)}function vn(i,e){return Ie([Ui,e.toBuffer()],i)}import{TOKEN_2022_PROGRAM_ID as Gi}from"@solana/spl-token";import{PublicKey as ve}from"@solana/web3.js";import ue from"bn.js";import je from"bn.js";var _t=class{static getfeeGrowthInside(e,t,n){let r=new je(0),o=new je(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 je(0),a=new je(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let c=X.wrappingSubU128(X.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),u=X.wrappingSubU128(X.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=X.mulDivFloor(X.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,De),c=t.tokenFeesOwedA.add(a),u=X.mulDivFloor(X.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,De),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=X.mulDivFloor(X.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,De),c=t.tokenFeesOwedA.add(a),u=X.mulDivFloor(X.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,De),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,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 c=s[a],u=t.rewardInfos[a],l=X.wrappingSubU128(c,u.growthInsideLastX64),m=X.mulDivFloor(l,t.liquidity,De),p=u.rewardAmountOwed.add(m);o.push(p)}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 c=s[a],u=t.rewardInfos[a],l=X.wrappingSubU128(c,u.growthInsideLastX64),m=X.mulDivFloor(l,t.liquidity,De),p=u.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new je(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 c=new je(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(X.wrappingSubU128(X.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new je(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 c=new je(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(X.wrappingSubU128(X.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var y,b,P,T;let a=G.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),c=G.getSqrtPriceX64FromTick(t.tickLower),u=G.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=j.getAmountsFromLiquidity(a,c,u,n,o),[p,d]=[de(m.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),de(m.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,s,!0)],[k,f]=[de(new je(new M(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),de(new je(new M(m.amountB.toString()).mul(l).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:k,amountSlippageB:f,expirationTime:nt(p.expirationTime,d.expirationTime)}}};var is=15,Y=class{static async getTickArrays(e,t,n,r,o,s,a){let c=[],u=E.getTickArrayStartIndexByTick(r,o),l=E.getInitializedTickArrayInRange(s,a,o,u,Math.floor(is/2));for(let d=0;d<l.length;d++){let{publicKey:k}=J(t,n,l[d]);c.push(k)}let m=(await at(e,c)).map(d=>d!==null?Dt.decode(d.data):null),p={};for(let d=0;d<c.length;d++){let k=m[d];k!==null&&(p[k.startTickIndex]={...k,address:c[d]})}return p}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(u=E.getNextTickArrayStartIndex(u,o,s),this.checkIsValidStartIndex(u,o))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/Y.tickCount(t)),a=n?E.searchLowBitFromStart(r,o,s-1,1,t):E.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=we-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a-1}}else{let a=0;for(;a<we;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=J(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=E.getTickArrayStartIndexByTick(r,o),c=Math.floor((r-a)/o),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let p=u.ticks[c];if(p.liquidityGross.gtn(0)){l=p;break}c=c-1}else for(c=c+1;c<we;){let p=u.ticks[c];if(p.liquidityGross.gtn(0)){l=p;break}c=c+1}let{publicKey:m}=J(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(E.checkIsOutOfBoundary(e)){if(e>Ne)return!1;let n=E.getTickArrayStartIndexByTick(Ke,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return we*e}};var Wn=14,ot=class{static maxTickInTickarrayBitmap(e){return e*we*gt}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(!Y.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-Y.tickCount(n):t+Y.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*we,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(r){let l=e.shln(1024-u-1),m=Di(1024,l);if(m!==null){let p=(u-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),m=vi(1024,l);if(m!==null){let p=(u+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-Y.tickCount(n)}}}},vt=class{static getBitmapOffset(e,t){if(!Y.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=ot.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=ot.maxTickInTickarrayBitmap(e),n=-t;if(Ne<=t)throw Error(`extensionTickBoundary check error: ${Ne}, ${t}`);if(n<=Ke)throw Error(`extensionTickBoundary check error: ${n}, ${Ke}`);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:E.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=Y.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}=ot.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let c=E.mergeTickArrayBitmap(e).shln(gt-1-a),u=Et(512,c)?null:Mn(512,c);if(u!==null){let l=t-u*Y.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=E.mergeTickArrayBitmap(e).shrn(a),u=Et(512,c)?null:En(512,c);if(u!==null){let l=t+u*Y.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-Y.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%ot.maxTickInTickarrayBitmap(t),r=Math.floor(n/Y.tickCount(t));return e<0&&n!=0&&(r=gt-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,c=[],{isExist:u,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!u||l===void 0||!m)throw new Error("Invalid tick array");c.push(m);let{allTrade:p,amountCalculated:d,accounts:k,sqrtPriceX64:f,feeAmount:y}=kt.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 c.push(...k),{allTrade:p,expectedAmountOut:d.mul(it),remainingAccounts:c,executionPrice:f,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:y}=J(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:k}=kt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(it),u,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:k}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=le.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?vt.checkTickArrayIsInit(Y.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):E.checkTickArrayIsInitialized(E.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=J(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,Y.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=J(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/Y.tickCount(e.tickSpacing)),r=t?E.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):E.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=Y.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=ot.nextInitializedTickArrayStartIndex(E.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=vt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ke||t>Ne)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,c,u;let s=[];for(let l=0;l<o.length;l++){let m=o[l],p=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(m.tokenMint))==null?void 0:c.owner;if(p===void 0)throw Error("get new reward mint info error");let d={...m,perSecond:X.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new ve(p)};if(d.tokenMint.equals(ve.default))continue;if(n<=d.openTime.toNumber()||r.eq(fe)){s.push(d);continue}let k=new ue(Math.min(d.endTime.toNumber(),n)),f=k.sub(d.lastUpdateTime),y=X.mulDivFloor(f,d.emissionsPerSecondX64,r),b=d.rewardGrowthGlobalX64.add(y),P=X.mulDivFloor(f,d.emissionsPerSecondX64,De),T=d.rewardTotalEmissioned.add(P);s.push({...d,rewardGrowthGlobalX64:b,rewardTotalEmissioned:T,lastUpdateTime:k})}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=E.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=ot.maxTickInTickarrayBitmap(e),n=-t;return t>Ne&&(t=Y.getArrayStartIndex(Ne,e)+Y.tickCount(e)),n<Ke&&(n=Y.getArrayStartIndex(Ke,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!Y.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/Y.tickCount(t)*gt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await St(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=Xi.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let c of t){let u=E.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=E.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let m of l){let{publicKey:p}=J(c.programId,c.id,m);o.push({pubkey:p}),r[p.toString()]=c.id}}let s=await St(e,o,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=r[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=Dt.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]={...l,address:c.pubkey}}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(p=>p.accountInfo.mint),u=[];for(let p of c)for(let d of s)u.push(Oe(d,p).publicKey);let l=await at(t,u,{batchRequest:r}),m={};for(let p of l){if(p===null)continue;let d=Fn.decode(p.data),k=d.poolId.toString(),f=e.find(O=>O.state.id.toBase58()===k);if(f===void 0)continue;let y=f.state,b=E._getTickPriceLegacy({poolInfo:y,tick:d.tickLower,baseIn:!0}),P=E._getTickPriceLegacy({poolInfo:y,tick:d.tickUpper,baseIn:!0}),{amountA:T,amountB:N}=j.getAmountsFromLiquidity(y.sqrtPriceX64,b.tickSqrtPriceX64,P.tickSqrtPriceX64,d.liquidity,!1),_=1/(1-Math.sqrt(Math.sqrt(b.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:b.price,priceUpper:P.price,amountA:T,amountB:N,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(O=>({...O,pendingReward:new ue(0)})),leverage:_,tokenFeeAmountA:new ue(0),tokenFeeAmountB:new ue(0)}];let B=await E.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),L=await E.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=B,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=L}if(o){let p=Object.values(m),d=await at(t,p,{batchRequest:r}),k={};for(let f=0;f<p.length;f++){let y=d[f];if(y===null)continue;let b=p[f].toString();k[b]=Dt.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let b of y){let P=`${f.programId.toString()}-${f.id.toString()}-${b.tickLower}`,T=`${f.programId.toString()}-${f.id.toString()}-${b.tickUpper}`,N=k[m[P].toString()],_=k[m[T].toString()],B=N.ticks[E.getTickOffsetInArray(b.tickLower,f.tickSpacing)],L=_.ticks[E.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:O,tokenFeeAmountB:W}=await _t.GetPositionFees(f,b,B,L),S=await _t.GetPositionRewards(f,b,B,L);b.tokenFeeAmountA=O.gte(new ue(0))?O:new ue(0),b.tokenFeeAmountB=W.gte(new ue(0))?W:new ue(0);for(let D=0;D<S.length;D++)b.rewardInfos[D].pendingReward=S[D].gte(new ue(0))?S[D]:new ue(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new M(0),catchLiquidityInsufficient:c=!1}){var be;let u,l=n.toBase58()===e.mintA.address,[m,p]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new M(0))?u=l?Qe.add(new ue(1)):Ye.sub(new ue(1)):u=G.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=de(o,m,r,!1),{allTrade:k,expectedAmountOut:f,remainingAccounts:y,executionPrice:b,feeAmount:P}=le.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((be=d.fee)!=null?be:fe),u,c),T=de(f,p,r,!1),N=G.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),_=l?N:new M(1).div(N),B=f.mul(new ue(Math.floor((1-s)*1e10))).div(new ue(1e10)),L=de(B,p,r,!1),O=l?e.currentPrice:new M(1).div(e.currentPrice),W=new M(_).sub(O).abs(),S=O,D=new et(new M(W).mul(10**15).toFixed(0),new M(S).mul(10**15).toFixed(0));return{allTrade:k,realAmountIn:d,amountOut:T,minAmountOut:L,expirationTime:nt(d.expirationTime,T.expirationTime),currentPrice:e.currentPrice,executionPrice:_,priceImpact:D,fee:P,remainingAccounts:y,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=r.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,p]=[new Fe({...u,mint:u.address,isToken2022:u.programId===Gi.toBase58()}),new Fe({...l,mint:l.address,isToken2022:l.programId===Gi.toBase58()})],{allTrade:d,realAmountIn:k,amountOut:f,minAmountOut:y,expirationTime:b,currentPrice:P,executionPrice:T,priceImpact:N,fee:_,remainingAccounts:B,executionPriceX64:L}=le.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new ve(u.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),O={...k,amount:new Pe(m,k.amount),fee:k.fee===void 0?void 0:new Pe(m,k.fee)},W={...f,amount:new Pe(p,f.amount),fee:f.fee===void 0?void 0:new Pe(p,f.fee)},S={...y,amount:new Pe(p,y.amount),fee:y.fee===void 0?void 0:new Pe(p,y.fee)},D=new Re({baseToken:m,denominator:new ue(10).pow(new ue(20+m.decimals)),quoteToken:p,numerator:P.mul(new M(10**(20+p.decimals))).toFixed(0)}),be=new Re({baseToken:m,denominator:new ue(10).pow(new ue(20+m.decimals)),quoteToken:p,numerator:T.mul(new M(10**(20+p.decimals))).toFixed(0)}),ye=new Pe(m,_);return{allTrade:d,realAmountIn:O,amountOut:W,minAmountOut:S,expirationTime:b,currentPrice:D,executionPrice:be,priceImpact:N,fee:ye,remainingAccounts:B,executionPriceX64:L}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountOut:o,slippage:s,priceLimit:a=new M(0)}){var S;let c=n.toBase58()===e.mintA.address,u={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;a.equals(new M(0))?l=c?Ye.sub(new ue(1)):Qe.add(new ue(1)):l=G.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let m=de(o,u[n.toString()],r,!0),{expectedAmountIn:p,remainingAccounts:d,executionPrice:k,feeAmount:f}=le.getInputAmountAndRemainAccounts(e,t,n,m.amount.sub((S=m.fee)!=null?S:fe),l),y=c?e.mintB.address:e.mintA.address,b=de(p,u[y],r,!1),P=G.sqrtPriceX64ToPrice(k,e.mintA.decimals,e.mintB.decimals),T=c?P:new M(1).div(P),N=p.mul(new ue(Math.floor((1+s)*1e10))).div(new ue(1e10)),_=de(N,u[y],r,!0),B=c?e.currentPrice:new M(1).div(e.currentPrice),L=new M(T).sub(B).abs(),O=B,W=new et(new M(L).mul(10**15).toFixed(0),new M(O).mul(10**15).toFixed(0));return{amountIn:b,maxAmountIn:_,realAmountOut:m,expirationTime:nt(b.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:T,priceImpact:W,fee:f,remainingAccounts:d}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var k,f,y;let o=e[t],s=E.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=E.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[((k=o.rewardApr[0])!=null?k:0)*d,((f=o.rewardApr[1])!=null?f:0)*d,((y=o.rewardApr[2])!=null?y:0)*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c,network:u}){let l=n==="day"?1:n==="week"?7:n==="month"?30:0,m=e[n],p=r[wt(e.mintA.address,u).toString()],d=r[wt(e.mintB.address,u).toString()],k=e.mintA.decimals,f=e.mintB.decimals;if(!m||!p||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let y=G.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),b=G.getSqrtPriceX64FromTick(s),P=G.getSqrtPriceX64FromTick(a),{amountSlippageA:T,amountSlippageB:N}=j.getAmountsFromLiquidityWithSlippage(y,b,P,t,!1,!1,0),{amountSlippageA:_,amountSlippageB:B}=j.getAmountsFromLiquidityWithSlippage(y,b,P,o,!1,!1,0),L=new M(T.toString()).div(new M(10).pow(k)).mul(p.value).add(new M(N.toString()).div(new M(10).pow(f)).mul(d.value)),O=new M(_.toString()).div(new M(10).pow(k)).mul(p.value).add(new M(B.toString()).div(new M(10).pow(f)).mul(d.value)),W=new M(1).div(L.add(O)),D=new M(m.volumeFee).mul(365).div(l).mul(W).mul(100).toNumber(),be=3600*24*365,ye=e.rewardDefaultInfos.map(pe=>{var Yn,jn;let oe=pe.mint.decimals,$=r[pe.mint.address];return c<((Yn=pe.startTime)!=null?Yn:0)||c>((jn=pe.endTime)!=null?jn:0)||!pe.perSecond||!$||oe===void 0?0:new M($.value).mul(new M(pe.perSecond).mul(be)).div(new M(10).pow(oe)).mul(W).mul(100).toNumber()});return{feeApr:D,rewardsApr:ye,apr:D+ye.reduce((pe,oe)=>pe+oe,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var b,P;let l=G.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),m=G.getSqrtPriceX64FromTick(n),p=G.getSqrtPriceX64FromTick(r),d=a?1-s:1+s,k=de(o,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,c,!u),f=new ue(new M(k.amount.sub((P=k.fee)!=null?P:fe).toString()).mul(d).toFixed(0)),y;if(l.lte(m))y=t?j.getLiquidityFromTokenAmountA(m,p,f,!a):new ue(0);else if(l.lte(p)){let T=j.getLiquidityFromTokenAmountA(l,p,f,!a),N=j.getLiquidityFromTokenAmountB(m,l,f);y=t?T:N}else y=t?new ue(0):j.getLiquidityFromTokenAmountB(m,p,f);return le.getAmountsFromLiquidity({epochInfo:c,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,b,P,T;let c=G.getSqrtPriceX64FromTick(n),u=G.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=j.getAmountsFromLiquidity(G.priceToSqrtPriceX64(new M(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[p,d]=[de(m.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),de(m.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[k,f]=[de(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),de(m.amountB.muln(l),(T=t.mintB.extensions)==null?void 0:T.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:k,amountSlippageB:f,expirationTime:nt(p.expirationTime,d.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(c=>!n[c.id]).map(c=>new ve(c.id));(await at(e,r)).forEach((c,u)=>{!c||(n[r[u].toBase58()]=mn.decode(c.data))});let s=t.map(c=>ke(new ve(c.programId),new ve(c.id)).publicKey),a=await le.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>({...c,[u.id]:{...n[u.id],id:new ve(u.id),version:6,programId:new ve(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:{...u.config,id:new ve(u.config.id),fundOwner:""},currentPrice:new M(u.price),exBitmapAccount:ke(new ve(u.programId),new ve(u.id)).publicKey,exBitmapInfo:a[ke(new ve(u.programId),new ve(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber(),rewardInfos:n[u.id].rewardInfos}}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};var X=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(fe)||(o=o.add(_e)),o}static mulDivFloor(e,t,n){if(n.eq(fe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(fe))throw new Error("division by 0");return e.mul(t).add(n.sub(_e)).div(n)}static x64ToDecimal(e,t){return new M(e.toString()).div(M.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new z(e.mul(M.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(on).sub(t).mod(on)}};function he(i,e){return Vn(i.mul(e),64,256)}function rs(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Vn(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var G=class{static sqrtPriceX64ToPrice(e,t,n){return X.x64ToDecimal(e).pow(2).mul(M.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return X.decimalToX64(e.mul(M.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(fe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(fe))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(fe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(fe))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(fe))return e;let o=t.shln(Mt);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?X.mulDivCeil(s,e,a):X.mulDivRoundingUp(s,_e,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 X.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Mt);if(r)return e.add(o.div(t));{let s=X.mulDivRoundingUp(o,_e,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<Ke||e>Ne)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new z("18445821805675395072"):new z("18446744073709551616");return(t&2)!=0&&(n=he(n,new z("18444899583751176192"))),(t&4)!=0&&(n=he(n,new z("18443055278223355904"))),(t&8)!=0&&(n=he(n,new z("18439367220385607680"))),(t&16)!=0&&(n=he(n,new z("18431993317065453568"))),(t&32)!=0&&(n=he(n,new z("18417254355718170624"))),(t&64)!=0&&(n=he(n,new z("18387811781193609216"))),(t&128)!=0&&(n=he(n,new z("18329067761203558400"))),(t&256)!=0&&(n=he(n,new z("18212142134806163456"))),(t&512)!=0&&(n=he(n,new z("17980523815641700352"))),(t&1024)!=0&&(n=he(n,new z("17526086738831433728"))),(t&2048)!=0&&(n=he(n,new z("16651378430235570176"))),(t&4096)!=0&&(n=he(n,new z("15030750278694412288"))),(t&8192)!=0&&(n=he(n,new z("12247334978884435968"))),(t&16384)!=0&&(n=he(n,new z("8131365268886854656"))),(t&32768)!=0&&(n=he(n,new z("3584323654725218816"))),(t&65536)!=0&&(n=he(n,new z("696457651848324352"))),(t&131072)!=0&&(n=he(n,new z("26294789957507116"))),(t&262144)!=0&&(n=he(n,new z("37481735321082"))),e>0&&(n=Oi.div(n)),n}static getTickFromPrice(e,t,n){return G.getTickFromSqrtPriceX64(G.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ye)||e.lt(Qe))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new z(t-64),r=rs(n,32,128),o=new z("8000000000000000","hex"),s=0,a=new z(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new z(0))&&s<Ri;){c=c.mul(c);let k=c.shrn(127);c=c.shrn(63+k.toNumber()),a=a.add(o.mul(k)),o=o.shrn(1),s+=1}let u=a.shrn(32),m=r.add(u).mul(new z(Mi)),p=Vn(m.sub(new z(Ei)),64,128).toNumber(),d=Vn(m.add(new z(_i)),64,128).toNumber();return p==d?p:G.getSqrtPriceX64FromTick(d).lte(e)?d:p}},At=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=G.getTickFromSqrtPriceX64(G.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=At.getTickWithPriceAndTickspacing(e,t,n,r),s=G.getSqrtPriceX64FromTick(o);return G.sqrtPriceX64ToPrice(s,n,r)}},j=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(fe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Mt),s=t.sub(e);return r?X.mulDivRoundingUp(X.mulDivCeil(o,s,t),_e,e):X.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(fe))throw new Error("sqrtPriceX64A must greater than 0");return r?X.mulDivCeil(n,t.sub(e),De):X.mulDivFloor(n,t.sub(e),De)}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?X.mulDivRoundingUp(a,_e,Rn):a.shrn(Mt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),X.mulDivFloor(n,Rn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return j.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=j.getLiquidityFromTokenAmountA(e,n,r,!1),a=j.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return j.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:j.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new z(0)};if(e.lt(n)){let s=j.getTokenAmountAFromLiquidity(e,n,r,o),a=j.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new z(0),amountB:j.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:c,amountB:u}=j.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new z(new M(c.toString()).mul(l).toFixed(0)),p=new z(new M(u.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:c}){var P,T,N,_;let u=G.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),l=G.getSqrtPriceX64FromTick(t),m=G.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=j.getAmountsFromLiquidity(u,l,m,r,s),[k,f]=[de(d.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,c),de(d.amountB,(T=e.mintB.extensions)==null?void 0:T.feeConfig,a,c)],[y,b]=[de(new z(new M(d.amountA.toString()).mul(p).toFixed(0)),(N=e.mintA.extensions)==null?void 0:N.feeConfig,a,c),de(new z(new M(d.amountB.toString()).mul(p).toFixed(0)),(_=e.mintB.extensions)==null?void 0:_.feeConfig,a,c)];return{liquidity:r,amountA:k,amountB:f,amountSlippageA:y,amountSlippageB:b,expirationTime:nt(k.expirationTime,f.expirationTime)}}},kt=class{static swapCompute(e,t,n,r,o,s,a,c,u,l,m,p,d,k,f=!1){if(p.eq(fe))throw new Error("amountSpecified must not be 0");if(k||(k=s?Qe.add(_e):Ye.sub(_e)),s){if(k.lt(Qe))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(k.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(k.gt(Ye))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(k.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let y=p.gt(fe),b={amountSpecifiedRemaining:p,amountCalculated:fe,sqrtPriceX64:m,tick:u>d?Math.min(d+Y.tickCount(l)-1,u):d,accounts:[],liquidity:c,feeAmount:new z(0)},P=d,T=n[d],N=0,_=!s&&T.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(fe)&&!b.sqrtPriceX64.eq(k);){N>10;let B={};B.sqrtPriceStartX64=b.sqrtPriceX64;let L=E.nextInitTick(T,b.tick,l,s,_),O=L||null,W=null;if(!(O!=null&&O.liquidityGross.gtn(0))){let D=le.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},P,s);if(!D.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts};throw Error("swapCompute LiquidityInsufficient")}P=D.nextStartIndex;let{publicKey:be}=J(e,t,P);W=be,T=n[P];try{O=E.firstInitializedTick(T,s)}catch{throw Error("not found next tick info")}}B.tickNext=O.tick,B.initialized=O.liquidityGross.gtn(0),d!==P&&W&&(b.accounts.push(W),d=P),B.tickNext<Ke?B.tickNext=Ke:B.tickNext>Ne&&(B.tickNext=Ne),B.sqrtPriceNextX64=G.getSqrtPriceX64FromTick(B.tickNext);let S;if(s&&B.sqrtPriceNextX64.lt(k)||!s&&B.sqrtPriceNextX64.gt(k)?S=k:S=B.sqrtPriceNextX64,[b.sqrtPriceX64,B.amountIn,B.amountOut,B.feeAmount]=kt.swapStepCompute(b.sqrtPriceX64,S,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(B.feeAmount),y?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(B.amountIn.add(B.feeAmount)),b.amountCalculated=b.amountCalculated.sub(B.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(B.amountOut),b.amountCalculated=b.amountCalculated.add(B.amountIn.add(B.feeAmount))),b.sqrtPriceX64.eq(B.sqrtPriceNextX64)){if(B.initialized){let D=O.liquidityNet;s&&(D=D.mul(it)),b.liquidity=j.addDelta(b.liquidity,D)}_=B.tickNext!=b.tick&&!s&&T.startTickIndex===B.tickNext,b.tick=s?B.tickNext-1:B.tickNext}else if(b.sqrtPriceX64!=B.sqrtPriceStartX64){let D=G.getTickFromSqrtPriceX64(b.sqrtPriceX64);_=D!=b.tick&&!s&&T.startTickIndex===D,b.tick=D}++N}try{let{nextStartIndex:B,isExist:L}=Y.nextInitializedTickArray(b.tick,l,s,r,o);L&&d!==B&&(b.accounts.push(J(e,t,B).publicKey),d=B)}catch{}return{allTrade:!0,amountSpecifiedRemaining:fe,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new z(0),amountIn:new z(0),amountOut:new z(0),feeAmount:new z(0)},a=e.gte(t),c=r.gte(fe);if(c){let l=X.mulDivFloor(r,un.sub(new z(o.toString())),un);s.amountIn=a?j.getTokenAmountAFromLiquidity(t,e,n,!0):j.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=G.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?j.getTokenAmountBFromLiquidity(t,e,n,!1):j.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(it).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=G.getNextSqrtPriceX64FromOutput(e,n,r.mul(it),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=j.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=j.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:j.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:j.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(r.mul(it))&&(s.amountOut=r.mul(it)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=X.mulDivCeil(s.amountIn,new z(o),un.sub(new z(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var we=60,gt=512,E=class{static getTickArrayAddressByTick(e,t,n,r){let o=E.getTickArrayStartIndexByTick(n,r),{publicKey:s}=J(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=E.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=we)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=Y.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)*Y.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*we,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*we,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*we:e+t*we}static mergeTickArrayBitmap(e){let t=new os(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*we));return[...E.searchLowBitFromStart(e,t,s-1,o,n),...E.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return E.searchHightBitFromStart(e,t,0,gt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=E.getAllInitializedTickArrayStartIndex(n,r,o);for(let c of a){let{publicKey:u}=J(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>E.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===r)break}let c=Y.tickCount(o);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>E.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===r)break}let c=Y.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<Ke||e>Ne}static nextInitTick(e,t,n,r,o){if(Y.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<we;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=we-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<we;){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=G.getSqrtPriceX64FromTick(t),o=G.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=At.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=G.getSqrtPriceX64FromTick(o),a=G.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=G.getSqrtPriceX64FromTick(t),o=G.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=At.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=G.getSqrtPriceX64FromTick(o),a=G.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}};var ss=R([ge(8),V("bump"),yt("index"),x(""),Ee("protocolFeeRate"),Ee("tradeFeeRate"),yt("tickSpacing"),Q(A(),8,"")]),as=R([Ee("blockTimestamp"),Ci("tickCumulative"),Q(A(),4)]),Hi=R([ge(8),Te("initialized"),A("recentEpoch"),yt("observationIndex"),x("poolId"),Q(as,100,"observations"),Q(A(),4)]),us=R([V("rewardState"),A("openTime"),A("endTime"),A("lastUpdateTime"),q("emissionsPerSecondX64"),A("rewardTotalEmissioned"),A("rewardClaimed"),x("tokenMint"),x("tokenVault"),x("creator"),q("rewardGrowthGlobalX64")]),mn=R([ge(8),V("bump"),x("ammConfig"),x("creator"),x("mintA"),x("mintB"),x("vaultA"),x("vaultB"),x("observationId"),V("mintDecimalsA"),V("mintDecimalsB"),yt("tickSpacing"),q("liquidity"),q("sqrtPriceX64"),ae("tickCurrent"),Ee(),q("feeGrowthGlobalX64A"),q("feeGrowthGlobalX64B"),A("protocolFeesTokenA"),A("protocolFeesTokenB"),q("swapInAmountTokenA"),q("swapOutAmountTokenB"),q("swapInAmountTokenB"),q("swapOutAmountTokenA"),V("status"),Q(V(),7,""),Q(us,3,"rewardInfos"),Q(A(),16,"tickArrayBitmap"),A("totalFeesTokenA"),A("totalFeesClaimedTokenA"),A("totalFeesTokenB"),A("totalFeesClaimedTokenB"),A("fundFeesTokenA"),A("fundFeesTokenB"),A("startTime"),Q(A(),15*4-3,"padding")]),cs=R([q("growthInsideLastX64"),A("rewardAmountOwed")]),Fn=R([ge(8),V("bump"),x("nftMint"),x("poolId"),ae("tickLower"),ae("tickUpper"),q("liquidity"),q("feeGrowthInsideLastX64A"),q("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),Q(cs,3,"rewardInfos"),Q(A(),8,"")]),_d=R([ge(8),V("bump"),x("poolId"),ae("tickLowerIndex"),ae("tickUpperIndex"),q("liquidity"),q("feeGrowthInsideLastX64A"),q("feeGrowthInsideLastX64B"),A("tokenFeesOwedA"),A("tokenFeesOwedB"),Q(q(),3,"rewardGrowthInside"),Q(A(),8,"")]),ls=R([ae("tick"),Ni("liquidityNet"),q("liquidityGross"),q("feeGrowthOutsideX64A"),q("feeGrowthOutsideX64B"),Q(q(),3,"rewardGrowthsOutsideX64"),Q(Ee(),13,"")]),Dt=R([ge(8),x("poolId"),ae("startTickIndex"),Q(ls,we,"ticks"),V("initializedTickCount"),Q(V(),115,"")]),ms=R([ge(329),Q(x(),100,"whitelistMints")]),Xi=R([ge(8),x("poolId"),Q(Q(A(),8),Wn,"positiveTickArrayBitmap"),Q(Q(A(),8),Wn,"negativeTickArrayBitmap")]),Dd=R([A(),V("bump"),x("owner"),x("poolId"),x("positionId"),x("nftAccount"),Q(A(),8)]),vd=R([ge(8),V("bump"),x("lockOwner"),x("poolId"),x("positionId"),x("nftAccount"),x("lockNftMint"),A("recentEpoch"),Q(A(),8)]);Hi.span;var zi=re("CobaltX_Clmm"),We={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]},Qi=[188,37,179,131,82,150,84,73],Yi=[16,72,250,198,14,162,212,19],Pt=class{static createPoolInstruction(e,t,n,r,o,s,a,c,u,l,m,p,d,k){let f=R([q("sqrtPriceX64"),A("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:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:st.programId,isSigner:!1,isWritable:!1},{pubkey:ze,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:k},b);let P=Buffer.from([...We.createPool,...b]);return new Se({keys:y,programId:e,data:P})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:r,mintB:o,ammConfigId:s,initialPriceX64:a,startTime:c}=e,[u,l]=[new I(r.address),new I(o.address)],{publicKey:m}=Fi(t,s,u,l),{publicKey:p}=qi(t,m),{publicKey:d}=_n(t,m,u),{publicKey:k}=_n(t,m,l),f=ke(t,m).publicKey,y=[this.createPoolInstruction(t,m,n,s,p,u,d,new I(r.programId||ee),l,k,new I(o.programId||ee),f,a,c)];return{signers:[],instructions:y,instructionTypes:[te.CreateAccount,te.ClmmCreatePool],address:{poolId:m,observationId:p,exBitmapAccount:f,mintAVault:d,mintBVault:k},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,m,p,d,k,f,y,b,P,T,N,_,B,L,O,W,S){let D=R([ae("tickLowerIndex"),ae("tickUpperIndex"),ae("tickArrayLowerStartIndex"),ae("tickArrayUpperStartIndex"),q("liquidity"),A("amountMaxA"),A("amountMaxB"),Te("withMetadata"),V("optionBaseFlag"),Te("baseFlag")]),be=[...S?[{pubkey:S,isSigner:!1,isWritable:!0}]:[]],ye=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:k,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:st.programId,isSigner:!1,isWritable:!1},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:Wt,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...be],pe=Buffer.alloc(D.span);D.encode({tickLowerIndex:P,tickUpperIndex:T,tickArrayLowerStartIndex:N,tickArrayUpperStartIndex:_,liquidity:B,amountMaxA:L,amountMaxB:O,withMetadata:W==="create",baseFlag:!1,optionBaseFlag:0},pe);let oe=Buffer.from([...We.openPosition,...pe]);return new Se({keys:ye,programId:e,data:oe})}static openPositionFromLiquidityInstruction22(e,t,n,r,o,s,a,c,u,l,m,p,d,k,f,y,b,P,T,N,_,B,L,O,W){let S=R([ae("tickLowerIndex"),ae("tickUpperIndex"),ae("tickArrayLowerStartIndex"),ae("tickArrayUpperStartIndex"),q("liquidity"),A("amountMaxA"),A("amountMaxB"),Te("withMetadata"),V("optionBaseFlag"),Te("baseFlag")]),D=[...W?[{pubkey:W,isSigner:!1,isWritable:!0}]:[]],be=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:k,isSigner:!1,isWritable:!0},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:st.programId,isSigner:!1,isWritable:!1},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:Wt,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...D],ye=Buffer.alloc(S.span);S.encode({tickLowerIndex:b,tickUpperIndex:P,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:N,liquidity:_,amountMaxA:B,amountMaxB:L,withMetadata:O==="create",baseFlag:!1,optionBaseFlag:0},ye);let pe=Buffer.from([...We.openPositionWithTokenEx,...ye]);return new Se({keys:be,programId:e,data:pe})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l,nft2022:m}){let p=[],[d,k]=[new I(e.programId),new I(e.id)],f;if(l)f=new I((await l(1))[0]);else{let W=pn.generate();p.push(W),f=W.publicKey}let y=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:P}=J(d,k,y),{publicKey:T}=J(d,k,b),{publicKey:N}=m?ne(n.wallet,f,me):ne(n.wallet,f,ee),{publicKey:_}=It(f),{publicKey:B}=Oe(d,f),{publicKey:L}=rt(d,k,r,o),O=m?this.openPositionFromLiquidityInstruction22(d,n.feePayer,k,n.wallet,f,N,L,P,T,B,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),r,o,y,b,s,a,c,u,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ke(d,k).publicKey:void 0):this.openPositionFromLiquidityInstruction(d,n.feePayer,k,n.wallet,f,N,_,L,P,T,B,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),r,o,y,b,s,a,c,u,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ke(d,k).publicKey:void 0);return{signers:p,instructions:[O],instructionTypes:[te.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:f,tickArrayLower:P,tickArrayUpper:T,positionNftAccount:N,metadataAccount:_,personalPosition:B,protocolPosition:L}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l,nft2022:m}){let p=[],[d,k]=[new I(e.programId),new I(e.id)],f;if(l)f=new I((await l(1))[0]);else{let W=pn.generate();p.push(W),f=W.publicKey}let y=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:P}=J(d,k,y),{publicKey:T}=J(d,k,b),{publicKey:N}=m?ne(n.wallet,f,me):ne(n.wallet,f,ee),{publicKey:_}=It(f),{publicKey:B}=Oe(d,f),{publicKey:L}=rt(d,k,r,o),O=m?this.openPositionFromBaseInstruction22(d,n.feePayer,k,n.wallet,f,N,L,P,T,B,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),r,o,y,b,u,s,a,c,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ke(d,k).publicKey:void 0):this.openPositionFromBaseInstruction(d,n.feePayer,k,n.wallet,f,N,_,L,P,T,B,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),r,o,y,b,u,s,a,c,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ke(d,k).publicKey:void 0);return{address:{nftMint:f,tickArrayLower:P,tickArrayUpper:T,positionNftAccount:N,metadataAccount:_,personalPosition:B,protocolPosition:L},instructions:[O],signers:p,instructionTypes:[te.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount&&t.lookupTableAccount!=""?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,m,p,d,k,f,y,b,P,T,N,_,B,L,O,W,S){let D=R([ae("tickLowerIndex"),ae("tickUpperIndex"),ae("tickArrayLowerStartIndex"),ae("tickArrayUpperStartIndex"),q("liquidity"),A("amountMaxA"),A("amountMaxB"),Te("withMetadata"),V("optionBaseFlag"),Te("baseFlag")]),be=[...S?[{pubkey:S,isSigner:!1,isWritable:!0}]:[]],ye=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:k,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:st.programId,isSigner:!1,isWritable:!1},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:Wt,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...be],pe=Buffer.alloc(D.span);D.encode({tickLowerIndex:P,tickUpperIndex:T,tickArrayLowerStartIndex:N,tickArrayUpperStartIndex:_,liquidity:new qn(0),amountMaxA:L==="MintA"?O:W,amountMaxB:L==="MintA"?W:O,withMetadata:B==="create",baseFlag:L==="MintA",optionBaseFlag:1},pe);let oe=Buffer.from([...We.openPosition,...pe]);return new Se({keys:ye,programId:e,data:oe})}static openPositionFromBaseInstruction22(e,t,n,r,o,s,a,c,u,l,m,p,d,k,f,y,b,P,T,N,_,B,L,O,W){let S=R([ae("tickLowerIndex"),ae("tickUpperIndex"),ae("tickArrayLowerStartIndex"),ae("tickArrayUpperStartIndex"),q("liquidity"),A("amountMaxA"),A("amountMaxB"),Te("withMetadata"),V("optionBaseFlag"),Te("baseFlag")]),D=[...W?[{pubkey:W,isSigner:!1,isWritable:!0}]:[]],be=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:k,isSigner:!1,isWritable:!0},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:st.programId,isSigner:!1,isWritable:!1},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:Wt,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...D],ye=Buffer.alloc(S.span);S.encode({tickLowerIndex:b,tickUpperIndex:P,tickArrayLowerStartIndex:T,tickArrayUpperStartIndex:N,liquidity:new qn(0),amountMaxA:B==="MintA"?L:O,amountMaxB:B==="MintA"?O:L,withMetadata:_==="create",baseFlag:B==="MintA",optionBaseFlag:1},ye);let pe=Buffer.from([...We.openPositionWithTokenEx,...ye]);return new Se({keys:be,programId:e,data:pe})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l,nft2022:m}){let p,d=[];if(l)p=new I((await l(1))[0]);else{let W=pn.generate();d.push(W),p=W.publicKey}let[k,f]=[new I(e.programId),new I(e.id)],y=E.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=E.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:P}=J(k,f,y),{publicKey:T}=J(k,f,b),{publicKey:N}=m?ne(n.wallet,p,me):ne(n.wallet,p,ee),{publicKey:_}=It(p),{publicKey:B}=Oe(k,p),{publicKey:L}=rt(k,f,r,o),O=m?this.openPositionFromLiquidityInstruction22(k,n.wallet,f,n.wallet,p,N,L,P,T,B,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(t.mintA.address),new I(t.mintB.address),r,o,y,b,s,a,c,u,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ke(k,f).publicKey:void 0):this.openPositionFromLiquidityInstruction(k,n.wallet,f,n.wallet,p,N,_,L,P,T,B,n.tokenAccountA,n.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(t.mintA.address),new I(t.mintB.address),r,o,y,b,s,a,c,u,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ke(k,f).publicKey:void 0);return{address:{nftMint:p,tickArrayLower:P,tickArrayUpper:T,positionNftAccount:N,metadataAccount:_,personalPosition:B,protocolPosition:L},instructions:[O],signers:d,instructionTypes:[te.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o,s){let a=R([]),c=[{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:st.programId,isSigner:!1,isWritable:!1},{pubkey:s?me:ee,isSigner:!1,isWritable:!1}],u=Buffer.alloc(a.span);a.encode({},u);let l=Buffer.from([...We.closePosition,...u]);return new Se({keys:c,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r,nft2022:o}){let s=new I(e.programId),a=o?ne(n.wallet,r.nftMint,me).publicKey:ne(n.wallet,r.nftMint,ee).publicKey,{publicKey:c}=Oe(s,r.nftMint),u=[];return u.push(this.closePositionInstruction(s,n.wallet,r.nftMint,a,c,o)),{address:{positionNftAccount:a,personalPosition:c},signers:[],instructions:u,instructionTypes:[te.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,m,p,d,k,f,y,b,P){let T=R([q("liquidity"),A("amountMaxA"),A("amountMaxB"),V("optionBaseFlag"),Te("baseFlag")]),N=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],_=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...N],B=Buffer.alloc(T.span);T.encode({liquidity:f,amountMaxA:y,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},B);let L=Buffer.from([...We.increaseLiquidity,...B]);return new Se({keys:_,programId:e,data:L})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a,nft2022:c}){let[u,l]=[new I(e.programId),new I(e.id)],m=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=J(u,l,m),{publicKey:k}=J(u,l,p),{publicKey:f}=c?ne(r.wallet,n.nftMint,me):ne(r.wallet,n.nftMint,ee),{publicKey:y}=Oe(u,n.nftMint),{publicKey:b}=rt(u,l,n.tickLower,n.tickUpper),P=this.increasePositionFromLiquidityInstruction(u,r.wallet,f,y,l,b,d,k,r.tokenAccountA,r.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),o,s,a,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?ke(u,l).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:k,positionNftAccount:f,personalPosition:y,protocolPosition:b},signers:[],instructions:[P],instructionTypes:[te.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:o,baseAmount:s,otherAmountMax:a,nft2022:c}){let[u,l]=[new I(e.programId),new I(e.id)],m=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=J(u,l,m),{publicKey:k}=J(u,l,p),{publicKey:f}=c?ne(r.wallet,n.nftMint,me):ne(r.wallet,n.nftMint,ee),{publicKey:y}=Oe(u,n.nftMint),{publicKey:b}=rt(u,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:k,positionNftAccount:f,personalPosition:y,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,f,y,l,b,d,k,r.tokenAccountA,r.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),o,s,a,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?ke(u,l).publicKey:void 0)],signers:[],instructionTypes:[te.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,m,p,d,k,f,y,b,P){let T=R([q("liquidity"),A("amountMaxA"),A("amountMaxB"),V("optionBaseFlag"),Te("baseFlag")]),N=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],_=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...N],B=Buffer.alloc(T.span);T.encode({liquidity:new qn(0),amountMaxA:f==="MintA"?y:b,amountMaxB:f==="MintA"?b:y,baseFlag:f==="MintA",optionBaseFlag:1},B);let L=Buffer.from([...We.increaseLiquidity,...B]);return new Se({keys:_,programId:e,data:L})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,m,p,d,k,f,y,b,P,T){let N=R([q("liquidity"),A("amountMinA"),A("amountMinB")]),_=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[],...f.map(W=>[{pubkey:W.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:W.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:W.rewardMint,isSigner:!1,isWritable:!1}]).flat()],B=[{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:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:en,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},..._],L=Buffer.alloc(N.span);N.encode({liquidity:y,amountMinA:b,amountMinB:P},L);let O=Buffer.from([...We.decreaseLiquidity,...L]);return new Se({keys:B,programId:e,data:O})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:c,nft2022:u}){let[l,m]=[new I(e.programId),new I(e.id)],p=E.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=E.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:k}=J(l,m,p),{publicKey:f}=J(l,m,d),{publicKey:y}=u?ne(r.wallet,n.nftMint,me):ne(r.wallet,n.nftMint,c),{publicKey:b}=Oe(l,n.nftMint),{publicKey:P}=rt(l,m,n.tickLower,n.tickUpper),T=[];for(let B=0;B<e.rewardDefaultInfos.length;B++)T.push({poolRewardVault:new I(t.rewardInfos[B].vault),ownerRewardVault:r.rewardAccounts[B],rewardMint:new I(e.rewardDefaultInfos[B].mint.address)});let N=[],_=this.decreaseLiquidityInstruction(l,r.wallet,y,b,m,P,k,f,r.tokenAccountA,r.tokenAccountB,new I(t.vault.A),new I(t.vault.B),new I(e.mintA.address),new I(e.mintB.address),T,o,s,a,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[p,d])?ke(l,m).publicKey:void 0);return N.push(_),{address:{tickArrayLower:k,tickArrayUpper:f,positionNftAccount:y,personalPosition:b,protocolPosition:P},signers:[],instructions:N,instructionTypes:[te.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,c,u,l,m,p,d,k,f,y,b){let P=R([A("amount"),A("otherAmountThreshold"),q("sqrtPriceLimitX64"),Te("isBaseInput")]),T=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...m.map(L=>({pubkey:L,isSigner:!1,isWritable:!0}))],N=[{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:c,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:en,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...T],_=Buffer.alloc(P.span);P.encode({amount:d,otherAmountThreshold:k,sqrtPriceLimitX64:f,isBaseInput:y},_);let B=Buffer.from([...We.swap,..._]);return new Se({keys:N,programId:e,data:B})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,m]=[new I(e.programId),new I(e.id)],[p,d]=[new I(t.vault.A),new I(t.vault.B)],[k,f]=[new I(e.mintA.address),new I(e.mintB.address)],y=e.mintA.address===o.toString(),b=[this.swapInstruction(l,r.wallet,m,new I(e.config.id),y?r.tokenAccountA:r.tokenAccountB,y?r.tokenAccountB:r.tokenAccountA,y?p:d,y?d:p,y?k:f,y?f:k,u,n,s,a,c,!0,ke(l,m).publicKey)];return{signers:[],instructions:b,instructionTypes:[te.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,outputMint:o,amountOut:s,amountInMax:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,m]=[new I(e.programId),new I(e.id)],[p,d]=[new I(t.vault.A),new I(t.vault.B)],[k,f]=[new I(e.mintA.address),new I(e.mintB.address)],y=e.mintA.address===o.toBase58(),b=[this.swapInstruction(l,r.wallet,m,new I(e.config.id),y?r.tokenAccountB:r.tokenAccountA,y?r.tokenAccountA:r.tokenAccountB,y?d:p,y?p:d,y?f:k,y?k:f,u,n,s,a,c,!1,ke(l,m).publicKey)];return{signers:[],instructions:b,instructionTypes:[te.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,c,u,l,m,p){let d=R([A("openTime"),A("endTime"),q("emissionsPerSecondX64")]),k=[{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:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:st.programId,isSigner:!1,isWritable:!1},{pubkey:ze,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:se(l),endTime:se(m),emissionsPerSecondX64:p},f);let y=Buffer.from([...We.initReward,...f]);return new Se({keys:k,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new I(e.programId),new I(e.id)],a=Vi(o,s,r.mint).publicKey,c=ln(o).publicKey,u=[this.initRewardInstruction(o,n.wallet,s,c,new I(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[te.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,c,u,l,m,p){let d=R([V("rewardIndex"),q("emissionsPerSecondX64"),A("openTime"),A("endTime")]),k=[{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:ee,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:u,emissionsPerSecondX64:p,openTime:se(l),endTime:se(m)},f);let y=Buffer.from([...We.setRewardEmissions,...f]);return new Se({keys:k,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new I(e.programId),new I(e.id)],a,c,u;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===r.mint.toString()&&(a=p,c=new I(t.rewardInfos[p].vault),u=new I(t.rewardInfos[p].mint.address));(a===void 0||c===void 0)&&zi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=ln(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new I(e.config.id),n.tokenAccount,c,u,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:m,instructionTypes:[te.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let c=R([V("rewardIndex")]),u=[{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:ee,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:en,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let m=Buffer.from([...We.collectReward,...l]);return new Se({keys:u,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new I(e.programId),new I(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,c=new I(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&zi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,c,r,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[te.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:r,wallet:o,nftMint:s,nft2022:a,getEphemeralSigners:c}){let u=[],l;if(c)l=new I((await c(1))[0]);else{let b=pn.generate();u.push(b),l=b.publicKey}let m=a?ne(o,s,me).publicKey:ne(o,s,ee).publicKey,{publicKey:p}=Oe(n,s),d=vn(e,l).publicKey,k=ne(o,l,ee).publicKey,f=It(l).publicKey,y=Pt.lockPositionInstructionV2({programId:e,auth:t,payer:r,positionOwner:o,lockOwner:o,positionNftAccount:m,positionId:p,lockPositionId:d,lockNftMint:l,lockNftAccount:k,metadataAccount:f,withMetadata:!0,nft2022:a,positionNftMint:s,authPositionNftAccount:ne(t,s,a?me:ee).publicKey,positionNftProgram:a?me:ee});return{address:{positionId:p,lockPositionId:d,lockNftAccount:k,lockNftMint:l,positionNftAccount:m,metadataAccount:f},instructions:[y],signers:u,instructionTypes:[te.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:r,lockOwner:o,positionNftAccount:s,positionId:a,positionNftMint:c,authPositionNftAccount:u,positionNftProgram:l,lockPositionId:m,lockNftMint:p,lockNftAccount:d,metadataAccount:k,withMetadata:f}){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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!0,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:k,isSigner:!1,isWritable:!0},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:Wt,isSigner:!1,isWritable:!1},{pubkey:ze,isSigner:!1,isWritable:!1},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:st.programId,isSigner:!1,isWritable:!1}],b=R([Te("withMetadata")]),P=Buffer.alloc(b.span);b.encode({withMetadata:f},P);let T=Buffer.from([...Qi,...P]);return new Se({keys:y,programId:e,data:T})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:r,positionNft:o}){let{publicKey:s}=ne(r,o,ee),{publicKey:a}=Oe(n,o),c=[{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:Dn(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:st.programId,isSigner:!1,isWritable:!1}];return new Se({keys:c,programId:e,data:Buffer.from(Qi)})}static harvestLockPositionInstruction(e){let[t,n]=[new I(e.poolKeys.programId),new I(e.poolKeys.id)],r=E.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),o=E.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:s}=J(t,n,r),{publicKey:a}=J(t,n,o),{publicKey:c}=ne(e.owner,e.ownerPosition.nftMint,ee),{publicKey:u}=Oe(t,e.ownerPosition.nftMint),{publicKey:l}=rt(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),m=[];for(let k=0;k<e.poolKeys.rewardInfos.length;k++)m.push({poolRewardVault:new I(e.poolKeys.rewardInfos[k].vault),ownerRewardVault:e.ownerRewardAccounts[k],rewardMint:new I(e.poolKeys.rewardInfos[k].mint.address)});let p=[...m.map(k=>[{pubkey:k.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:k.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:k.rewardMint,isSigner:!1,isWritable:!1}]).flat()],d=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:Dn(e.programId,u).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:new I(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new I(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:new I(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new I(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...p];return new Se({keys:d,programId:e.programId,data:Buffer.from(Yi)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:r,lockOwner:o,lockNftMint:s,lockNftAccount:a,positionNftAccount:c,positionId:u,poolId:l,protocolPosition:m,vaultA:p,vaultB:d,tickArrayLower:k,tickArrayUpper:f,userVaultA:y,userVaultB:b,mintA:P,mintB:T,rewardAccounts:N,exTickArrayBitmap:_}){let B=[..._?[{pubkey:_,isSigner:!1,isWritable:!0}]:[],...N.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],L=[{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:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:k,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:me,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:T,isSigner:!1,isWritable:!1},...B];return new Se({keys:L,programId:e,data:Buffer.from(Yi)})}};var jf=R([ge(8),V("bump"),Te("disableCreatePool"),yt("index"),A("tradeFeeRate"),A("protocolFeeRate"),A("fundFeeRate"),A("createPoolFee"),x("protocolOwner"),x("fundOwner"),Q(A(),16)]),fs=R([ge(8),x("configId"),x("poolCreator"),x("vaultA"),x("vaultB"),x("mintLp"),x("mintA"),x("mintB"),x("mintProgramA"),x("mintProgramB"),x("observationId"),V("bump"),V("status"),V("lpDecimals"),V("mintDecimalA"),V("mintDecimalB"),A("lpAmount"),A("protocolFeesMintA"),A("protocolFeesMintB"),A("fundFeesMintA"),A("fundFeesMintB"),A("openTime"),Q(A(),32)]);import{ASSOCIATED_TOKEN_PROGRAM_ID as mb,TOKEN_2022_PROGRAM_ID as pb,TOKEN_PROGRAM_ID as db}from"@solana/spl-token";import{Keypair as yb,PublicKey as gb,SystemProgram as Ab,TransactionInstruction as bs}from"@solana/web3.js";var $f=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),eb=Buffer.from("amm_config","utf8"),tb=Buffer.from("pool","utf8"),nb=Buffer.from("pool_lp_mint","utf8"),ib=Buffer.from("pool_vault","utf8"),rb=Buffer.from("observation","utf8");var ob=Buffer.from("locked_liquidity","utf8");var Bb=re("CobaltX_cpmm"),ys={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133]};function Zi(i,e,t,n,r,o,s,a,c,u,l,m,p,d,k,f){let y=R([A("amountIn"),A("amounOutMin")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,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:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(y.span);return y.encode({amountIn:k,amounOutMin:f},P),new bs({keys:b,programId:i,data:Buffer.from([...ys.swapBaseInput,...P])})}import Wb from"bn.js";import Vb from"decimal.js-light";import gs from"bn.js";var Nb=new gs(0);import ks from"bn.js";var Mb=new ks(1e6);import Ji from"bn.js";var ny=new Ji(25),iy=new Ji(1e4);var Un=R([V("instruction"),A("amountIn"),A("minAmountOut")]),Gn=R([V("instruction"),A("maxAmountIn"),A("amountOut")]),ay=R([V("instruction"),V("nonce")]),As=R([V("instruction"),V("nonce"),A("startTime")]),Ps=R([A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalValue"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),q("swapBaseInAmount"),q("swapQuoteOutAmount"),A("swapBase2QuoteFee"),q("swapQuoteInAmount"),q("swapBaseOutAmount"),A("swapQuote2BaseFee"),x("baseVault"),x("quoteVault"),x("baseMint"),x("quoteMint"),x("lpMint"),x("openOrders"),x("marketId"),x("marketProgramId"),x("targetOrders"),x("withdrawQueue"),x("lpVault"),x("owner"),A("lpReserve"),Q(A(),3,"padding")]),uy=R([A("accountType"),A("status"),A("nonce"),A("maxOrder"),A("depth"),A("baseDecimal"),A("quoteDecimal"),A("state"),A("resetFlag"),A("minSize"),A("volMaxCutRatio"),A("amountWaveRatio"),A("baseLotSize"),A("quoteLotSize"),A("minPriceMultiplier"),A("maxPriceMultiplier"),A("systemDecimalsValue"),A("abortTradeFactor"),A("priceTickMultiplier"),A("priceTick"),A("minSeparateNumerator"),A("minSeparateDenominator"),A("tradeFeeNumerator"),A("tradeFeeDenominator"),A("pnlNumerator"),A("pnlDenominator"),A("swapFeeNumerator"),A("swapFeeDenominator"),A("baseNeedTakePnl"),A("quoteNeedTakePnl"),A("quoteTotalPnl"),A("baseTotalPnl"),A("poolOpenTime"),A("punishPcAmount"),A("punishCoinAmount"),A("orderbookToInitTime"),q("swapBaseInAmount"),q("swapQuoteOutAmount"),q("swapQuoteInAmount"),q("swapBaseOutAmount"),A("swapQuote2BaseFee"),A("swapBase2QuoteFee"),x("baseVault"),x("quoteVault"),x("baseMint"),x("quoteMint"),x("lpMint"),x("modelDataAccount"),x("openOrders"),x("marketId"),x("marketProgramId"),x("targetOrders"),x("owner"),Q(A(),64,"padding")]),ws=R([V("instruction"),A("baseAmountIn"),A("quoteAmountIn"),A("fixedSide"),A("otherAmountMin")]),Ts=R([V("instruction"),A("lpAmount"),A("baseAmountMin"),A("quoteAmountMin")]);var cy=R([A("fee")]);import{TOKEN_PROGRAM_ID as Hy}from"@solana/spl-token";import{PublicKey as Yy}from"@solana/web3.js";import Zy from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as gy,TOKEN_PROGRAM_ID as er}from"@solana/spl-token";import{PublicKey as Ay,SystemProgram as Py,SYSVAR_RENT_PUBKEY as wy,TransactionInstruction as tr}from"@solana/web3.js";import{PublicKey as hs}from"@solana/web3.js";var Xn=new hs("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Bs=5e4,Is=R([A("x"),A("y"),A("price")]),fy=R([A("accountType"),A("status"),A("multiplier"),A("validDataCount"),Q(Is,Bs,"DataElement")]);var $i=re("CobaltX_liquidity_instruction");function Ss({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=Me(i),s=Buffer.alloc(Un.span);Un.encode({instruction:9,amountIn:se(t),minAmountOut:se(n)},s);let a=[g({pubkey:er,isWritable:!1}),g({pubkey:o.id}),g({pubkey:o.authority,isWritable:!1}),g({pubkey:o.openOrders})];return r===4&&a.push(g({pubkey:o.targetOrders})),a.push(g({pubkey:o.vault.A}),g({pubkey:o.vault.B})),r===5&&a.push(g({pubkey:Xn})),a.push(g({pubkey:o.marketProgramId,isWritable:!1}),g({pubkey:o.marketId}),g({pubkey:o.marketBids}),g({pubkey:o.marketAsks}),g({pubkey:o.marketEventQueue}),g({pubkey:o.marketBaseVault}),g({pubkey:o.marketQuoteVault}),g({pubkey:o.marketAuthority,isWritable:!1}),g({pubkey:e.tokenAccountIn}),g({pubkey:e.tokenAccountOut}),g({pubkey:e.owner,isWritable:!1})),new tr({programId:o.programId,keys:a,data:s})}function xs({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=Me(i),s=Buffer.alloc(Gn.span);Gn.encode({instruction:11,maxAmountIn:se(t),amountOut:se(n)},s);let a=[g({pubkey:er,isWritable:!1}),g({pubkey:o.id}),g({pubkey:o.authority,isWritable:!1}),g({pubkey:o.openOrders}),g({pubkey:o.targetOrders}),g({pubkey:o.vault.A}),g({pubkey:o.vault.B})];return r===5&&a.push(g({pubkey:Xn})),a.push(g({pubkey:o.marketProgramId,isWritable:!1}),g({pubkey:o.marketId}),g({pubkey:o.marketBids}),g({pubkey:o.marketAsks}),g({pubkey:o.marketEventQueue}),g({pubkey:o.marketBaseVault}),g({pubkey:o.marketQuoteVault}),g({pubkey:o.marketAuthority,isWritable:!1}),g({pubkey:e.tokenAccountIn}),g({pubkey:e.tokenAccountOut}),g({pubkey:e.owner,isWritable:!1,isSigner:!0})),new tr({programId:o.programId,keys:a,data:s})}function nr(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ss({...a,amountIn:r,minAmountOut:o},t);if(s==="out")return xs({...a,maxAmountIn:r,amountOut:o},t);$i.logWithError("invalid params","params",i)}throw $i.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{PublicKey as Ry}from"@solana/web3.js";var _y=re("CobaltX_liquidity_serum");var Ks={[xn.toBase58()]:3};var Cs=R([ge(5),ge(8),x("ownAddress"),A("vaultSignerNonce"),x("baseMint"),x("quoteMint"),x("baseVault"),A("baseDepositsTotal"),A("baseFeesAccrued"),x("quoteVault"),A("quoteDepositsTotal"),A("quoteFeesAccrued"),A("quoteDustThreshold"),x("requestQueue"),x("eventQueue"),x("bids"),x("asks"),A("baseLotSize"),A("quoteLotSize"),A("feeRateBps"),A("referrerRebatesAccrued"),ge(7)]);import{PublicKey as Ag}from"@solana/web3.js";var Bg=re("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as Hn,TOKEN_2022_PROGRAM_ID as zn,TOKEN_PROGRAM_ID as ft}from"@solana/spl-token";import{PublicKey as w,SystemProgram as Ft,TransactionInstruction as Vt}from"@solana/web3.js";import Ze from"bn.js";function Wg(i,e,t,n,r,o,s,a,c,u,l,m){let p=R([V("instruction"),A("amountIn"),A("amountOut")]),d=[{pubkey:Ft.programId,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:new w(t.programId),isSigner:!1,isWritable:!1},{pubkey:new w(t.id),isSigner:!1,isWritable:!0},{pubkey:new w(n.id),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=Me(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(c)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(c)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=Me(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new w("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=Me(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let k=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:u,amountOut:l},k),new Vt({keys:d,programId:i,data:k})}function Fg(i,e,t,n,r,o,s,a,c,u){let l=R([V("instruction")]),m=[{pubkey:Ft.programId,isSigner:!1,isWritable:!1},{pubkey:ft,isSigner:!1,isWritable:!1},{pubkey:new w(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new w(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new w(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=Me(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(c)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(c)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...u.map(k=>({pubkey:k,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=Me(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new w("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=Me(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Vt({keys:m,programId:i,data:p})}function Ns(i,e,t,n,r,o,s,a,c,u,l,m,p,d,k){var B;let f=[],y=[g({pubkey:ft,isWritable:!1}),g({pubkey:zn,isWritable:!1}),g({pubkey:Hn,isWritable:!1}),g({pubkey:Ft.programId,isWritable:!1}),g({pubkey:e,isSigner:!0})];y.push(g({pubkey:t})),y.push(g({pubkey:r}));let b=[c,u],P=[l,m],T=[o,s,a];for(let L=0;L<b.length;L++){let O=b[L],W=T[L]===O.mintA.address;if(y.push(g({pubkey:new w(O.programId),isWritable:!1})),L===b.length-1?y.push(g({pubkey:r})):y.push(g({pubkey:n})),y.push(g({pubkey:new w(T[L])})),y.push(g({pubkey:new w(T[L+1])})),O.version===6){let S=P[L];y.push(g({pubkey:new w(S.config.id)})),y.push(g({pubkey:new w(S.id)})),y.push(g({pubkey:new w(W?S.vault.A:S.vault.B)})),y.push(g({pubkey:new w(W?S.vault.B:S.vault.A)})),y.push(g({pubkey:new w(O.observationId)})),y.push(g({pubkey:pt})),y.push(g({pubkey:ke(new w(O.programId),new w(O.id)).publicKey})),f.push(Qn(O.sqrtPriceX64.toString(),W));for(let D of(B=k[L])!=null?B:[])y.push(g({pubkey:new w(D)}))}else if(O.version===5){let S=P[L];y.push(g({pubkey:new w(S.id)})),y.push(g({pubkey:new w(S.authority),isWritable:!1})),y.push(g({pubkey:new w(S.marketProgramId)})),y.push(g({pubkey:new w(S.marketAuthority)})),y.push(g({pubkey:tn,isWritable:!1})),y.push(g({pubkey:new w(S.openOrders)})),y.push(g({pubkey:new w(S.vault.A)})),y.push(g({pubkey:new w(S.vault.B)})),y.push(g({pubkey:new w(S.id)})),y.push(g({pubkey:new w(S.id)})),y.push(g({pubkey:new w(S.id)})),y.push(g({pubkey:new w(S.id)})),y.push(g({pubkey:new w(S.id)})),y.push(g({pubkey:new w(S.id)})),y.push(g({pubkey:new w(S.marketId)})),y.push(g({pubkey:new w(S.marketBids)})),y.push(g({pubkey:new w(S.marketAsks)})),y.push(g({pubkey:new w(S.marketEventQueue)})),y.push(g({pubkey:new w(S.marketBaseVault)})),y.push(g({pubkey:new w(S.marketQuoteVault)}))}else if(O.version===4){let S=P[L],D=O.status!==1;y.push(g({pubkey:new w(S.id)})),y.push(g({pubkey:new w(S.authority),isWritable:!1})),y.push(g({pubkey:new w(D?S.id:S.marketProgramId)})),y.push(g({pubkey:new w(D?S.id:S.marketAuthority)})),y.push(g({pubkey:new w(D?S.id:S.openOrders)})),y.push(g({pubkey:new w(S.vault.A)})),y.push(g({pubkey:new w(S.vault.B)})),y.push(g({pubkey:new w(D?S.id:S.marketId)})),y.push(g({pubkey:new w(D?S.id:S.marketBids)})),y.push(g({pubkey:new w(D?S.id:S.marketAsks)})),y.push(g({pubkey:new w(D?S.id:S.marketEventQueue)})),y.push(g({pubkey:new w(D?S.id:S.marketBaseVault)})),y.push(g({pubkey:new w(D?S.id:S.marketQuoteVault)}))}else if(O.version===7){let S=P[L];y.push(g({pubkey:new w(S.authority)})),y.push(g({pubkey:new w(S.config.id)})),y.push(g({pubkey:new w(S.id)})),y.push(g({pubkey:new w(W?S.vault.A:S.vault.B)})),y.push(g({pubkey:new w(W?S.vault.B:S.vault.A)})),y.push(g({pubkey:new w(O.observationId)}))}else throw Error("pool type error")}let N=R([V("insId"),A("amountIn"),A("amountOut"),Q(q(),f.length,"clmmPriceLimit")]),_=Buffer.alloc(N.span);return N.encode({insId:0,amountIn:p,amountOut:d,clmmPriceLimit:f},_),new Vt({keys:y,programId:i,data:_})}function Qn(i,e){if(i)if(e){let t=new Ze(i).div(new Ze(25));return t.gt(sn)?t:sn}else{let t=new Ze(i).mul(new Ze(25));return t.lt(an)?t:an}else return e?sn:an}function Ls({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,c,u,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],p=Me(m),d=t.equals(p.mintA.address)?Qe.add(_e):Ye.sub(_e);return Pt.makeSwapBaseInInstructions({poolInfo:m,poolKeys:m,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:p.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:p.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?o:new Ze(0)),sqrtPriceLimitX64:d,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else if(n.poolInfo[0].version===7){let m=n.poolInfo[0],p=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[Zi(m.programId,e.wallet,m.authority,m.configId,m.id,e.sourceToken,e.destinationToken,p?m.vaultA:m.vaultB,p?m.vaultB:m.vaultA,p?m.mintProgramA:m.mintProgramB,p?m.mintProgramB:m.mintProgramA,new w(m[p?"mintA":"mintB"].address),new w(m[p?"mintB":"mintA"].address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[p?te.CpmmSwapBaseIn:te.CpmmSwapBaseOut],address:{}}}else{let m=n.poolKey[0];return{signers:[],instructions:[nr({poolKeys:m,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((c=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?c:new Ze(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?te.AmmV5SwapBaseIn:te.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],p=n.poolInfo[1],d=n.poolKey[0],k=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[Ns(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),m,p,d,k,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new Ze(0)),n.remainingAccounts)],instructionTypes:[te.RouteSwap],lookupTableAddress:[d.lookupTableAccount,k.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}function Vg({programId:i,wallet:e,amount:t,inputAccount:n,outputAccount:r,routeInfo:o,poolKeys:s,network:a}){var d;if(o.success===!1)throw Error("route info error");let c=[],u=[g({pubkey:ft,isWritable:!1}),g({pubkey:zn,isWritable:!1}),g({pubkey:Hn,isWritable:!1}),g({pubkey:Ft.programId,isWritable:!1}),g({pubkey:e,isSigner:!0})],l={[o.data.inputMint]:n,[o.data.outputMint]:r};u.push(g({pubkey:l[o.data.inputMint]})),u.push(g({pubkey:l[o.data.outputMint]}));for(let k=0;k<s.length;k++){let f=o.data.routePlan[k],y=s[k],b=f.inputMint===y.mintA.address;if(u.push(g({pubkey:new w(y.programId),isWritable:!1})),k===s.length-1)u.push(g({pubkey:l[f.outputMint]}));else{let P=f.outputMint;if(l[P]===void 0){let T=ne(e,new w(P),y.programId===Ce.getCLMMProgramId(a).toBase58()||y.programId===Ce.CREATE_CPMM_POOL_PROGRAM.toBase58()?new w(b?y.mintB.programId:y.mintA.programId):ft).publicKey;l[P]=T}u.push(g({pubkey:l[P]}))}if(u.push(g({pubkey:new w(f.inputMint)})),u.push(g({pubkey:new w(f.outputMint)})),y.programId===Ce.getCLMMProgramId(a).toBase58()){let P=y;u.push(g({pubkey:new w(P.config.id)})),u.push(g({pubkey:new w(P.id)})),u.push(g({pubkey:new w(b?P.vault.A:P.vault.B)})),u.push(g({pubkey:new w(b?P.vault.B:P.vault.A)})),u.push(g({pubkey:new w(P.observationId)})),u.push(g({pubkey:pt,isWritable:!1})),u.push(g({pubkey:new w(P.exBitmapAccount)})),c.push(Qn(f.lastPoolPriceX64,b));for(let T of(d=f.remainingAccounts)!=null?d:[])u.push(g({pubkey:new w(T)}))}else if(y.programId===Ce.AMM_STABLE.toBase58()){let P=y;u.push(g({pubkey:new w(P.id)})),u.push(g({pubkey:new w(P.authority),isWritable:!1})),u.push(g({pubkey:new w(P.marketProgramId),isWritable:!1})),u.push(g({pubkey:new w(P.marketAuthority),isWritable:!1})),u.push(g({pubkey:tn,isWritable:!1})),u.push(g({pubkey:new w(P.openOrders)})),u.push(g({pubkey:new w(P.vault.A)})),u.push(g({pubkey:new w(P.vault.B)})),u.push(g({pubkey:new w(P.marketId)})),u.push(g({pubkey:new w(P.marketBids)})),u.push(g({pubkey:new w(P.marketAsks)})),u.push(g({pubkey:new w(P.marketEventQueue)})),u.push(g({pubkey:new w(P.marketBaseVault)})),u.push(g({pubkey:new w(P.marketQuoteVault)}))}else if(y.programId===Ce.AMM_V4.toBase58()){let P=y;u.push(g({pubkey:new w(P.id)})),u.push(g({pubkey:new w(P.authority),isWritable:!1})),u.push(g({pubkey:new w(P.id)})),u.push(g({pubkey:new w(P.id)})),u.push(g({pubkey:new w(P.id)})),u.push(g({pubkey:new w(P.vault.A)})),u.push(g({pubkey:new w(P.vault.B)})),u.push(g({pubkey:new w(P.id)})),u.push(g({pubkey:new w(P.id)})),u.push(g({pubkey:new w(P.id)})),u.push(g({pubkey:new w(P.id)})),u.push(g({pubkey:new w(P.id)})),u.push(g({pubkey:new w(P.id)}))}else if(y.programId===Ce.CREATE_CPMM_POOL_PROGRAM.toBase58()){let P=y;u.push(g({pubkey:new w(P.authority)})),u.push(g({pubkey:new w(P.config.id)})),u.push(g({pubkey:new w(P.id)})),u.push(g({pubkey:new w(b?P.vault.A:P.vault.B)})),u.push(g({pubkey:new w(b?P.vault.B:P.vault.A)})),u.push(g({pubkey:new w(P.observationId)}))}else throw Error("pool type error")}let m=R([V("insId"),A("amountIn"),A("amountOut"),Q(q(),c.length,"clmmPriceLimit")]),p=Buffer.alloc(m.span);return m.encode({insId:0,amountIn:t,amountOut:new Ze(o.data.otherAmountThreshold),clmmPriceLimit:c},p),new Vt({keys:u,programId:i,data:p})}function qg({programId:i,wallet:e,inputAccount:t,outputAccount:n,routeInfo:r,poolKeys:o,network:s}){var p;if(r.success===!1)throw Error("route info error");let a=[],c=[g({pubkey:ft,isWritable:!1}),g({pubkey:zn,isWritable:!1}),g({pubkey:Hn,isWritable:!1}),g({pubkey:Ft.programId,isWritable:!1}),g({pubkey:e,isSigner:!0})],u={[r.data.inputMint]:t,[r.data.outputMint]:n};for(let d=o.length-1;d>=0;d--){let k=r.data.routePlan[d],f=o[d],y=k.inputMint===f.mintA.address;if(c.push(g({pubkey:new w(f.programId)})),d===0)c.push(g({pubkey:u[k.inputMint]}));else{let b=k.inputMint;if(u[b]===void 0){let P=ne(e,new w(b),f.programId===Ce.getCLMMProgramId(s).toBase58()||f.programId===Ce.CREATE_CPMM_POOL_PROGRAM.toBase58()?new w(y?f.mintA.programId:f.mintB.programId):ft).publicKey;u[b]=P}c.push(g({pubkey:u[b]}))}if(d===o.length-1)c.push(g({pubkey:u[k.outputMint]}));else{let b=k.outputMint;if(u[b]===void 0){let P=ne(e,new w(b),f.programId===Ce.getCLMMProgramId(s).toBase58()||f.programId===Ce.CREATE_CPMM_POOL_PROGRAM.toBase58()?new w(y?f.mintB.programId:f.mintA.programId):ft).publicKey;u[b]=P}c.push(g({pubkey:u[b]}))}if(c.push(g({pubkey:new w(k.inputMint)})),c.push(g({pubkey:new w(k.outputMint)})),f.programId===Ce.getCLMMProgramId(s).toBase58()){let b=f;c.push(g({pubkey:new w(b.config.id)})),c.push(g({pubkey:new w(b.id)})),c.push(g({pubkey:new w(y?b.vault.A:b.vault.B)})),c.push(g({pubkey:new w(y?b.vault.B:b.vault.A)})),c.push(g({pubkey:new w(b.observationId)})),c.push(g({pubkey:pt,isWritable:!1})),c.push(g({pubkey:new w(b.exBitmapAccount)})),a.push(Qn(k.lastPoolPriceX64,y));for(let P of(p=k.remainingAccounts)!=null?p:[])c.push(g({pubkey:new w(P)}))}else if(f.programId===Ce.AMM_STABLE.toBase58()){let b=f;c.push(g({pubkey:new w(b.id)})),c.push(g({pubkey:new w(b.authority),isWritable:!1})),c.push(g({pubkey:new w(b.marketProgramId),isWritable:!1})),c.push(g({pubkey:new w(b.marketAuthority),isWritable:!1})),c.push(g({pubkey:tn,isWritable:!1})),c.push(g({pubkey:new w(b.openOrders)})),c.push(g({pubkey:new w(b.vault.A)})),c.push(g({pubkey:new w(b.vault.B)})),c.push(g({pubkey:new w(b.marketId)})),c.push(g({pubkey:new w(b.marketBids)})),c.push(g({pubkey:new w(b.marketAsks)})),c.push(g({pubkey:new w(b.marketEventQueue)})),c.push(g({pubkey:new w(b.marketBaseVault)})),c.push(g({pubkey:new w(b.marketQuoteVault)}))}else if(f.programId===Ce.AMM_V4.toBase58()){let b=f;c.push(g({pubkey:new w(b.id)})),c.push(g({pubkey:new w(b.authority),isWritable:!1})),c.push(g({pubkey:new w(b.id)})),c.push(g({pubkey:new w(b.id)})),c.push(g({pubkey:new w(b.id)})),c.push(g({pubkey:new w(b.vault.A)})),c.push(g({pubkey:new w(b.vault.B)})),c.push(g({pubkey:new w(b.id)})),c.push(g({pubkey:new w(b.id)})),c.push(g({pubkey:new w(b.id)})),c.push(g({pubkey:new w(b.id)})),c.push(g({pubkey:new w(b.id)})),c.push(g({pubkey:new w(b.id)}))}else if(f.programId===Ce.CREATE_CPMM_POOL_PROGRAM.toBase58()){let b=f;c.push(g({pubkey:new w(b.authority)})),c.push(g({pubkey:new w(b.config.id)})),c.push(g({pubkey:new w(b.id)})),c.push(g({pubkey:new w(y?b.vault.A:b.vault.B)})),c.push(g({pubkey:new w(y?b.vault.B:b.vault.A)})),c.push(g({pubkey:new w(b.observationId)}))}else throw Error("pool type error")}let l=R([V("insId"),A("amountIn"),A("amountOut"),Q(q(),a.length,"clmmPriceLimit")]),m=Buffer.alloc(l.span);return l.encode({insId:1,amountIn:new Ze(r.data.otherAmountThreshold),amountOut:new Ze(r.data.outputAmount),clmmPriceLimit:a},m),new Vt({keys:c,programId:i,data:m})}var Kk=new Os(0);export{Ls as makeSwapInstruction,Wg as route1Instruction,Fg as route2Instruction,Ns as routeInstruction,Vg as swapBaseInAutoAccount,qg as swapBaseOutAutoAccount};
/*!
* 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=index.mjs.map