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