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