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