UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 130 kB
var Ki=Object.defineProperty,Ci=Object.defineProperties;var Li=Object.getOwnPropertyDescriptors;var Cn=Object.getOwnPropertySymbols;var Ri=Object.prototype.hasOwnProperty,Mi=Object.prototype.propertyIsEnumerable;var Ln=(i,e,t)=>e in i?Ki(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,$=(i,e)=>{for(var t in e||(e={}))Ri.call(e,t)&&Ln(i,t,e[t]);if(Cn)for(var t of Cn(e))Mi.call(e,t)&&Ln(i,t,e[t]);return i},se=(i,e)=>Ci(i,Li(e));import{Keypair as zt,PublicKey as P,SystemProgram as Ze,TransactionInstruction as Pe}from"@solana/web3.js";import Nn from"bn.js";import{PublicKey as _i}from"@solana/web3.js";import{get as Rn,set as Ei}from"lodash";var Yt=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}},Mn={},Fi={};function Be(i){let e=Rn(Mn,i);if(!e){let t=Rn(Fi,i);e=new Yt({name:i,logLevel:t}),Ei(Mn,i,e)}return e}import{MINT_SIZE as Ro,TOKEN_PROGRAM_ID as Mo,getTransferFeeConfig as Eo,unpackMint as Fo}from"@solana/spl-token";var jt=Be("Raydium_accountInfo_util");async function Ye(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=$({batchRequest:!1},t),s=Jt(e,o),a=new Array(s.length).fill([]);if(n){let u=s.map(m=>{let d=i._buildArgs([m.map(f=>f.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),c=Jt(u,10);a=(await(await Promise.all(c.map(async m=>await i._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&jt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:f,executable:b,lamports:p,owner:y,rentEpoch:g}=d;return f.length!==2&&f[1]!=="base64"&&jt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(f[0],"base64"),executable:b,lamports:p,owner:new _i(y),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(u=>i.getMultipleAccountsInfo(u,r)))}catch(u){u instanceof Error&&jt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function Qt(i,e,t){let n=await Ye(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>se($({},r),{accountInfo:n[o]}))}import Xe from"bn.js";var mt=9e15,$e=1e9,en="0123456789abcdef",Rt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Mt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",tn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-mt,maxE:mt,crypto:!1},vn,Ge,M=!0,Ft="[DecimalError] ",Qe=Ft+"Invalid argument: ",Wn=Ft+"Precision limit exceeded",Dn=Ft+"crypto unavailable",On="[object Decimal]",Te=Math.floor,fe=Math.pow,vi=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Wi=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Di=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,qn=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ve=1e7,R=7,Oi=9007199254740991,qi=Rt.length-1,nn=Mt.length-1,h={toStringTag:On};h.absoluteValue=h.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),S(i)};h.ceil=function(){return S(new this.constructor(this),this.e+1,2)};h.clampedTo=h.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(Qe+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};h.comparedTo=h.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,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};h.cosine=h.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+R,n.rounding=1,t=Vi(n,Hn(n,t)),n.precision=i,n.rounding=e,S(Ge==2||Ge==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};h.cubeRoot=h.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(M=!1,o=l.s*fe(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=we(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=fe(t,1/3),i=Te((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=J(c.plus(l).times(a),c.plus(u),s+2,1),we(a.d).slice(0,s)===(t=we(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(S(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")&&(S(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return M=!0,S(n,i,m.rounding,e)};h.decimalPlaces=h.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-Te(this.e/R))*R,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};h.dividedBy=h.div=function(i){return J(this,new this.constructor(i))};h.dividedToIntegerBy=h.divToInt=function(i){var e=this,t=e.constructor;return S(J(e,new t(i),0,1,1),t.precision,t.rounding)};h.equals=h.eq=function(i){return this.cmp(i)===0};h.floor=function(){return S(new this.constructor(this),this.e+1,3)};h.greaterThan=h.gt=function(i){return this.cmp(i)>0};h.greaterThanOrEqualTo=h.gte=function(i){var e=this.cmp(i);return e==1||e===0};h.hyperbolicCosine=h.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/vt(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=dt(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 S(o,s.precision=t,s.rounding=n,!0)};h.hyperbolicSine=h.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=dt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/vt(5,i)),r=dt(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,S(r,e,t,!0)};h.hyperbolicTangent=h.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,J(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};h.inverseCosine=h.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()?_e(t,r,o):new t(0):new t(NaN):e.isZero()?_e(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=_e(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};h.inverseHyperbolicCosine=h.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,M=!1,t=t.times(t).minus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};h.inverseHyperbolicSine=h.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,M=!1,t=t.times(t).plus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln())};h.inverseHyperbolicTangent=h.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?S(new o(r),i,e,!0):(o.precision=t=n-r.e,r=J(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};h.inverseSine=h.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=_e(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};h.inverseTangent=h.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=nn)return s=_e(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=nn)return s=_e(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/R+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(M=!1,e=Math.ceil(a/R),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)),M=!0,S(s,l.precision=m,l.rounding=d,!0)};h.isFinite=function(){return!!this.d};h.isInteger=h.isInt=function(){return!!this.d&&Te(this.e/R)>this.d.length-2};h.isNaN=function(){return!this.s};h.isNegative=h.isNeg=function(){return this.s<0};h.isPositive=h.isPos=function(){return this.s>0};h.isZero=function(){return!!this.d&&this.d[0]===0};h.lessThan=h.lt=function(i){return this.cmp(i)<0};h.lessThanOrEqualTo=h.lte=function(i){return this.cmp(i)<1};h.logarithm=h.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,f=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(M=!1,a=m+f,s=Je(c,a),n=e?Et(l,a+10):Je(i,a),u=J(s,n,a,1),bt(u.d,r=m,d))do if(a+=10,s=Je(c,a),n=e?Et(l,a+10):Je(i,a),u=J(s,n,a,1),!o){+we(u.d).slice(r+1,r+15)+1==1e14&&(u=S(u,m+1,0));break}while(bt(u.d,r+=10,d));return M=!0,S(u,m,d)};h.minus=h.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,f=this,b=f.constructor;if(i=new b(i),!f.d||!i.d)return!f.s||!i.s?i=new b(NaN):f.d?i.s=-i.s:i=new b(i.d||f.s!==i.s?f:NaN),i;if(f.s!=i.s)return i.s=-i.s,f.plus(i);if(c=f.d,d=i.d,a=b.precision,u=b.rounding,!c[0]||!d[0]){if(d[0])i.s=-i.s;else if(c[0])i=new b(f);else return new b(u===3?-0:0);return M?S(i,a,u):i}if(t=Te(i.e/R),l=Te(f.e/R),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/R),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,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(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]=ve-1;--c[r],c[n]+=ve}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=_t(c,t),M?S(i,a,u):i):new b(u===3?-0:0)};h.modulo=h.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?S(new n(t),n.precision,n.rounding):(M=!1,n.modulo==9?(e=J(t,i.abs(),0,3,1),e.s*=i.s):e=J(t,i,0,n.modulo,1),e=e.times(i),M=!0,t.minus(e))};h.naturalExponential=h.exp=function(){return rn(this)};h.naturalLogarithm=h.ln=function(){return Je(this)};h.negated=h.neg=function(){var i=new this.constructor(this);return i.s=-i.s,S(i)};h.plus=h.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,d=m.constructor;if(i=new d(i),!m.d||!i.d)return!m.s||!i.s?i=new d(NaN):m.d||(i=new d(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(i=new d(m)),M?S(i,a,u):i;if(o=Te(m.e/R),n=Te(i.e/R),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/R),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)/ve|0,c[r]%=ve;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=_t(c,n),M?S(i,a,u):i};h.precision=h.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(Qe+i);return t.d?(e=Vn(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};h.round=function(){var i=this,e=i.constructor;return S(new e(i),i.e+1,e.rounding)};h.sine=h.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+R,n.rounding=1,t=Ui(n,Hn(n,t)),n.precision=i,n.rounding=e,S(Ge>2?t.neg():t,i,e,!0)):new n(NaN)};h.squareRoot=h.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,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(M=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=we(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Te((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(J(s,o,t+2,1)).times(.5),we(o.d).slice(0,t)===(e=we(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(S(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")&&(S(n,u+1,1),i=!n.times(n).eq(s));break}return M=!0,S(n,u,l.rounding,i)};h.tangent=h.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=J(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,S(Ge==2||Ge==4?t.neg():t,i,e,!0)):new n(NaN)};h.times=h.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,d=l.d,f=(i=new m(i)).d;if(i.s*=l.s,!d||!d[0]||!f||!f[0])return new m(!i.s||d&&!d[0]&&!f||f&&!f[0]&&!d?NaN:!d||!f?i.s/0:i.s*0);for(t=Te(l.e/R)+Te(i.e/R),u=d.length,c=f.length,u<c&&(o=d,d=f,f=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]+f[n]*d[r-n-1]+e,o[r--]=a%ve|0,e=a/ve|0;o[r]=(o[r]+e)%ve|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=_t(o,t),M?S(i,m.precision,m.rounding):i};h.toBinary=function(i,e){return sn(this,2,i,e)};h.toDecimalPlaces=h.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ke(i,0,$e),e===void 0?e=n.rounding:Ke(e,0,8),S(t,i+t.e+1,e))};h.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Oe(n,!0):(Ke(i,0,$e),e===void 0?e=r.rounding:Ke(e,0,8),n=S(new r(n),i+1,e),t=Oe(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};h.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=Oe(r):(Ke(i,0,$e),e===void 0?e=o.rounding:Ke(e,0,8),n=S(new o(r),i+r.e+1,e),t=Oe(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};h.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,f=this,b=f.d,p=f.constructor;if(!b)return new p(f);if(c=t=new p(1),n=u=new p(0),e=new p(n),o=e.e=Vn(b)-f.e-1,s=o%R,e.d[0]=fe(10,s<0?R+s:s),i==null)i=o>0?e:c;else{if(a=new p(i),!a.isInt()||a.lt(c))throw Error(Qe+a);i=a.gt(e)?o>0?e:c:a}for(M=!1,a=new p(we(b)),l=p.precision,p.precision=o=b.length*R*2;m=J(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=J(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=f.s,d=J(c,n,o,1).minus(f).abs().cmp(J(u,t,o,1).minus(f).abs())<1?[c,n]:[u,t],p.precision=l,M=!0,d};h.toHexadecimal=h.toHex=function(i,e){return sn(this,16,i,e)};h.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:Ke(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]?(M=!1,t=J(t,i,0,e,1).times(i),M=!0,S(t)):(i.s=t.s,t=i),t};h.toNumber=function(){return+this};h.toOctal=function(i,e){return sn(this,8,i,e)};h.toPower=h.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(fe(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return S(a,n,o);if(e=Te(i.e/R),e>=i.d.length-1&&(t=c<0?-c:c)<=Oi)return r=Gn(u,a,t,n),i.s<0?new u(1).div(r):S(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=fe(+a,c),e=t==0||!isFinite(t)?Te(c*(Math.log("0."+we(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):(M=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=rn(i.times(Je(a,n+t)),n),r.d&&(r=S(r,n+5,1),bt(r.d,n,o)&&(e=n+10,r=S(rn(i.times(Je(a,e+t)),e),e+5,1),+we(r.d).slice(n+1,n+15)+1==1e14&&(r=S(r,n+1,0)))),r.s=s,M=!0,u.rounding=o,S(r,n,o))};h.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Oe(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ke(i,1,$e),e===void 0?e=r.rounding:Ke(e,0,8),n=S(new r(n),i,e),t=Oe(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};h.toSignificantDigits=h.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Ke(i,1,$e),e===void 0?e=n.rounding:Ke(e,0,8)),S(new n(t),i,e)};h.toString=function(){var i=this,e=i.constructor,t=Oe(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};h.truncated=h.trunc=function(){return S(new this.constructor(this),this.e+1,1)};h.valueOf=h.toJSON=function(){var i=this,e=i.constructor,t=Oe(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function we(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=R-n.length,t&&(o+=je(t)),o+=n;s=i[e],n=s+"",t=R-n.length,t&&(o+=je(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ke(i,e,t){if(i!==~~i||i<e||i>t)throw Error(Qe+i)}function bt(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=R,r=0):(r=Math.ceil((e+1)/R),e%=R),o=fe(10,R-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)==fe(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)==fe(10,e-3)-1,s}function Lt(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]+=en.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 Vi(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/vt(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=dt(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 J=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,m,d,f,b,p,y,g,T,w,A,N,k,K,L,_,G,E,ce,Q=n.constructor,be=n.s==r.s?1:-1,oe=n.d,Z=r.d;if(!oe||!oe[0]||!Z||!Z[0])return new Q(!n.s||!r.s||(oe?Z&&oe[0]==Z[0]:!Z)?NaN:oe&&oe[0]==0||!Z?be*0:be/0);for(u?(f=1,l=n.e-r.e):(u=ve,f=R,l=Te(n.e/f)-Te(r.e/f)),E=Z.length,_=oe.length,g=new Q(be),T=g.d=[],m=0;Z[m]==(oe[m]||0);m++);if(Z[m]>(oe[m]||0)&&l--,o==null?(k=o=Q.precision,s=Q.rounding):a?k=o+(n.e-r.e)+1:k=o,k<0)T.push(1),b=!0;else{if(k=k/f+2|0,m=0,E==1){for(d=0,Z=Z[0],k++;(m<_||d)&&k--;m++)K=d*u+(oe[m]||0),T[m]=K/Z|0,d=K%Z|0;b=d||m<_}else{for(d=u/(Z[0]+1)|0,d>1&&(Z=i(Z,d,u),oe=i(oe,d,u),E=Z.length,_=oe.length),L=E,w=oe.slice(0,E),A=w.length;A<E;)w[A++]=0;ce=Z.slice(),ce.unshift(0),G=Z[0],Z[1]>=u/2&&++G;do d=0,c=e(Z,w,E,A),c<0?(N=w[0],E!=A&&(N=N*u+(w[1]||0)),d=N/G|0,d>1?(d>=u&&(d=u-1),p=i(Z,d,u),y=p.length,A=w.length,c=e(p,w,y,A),c==1&&(d--,t(p,E<y?ce:Z,y,u))):(d==0&&(c=d=1),p=Z.slice()),y=p.length,y<A&&p.unshift(0),t(w,p,A,u),c==-1&&(A=w.length,c=e(Z,w,E,A),c<1&&(d++,t(w,E<A?ce:Z,A,u))),A=w.length):c===0&&(d++,w=[0]),T[m++]=d,c&&w[0]?w[A++]=oe[L]||0:(w=[oe[L]],A=1);while((L++<_||w[0]!==void 0)&&k--);b=w[0]!==void 0}T[0]||T.shift()}if(f==1)g.e=l,vn=b;else{for(m=1,d=T[0];d>=10;d/=10)m++;g.e=m+l*f-1,S(g,a?o+g.e+1:o,s,b)}return g}}();function S(i,e,t,n){var r,o,s,a,u,c,l,m,d,f=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=R,s=e,l=m[d=0],u=l/fe(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/R),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,r=1,o%=R,s=o-R+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;o%=R,s=o-R+r,u=s<0?0:l/fe(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%fe(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/fe(10,r-s):0:m[d-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=fe(10,(R-e%R)%R),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=fe(10,R-o),m[d]=s>0?(l/fe(10,r-s)%fe(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==ve&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=ve)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return M&&(i.e>f.maxE?(i.d=null,i.e=NaN):i.e<f.minE&&(i.e=0,i.d=[0])),i}function Oe(i,e,t){if(!i.isFinite())return Xn(i);var n,r=i.e,o=we(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+je(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+je(-r-1)+o,t&&(n=t-s)>0&&(o+=je(n))):r>=s?(o+=je(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+je(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=je(n))),o}function _t(i,e){var t=i[0];for(e*=R;t>=10;t/=10)e++;return e}function Et(i,e,t){if(e>qi)throw M=!0,t&&(i.precision=t),Error(Wn);return S(new i(Rt),e,1,!0)}function _e(i,e,t){if(e>nn)throw Error(Wn);return S(new i(Mt),e,t,!0)}function Vn(i){var e=i.length-1,t=e*R+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 je(i){for(var e="";i--;)e+="0";return e}function Gn(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/R+4);for(M=!1;;){if(t%2&&(o=o.times(e),Fn(o.d,s)&&(r=!0)),t=Te(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Fn(e.d,s)}return M=!0,o}function En(i){return i.d[i.d.length-1]&1}function Un(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 rn(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,d=i.constructor,f=d.rounding,b=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?(M=!1,u=b):u=e,a=new d(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(fe(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=S(o.times(i),u,1),t=t.times(++l),a=s.plus(J(o,t,u,1)),we(a.d).slice(0,u)===we(s.d).slice(0,u)){for(r=m;r--;)s=S(s.times(s),u,1);if(e==null)if(c<3&&bt(s.d,u-n,f,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return S(s,d.precision=b,f,M=!0);else return d.precision=b,s}s=a}}function Je(i,e){var t,n,r,o,s,a,u,c,l,m,d,f=1,b=10,p=i,y=p.d,g=p.constructor,T=g.rounding,w=g.precision;if(p.s<0||!y||!y[0]||!p.e&&y[0]==1&&y.length==1)return new g(y&&!y[0]?-1/0:p.s!=1?NaN:y?0:p);if(e==null?(M=!1,l=w):l=e,g.precision=l+=b,t=we(y),n=t.charAt(0),Math.abs(o=p.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)p=p.times(i),t=we(p.d),n=t.charAt(0),f++;o=p.e,n>1?(p=new g("0."+t),o++):p=new g(n+"."+t.slice(1))}else return c=Et(g,l+2,w).times(o+""),p=Je(new g(n+"."+t.slice(1)),l-b).plus(c),g.precision=w,e==null?S(p,w,T,M=!0):p;for(m=p,u=s=p=J(p.minus(1),p.plus(1),l,1),d=S(p.times(p),l,1),r=3;;){if(s=S(s.times(d),l,1),c=u.plus(J(s,new g(r),l,1)),we(c.d).slice(0,l)===we(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Et(g,l+2,w).times(o+""))),u=J(u,new g(f),l,1),e==null)if(bt(u.d,l-b,T,a))g.precision=l+=b,c=s=p=J(m.minus(1),m.plus(1),l,1),d=S(p.times(p),l,1),r=a=1;else return S(u,g.precision=w,T,M=!0);else return g.precision=w,u;u=c,r+=2}}function Xn(i){return String(i.s*i.s/0)}function on(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)%R,t<0&&(n+=R),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=R;n<r;)i.d.push(+e.slice(n,n+=R));e=e.slice(n),n=R-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),M&&(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 Gi(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),qn.test(e))return on(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(Wi.test(e))t=16,e=e.toLowerCase();else if(vi.test(e))t=2;else if(Di.test(e))t=8;else throw Error(Qe+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=Gn(n,new n(t),o,o*2)),c=Lt(e,t,ve),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=_t(c,l),i.d=c,M=!1,s&&(i=J(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?fe(2,u):gt.pow(2,u))),M=!0,i)}function Ui(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:dt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/vt(5,t)),e=dt(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 dt(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/R);for(M=!1,u=t.times(t),a=new i(n);;){if(s=J(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=J(s.times(u),new i(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return M=!0,s.d.length=m+1,s}function vt(i,e){for(var t=i;--e;)t*=i;return t}function Hn(i,e){var t,n=e.s<0,r=_e(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return Ge=n?4:1,e;if(t=e.divToInt(r),t.isZero())Ge=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return Ge=En(t)?n?2:3:n?4:1,e;Ge=En(t)?n?1:4:n?3:2}return e.minus(r).abs()}function sn(i,e,t,n){var r,o,s,a,u,c,l,m,d,f=i.constructor,b=t!==void 0;if(b?(Ke(t,1,$e),n===void 0?n=f.rounding:Ke(n,0,8)):(t=f.precision,n=f.rounding),!i.isFinite())l=Xn(i);else{for(l=Oe(i),s=l.indexOf("."),b?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new f(1),d.e=l.length-s,d.d=Lt(Oe(d),10,r),d.e=d.d.length),m=Lt(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=b?"0p+0":"0";else{if(s<0?o--:(i=new f(i),i.d=m,i.e=o,i=J(i,d,t,n,0,r),m=i.d,o=i.e,c=vn),s=m[t],a=r/2,c=c||m[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&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=en.charAt(m[s]);if(b){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Lt(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=en.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>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 Fn(i,e){if(i.length>e)return i.length=e,!0}function Xi(i){return new this(i).abs()}function Hi(i){return new this(i).acos()}function zi(i){return new this(i).acosh()}function Zi(i,e){return new this(i).plus(e)}function Yi(i){return new this(i).asin()}function ji(i){return new this(i).asinh()}function Ji(i){return new this(i).atan()}function Qi(i){return new this(i).atanh()}function $i(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=_e(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?_e(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=_e(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(J(i,e,o,1)),e=_e(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(J(i,e,o,1)),t}function er(i){return new this(i).cbrt()}function tr(i){return S(i=new this(i),i.e+1,2)}function nr(i,e,t){return new this(i).clamp(e,t)}function ir(i){if(!i||typeof i!="object")throw Error(Ft+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,$e,"rounding",0,8,"toExpNeg",-mt,0,"toExpPos",0,mt,"maxE",0,mt,"minE",-mt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=tn[t]),(n=i[t])!==void 0)if(Te(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Qe+t+": "+n);if(t="crypto",r&&(this[t]=tn[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(Dn);else this[t]=!1;else throw Error(Qe+t+": "+n);return this}function rr(i){return new this(i).cos()}function or(i){return new this(i).cosh()}function zn(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,_n(o)){c.s=o.s,M?!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++;M?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 on(c,o.toString())}else if(u!=="string")throw Error(Qe+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),qn.test(o)?on(c,o):Gi(c,o)}if(r.prototype=h,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=ir,r.clone=zn,r.isDecimal=_n,r.abs=Xi,r.acos=Hi,r.acosh=zi,r.add=Zi,r.asin=Yi,r.asinh=ji,r.atan=Ji,r.atanh=Qi,r.atan2=$i,r.cbrt=er,r.ceil=tr,r.clamp=nr,r.cos=rr,r.cosh=or,r.div=sr,r.exp=ar,r.floor=ur,r.hypot=cr,r.ln=lr,r.log=mr,r.log10=fr,r.log2=dr,r.max=pr,r.min=br,r.mod=gr,r.mul=yr,r.pow=hr,r.random=wr,r.round=kr,r.sign=Pr,r.sin=Tr,r.sinh=Ar,r.sqrt=xr,r.sub=Br,r.sum=Sr,r.tan=Ir,r.tanh=Nr,r.trunc=Kr,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 sr(i,e){return new this(i).div(e)}function ar(i){return new this(i).exp()}function ur(i){return S(i=new this(i),i.e+1,3)}function cr(){var i,e,t=new this(0);for(M=!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 M=!0,new this(1/0);t=e}return M=!0,t.sqrt()}function _n(i){return i instanceof gt||i&&i.toStringTag===On||!1}function lr(i){return new this(i).ln()}function mr(i,e){return new this(i).log(e)}function dr(i){return new this(i).log(2)}function fr(i){return new this(i).log(10)}function pr(){return Un(this,arguments,"lt")}function br(){return Un(this,arguments,"gt")}function gr(i,e){return new this(i).mod(e)}function yr(i,e){return new this(i).mul(e)}function hr(i,e){return new this(i).pow(e)}function wr(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ke(i,1,$e),n=Math.ceil(i/R),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(Dn);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=R,n&&i&&(r=fe(10,R-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-=R)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<R&&(t-=R-n)}return s.e=t,s.d=a,s}function kr(i){return S(i=new this(i),i.e+1,this.rounding)}function Pr(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Tr(i){return new this(i).sin()}function Ar(i){return new this(i).sinh()}function xr(i){return new this(i).sqrt()}function Br(i,e){return new this(i).sub(e)}function Sr(){var i=0,e=arguments,t=new this(e[i]);for(M=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return M=!0,S(t,this.precision,this.rounding)}function Ir(i){return new this(i).tan()}function Nr(i){return new this(i).tanh()}function Kr(i){return S(i=new this(i),i.e+1,1)}h[Symbol.for("nodejs.util.inspect.custom")]=h.toString;h[Symbol.toStringTag]="Decimal";var gt=h.constructor=zn(tn);Rt=new gt(Rt);Mt=new gt(Mt);var B=gt;import vr from"big.js";import Ot from"bn.js";import Cr from"toformat";var Lr=Cr,yt=Lr;import Dt from"big.js";import Mr from"bn.js";import Er from"decimal.js-light";import ht from"bn.js";var Zn=9007199254740991;function ge(i){let e=Be("Raydium_parseBigNumberish");if(i instanceof ht)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new ht(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Zn||i<=-Zn)&&e.logWithError(`BigNumberish number overflow: ${i}`),new ht(String(i))):typeof i=="bigint"?new ht(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new ht(0))}var Wt=Be("module/fraction"),an=yt(Dt),wt=yt(Er),Fr={[0]:wt.ROUND_DOWN,[1]:wt.ROUND_HALF_UP,[2]:wt.ROUND_UP},_r={[0]:Dt.roundDown,[1]:Dt.roundHalfUp,[2]:Dt.roundUp},X=class{constructor(e,t=new Mr(1)){this.numerator=ge(e),this.denominator=ge(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new X(this.denominator,this.numerator)}add(e){let t=e instanceof X?e:new X(ge(e));return this.denominator.eq(t.denominator)?new X(this.numerator.add(t.numerator),this.denominator):new X(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof X?e:new X(ge(e));return this.denominator.eq(t.denominator)?new X(this.numerator.sub(t.numerator),this.denominator):new X(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof X?e:new X(ge(e));return new X(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof X?e:new X(ge(e));return new X(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Wt.logWithError(`${e} is not an integer.`),e<=0&&Wt.logWithError(`${e} is not positive.`),wt.set({precision:e+1,rounding:Fr[n]});let r=new wt(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)||Wt.logWithError(`${e} is not an integer.`),e<0&&Wt.logWithError(`${e} is negative.`),an.DP=e,an.RM=_r[n]||1,new an(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Wr=Be("Raydium_amount"),Yn=yt(vr);function Dr(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")):Wr.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var Ae=class extends X{constructor(t,n,r=!0,o){let s=new Ot(0),a=un.pow(new Ot(t.decimals));if(r)s=ge(n);else{let u=new Ot(0),c=new Ot(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Dr(n.toString(),t.decimals);u=ge(l),c=ge(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=Be(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 Ae(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ae(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 Yn.DP=this.token.decimals,new Yn(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Or}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as jn}from"@solana/spl-token";var Jn={chainId:101,address:Or.default.toBase58(),programId:jn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},rt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:jn.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 dn}from"@solana/web3.js";import{PublicKey as ne,SystemProgram as Qn,SYSVAR_RENT_PUBKEY as qr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Vr}from"@solana/spl-token";function cn({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var ps=[cn({pubkey:Vr,isWritable:!1}),cn({pubkey:Qn.programId,isWritable:!1}),cn({pubkey:qr,isWritable:!1})];function ln({publicKey:i,transformSol:e}){let t=$n(i.toString());if(t instanceof ne)return e&&t.equals(kt)?$t:t;if(e&&t.toString()===kt.toBase58())return $t;if(typeof t=="string"){if(t===ne.default.toBase58())return ne.default;try{return new ne(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function $n(i){try{return new ne(i)}catch{return i}}var qt=new ne("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),mn=new ne("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),et=new ne("SysvarRent111111111111111111111111111111111"),bs=new ne("SysvarC1ock11111111111111111111111111111111"),ot=new ne("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),gs=new ne("Sysvar1nstructions1111111111111111111111111"),ys=Qn.programId,hs=new ne("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ws=new ne("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ks=new ne("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ps=new ne("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ts=new ne("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),As=new ne("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),xs=new ne("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Bs=new ne("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ss=new ne("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Is=new ne("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ns=new ne("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),$t=new ne("So11111111111111111111111111111111111111112"),kt=ne.default;function Ct(i){return ln({publicKey:i,transformSol:!0})}var fn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===kt.toBase58()||e instanceof dn&&kt.equals(e)){this.decimals=rt.decimals,this.symbol=rt.symbol,this.name=rt.name,this.mint=new dn(rt.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?dn.default:ln({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ue=fn;Ue.WSOL=new fn(se($({},rt),{mint:rt.address}));var pn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Vt=pn;Vt.SOL=new pn(Jn);import Gr from"bn.js";var ei=new X(new Gr(100)),tt=class extends X{toSignificant(e=5,t,n){return this.mul(ei).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(ei).toFixed(e,t,n)}};var Ur=Be("Raydium_price"),We=class extends X{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new X(bn(n.decimals),bn(r.decimals))}get raw(){return new X(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new We({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Ur.logWithError("mul token not equals");let n=super.mul(t);return new We({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 Xr=new Xe(0),ya=new Xe(1),ha=new Xe(2),wa=new Xe(3),ka=new Xe(5),un=new Xe(10),Pa=new Xe(100),Ta=new Xe(1e3),Aa=new Xe(1e4);function bn(i){return un.pow(ge(i))}function Jt(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 zr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zr}from"@solana/spl-token";import{ComputeBudgetProgram as La,Keypair as Ea,PublicKey as Hr,Transaction as _a,TransactionMessage as Wa,VersionedTransaction as Da}from"@solana/web3.js";var ye={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 Ga}from"@solana/spl-token";var Ua=Be("Raydium_txUtil");function Se(i,e){let[t,n]=Hr.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function me(i,e,t){return Se([i.toBuffer(),(t!=null?t:Zr).toBuffer(),e.toBuffer()],new zr("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as C}from"@solana/web3.js";var Ja=new C("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Qa=new C("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),$a=new C("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),eu=new C("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),tu=new C("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),nu=new C("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),iu=new C("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ru=new C("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),ou=new C("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),su=new C("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),au=new C("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),uu=new C("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),cu=new C("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),lu=new C("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),mu=new C("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),du=new C("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),fu=new C("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),pu=new C("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),bu=new C("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),gu=new C("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),yu=new C("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),hu=new C("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),wu=new C("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ku=new C("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Pu=new C("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Tu=new C("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Au=new C("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),xu=new C("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Bu=new C("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Su=new C("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Iu=new C("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Nu={OPEN_BOOK_PROGRAM:new C("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new C("Ray1111111111111111111111111111111111111111"),AMM_V4:new C("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new C("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new C("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new C("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new C("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new C("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new C("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new C("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new C("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new C("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:C.default,Router:new C("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new C("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new C("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new C("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new C("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new C("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new C("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new C("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new C("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new C("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new C("Ray1111111111111111111111111111111111111111")};import De from"bn.js";var Pt=1e4;function le(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=se($({},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 De(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===Pt){let u=new De(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=gn(i.mul(new De(Pt)),new De(Pt-o.transferFeeBasisPoints)),c=new De(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=gn(l.mul(new De(o.transferFeeBasisPoints)),new De(Pt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=gn(i.mul(new De(o.transferFeeBasisPoints)),new De(Pt)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function nt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function gn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new De(0))?t.add(new De(1)):t}import{PublicKey as Eu,AddressLookupTableAccount as Fu}from"@solana/web3.js";import{PublicKey as Qu,sendAndConfirmTransaction as $u,SystemProgram as nc,Transaction as ic,TransactionMessage as oc,VersionedTransaction as sc}from"@solana/web3.js";import uc from"axios";import{PublicKey as bc}from"@solana/web3.js";import yc from"bn.js";import Yr from"bn.js";var Tc=new Yr(1e6);import{ASSOCIATED_TOKEN_PROGRAM_ID as Kt,TOKEN_2022_PROGRAM_ID as ue,TOKEN_PROGRAM_ID as Y}from"@solana/spl-token";import{PublicKey as ro}from"@solana/web3.js";import ri,{isBN as oi}from"bn.js";import{bits as Uc,BitStructure as Xc,blob as jr,Blob as Hc,cstr as zc,f32 as Zc,f32be as Yc,f64 as jc,f64be as Jc,greedy as Qc,Layout as Jr,ns64 as $c,ns64be as el,nu64 as tl,nu64be as nl,offset as il,s16 as rl,s16be as ol,s24 as sl,s24be as al,s32 as Qr,s32be as ul,s40 as cl,s40be as ll,s48 as ml,s48be as dl,s8 as fl,seq as $r,struct as pl,Structure as eo,u16 as to,u16be as bl,u24 as gl,u24be as yl,u32 as hl,u32be as wl,u40 as kl,u40be as Pl,u48 as Tl,u48be as Al,u8 as no,UInt as io,union as xl,Union as Bl,unionLayoutDiscriminator as Sl,utf8 as Il}from"@solana/buffer-layout";var yn=Jr,ti=eo;var hn=io;var ni=no,Tt=to;var ee=Qr;var ii=$r;var Ce=jr;var ft=class extends yn{constructor(t,n,r){super(t,r);this.blob=Ce(t),this.signed=n}decode(t,n=0){let r=new ri(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 ri(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function ae(i){return new hn(1,i)}function pt(i){return new hn(4,i)}function I(i){return new ft(8,!1,i)}function q(i){return new ft(16,!1,i)}function si(i){return new ft(8,!0,i)}function ai(i){return new ft(16,!0,i)}var Gt=class extends yn{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 j(i){return new Gt(Ce(32),e=>new ro(e),e=>e.toBuffer(),i)}function Ie(i){return new Gt(ni(),oo,so,i)}function oo(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function so(i){return i?1:0}var wn=class extends ti{decode(e,t){return super.decode(e,t)}};function H(i,e,t){return new wn(i,e,t)}function ie(i,e,t){let n,r=typeof e=="number"?e:oi(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=oi(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 ii(i,r,t)}import yo from"bn.js";import Fe from"bn.js";var re=new Fe(0),qe=new Fe(1),He=new Fe(-1),Le=new Fe(1).shln(64),Ut=new Fe(1).shln(128),kn=Le.sub(qe),At=64,ui=Ut.subn(1),xe=-443636,Ne=-xe,st=new Fe("4295048016"),at=new Fe("79226673521066979257578248091"),ql=new Fe("4295048017"),Vl=new Fe("79226673521066979257578248090"),ci=16,li="59543866431248",mi="184467440737095516",di="15793534762490258745",Xt=new Fe(10).pow(new Fe(6));var Gl=new Fe("18446744073700000000");import W from"bn.js";function Ht(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Pn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Tn(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function xt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function fi(i,e){return xt(i,e)?null:Pn(i,e)}function pi(i,e){return xt(i,e)?null:Tn(i,e)}var Yl=Buffer.from("amm_config","utf8"),ao=Buffer.from("pool","utf8"),uo=Buffer.from("pool_vault","utf8"),co=Buffer.from("pool_reward_vault","utf8"),bi=Buffer.from("position","utf8"),lo=Buffer.from("tick_array","utf8"),mo=Buffer.from("operation","utf8"),fo=Buffer.from("pool_tick_array_bitmap_extension","utf8"),po=Buffer.from("observation","utf8");function gi(i,e,t,n){return Se([ao,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function An(i,e,t){return Se([uo,e.toBuffer(),t.toBuffer()],i)}function yi(i,e,t){return Se([co,e.toBuffer(),t.toBuffer()],i)}function z(i,e,t){return Se([lo,e.toBuffer(),Ht(t)],i)}function it(i,e,t,n){return Se([bi,e.toBuffer(),Ht(t),Ht(n)],i)}function Re(i,e){return Se([bi,e.toBuffer()],i)}function Bt(i){return Se([Buffer.from("metadata","utf8"),ot.toBuffer(),i.toBuffer()],ot)}function xn(i){return Se([mo],i)}function ke(i,e){return Se([fo,e.toBuffer()],i)}function hi(i,e){return Se([po,e.toBuffer()],i)}var wi=Buffer.from("locked_position","utf8");function Bn(i,e){return Se([wi,e.toBuffer()],i)}function ki(i,e){return Se([wi,e.toBuffer()],i)}var jl=Buffer.from("support_mint","utf8");import{PublicKey as Me}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Pi}from"@solana/spl-token";import te from"bn.js";import Ve from"bn.js";var St=class{static getfeeGrowthInside(e,t,n){let r=new Ve(0),o=new Ve(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 Ve(0),a=new Ve(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=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=v.wrappingSubU128(v.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=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Le),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Le),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=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Le),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Le),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=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Le),d=c.rewardAmountOwed.add(m);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=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Le),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new Ve(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 Ve(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.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 Ve(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 Ve(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var y,g,T,w;let a=F.priceToSqrtPriceX64(new B(e.price),e.mintA.decimals,e.mintB.decimals),u=F.getSqrtPriceX64FromTick(t.tickLower),c=F.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=U.getAmountsFromLiquidity(a,u,c,n,o),[d,f]=[le(m.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),le(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[b,p]=[le(new Ve(new B(m.amountA.toString()).mul(l).toFixed(0)),(T=e.mintA.extensions)==null?void 0:T.feeConfig,s,!0),le(new Ve(new B(m.amountB.toString()).mul(l).toFixed(0)),(w=e.mintB.extensions)==null?void 0:w.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:f,amountSlippageA:b,amountSlippageB:p,expirationTime:nt(d.expirationTime,f.expirationTime)}}};var bo=15,V=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=x.getTickArrayStartIndexByTick(r,o),l=x.getInitializedTickArrayInRange(s,a,o,c,Math.floor(bo/2));for(let f=0;f<l.length;f++){let{publicKey:b}=z(t,n,l[f]);u.push(b)}let m=(await Ye(e,u)).map(f=>f!==null?It.decode(f.data):null),d={};for(let f=0;f<u.length;f++){let b=m[f];b!==null&&(d[b.startTickIndex]=se($({},b),{address:u[f]}))}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=x.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:m,tickArrayAddress:d,tickArrayStartTickIndex:f}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,f]}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/V.tickCount(t)),a=n?x.searchLowBitFromStart(r,o,s-1,1,t):x.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=pe-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<pe;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=z(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=x.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<pe;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=z(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(x.checkIsOutOfBoundary(e)){if(e>Ne)return!1;let n=x.getTickArrayStartIndexByTick(xe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return pe*e}};var Sn=14,ze=class{static maxTickInTickarrayBitmap(e){return e*pe*ut}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(!V.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-V.tickCount(n):t+V.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*pe,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=fi(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=pi(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-V.tickCount(n)}}}},Nt=class{static getBitmapOffset(e,t){if(!V.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=ze.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=ze.maxTickInTickarrayBitmap(e),n=-t;if(Ne<=t)throw Error(`extensionTickBoundary check error: ${Ne}, ${t}`);if(n<=xe)throw Error(`extensionTickBoundary check error: ${n}, ${xe}`);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:x.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=V.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}=ze.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=x.mergeTickArrayBitmap(e).shln(ut-1-a),c=xt(512,u)?null:Pn(512,u);if(c!==null){let l=t-c*V.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=x.mergeTickArrayBitmap(e).shrn(a),c=xt(512,u)?null:Tn(512,u);if(c!==null){let l=t+c*V.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-V.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%ze.maxTickInTickarrayBitmap(t),r=Math.floor(n/V.tickCount(t));return e<0&&n!=0&&(r=ut-r),r}};var de=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o,s=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!c||l===void 0||!m)throw new Error("Invalid tick array");u.push(m);let{allTrade:d,amountCalculated:f,accounts:b,sqrtPriceX64:p,feeAmount:y}=ct.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(...b),{allTrade:d,expectedAmountOut:f.mul(He),remainingAccounts:u,executionPrice:p,feeAmount:y}}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 p=this.preInitializedTickArrayStartIndex(e,s);if(p.isExist){let{publicKey:y}=z(e.programId,e.id,p.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:f,feeAmount:b}=ct.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(He),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:f,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=de.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Nt.checkTickArrayIsInit(V.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):x.checkTickArrayIsInitialized(x.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=z(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,V.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=z(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/V.tickCount(e.tickSpacing)),r=t?x.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):x.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=V.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=ze.nextInitializedTickArrayStartIndex(x.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Nt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<xe||t>Ne)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 m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let f=se($({},m),{perSecond:v.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Me(d)});if(f.tokenMint.equals(Me.default))continue;if(n<=f.openTime.toNumber()||r.eq(re)){s.push(f);continue}let b=new te(Math.min(f.endTime.toNumber(),n)),p=b.sub(f.lastUpdateTime),y=v.mulDivFloor(p,f.emissionsPerSecondX64,r),g=f.rewardGrowthGlobalX64.add(y),T=v.mulDivFloor(p,f.emissionsPerSecondX64,Le),w=f.rewardTotalEmissioned.add(T);s.push(se($({},f),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:w,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=x.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=ze.maxTickInTickarrayBitmap(e),n=-t;return t>Ne&&(t=V.getArrayStartIndex(Ne,e)+V.tickCount(e)),n<xe&&(n=V.getArrayStartIndex(xe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!V.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/V.tickCount(t)*ut}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()]=xi.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=x.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=x.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=z(u.programId,u.id,m);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=It.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=se($({},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 f of s)c.push(Re(f,d).publicKey);let l=await Ye(t,c,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let f=Ai.decode(d.data),b=f.poolId.toString(),p=e.find(L=>L.state.id.toBase58()===b);if(p===void 0)continue;let y=p.state,g=x._getTickPriceLegacy({poolInfo:y,tick:f.tickLower,baseIn:!0}),T=x._getTickPriceLegacy({poolInfo:y,tick:f.tickUpper,baseIn:!0}),{amountA:w,amountB:A}=U.getAmountsFromLiquidity(y.sqrtPriceX64,g.tickSqrtPriceX64,T.tickSqrtPriceX64,f.liquidity,!1),N=1/(1-Math.sqrt(Math.sqrt(g.price.div(T.price).toNumber())));p.positionAccount=[...(a=p.positionAccount)!=null?a:[],{poolId:f.poolId,nftMint:f.nftMint,priceLower:g.price,priceUpper:T.price,amountA:w,amountB:A,tickLower:f.tickLower,tickUpper:f.tickUpper,liquidity:f.liquidity,feeGrowthInsideLastX64A:f.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:f.feeGrowthInsideLastX64B,tokenFeesOwedA:f.tokenFeesOwedA,tokenFeesOwedB:f.tokenFeesOwedB,rewardInfos:f.rewardInfos.map(L=>se($({},L),{pendingReward:new te(0)})),leverage:N,tokenFeeAmountA:new te(0),tokenFeeAmountB:new te(0)}];let k=await x.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickLower,p.state.tickSpacing),K=await x.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickUpper,p.state.tickSpacing);m[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickLower}`]=k,m[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickUpper}`]=K}if(o){let d=Object.values(m),f=await Ye(t,d,{batchRequest:r}),b={};for(let p=0;p<d.length;p++){let y=f[p];if(y===null)continue;let g=d[p].toString();b[g]=It.decode(y.data)}for(let{state:p,positionAccount:y}of e)if(!!y)for(let g of y){let T=`${p.programId.toString()}-${p.id.toString()}-${g.tickLower}`,w=`${p.programId.toString()}-${p.id.toString()}-${g.tickUpper}`,A=b[m[T].toString()],N=b[m[w].toString()],k=A.ticks[x.getTickOffsetInArray(g.tickLower,p.tickSpacing)],K=N.ticks[x.getTickOffsetInArray(g.tickUpper,p.tickSpacing)],{tokenFeeAmountA:L,tokenFeeAmountB:_}=await St.GetPositionFees(p,g,k,K),G=await St.GetPositionRewards(p,g,k,K);g.tokenFeeAmountA=L.gte(new te(0))?L:new te(0),g.tokenFeeAmountB=_.gte(new te(0))?_:new te(0);for(let E=0;E<G.length;E++)g.rewardInfos[E].pendingReward=G[E].gte(new te(0))?G[E]:new te(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new B(0),catchLiquidityInsufficient:u=!1}){var ce;let c,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new B(0))?c=l?st.add(new te(1)):at.sub(new te(1)):c=F.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let f=le(o,m,r,!1),{allTrade:b,expectedAmountOut:p,remainingAccounts:y,executionPrice:g,feeAmount:T}=de.getOutputAmountAndRemainAccounts(e,t,n,f.amount.sub((ce=f.fee)!=null?ce:re),c,u),w=le(p,d,r,!1),A=F.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),N=l?A:new B(1).div(A),k=p.mul(new te(Math.floor((1-s)*1e10))).div(new te(1e10)),K=le(k,d,r,!1),L=l?e.currentPrice:new B(1).div(e.currentPrice),_=new B(N).sub(L).abs(),G=L,E=new tt(new B(_).mul(10**15).toFixed(0),new B(G).mul(10**15).toFixed(0));return{allTrade:b,realAmountIn:f,amountOut:w,minAmountOut:K,expirationTime:nt(f.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:N,priceImpact:E,fee:T,remainingAccounts:y,executionPriceX64:g}}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],[m,d]=[new Ue(se($({},c),{mint:c.address,isToken2022:c.programId===Pi.toBase58()})),new Ue(se($({},l),{mint:l.address,isToken2022:l.programId===Pi.toBase58()}))],{allTrade:f,realAmountIn:b,amountOut:p,minAmountOut:y,expirationTime:g,currentPrice:T,executionPrice:w,priceImpact:A,fee:N,remainingAccounts:k,executionPriceX64:K}=de.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Me(c.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),L=se($({},b),{amount:new Ae(m,b.amount),fee:b.fee===void 0?void 0:new Ae(m,b.fee)}),_=se($({},p),{amount:new Ae(d,p.amount),fee:p.fee===void 0?void 0:new Ae(d,p.fee)}),G=se($({},y),{amount:new Ae(d,y.amount),fee:y.fee===void 0?void 0:new Ae(d,y.fee)}),E=new We({baseToken:m,denominator:new te(10).pow(new te(20+m.decimals)),quoteToken:d,numerator:T.mul(new B(10**(20+d.decimals))).toFixed(0)}),ce=new We({baseToken:m,denominator:new te(10).pow(new te(20+m.decimals)),quoteToken:d,numerator:w.mul(new B(10**(20+d.decimals))).toFixed(0)}),Q=new Ae(m,N);return{allTrade:f,realAmountIn:L,amountOut:_,minAmountOut:G,expirationTime:g,currentPrice:E,executionPrice:ce,priceImpact:A,fee:Q,remainingAccounts:k,executionPriceX64:K}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountOut:o,slippage:s,priceLimit:a=new B(0)}){var G;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 B(0))?l=u?at.sub(new te(1)):st.add(new te(1)):l=F.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let m=le(o,c[n.toString()],r,!0),{expectedAmountIn:d,remainingAccounts:f,executionPrice:b,feeAmount:p}=de.getInputAmountAndRemainAccounts(e,t,n,m.amount.sub((G=m.fee)!=null?G:re),l),y=u?e.mintB.address:e.mintA.address,g=le(d,c[y],r,!1),T=F.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),w=u?T:new B(1).div(T),A=d.mul(new te(Math.floor((1+s)*1e10))).div(new te(1e10)),N=le(A,c[y],r,!0),k=u?e.currentPrice:new B(1).div(e.currentPrice),K=new B(w).sub(k).abs(),L=k,_=new tt(new B(K).mul(10**15).toFixed(0),new B(L).mul(10**15).toFixed(0));return{amountIn:g,maxAmountIn:N,realAmountOut:m,expirationTime:nt(g.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:w,priceImpact:_,fee:p,remainingAccounts:f}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var b,p,y;let o=e[t],s=x.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=x.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,f;return l<=0?f=0:m===l?f=d/l:d===l?f=l/m:f=l/d*(l/m),{feeApr:o.feeApr*f,rewardsApr:[((b=o.rewardApr[0])!=null?b:0)*f,((p=o.rewardApr[1])!=null?p:0)*f,((y=o.rewardApr[2])!=null?y:0)*f],apr:o.apr*f}}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],m=r[Ct(e.mintA.address).toString()],d=r[Ct(e.mintB.address).toString()],f=e.mintA.decimals,b=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let p=F.priceToSqrtPriceX64(new B(e.price),e.mintA.decimals,e.mintB.decimals),y=F.getSqrtPriceX64FromTick(s),g=F.getSqrtPriceX64FromTick(a),{amountSlippageA:T,amountSlippageB:w}=U.getAmountsFromLiquidityWithSlippage(p,y,g,t,!1,!1,0),{amountSlippageA:A,amountSlippageB:N}=U.getAmountsFromLiquidityWithSlippage(p,y,g,o,!1,!1,0),k=new B(T.toString()).div(new B(10).pow(f)).mul(m.value).add(new B(w.toString()).div(new B(10).pow(b)).mul(d.value)),K=new B(A.toString()).div(new B(10).pow(f)).mul(m.value).add(new B(N.toString()).div(new B(10).pow(b)).mul(d.value)),L=new B(1).div(k.add(K)),G=new B(l.volumeFee).mul(365).div(c).mul(L).mul(100).toNumber(),E=3600*24*365,ce=e.rewardDefaultInfos.map(Q=>{var Z,Kn;let be=Q.mint.decimals,oe=r[Q.mint.address];return u<((Z=Q.startTime)!=null?Z:0)||u>((Kn=Q.endTime)!=null?Kn:0)||!Q.perSecond||!oe||be===void 0?0:new B(oe.value).mul(new B(Q.perSecond).mul(E)).div(new B(10).pow(be)).mul(L).mul(100).toNumber()});return{feeApr:G,rewardsApr:ce,apr:G+ce.reduce((Q,be)=>Q+be,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,T;let l=F.priceToSqrtPriceX64(new B(e.price),e.mintA.decimals,e.mintB.decimals),m=F.getSqrtPriceX64FromTick(n),d=F.getSqrtPriceX64FromTick(r),f=le(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),b=new te(new B(f.amount.sub((T=f.fee)!=null?T:re).toString()).toFixed(0)),p;if(l.lte(m))p=t?U.getLiquidityFromTokenAmountA(m,d,b,!a):new te(0);else if(l.lte(d)){let w=U.getLiquidityFromTokenAmountA(l,d,b,!a),A=U.getLiquidityFromTokenAmountB(m,l,b);p=t?w:A}else p=t?new te(0):U.getLiquidityFromTokenAmountB(m,d,b);let y=await de.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:p,slippage:s,add:a});return{liquidity:p,amountA:t?f:y.amountA,amountB:t?y.amountB:f,amountSlippageA:t?f:y.amountSlippageA,amountSlippageB:t?y.amountSlippageB:f,expirationTime:y.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var y,g,T,w;let u=F.getSqrtPriceX64FromTick(n),c=F.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(F.priceToSqrtPriceX64(new B(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,f]=[le(m.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),le(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[b,p]=[le(m.amountA.muln(l),(T=t.mintA.extensions)==null?void 0:T.feeConfig,e,!0),le(m.amountB.muln(l),(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:f,amountSlippageA:b,amountSlippageB:p,expirationTime:nt(d.expirationTime,f.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(u=>!n[u.id]).map(u=>new Me(u.id));(await Ye(e,r)).forEach((u,c)=>{!u||(n[r[c].toBase58()]=Ti.decode(u.data))});let s=t.map(u=>ke(new Me(u.programId),new Me(u.id)).publicKey),a=await de.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>se($({},u),{[c.id]:se($({},n[c.id]),{id:new Me(c.id),version:6,programId:new Me(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:se($({},c.config),{id:new Me(c.config.id),fundOwner:""}),currentPrice:new B(c.price),exBitmapAccount:ke(new Me(c.programId),new Me(c.id)).publicKey,exBitmapInfo:a[ke(new Me(c.programId),new Me(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 v=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(re)||(o=o.add(qe)),o}static mulDivFloor(e,t,n){if(n.eq(re))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(re))throw new Error("division by 0");return e.mul(t).add(n.sub(qe)).div(n)}static x64ToDecimal(e,t){return new B(e.toString()).div(B.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new W(e.mul(B.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Ut).sub(t).mod(Ut)}};function he(i,e){return In(i.mul(e),64,256)}function go(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function In(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var F=class{static sqrtPriceX64ToPrice(e,t,n){return v.x64ToDecimal(e).pow(2).mul(B.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return v.decimalToX64(e.mul(B.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(re))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(re))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(re))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(re))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(re))return e;let o=t.shln(At);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?v.mulDivCeil(s,e,a):v.mulDivRoundingUp(s,qe,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 v.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(At);if(r)return e.add(o.div(t));{let s=v.mulDivRoundingUp(o,qe,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<xe||e>Ne)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new W("18445821805675395072"):new W("18446744073709551616");return(t&2)!=0&&(n=he(n,new W("18444899583751176192"))),(t&4)!=0&&(n=he(n,new W("18443055278223355904"))),(t&8)!=0&&(n=he(n,new W("18439367220385607680"))),(t&16)!=0&&(n=he(n,new W("18431993317065453568"))),(t&32)!=0&&(n=he(n,new W("18417254355718170624"))),(t&64)!=0&&(n=he(n,new W("18387811781193609216"))),(t&128)!=0&&(n=he(n,new W("18329067761203558400"))),(t&256)!=0&&(n=he(n,new W("18212142134806163456"))),(t&512)!=0&&(n=he(n,new W("17980523815641700352"))),(t&1024)!=0&&(n=he(n,new W("17526086738831433728"))),(t&2048)!=0&&(n=he(n,new W("16651378430235570176"))),(t&4096)!=0&&(n=he(n,new W("15030750278694412288"))),(t&8192)!=0&&(n=he(n,new W("12247334978884435968"))),(t&16384)!=0&&(n=he(n,new W("8131365268886854656"))),(t&32768)!=0&&(n=he(n,new W("3584323654725218816"))),(t&65536)!=0&&(n=he(n,new W("696457651848324352"))),(t&131072)!=0&&(n=he(n,new W("26294789957507116"))),(t&262144)!=0&&(n=he(n,new W("37481735321082"))),e>0&&(n=ui.div(n)),n}static getTickFromPrice(e,t,n){return F.getTickFromSqrtPriceX64(F.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(at)||e.lt(st))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new W(t-64),r=go(n,32,128),o=new W("8000000000000000","hex"),s=0,a=new W(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new W(0))&&s<ci;){u=u.mul(u);let b=u.shrn(127);u=u.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new W(li)),d=In(m.sub(new W(mi)),64,128).toNumber(),f=In(m.add(new W(di)),64,128).toNumber();return d==f?d:F.getSqrtPriceX64FromTick(f).lte(e)?f:d}},lt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=F.getTickFromSqrtPriceX64(F.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=lt.getTickWithPriceAndTickspacing(e,t,n,r),s=F.getSqrtPriceX64FromTick(o);return F.sqrtPriceX64ToPrice(s,n,r)}},U=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(re))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(At),s=t.sub(e);return r?v.mulDivRoundingUp(v.mulDivCeil(o,s,t),qe,e):v.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(re))throw new Error("sqrtPriceX64A must greater than 0");return r?v.mulDivCeil(n,t.sub(e),Le):v.mulDivFloor(n,t.sub(e),Le)}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?v.mulDivRoundingUp(a,qe,kn):a.shrn(At)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),v.mulDivFloor(n,kn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,r,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new W(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,r,o),a=U.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new W(0),amountB:U.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=U.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new W(new B(u.toString()).mul(l).toFixed(0)),d=new W(new B(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var T,w,A,N;let c=F.priceToSqrtPriceX64(new B(e.price),e.mintA.decimals,e.mintB.decimals),l=F.getSqrtPriceX64FromTick(t),m=F.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,f=U.getAmountsFromLiquidity(c,l,m,r,s),[b,p]=[le(f.amountA,(T=e.mintA.extensions)==null?void 0:T.feeConfig,a,u),le(f.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,u)],[y,g]=[le(new W(new B(f.amountA.toString()).mul(d).toFixed(0)),(A=e.mintA.extensions)==null?void 0:A.feeConfig,a,u),le(new W(new B(f.amountB.toString()).mul(d).toFixed(0)),(N=e.mintB.extensions)==null?void 0:N.feeConfig,a,u)];return{liquidity:r,amountA:b,amountB:p,amountSlippageA:y,amountSlippageB:g,expirationTime:nt(b.expirationTime,p.expirationTime)}}},ct=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p=!1){if(d.eq(re))throw new Error("amountSpecified must not be 0");if(b||(b=s?st.add(qe):at.sub(qe)),s){if(b.lt(st))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(at))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let y=d.gt(re),g={amountSpecifiedRemaining:d,amountCalculated:re,sqrtPriceX64:m,tick:c>f?Math.min(f+V.tickCount(l)-1,c):f,accounts:[],liquidity:u,feeAmount:new W(0)},T=f,w=n[f],A=0,N=!s&&w.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(re)&&!g.sqrtPriceX64.eq(b);){A>10;let k={};k.sqrtPriceStartX64=g.sqrtPriceX64;let K=x.nextInitTick(w,g.tick,l,s,N),L=K||null,_=null;if(!(L!=null&&L.liquidityGross.gtn(0))){let E=de.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},T,s);if(!E.isExist){if(p)return{allTrade:!1,amountSpecifiedRemaining:g.amountSpecifiedRemaining,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts};throw Error("swapCompute LiquidityInsufficient")}T=E.nextStartIndex;let{publicKey:ce}=z(e,t,T);_=ce,w=n[T];try{L=x.firstInitializedTick(w,s)}catch{throw Error("not found next tick info")}}k.tickNext=L.tick,k.initialized=L.liquidityGross.gtn(0),f!==T&&_&&(g.accounts.push(_),f=T),k.tickNext<xe?k.tickNext=xe:k.tickNext>Ne&&(k.tickNext=Ne),k.sqrtPriceNextX64=F.getSqrtPriceX64FromTick(k.tickNext);let G;if(s&&k.sqrtPriceNextX64.lt(b)||!s&&k.sqrtPriceNextX64.gt(b)?G=b:G=k.sqrtPriceNextX64,[g.sqrtPriceX64,k.amountIn,k.amountOut,k.feeAmount]=ct.swapStepCompute(g.sqrtPriceX64,G,g.liquidity,g.amountSpecifiedRemaining,a,s),g.feeAmount=g.feeAmount.add(k.feeAmount),y?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(k.amountIn.add(k.feeAmount)),g.amountCalculated=g.amountCalculated.sub(k.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(k.amountOut),g.amountCalculated=g.amountCalculated.add(k.amountIn.add(k.feeAmount))),g.sqrtPriceX64.eq(k.sqrtPriceNextX64)){if(k.initialized){let E=L.liquidityNet;s&&(E=E.mul(He)),g.liquidity=U.addDelta(g.liquidity,E)}N=k.tickNext!=g.tick&&!s&&w.startTickIndex===k.tickNext,g.tick=s?k.tickNext-1:k.tickNext}else if(g.sqrtPriceX64!=k.sqrtPriceStartX64){let E=F.getTickFromSqrtPriceX64(g.sqrtPriceX64);N=E!=g.tick&&!s&&w.startTickIndex===E,g.tick=E}++A}try{let{nextStartIndex:k,isExist:K}=V.nextInitializedTickArray(g.tick,l,s,r,o);K&&f!==k&&(g.accounts.push(z(e,t,k).publicKey),f=k)}catch{}return{allTrade:!0,amountSpecifiedRemaining:re,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,r,o,s){let a={sqrtPriceX64Next:new W(0),amountIn:new W(0),amountOut:new W(0),feeAmount:new W(0)},u=r.gte(re);if(u){let l=v.mulDivFloor(r,Xt.sub(new W(o.toString())),Xt);a.amountIn=s?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(a.amountIn)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=F.getNextSqrtPriceX64FromInput(e,n,l,s)}else a.amountOut=s?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(He).gte(a.amountOut)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=F.getNextSqrtPriceX64FromOutput(e,n,r.mul(He),s);let c=t.eq(a.sqrtPriceX64Next);return s?(c&&u||(a.amountIn=U.getTokenAmountAFromLiquidity(a.sqrtPriceX64Next,e,n,!0)),c&&!u||(a.amountOut=U.getTokenAmountBFromLiquidity(a.sqrtPriceX64Next,e,n,!1))):(a.amountIn=c&&u?a.amountIn:U.getTokenAmountBFromLiquidity(e,a.sqrtPriceX64Next,n,!0),a.amountOut=c&&!u?a.amountOut:U.getTokenAmountAFromLiquidity(e,a.sqrtPriceX64Next,n,!1)),!u&&a.amountOut.gt(r.mul(He))&&(a.amountOut=r.mul(He)),u&&!a.sqrtPriceX64Next.eq(t)?a.feeAmount=r.sub(a.amountIn):a.feeAmount=v.mulDivCeil(a.amountIn,new W(o),Xt.sub(new W(o))),[a.sqrtPriceX64Next,a.amountIn,a.amountOut,a.feeAmount]}};var pe=60,ut=512,x=class{static getTickArrayAddressByTick(e,t,n,r){let o=x.getTickArrayStartIndexByTick(n,r),{publicKey:s}=z(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=x.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=pe)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=V.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)*V.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*pe,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*pe,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*pe:e+t*pe}static mergeTickArrayBitmap(e){let t=new yo(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*pe));return[...x.searchLowBitFromStart(e,t,s-1,o,n),...x.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return x.searchHightBitFromStart(e,t,-7680,ut,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=x.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=z(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>x.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=V.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=>x.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=V.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<xe||e>Ne}static nextInitTick(e,t,n,r,o){if(V.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<pe;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=pe-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<pe;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=F.getSqrtPriceX64FromTick(t),o=F.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new B(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new B(1).div(t),o=lt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=F.getSqrtPriceX64FromTick(o),a=F.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new B(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=F.getSqrtPriceX64FromTick(t),o=F.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new B(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new B(1).div(t),o=lt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=F.getSqrtPriceX64FromTick(o),a=F.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new B(1).div(a)}}};var od=H([Ce(8),ae("bump"),Tt("index"),j(""),pt("protocolFeeRate"),pt("tradeFeeRate"),Tt("tickSpacing"),ie(I(),8,"")]),ho=H([pt("blockTimestamp"),si("tickCumulative"),ie(I(),4)]),Bi=H([Ce(8),Ie("initialized"),I("recentEpoch"),Tt("observationIndex"),j("poolId"),ie(ho,100,"observations"),ie(I(),4)]),wo=H([ae("rewardState"),I("openTime"),I("endTime"),I("lastUpdateTime"),q("emissionsPerSecondX64"),I("rewardTotalEmissioned"),I("rewardClaimed"),j("tokenMint"),j("tokenVault"),j("creator"),q("rewardGrowthGlobalX64")]),Ti=H([Ce(8),ae("bump"),j("ammConfig"),j("creator"),j("mintA"),j("mintB"),j("vaultA"),j("vaultB"),j("observationId"),ae("mintDecimalsA"),ae("mintDecimalsB"),Tt("tickSpacing"),q("liquidity"),q("sqrtPriceX64"),ee("tickCurrent"),pt(),q("feeGrowthGlobalX64A"),q("feeGrowthGlobalX64B"),I("protocolFeesTokenA"),I("protocolFeesTokenB"),q("swapInAmountTokenA"),q("swapOutAmountTokenB"),q("swapInAmountTokenB"),q("swapOutAmountTokenA"),ae("status"),ie(ae(),7,""),ie(wo,3,"rewardInfos"),ie(I(),16,"tickArrayBitmap"),I("totalFeesTokenA"),I("totalFeesClaimedTokenA"),I("totalFeesTokenB"),I("totalFeesClaimedTokenB"),I("fundFeesTokenA"),I("fundFeesTokenB"),I("startTime"),ie(I(),15*4-3,"padding")]),ko=H([q("growthInsideLastX64"),I("rewardAmountOwed")]),Ai=H([Ce(8),ae("bump"),j("nftMint"),j("poolId"),ee("tickLower"),ee("tickUpper"),q("liquidity"),q("feeGrowthInsideLastX64A"),q("feeGrowthInsideLastX64B"),I("tokenFeesOwedA"),I("tokenFeesOwedB"),ie(ko,3,"rewardInfos"),ie(I(),8,"")]),sd=H([Ce(8),ae("bump"),j("poolId"),ee("tickLowerIndex"),ee("tickUpperIndex"),q("liquidity"),q("feeGrowthInsideLastX64A"),q("feeGrowthInsideLastX64B"),I("tokenFeesOwedA"),I("tokenFeesOwedB"),ie(q(),3,"rewardGrowthInside"),ie(I(),8,"")]),Po=H([ee("tick"),ai("liquidityNet"),q("liquidityGross"),q("feeGrowthOutsideX64A"),q("feeGrowthOutsideX64B"),ie(q(),3,"rewardGrowthsOutsideX64"),ie(pt(),13,"")]),It=H([Ce(8),j("poolId"),ee("startTickIndex"),ie(Po,pe,"ticks"),ae("initializedTickCount"),ie(ae(),115,"")]),ad=H([Ce(329),ie(j(),100,"whitelistMints")]),xi=H([Ce(8),j("poolId"),ie(ie(I(),8),Sn,"positiveTickArrayBitmap"),ie(ie(I(),8),Sn,"negativeTickArrayBitmap")]),ud=H([I(),ae("bump"),j("owner"),j("poolId"),j("positionId"),j("nftAccount"),ie(I(),8)]),cd=H([Ce(8),ae("bump"),j("lockOwner"),j("poolId"),j("positionId"),j("nftAccount"),j("lockNftMint"),I("recentEpoch"),ie(I(),8)]);Bi.span;var Si=Be("Raydium_Clmm"),Ee={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]},Ii=[188,37,179,131,82,150,84,73],Ni=[16,72,250,198,14,162,212,19],Zt=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f,b){let p=H([q("sqrtPriceX64"),I("zero")]),y=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey: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:m,isSigner:!1,isWritable:!1},{pubkey:Ze.programId,isSigner:!1,isWritable:!1},{pubkey:et,isSigner:!1,isWritable:!1},...(b==null?void 0:b.map(w=>({pubkey:w,isSigner:!1,isWritable:!1})))||[]],g=Buffer.alloc(p.span);p.encode({sqrtPriceX64:f,zero:re},g);let T=Buffer.from([...Ee.createPool,...g]);return new Pe({keys:y,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 P(r.address),new P(o.address)],{publicKey:m}=gi(t,s,c,l),{publicKey:d}=hi(t,m),{publicKey:f}=An(t,m,c),{publicKey:b}=An(t,m,l),p=ke(t,m).publicKey,y=[this.createPoolInstruction(t,m,n,s,d,c,f,new P(r.programId||Y),l,b,new P(o.programId||Y),p,a,u)];return{signers:[],instructions:y,instructionTypes:[ye.CreateAccount,ye.ClmmCreatePool],address:{poolId:m,observationId:d,exBitmapAccount:p,mintAVault:f,mintBVault:b},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,T,w,A,N,k,K,L,_,G){let E=H([ee("tickLowerIndex"),ee("tickUpperIndex"),ee("tickArrayLowerStartIndex"),ee("tickArrayUpperStartIndex"),q("liquidity"),I("amountMaxA"),I("amountMaxB"),Ie("withMetadata"),ae("optionBaseFlag"),Ie("baseFlag")]),ce=[...G?[{pubkey:G,isSigner:!1,isWritable:!0}]:[]],Q=[{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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:Ze.programId,isSigner:!1,isWritable:!1},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...ce],be=Buffer.alloc(E.span);E.encode({tickLowerIndex:T,tickUpperIndex:w,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:N,liquidity:k,amountMaxA:K,amountMaxB:L,withMetadata:_==="create",baseFlag:!1,optionBaseFlag:0},be);let oe=Buffer.from([...Ee.openPosition,...be]);return new Pe({keys:Q,programId:e,data:oe})}static openPositionFromLiquidityInstruction22(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,T,w,A,N,k,K,L,_){let G=H([ee("tickLowerIndex"),ee("tickUpperIndex"),ee("tickArrayLowerStartIndex"),ee("tickArrayUpperStartIndex"),q("liquidity"),I("amountMaxA"),I("amountMaxB"),Ie("withMetadata"),ae("optionBaseFlag"),Ie("baseFlag")]),E=[..._?[{pubkey:_,isSigner:!1,isWritable:!0}]:[]],ce=[{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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:Ze.programId,isSigner:!1,isWritable:!1},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...E],Q=Buffer.alloc(G.span);G.encode({tickLowerIndex:g,tickUpperIndex:T,tickArrayLowerStartIndex:w,tickArrayUpperStartIndex:A,liquidity:N,amountMaxA:k,amountMaxB:K,withMetadata:L==="create",baseFlag:!1,optionBaseFlag:0},Q);let be=Buffer.from([...Ee.openPositionWithTokenEx,...Q]);return new Pe({keys:ce,programId:e,data:be})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let d=[],[f,b]=[new P(e.programId),new P(e.id)],p;if(l)p=new P((await l(1))[0]);else{let _=zt.generate();d.push(_),p=_.publicKey}let y=x.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=x.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:T}=z(f,b,y),{publicKey:w}=z(f,b,g),{publicKey:A}=m?me(n.wallet,p,ue):me(n.wallet,p,Y),{publicKey:N}=Bt(p),{publicKey:k}=Re(f,p),{publicKey:K}=it(f,b,r,o),L=m?this.openPositionFromLiquidityInstruction22(f,n.feePayer,b,n.wallet,p,A,K,T,w,k,n.tokenAccountA,n.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),r,o,y,g,s,a,u,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?ke(f,b).publicKey:void 0):this.openPositionFromLiquidityInstruction(f,n.feePayer,b,n.wallet,p,A,N,K,T,w,k,n.tokenAccountA,n.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),r,o,y,g,s,a,u,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?ke(f,b).publicKey:void 0);return{signers:d,instructions:[L],instructionTypes:[ye.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:p,tickArrayLower:T,tickArrayUpper:w,positionNftAccount:A,metadataAccount:N,personalPosition:k,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:m}){let d=[],[f,b]=[new P(e.programId),new P(e.id)],p;if(l)p=new P((await l(1))[0]);else{let _=zt.generate();d.push(_),p=_.publicKey}let y=x.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=x.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:T}=z(f,b,y),{publicKey:w}=z(f,b,g),{publicKey:A}=m?me(n.wallet,p,ue):me(n.wallet,p,Y),{publicKey:N}=Bt(p),{publicKey:k}=Re(f,p),{publicKey:K}=it(f,b,r,o),L=m?this.openPositionFromBaseInstruction22(f,n.feePayer,b,n.wallet,p,A,K,T,w,k,n.tokenAccountA,n.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),r,o,y,g,c,s,a,u,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?ke(f,b).publicKey:void 0):this.openPositionFromBaseInstruction(f,n.feePayer,b,n.wallet,p,A,N,K,T,w,k,n.tokenAccountA,n.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),r,o,y,g,c,s,a,u,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?ke(f,b).publicKey:void 0);return{address:{nftMint:p,tickArrayLower:T,tickArrayUpper:w,positionNftAccount:A,metadataAccount:N,personalPosition:k,protocolPosition:K},instructions:[L],signers:d,instructionTypes:[ye.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,T,w,A,N,k,K,L,_,G){let E=H([ee("tickLowerIndex"),ee("tickUpperIndex"),ee("tickArrayLowerStartIndex"),ee("tickArrayUpperStartIndex"),q("liquidity"),I("amountMaxA"),I("amountMaxB"),Ie("withMetadata"),ae("optionBaseFlag"),Ie("baseFlag")]),ce=[...G?[{pubkey:G,isSigner:!1,isWritable:!0}]:[]],Q=[{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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:Ze.programId,isSigner:!1,isWritable:!1},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...ce],be=Buffer.alloc(E.span);E.encode({tickLowerIndex:T,tickUpperIndex:w,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:N,liquidity:new Nn(0),amountMaxA:K==="MintA"?L:_,amountMaxB:K==="MintA"?_:L,withMetadata:k==="create",baseFlag:K==="MintA",optionBaseFlag:1},be);let oe=Buffer.from([...Ee.openPosition,...be]);return new Pe({keys:Q,programId:e,data:oe})}static openPositionFromBaseInstruction22(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,T,w,A,N,k,K,L,_){let G=H([ee("tickLowerIndex"),ee("tickUpperIndex"),ee("tickArrayLowerStartIndex"),ee("tickArrayUpperStartIndex"),q("liquidity"),I("amountMaxA"),I("amountMaxB"),Ie("withMetadata"),ae("optionBaseFlag"),Ie("baseFlag")]),E=[..._?[{pubkey:_,isSigner:!1,isWritable:!0}]:[]],ce=[{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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:Ze.programId,isSigner:!1,isWritable:!1},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...E],Q=Buffer.alloc(G.span);G.encode({tickLowerIndex:g,tickUpperIndex:T,tickArrayLowerStartIndex:w,tickArrayUpperStartIndex:A,liquidity:new Nn(0),amountMaxA:k==="MintA"?K:L,amountMaxB:k==="MintA"?L:K,withMetadata:N==="create",baseFlag:k==="MintA",optionBaseFlag:1},Q);let be=Buffer.from([...Ee.openPositionWithTokenEx,...Q]);return new Pe({keys:ce,programId:e,data:be})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l,nft2022:m}){let d,f=[];if(l)d=new P((await l(1))[0]);else{let _=zt.generate();f.push(_),d=_.publicKey}let[b,p]=[new P(e.programId),new P(e.id)],y=x.getTickArrayStartIndexByTick(r,e.config.tickSpacing),g=x.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:T}=z(b,p,y),{publicKey:w}=z(b,p,g),{publicKey:A}=m?me(n.wallet,d,ue):me(n.wallet,d,Y),{publicKey:N}=Bt(d),{publicKey:k}=Re(b,d),{publicKey:K}=it(b,p,r,o),L=m?this.openPositionFromLiquidityInstruction22(b,n.wallet,p,n.wallet,d,A,K,T,w,k,n.tokenAccountA,n.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(t.mintA.address),new P(t.mintB.address),r,o,y,g,s,a,u,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?ke(b,p).publicKey:void 0):this.openPositionFromLiquidityInstruction(b,n.wallet,p,n.wallet,d,A,N,K,T,w,k,n.tokenAccountA,n.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(t.mintA.address),new P(t.mintB.address),r,o,y,g,s,a,u,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,g])?ke(b,p).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:T,tickArrayUpper:w,positionNftAccount:A,metadataAccount:N,personalPosition:k,protocolPosition:K},instructions:[L],signers:f,instructionTypes:[ye.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o,s){let a=H([]),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:Ze.programId,isSigner:!1,isWritable:!1},{pubkey:s?ue:Y,isSigner:!1,isWritable:!1}],c=Buffer.alloc(a.span);a.encode({},c);let l=Buffer.from([...Ee.closePosition,...c]);return new Pe({keys:u,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r,nft2022:o}){let s=new P(e.programId),a=o?me(n.wallet,r.nftMint,ue).publicKey:me(n.wallet,r.nftMint,Y).publicKey,{publicKey:u}=Re(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:[ye.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,T){let w=H([q("liquidity"),I("amountMaxA"),I("amountMaxB"),ae("optionBaseFlag"),Ie("baseFlag")]),A=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],N=[{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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...A],k=Buffer.alloc(w.span);w.encode({liquidity:p,amountMaxA:y,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},k);let K=Buffer.from([...Ee.increaseLiquidity,...k]);return new Pe({keys:N,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 P(e.programId),new P(e.id)],m=x.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=x.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=z(c,l,m),{publicKey:b}=z(c,l,d),{publicKey:p}=u?me(r.wallet,n.nftMint,ue):me(r.wallet,n.nftMint,Y),{publicKey:y}=Re(c,n.nftMint),{publicKey:g}=it(c,l,n.tickLower,n.tickUpper),T=this.increasePositionFromLiquidityInstruction(c,r.wallet,p,y,l,g,f,b,r.tokenAccountA,r.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),o,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?ke(c,l).publicKey:void 0);return{address:{tickArrayLower:f,tickArrayUpper:b,positionNftAccount:p,personalPosition:y,protocolPosition:g},signers:[],instructions:[T],instructionTypes:[ye.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 P(e.programId),new P(e.id)],m=x.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=x.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=z(c,l,m),{publicKey:b}=z(c,l,d),{publicKey:p}=u?me(r.wallet,n.nftMint,ue):me(r.wallet,n.nftMint,Y),{publicKey:y}=Re(c,n.nftMint),{publicKey:g}=it(c,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:f,tickArrayUpper:b,positionNftAccount:p,personalPosition:y,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(c,r.wallet,p,y,l,g,f,b,r.tokenAccountA,r.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),o,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?ke(c,l).publicKey:void 0)],signers:[],instructionTypes:[ye.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,T){let w=H([q("liquidity"),I("amountMaxA"),I("amountMaxB"),ae("optionBaseFlag"),Ie("baseFlag")]),A=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],N=[{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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...A],k=Buffer.alloc(w.span);w.encode({liquidity:new Nn(0),amountMaxA:p==="MintA"?y:g,amountMaxB:p==="MintA"?g:y,baseFlag:p==="MintA",optionBaseFlag:1},k);let K=Buffer.from([...Ee.increaseLiquidity,...k]);return new Pe({keys:N,programId:e,data:K})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g,T,w){let A=H([q("liquidity"),I("amountMinA"),I("amountMinB")]),N=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...p.map(_=>[{pubkey:_.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:_.rewardMint,isSigner:!1,isWritable:!1}]).flat()],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey: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:Y,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...N],K=Buffer.alloc(A.span);A.encode({liquidity:y,amountMinA:g,amountMinB:T},K);let L=Buffer.from([...Ee.decreaseLiquidity,...K]);return new Pe({keys:k,programId:e,data:L})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u,nft2022:c}){let[l,m]=[new P(e.programId),new P(e.id)],d=x.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),f=x.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:b}=z(l,m,d),{publicKey:p}=z(l,m,f),{publicKey:y}=c?me(r.wallet,n.nftMint,ue):me(r.wallet,n.nftMint,u),{publicKey:g}=Re(l,n.nftMint),{publicKey:T}=it(l,m,n.tickLower,n.tickUpper),w=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)w.push({poolRewardVault:new P(t.rewardInfos[k].vault),ownerRewardVault:r.rewardAccounts[k],rewardMint:new P(e.rewardDefaultInfos[k].mint.address)});let A=[],N=this.decreaseLiquidityInstruction(l,r.wallet,y,g,m,T,b,p,r.tokenAccountA,r.tokenAccountB,new P(t.vault.A),new P(t.vault.B),new P(e.mintA.address),new P(e.mintB.address),w,o,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,f])?ke(l,m).publicKey:void 0);return A.push(N),{address:{tickArrayLower:b,tickArrayUpper:p,positionNftAccount:y,personalPosition:g,protocolPosition:T},signers:[],instructions:A,instructionTypes:[ye.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,d,f,b,p,y,g){let T=H([I("amount"),I("otherAmountThreshold"),q("sqrtPriceLimitX64"),Ie("isBaseInput")]),w=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(K=>({pubkey:K,isSigner:!1,isWritable:!0}))],A=[{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:Y,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...w],N=Buffer.alloc(T.span);T.encode({amount:f,otherAmountThreshold:b,sqrtPriceLimitX64:p,isBaseInput:y},N);let k=Buffer.from([...Ee.swap,...N]);return new Pe({keys:A,programId:e,data:k})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new P(e.programId),new P(e.id)],[d,f]=[new P(t.vault.A),new P(t.vault.B)],[b,p]=[new P(e.mintA.address),new P(e.mintB.address)],y=e.mintA.address===o.toString(),g=[this.swapInstruction(l,r.wallet,m,new P(e.config.id),y?r.tokenAccountA:r.tokenAccountB,y?r.tokenAccountB:r.tokenAccountA,y?d:f,y?f:d,y?b:p,y?p:b,c,n,s,a,u,!0,ke(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[ye.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,m]=[new P(e.programId),new P(e.id)],[d,f]=[new P(t.vault.A),new P(t.vault.B)],[b,p]=[new P(e.mintA.address),new P(e.mintB.address)],y=e.mintA.address===o.toBase58(),g=[this.swapInstruction(l,r.wallet,m,new P(e.config.id),y?r.tokenAccountB:r.tokenAccountA,y?r.tokenAccountA:r.tokenAccountB,y?f:d,y?d:f,y?p:b,y?b:p,c,n,s,a,u,!1,ke(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[ye.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let f=H([I("openTime"),I("endTime"),q("emissionsPerSecondX64")]),b=[{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:Ze.programId,isSigner:!1,isWritable:!1},{pubkey:et,isSigner:!1,isWritable:!1}],p=Buffer.alloc(f.span);f.encode({openTime:ge(l),endTime:ge(m),emissionsPerSecondX64:d},p);let y=Buffer.from([...Ee.initReward,...p]);return new Pe({keys:b,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new P(e.programId),new P(e.id)],a=yi(o,s,r.mint).publicKey,u=xn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new P(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:[ye.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let f=H([ae("rewardIndex"),q("emissionsPerSecondX64"),I("openTime"),I("endTime")]),b=[{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:Y,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],p=Buffer.alloc(f.span);f.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:ge(l),endTime:ge(m)},p);let y=Buffer.from([...Ee.setRewardEmissions,...p]);return new Pe({keys:b,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new P(e.programId),new P(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 P(t.rewardInfos[d].vault),c=new P(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&Si.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=xn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new P(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[ye.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=H([ae("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:Y,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Ee.collectReward,...l]);return new Pe({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new P(e.programId),new P(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new P(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Si.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:[ye.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 P((await u(1))[0]);else{let g=zt.generate();c.push(g),l=g.publicKey}let m=a?me(o,s,ue).publicKey:me(o,s,Y).publicKey,{publicKey:d}=Re(n,s),f=ki(e,l).publicKey,b=me(o,l,Y).publicKey,p=Bt(l).publicKey,y=Zt.lockPositionInstructionV2({programId:e,auth:t,payer:r,positionOwner:o,lockOwner:o,positionNftAccount:m,positionId:d,lockPositionId:f,lockNftMint:l,lockNftAccount:b,metadataAccount:p,withMetadata:!0,nft2022:a,positionNftMint:s,authPositionNftAccount:me(t,s,a?ue:Y).publicKey,positionNftProgram:a?ue:Y});return{address:{positionId:d,lockPositionId:f,lockNftAccount:b,lockNftMint:l,positionNftAccount:m,metadataAccount:p},instructions:[y],signers:c,instructionTypes:[ye.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:m,lockNftMint:d,lockNftAccount:f,metadataAccount:b,withMetadata:p}){let y=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:ot,isSigner:!1,isWritable:!1},{pubkey:Kt,isSigner:!1,isWritable:!1},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Ze.programId,isSigner:!1,isWritable:!1}],g=H([Ie("withMetadata")]),T=Buffer.alloc(g.span);g.encode({withMetadata:p},T);let w=Buffer.from([...Ii,...T]);return new Pe({keys:y,programId:e,data:w})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:r,positionNft:o}){let{publicKey:s}=me(r,o,Y),{publicKey:a}=Re(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:Bn(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:Ze.programId,isSigner:!1,isWritable:!1}];return new Pe({keys:u,programId:e,data:Buffer.from(Ii)})}static harvestLockPositionInstruction(e){let[t,n]=[new P(e.poolKeys.programId),new P(e.poolKeys.id)],r=x.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),o=x.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:s}=z(t,n,r),{publicKey:a}=z(t,n,o),{publicKey:u}=me(e.owner,e.ownerPosition.nftMint,Y),{publicKey:c}=Re(t,e.ownerPosition.nftMint),{publicKey:l}=it(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),m=[];for(let b=0;b<e.poolKeys.rewardInfos.length;b++)m.push({poolRewardVault:new P(e.poolKeys.rewardInfos[b].vault),ownerRewardVault:e.ownerRewardAccounts[b],rewardMint:new P(e.poolKeys.rewardInfos[b].mint.address)});let d=[...m.map(b=>[{pubkey:b.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:b.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:b.rewardMint,isSigner:!1,isWritable:!1}]).flat()],f=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:Bn(e.programId,c).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:new P(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new P(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:Y,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:new P(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new P(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...d];return new Pe({keys:f,programId:e.programId,data:Buffer.from(Ni)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:r,lockOwner:o,lockNftMint:s,lockNftAccount:a,positionNftAccount:u,positionId:c,poolId:l,protocolPosition:m,vaultA:d,vaultB:f,tickArrayLower:b,tickArrayUpper:p,userVaultA:y,userVaultB:g,mintA:T,mintB:w,rewardAccounts:A,exTickArrayBitmap:N}){let k=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[],...A.map(L=>[{pubkey:L.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.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:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:T,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...k];return new Pe({keys:K,programId:e,data:Buffer.from(Ni)})}};export{Zt as ClmmInstrument};
//# sourceMappingURL=instrument.mjs.map