UNPKG

raydium-sdk-v2-custody

Version:

An SDK for building applications on top of Raydium.

2 lines 118 kB
var yi=Object.defineProperty,hi=Object.defineProperties;var wi=Object.getOwnPropertyDescriptors;var An=Object.getOwnPropertySymbols;var Ti=Object.prototype.hasOwnProperty,ki=Object.prototype.propertyIsEnumerable;var Pn=(i,e,t)=>e in i?yi(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,Q=(i,e)=>{for(var t in e||(e={}))Ti.call(e,t)&&Pn(i,t,e[t]);if(An)for(var t of An(e))ki.call(e,t)&&Pn(i,t,e[t]);return i},ne=(i,e)=>hi(i,wi(e));import{Keypair as fi,PublicKey as T,SystemProgram as pt,TransactionInstruction as De}from"@solana/web3.js";import pi from"bn.js";import{PublicKey as Ki}from"@solana/web3.js";import Sn,{isBN as Nn}from"bn.js";import{bits as go,BitStructure as bo,blob as Ai,Blob as yo,cstr as ho,f32 as wo,f32be as To,f64 as ko,f64be as Ao,greedy as Po,Layout as Pi,ns64 as xo,ns64be as Bo,nu64 as Io,nu64be as So,offset as No,s16 as Co,s16be as Ko,s24 as Lo,s24be as Mo,s32 as xi,s32be as Eo,s40 as Ro,s40be as _o,s48 as Fo,s48be as Oo,s8 as vo,seq as Bi,struct as Do,Structure as Ii,u16 as Si,u16be as qo,u24 as Wo,u24be as Go,u32 as Vo,u32be as Uo,u40 as Xo,u40be as zo,u48 as Ho,u48be as jo,u8 as Ni,UInt as Ci,union as Zo,Union as Yo,unionLayoutDiscriminator as Qo,utf8 as Jo}from"@solana/buffer-layout";var Xt=Pi,xn=Ii;var zt=Ci;var Bn=Ni,gt=Si;var de=xi;var In=Bi;var Ae=Ai;var ct=class extends Xt{constructor(t,n,r){super(t,r);this.blob=Ae(t),this.signed=n}decode(t,n=0){let r=new Sn(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 Sn(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function ue(i){return new zt(1,i)}function lt(i){return new zt(4,i)}function L(i){return new ct(8,!1,i)}function X(i){return new ct(16,!1,i)}function Cn(i){return new ct(8,!0,i)}function Kn(i){return new ct(16,!0,i)}var Nt=class extends Xt{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 H(i){return new Nt(Ae(32),e=>new Ki(e),e=>e.toBuffer(),i)}function _e(i){return new Nt(Bn(),Li,Mi,i)}function Li(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Mi(i){return i?1:0}var Ht=class extends xn{decode(e,t){return super.decode(e,t)}};function Z(i,e,t){return new Ht(i,e,t)}function $(i,e,t){let n,r=typeof e=="number"?e:Nn(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Nn(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 In(i,r,t)}import{ASSOCIATED_TOKEN_PROGRAM_ID as Ut,getAssociatedTokenAddressSync as gi,TOKEN_2022_PROGRAM_ID as Te,TOKEN_PROGRAM_ID as tt}from"@solana/spl-token";import{PublicKey as _i}from"@solana/web3.js";import{get as Ln,set as Ei}from"lodash";var jt=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={},Ri={};function Pe(i){let e=Ln(Mn,i);if(!e){let t=Ln(Ri,i);e=new jt({name:i,logLevel:t}),Ei(Mn,i,e)}return e}import{MINT_SIZE as Ts,TOKEN_PROGRAM_ID as ks,getTransferFeeConfig as As,unpackMint as Ps}from"@solana/spl-token";var Zt=Pe("Raydium_accountInfo_util");async function He(i,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:o=100}=Q({batchRequest:!1},t),s=Yt(e,o),a=new Array(s.length).fill([]);if(n){let c=s.map(m=>{let d=i._buildArgs([m.map(f=>f.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),u=Yt(c,10);a=(await(await Promise.all(u.map(async m=>await i._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&Zt.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:h,rentEpoch:g}=d;return f.length!==2&&f[1]!=="base64"&&Zt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(f[0],"base64"),executable:b,lamports:p,owner:new _i(h),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(c=>i.getMultipleAccountsInfo(c,r)))}catch(c){c instanceof Error&&Zt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function Qt(i,e,t){let n=await He(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>ne(Q({},r),{accountInfo:n[o]}))}import Ve from"bn.js";var mt=9e15,Qe=1e9,$t="0123456789abcdef",Lt="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Mt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",en={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-mt,maxE:mt,crypto:!1},Fn,We,M=!0,Rt="[DecimalError] ",Ye=Rt+"Invalid argument: ",On=Rt+"Precision limit exceeded",vn=Rt+"crypto unavailable",Dn="[object Decimal]",ge=Math.floor,ce=Math.pow,Fi=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Oi=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,vi=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,qn=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Me=1e7,N=7,Di=9007199254740991,qi=Lt.length-1,tn=Mt.length-1,y={toStringTag:Dn};y.absoluteValue=y.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),B(i)};y.ceil=function(){return B(new this.constructor(this),this.e+1,2)};y.clampedTo=y.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(Ye+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};y.comparedTo=y.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,c=o.s,u=i.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(o.e!==i.e)return o.e>i.e^c<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]^c<0?1:-1;return n===r?0:n>r^c<0?1:-1};y.cosine=y.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+N,n.rounding=1,t=Wi(n,Xn(n,t)),n.precision=i,n.rounding=e,B(We==2||We==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};y.cubeRoot=y.cbrt=function(){var i,e,t,n,r,o,s,a,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(M=!1,o=l.s*ce(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=fe(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ce(t,1/3),i=ge((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,c=a.times(a).times(a),u=c.plus(l),n=j(u.plus(l).times(a),u.plus(c),s+2,1),fe(a.d).slice(0,s)===(t=fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(B(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")&&(B(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return M=!0,B(n,i,m.rounding,e)};y.decimalPlaces=y.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-ge(this.e/N))*N,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};y.dividedBy=y.div=function(i){return j(this,new this.constructor(i))};y.dividedToIntegerBy=y.divToInt=function(i){var e=this,t=e.constructor;return B(j(e,new t(i),0,1,1),t.precision,t.rounding)};y.equals=y.eq=function(i){return this.cmp(i)===0};y.floor=function(){return B(new this.constructor(this),this.e+1,3)};y.greaterThan=y.gt=function(i){return this.cmp(i)>0};y.greaterThanOrEqualTo=y.gte=function(i){var e=this.cmp(i);return e==1||e===0};y.hyperbolicCosine=y.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/Ft(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=dt(s,1,o.times(e),new s(1),!0);for(var c,u=i,l=new s(8);u--;)c=o.times(o),o=a.minus(c.times(l.minus(c.times(l))));return B(o,s.precision=t,s.rounding=n,!0)};y.hyperbolicSine=y.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/Ft(5,i)),r=dt(o,2,r,r,!0);for(var s,a=new o(5),c=new o(16),u=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(c.times(s).plus(u))))}return o.precision=e,o.rounding=t,B(r,e,t,!0)};y.hyperbolicTangent=y.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)};y.inverseCosine=y.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()?Le(t,r,o):new t(0):new t(NaN):e.isZero()?Le(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Le(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};y.inverseHyperbolicCosine=y.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)};y.inverseHyperbolicSine=y.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())};y.inverseHyperbolicTangent=y.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?B(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)};y.inverseSine=y.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=Le(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)))};y.inverseTangent=y.atan=function(){var i,e,t,n,r,o,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&m+4<=tn)return s=Le(l,m+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=tn)return s=Le(l,m+4,d).times(.5),s.s=u.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/N+2|0),i=t;i;--i)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(M=!1,e=Math.ceil(a/N),n=1,c=u.times(u),s=new l(u),r=u;i!==-1;)if(r=r.times(c),o=s.minus(r.div(n+=2)),r=r.times(c),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,B(s,l.precision=m,l.rounding=d,!0)};y.isFinite=function(){return!!this.d};y.isInteger=y.isInt=function(){return!!this.d&&ge(this.e/N)>this.d.length-2};y.isNaN=function(){return!this.s};y.isNegative=y.isNeg=function(){return this.s<0};y.isPositive=y.isPos=function(){return this.s>0};y.isZero=function(){return!!this.d&&this.d[0]===0};y.lessThan=y.lt=function(i){return this.cmp(i)<0};y.lessThanOrEqualTo=y.lte=function(i){return this.cmp(i)<1};y.logarithm=y.log=function(i){var e,t,n,r,o,s,a,c,u=this,l=u.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=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.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=Ze(u,a),n=e?Et(l,a+10):Ze(i,a),c=j(s,n,a,1),bt(c.d,r=m,d))do if(a+=10,s=Ze(u,a),n=e?Et(l,a+10):Ze(i,a),c=j(s,n,a,1),!o){+fe(c.d).slice(r+1,r+15)+1==1e14&&(c=B(c,m+1,0));break}while(bt(c.d,r+=10,d));return M=!0,B(c,m,d)};y.minus=y.sub=function(i){var e,t,n,r,o,s,a,c,u,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(u=f.d,d=i.d,a=b.precision,c=b.rounding,!u[0]||!d[0]){if(d[0])i.s=-i.s;else if(u[0])i=new b(f);else return new b(c===3?-0:0);return M?B(i,a,c):i}if(t=ge(i.e/N),l=ge(f.e/N),u=u.slice(),o=l-t,o){for(m=o<0,m?(e=u,o=-o,s=d.length):(e=d,t=l,s=u.length),n=Math.max(Math.ceil(a/N),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(u[n]!=d[n]){m=u[n]<d[n];break}o=0}for(m&&(e=u,u=d,d=e,i.s=-i.s),s=u.length,n=d.length-s;n>0;--n)u[s++]=0;for(n=d.length;n>o;){if(u[--n]<d[n]){for(r=n;r&&u[--r]===0;)u[r]=Me-1;--u[r],u[n]+=Me}u[n]-=d[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(i.d=u,i.e=_t(u,t),M?B(i,a,c):i):new b(c===3?-0:0)};y.modulo=y.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]?B(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))};y.naturalExponential=y.exp=function(){return nn(this)};y.naturalLogarithm=y.ln=function(){return Ze(this)};y.negated=y.neg=function(){var i=new this.constructor(this);return i.s=-i.s,B(i)};y.plus=y.add=function(i){var e,t,n,r,o,s,a,c,u,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(u=m.d,l=i.d,a=d.precision,c=d.rounding,!u[0]||!l[0])return l[0]||(i=new d(m)),M?B(i,a,c):i;if(o=ge(m.e/N),n=ge(i.e/N),u=u.slice(),r=o-n,r){for(r<0?(t=u,r=-r,s=l.length):(t=l,n=o,s=u.length),o=Math.ceil(a/N),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=u.length,r=l.length,s-r<0&&(r=s,t=l,l=u,u=t),e=0;r;)e=(u[--r]=u[r]+l[r]+e)/Me|0,u[r]%=Me;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return i.d=u,i.e=_t(u,n),M?B(i,a,c):i};y.precision=y.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(Ye+i);return t.d?(e=Wn(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};y.round=function(){var i=this,e=i.constructor;return B(new e(i),i.e+1,e.rounding)};y.sine=y.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+N,n.rounding=1,t=Vi(n,Xn(n,t)),n.precision=i,n.rounding=e,B(We>2?t.neg():t,i,e,!0)):new n(NaN)};y.squareRoot=y.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(M=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=fe(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=ge((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(o=n,n=o.plus(j(s,o,t+2,1)).times(.5),fe(o.d).slice(0,t)===(e=fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(B(o,c+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(B(n,c+1,1),i=!n.times(n).eq(s));break}return M=!0,B(n,c,l.rounding,i)};y.tangent=y.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,B(We==2||We==4?t.neg():t,i,e,!0)):new n(NaN)};y.times=y.mul=function(i){var e,t,n,r,o,s,a,c,u,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=ge(l.e/N)+ge(i.e/N),c=d.length,u=f.length,c<u&&(o=d,d=f,f=o,s=c,c=u,u=s),o=[],s=c+u,n=s;n--;)o.push(0);for(n=u;--n>=0;){for(e=0,r=c+n;r>n;)a=o[r]+f[n]*d[r-n-1]+e,o[r--]=a%Me|0,e=a/Me|0;o[r]=(o[r]+e)%Me|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=_t(o,t),M?B(i,m.precision,m.rounding):i};y.toBinary=function(i,e){return on(this,2,i,e)};y.toDecimalPlaces=y.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(ke(i,0,Qe),e===void 0?e=n.rounding:ke(e,0,8),B(t,i+t.e+1,e))};y.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Fe(n,!0):(ke(i,0,Qe),e===void 0?e=r.rounding:ke(e,0,8),n=B(new r(n),i+1,e),t=Fe(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};y.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=Fe(r):(ke(i,0,Qe),e===void 0?e=o.rounding:ke(e,0,8),n=B(new o(r),i+r.e+1,e),t=Fe(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};y.toFraction=function(i){var e,t,n,r,o,s,a,c,u,l,m,d,f=this,b=f.d,p=f.constructor;if(!b)return new p(f);if(u=t=new p(1),n=c=new p(0),e=new p(n),o=e.e=Wn(b)-f.e-1,s=o%N,e.d[0]=ce(10,s<0?N+s:s),i==null)i=o>0?e:u;else{if(a=new p(i),!a.isInt()||a.lt(u))throw Error(Ye+a);i=a.gt(e)?o>0?e:u:a}for(M=!1,a=new p(fe(b)),l=p.precision,p.precision=o=b.length*N*2;m=j(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=u,u=c.plus(m.times(r)),c=r,r=e,e=a.minus(m.times(r)),a=r;return r=j(i.minus(t),n,0,1,1),c=c.plus(r.times(u)),t=t.plus(r.times(n)),c.s=u.s=f.s,d=j(u,n,o,1).minus(f).abs().cmp(j(c,t,o,1).minus(f).abs())<1?[u,n]:[c,t],p.precision=l,M=!0,d};y.toHexadecimal=y.toHex=function(i,e){return on(this,16,i,e)};y.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,B(t)):(i.s=t.s,t=i),t};y.toNumber=function(){return+this};y.toOctal=function(i,e){return on(this,8,i,e)};y.toPower=y.pow=function(i){var e,t,n,r,o,s,a=this,c=a.constructor,u=+(i=new c(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new c(ce(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,o=c.rounding,i.eq(1))return B(a,n,o);if(e=ge(i.e/N),e>=i.d.length-1&&(t=u<0?-u:u)<=Di)return r=Gn(c,a,t,n),i.s<0?new c(1).div(r):B(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new c(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=ce(+a,u),e=t==0||!isFinite(t)?ge(u*(Math.log("0."+fe(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(M=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=nn(i.times(Ze(a,n+t)),n),r.d&&(r=B(r,n+5,1),bt(r.d,n,o)&&(e=n+10,r=B(nn(i.times(Ze(a,e+t)),e),e+5,1),+fe(r.d).slice(n+1,n+15)+1==1e14&&(r=B(r,n+1,0)))),r.s=s,M=!0,c.rounding=o,B(r,n,o))};y.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=Fe(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(ke(i,1,Qe),e===void 0?e=r.rounding:ke(e,0,8),n=B(new r(n),i,e),t=Fe(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};y.toSignificantDigits=y.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(ke(i,1,Qe),e===void 0?e=n.rounding:ke(e,0,8)),B(new n(t),i,e)};y.toString=function(){var i=this,e=i.constructor,t=Fe(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};y.truncated=y.trunc=function(){return B(new this.constructor(this),this.e+1,1)};y.valueOf=y.toJSON=function(){var i=this,e=i.constructor,t=Fe(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function fe(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=N-n.length,t&&(o+=je(t)),o+=n;s=i[e],n=s+"",t=N-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(Ye+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+=N,r=0):(r=Math.ceil((e+1)/N),e%=N),o=ce(10,N-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)==ce(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)==ce(10,e-3)-1,s}function Kt(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]+=$t.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 Wi(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/Ft(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,c=n.length;for(n=n.slice();c--;)s=n[c]*r+a,n[c]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,c;if(o!=s)c=o>s?1:-1;else for(a=c=0;a<o;a++)if(n[a]!=r[a]){c=n[a]>r[a]?1:-1;break}return c}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,c){var u,l,m,d,f,b,p,h,g,k,w,A,S,P,E,C,v,G,K,ae,ie=n.constructor,Ne=n.s==r.s?1:-1,te=n.d,W=r.d;if(!te||!te[0]||!W||!W[0])return new ie(!n.s||!r.s||(te?W&&te[0]==W[0]:!W)?NaN:te&&te[0]==0||!W?Ne*0:Ne/0);for(c?(f=1,l=n.e-r.e):(c=Me,f=N,l=ge(n.e/f)-ge(r.e/f)),K=W.length,v=te.length,g=new ie(Ne),k=g.d=[],m=0;W[m]==(te[m]||0);m++);if(W[m]>(te[m]||0)&&l--,o==null?(P=o=ie.precision,s=ie.rounding):a?P=o+(n.e-r.e)+1:P=o,P<0)k.push(1),b=!0;else{if(P=P/f+2|0,m=0,K==1){for(d=0,W=W[0],P++;(m<v||d)&&P--;m++)E=d*c+(te[m]||0),k[m]=E/W|0,d=E%W|0;b=d||m<v}else{for(d=c/(W[0]+1)|0,d>1&&(W=i(W,d,c),te=i(te,d,c),K=W.length,v=te.length),C=K,w=te.slice(0,K),A=w.length;A<K;)w[A++]=0;ae=W.slice(),ae.unshift(0),G=W[0],W[1]>=c/2&&++G;do d=0,u=e(W,w,K,A),u<0?(S=w[0],K!=A&&(S=S*c+(w[1]||0)),d=S/G|0,d>1?(d>=c&&(d=c-1),p=i(W,d,c),h=p.length,A=w.length,u=e(p,w,h,A),u==1&&(d--,t(p,K<h?ae:W,h,c))):(d==0&&(u=d=1),p=W.slice()),h=p.length,h<A&&p.unshift(0),t(w,p,A,c),u==-1&&(A=w.length,u=e(W,w,K,A),u<1&&(d++,t(w,K<A?ae:W,A,c))),A=w.length):u===0&&(d++,w=[0]),k[m++]=d,u&&w[0]?w[A++]=te[C]||0:(w=[te[C]],A=1);while((C++<v||w[0]!==void 0)&&P--);b=w[0]!==void 0}k[0]||k.shift()}if(f==1)g.e=l,Fn=b;else{for(m=1,d=k[0];d>=10;d/=10)m++;g.e=m+l*f-1,B(g,a?o+g.e+1:o,s,b)}return g}}();function B(i,e,t,n){var r,o,s,a,c,u,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+=N,s=e,l=m[d=0],c=l/ce(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/N),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=c=0,r=1,o%=N,s=o-N+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;o%=N,s=o-N+r,c=s<0?0:l/ce(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%ce(10,r-s-1)),u=t<4?(c||n)&&(t==0||t==(i.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(o>0?s>0?l/ce(10,r-s):0:m[d-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,u?(e-=i.e+1,m[0]=ce(10,(N-e%N)%N),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=ce(10,N-o),m[d]=s>0?(l/ce(10,r-s)%ce(10,s)|0)*a:0),u)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]==Me&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=Me)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 Fe(i,e,t){if(!i.isFinite())return Un(i);var n,r=i.e,o=fe(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*=N;t>=10;t/=10)e++;return e}function Et(i,e,t){if(e>qi)throw M=!0,t&&(i.precision=t),Error(On);return B(new i(Lt),e,1,!0)}function Le(i,e,t){if(e>tn)throw Error(On);return B(new i(Mt),e,t,!0)}function Wn(i){var e=i.length-1,t=e*N+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/N+4);for(M=!1;;){if(t%2&&(o=o.times(e),Rn(o.d,s)&&(r=!0)),t=ge(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Rn(e.d,s)}return M=!0,o}function En(i){return i.d[i.d.length-1]&1}function Vn(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 nn(i,e){var t,n,r,o,s,a,c,u=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,c=b):c=e,a=new d(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(ce(2,m))/Math.LN10*2+5|0,c+=n,t=o=s=new d(1),d.precision=c;;){if(o=B(o.times(i),c,1),t=t.times(++l),a=s.plus(j(o,t,c,1)),fe(a.d).slice(0,c)===fe(s.d).slice(0,c)){for(r=m;r--;)s=B(s.times(s),c,1);if(e==null)if(u<3&&bt(s.d,c-n,f,u))d.precision=c+=10,t=o=a=new d(1),l=0,u++;else return B(s,d.precision=b,f,M=!0);else return d.precision=b,s}s=a}}function Ze(i,e){var t,n,r,o,s,a,c,u,l,m,d,f=1,b=10,p=i,h=p.d,g=p.constructor,k=g.rounding,w=g.precision;if(p.s<0||!h||!h[0]||!p.e&&h[0]==1&&h.length==1)return new g(h&&!h[0]?-1/0:p.s!=1?NaN:h?0:p);if(e==null?(M=!1,l=w):l=e,g.precision=l+=b,t=fe(h),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=fe(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 u=Et(g,l+2,w).times(o+""),p=Ze(new g(n+"."+t.slice(1)),l-b).plus(u),g.precision=w,e==null?B(p,w,k,M=!0):p;for(m=p,c=s=p=j(p.minus(1),p.plus(1),l,1),d=B(p.times(p),l,1),r=3;;){if(s=B(s.times(d),l,1),u=c.plus(j(s,new g(r),l,1)),fe(u.d).slice(0,l)===fe(c.d).slice(0,l))if(c=c.times(2),o!==0&&(c=c.plus(Et(g,l+2,w).times(o+""))),c=j(c,new g(f),l,1),e==null)if(bt(c.d,l-b,k,a))g.precision=l+=b,u=s=p=j(m.minus(1),m.plus(1),l,1),d=B(p.times(p),l,1),r=a=1;else return B(c,g.precision=w,k,M=!0);else return g.precision=w,c;c=u,r+=2}}function Un(i){return String(i.s*i.s/0)}function rn(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)%N,t<0&&(n+=N),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=N;n<r;)i.d.push(+e.slice(n,n+=N));e=e.slice(n),n=N-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,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),qn.test(e))return rn(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(Oi.test(e))t=16,e=e.toLowerCase();else if(Fi.test(e))t=2;else if(vi.test(e))t=8;else throw Error(Ye+e);for(o=e.search(/p/i),o>0?(c=+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)),u=Kt(e,t,Me),l=u.length-1,o=l;u[o]===0;--o)u.pop();return o<0?new n(i.s*0):(i.e=_t(u,l),i.d=u,M=!1,s&&(i=j(i,r,a*4)),c&&(i=i.times(Math.abs(c)<54?ce(2,c):yt.pow(2,c))),M=!0,i)}function Vi(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/Ft(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,c,u=1,l=i.precision,m=Math.ceil(l/N);for(M=!1,c=t.times(t),a=new i(n);;){if(s=j(a.times(c),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=j(s.times(c),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,u++}return M=!0,s.d.length=m+1,s}function Ft(i,e){for(var t=i;--e;)t*=i;return t}function Xn(i,e){var t,n=e.s<0,r=Le(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return We=n?4:1,e;if(t=e.divToInt(r),t.isZero())We=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return We=En(t)?n?2:3:n?4:1,e;We=En(t)?n?1:4:n?3:2}return e.minus(r).abs()}function on(i,e,t,n){var r,o,s,a,c,u,l,m,d,f=i.constructor,b=t!==void 0;if(b?(ke(t,1,Qe),n===void 0?n=f.rounding:ke(n,0,8)):(t=f.precision,n=f.rounding),!i.isFinite())l=Un(i);else{for(l=Fe(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=Kt(Fe(d),10,r),d.e=d.d.length),m=Kt(l,10,r),o=c=m.length;m[--c]==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,u=Fn),s=m[t],a=r/2,u=u||m[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,u)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=$t.charAt(m[s]);if(b){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=Kt(l,r,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=$t.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>c)for(o-=c;o--;)l+="0";else o<c&&(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 Rn(i,e){if(i.length>e)return i.length=e,!0}function Ui(i){return new this(i).abs()}function Xi(i){return new this(i).acos()}function zi(i){return new this(i).acosh()}function Hi(i,e){return new this(i).plus(e)}function ji(i){return new this(i).asin()}function Zi(i){return new this(i).asinh()}function Yi(i){return new this(i).atan()}function Qi(i){return new this(i).atanh()}function Ji(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=Le(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Le(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Le(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=Le(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 $i(i){return new this(i).cbrt()}function er(i){return B(i=new this(i),i.e+1,2)}function tr(i,e,t){return new this(i).clamp(e,t)}function nr(i){if(!i||typeof i!="object")throw Error(Rt+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,Qe,"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]=en[t]),(n=i[t])!==void 0)if(ge(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Ye+t+": "+n);if(t="crypto",r&&(this[t]=en[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(vn);else this[t]=!1;else throw Error(Ye+t+": "+n);return this}function ir(i){return new this(i).cos()}function rr(i){return new this(i).cosh()}function zn(i){var e,t,n;function r(o){var s,a,c,u=this;if(!(u instanceof r))return new r(o);if(u.constructor=r,_n(o)){u.s=o.s,M?!o.d||o.e>r.maxE?(u.e=NaN,u.d=null):o.e<r.minE?(u.e=0,u.d=[0]):(u.e=o.e,u.d=o.d.slice()):(u.e=o.e,u.d=o.d?o.d.slice():o.d);return}if(c=typeof o,c==="number"){if(o===0){u.s=1/o<0?-1:1,u.e=0,u.d=[0];return}if(o<0?(o=-o,u.s=-1):u.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;M?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[o]):(u.e=s,u.d=[o]);return}else if(o*0!==0){o||(u.s=NaN),u.e=NaN,u.d=null;return}return rn(u,o.toString())}else if(c!=="string")throw Error(Ye+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),u.s=-1):(a===43&&(o=o.slice(1)),u.s=1),qn.test(o)?rn(u,o):Gi(u,o)}if(r.prototype=y,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=nr,r.clone=zn,r.isDecimal=_n,r.abs=Ui,r.acos=Xi,r.acosh=zi,r.add=Hi,r.asin=ji,r.asinh=Zi,r.atan=Yi,r.atanh=Qi,r.atan2=Ji,r.cbrt=$i,r.ceil=er,r.clamp=tr,r.cos=ir,r.cosh=rr,r.div=or,r.exp=sr,r.floor=ar,r.hypot=ur,r.ln=cr,r.log=lr,r.log10=dr,r.log2=mr,r.max=fr,r.min=pr,r.mod=gr,r.mul=br,r.pow=yr,r.random=hr,r.round=wr,r.sign=Tr,r.sin=kr,r.sinh=Ar,r.sqrt=Pr,r.sub=xr,r.sum=Br,r.tan=Ir,r.tanh=Sr,r.trunc=Nr,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 or(i,e){return new this(i).div(e)}function sr(i){return new this(i).exp()}function ar(i){return B(i=new this(i),i.e+1,3)}function ur(){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 yt||i&&i.toStringTag===Dn||!1}function cr(i){return new this(i).ln()}function lr(i,e){return new this(i).log(e)}function mr(i){return new this(i).log(2)}function dr(i){return new this(i).log(10)}function fr(){return Vn(this,arguments,"lt")}function pr(){return Vn(this,arguments,"gt")}function gr(i,e){return new this(i).mod(e)}function br(i,e){return new this(i).mul(e)}function yr(i,e){return new this(i).pow(e)}function hr(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:ke(i,1,Qe),n=Math.ceil(i/N),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(vn);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=N,n&&i&&(r=ce(10,N-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-=N)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<N&&(t-=N-n)}return s.e=t,s.d=a,s}function wr(i){return B(i=new this(i),i.e+1,this.rounding)}function Tr(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function kr(i){return new this(i).sin()}function Ar(i){return new this(i).sinh()}function Pr(i){return new this(i).sqrt()}function xr(i,e){return new this(i).sub(e)}function Br(){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,B(t,this.precision,this.rounding)}function Ir(i){return new this(i).tan()}function Sr(i){return new this(i).tanh()}function Nr(i){return B(i=new this(i),i.e+1,1)}y[Symbol.for("nodejs.util.inspect.custom")]=y.toString;y[Symbol.toStringTag]="Decimal";var yt=y.constructor=zn(en);Lt=new yt(Lt);Mt=new yt(Mt);var x=yt;import Fr from"big.js";import Dt from"bn.js";import Cr from"toformat";var Kr=Cr,ht=Kr;import vt from"big.js";import Mr from"bn.js";import Er from"decimal.js-light";import wt from"bn.js";var Hn=9007199254740991;function xe(i){let e=Pe("Raydium_parseBigNumberish");if(i instanceof wt)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new wt(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Hn||i<=-Hn)&&e.logWithError(`BigNumberish number overflow: ${i}`),new wt(String(i))):typeof i=="bigint"?new wt(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new wt(0))}var Ot=Pe("module/fraction"),sn=ht(vt),Tt=ht(Er),Rr={[0]:Tt.ROUND_DOWN,[1]:Tt.ROUND_HALF_UP,[2]:Tt.ROUND_UP},_r={[0]:vt.roundDown,[1]:vt.roundHalfUp,[2]:vt.roundUp},z=class{constructor(e,t=new Mr(1)){this.numerator=xe(e),this.denominator=xe(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new z(this.denominator,this.numerator)}add(e){let t=e instanceof z?e:new z(xe(e));return this.denominator.eq(t.denominator)?new z(this.numerator.add(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof z?e:new z(xe(e));return this.denominator.eq(t.denominator)?new z(this.numerator.sub(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof z?e:new z(xe(e));return new z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof z?e:new z(xe(e));return new z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Ot.logWithError(`${e} is not an integer.`),e<=0&&Ot.logWithError(`${e} is not positive.`),Tt.set({precision:e+1,rounding:Rr[n]});let r=new Tt(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)||Ot.logWithError(`${e} is not an integer.`),e<0&&Ot.logWithError(`${e} is negative.`),sn.DP=e,sn.RM=_r[n]||1,new sn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Or=Pe("Raydium_amount"),jn=ht(Fr);function vr(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")):Or.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var be=class extends z{constructor(t,n,r=!0,o){let s=new Dt(0),a=an.pow(new Dt(t.decimals));if(r)s=xe(n);else{let c=new Dt(0),u=new Dt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=vr(n.toString(),t.decimals);c=xe(l),u=xe(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=Pe(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new be(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new be(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,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 jn.DP=this.token.decimals,new jn(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Dr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zn}from"@solana/spl-token";var Yn={chainId:101,address:Dr.default.toBase58(),programId:Zn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},nt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Zn.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 ee,SystemProgram as Qn,SYSVAR_RENT_PUBKEY as qr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Wr}from"@solana/spl-token";function un({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var na=[un({pubkey:Wr,isWritable:!1}),un({pubkey:Qn.programId,isWritable:!1}),un({pubkey:qr,isWritable:!1})];function cn({publicKey:i,transformSol:e}){let t=Jn(i.toString());if(t instanceof ee)return e&&t.equals(kt)?Jt:t;if(e&&t.toString()===kt.toBase58())return Jt;if(typeof t=="string"){if(t===ee.default.toBase58())return ee.default;try{return new ee(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Jn(i){try{return new ee(i)}catch{return i}}var ln=new ee("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ia=new ee("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),mn=new ee("SysvarRent111111111111111111111111111111111"),ra=new ee("SysvarC1ock11111111111111111111111111111111"),Gr=new ee("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),oa=new ee("Sysvar1nstructions1111111111111111111111111"),sa=Qn.programId,aa=new ee("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ua=new ee("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ca=new ee("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),la=new ee("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ma=new ee("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),da=new ee("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),fa=new ee("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),pa=new ee("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ga=new ee("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),ba=new ee("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ya=new ee("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Jt=new ee("So11111111111111111111111111111111111111112"),kt=ee.default;function Ct(i){return cn({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=nt.decimals,this.symbol=nt.symbol,this.name=nt.name,this.mint=new dn(nt.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:cn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ge=fn;Ge.WSOL=new fn(ne(Q({},nt),{mint:nt.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}},qt=pn;qt.SOL=new pn(Yn);import Vr from"bn.js";var $n=new z(new Vr(100)),Je=class extends z{toSignificant(e=5,t,n){return this.mul($n).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul($n).toFixed(e,t,n)}};var Ur=Pe("Raydium_price"),Ee=class extends z{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new z(gn(n.decimals),gn(r.decimals))}get raw(){return new z(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ee({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 Ee({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};import{PublicKey as Za}from"@solana/web3.js";import Qa from"bn.js";var Xr=new Ve(0),gu=new Ve(1),bu=new Ve(2),yu=new Ve(3),hu=new Ve(5),an=new Ve(10),wu=new Ve(100),Tu=new Ve(1e3),ku=new Ve(1e4);function gn(i){return an.pow(xe(i))}function Yt(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 Hr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as jr}from"@solana/spl-token";import{ComputeBudgetProgram as Cu,Keypair as Mu,PublicKey as zr,Transaction as Ru,TransactionMessage as Fu,VersionedTransaction as Ou}from"@solana/web3.js";var he={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",CustodyInitializeUser:"CustodyInitializeUser",CustodyDeposit:"CustodyDeposit",CustodyWithdraw:"CustodyWithdraw",CustodyOpenPosition:"CustodyOpenPosition",CustodyClosePosition:"CustodyClosePosition",CustodyIncreasePosition:"CustodyIncreasePosition",CustodyDecreasePosition:"CustodyDecreasePosition",CustodySwapBaseIn:"CustodySwapBaseIn",CustodySwapBaseOut:"CustodySwapBaseOut",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 Wu}from"@solana/spl-token";var Gu=Pe("Raydium_txUtil");function $e(i,e){let[t,n]=zr.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function se(i,e,t){return $e([i.toBuffer(),(t!=null?t:jr).toBuffer(),e.toBuffer()],new Hr("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as _}from"@solana/web3.js";var Zu=new _("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Yu=new _("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Qu=new _("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ju=new _("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),$u=new _("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ec=new _("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),tc=new _("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),nc=new _("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),ic=new _("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),rc=new _("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),oc=new _("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),sc=new _("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ac=new _("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),uc=new _("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),cc=new _("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),lc=new _("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),mc=new _("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),dc=new _("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),fc=new _("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),pc=new _("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),gc=new _("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),bc=new _("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Zr=new _("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Yr=new _("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Qr=new _("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),yc=new _("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Jr=new _("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),hc=new _("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),$r=new _("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var wc={SERUM_MARKET:_.default,OPENBOOK_MARKET:new _("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:_.default,FarmV3:new _("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new _("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new _("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new _("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new _("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new _("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new _("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new _("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new _("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Zr,CREATE_CPMM_POOL_AUTH:Yr,CREATE_CPMM_POOL_FEE_ACC:Qr,FEE_DESTINATION_ID:new _("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:Jr,LCOK_CPMM_AUTH:$r};import Re from"bn.js";var At=1e4;function re(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=ne(Q({},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 Re(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===At){let c=new Re(o.maximumFee.toString());return{amount:i.add(c),fee:c,expirationTime:a}}else{let c=bn(i.mul(new Re(At)),new Re(At-o.transferFeeBasisPoints)),u=new Re(o.maximumFee.toString()),l=c.sub(i).gt(u)?i.add(u):c,m=bn(l.mul(new Re(o.transferFeeBasisPoints)),new Re(At)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let c=bn(i.mul(new Re(o.transferFeeBasisPoints)),new Re(At)),u=c.gt(s)?s:c;return{amount:i,fee:u,expirationTime:a}}}function et(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function bn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Re(0))?t.add(new Re(1)):t}import{PublicKey as eo,AddressLookupTableAccount as ei}from"@solana/web3.js";var to={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new ei({key:new eo("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:ei.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};import{PublicKey as Dc,sendAndConfirmTransaction as qc,SystemProgram as Vc,Transaction as Uc,TransactionMessage as zc,VersionedTransaction as Hc}from"@solana/web3.js";import Zc from"axios";function Wt(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function yn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function hn(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Pt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function ti(i,e){return Pt(i,e)?null:yn(i,e)}function ni(i,e){return Pt(i,e)?null:hn(i,e)}var Pl=Buffer.from("amm_config","utf8"),xl=Buffer.from("pool","utf8"),Bl=Buffer.from("pool_vault","utf8"),Il=Buffer.from("pool_reward_vault","utf8"),ii=Buffer.from("position","utf8"),no=Buffer.from("tick_array","utf8"),Sl=Buffer.from("operation","utf8"),io=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Nl=Buffer.from("observation","utf8");function Y(i,e,t){return $e([no,e.toBuffer(),Wt(t)],i)}function ft(i,e,t,n){return $e([ii,e.toBuffer(),Wt(t),Wt(n)],i)}function Ue(i,e){return $e([ii,e.toBuffer()],i)}function Ce(i,e){return $e([io,e.toBuffer()],i)}var Cl=Buffer.from("locked_position","utf8");var Kl=Buffer.from("support_mint","utf8");var ro=Buffer.from("user_state","utf8");function Be(i,e){return $e([ro,e.toBuffer()],i)}import mo from"bn.js";import Ke from"bn.js";var oe=new Ke(0),Oe=new Ke(1),Xe=new Ke(-1),Ie=new Ke(1).shln(64),Gt=new Ke(1).shln(128),wn=Ie.sub(Oe),xt=64,ri=Gt.subn(1),ye=-443636,we=-ye,it=new Ke("4295048016"),rt=new Ke("79226673521066979257578248091"),El=new Ke("4295048017"),Rl=new Ke("79226673521066979257578248090"),oi=16,si="59543866431248",ai="184467440737095516",ui="15793534762490258745",Vt=new Ke(10).pow(new Ke(6));var _l=new Ke("18446744073700000000");import O from"bn.js";import{PublicKey as Se}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as di}from"@solana/spl-token";import J from"bn.js";var oo=15,V=class{static async getTickArrays(e,t,n,r,o,s,a){let c=[],u=I.getTickArrayStartIndexByTick(r,o),l=I.getInitializedTickArrayInRange(s,a,o,u,Math.floor(oo/2));for(let f=0;f<l.length;f++){let{publicKey:b}=Y(t,n,l[f]);c.push(b)}let m=(await He(e,c)).map(f=>f!==null?Bt.decode(f.data):null),d={};for(let f=0;f<c.length;f++){let b=m[f];b!==null&&(d[b.startTickIndex]=ne(Q({},b),{address:c[f]}))}return d}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(u=I.getNextTickArrayStartIndex(u,o,s),this.checkIsValidStartIndex(u,o))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:f}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[m,d,f]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/V.tickCount(t)),a=n?I.searchLowBitFromStart(r,o,s-1,1,t):I.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=le-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a-1}}else{let a=0;for(;a<le;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){o=c;break}a=a+1}}let{publicKey:s}=Y(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=I.getTickArrayStartIndexByTick(r,o),c=Math.floor((r-a)/o),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c-1}else for(c=c+1;c<le;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c+1}let{publicKey:m}=Y(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(I.checkIsOutOfBoundary(e)){if(e>we)return!1;let n=I.getTickArrayStartIndexByTick(ye,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return le*e}};var Tn=14,ze=class{static maxTickInTickarrayBitmap(e){return e*le*ot}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*le,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(r){let l=e.shln(1024-u-1),m=ti(1024,l);if(m!==null){let d=(u-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(u),m=ni(1024,l);if(m!==null){let d=(u+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-V.tickCount(n)}}}},It=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(we<=t)throw Error(`extensionTickBoundary check error: ${we}, ${t}`);if(n<=ye)throw Error(`extensionTickBoundary check error: ${n}, ${ye}`);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:I.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 c=I.mergeTickArrayBitmap(e).shln(ot-1-a),u=Pt(512,c)?null:yn(512,c);if(u!==null){let l=t-u*V.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let c=I.mergeTickArrayBitmap(e).shrn(a),u=Pt(512,c)?null:hn(512,c);if(u!==null){let l=t+u*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=ot-r),r}};var $l=Z([Ae(8),ue("bump"),gt("index"),H(""),lt("protocolFeeRate"),lt("tradeFeeRate"),gt("tickSpacing"),$(L(),8,"")]),so=Z([lt("blockTimestamp"),Cn("tickCumulative"),$(L(),4)]),em=Z([Ae(8),_e("initialized"),L("recentEpoch"),gt("observationIndex"),H("poolId"),$(so,100,"observations"),$(L(),4)]),ao=Z([ue("rewardState"),L("openTime"),L("endTime"),L("lastUpdateTime"),X("emissionsPerSecondX64"),L("rewardTotalEmissioned"),L("rewardClaimed"),H("tokenMint"),H("tokenVault"),H("creator"),X("rewardGrowthGlobalX64")]),ci=Z([Ae(8),ue("bump"),H("ammConfig"),H("creator"),H("mintA"),H("mintB"),H("vaultA"),H("vaultB"),H("observationId"),ue("mintDecimalsA"),ue("mintDecimalsB"),gt("tickSpacing"),X("liquidity"),X("sqrtPriceX64"),de("tickCurrent"),lt(),X("feeGrowthGlobalX64A"),X("feeGrowthGlobalX64B"),L("protocolFeesTokenA"),L("protocolFeesTokenB"),X("swapInAmountTokenA"),X("swapOutAmountTokenB"),X("swapInAmountTokenB"),X("swapOutAmountTokenA"),ue("status"),$(ue(),7,""),$(ao,3,"rewardInfos"),$(L(),16,"tickArrayBitmap"),L("totalFeesTokenA"),L("totalFeesClaimedTokenA"),L("totalFeesTokenB"),L("totalFeesClaimedTokenB"),L("fundFeesTokenA"),L("fundFeesTokenB"),L("startTime"),$(L(),15*4-3,"padding")]),uo=Z([X("growthInsideLastX64"),L("rewardAmountOwed")]),li=Z([Ae(8),ue("bump"),H("nftMint"),H("poolId"),de("tickLower"),de("tickUpper"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),L("tokenFeesOwedA"),L("tokenFeesOwedB"),$(uo,3,"rewardInfos"),$(L(),8,"")]),tm=Z([Ae(8),ue("bump"),H("poolId"),de("tickLowerIndex"),de("tickUpperIndex"),X("liquidity"),X("feeGrowthInsideLastX64A"),X("feeGrowthInsideLastX64B"),L("tokenFeesOwedA"),L("tokenFeesOwedB"),$(X(),3,"rewardGrowthInside"),$(L(),8,"")]),co=Z([de("tick"),Kn("liquidityNet"),X("liquidityGross"),X("feeGrowthOutsideX64A"),X("feeGrowthOutsideX64B"),$(X(),3,"rewardGrowthsOutsideX64"),$(lt(),13,"")]),Bt=Z([Ae(8),H("poolId"),de("startTickIndex"),$(co,le,"ticks"),ue("initializedTickCount"),$(ue(),115,"")]),nm=Z([Ae(329),$(H(),100,"whitelistMints")]),mi=Z([Ae(8),H("poolId"),$($(L(),8),Tn,"positiveTickArrayBitmap"),$($(L(),8),Tn,"negativeTickArrayBitmap")]),im=Z([L(),ue("bump"),H("owner"),H("poolId"),H("positionId"),H("nftAccount"),$(L(),8)]),rm=Z([Ae(8),ue("bump"),H("lockOwner"),H("poolId"),H("positionId"),H("nftAccount"),H("lockNftMint"),L("recentEpoch"),$(L(),8)]);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 c=F.wrappingSubU128(F.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),u=F.wrappingSubU128(F.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=F.mulDivFloor(F.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ie),c=t.tokenFeesOwedA.add(a),u=F.mulDivFloor(F.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ie),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=F.mulDivFloor(F.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Ie),c=t.tokenFeesOwedA.add(a),u=F.mulDivFloor(F.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Ie),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,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 c=s[a],u=t.rewardInfos[a],l=F.wrappingSubU128(c,u.growthInsideLastX64),m=F.mulDivFloor(l,t.liquidity,Ie),d=u.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 c=s[a],u=t.rewardInfos[a],l=F.wrappingSubU128(c,u.growthInsideLastX64),m=F.mulDivFloor(l,t.liquidity,Ie),d=u.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 c=new ve(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(F.wrappingSubU128(F.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}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 c=new ve(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(F.wrappingSubU128(F.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var h,g,k,w;let a=R.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),c=R.getSqrtPriceX64FromTick(t.tickLower),u=R.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=U.getAmountsFromLiquidity(a,c,u,n,o),[d,f]=[re(m.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),re(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[b,p]=[re(new ve(new x(m.amountA.toString()).mul(l).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,s,!0),re(new ve(new x(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:et(d.expirationTime,f.expirationTime)}}};var pe=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!u||l===void 0||!m)throw new Error("Invalid tick array");c.push(m);let{allTrade:d,amountCalculated:f,accounts:b,sqrtPriceX64:p,feeAmount:h}=st.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 c.push(...b),{allTrade:d,expectedAmountOut:f.mul(Xe),remainingAccounts:c,executionPrice:p,feeAmount:h}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let p=this.preInitializedTickArrayStartIndex(e,s);if(p.isExist){let{publicKey:h}=Y(e.programId,e.id,p.nextStartIndex);a.push(h)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:f,feeAmount:b}=st.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Xe),u,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:f,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=pe.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?It.checkTickArrayIsInit(V.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):I.checkTickArrayIsInitialized(I.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Y(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}=Y(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/V.tickCount(e.tickSpacing)),r=t?I.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):I.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(I.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=It.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<ye||t>we)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,c,u;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(m.tokenMint))==null?void 0:c.owner;if(d===void 0)throw Error("get new reward mint info error");let f=ne(Q({},m),{perSecond:F.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Se(d)});if(f.tokenMint.equals(Se.default))continue;if(n<=f.openTime.toNumber()||r.eq(oe)){s.push(f);continue}let b=new J(Math.min(f.endTime.toNumber(),n)),p=b.sub(f.lastUpdateTime),h=F.mulDivFloor(p,f.emissionsPerSecondX64,r),g=f.rewardGrowthGlobalX64.add(h),k=F.mulDivFloor(p,f.emissionsPerSecondX64,Ie),w=f.rewardTotalEmissioned.add(k);s.push(ne(Q({},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=I.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=ze.maxTickInTickarrayBitmap(e),n=-t;return t>we&&(t=V.getArrayStartIndex(we,e)+V.tickCount(e)),n<ye&&(n=V.getArrayStartIndex(ye,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)*ot}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()]=mi.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let c of t){let u=I.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=I.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let m of l){let{publicKey:d}=Y(c.programId,c.id,m);o.push({pubkey:d}),r[d.toString()]=c.id}}let s=await Qt(e,o,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=r[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=Bt.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=ne(Q({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(d=>d.accountInfo.mint),u=[];for(let d of c)for(let f of s)u.push(Ue(f,d).publicKey);let l=await He(t,u,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let f=li.decode(d.data),b=f.poolId.toString(),p=e.find(C=>C.state.id.toBase58()===b);if(p===void 0)continue;let h=p.state,g=I._getTickPriceLegacy({poolInfo:h,tick:f.tickLower,baseIn:!0}),k=I._getTickPriceLegacy({poolInfo:h,tick:f.tickUpper,baseIn:!0}),{amountA:w,amountB:A}=U.getAmountsFromLiquidity(h.sqrtPriceX64,g.tickSqrtPriceX64,k.tickSqrtPriceX64,f.liquidity,!1),S=1/(1-Math.sqrt(Math.sqrt(g.price.div(k.price).toNumber())));p.positionAccount=[...(a=p.positionAccount)!=null?a:[],{poolId:f.poolId,nftMint:f.nftMint,priceLower:g.price,priceUpper:k.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(C=>ne(Q({},C),{pendingReward:new J(0)})),leverage:S,tokenFeeAmountA:new J(0),tokenFeeAmountB:new J(0)}];let P=await I.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickLower,p.state.tickSpacing),E=await I.getTickArrayAddressByTick(p.state.programId,f.poolId,f.tickUpper,p.state.tickSpacing);m[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickLower}`]=P,m[`${p.state.programId.toString()}-${f.poolId.toString()}-${f.tickUpper}`]=E}if(o){let d=Object.values(m),f=await He(t,d,{batchRequest:r}),b={};for(let p=0;p<d.length;p++){let h=f[p];if(h===null)continue;let g=d[p].toString();b[g]=Bt.decode(h.data)}for(let{state:p,positionAccount:h}of e)if(!!h)for(let g of h){let k=`${p.programId.toString()}-${p.id.toString()}-${g.tickLower}`,w=`${p.programId.toString()}-${p.id.toString()}-${g.tickUpper}`,A=b[m[k].toString()],S=b[m[w].toString()],P=A.ticks[I.getTickOffsetInArray(g.tickLower,p.tickSpacing)],E=S.ticks[I.getTickOffsetInArray(g.tickUpper,p.tickSpacing)],{tokenFeeAmountA:C,tokenFeeAmountB:v}=await St.GetPositionFees(p,g,P,E),G=await St.GetPositionRewards(p,g,P,E);g.tokenFeeAmountA=C.gte(new J(0))?C:new J(0),g.tokenFeeAmountB=v.gte(new J(0))?v:new J(0);for(let K=0;K<G.length;K++)g.rewardInfos[K].pendingReward=G[K].gte(new J(0))?G[K]:new J(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new x(0),catchLiquidityInsufficient:c=!1}){var ae;let u,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 x(0))?u=l?it.add(new J(1)):rt.sub(new J(1)):u=R.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let f=re(o,m,r,!1),{allTrade:b,expectedAmountOut:p,remainingAccounts:h,executionPrice:g,feeAmount:k}=pe.getOutputAmountAndRemainAccounts(e,t,n,f.amount.sub((ae=f.fee)!=null?ae:oe),u,c),w=re(p,d,r,!1),A=R.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),S=l?A:new x(1).div(A),P=p.mul(new J(Math.floor((1-s)*1e10))).div(new J(1e10)),E=re(P,d,r,!1),C=l?e.currentPrice:new x(1).div(e.currentPrice),v=new x(S).sub(C).abs(),G=C,K=new Je(new x(v).mul(10**15).toFixed(0),new x(G).mul(10**15).toFixed(0));return{allTrade:b,realAmountIn:f,amountOut:w,minAmountOut:E,expirationTime:et(f.expirationTime,w.expirationTime),currentPrice:e.currentPrice,executionPrice:S,priceImpact:K,fee:k,remainingAccounts:h,executionPriceX64:g}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=r.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new Ge(ne(Q({},u),{mint:u.address,isToken2022:u.programId===di.toBase58()})),new Ge(ne(Q({},l),{mint:l.address,isToken2022:l.programId===di.toBase58()}))],{allTrade:f,realAmountIn:b,amountOut:p,minAmountOut:h,expirationTime:g,currentPrice:k,executionPrice:w,priceImpact:A,fee:S,remainingAccounts:P,executionPriceX64:E}=pe.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Se(u.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),C=ne(Q({},b),{amount:new be(m,b.amount),fee:b.fee===void 0?void 0:new be(m,b.fee)}),v=ne(Q({},p),{amount:new be(d,p.amount),fee:p.fee===void 0?void 0:new be(d,p.fee)}),G=ne(Q({},h),{amount:new be(d,h.amount),fee:h.fee===void 0?void 0:new be(d,h.fee)}),K=new Ee({baseToken:m,denominator:new J(10).pow(new J(20+m.decimals)),quoteToken:d,numerator:k.mul(new x(10**(20+d.decimals))).toFixed(0)}),ae=new Ee({baseToken:m,denominator:new J(10).pow(new J(20+m.decimals)),quoteToken:d,numerator:w.mul(new x(10**(20+d.decimals))).toFixed(0)}),ie=new be(m,S);return{allTrade:f,realAmountIn:C,amountOut:v,minAmountOut:G,expirationTime:g,currentPrice:K,executionPrice:ae,priceImpact:A,fee:ie,remainingAccounts:P,executionPriceX64:E}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountOut:o,slippage:s,priceLimit:a=new x(0)}){var G;let c=n.toBase58()===e.mintA.address,u={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;a.equals(new x(0))?l=c?rt.sub(new J(1)):it.add(new J(1)):l=R.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let m=re(o,u[n.toString()],r,!0),{expectedAmountIn:d,remainingAccounts:f,executionPrice:b,feeAmount:p}=pe.getInputAmountAndRemainAccounts(e,t,n,m.amount.sub((G=m.fee)!=null?G:oe),l),h=c?e.mintB.address:e.mintA.address,g=re(d,u[h],r,!1),k=R.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),w=c?k:new x(1).div(k),A=d.mul(new J(Math.floor((1+s)*1e10))).div(new J(1e10)),S=re(A,u[h],r,!0),P=c?e.currentPrice:new x(1).div(e.currentPrice),E=new x(w).sub(P).abs(),C=P,v=new Je(new x(E).mul(10**15).toFixed(0),new x(C).mul(10**15).toFixed(0));return{amountIn:g,maxAmountIn:S,realAmountOut:m,expirationTime:et(g.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:w,priceImpact:v,fee:p,remainingAccounts:f}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var b,p,h;let o=e[t],s=I.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=I.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),c=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-c,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,((h=o.rewardApr[2])!=null?h:0)*f],apr:o.apr*f}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=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=R.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),h=R.getSqrtPriceX64FromTick(s),g=R.getSqrtPriceX64FromTick(a),{amountSlippageA:k,amountSlippageB:w}=U.getAmountsFromLiquidityWithSlippage(p,h,g,t,!1,!1,0),{amountSlippageA:A,amountSlippageB:S}=U.getAmountsFromLiquidityWithSlippage(p,h,g,o,!1,!1,0),P=new x(k.toString()).div(new x(10).pow(f)).mul(m.value).add(new x(w.toString()).div(new x(10).pow(b)).mul(d.value)),E=new x(A.toString()).div(new x(10).pow(f)).mul(m.value).add(new x(S.toString()).div(new x(10).pow(b)).mul(d.value)),C=new x(1).div(P.add(E)),G=new x(l.volumeFee).mul(365).div(u).mul(C).mul(100).toNumber(),K=3600*24*365,ae=e.rewardDefaultInfos.map(ie=>{var W,ut;let Ne=ie.mint.decimals,te=r[ie.mint.address];return c<((W=ie.startTime)!=null?W:0)||c>((ut=ie.endTime)!=null?ut:0)||!ie.perSecond||!te||Ne===void 0?0:new x(te.value).mul(new x(ie.perSecond).mul(K)).div(new x(10).pow(Ne)).mul(C).mul(100).toNumber()});return{feeApr:G,rewardsApr:ae,apr:G+ae.reduce((ie,Ne)=>ie+Ne,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var g,k;let l=R.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),m=R.getSqrtPriceX64FromTick(n),d=R.getSqrtPriceX64FromTick(r),f=re(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,c,!u),b=new J(new x(f.amount.sub((k=f.fee)!=null?k:oe).toString()).toFixed(0)),p;if(l.lte(m))p=t?U.getLiquidityFromTokenAmountA(m,d,b,!a):new J(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 J(0):U.getLiquidityFromTokenAmountB(m,d,b);let h=await pe.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:r,liquidity:p,slippage:s,add:a});return{liquidity:p,amountA:t?f:h.amountA,amountB:t?h.amountB:f,amountSlippageA:t?f:h.amountSlippageA,amountSlippageB:t?h.amountSlippageB:f,expirationTime:h.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var h,g,k,w;let c=R.getSqrtPriceX64FromTick(n),u=R.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(R.priceToSqrtPriceX64(new x(t.price),t.mintA.decimals,t.mintB.decimals),c,u,o,a),[d,f]=[re(m.amountA,(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),re(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[b,p]=[re(m.amountA.muln(l),(k=t.mintA.extensions)==null?void 0:k.feeConfig,e,!0),re(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:et(d.expirationTime,f.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(c=>!n[c.id]).map(c=>new Se(c.id));(await He(e,r)).forEach((c,u)=>{!c||(n[r[u].toBase58()]=ci.decode(c.data))});let s=t.map(c=>Ce(new Se(c.programId),new Se(c.id)).publicKey),a=await pe.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>ne(Q({},c),{[u.id]:ne(Q({},n[u.id]),{id:new Se(u.id),version:6,programId:new Se(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:ne(Q({},u.config),{id:new Se(u.config.id),fundOwner:""}),currentPrice:new x(u.price),exBitmapAccount:Ce(new Se(u.programId),new Se(u.id)).publicKey,exBitmapInfo:a[Ce(new Se(u.programId),new Se(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber(),rewardInfos:n[u.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 F=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(oe)||(o=o.add(Oe)),o}static mulDivFloor(e,t,n){if(n.eq(oe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(oe))throw new Error("division by 0");return e.mul(t).add(n.sub(Oe)).div(n)}static x64ToDecimal(e,t){return new x(e.toString()).div(x.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new O(e.mul(x.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Gt).sub(t).mod(Gt)}};function me(i,e){return kn(i.mul(e),64,256)}function lo(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function kn(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var R=class{static sqrtPriceX64ToPrice(e,t,n){return F.x64ToDecimal(e).pow(2).mul(x.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return F.decimalToX64(e.mul(x.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(oe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(oe))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(oe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(oe))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(oe))return e;let o=t.shln(xt);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?F.mulDivCeil(s,e,a):F.mulDivRoundingUp(s,Oe,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 F.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(xt);if(r)return e.add(o.div(t));{let s=F.mulDivRoundingUp(o,Oe,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<ye||e>we)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new O("18445821805675395072"):new O("18446744073709551616");return(t&2)!=0&&(n=me(n,new O("18444899583751176192"))),(t&4)!=0&&(n=me(n,new O("18443055278223355904"))),(t&8)!=0&&(n=me(n,new O("18439367220385607680"))),(t&16)!=0&&(n=me(n,new O("18431993317065453568"))),(t&32)!=0&&(n=me(n,new O("18417254355718170624"))),(t&64)!=0&&(n=me(n,new O("18387811781193609216"))),(t&128)!=0&&(n=me(n,new O("18329067761203558400"))),(t&256)!=0&&(n=me(n,new O("18212142134806163456"))),(t&512)!=0&&(n=me(n,new O("17980523815641700352"))),(t&1024)!=0&&(n=me(n,new O("17526086738831433728"))),(t&2048)!=0&&(n=me(n,new O("16651378430235570176"))),(t&4096)!=0&&(n=me(n,new O("15030750278694412288"))),(t&8192)!=0&&(n=me(n,new O("12247334978884435968"))),(t&16384)!=0&&(n=me(n,new O("8131365268886854656"))),(t&32768)!=0&&(n=me(n,new O("3584323654725218816"))),(t&65536)!=0&&(n=me(n,new O("696457651848324352"))),(t&131072)!=0&&(n=me(n,new O("26294789957507116"))),(t&262144)!=0&&(n=me(n,new O("37481735321082"))),e>0&&(n=ri.div(n)),n}static getTickFromPrice(e,t,n){return R.getTickFromSqrtPriceX64(R.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(rt)||e.lt(it))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new O(t-64),r=lo(n,32,128),o=new O("8000000000000000","hex"),s=0,a=new O(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new O(0))&&s<oi;){c=c.mul(c);let b=c.shrn(127);c=c.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let u=a.shrn(32),m=r.add(u).mul(new O(si)),d=kn(m.sub(new O(ai)),64,128).toNumber(),f=kn(m.add(new O(ui)),64,128).toNumber();return d==f?d:R.getSqrtPriceX64FromTick(f).lte(e)?f:d}},at=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=R.getTickFromSqrtPriceX64(R.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=at.getTickWithPriceAndTickspacing(e,t,n,r),s=R.getSqrtPriceX64FromTick(o);return R.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(oe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(xt),s=t.sub(e);return r?F.mulDivRoundingUp(F.mulDivCeil(o,s,t),Oe,e):F.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(oe))throw new Error("sqrtPriceX64A must greater than 0");return r?F.mulDivCeil(n,t.sub(e),Ie):F.mulDivFloor(n,t.sub(e),Ie)}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?F.mulDivRoundingUp(a,Oe,wn):a.shrn(xt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),F.mulDivFloor(n,wn,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 O(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 O(0),amountB:U.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:c,amountB:u}=U.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new O(new x(c.toString()).mul(l).toFixed(0)),d=new O(new x(u.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:c}){var k,w,A,S;let u=R.priceToSqrtPriceX64(new x(e.price),e.mintA.decimals,e.mintB.decimals),l=R.getSqrtPriceX64FromTick(t),m=R.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,f=U.getAmountsFromLiquidity(u,l,m,r,s),[b,p]=[re(f.amountA,(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,c),re(f.amountB,(w=e.mintB.extensions)==null?void 0:w.feeConfig,a,c)],[h,g]=[re(new O(new x(f.amountA.toString()).mul(d).toFixed(0)),(A=e.mintA.extensions)==null?void 0:A.feeConfig,a,c),re(new O(new x(f.amountB.toString()).mul(d).toFixed(0)),(S=e.mintB.extensions)==null?void 0:S.feeConfig,a,c)];return{liquidity:r,amountA:b,amountB:p,amountSlippageA:h,amountSlippageB:g,expirationTime:et(b.expirationTime,p.expirationTime)}}},st=class{static swapCompute(e,t,n,r,o,s,a,c,u,l,m,d,f,b,p=!1){if(d.eq(oe))throw new Error("amountSpecified must not be 0");if(b||(b=s?it.add(Oe):rt.sub(Oe)),s){if(b.lt(it))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(rt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let h=d.gt(oe),g={amountSpecifiedRemaining:d,amountCalculated:oe,sqrtPriceX64:m,tick:u>f?Math.min(f+V.tickCount(l)-1,u):f,accounts:[],liquidity:c,feeAmount:new O(0)},k=f,w=n[f],A=0,S=!s&&w.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(oe)&&!g.sqrtPriceX64.eq(b);){A>10;let P={};P.sqrtPriceStartX64=g.sqrtPriceX64;let E=I.nextInitTick(w,g.tick,l,s,S),C=E||null,v=null;if(!(C!=null&&C.liquidityGross.gtn(0))){let K=pe.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},k,s);if(!K.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")}k=K.nextStartIndex;let{publicKey:ae}=Y(e,t,k);v=ae,w=n[k];try{C=I.firstInitializedTick(w,s)}catch{throw Error("not found next tick info")}}P.tickNext=C.tick,P.initialized=C.liquidityGross.gtn(0),f!==k&&v&&(g.accounts.push(v),f=k),P.tickNext<ye?P.tickNext=ye:P.tickNext>we&&(P.tickNext=we),P.sqrtPriceNextX64=R.getSqrtPriceX64FromTick(P.tickNext);let G;if(s&&P.sqrtPriceNextX64.lt(b)||!s&&P.sqrtPriceNextX64.gt(b)?G=b:G=P.sqrtPriceNextX64,[g.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=st.swapStepCompute(g.sqrtPriceX64,G,g.liquidity,g.amountSpecifiedRemaining,a,s),g.feeAmount=g.feeAmount.add(P.feeAmount),h?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),g.amountCalculated=g.amountCalculated.sub(P.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(P.amountOut),g.amountCalculated=g.amountCalculated.add(P.amountIn.add(P.feeAmount))),g.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let K=C.liquidityNet;s&&(K=K.mul(Xe)),g.liquidity=U.addDelta(g.liquidity,K)}S=P.tickNext!=g.tick&&!s&&w.startTickIndex===P.tickNext,g.tick=s?P.tickNext-1:P.tickNext}else if(g.sqrtPriceX64!=P.sqrtPriceStartX64){let K=R.getTickFromSqrtPriceX64(g.sqrtPriceX64);S=K!=g.tick&&!s&&w.startTickIndex===K,g.tick=K}++A}try{let{nextStartIndex:P,isExist:E}=V.nextInitializedTickArray(g.tick,l,s,r,o);E&&f!==P&&(g.accounts.push(Y(e,t,P).publicKey),f=P)}catch{}return{allTrade:!0,amountSpecifiedRemaining:oe,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 O(0),amountIn:new O(0),amountOut:new O(0),feeAmount:new O(0)},c=r.gte(oe);if(c){let l=F.mulDivFloor(r,Vt.sub(new O(o.toString())),Vt);a.amountIn=s?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(a.amountIn)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=R.getNextSqrtPriceX64FromInput(e,n,l,s)}else a.amountOut=s?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Xe).gte(a.amountOut)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=R.getNextSqrtPriceX64FromOutput(e,n,r.mul(Xe),s);let u=t.eq(a.sqrtPriceX64Next);return s?(u&&c||(a.amountIn=U.getTokenAmountAFromLiquidity(a.sqrtPriceX64Next,e,n,!0)),u&&!c||(a.amountOut=U.getTokenAmountBFromLiquidity(a.sqrtPriceX64Next,e,n,!1))):(a.amountIn=u&&c?a.amountIn:U.getTokenAmountBFromLiquidity(e,a.sqrtPriceX64Next,n,!0),a.amountOut=u&&!c?a.amountOut:U.getTokenAmountAFromLiquidity(e,a.sqrtPriceX64Next,n,!1)),!c&&a.amountOut.gt(r.mul(Xe))&&(a.amountOut=r.mul(Xe)),c&&!a.sqrtPriceX64Next.eq(t)?a.feeAmount=r.sub(a.amountIn):a.feeAmount=F.mulDivCeil(a.amountIn,new O(o),Vt.sub(new O(o))),[a.sqrtPriceX64Next,a.amountIn,a.amountOut,a.feeAmount]}};var le=60,ot=512,I=class{static getTickArrayAddressByTick(e,t,n,r){let o=I.getTickArrayStartIndexByTick(n,r),{publicKey:s}=Y(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=I.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=le)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*le,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*le,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*le:e+t*le}static mergeTickArrayBitmap(e){let t=new mo(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*le));return[...I.searchLowBitFromStart(e,t,s-1,o,n),...I.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return I.searchHightBitFromStart(e,t,-7680,ot,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=I.getAllInitializedTickArrayStartIndex(n,r,o);for(let c of a){let{publicKey:u}=Y(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}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(u=>I.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===r)break}let c=V.tickCount(o);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>I.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===r)break}let c=V.tickCount(o);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<ye||e>we}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<le;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=le-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<le;){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=R.getSqrtPriceX64FromTick(t),o=R.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new x(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new x(1).div(t),o=at.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=R.getSqrtPriceX64FromTick(o),a=R.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new x(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=R.getSqrtPriceX64FromTick(t),o=R.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new x(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new x(1).div(t),o=at.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=R.getSqrtPriceX64FromTick(o),a=R.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new x(1).div(a)}}};var qe={initializeUser:[111,17,185,250,60,122,38,254],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],openPosition:[135,128,47,77,15,152,240,49],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[46,156,243,118,13,205,251,178],decreaseLiquidity:[160,38,208,111,104,91,44,1],swap:[248,198,158,145,225,117,135,200]},bi=class{static initializeUserInstruction(e,t,n,r){let o=Z([]),s=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:pt.programId,isSigner:!1,isWritable:!1}],a=Buffer.alloc(o.span);o.encode({},a);let c=Buffer.from([...qe.initializeUser,...a]);return new De({keys:s,programId:e,data:c})}static initializeUserInstructions(e){let{programId:t,payer:n,authority:r}=e,{publicKey:o}=Be(t,n),s=this.initializeUserInstruction(t,n,r,o);return{signers:[],instructions:[s],instructionTypes:[he.CreateAccount,he.CustodyInitializeUser],address:{userState:o},lookupTableAddress:[]}}static depositInstruction(e,t,n,r,o,s,a){let c=Z([L("amount")]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:Ut,isSigner:!1,isWritable:!1},{pubkey:pt.programId,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({amount:a},l);let m=Buffer.from([...qe.deposit,...l]);return new De({keys:u,programId:e,data:m})}static async depositInstructions({programId:e,ownerInfo:t,mint:n,amount:r}){let{publicKey:o}=Be(e,t.wallet),s=gi(new T(n.address),o,!0,new T(n.programId)),a=this.depositInstruction(e,t.wallet,o,t.tokenAccount,s,new T(n.address),r);return{signers:[],instructions:[a],instructionTypes:[he.CustodyDeposit],address:{userState:o,userTokenCustody:s},lookupTableAddress:[]}}static withdrawInstruction(e,t,n,r,o,s,a){let c=Z([L("amount")]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:Ut,isSigner:!1,isWritable:!1},{pubkey:pt.programId,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({amount:a},l);let m=Buffer.from([...qe.withdraw,...l]);return new De({keys:u,programId:e,data:m})}static async withdrawInstructions({programId:e,ownerInfo:t,mint:n,amount:r}){let{publicKey:o}=Be(e,t.wallet),s=gi(new T(n.address),o,!0,new T(n.programId)),a=this.withdrawInstruction(e,t.wallet,o,t.tokenAccount,s,new T(n.address),r);return{signers:[],instructions:[a],instructionTypes:[he.CustodyWithdraw],address:{userState:o,userTokenCustody:s},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,m,d,f,b,p,h,g,k,w,A,S,P,E,C,v,G,K,ae){let ie=Z([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),X("liquidity"),L("amountMaxA"),L("amountMaxB"),_e("withMetadata"),ue("optionBaseFlag"),_e("baseFlag")]),Ne=[...ae?[{pubkey:ae,isSigner:!1,isWritable:!0}]:[]],te=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,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:h,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:pt.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Ut,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},...Ne],W=Buffer.alloc(ie.span);ie.encode({tickLowerIndex:A,tickUpperIndex:S,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:E,liquidity:C,amountMaxA:v,amountMaxB:G,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},W);let ut=Buffer.from([...qe.openPosition,...W]);return new De({keys:te,programId:e,data:ut})}static async openPositionFromLiquidityInstructions({custodyProgramId:e,poolInfo:t,poolKeys:n,ownerInfo:r,tickLower:o,tickUpper:s,liquidity:a,amountMaxA:c,amountMaxB:u,withMetadata:l,getEphemeralSigners:m}){let d=[],[f,b]=[new T(t.programId),new T(t.id)],p;if(m)p=new T((await m(1))[0]);else{let K=fi.generate();d.push(K),p=K.publicKey}let h=I.getTickArrayStartIndexByTick(o,t.config.tickSpacing),g=I.getTickArrayStartIndexByTick(s,t.config.tickSpacing),{publicKey:k}=Y(f,b,h),{publicKey:w}=Y(f,b,g),{publicKey:A}=Be(e,r.wallet),{publicKey:S}=se(A,new T(t.mintA.address),new T(t.mintA.programId)),{publicKey:P}=se(A,new T(t.mintB.address),new T(t.mintB.programId)),{publicKey:E}=se(A,p,Te),{publicKey:C}=Ue(f,p),{publicKey:v}=ft(f,b,o,s),G=this.openPositionFromLiquidityInstruction(e,f,r.feePayer,A,p,E,b,v,k,w,C,r.tokenAccountA,r.tokenAccountB,S,P,new T(n.vault.A),new T(n.vault.B),new T(t.mintA.address),new T(t.mintB.address),o,s,h,g,a,c,u,l,pe.isOverflowDefaultTickarrayBitmap(t.config.tickSpacing,[h,g])?Ce(f,b).publicKey:void 0);return{address:{nftMint:p,tickArrayLower:k,tickArrayUpper:w,positionNftAccount:E,personalPosition:C,protocolPosition:v},instructions:[G],signers:d,instructionTypes:[he.CustodyOpenPosition],lookupTableAddress:n.lookupTableAccount?[n.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,m,d,f,b,p,h,g,k,w,A,S,P,E,C,v,G,K,ae){let ie=Z([de("tickLowerIndex"),de("tickUpperIndex"),de("tickArrayLowerStartIndex"),de("tickArrayUpperStartIndex"),X("liquidity"),L("amountMaxA"),L("amountMaxB"),_e("withMetadata"),ue("optionBaseFlag"),_e("baseFlag")]),Ne=[...ae?[{pubkey:ae,isSigner:!1,isWritable:!0}]:[]],te=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,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:h,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:pt.programId,isSigner:!1,isWritable:!1},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Ut,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},...Ne],W=Buffer.alloc(ie.span);ie.encode({tickLowerIndex:A,tickUpperIndex:S,tickArrayLowerStartIndex:P,tickArrayUpperStartIndex:E,liquidity:new pi(0),amountMaxA:v==="MintA"?G:K,amountMaxB:v==="MintA"?K:G,withMetadata:C==="create",baseFlag:v==="MintA",optionBaseFlag:1},W);let ut=Buffer.from([...qe.openPosition,...W]);return new De({keys:te,programId:e,data:ut})}static async openPositionFromBaseInstructions({custodyProgramId:e,poolInfo:t,poolKeys:n,ownerInfo:r,tickLower:o,tickUpper:s,base:a,baseAmount:c,otherAmountMax:u,withMetadata:l,getEphemeralSigners:m}){let d=[],[f,b]=[new T(t.programId),new T(t.id)],p;if(m)p=new T((await m(1))[0]);else{let K=fi.generate();d.push(K),p=K.publicKey}let h=I.getTickArrayStartIndexByTick(o,t.config.tickSpacing),g=I.getTickArrayStartIndexByTick(s,t.config.tickSpacing),{publicKey:k}=Y(f,b,h),{publicKey:w}=Y(f,b,g),{publicKey:A}=Be(e,r.wallet),{publicKey:S}=se(A,new T(t.mintA.address),new T(t.mintA.programId)),{publicKey:P}=se(A,new T(t.mintB.address),new T(t.mintB.programId)),{publicKey:E}=se(A,p,Te),{publicKey:C}=Ue(f,p),{publicKey:v}=ft(f,b,o,s),G=this.openPositionFromBaseInstruction(e,f,r.feePayer,A,p,E,b,v,k,w,C,r.tokenAccountA,r.tokenAccountB,S,P,new T(n.vault.A),new T(n.vault.B),new T(t.mintA.address),new T(t.mintB.address),o,s,h,g,l,a,c,u,pe.isOverflowDefaultTickarrayBitmap(t.config.tickSpacing,[h,g])?Ce(f,b).publicKey:void 0);return{address:{nftMint:p,tickArrayLower:k,tickArrayUpper:w,positionNftAccount:E,personalPosition:C,protocolPosition:v},instructions:[G],signers:d,instructionTypes:[he.CustodyOpenPosition],lookupTableAddress:n.lookupTableAccount?[n.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o,s,a){let c=Z([]),u=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:pt.programId,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span),m=Buffer.from([...qe.closePosition,...l]);return new De({keys:u,programId:e,data:m})}static closePositionInstructions({custodyProgramId:e,poolInfo:t,poolKeys:n,ownerInfo:r,ownerPosition:o}){let s=new T(t.programId),{publicKey:a}=Be(e,r.wallet),c=se(a,o.nftMint,Te).publicKey,{publicKey:u}=Ue(s,o.nftMint),l=this.closePositionInstruction(e,s,r.feePayer,a,o.nftMint,c,u);return{address:{positionNftAccount:c,personalPosition:u},signers:[],instructions:[l],instructionTypes:[he.CustodyClosePosition],lookupTableAddress:n.lookupTableAccount?[n.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,m,d,f,b,p,h,g,k,w,A){let S=Z([X("liquidity"),L("amountMaxA"),L("amountMaxB"),ue("optionBaseFlag"),_e("baseFlag")]),P=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[]],E=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,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:tt,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},...P],C=Buffer.alloc(S.span);S.encode({liquidity:g,amountMaxA:k,amountMaxB:w,optionBaseFlag:0,baseFlag:!1},C);let v=Buffer.from([...qe.increaseLiquidity,...C]);return new De({keys:E,programId:e,data:v})}static increasePositionFromLiquidityInstructions({custodyProgramId:e,poolInfo:t,poolKeys:n,ownerPosition:r,ownerInfo:o,liquidity:s,amountMaxA:a,amountMaxB:c}){let[u,l]=[new T(t.programId),new T(t.id)],m=I.getTickArrayStartIndexByTick(r.tickLower,t.config.tickSpacing),d=I.getTickArrayStartIndexByTick(r.tickUpper,t.config.tickSpacing),{publicKey:f}=Y(u,l,m),{publicKey:b}=Y(u,l,d),{publicKey:p}=Be(e,o.wallet),{publicKey:h}=se(p,new T(t.mintA.address),new T(t.mintA.programId)),{publicKey:g}=se(p,new T(t.mintB.address),new T(t.mintB.programId)),{publicKey:k}=se(p,r.nftMint,Te),{publicKey:w}=Ue(u,r.nftMint),{publicKey:A}=ft(u,l,r.tickLower,r.tickUpper),S=this.increasePositionFromLiquidityInstruction(e,u,o.wallet,p,k,w,l,A,f,b,h,g,new T(n.vault.A),new T(n.vault.B),new T(t.mintA.address),new T(t.mintB.address),s,a,c,pe.isOverflowDefaultTickarrayBitmap(t.config.tickSpacing,[m,d])?Ce(u,l).publicKey:void 0);return{address:{tickArrayLower:f,tickArrayUpper:b,positionNftAccount:k,personalPosition:w,protocolPosition:A},instructions:[S],signers:[],instructionTypes:[he.CustodyIncreasePosition],lookupTableAddress:n.lookupTableAccount?[n.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,c,u,l,m,d,f,b,p,h,g,k,w,A){let S=Z([X("liquidity"),L("amountMaxA"),L("amountMaxB"),ue("optionBaseFlag"),_e("baseFlag")]),P=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[]],E=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,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:tt,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},...P],C=Buffer.alloc(S.span);S.encode({liquidity:new pi(0),amountMaxA:g==="MintA"?k:w,amountMaxB:g==="MintA"?w:k,baseFlag:g==="MintA",optionBaseFlag:1},C);let v=Buffer.from([...qe.increaseLiquidity,...C]);return new De({keys:E,programId:e,data:v})}static increasePositionFromBaseInstructions({custodyProgramId:e,poolInfo:t,poolKeys:n,ownerPosition:r,ownerInfo:o,base:s,baseAmount:a,otherAmountMax:c}){let[u,l]=[new T(t.programId),new T(t.id)],m=I.getTickArrayStartIndexByTick(r.tickLower,t.config.tickSpacing),d=I.getTickArrayStartIndexByTick(r.tickUpper,t.config.tickSpacing),{publicKey:f}=Y(u,l,m),{publicKey:b}=Y(u,l,d),{publicKey:p}=Be(e,o.wallet),{publicKey:h}=se(p,new T(t.mintA.address),new T(t.mintA.programId)),{publicKey:g}=se(p,new T(t.mintB.address),new T(t.mintB.programId)),{publicKey:k}=se(p,r.nftMint,Te),{publicKey:w}=Ue(u,r.nftMint),{publicKey:A}=ft(u,l,r.tickLower,r.tickUpper);return{address:{tickArrayLower:f,tickArrayUpper:b,positionNftAccount:k,personalPosition:w,protocolPosition:A},instructions:[this.increasePositionFromBaseInstruction(e,u,o.feePayer,p,k,w,l,A,f,b,h,g,new T(n.vault.A),new T(n.vault.B),new T(t.mintA.address),new T(t.mintB.address),s,a,c,pe.isOverflowDefaultTickarrayBitmap(t.config.tickSpacing,[m,d])?Ce(u,l).publicKey:void 0)],signers:[],instructionTypes:[he.CustodyIncreasePosition],lookupTableAddress:n.lookupTableAccount?[n.lookupTableAccount]:[]}}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,c,u,l,m,d,f,b,p,h,g,k,w,A,S){let P=Z([X("liquidity"),L("amountMinA"),L("amountMinB")]),E=[...S?[{pubkey:S,isSigner:!1,isWritable:!0}]:[],...g.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.rewardMint,isSigner:!1,isWritable:!1}]).flat()],C=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},...E],v=Buffer.alloc(P.span);P.encode({liquidity:k,amountMinA:w,amountMinB:A},v);let G=Buffer.from([...qe.decreaseLiquidity,...v]);return new De({keys:C,programId:e,data:G})}static decreaseLiquidityInstructions({custodyProgramId:e,poolInfo:t,poolKeys:n,ownerPosition:r,ownerInfo:o,liquidity:s,amountMinA:a,amountMinB:c}){let[u,l]=[new T(t.programId),new T(t.id)],m=I.getTickArrayStartIndexByTick(r.tickLower,t.config.tickSpacing),d=I.getTickArrayStartIndexByTick(r.tickUpper,t.config.tickSpacing),{publicKey:f}=Y(u,l,m),{publicKey:b}=Y(u,l,d),{publicKey:p}=Be(e,o.wallet),{publicKey:h}=se(p,new T(t.mintA.address),new T(t.mintA.programId)),{publicKey:g}=se(p,new T(t.mintB.address),new T(t.mintB.programId)),{publicKey:k}=se(p,r.nftMint,Te),{publicKey:w}=Ue(u,r.nftMint),{publicKey:A}=ft(u,l,r.tickLower,r.tickUpper),S=[];for(let E=0;E<n.rewardInfos.length;E++)S.push({poolRewardVault:new T(n.rewardInfos[E].vault),ownerRewardVault:o.rewardAccounts[E],rewardMint:new T(n.rewardInfos[E].mint.address)});let P=this.decreaseLiquidityInstruction(e,u,o.feePayer,p,k,w,l,A,f,b,h,g,new T(n.vault.A),new T(n.vault.B),new T(t.mintA.address),new T(t.mintB.address),S,s,a,c,pe.isOverflowDefaultTickarrayBitmap(t.config.tickSpacing,[m,d])?Ce(u,l).publicKey:void 0);return{address:{tickArrayLower:f,tickArrayUpper:b,positionNftAccount:k,personalPosition:w,protocolPosition:A},signers:[],instructions:[P],instructionTypes:[he.CustodyDecreasePosition],lookupTableAddress:n.lookupTableAccount?[n.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,c,u,l,m,d,f,b,p,h,g,k,w){let A=Z([L("amount"),L("otherAmountThreshold"),X("sqrtPriceLimitX64"),_e("isBaseInput")]),S=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...f.map(G=>({pubkey:G,isSigner:!1,isWritable:!0}))],{publicKey:P}=Be(e,r),E=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:tt,isSigner:!1,isWritable:!1},{pubkey:Te,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},...S],C=Buffer.alloc(A.span);A.encode({amount:p,otherAmountThreshold:h,sqrtPriceLimitX64:g,isBaseInput:k},C);let v=Buffer.from([...qe.swap,...C]);return new De({keys:E,programId:e,data:v})}static makeSwapBaseInInstructions({custodyProgramId:e,poolInfo:t,poolKeys:n,observationId:r,ownerInfo:o,inputMint:s,amountIn:a,amountOutMin:c,sqrtPriceLimitX64:u,remainingAccounts:l}){let[m,d]=[new T(t.programId),new T(t.id)],[f,b]=[new T(n.vault.A),new T(n.vault.B)],[p,h]=[new T(t.mintA.address),new T(t.mintB.address)],g=t.mintA.address===s.toString(),{publicKey:k}=Be(e,o.wallet),{publicKey:w}=se(k,new T(t.mintA.address),new T(t.mintA.programId)),{publicKey:A}=se(k,new T(t.mintB.address),new T(t.mintB.programId)),S=this.swapInstruction(e,m,o.feePayer,o.wallet,d,new T(t.config.id),g?w:A,g?A:w,g?f:b,g?b:f,g?p:h,g?h:p,l,r,a,c,u,!0,Ce(m,d).publicKey);return{signers:[],instructions:[S],instructionTypes:[he.CustodySwapBaseIn],lookupTableAddress:n.lookupTableAccount?[n.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({custodyProgramId:e,poolInfo:t,poolKeys:n,observationId:r,ownerInfo:o,outputMint:s,amountOut:a,amountInMax:c,sqrtPriceLimitX64:u,remainingAccounts:l}){let[m,d]=[new T(t.programId),new T(t.id)],[f,b]=[new T(n.vault.A),new T(n.vault.B)],[p,h]=[new T(t.mintA.address),new T(t.mintB.address)],g=t.mintA.address===s.toBase58(),{publicKey:k}=Be(e,o.wallet),{publicKey:w}=se(k,new T(t.mintA.address),new T(t.mintA.programId)),{publicKey:A}=se(k,new T(t.mintB.address),new T(t.mintB.programId)),S=this.swapInstruction(e,m,o.feePayer,o.wallet,d,new T(t.config.id),g?A:w,g?w:A,g?b:f,g?f:b,g?h:p,g?p:h,l,r,a,c,u,!1,Ce(m,d).publicKey);return{signers:[],instructions:[S],instructionTypes:[he.CustodySwapBaseOut],lookupTableAddress:n.lookupTableAccount?[n.lookupTableAccount]:[],address:{}}}};export{bi as CustodyInstrument};
//# sourceMappingURL=custody_instrument.mjs.map