@cobaltx/sdk-v2
Version:
An SDK for building applications on top of CobaltX.
9 lines • 192 kB
JavaScript
import{MINT_SIZE as kr,TOKEN_PROGRAM_ID as hr,getTransferFeeConfig as Ar,unpackMint as Tr}from"@solana/spl-token";import{PublicKey as mi}from"@solana/web3.js";import{get as ui,set as yr}from"lodash";var Kn=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}},li={},wr={};function Ae(r){let e=ui(li,r);if(!e){let t=ui(wr,r);e=new Kn({name:r,logLevel:t}),yr(li,r,e)}return e}var Ln=Ae("CobaltX_accountInfo_util");async function $e(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}={batchRequest:!1,...t},s=Mn(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=Mn(u,10);a=(await(await Promise.all(c.map(async d=>await r._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&Ln.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"&&Ln.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:f,owner:new mi(y),rentEpoch:b}}return null})))}else try{a=await Promise.all(s.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&Ln.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function et(r,e,t){let n=await $e(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>({...i,accountInfo:n[o]}))}async function di({connection:r,mints:e,network:t,config:n}){var s,a,u;if(e.length===0)return{};let i=await et(r,e.map(c=>({pubkey:gt(c,t)})),n),o={};for(let c of i){if(!c.accountInfo||c.accountInfo.data.length<kr){console.log("invalid mint account",c.pubkey.toBase58());continue}let l=Tr(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)||hr,feeConfig:(u=Ar(l))!=null?u:void 0}}return o[mi.default.toBase58()]=o[re(t).WSOLMint.toBase58()],o}import it from"bn.js";var Tt=9e15,mt=1e9,Rn="0123456789abcdef",sn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",an="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",En={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Tt,maxE:Tt,crypto:!1},gi,tt,q=!0,un="[DecimalError] ",lt=un+"Invalid argument: ",yi=un+"Precision limit exceeded",wi=un+"crypto unavailable",ki="[object Decimal]",xe=Math.floor,ye=Math.pow,Pr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Br=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,xr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,hi=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ue=1e7,F=7,Sr=9007199254740991,Ir=sn.length-1,_n=an.length-1,x={toStringTag:ki};x.absoluteValue=x.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),E(r)};x.ceil=function(){return E(new this.constructor(this),this.e+1,2)};x.clampedTo=x.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(lt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};x.comparedTo=x.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};x.cosine=x.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())+F,n.rounding=1,t=Nr(n,xi(n,t)),n.precision=r,n.rounding=e,E(tt==2||tt==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};x.cubeRoot=x.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(q=!1,o=l.s*ye(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Te(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ye(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=ne(c.plus(l).times(a),c.plus(u),s+2,1),Te(a.d).slice(0,s)===(t=Te(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(E(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")&&(E(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return q=!0,E(n,r,d.rounding,e)};x.decimalPlaces=x.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-xe(this.e/F))*F,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};x.dividedBy=x.div=function(r){return ne(this,new this.constructor(r))};x.dividedToIntegerBy=x.divToInt=function(r){var e=this,t=e.constructor;return E(ne(e,new t(r),0,1,1),t.precision,t.rounding)};x.equals=x.eq=function(r){return this.cmp(r)===0};x.floor=function(){return E(new this.constructor(this),this.e+1,3)};x.greaterThan=x.gt=function(r){return this.cmp(r)>0};x.greaterThanOrEqualTo=x.gte=function(r){var e=this.cmp(r);return e==1||e===0};x.hyperbolicCosine=x.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/mn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=Pt(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 E(o,s.precision=t,s.rounding=n,!0)};x.hyperbolicSine=x.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=Pt(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/mn(5,r)),i=Pt(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,E(i,e,t,!0)};x.hyperbolicTangent=x.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,ne(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};x.inverseCosine=x.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))};x.inverseHyperbolicCosine=x.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,q=!1,t=t.times(t).minus(1).sqrt().plus(t),q=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};x.inverseHyperbolicSine=x.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,q=!1,t=t.times(t).plus(1).sqrt().plus(t),q=!0,n.precision=r,n.rounding=e,t.ln())};x.inverseHyperbolicTangent=x.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?E(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ne(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)};x.inverseSine=x.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)))};x.inverseTangent=x.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/F+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(q=!1,e=Math.ceil(a/F),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)),q=!0,E(s,l.precision=d,l.rounding=m,!0)};x.isFinite=function(){return!!this.d};x.isInteger=x.isInt=function(){return!!this.d&&xe(this.e/F)>this.d.length-2};x.isNaN=function(){return!this.s};x.isNegative=x.isNeg=function(){return this.s<0};x.isPositive=x.isPos=function(){return this.s>0};x.isZero=function(){return!!this.d&&this.d[0]===0};x.lessThan=x.lt=function(r){return this.cmp(r)<0};x.lessThanOrEqualTo=x.lte=function(r){return this.cmp(r)<1};x.logarithm=x.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(q=!1,a=d+p,s=ut(c,a),n=e?cn(l,a+10):ut(r,a),u=ne(s,n,a,1),Nt(u.d,i=d,m))do if(a+=10,s=ut(c,a),n=e?cn(l,a+10):ut(r,a),u=ne(s,n,a,1),!o){+Te(u.d).slice(i+1,i+15)+1==1e14&&(u=E(u,d+1,0));break}while(Nt(u.d,i+=10,m));return q=!0,E(u,d,m)};x.minus=x.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 q?E(r,a,u):r}if(t=xe(r.e/F),l=xe(p.e/F),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/F),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]=Ue-1;--c[i],c[n]+=Ue}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=ln(c,t),q?E(r,a,u):r):new g(u===3?-0:0)};x.modulo=x.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]?E(new n(t),n.precision,n.rounding):(q=!1,n.modulo==9?(e=ne(t,r.abs(),0,3,1),e.s*=r.s):e=ne(t,r,0,n.modulo,1),e=e.times(r),q=!0,t.minus(e))};x.naturalExponential=x.exp=function(){return On(this)};x.naturalLogarithm=x.ln=function(){return ut(this)};x.negated=x.neg=function(){var r=new this.constructor(this);return r.s=-r.s,E(r)};x.plus=x.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)),q?E(r,a,u):r;if(o=xe(d.e/F),n=xe(r.e/F),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/F),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)/Ue|0,c[i]%=Ue;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=ln(c,n),q?E(r,a,u):r};x.precision=x.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(lt+r);return t.d?(e=Ai(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};x.round=function(){var r=this,e=r.constructor;return E(new e(r),r.e+1,e.rounding)};x.sine=x.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())+F,n.rounding=1,t=Kr(n,xi(n,t)),n.precision=r,n.rounding=e,E(tt>2?t.neg():t,r,e,!0)):new n(NaN)};x.squareRoot=x.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(q=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Te(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(ne(s,o,t+2,1)).times(.5),Te(o.d).slice(0,t)===(e=Te(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(E(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")&&(E(n,u+1,1),r=!n.times(n).eq(s));break}return q=!0,E(n,u,l.rounding,r)};x.tangent=x.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=ne(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,E(tt==2||tt==4?t.neg():t,r,e,!0)):new n(NaN)};x.times=x.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/F)+xe(r.e/F),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%Ue|0,e=a/Ue|0;o[i]=(o[i]+e)%Ue|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=ln(o,t),q?E(r,d.precision,d.rounding):r};x.toBinary=function(r,e){return Dn(this,2,r,e)};x.toDecimalPlaces=x.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Me(r,0,mt),e===void 0?e=n.rounding:Me(e,0,8),E(t,r+t.e+1,e))};x.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=je(n,!0):(Me(r,0,mt),e===void 0?e=i.rounding:Me(e,0,8),n=E(new i(n),r+1,e),t=je(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=je(i):(Me(r,0,mt),e===void 0?e=o.rounding:Me(e,0,8),n=E(new o(i),r+i.e+1,e),t=je(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};x.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=Ai(g)-p.e-1,s=o%F,e.d[0]=ye(10,s<0?F+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(lt+a);r=a.gt(e)?o>0?e:c:a}for(q=!1,a=new f(Te(g)),l=f.precision,f.precision=o=g.length*F*2;d=ne(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=ne(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=ne(c,n,o,1).minus(p).abs().cmp(ne(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,q=!0,m};x.toHexadecimal=x.toHex=function(r,e){return Dn(this,16,r,e)};x.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:Me(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]?(q=!1,t=ne(t,r,0,e,1).times(r),q=!0,E(t)):(r.s=t.s,t=r),t};x.toNumber=function(){return+this};x.toOctal=function(r,e){return Dn(this,8,r,e)};x.toPower=x.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(ye(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return E(a,n,o);if(e=xe(r.e/F),e>=r.d.length-1&&(t=c<0?-c:c)<=Sr)return i=Ti(u,a,t,n),r.s<0?new u(1).div(i):E(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=ye(+a,c),e=t==0||!isFinite(t)?xe(c*(Math.log("0."+Te(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):(q=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=On(r.times(ut(a,n+t)),n),i.d&&(i=E(i,n+5,1),Nt(i.d,n,o)&&(e=n+10,i=E(On(r.times(ut(a,e+t)),e),e+5,1),+Te(i.d).slice(n+1,n+15)+1==1e14&&(i=E(i,n+1,0)))),i.s=s,q=!0,u.rounding=o,E(i,n,o))};x.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=je(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Me(r,1,mt),e===void 0?e=i.rounding:Me(e,0,8),n=E(new i(n),r,e),t=je(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};x.toSignificantDigits=x.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Me(r,1,mt),e===void 0?e=n.rounding:Me(e,0,8)),E(new n(t),r,e)};x.toString=function(){var r=this,e=r.constructor,t=je(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};x.truncated=x.trunc=function(){return E(new this.constructor(this),this.e+1,1)};x.valueOf=x.toJSON=function(){var r=this,e=r.constructor,t=je(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Te(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=F-n.length,t&&(o+=ct(t)),o+=n;s=r[e],n=s+"",t=F-n.length,t&&(o+=ct(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Me(r,e,t){if(r!==~~r||r<e||r>t)throw Error(lt+r)}function Nt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=F,i=0):(i=Math.ceil((e+1)/F),e%=F),o=ye(10,F-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)==ye(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)==ye(10,e-3)-1,s}function rn(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 Nr(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/mn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=Pt(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 ne=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,P,B,I,_,S,C,D=n.constructor,O=n.s==i.s?1:-1,X=n.d,G=i.d;if(!X||!X[0]||!G||!G[0])return new D(!n.s||!i.s||(X?G&&X[0]==G[0]:!G)?NaN:X&&X[0]==0||!G?O*0:O/0);for(u?(p=1,l=n.e-i.e):(u=Ue,p=F,l=xe(n.e/p)-xe(i.e/p)),S=G.length,I=X.length,b=new D(O),w=b.d=[],d=0;G[d]==(X[d]||0);d++);if(G[d]>(X[d]||0)&&l--,o==null?(h=o=D.precision,s=D.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,S==1){for(m=0,G=G[0],h++;(d<I||m)&&h--;d++)P=m*u+(X[d]||0),w[d]=P/G|0,m=P%G|0;g=m||d<I}else{for(m=u/(G[0]+1)|0,m>1&&(G=r(G,m,u),X=r(X,m,u),S=G.length,I=X.length),B=S,k=X.slice(0,S),A=k.length;A<S;)k[A++]=0;C=G.slice(),C.unshift(0),_=G[0],G[1]>=u/2&&++_;do m=0,c=e(G,k,S,A),c<0?(T=k[0],S!=A&&(T=T*u+(k[1]||0)),m=T/_|0,m>1?(m>=u&&(m=u-1),f=r(G,m,u),y=f.length,A=k.length,c=e(f,k,y,A),c==1&&(m--,t(f,S<y?C:G,y,u))):(m==0&&(c=m=1),f=G.slice()),y=f.length,y<A&&f.unshift(0),t(k,f,A,u),c==-1&&(A=k.length,c=e(G,k,S,A),c<1&&(m++,t(k,S<A?C:G,A,u))),A=k.length):c===0&&(m++,k=[0]),w[d++]=m,c&&k[0]?k[A++]=X[B]||0:(k=[X[B]],A=1);while((B++<I||k[0]!==void 0)&&h--);g=k[0]!==void 0}w[0]||w.shift()}if(p==1)b.e=l,gi=g;else{for(d=1,m=w[0];m>=10;m/=10)d++;b.e=d+l*p-1,E(b,a?o+b.e+1:o,s,g)}return b}}();function E(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+=F,s=e,l=d[m=0],u=l/ye(10,i-s-1)%10|0;else if(m=Math.ceil((o+1)/F),a=d.length,m>=a)if(n){for(;a++<=m;)d.push(0);l=u=0,i=1,o%=F,s=o-F+1}else break e;else{for(l=a=d[m],i=1;a>=10;a/=10)i++;o%=F,s=o-F+i,u=s<0?0:l/ye(10,i-s-1)%10|0}if(n=n||e<0||d[m+1]!==void 0||(s<0?l:l%ye(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/ye(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]=ye(10,(F-e%F)%F),r.e=-e||0):d[0]=r.e=0,r;if(o==0?(d.length=m,a=1,m--):(d.length=m+1,a=ye(10,F-o),d[m]=s>0?(l/ye(10,i-s)%ye(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]==Ue&&(d[0]=1));break}else{if(d[m]+=a,d[m]!=Ue)break;d[m--]=0,a=1}for(o=d.length;d[--o]===0;)d.pop()}return q&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function je(r,e,t){if(!r.isFinite())return Bi(r);var n,i=r.e,o=Te(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+ct(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+ct(-i-1)+o,t&&(n=t-s)>0&&(o+=ct(n))):i>=s?(o+=ct(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+ct(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=ct(n))),o}function ln(r,e){var t=r[0];for(e*=F;t>=10;t/=10)e++;return e}function cn(r,e,t){if(e>Ir)throw q=!0,t&&(r.precision=t),Error(yi);return E(new r(sn),e,1,!0)}function ze(r,e,t){if(e>_n)throw Error(yi);return E(new r(an),e,t,!0)}function Ai(r){var e=r.length-1,t=e*F+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 ct(r){for(var e="";r--;)e+="0";return e}function Ti(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/F+4);for(q=!1;;){if(t%2&&(o=o.times(e),fi(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),fi(e.d,s)}return q=!0,o}function pi(r){return r.d[r.d.length-1]&1}function Pi(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?(q=!1,u=g):u=e,a=new m(.03125);r.e>-2;)r=r.times(a),d+=5;for(n=Math.log(ye(2,d))/Math.LN10*2+5|0,u+=n,t=o=s=new m(1),m.precision=u;;){if(o=E(o.times(r),u,1),t=t.times(++l),a=s.plus(ne(o,t,u,1)),Te(a.d).slice(0,u)===Te(s.d).slice(0,u)){for(i=d;i--;)s=E(s.times(s),u,1);if(e==null)if(c<3&&Nt(s.d,u-n,p,c))m.precision=u+=10,t=o=a=new m(1),l=0,c++;else return E(s,m.precision=g,p,q=!0);else return m.precision=g,s}s=a}}function ut(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?(q=!1,l=k):l=e,b.precision=l+=g,t=Te(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=Te(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=cn(b,l+2,k).times(o+""),f=ut(new b(n+"."+t.slice(1)),l-g).plus(c),b.precision=k,e==null?E(f,k,w,q=!0):f;for(d=f,u=s=f=ne(f.minus(1),f.plus(1),l,1),m=E(f.times(f),l,1),i=3;;){if(s=E(s.times(m),l,1),c=u.plus(ne(s,new b(i),l,1)),Te(c.d).slice(0,l)===Te(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(cn(b,l+2,k).times(o+""))),u=ne(u,new b(p),l,1),e==null)if(Nt(u.d,l-g,w,a))b.precision=l+=g,c=s=f=ne(d.minus(1),d.plus(1),l,1),m=E(f.times(f),l,1),i=a=1;else return E(u,b.precision=k,w,q=!0);else return b.precision=k,u;u=c,i+=2}}function Bi(r){return String(r.s*r.s/0)}function on(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)%F,t<0&&(n+=F),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=F;n<i;)r.d.push(+e.slice(n,n+=F));e=e.slice(n),n=F-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),q&&(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 Cr(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),hi.test(e))return on(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(Br.test(e))t=16,e=e.toLowerCase();else if(Pr.test(e))t=2;else if(xr.test(e))t=8;else throw Error(lt+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=Ti(n,new n(t),o,o*2)),c=rn(e,t,Ue),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=ln(c,l),r.d=c,q=!1,s&&(r=ne(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?ye(2,u):Ct.pow(2,u))),q=!0,r)}function Kr(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Pt(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/mn(5,t)),e=Pt(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 Pt(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,d=Math.ceil(l/F);for(q=!1,u=t.times(t),a=new r(n);;){if(s=ne(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ne(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 q=!0,s.d.length=d+1,s}function mn(r,e){for(var t=r;--e;)t*=r;return t}function xi(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 tt=n?4:1,e;if(t=e.divToInt(i),t.isZero())tt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return tt=pi(t)?n?2:3:n?4:1,e;tt=pi(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?(Me(t,1,mt),n===void 0?n=p.rounding:Me(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Bi(r);else{for(l=je(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=rn(je(m),10,i),m.e=m.d.length),d=rn(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=ne(r,m,t,n,0,i),d=r.d,o=r.e,c=gi),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=rn(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 fi(r,e){if(r.length>e)return r.length=e,!0}function Lr(r){return new this(r).abs()}function Mr(r){return new this(r).acos()}function Rr(r){return new this(r).acosh()}function Er(r,e){return new this(r).plus(e)}function _r(r){return new this(r).asin()}function Or(r){return new this(r).asinh()}function Dr(r){return new this(r).atan()}function Fr(r){return new this(r).atanh()}function vr(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(ne(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(ne(r,e,o,1)),t}function Wr(r){return new this(r).cbrt()}function Vr(r){return E(r=new this(r),r.e+1,2)}function Ur(r,e,t){return new this(r).clamp(e,t)}function qr(r){if(!r||typeof r!="object")throw Error(un+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,mt,"rounding",0,8,"toExpNeg",-Tt,0,"toExpPos",0,Tt,"maxE",0,Tt,"minE",-Tt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],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(lt+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(wi);else this[t]=!1;else throw Error(lt+t+": "+n);return this}function Gr(r){return new this(r).cos()}function Xr(r){return new this(r).cosh()}function Si(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,bi(o)){c.s=o.s,q?!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++;q?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 on(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),hi.test(o)?on(c,o):Cr(c,o);if(u==="bigint")return o<0?(o=-o,c.s=-1):c.s=1,on(c,o.toString());throw Error(lt+o)}if(i.prototype=x,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=qr,i.clone=Si,i.isDecimal=bi,i.abs=Lr,i.acos=Mr,i.acosh=Rr,i.add=Er,i.asin=_r,i.asinh=Or,i.atan=Dr,i.atanh=Fr,i.atan2=vr,i.cbrt=Wr,i.ceil=Vr,i.clamp=Ur,i.cos=Gr,i.cosh=Xr,i.div=Hr,i.exp=zr,i.floor=jr,i.hypot=Yr,i.ln=Zr,i.log=Qr,i.log10=$r,i.log2=Jr,i.max=eo,i.min=to,i.mod=no,i.mul=io,i.pow=ro,i.random=oo,i.round=so,i.sign=ao,i.sin=co,i.sinh=uo,i.sqrt=lo,i.sub=mo,i.sum=po,i.tan=fo,i.tanh=bo,i.trunc=go,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 Hr(r,e){return new this(r).div(e)}function zr(r){return new this(r).exp()}function jr(r){return E(r=new this(r),r.e+1,3)}function Yr(){var r,e,t=new this(0);for(q=!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 q=!0,new this(1/0);t=e}return q=!0,t.sqrt()}function bi(r){return r instanceof Ct||r&&r.toStringTag===ki||!1}function Zr(r){return new this(r).ln()}function Qr(r,e){return new this(r).log(e)}function Jr(r){return new this(r).log(2)}function $r(r){return new this(r).log(10)}function eo(){return Pi(this,arguments,-1)}function to(){return Pi(this,arguments,1)}function no(r,e){return new this(r).mod(e)}function io(r,e){return new this(r).mul(e)}function ro(r,e){return new this(r).pow(e)}function oo(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Me(r,1,mt),n=Math.ceil(r/F),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(wi);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=F,n&&r&&(i=ye(10,F-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-=F)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<F&&(t-=F-n)}return s.e=t,s.d=a,s}function so(r){return E(r=new this(r),r.e+1,this.rounding)}function ao(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function co(r){return new this(r).sin()}function uo(r){return new this(r).sinh()}function lo(r){return new this(r).sqrt()}function mo(r,e){return new this(r).sub(e)}function po(){var r=0,e=arguments,t=new this(e[r]);for(q=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return q=!0,E(t,this.precision,this.rounding)}function fo(r){return new this(r).tan()}function bo(r){return new this(r).tanh()}function go(r){return E(r=new this(r),r.e+1,1)}x[Symbol.for("nodejs.util.inspect.custom")]=x.toString;x[Symbol.toStringTag]="Decimal";var Ct=x.constructor=Si(En);sn=new Ct(sn);an=new Ct(an);var K=Ct;import Bo from"big.js";import fn from"bn.js";import yo from"toformat";var wo=yo,Kt=wo;import pn from"big.js";import ho from"bn.js";import Ao from"decimal.js-light";import Lt from"bn.js";var Ii=9007199254740991;function ke(r){let e=Ae("CobaltX_parseBigNumberish");if(r instanceof Lt)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Lt(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Ii||r<=-Ii)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Lt(String(r))):typeof r=="bigint"?new Lt(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Lt(0))}var dn=Ae("module/fraction"),Fn=Kt(pn),Mt=Kt(Ao),To={[0]:Mt.ROUND_DOWN,[1]:Mt.ROUND_HALF_UP,[2]:Mt.ROUND_UP},Po={[0]:pn.roundDown,[1]:pn.roundHalfUp,[2]:pn.roundUp},ee=class{constructor(e,t=new ho(1)){this.numerator=ke(e),this.denominator=ke(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ee(this.denominator,this.numerator)}add(e){let t=e instanceof ee?e:new ee(ke(e));return this.denominator.eq(t.denominator)?new ee(this.numerator.add(t.numerator),this.denominator):new ee(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ee?e:new ee(ke(e));return this.denominator.eq(t.denominator)?new ee(this.numerator.sub(t.numerator),this.denominator):new ee(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ee?e:new ee(ke(e));return new ee(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ee?e:new ee(ke(e));return new ee(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||dn.logWithError(`${e} is not an integer.`),e<=0&&dn.logWithError(`${e} is not positive.`),Mt.set({precision:e+1,rounding:To[n]});let i=new Mt(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)||dn.logWithError(`${e} is not an integer.`),e<0&&dn.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 xo=Ae("CobaltX_amount"),Ni=Kt(Bo);function So(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")):xo.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Pe=class extends ee{constructor(t,n,i=!0,o){let s=new fn(0),a=vn.pow(new fn(t.decimals));if(i)s=ke(n);else{let u=new fn(0),c=new fn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=So(n.toString(),t.decimals);u=ke(l),c=ke(d)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=Ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Pe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Pe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,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 Ni.DP=this.token.decimals,new Ni(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{TOKEN_PROGRAM_ID as No}from"@solana/spl-token";import{PublicKey as sa}from"@solana/web3.js";import{PublicKey as nt}from"@solana/web3.js";var Io={["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:nt.default.toString(),OUTPUT_MINT_ADDRESS:"742wcXVzkhNuEePAot7L3GvPseh93pvYFPgyHLX8mUy9",POPULAR_TOKENS:{SOL:nt.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:nt.default.toBase58(),OUTPUT_MINT_ADDRESS:"ABoT7umUXnx8RtJTeRqKB6myebVjP2wdJGQuV23jVVH3",POPULAR_TOKENS:{SOL:nt.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:nt.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:nt.default.toString(),OUTPUT_MINT_ADDRESS:"63tPXWPnYeZ9hA3dJsAY5RcQ8YbwEz8uZ5nKu3uFD1aK",POPULAR_TOKENS:{SOL:nt.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:nt.default.toString(),OUTPUT_MINT_ADDRESS:"BoYN2f2gLQS4jpvMSV9dAZwfzKJiKGk4NPck5BjXfujo",POPULAR_TOKENS:{SOL:nt.default.toString(),ETH:"FkvCG5DcuYCQ1BnPH4ZzTkCdk3VzutgyDAFBec4qAjhh",USDC:"BoYN2f2gLQS4jpvMSV9dAZwfzKJiKGk4NPck5BjXfujo",USDT:"J87bysZjwfS3n6KR21cwbdPZVJWNSFcXpWF5kiChAwQH"},WSOL_DECIMALS:9}},dt=r=>Io[r];function Ie(r){let e=dt(r);return{chainId:101,address:e.WSOL_MINT_ADDRESS,programId:No.toBase58(),decimals:9,symbol:e.WRAPPED_TOKEN_SYMBOL||"",name:e.FULL_TOKEN_NAME,logoURI:e.GITHUB_LOGO_URL,tags:[],priority:2,type:"cobaltx",extensions:{coingeckoId:"solana"}}}import{PublicKey as qn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Co}from"@solana/spl-token";import{PublicKey as me,SystemProgram as Ci,SYSVAR_RENT_PUBKEY as Ko}from"@solana/web3.js";function Wn({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var fa=[Wn({pubkey:Co,isWritable:!1}),Wn({pubkey:Ci.programId,isWritable:!1}),Wn({pubkey:Ko,isWritable:!1})];function Vn({publicKey:r,transformSol:e,network:t}){let n=Ki(r.toString());if(e&&t){let{WSOLMint:i}=re(t);if(n instanceof me)return e&&n.equals(Rt)?i:n;if(e&&n.toString()===Rt.toBase58())return i}else if(n instanceof me)return n;if(typeof n=="string"){if(n===me.default.toBase58())return me.default;try{return new me(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ki(r){try{return new me(r)}catch{return r}}var bn=new me("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Un=new me("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),pt=new me("SysvarRent111111111111111111111111111111111"),ba=new me("SysvarC1ock11111111111111111111111111111111"),yt=new me("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ga=new me("Sysvar1nstructions1111111111111111111111111"),ya=Ci.programId,Rt=me.default;function re(r){let e=dt(r);return{USDCMint:new me(e.USDC_MINT_ADDRESS),USDTMint:new me(e.USDT_MINT_ADDRESS),WSOLMint:new me(e.WSOL_MINT_ADDRESS),ETHMint:new me(e.ETH_MINT_ADDRESS),BONK_Mint:e.BONK_MINT_ADDRESS?new me(e.BONK_MINT_ADDRESS):me.default,SOL_Mint:e.SOL_MINT_ADDRESS?new me(e.SOL_MINT_ADDRESS):me.default,INPUT_MINT:new me(e.INPUT_MINT_ADDRESS),OUTPUT_MINT:new me(e.OUTPUT_MINT_ADDRESS)}}function gt(r,e){return Vn({publicKey:r,transformSol:!0,network:e})}var qe=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1,network:a}){if(e===Rt.toBase58()||e instanceof qn&&Rt.equals(e)&&a){this.decimals=Ie(a).decimals,this.symbol=Ie(a).symbol,this.name=Ie(a).name,this.mint=new qn(Ie(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?qn.default:Vn({publicKey:e}),this.isToken2022=s}static getWSol(e){return new qe({...Ie(e),mint:Ie(e).address})}equals(e){return this===e?!0:this.mint.equals(e.mint)}};import Mo from"bn.js";var Li=new ee(new Mo(100)),ft=class extends ee{toSignificant(e=5,t,n){return this.mul(Li).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Li).toFixed(e,t,n)}};var Ro=Ae("CobaltX_price"),Ge=class extends ee{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new ee(Gn(n.decimals),Gn(i.decimals))}get raw(){return new ee(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ge({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Ro.logWithError("mul token not equals");let n=super.mul(t);return new Ge({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)}};import{PublicKey as Ya}from"@solana/web3.js";import Qa from"bn.js";var Eo=new it(0),gc=new it(1),yc=new it(2),wc=new it(3),kc=new it(5),vn=new it(10),hc=new it(100),Ac=new it(1e3),Tc=new it(1e4);function Gn(r){return vn.pow(ke(r))}function Mn(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as Vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Uo}from"@solana/spl-token";import{ComputeBudgetProgram as Mi,Keypair as Ei,PublicKey as _o,Transaction as _i,TransactionMessage as Oo,VersionedTransaction as Oi}from"@solana/web3.js";var de={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee"};import{TOKEN_PROGRAM_ID as Do}from"@solana/spl-token";var Ri=Ae("CobaltX_txUtil"),Di=1644;function gn(r){let e=[],t=[];return r.microLamports&&(e.push(Mi.setComputeUnitPrice({microLamports:r.microLamports})),t.push(de.SetComputeUnitPrice)),r.units&&(e.push(Mi.setComputeUnitLimit({units:r.units})),t.push(de.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Bt(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 Fo(r,e){r.length<1&&Ri.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Ri.logWithError(`no signers provided:, ${e.toString()}`);let t=new _i;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Di}catch{return!1}}function Ne(r,e){let[t,n]=_o.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Et({instructions:r,payer:e,signers:t}){return Fo(r,[e,...t])}function _t({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ei.generate().publicKey.toString()}){let o=new Oo({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Oi(o).serialize()).toString("base64").length<Di}catch{return!1}}var vo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Wo=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof Oi&&(e=vo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function wt(r){let e=[];return r.forEach(t=>{t instanceof _i&&(t.recentBlockhash||(t.recentBlockhash=Do.toBase58()),t.feePayer||(t.feePayer=Ei.generate().publicKey)),e.push(Wo(t))}),console.log("simulate tx string:",e),e}function oe(r,e,t){return Ne([r.toBuffer(),(t!=null?t:Uo).toBuffer(),e.toBuffer()],new Vo("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as H}from"@solana/web3.js";var Gc=new H("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Xc=new H("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Hc=new H("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),zc=new H("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),jc=new H("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Yc=new H("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Zc=new H("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Qc=new H("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Jc=new H("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),$c=new H("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo");function Ot(r){let e=dt(r);return new H(e.CLMM_PROGRAMM_ID)}var Dt=new H("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),wn=new H("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),eu=new H("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),tu=new H("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),nu=new H("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),iu=new H("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ru=new H("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),ou=new H("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),su=new H("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),au=new H("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),cu=new H("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),qo=new H("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Go=new H("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Xo=new H("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),uu=new H("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ho=new H("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),lu=new H("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),zo=new H("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var mu={SERUM_MARKET:H.default,OPENBOOK_MARKET:new H("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:H.default,FarmV3:new H("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new H("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new H("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new H("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new H("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new H("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new H("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new H("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new H("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:qo,CREATE_CPMM_POOL_AUTH:Go,CREATE_CPMM_POOL_FEE_ACC:Xo,FEE_DESTINATION_ID:new H("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:Ho,LCOK_CPMM_AUTH:zo};import Xe from"bn.js";var Ft=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 Xe(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===Ft){let u=new Xe(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Xn(r.mul(new Xe(Ft)),new Xe(Ft-o.transferFeeBasisPoints)),c=new Xe(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,d=Xn(l.mul(new Xe(o.transferFeeBasisPoints)),new Xe(Ft)),m=d.gt(s)?s:d;return{amount:l,fee:m,expirationTime:a}}else{let u=Xn(r.mul(new Xe(o.transferFeeBasisPoints)),new Xe(Ft)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function bt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Xn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Xe(0))?t.add(new Xe(1)):t}import{PublicKey as Fi,AddressLookupTableAccount as kn}from"@solana/web3.js";async function Hn({connection:r,address:e,network:t}){let n=await $e(r,[...new Set(e.map(o=>o.toString()))].map(o=>new Fi(o))),i={};for(let o=0;o<e.length;o++){let s=n[o],a=e[o];if(!s)continue;let u=new kn({key:a,state:kn.deserialize(s.data)});i[a.toString()]=u,hn(t)[a.toString()]=u}return i}function hn(r){let e=dt(r);return{[e.LOOKUP_TABLE_CACHE]:new kn({key:new Fi(e.LOOKUP_TABLE_CACHE),state:kn.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})}}import{PublicKey as vt,sendAndConfirmTransaction as zn,Transaction as Wt,TransactionMessage as Vt,VersionedTransaction as Ut}from"@solana/web3.js";import Yo from"axios";var An=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 Yo.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!==vt.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 Wt;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 Bt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),wt([t]),(c=this.owner)!=null&&c.isKeyPair)return{txId:a?await zn(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 Bt(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 zn(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));wt(w);let k=await this.signAllTransactions(w);if(d){let A=0,T=[],h=async()=>{if(!k[A])return;let P=await this.connection.sendRawTransaction(k[A].serialize(),{skipPreflight:f});T.push({txId:P,status:"sent",signedTx:k[A]}),m==null||m([...T]),A++,this.connection.onSignature(P,B=>{let I=T.findIndex(_=>_.txId===P);I>-1&&(T[I].status=B.err?"error":"success"),m==null||m([...T]),B.err||h()},"processed"),this.connection.getSignatureStatus(P)};return await h(),{txIds:T.map(P=>P.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"?{}:hn(s),...t},c=Array.from(new Set([...n,...this.lookupTableAddress])),l=[];for(let y of c)u[y]===void 0&&l.push(new vt(y));let d=await Hn({connection:this.connection,address:l,network:s});for(let[y,b]of Object.entries(d))u[y]=b;let m=i?vt.default.toBase58():o!=null?o:await Bt(this.connection,this.blockhashCommitment),p=new Vt({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 Ut(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(wt([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),wt(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(P=>P.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 vt(b));if(m!==t[l]&&c.length<12&&(Et({instructions:g,payer:this.feePayer,signers:y})||Et({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,Et({instructions:n?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:y})?a.push(new Wt().add(...o.instructions,...c)):a.push(new Wt().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);Et({instructions:n?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:p.map(g=>g.publicKey)})?a.push(new Wt().add(...o.instructions,...c)):a.push(new Wt().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 Bt(this.connection,this.blockhashCommitment);if(a.forEach(async(A,T)=>{A.recentBlockhash=w,u[T].length&&A.sign(...u[T])}),wt(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 P=await zn(this.connection,h,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});T.push(P)}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,P=[],B=async()=>{if(!T[h])return;h<f&&(P.push({txId:"",status:"success",signedTx:T[h]}),g==null||g([...P]),h++,B());let I=await this.connection.sendRawTransaction(T[h].serialize(),{skipPreflight:b});P.push({txId:I,status:"sent",signedTx:T[h]}),g==null||g([...P]),h++,this.connection.onSignature(I,_=>{let S=P.findIndex(C=>C.txId===I);S>-1&&(P[S].status=_.err?"error":"success"),g==null||g([...P]),_.err||B()},"processed"),this.connection.getSignatureStatus(I)};return await B(),{txIds:P.map(I=>I.txId),signedTxs:T}}else{let h=[];for(let P=0;P<T.length;P+=1){let B=await this.connection.sendRawTransaction(T[P].serialize(),{skipPreflight:b});h.push(B)}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"?{}:hn(s),...i},c=Array.from(new Set([...this.lookupTableAddress,...o])),l=[];for(let A of c)u[A]===void 0&&l.push(new vt(A));let d=await Hn({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 Bt(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&&(_t({instructions:h,payer:this.feePayer,lookupTableAddressAccount:u})||_t({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 P={};for(let B of[...new Set(c)])u[B]!==void 0&&(P[B]=u[B]);if(t&&_t({instructions:[...m.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:u,recentBlockhash:p})){let B=new Vt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...m.instructions,...b]}).compileToV0Message(Object.values(u));f.push(new Ut(B))}else{let B=new Vt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...b]}).compileToV0Message(Object.values(u));f.push(new Ut(B))}y.push(Array.from(new Set(b.map(B=>B.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(B=>g[B]).filter(B=>B!==void 0)),b=[A]}}),b.length>0){let T=[...new Set(b.map(h=>h.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(h=>g[h]).filter(h=>h!==void 0);if(t&&_t({instructions:[...m.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:u,recentBlockhash:p})){let h=new Vt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...m.instructions,...b]}).compileToV0Message(Object.values(u));f.push(new Ut(h))}else{let h=new Vt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...b]}).compileToV0Message(Object.values(u));f.push(new Ut(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 _;let{sequentially:T,onTxUpdate:h,skipTxCount:P=0,recentBlockHash:B,skipPreflight:I=!0}=A||{};if(f.map(async(S,C)=>{y[C].length&&S.sign(y[C]),B&&(S.message.recentBlockhash=B)}),wt(f),(_=this.owner)!=null&&_.isKeyPair){if(T){let S=0,C=[];for(let D of f){if(++S,S<=P){console.log("skip tx: ",S),C.push("tx skipped");continue}let O=await this.connection.sendTransaction(D,{skipPreflight:I});await yn(this.connection,O),C.push(O)}return{txIds:C,signedTxs:f}}return{txIds:await Promise.all(f.map(async S=>await this.connection.sendTransaction(S,{skipPreflight:I}))),signedTxs:f}}if(this.signAllTransactions){let S=await this.signAllTransactions(f.slice(P,f.length)),C=[...f.slice(0,P),...S];if(T){let D=0,O=[],X=async()=>{if(!C[D])return;if(D<P){O.push({txId:"",status:"success",signedTx:C[D]}),h==null||h([...O]),D++,X();return}let G=await this.connection.sendTransaction(C[D],{skipPreflight:I});O.push({txId:G,status:"sent",signedTx:C[D]}),h==null||h([...O]),D++,this.connection.onSignature(G,Ve=>{let Ee=O.findIndex(It=>It.txId===G);Ee>-1&&(O[Ee].status=Ve.err?"error":"success"),h==null||h([...O]),Ve.err||X()},"processed"),this.connection.getSignatureStatus(G)};return X(),{txIds:[],signedTxs:C}}else{let D=[];for(let O=0;O<C.length;O+=1){let X=await this.connection.sendTransaction(C[O],{skipPreflight:I});D.push(X)}return{txIds:D,signedTxs:C}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};import{AccountLayout as fr,TOKEN_2022_PROGRAM_ID as St,TOKEN_PROGRAM_ID as tn}from"@solana/spl-token";import{PublicKey as L}from"@solana/web3.js";import Re from"bn.js";var jn=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),qt=class{constructor({scope:e,moduleName:t,network:n}){this.disabled=!1;this.scope=e,this.logger=Ae(t),this.network=n}createTxBuilder(e){return this.scope.checkOwner(),new An({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(jn(e))}logInfo(...e){this.logger.info(jn(e))}logAndCreateError(...e){let t=jn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as rs}from"@solana/web3.js";import Ui,{isBN as qi}from"bn.js";import{bits as tl,BitStructure as nl,blob as Zo,Blob as il,cstr as rl,f32 as ol,f32be as sl,f64 as al,f64be as cl,greedy as ul,Layout as Qo,ns64 as ll,ns64be as ml,nu64 as dl,nu64be as pl,offset as fl,s16 as bl,s16be as gl,s24 as yl,s24be as wl,s32 as Jo,s32be as kl,s40 as hl,s40be as Al,s48 as Tl,s48be as Pl,s8 as Bl,seq as $o,struct as xl,Structure as es,u16 as ts,u16be as Sl,u24 as Il,u24be as Nl,u32 as Cl,u32be as Kl,u40 as Ll,u40be as Ml,u48 as Rl,u48be as El,u8 as ns,UInt as is,union as _l,Union as Ol,unionLayoutDiscriminator as Dl,utf8 as Fl}from"@solana/buffer-layout";var Yn=Qo,vi=es;var Zn=is;var Wi=ns,Gt=ts;var se=Jo;var Vi=$o;var Oe=Zo;var xt=class extends Yn{constructor(t,n,i){super(t,i);this.blob=Oe(t),this.signed=n}decode(t,n=0){let i=new Ui(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 Ui(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function ie(r){return new Zn(1,r)}function rt(r){return new Zn(4,r)}function R(r){return new xt(8,!1,r)}function j(r){return new xt(16,!1,r)}function Gi(r){return new xt(8,!0,r)}function Xi(r){return new xt(16,!0,r)}var Tn=class extends Yn{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 $(r){return new Tn(Oe(32),e=>new rs(e),e=>e.toBuffer(),r)}function Ce(r){return new Tn(Wi(),os,ss,r)}function os(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function ss(r){return r?1:0}var Qn=class extends vi{decode(e,t){return super.decode(e,t)}};function J(r,e,t){return new Qn(r,e,t)}function ue(r,e,t){let n,i=typeof e=="number"?e:qi(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=qi(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 Vi(r,i,t)}var Jl=J([rt("mintAuthorityOption"),$("mintAuthority"),R("supply"),ie("decimals"),ie("isInitialized"),rt("freezeAuthorityOption"),$("freezeAuthority")]);import{PublicKey as nm}from"@solana/web3.js";import{MintLayout as rm,TOKEN_PROGRAM_ID as sm}from"@solana/spl-token";var Pn=({address:r,programId:e,decimals:t,network:n,...i})=>({chainId:101,address:gt(r,n).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:i.extensions||{},...i}),Jn=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;import{ASSOCIATED_TOKEN_PROGRAM_ID as en,TOKEN_2022_PROGRAM_ID as pe,TOKEN_PROGRAM_ID as te}from"@solana/spl-token";import{Keypair as Nn,PublicKey as N,SystemProgram as at,TransactionInstruction as Be}from"@solana/web3.js";import ai from"bn.js";import gs from"bn.js";import We from"bn.js";var be=new We(0),Ye=new We(1),ot=new We(-1),De=new We(1).shln(64),Bn=new We(1).shln(128),$n=De.sub(Ye),Xt=64,Hi=Bn.subn(1),Se=-443636,Ke=-Se,Ze=new We("4295048016"),Qe=new We("79226673521066979257578248091"),wm=new We("4295048017"),km=new We("79226673521066979257578248090"),zi=16,ji="59543866431248",Yi="184467440737095516",Zi="15793534762490258745",xn=new We(10).pow(new We(6));var Qi={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:[]},hm=new We("18446744073700000000");import z from"bn.js";function Sn(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function ei(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function ti(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Ht(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Ji(r,e){return Ht(r,e)?null:ei(r,e)}function $i(r,e){return Ht(r,e)?null:ti(r,e)}var Sm=Buffer.from("amm_config","utf8"),as=Buffer.from("pool","utf8"),cs=Buffer.from("pool_vault","utf8"),us=Buffer.from("pool_reward_vault","utf8"),er=Buffer.from("position","utf8"),ls=Buffer.from("tick_array","utf8"),ms=Buffer.from("operation","utf8"),ds=Buffer.from("pool_tick_array_bitmap_extension","utf8"),ps=Buffer.from("observation","utf8");function tr(r,e,t,n){return Ne([as,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function ni(r,e,t){return Ne([cs,e.toBuffer(),t.toBuffer()],r)}function nr(r,e,t){return Ne([us,e.toBuffer(),t.toBuffer()],r)}function Y(r,e,t){return Ne([ls,e.toBuffer(),Sn(t)],r)}function He(r,e,t,n){return Ne([er,e.toBuffer(),Sn(t),Sn(n)],r)}function Le(r,e){return Ne([er,e.toBuffer()],r)}function zt(r){return Ne([Buffer.from("metadata","utf8"),yt.toBuffer(),r.toBuffer()],yt)}function jt(r){return Ne([ms],r)}function ge(r,e){return Ne([ds,e.toBuffer()],r)}function ir(r,e){return Ne([ps,e.toBuffer()],r)}var rr=Buffer.from("locked_position","utf8");function ii(r,e){return Ne([rr,e.toBuffer()],r)}function Yt(r,e){return Ne([rr,e.toBuffer()],r)}import{TOKEN_2022_PROGRAM_ID as or}from"@solana/spl-token";import{PublicKey as Fe}from"@solana/web3.js";import ae from"bn.js";import Je from"bn.js";var Zt=class{static getfeeGrowthInside(e,t,n){let i=new Je(0),o=new Je(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 Je(0),a=new Je(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=U.wrappingSubU128(U.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=U.wrappingSubU128(U.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=U.mulDivFloor(U.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,De),u=t.tokenFeesOwedA.add(a),c=U.mulDivFloor(U.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,De),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=U.mulDivFloor(U.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,De),u=t.tokenFeesOwedA.add(a),c=U.mulDivFloor(U.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,De),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=U.wrappingSubU128(u,c.growthInsideLastX64),d=U.mulDivFloor(l,t.liquidity,De),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=U.wrappingSubU128(u,c.growthInsideLastX64),d=U.mulDivFloor(l,t.liquidity,De),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 Je(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 Je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(U.wrappingSubU128(U.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 Je(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 Je(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(U.wrappingSubU128(U.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 K(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=Q.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 Je(new K(d.amountA.toString()).mul(l).toFixed(0)),(w=e.mintA.extensions)==null?void 0:w.feeConfig,s,!0),fe(new Je(new K(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:bt(m.expirationTime,p.expirationTime)}}};var fs=15,Z=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(fs/2));for(let p=0;p<l.length;p++){let{publicKey:g}=Y(t,n,l[p]);u.push(g)}let d=(await $e(e,u)).map(p=>p!==null?Qt.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/Z.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=we-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<we;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=Y(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<we;){let m=c.ticks[u];if(m.liquidityGross.gtn(0)){l=m;break}u=u+1}let{publicKey:d}=Y(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>Ke)return!1;let n=M.getTickArrayStartIndexByTick(Se,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return we*e}};var ri=14,st=class{static maxTickInTickarrayBitmap(e){return e*we*kt}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(!Z.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-Z.tickCount(n):t+Z.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*we,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=Ji(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=$i(1024,l);if(d!==null){let m=(c+d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o-Z.tickCount(n)}}}},Jt=class{static getBitmapOffset(e,t){if(!Z.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=st.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=st.maxTickInTickarrayBitmap(e),n=-t;if(Ke<=t)throw Error(`extensionTickBoundary check error: ${Ke}, ${t}`);if(n<=Se)throw Error(`extensionTickBoundary check error: ${n}, ${Se}`);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=Z.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}=st.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=M.mergeTickArrayBitmap(e).shln(kt-1-a),c=Ht(512,u)?null:ei(512,u);if(c!==null){let l=t-c*Z.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=M.mergeTickArrayBitmap(e).shrn(a),c=Ht(512,u)?null:ti(512,u);if(c!==null){let l=t+c*Z.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-Z.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%st.maxTickInTickarrayBitmap(t),i=Math.floor(n/Z.tickCount(t));return e<0&&n!=0&&(i=kt-i),i}};var le=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}=ht.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(ot),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}=Y(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:d,accounts:m,sqrtPriceX64:p,feeAmount:g}=ht.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(ot),c,o);return a.push(...m),{expectedAmountIn:d,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=le.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Jt.checkTickArrayIsInit(Z.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):M.checkTickArrayIsInitialized(M.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Y(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,Z.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=Y(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/Z.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=Z.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=st.nextInitializedTickArrayStartIndex(M.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Jt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Se||t>Ke)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:U.x64ToDecimal(d.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Fe(m)};if(p.tokenMint.equals(Fe.default))continue;if(n<=p.openTime.toNumber()||i.eq(be)){s.push(p);continue}let g=new ae(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),y=U.mulDivFloor(f,p.emissionsPerSecondX64,i),b=p.rewardGrowthGlobalX64.add(y),w=U.mulDivFloor(f,p.emissionsPerSecondX64,De),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=st.maxTickInTickarrayBitmap(e),n=-t;return t>Ke&&(t=Z.getArrayStartIndex(Ke,e)+Z.tickCount(e)),n<Se&&(n=Z.getArrayStartIndex(Se,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!Z.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/Z.tickCount(t)*kt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await et(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=ar.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}=Y(u.programId,u.id,d);o.push({pubkey:m}),i[m.toString()]=u.id}}let s=await et(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=Qt.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(Le(p,m).publicKey);let l=await $e(t,c,{batchRequest:i}),d={};for(let m of l){if(m===null)continue;let p=$t.decode(m.data),g=p.poolId.toString(),f=e.find(B=>B.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}=Q.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(B=>({...B,pendingReward:new ae(0)})),leverage:T,tokenFeeAmountA:new ae(0),tokenFeeAmountB:new ae(0)}];let h=await M.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),P=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}`]=P}if(o){let m=Object.values(d),p=await $e(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]=Qt.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)],P=T.ticks[M.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:B,tokenFeeAmountB:I}=await Zt.GetPositionFees(f,b,h,P),_=await Zt.GetPositionRewards(f,b,h,P);b.tokenFeeAmountA=B.gte(new ae(0))?B:new ae(0),b.tokenFeeAmountB=I.gte(new ae(0))?I:new ae(0);for(let S=0;S<_.length;S++)b.rewardInfos[S].pendingReward=_[S].gte(new ae(0))?_[S]:new ae(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new K(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 K(0))?c=l?Ze.add(new ae(1)):Qe.sub(new ae(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}=le.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 K(1).div(A),h=f.mul(new ae(Math.floor((1-s)*1e10))).div(new ae(1e10)),P=fe(h,m,i,!1),B=l?e.currentPrice:new K(1).div(e.currentPrice),I=new K(T).sub(B).abs(),_=B,S=new ft(new K(I).mul(10**15).toFixed(0),new K(_).mul(10**15).toFixed(0));return{allTrade:g,realAmountIn:p,amountOut:k,minAmountOut:P,expirationTime:bt(p.expirationTime,k.expirationTime),currentPrice:e.currentPrice,executionPrice:T,priceImpact:S,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 qe({...c,mint:c.address,isToken2022:c.programId===or.toBase58()}),new qe({...l,mint:l.address,isToken2022:l.programId===or.toBase58()})],{allTrade:p,realAmountIn:g,amountOut:f,minAmountOut:y,expirationTime:b,currentPrice:w,executionPrice:k,priceImpact:A,fee:T,remainingAccounts:h,executionPriceX64:P}=le.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Fe(c.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),B={...g,amount:new Pe(d,g.amount),fee:g.fee===void 0?void 0:new Pe(d,g.fee)},I={...f,amount:new Pe(m,f.amount),fee:f.fee===void 0?void 0:new Pe(m,f.fee)},_={...y,amount:new Pe(m,y.amount),fee:y.fee===void 0?void 0:new Pe(m,y.fee)},S=new Ge({baseToken:d,denominator:new ae(10).pow(new ae(20+d.decimals)),quoteToken:m,numerator:w.mul(new K(10**(20+m.decimals))).toFixed(0)}),C=new Ge({baseToken:d,denominator:new ae(10).pow(new ae(20+d.decimals)),quoteToken:m,numerator:k.mul(new K(10**(20+m.decimals))).toFixed(0)}),D=new Pe(d,T);return{allTrade:p,realAmountIn:B,amountOut:I,minAmountOut:_,expirationTime:b,currentPrice:S,executionPrice:C,priceImpact:A,fee:D,remainingAccounts:h,executionPriceX64:P}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountOut:o,slippage:s,priceLimit:a=new K(0)}){var _;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 K(0))?l=u?Qe.sub(new ae(1)):Ze.add(new ae(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}=le.getInputAmountAndRemainAccounts(e,t,n,d.amount.sub((_=d.fee)!=null?_: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 K(1).div(w),A=m.mul(new ae(Math.floor((1+s)*1e10))).div(new ae(1e10)),T=fe(A,c[y],i,!0),h=u?e.currentPrice:new K(1).div(e.currentPrice),P=new K(k).sub(h).abs(),B=h,I=new ft(new K(P).mul(10**15).toFixed(0),new K(B).mul(10**15).toFixed(0));return{amountIn:b,maxAmountIn:T,realAmountOut:d,expirationTime:bt(b.expirationTime,d.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:I,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[gt(e.mintA.address,c).toString()],p=i[gt(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 K(e.price),e.mintA.decimals,e.mintB.decimals),b=v.getSqrtPriceX64FromTick(s),w=v.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:A}=Q.getAmountsFromLiquidityWithSlippage(y,b,w,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:h}=Q.getAmountsFromLiquidityWithSlippage(y,b,w,o,!1,!1,0),P=new K(k.toString()).div(new K(10).pow(g)).mul(m.value).add(new K(A.toString()).div(new K(10).pow(f)).mul(p.value)),B=new K(T.toString()).div(new K(10).pow(g)).mul(m.value).add(new K(h.toString()).div(new K(10).pow(f)).mul(p.value)),I=new K(1).div(P.add(B)),S=new K(d.volumeFee).mul(365).div(l).mul(I).mul(100).toNumber(),C=3600*24*365,D=e.rewardDefaultInfos.map(O=>{var Ve,Ee;let X=O.mint.decimals,G=i[O.mint.address];return u<((Ve=O.startTime)!=null?Ve:0)||u>((Ee=O.endTime)!=null?Ee:0)||!O.perSecond||!G||X===void 0?0:new K(G.value).mul(new K(O.perSecond).mul(C)).div(new K(10).pow(X)).mul(I).mul(100).toNumber()});return{feeApr:S,rewardsApr:D,apr:S+D.reduce((O,X)=>O+X,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 K(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 ae(new K(g.amount.sub((w=g.fee)!=null?w:be).toString()).mul(p).toFixed(0)),y;if(l.lte(d))y=t?Q.getLiquidityFromTokenAmountA(d,m,f,!a):new ae(0);else if(l.lte(m)){let k=Q.getLiquidityFromTokenAmountA(l,m,f,!a),A=Q.getLiquidityFromTokenAmountB(d,l,f);y=t?k:A}else y=t?new ae(0):Q.getLiquidityFromTokenAmountB(d,m,f);return le.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=Q.getAmountsFromLiquidity(v.priceToSqrtPriceX64(new K(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:bt(m.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(u=>!n[u.id]).map(u=>new Fe(u.id));(await $e(e,i)).forEach((u,c)=>{!u||(n[i[c].toBase58()]=In.decode(u.data))});let s=t.map(u=>ge(new Fe(u.programId),new Fe(u.id)).publicKey),a=await le.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>({...u,[c.id]:{...n[c.id],id:new Fe(c.id),version:6,programId:new Fe(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:{...c.config,id:new Fe(c.config.id),fundOwner:""},currentPrice:new K(c.price),exBitmapAccount:ge(new Fe(c.programId),new Fe(c.id)).publicKey,exBitmapInfo:a[ge(new Fe(c.programId),new Fe(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 oi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function sr(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:oi,week:oi,month:oi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,burnPercent:0,config:{...r.ammConfig,id:r.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}}}var U=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(be)||(o=o.add(Ye)),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(Ye)).div(n)}static x64ToDecimal(e,t){return new K(e.toString()).div(K.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new z(e.mul(K.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Bn).sub(t).mod(Bn)}};function he(r,e){return si(r.mul(e),64,256)}function bs(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function si(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 U.x64ToDecimal(e).pow(2).mul(K.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return U.decimalToX64(e.mul(K.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(Xt);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?U.mulDivCeil(s,e,a):U.mulDivRoundingUp(s,Ye,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 U.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(Xt);if(i)return e.add(o.div(t));{let s=U.mulDivRoundingUp(o,Ye,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<Se||e>Ke)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new z("18445821805675395072"):new z("18446744073709551616");return(t&2)!=0&&(n=he(n,new z("18444899583751176192"))),(t&4)!=0&&(n=he(n,new z("18443055278223355904"))),(t&8)!=0&&(n=he(n,new z("18439367220385607680"))),(t&16)!=0&&(n=he(n,new z("18431993317065453568"))),(t&32)!=0&&(n=he(n,new z("18417254355718170624"))),(t&64)!=0&&(n=he(n,new z("18387811781193609216"))),(t&128)!=0&&(n=he(n,new z("18329067761203558400"))),(t&256)!=0&&(n=he(n,new z("18212142134806163456"))),(t&512)!=0&&(n=he(n,new z("17980523815641700352"))),(t&1024)!=0&&(n=he(n,new z("17526086738831433728"))),(t&2048)!=0&&(n=he(n,new z("16651378430235570176"))),(t&4096)!=0&&(n=he(n,new z("15030750278694412288"))),(t&8192)!=0&&(n=he(n,new z("12247334978884435968"))),(t&16384)!=0&&(n=he(n,new z("8131365268886854656"))),(t&32768)!=0&&(n=he(n,new z("3584323654725218816"))),(t&65536)!=0&&(n=he(n,new z("696457651848324352"))),(t&131072)!=0&&(n=he(n,new z("26294789957507116"))),(t&262144)!=0&&(n=he(n,new z("37481735321082"))),e>0&&(n=Hi.div(n)),n}static getTickFromPrice(e,t,n){return v.getTickFromSqrtPriceX64(v.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Qe)||e.lt(Ze))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new z(t-64),i=bs(n,32,128),o=new z("8000000000000000","hex"),s=0,a=new z(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new z(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(ji)),m=si(d.sub(new z(Yi)),64,128).toNumber(),p=si(d.add(new z(Zi)),64,128).toNumber();return m==p?m:v.getSqrtPriceX64FromTick(p).lte(e)?p:m}},At=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=At.getTickWithPriceAndTickspacing(e,t,n,i),s=v.getSqrtPriceX64FromTick(o);return v.sqrtPriceX64ToPrice(s,n,i)}},Q=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(Xt),s=t.sub(e);return i?U.mulDivRoundingUp(U.mulDivCeil(o,s,t),Ye,e):U.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?U.mulDivCeil(n,t.sub(e),De):U.mulDivFloor(n,t.sub(e),De)}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?U.mulDivRoundingUp(a,Ye,$n):a.shrn(Xt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),U.mulDivFloor(n,$n,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return Q.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=Q.getLiquidityFromTokenAmountA(e,n,i,!1),a=Q.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return Q.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:Q.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new z(0)};if(e.lt(n)){let s=Q.getTokenAmountAFromLiquidity(e,n,i,o),a=Q.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new z(0),amountB:Q.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=Q.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,d=new z(new K(u.toString()).mul(l).toFixed(0)),m=new z(new K(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 K(e.price),e.mintA.decimals,e.mintB.decimals),l=v.getSqrtPriceX64FromTick(t),d=v.getSqrtPriceX64FromTick(n),m=s?1+o:1-o,p=Q.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(new K(p.amountA.toString()).mul(m).toFixed(0)),(A=e.mintA.extensions)==null?void 0:A.feeConfig,a,u),fe(new z(new K(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:bt(g.expirationTime,f.expirationTime)}}},ht=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?Ze.add(Ye):Qe.sub(Ye)),s){if(g.lt(Ze))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(Qe))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+Z.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new z(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 P=M.nextInitTick(k,b.tick,l,s,T),B=P||null,I=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let S=le.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},w,s);if(!S.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=S.nextStartIndex;let{publicKey:C}=Y(e,t,w);I=C,k=n[w];try{B=M.firstInitializedTick(k,s)}catch{throw Error("not found next tick info")}}h.tickNext=B.tick,h.initialized=B.liquidityGross.gtn(0),p!==w&&I&&(b.accounts.push(I),p=w),h.tickNext<Se?h.tickNext=Se:h.tickNext>Ke&&(h.tickNext=Ke),h.sqrtPriceNextX64=v.getSqrtPriceX64FromTick(h.tickNext);let _;if(s&&h.sqrtPriceNextX64.lt(g)||!s&&h.sqrtPriceNextX64.gt(g)?_=g:_=h.sqrtPriceNextX64,[b.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=ht.swapStepCompute(b.sqrtPriceX64,_,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 S=B.liquidityNet;s&&(S=S.mul(ot)),b.liquidity=Q.addDelta(b.liquidity,S)}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 S=v.getTickFromSqrtPriceX64(b.sqrtPriceX64);T=S!=b.tick&&!s&&k.startTickIndex===S,b.tick=S}++A}try{let{nextStartIndex:h,isExist:P}=Z.nextInitializedTickArray(b.tick,l,s,i,o);P&&p!==h&&(b.accounts.push(Y(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(0),amountIn:new z(0),amountOut:new z(0),feeAmount:new z(0)},a=e.gte(t),u=i.gte(be);if(u){let l=U.mulDivFloor(i,xn.sub(new z(o.toString())),xn);s.amountIn=a?Q.getTokenAmountAFromLiquidity(t,e,n,!0):Q.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=v.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?Q.getTokenAmountBFromLiquidity(t,e,n,!1):Q.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(ot).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=v.getNextSqrtPriceX64FromOutput(e,n,i.mul(ot),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=Q.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=Q.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:Q.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:Q.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(ot))&&(s.amountOut=i.mul(ot)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=U.mulDivCeil(s.amountIn,new z(o),xn.sub(new z(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var we=60,kt=512,M=class{static getTickArrayAddressByTick(e,t,n,i){let o=M.getTickArrayStartIndexByTick(n,i),{publicKey:s}=Y(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>=we)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=Z.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)*Z.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*we,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*we,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*we:e+t*we}static mergeTickArrayBitmap(e){let t=new gs(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*we));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,kt,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=M.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=Y(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=Z.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=Z.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Se||e>Ke}static nextInitTick(e,t,n,i,o){if(Z.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<we;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=we-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<we;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let 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 K(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new K(1).div(t),o=At.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 K(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 K(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new K(1).div(t),o=At.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 K(1).div(a)}}};var cr=J([Oe(8),ie("bump"),Gt("index"),$(""),rt("protocolFeeRate"),rt("tradeFeeRate"),Gt("tickSpacing"),ue(R(),8,"")]),ys=J([rt("blockTimestamp"),Gi("tickCumulative"),ue(R(),4)]),ur=J([Oe(8),Ce("initialized"),R("recentEpoch"),Gt("observationIndex"),$("poolId"),ue(ys,100,"observations"),ue(R(),4)]),ws=J([ie("rewardState"),R("openTime"),R("endTime"),R("lastUpdateTime"),j("emissionsPerSecondX64"),R("rewardTotalEmissioned"),R("rewardClaimed"),$("tokenMint"),$("tokenVault"),$("creator"),j("rewardGrowthGlobalX64")]),In=J([Oe(8),ie("bump"),$("ammConfig"),$("creator"),$("mintA"),$("mintB"),$("vaultA"),$("vaultB"),$("observationId"),ie("mintDecimalsA"),ie("mintDecimalsB"),Gt("tickSpacing"),j("liquidity"),j("sqrtPriceX64"),se("tickCurrent"),rt(),j("feeGrowthGlobalX64A"),j("feeGrowthGlobalX64B"),R("protocolFeesTokenA"),R("protocolFeesTokenB"),j("swapInAmountTokenA"),j("swapOutAmountTokenB"),j("swapInAmountTokenB"),j("swapOutAmountTokenA"),ie("status"),ue(ie(),7,""),ue(ws,3,"rewardInfos"),ue(R(),16,"tickArrayBitmap"),R("totalFeesTokenA"),R("totalFeesClaimedTokenA"),R("totalFeesTokenB"),R("totalFeesClaimedTokenB"),R("fundFeesTokenA"),R("fundFeesTokenB"),R("startTime"),ue(R(),15*4-3,"padding")]),ks=J([j("growthInsideLastX64"),R("rewardAmountOwed")]),$t=J([Oe(8),ie("bump"),$("nftMint"),$("poolId"),se("tickLower"),se("tickUpper"),j("liquidity"),j("feeGrowthInsideLastX64A"),j("feeGrowthInsideLastX64B"),R("tokenFeesOwedA"),R("tokenFeesOwedB"),ue(ks,3,"rewardInfos"),ue(R(),8,"")]),Ed=J([Oe(8),ie("bump"),$("poolId"),se("tickLowerIndex"),se("tickUpperIndex"),j("liquidity"),j("feeGrowthInsideLastX64A"),j("feeGrowthInsideLastX64B"),R("tokenFeesOwedA"),R("tokenFeesOwedB"),ue(j(),3,"rewardGrowthInside"),ue(R(),8,"")]),hs=J([se("tick"),Xi("liquidityNet"),j("liquidityGross"),j("feeGrowthOutsideX64A"),j("feeGrowthOutsideX64B"),ue(j(),3,"rewardGrowthsOutsideX64"),ue(rt(),13,"")]),Qt=J([Oe(8),$("poolId"),se("startTickIndex"),ue(hs,we,"ticks"),ie("initializedTickCount"),ue(ie(),115,"")]),lr=J([Oe(329),ue($(),100,"whitelistMints")]),ar=J([Oe(8),$("poolId"),ue(ue(R(),8),ri,"positiveTickArrayBitmap"),ue(ue(R(),8),ri,"negativeTickArrayBitmap")]),_d=J([R(),ie("bump"),$("owner"),$("poolId"),$("positionId"),$("nftAccount"),ue(R(),8)]),Od=J([Oe(8),ie("bump"),$("lockOwner"),$("poolId"),$("positionId"),$("nftAccount"),$("lockNftMint"),R("recentEpoch"),ue(R(),8)]);ur.span;var mr=Ae("CobaltX_Clmm"),ve={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]},dr=[188,37,179,131,82,150,84,73],pr=[16,72,250,198,14,162,212,19],ce=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,d,m,p,g){let f=J([j("sqrtPriceX64"),R("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:at.programId,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},b);let w=Buffer.from([...ve.createPool,...b]);return new Be({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 N(i.address),new N(o.address)],{publicKey:d}=tr(t,s,c,l),{publicKey:m}=ir(t,d),{publicKey:p}=ni(t,d,c),{publicKey:g}=ni(t,d,l),f=ge(t,d).publicKey,y=[this.createPoolInstruction(t,d,n,s,m,c,p,new N(i.programId||te),l,g,new N(o.programId||te),f,a,u)];return{signers:[],instructions:y,instructionTypes:[de.CreateAccount,de.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,P,B,I,_){let S=J([se("tickLowerIndex"),se("tickUpperIndex"),se("tickArrayLowerStartIndex"),se("tickArrayUpperStartIndex"),j("liquidity"),R("amountMaxA"),R("amountMaxB"),Ce("withMetadata"),ie("optionBaseFlag"),Ce("baseFlag")]),C=[..._?[{pubkey:_,isSigner:!1,isWritable:!0}]:[]],D=[{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:pt,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1},{pubkey:te,isSigner:!1,isWritable:!1},{pubkey:en,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:pe,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...C],O=Buffer.alloc(S.span);S.encode({tickLowerIndex:w,tickUpperIndex:k,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:T,liquidity:h,amountMaxA:P,amountMaxB:B,withMetadata:I==="create",baseFlag:!1,optionBaseFlag:0},O);let X=Buffer.from([...ve.openPosition,...O]);return new Be({keys:D,programId:e,data:X})}static openPositionFromLiquidityInstruction22(e,t,n,i,o,s,a,u,c,l,d,m,p,g,f,y,b,w,k,A,T,h,P,B,I){let _=J([se("tickLowerIndex"),se("tickUpperIndex"),se("tickArrayLowerStartIndex"),se("tickArrayUpperStartIndex"),j("liquidity"),R("amountMaxA"),R("amountMaxB"),Ce("withMetadata"),ie("optionBaseFlag"),Ce("baseFlag")]),S=[...I?[{pubkey:I,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:pt,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1},{pubkey:te,isSigner:!1,isWritable:!1},{pubkey:en,isSigner:!1,isWritable:!1},{pubkey:pe,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...S],D=Buffer.alloc(_.span);_.encode({tickLowerIndex:b,tickUpperIndex:w,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:A,liquidity:T,amountMaxA:h,amountMaxB:P,withMetadata:B==="create",baseFlag:!1,optionBaseFlag:0},D);let O=Buffer.from([...ve.openPositionWithTokenEx,...D]);return new Be({keys:C,programId:e,data:O})}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 N(e.programId),new N(e.id)],f;if(l)f=new N((await l(1))[0]);else{let I=Nn.generate();m.push(I),f=I.publicKey}let y=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=Y(p,g,y),{publicKey:k}=Y(p,g,b),{publicKey:A}=d?oe(n.wallet,f,pe):oe(n.wallet,f,te),{publicKey:T}=zt(f),{publicKey:h}=Le(p,f),{publicKey:P}=He(p,g,i,o),B=d?this.openPositionFromLiquidityInstruction22(p,n.feePayer,g,n.wallet,f,A,P,w,k,h,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),i,o,y,b,s,a,u,c,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ge(p,g).publicKey:void 0):this.openPositionFromLiquidityInstruction(p,n.feePayer,g,n.wallet,f,A,T,P,w,k,h,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),i,o,y,b,s,a,u,c,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ge(p,g).publicKey:void 0);return{signers:m,instructions:[B],instructionTypes:[de.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:f,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:P}}}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 N(e.programId),new N(e.id)],f;if(l)f=new N((await l(1))[0]);else{let I=Nn.generate();m.push(I),f=I.publicKey}let y=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=Y(p,g,y),{publicKey:k}=Y(p,g,b),{publicKey:A}=d?oe(n.wallet,f,pe):oe(n.wallet,f,te),{publicKey:T}=zt(f),{publicKey:h}=Le(p,f),{publicKey:P}=He(p,g,i,o),B=d?this.openPositionFromBaseInstruction22(p,n.feePayer,g,n.wallet,f,A,P,w,k,h,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),i,o,y,b,c,s,a,u,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ge(p,g).publicKey:void 0):this.openPositionFromBaseInstruction(p,n.feePayer,g,n.wallet,f,A,T,P,w,k,h,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),i,o,y,b,c,s,a,u,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ge(p,g).publicKey:void 0);return{address:{nftMint:f,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:P},instructions:[B],signers:m,instructionTypes:[de.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,P,B,I,_){let S=J([se("tickLowerIndex"),se("tickUpperIndex"),se("tickArrayLowerStartIndex"),se("tickArrayUpperStartIndex"),j("liquidity"),R("amountMaxA"),R("amountMaxB"),Ce("withMetadata"),ie("optionBaseFlag"),Ce("baseFlag")]),C=[..._?[{pubkey:_,isSigner:!1,isWritable:!0}]:[]],D=[{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:pt,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1},{pubkey:te,isSigner:!1,isWritable:!1},{pubkey:en,isSigner:!1,isWritable:!1},{pubkey:yt,isSigner:!1,isWritable:!1},{pubkey:pe,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...C],O=Buffer.alloc(S.span);S.encode({tickLowerIndex:w,tickUpperIndex:k,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:T,liquidity:new ai(0),amountMaxA:P==="MintA"?B:I,amountMaxB:P==="MintA"?I:B,withMetadata:h==="create",baseFlag:P==="MintA",optionBaseFlag:1},O);let X=Buffer.from([...ve.openPosition,...O]);return new Be({keys:D,programId:e,data:X})}static openPositionFromBaseInstruction22(e,t,n,i,o,s,a,u,c,l,d,m,p,g,f,y,b,w,k,A,T,h,P,B,I){let _=J([se("tickLowerIndex"),se("tickUpperIndex"),se("tickArrayLowerStartIndex"),se("tickArrayUpperStartIndex"),j("liquidity"),R("amountMaxA"),R("amountMaxB"),Ce("withMetadata"),ie("optionBaseFlag"),Ce("baseFlag")]),S=[...I?[{pubkey:I,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:pt,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1},{pubkey:te,isSigner:!1,isWritable:!1},{pubkey:en,isSigner:!1,isWritable:!1},{pubkey:pe,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...S],D=Buffer.alloc(_.span);_.encode({tickLowerIndex:b,tickUpperIndex:w,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:A,liquidity:new ai(0),amountMaxA:h==="MintA"?P:B,amountMaxB:h==="MintA"?B:P,withMetadata:T==="create",baseFlag:h==="MintA",optionBaseFlag:1},D);let O=Buffer.from([...ve.openPositionWithTokenEx,...D]);return new Be({keys:C,programId:e,data:O})}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 N((await l(1))[0]);else{let I=Nn.generate();p.push(I),m=I.publicKey}let[g,f]=[new N(e.programId),new N(e.id)],y=M.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=M.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=Y(g,f,y),{publicKey:k}=Y(g,f,b),{publicKey:A}=d?oe(n.wallet,m,pe):oe(n.wallet,m,te),{publicKey:T}=zt(m),{publicKey:h}=Le(g,m),{publicKey:P}=He(g,f,i,o),B=d?this.openPositionFromLiquidityInstruction22(g,n.wallet,f,n.wallet,m,A,P,w,k,h,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(t.mintA.address),new N(t.mintB.address),i,o,y,b,s,a,u,c,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ge(g,f).publicKey:void 0):this.openPositionFromLiquidityInstruction(g,n.wallet,f,n.wallet,m,A,T,P,w,k,h,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(t.mintA.address),new N(t.mintB.address),i,o,y,b,s,a,u,c,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ge(g,f).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:w,tickArrayUpper:k,positionNftAccount:A,metadataAccount:T,personalPosition:h,protocolPosition:P},instructions:[B],signers:p,instructionTypes:[de.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o,s){let a=J([]),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:at.programId,isSigner:!1,isWritable:!1},{pubkey:s?pe:te,isSigner:!1,isWritable:!1}],c=Buffer.alloc(a.span);a.encode({},c);let l=Buffer.from([...ve.closePosition,...c]);return new Be({keys:u,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i,nft2022:o}){let s=new N(e.programId),a=o?oe(n.wallet,i.nftMint,pe).publicKey:oe(n.wallet,i.nftMint,te).publicKey,{publicKey:u}=Le(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:[de.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=J([j("liquidity"),R("amountMaxA"),R("amountMaxB"),ie("optionBaseFlag"),Ce("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:te,isSigner:!1,isWritable:!1},{pubkey:pe,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 P=Buffer.from([...ve.increaseLiquidity,...h]);return new Be({keys:T,programId:e,data:P})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a,nft2022:u}){let[c,l]=[new N(e.programId),new N(e.id)],d=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Y(c,l,d),{publicKey:g}=Y(c,l,m),{publicKey:f}=u?oe(i.wallet,n.nftMint,pe):oe(i.wallet,n.nftMint,te),{publicKey:y}=Le(c,n.nftMint),{publicKey:b}=He(c,l,n.tickLower,n.tickUpper),w=this.increasePositionFromLiquidityInstruction(c,i.wallet,f,y,l,b,p,g,i.tokenAccountA,i.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),o,s,a,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,m])?ge(c,l).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:y,protocolPosition:b},signers:[],instructions:[w],instructionTypes:[de.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 N(e.programId),new N(e.id)],d=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Y(c,l,d),{publicKey:g}=Y(c,l,m),{publicKey:f}=u?oe(i.wallet,n.nftMint,pe):oe(i.wallet,n.nftMint,te),{publicKey:y}=Le(c,n.nftMint),{publicKey:b}=He(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 N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),o,s,a,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,m])?ge(c,l).publicKey:void 0)],signers:[],instructionTypes:[de.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=J([j("liquidity"),R("amountMaxA"),R("amountMaxB"),ie("optionBaseFlag"),Ce("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:te,isSigner:!1,isWritable:!1},{pubkey:pe,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 ai(0),amountMaxA:f==="MintA"?y:b,amountMaxB:f==="MintA"?b:y,baseFlag:f==="MintA",optionBaseFlag:1},h);let P=Buffer.from([...ve.increaseLiquidity,...h]);return new Be({keys:T,programId:e,data:P})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,d,m,p,g,f,y,b,w,k){let A=J([j("liquidity"),R("amountMinA"),R("amountMinB")]),T=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...f.map(I=>[{pubkey:I.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:I.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:I.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:te,isSigner:!1,isWritable:!1},{pubkey:pe,isSigner:!1,isWritable:!1},{pubkey:bn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...T],P=Buffer.alloc(A.span);A.encode({liquidity:y,amountMinA:b,amountMinB:w},P);let B=Buffer.from([...ve.decreaseLiquidity,...P]);return new Be({keys:h,programId:e,data:B})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u,nft2022:c}){let[l,d]=[new N(e.programId),new N(e.id)],m=M.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=M.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:g}=Y(l,d,m),{publicKey:f}=Y(l,d,p),{publicKey:y}=c?oe(i.wallet,n.nftMint,pe):oe(i.wallet,n.nftMint,u),{publicKey:b}=Le(l,n.nftMint),{publicKey:w}=He(l,d,n.tickLower,n.tickUpper),k=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)k.push({poolRewardVault:new N(t.rewardInfos[h].vault),ownerRewardVault:i.rewardAccounts[h],rewardMint:new N(e.rewardDefaultInfos[h].mint.address)});let A=[],T=this.decreaseLiquidityInstruction(l,i.wallet,y,b,d,w,g,f,i.tokenAccountA,i.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),k,o,s,a,le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?ge(l,d).publicKey:void 0);return A.push(T),{address:{tickArrayLower:g,tickArrayUpper:f,positionNftAccount:y,personalPosition:b,protocolPosition:w},signers:[],instructions:A,instructionTypes:[de.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=J([R("amount"),R("otherAmountThreshold"),j("sqrtPriceLimitX64"),Ce("isBaseInput")]),k=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...d.map(P=>({pubkey:P,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:te,isSigner:!1,isWritable:!1},{pubkey:pe,isSigner:!1,isWritable:!1},{pubkey:bn,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([...ve.swap,...T]);return new Be({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 N(e.programId),new N(e.id)],[m,p]=[new N(t.vault.A),new N(t.vault.B)],[g,f]=[new N(e.mintA.address),new N(e.mintB.address)],y=e.mintA.address===o.toString(),b=[this.swapInstruction(l,i.wallet,d,new N(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,ge(l,d).publicKey)];return{signers:[],instructions:b,instructionTypes:[de.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 N(e.programId),new N(e.id)],[m,p]=[new N(t.vault.A),new N(t.vault.B)],[g,f]=[new N(e.mintA.address),new N(e.mintB.address)],y=e.mintA.address===o.toBase58(),b=[this.swapInstruction(l,i.wallet,d,new N(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,ge(l,d).publicKey)];return{signers:[],instructions:b,instructionTypes:[de.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,d,m){let p=J([R("openTime"),R("endTime"),j("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:at.programId,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:ke(l),endTime:ke(d),emissionsPerSecondX64:m},f);let y=Buffer.from([...ve.initReward,...f]);return new Be({keys:g,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new N(e.programId),new N(e.id)],a=nr(o,s,i.mint).publicKey,u=jt(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new N(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:[de.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,d,m){let p=J([ie("rewardIndex"),j("emissionsPerSecondX64"),R("openTime"),R("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:te,isSigner:!1,isWritable:!1},{pubkey:pe,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:ke(l),endTime:ke(d)},f);let y=Buffer.from([...ve.setRewardEmissions,...f]);return new Be({keys:g,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new N(e.programId),new N(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 N(t.rewardInfos[m].vault),c=new N(t.rewardInfos[m].mint.address));(a===void 0||u===void 0)&&mr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=jt(o).publicKey,d=[this.setRewardInstruction(o,n.wallet,s,l,new N(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:d,instructionTypes:[de.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=J([ie("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:te,isSigner:!1,isWritable:!1},{pubkey:pe,isSigner:!1,isWritable:!1},{pubkey:bn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let d=Buffer.from([...ve.collectReward,...l]);return new Be({keys:c,programId:e,data:d})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new N(e.programId),new N(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new N(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&mr.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:[de.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 N((await u(1))[0]);else{let b=Nn.generate();c.push(b),l=b.publicKey}let d=a?oe(o,s,pe).publicKey:oe(o,s,te).publicKey,{publicKey:m}=Le(n,s),p=Yt(e,l).publicKey,g=oe(o,l,te).publicKey,f=zt(l).publicKey,y=ce.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:oe(t,s,a?pe:te).publicKey,positionNftProgram:a?pe:te});return{address:{positionId:m,lockPositionId:p,lockNftAccount:g,lockNftMint:l,positionNftAccount:d,metadataAccount:f},instructions:[y],signers:c,instructionTypes:[de.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:yt,isSigner:!1,isWritable:!1},{pubkey:en,isSigner:!1,isWritable:!1},{pubkey:pt,isSigner:!1,isWritable:!1},{pubkey:te,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1}],b=J([Ce("withMetadata")]),w=Buffer.alloc(b.span);b.encode({withMetadata:f},w);let k=Buffer.from([...dr,...w]);return new Be({keys:y,programId:e,data:k})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:i,positionNft:o}){let{publicKey:s}=oe(i,o,te),{publicKey:a}=Le(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:ii(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:te,isSigner:!1,isWritable:!1},{pubkey:at.programId,isSigner:!1,isWritable:!1}];return new Be({keys:u,programId:e,data:Buffer.from(dr)})}static harvestLockPositionInstruction(e){let[t,n]=[new N(e.poolKeys.programId),new N(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}=Y(t,n,i),{publicKey:a}=Y(t,n,o),{publicKey:u}=oe(e.owner,e.ownerPosition.nftMint,te),{publicKey:c}=Le(t,e.ownerPosition.nftMint),{publicKey:l}=He(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),d=[];for(let g=0;g<e.poolKeys.rewardInfos.length;g++)d.push({poolRewardVault:new N(e.poolKeys.rewardInfos[g].vault),ownerRewardVault:e.ownerRewardAccounts[g],rewardMint:new N(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:ii(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 N(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new N(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:te,isSigner:!1,isWritable:!1},{pubkey:pe,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:new N(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new N(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...m];return new Be({keys:p,programId:e.programId,data:Buffer.from(pr)})}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(B=>[{pubkey:B.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:B.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:B.rewardMint,isSigner:!1,isWritable:!1}]).flat()],P=[{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:te,isSigner:!1,isWritable:!1},{pubkey:pe,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 Be({keys:P,programId:e,data:Buffer.from(pr)})}};var br=class extends qt{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)||L.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 Re(new L(o.address).toBuffer()).gt(new Re(new L(s.address).toBuffer()))?[s,o,new K(1).div(u)]:[o,s,u],w=v.priceToSqrtPriceX64(b,f.decimals,y.decimals),k=await ce.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,...Qi},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===re(this.network).WSOLMint.toBase58(),T=i.useSOLBalance&&t.mintB.address===re(this.network).WSOLMint.toBase58(),[h,P]=a==="MintA"?[u,c]:[c,u],{account:B,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new L(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});B&&(w=B),b.addInstruction(I||{});let{account:_,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new L(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T||P.isZero()?{payer:this.scope.ownerPubKey,amount:P}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:T?!1:d,checkCreateATAOwner:m});_&&(k=_),b.addInstruction(S||{}),(!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),D=await ce.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",D),b.addInstruction(D),b.addCustomComputeBudget(f),b.versionBuild({txVersion:y,extInfo:{...D.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===re(this.network).WSOLMint.toBase58(),T=i.useSOLBalance&&t.mintB.address===re(this.network).WSOLMint.toBase58(),{account:h,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new L(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(P||{});let{account:B,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new L(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});B&&(k=B),b.addInstruction(I||{}),(w===void 0||k===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let _=n||await this.getClmmPoolKeys(t.id),S=await ce.openPositionFromLiquidityInstructions({poolInfo:t,poolKeys:_,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(S),b.addCustomComputeBudget(g),b.versionBuild({txVersion:p,extInfo:{address:S.address}})}async increasePositionFromLiquidity(t){var I;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===re(this.network).WSOLMint.toBase58(),w=c.useSOLBalance&&n.mintB.address===re(this.network).WSOLMint.toBase58(),{account:k,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintA.programId,mint:new L(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 L(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 P=i!=null?i:await this.getClmmPoolKeys(n.id),B=ce.increasePositionFromLiquidityInstructions({poolInfo:n,poolKeys:P,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:y},liquidity:u,amountMaxA:s,amountMaxB:a,nft2022:(I=await this.scope.connection.getAccountInfo(o.nftMint))==null?void 0:I.owner.equals(St)});return g.addInstruction(B),g.addCustomComputeBudget(m),g.versionBuild({txVersion:p,extInfo:{address:B.address}})}async increasePositionFromBase(t){var B;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===re(this.network).WSOLMint.toBase58(),b=u.useSOLBalance&&n.mintB.address===re(this.network).WSOLMint.toBase58(),{account:w,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintA.programId,mint:new L(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 L(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),P=ce.increasePositionFromBaseInstructions({poolInfo:n,poolKeys:h,ownerPosition:i,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:f},base:o,baseAmount:s,otherAmountMax:a,nft2022:(B=await this.scope.connection.getAccountInfo(i.nftMint))==null?void 0:B.owner.equals(St)});return p.addInstruction(P),p.addCustomComputeBudget(d),p.versionBuild({txVersion:m,extInfo:{address:P.address}})}async decreaseLiquidity(t){var D;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===re(this.network).WSOLMint.toBase58(),b=s.useSOLBalance&&n.mintB.address===re(this.network).WSOLMint.toBase58(),w,k,{account:A,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintA.programId,mint:new L(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:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintB.programId,mint:new L(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,P&&f.addInstruction(P);let B=[];for(let O of n.rewardDefaultInfos){let X=s.useSOLBalance&&O.mint.address===Ie(this.network).address.toString(),G;if(O.mint.address===n.mintA.address)G=w;else if(O.mint.address===n.mintB.address)G=k;else{let{account:Ve,instructionParams:Ee}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L(O.mint.programId),mint:new L(O.mint.address),notUseTokenAccount:X,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!X,associatedOnly:X?!1:l,checkCreateATAOwner:d});G=Ve,Ee&&f.addInstruction(Ee)}B.push(G)}!w&&!k&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=i!=null?i:await this.getClmmPoolKeys(n.id),_=(D=await this.scope.connection.getAccountInfo(o.nftMint))==null?void 0:D.owner.equals(St),S=await ce.decreaseLiquidityInstructions({poolInfo:n,poolKeys:I,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:w,tokenAccountB:k,rewardAccounts:B},liquidity:c,amountMinA:a,amountMinB:u,nft2022:_});f.addInstruction({instructions:S.instructions,instructionTypes:[de.ClmmDecreasePosition]});let C={...S.address};if(s.closePosition){let O=await ce.closePositionInstructions({poolInfo:n,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:o,nft2022:_});f.addInstruction({endInstructions:O.instructions,endInstructionTypes:O.instructionTypes}),C={...C,...O.address}}return f.addCustomComputeBudget(m),f.versionBuild({txVersion:p,extInfo:{address:C}})}async lockPosition(t){var p;let{programId:n=Dt,authProgramId:i=wn,poolProgramId:o=Ot(this.network),ownerPosition:s,payer:a,computeBudgetConfig:u,txVersion:c,getEphemeralSigners:l}=t,d=this.createTxBuilder(),m=await ce.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(St)});return d.addInstruction(m),d.addCustomComputeBudget(u),d.versionBuild({txVersion:c,extInfo:m.address})}async harvestLockPosition(t){let{programId:n=Dt,authProgramId:i=wn,clmmProgram:o=Ot(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=$t.decode(f.data),b=u.useSOLBalance&&p.mintA.address===re(this.network).WSOLMint.toBase58(),w=u.useSOLBalance&&p.mintB.address===re(this.network).WSOLMint.toBase58(),k,A,{account:T,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintA.programId,mint:new L(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:P,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintB.programId,mint:new L(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=P,B&&g.addInstruction(B);let I={},_=[];for(let _e of p.rewardInfos){let Cn=u.useSOLBalance&&_e.mint.address===Ie(this.network).address.toString(),nn=I[_e.mint.address];if(!nn){let{account:gr,instructionParams:ci}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L(_e.mint.programId),mint:new L(_e.mint.address),notUseTokenAccount:Cn,owner:this.scope.ownerPubKey,skipCloseAccount:!Cn,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:Cn?!1:c});nn=gr,ci&&g.addInstruction(ci)}I[_e.mint.address]=nn,_.push(nn)}let S=Yt(n,a.lockNftMint).publicKey,C=oe(this.scope.ownerPubKey,a.lockNftMint,tn).publicKey,D=M.getTickArrayStartIndexByTick(y.tickLower,p.config.tickSpacing),O=M.getTickArrayStartIndexByTick(y.tickUpper,p.config.tickSpacing),{publicKey:X}=Y(new L(p.programId),a.poolId,D),{publicKey:G}=Y(new L(p.programId),a.poolId,O),{publicKey:Ve}=He(new L(p.programId),a.poolId,y.tickLower,y.tickUpper),Ee=[];for(let _e=0;_e<p.rewardInfos.length;_e++)Ee.push({poolRewardVault:new L(p.rewardInfos[_e].vault),ownerRewardVault:_[_e],rewardMint:new L(p.rewardInfos[_e].mint.address)});let It=await ce.harvestLockPositionInstructionV2({programId:n,auth:i,lockPositionId:S,clmmProgram:o,lockOwner:this.scope.ownerPubKey,lockNftMint:a.lockNftMint,lockNftAccount:C,positionNftAccount:a.nftAccount,positionId:a.positionId,poolId:a.poolId,protocolPosition:Ve,vaultA:new L(p.vault.A),vaultB:new L(p.vault.B),tickArrayLower:X,tickArrayUpper:G,userVaultA:k,userVaultB:A,mintA:new L(p.mintA.address),mintB:new L(p.mintB.address),rewardAccounts:Ee,exTickArrayBitmap:ge(o,a.poolId).publicKey});return g.addInstruction({instructions:[It],instructionTypes:[de.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=ce.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(St)});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()===Ie(this.network).address.toString(),d=i.perSecond.mul(i.endTime-i.openTime),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L(i.mint.address),mint:new L(i.mint.address),notUseTokenAccount:!!l,skipCloseAccount:!l,owner:this.scope.ownerPubKey,createInfo:l?{payer:n.feePayer||this.scope.ownerPubKey,amount:new Re(new K(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=ce.initRewardInstructions({poolInfo:t,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new L(i.mint.programId),mint:new L(i.mint.address),openTime:i.openTime,endTime:i.endTime,emissionsPerSecondX64:U.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===Ie(this.network).address.toString(),g=m.perSecond.mul(m.endTime-m.openTime),{account:f,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L(m.mint.programId),mint:new L(m.mint.address),notUseTokenAccount:!!p,skipCloseAccount:!p,owner:this.scope.ownerPubKey,createInfo:p?{payer:i.feePayer||this.scope.ownerPubKey,amount:new Re(new K(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=ce.initRewardInstructions({poolInfo:t,poolKeys:b,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:f},rewardInfo:{programId:new L(m.mint.programId),mint:new L(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:U.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(re(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 Re(new K(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=ce.setRewardInstructions({poolInfo:t,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:i.mint,openTime:i.openTime,endTime:i.endTime,emissionsPerSecondX64:U.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===Ie(this.network).address.toString(),{account:g,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L(m.mint.programId),mint:new L(m.mint.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:p?{payer:i.feePayer||this.scope.ownerPubKey,amount:new Re(new K(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=ce.setRewardInstructions({poolInfo:t,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:g},rewardInfo:{mint:new L(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:U.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(re(this.network).WSOLMint),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L(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=ce.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(re(this.network).WSOLMint),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L(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=ce.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===re(this.network).WSOLMint.toBase58(),w=c.useSOLBalance&&t.mintB.address===re(this.network).WSOLMint.toBase58(),k;!a||a.equals(new K(0))?k=y?Ze.add(new Re(1)):Qe.sub(new Re(1)):k=v.priceToSqrtPriceX64(a,t.mintA.decimals,t.mintB.decimals);let A;if(!A){let{account:P,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new L(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=P,B&&f.addInstruction(B)}let T;if(!T){let{account:P,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new L(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=P,B&&f.addInstruction(B)}(!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(ce.makeSwapBaseInInstructions({poolInfo:t,poolKeys:h,observationId:u,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:A,tokenAccountB:T},inputMint:new L(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===re(this.network).WSOLMint.toBase58(),w=c.useSOLBalance&&t.mintB.address===re(this.network).WSOLMint.toBase58(),k;!a||a.equals(new K(0))?k=i.toString()===t.mintB.address?Ze.add(new Re(1)):Qe.sub(new Re(1)):k=v.priceToSqrtPriceX64(a,t.mintA.decimals,t.mintB.decimals);let A;if(!A){let{account:P,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new L(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=P,B&&f.addInstruction(B)}let T;if(!T){let{account:P,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new L(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=P,B&&f.addInstruction(B)}(!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(ce.makeSwapBaseOutInstructions({poolInfo:t,poolKeys:h,observationId:u,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:A,tokenAccountB:T},outputMint:new L(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?oe(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 et(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(S=>!S.liquidity.isZero()||S.rewardInfos.find(C=>!C.rewardAmountOwed.isZero())))continue;let k=w,A=o.useSOLBalance&&k.mintA.address===re(this.network).WSOLMint.toBase58(),T=o.useSOLBalance&&k.mintB.address===re(this.network).WSOLMint.toBase58(),h=d[k.mintA.address];if(!h){let{account:S,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.mintA.programId,mint:new L(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=S,C&&f.addInstruction(C)}let P=d[k.mintB.address];if(!P){let{account:S,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.mintB.programId,mint:new L(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});P=S,C&&f.addInstruction(C)}d[k.mintA.address]=h,d[k.mintB.address]=P;let B=[];for(let S of k.rewardDefaultInfos){let C=o.useSOLBalance&&S.mint.address===Ie(this.network).address.toString(),D=d[S.mint.address];if(!D){let{account:O,instructionParams:X}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L(S.mint.programId),mint:new L(S.mint.address),notUseTokenAccount:C,owner:this.scope.ownerPubKey,skipCloseAccount:!C,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:C?!1:s});D=O,X&&f.addInstruction(X)}d[S.mint.address]=D,B.push(D)}let I=await this.getClmmPoolKeys(k.id),_=[];for(let S=0;S<I.rewardInfos.length;S++)_.push({poolRewardVault:new L(I.rewardInfos[S].vault),ownerRewardVault:B[S],rewardMint:new L(I.rewardInfos[S].mint.address)});for(let S of n[w.id]){let C=(y=i==null?void 0:i[w.id])==null?void 0:y[S.nftMint.toBase58()];if(C){let D=oe(this.scope.ownerPubKey,C.lockNftMint,tn).publicKey,O=M.getTickArrayStartIndexByTick(S.tickLower,I.config.tickSpacing),X=M.getTickArrayStartIndexByTick(S.tickUpper,I.config.tickSpacing),{publicKey:G}=Y(new L(I.programId),C.poolId,O),{publicKey:Ve}=Y(new L(I.programId),C.poolId,X),{publicKey:Ee}=He(new L(I.programId),C.poolId,S.tickLower,S.tickUpper),It=Yt(Dt,C.lockNftMint).publicKey,_e=ce.harvestLockPositionInstructionV2({programId:Dt,auth:wn,lockPositionId:It,clmmProgram:Ot(this.network),lockOwner:this.scope.ownerPubKey,lockNftMint:C.lockNftMint,lockNftAccount:D,positionNftAccount:C.nftAccount,positionId:C.positionId,poolId:C.poolId,protocolPosition:Ee,vaultA:new L(I.vault.A),vaultB:new L(I.vault.B),tickArrayLower:G,tickArrayUpper:Ve,userVaultA:h,userVaultB:P,mintA:new L(I.mintA.address),mintB:new L(I.mintB.address),rewardAccounts:_,exTickArrayBitmap:ge(Ot(this.network),C.poolId).publicKey});f.addInstruction({instructions:[_e],instructionTypes:[de.ClmmHarvestLockPosition],lookupTableAddress:I.lookupTableAccount?[I.lookupTableAccount]:[]})}else{let D=ce.decreaseLiquidityInstructions({poolInfo:k,poolKeys:I,ownerPosition:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:h,tokenAccountB:P,rewardAccounts:B},liquidity:new Re(0),amountMinA:new Re(0),amountMinB:new Re(0),nft2022:(b=g[S.nftMint.toBase58()])==null?void 0:b.equals(St)});f.addInstruction(D)}}}return c===0?f.sizeCheckBuildV0({computeBudgetConfig:l}):f.sizeCheckBuild({computeBudgetConfig:l})}async getWhiteListMint({programId:t}){let n=await this.scope.connection.getAccountInfo(jt(t).publicKey);return n?lr.decode(n.data).whitelistMints.filter(o=>!o.equals(L.default)):[]}async getOwnerPositionInfo({programId:t}){await this.scope.account.fetchWalletTokenAccounts();let i=this.scope.account.tokenAccountRawInfos.filter(a=>a.accountInfo.amount.eq(new Re(1))).map(a=>Le(new L(t),a.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(i),s=[];return o.forEach(a=>{if(!a)return;let u=$t.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 et(this.scope.connection,t.map(s=>({pubkey:new L(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=In.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 et(this.scope.connection,Array.from(i).map(c=>({pubkey:new L(c)}))),s={};o.forEach(c=>{!c.accountInfo||(s[c.pubkey.toBase58()]=cr.decode(c.accountInfo.data))});let a=await le.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:Pn({address:l,decimals:t[c].mintDecimalsA,programId:n[l].programId.toBase58()||tn.toBase58(),extensions:{feeConfig:(m=n[l])!=null&&m.feeConfig?Jn((p=n[l])==null?void 0:p.feeConfig):void 0},network:this.network}),mintB:Pn({address:d,decimals:t[c].mintDecimalsB,programId:n[d].programId.toBase58()||tn.toBase58(),extensions:{feeConfig:(g=n[d])!=null&&g.feeConfig?Jn((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 le.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 di({connection:this.scope.connection,mints:Array.from(i).map(m=>new L(m)),network:this.network}),{computeClmmPoolInfo:s,computePoolTickData:a}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[t]:n},mintInfos:o}),u=await et(this.scope.connection,[{pubkey:n.vaultA},{pubkey:n.vaultB}]),c=sr(s[t]);if(!u[0].accountInfo||!u[1].accountInfo)throw new Error("pool vault data not found");c.mintAmountA=Number(fr.decode(u[0].accountInfo.data).amount.toString()),c.mintAmountB=Number(fr.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(L.default)).map(m=>({mint:Pn({address:m.tokenMint.toBase58(),programId:tn.toBase58(),decimals:10,network:this.network}),vault:m.tokenVault.toBase58()}))};return{poolInfo:c,poolKeys:l,computePoolInfo:s[t],tickData:a}}};export{br as 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.mjs.map