@cobaltx/sdk-v2
Version:
An SDK for building applications on top of CobaltX.
9 lines • 203 kB
JavaScript
"use strict";var Mr=Object.create;var cn=Object.defineProperty;var Or=Object.getOwnPropertyDescriptor;var Er=Object.getOwnPropertyNames;var _r=Object.getPrototypeOf,Dr=Object.prototype.hasOwnProperty;var Fr=(r,e)=>{for(var t in e)cn(r,t,{get:e[t],enumerable:!0})},Si=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Er(e))!Dr.call(r,i)&&i!==t&&cn(r,i,{get:()=>e[i],enumerable:!(n=Or(e,i))||n.enumerable});return r};var ye=(r,e,t)=>(t=r!=null?Mr(_r(r)):{},Si(e||!r||!r.__esModule?cn(t,"default",{value:r,enumerable:!0}):t,r)),vr=r=>Si(cn({},"__esModule",{value:!0}),r);var As={};Fr(As,{AMM_CONFIG_SEED:()=>br,BIT_PRECISION:()=>oi,Clmm:()=>On,ClmmConfigLayout:()=>hi,ClmmInstrument:()=>ce,EXTENSION_TICKARRAY_BITMAP_SIZE:()=>Rn,FEE_RATE_DENOMINATOR:()=>rn,FETCH_TICKARRAY_COUNT:()=>hr,Fee:()=>fr,LOG_B_2_X32:()=>si,LOG_B_P_ERR_MARGIN_LOWER_X64:()=>ai,LOG_B_P_ERR_MARGIN_UPPER_X64:()=>ci,LiquidityMath:()=>Q,LockClPositionLayoutV2:()=>ws,LockPositionLayout:()=>ys,MAX_SQRT_PRICE_X64:()=>Ze,MAX_SQRT_PRICE_X64_SUB_ONE:()=>as,MAX_TICK:()=>Ne,MIN_SQRT_PRICE_X64:()=>Qe,MIN_SQRT_PRICE_X64_ADD_ONE:()=>ss,MIN_TICK:()=>xe,MathUtil:()=>U,MaxU64:()=>Sn,MaxUint128:()=>ri,NEGATIVE_ONE:()=>it,OBSERVATION_SEED:()=>Tr,ONE:()=>je,OPERATION_SEED:()=>Pr,ObservationInfoLayout:()=>Bi,ObservationLayout:()=>xr,OperationLayout:()=>xi,POOL_LOCK_ID_SEED:()=>yi,POOL_REWARD_VAULT_SEED:()=>wr,POOL_SEED:()=>gr,POOL_TICK_ARRAY_BITMAP_SEED:()=>kr,POOL_VAULT_SEED:()=>yr,POSITION_SEED:()=>pi,PoolInfoLayout:()=>sn,PoolUtils:()=>de,PositionInfoLayout:()=>vt,PositionRewardInfoLayout:()=>Sr,PositionUtils:()=>_t,ProtocolPositionLayout:()=>gs,Q128:()=>nn,Q64:()=>_e,RewardInfo:()=>Ir,SqrtPriceMath:()=>v,SwapMath:()=>Pt,TICK_ARRAY_BITMAP_SIZE:()=>At,TICK_ARRAY_SEED:()=>Ar,TICK_ARRAY_SIZE:()=>we,TICK_SPACINGS:()=>cs,TickArrayBitmap:()=>rt,TickArrayBitmapExtensionLayout:()=>ki,TickArrayBitmapExtensionUtils:()=>Ft,TickArrayLayout:()=>Dt,TickLayout:()=>Cr,TickMath:()=>kt,TickQuery:()=>J,TickUtils:()=>R,U64Resolution:()=>Lt,U64_IGNORE_RANGE:()=>ls,ZERO:()=>$,clmmComputeInfoToApiInfo:()=>Pi,getLiquidityFromAmounts:()=>fs,getPdaAmmConfigId:()=>ps,getPdaExBitmapAccount:()=>ge,getPdaLockClPositionIdV2:()=>Et,getPdaLockPositionId:()=>Ln,getPdaMetadataKey:()=>Mt,getPdaObservationAccount:()=>gi,getPdaOperationAccount:()=>Ot,getPdaPersonalPositionAddress:()=>Ke,getPdaPoolId:()=>fi,getPdaPoolRewardVaulId:()=>bi,getPdaPoolVaultId:()=>Kn,getPdaProtocolPositionAddress:()=>Ge,getPdaTickArrayAddress:()=>j,i16ToBytes:()=>ms,i32ToBytes:()=>on,isZero:()=>Rt,leadingZeros:()=>Cn,leastSignificantBit:()=>di,mockCreatePoolInfo:()=>us,mockV3CreatePoolInfo:()=>ui,mostSignificantBit:()=>mi,trailingZeros:()=>Nn,u16ToBytes:()=>li,u32ToBytes:()=>ds});module.exports=vr(As);var ut=require("@solana/spl-token"),vn=require("@solana/web3.js");var Wt=require("lodash");var _n=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}},Ci={},Vr={};function Te(r){let e=(0,Wt.get)(Ci,r);if(!e){let t=(0,Wt.get)(Vr,r);e=new _n({name:r,logLevel:t}),(0,Wt.set)(Ci,r,e)}return e}var Dn=Te("CobaltX_accountInfo_util");async function ot(r,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:o=100}={batchRequest:!1,...t},s=Fn(e,o),a=new Array(s.length).fill([]);if(n){let u=s.map(d=>{let m=r._buildArgs([d.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),c=Fn(u,10);a=(await(await Promise.all(c.map(async d=>await r._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&Dn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(m=>{if(m){let{data:p,executable:g,lamports:f,owner:y,rentEpoch:b}=m;return p.length!==2&&p[1]!=="base64"&&Dn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:f,owner:new vn.PublicKey(y),rentEpoch:b}}return null})))}else try{a=await Promise.all(s.map(u=>r.getMultipleAccountsInfo(u,i)))}catch(u){u instanceof Error&&Dn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function st(r,e,t){let n=await ot(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>({...i,accountInfo:n[o]}))}async function Ni({connection:r,mints:e,network:t,config:n}){var s,a,u;if(e.length===0)return{};let i=await st(r,e.map(c=>({pubkey:Tt(c,t)})),n),o={};for(let c of i){if(!c.accountInfo||c.accountInfo.data.length<ut.MINT_SIZE){console.log("invalid mint account",c.pubkey.toBase58());continue}let l=(0,ut.unpackMint)(c.pubkey,c.accountInfo,(s=c.accountInfo)==null?void 0:s.owner);o[c.pubkey.toString()]={...l,programId:((a=c.accountInfo)==null?void 0:a.owner)||ut.TOKEN_PROGRAM_ID,feeConfig:(u=(0,ut.getTransferFeeConfig)(l))!=null?u:void 0}}return o[vn.PublicKey.default.toBase58()]=o[ue(t).WSOLMint.toBase58()],o}var nt=ye(require("bn.js"));var xt=9e15,pt=1e9,Vn="0123456789abcdef",mn="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",dn="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Wn={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-xt,maxE:xt,crypto:!1},Mi,at,G=!0,fn="[DecimalError] ",dt=fn+"Invalid argument: ",Oi=fn+"Precision limit exceeded",Ei=fn+"crypto unavailable",_i="[object Decimal]",Ie=Math.floor,Ae=Math.pow,Wr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,qr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Ur=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Di=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,He=1e7,W=7,Gr=9007199254740991,Xr=mn.length-1,qn=dn.length-1,I={toStringTag:_i};I.absoluteValue=I.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),E(r)};I.ceil=function(){return E(new this.constructor(this),this.e+1,2)};I.clampedTo=I.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(dt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};I.comparedTo=I.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};I.cosine=I.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+W,n.rounding=1,t=Hr(n,qi(n,t)),n.precision=r,n.rounding=e,E(at==2||at==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};I.cubeRoot=I.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,d=l.constructor;if(!l.isFinite()||l.isZero())return new d(l);for(G=!1,o=l.s*Ae(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=he(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Ae(t,1/3),r=Ie((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new d(t),n.s=l.s):n=new d(o.toString()),s=(r=d.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=oe(c.plus(l).times(a),c.plus(u),s+2,1),he(a.d).slice(0,s)===(t=he(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(E(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(E(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return G=!0,E(n,r,d.rounding,e)};I.decimalPlaces=I.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-Ie(this.e/W))*W,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};I.dividedBy=I.div=function(r){return oe(this,new this.constructor(r))};I.dividedToIntegerBy=I.divToInt=function(r){var e=this,t=e.constructor;return E(oe(e,new t(r),0,1,1),t.precision,t.rounding)};I.equals=I.eq=function(r){return this.cmp(r)===0};I.floor=function(){return E(new this.constructor(this),this.e+1,3)};I.greaterThan=I.gt=function(r){return this.cmp(r)>0};I.greaterThanOrEqualTo=I.gte=function(r){var e=this.cmp(r);return e==1||e===0};I.hyperbolicCosine=I.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/gn(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=It(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return E(o,s.precision=t,s.rounding=n,!0)};I.hyperbolicSine=I.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=It(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/gn(5,r)),i=It(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,E(i,e,t,!0)};I.hyperbolicTangent=I.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,oe(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};I.inverseCosine=I.acos=function(){var r=this,e=r.constructor,t=r.abs().cmp(1),n=e.precision,i=e.rounding;return t!==-1?t===0?r.isNeg()?$e(e,n,i):new e(0):new e(NaN):r.isZero()?$e(e,n+4,i).times(.5):(e.precision=n+6,e.rounding=1,r=new e(1).minus(r).div(r.plus(1)).sqrt().atan(),e.precision=n,e.rounding=i,r.times(2))};I.inverseHyperbolicCosine=I.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,G=!1,t=t.times(t).minus(1).sqrt().plus(t),G=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};I.inverseHyperbolicSine=I.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,G=!1,t=t.times(t).plus(1).sqrt().plus(t),G=!0,n.precision=r,n.rounding=e,t.ln())};I.inverseHyperbolicTangent=I.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?E(new o(i),r,e,!0):(o.precision=t=n-i.e,i=oe(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};I.inverseSine=I.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=$e(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};I.inverseTangent=I.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,d=l.precision,m=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&d+4<=qn)return s=$e(l,d+4,m).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(d+4<=qn)return s=$e(l,d+4,m).times(.5),s.s=c.s,s}for(l.precision=a=d+10,l.rounding=1,t=Math.min(28,a/W+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(G=!1,e=Math.ceil(a/W),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),G=!0,E(s,l.precision=d,l.rounding=m,!0)};I.isFinite=function(){return!!this.d};I.isInteger=I.isInt=function(){return!!this.d&&Ie(this.e/W)>this.d.length-2};I.isNaN=function(){return!this.s};I.isNegative=I.isNeg=function(){return this.s<0};I.isPositive=I.isPos=function(){return this.s>0};I.isZero=function(){return!!this.d&&this.d[0]===0};I.lessThan=I.lt=function(r){return this.cmp(r)<0};I.lessThanOrEqualTo=I.lte=function(r){return this.cmp(r)<1};I.logarithm=I.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,d=l.precision,m=l.rounding,p=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(G=!1,a=d+p,s=mt(c,a),n=e?pn(l,a+10):mt(r,a),u=oe(s,n,a,1),qt(u.d,i=d,m))do if(a+=10,s=mt(c,a),n=e?pn(l,a+10):mt(r,a),u=oe(s,n,a,1),!o){+he(u.d).slice(i+1,i+15)+1==1e14&&(u=E(u,d+1,0));break}while(qt(u.d,i+=10,m));return G=!0,E(u,d,m)};I.minus=I.sub=function(r){var e,t,n,i,o,s,a,u,c,l,d,m,p=this,g=p.constructor;if(r=new g(r),!p.d||!r.d)return!p.s||!r.s?r=new g(NaN):p.d?r.s=-r.s:r=new g(r.d||p.s!==r.s?p:NaN),r;if(p.s!=r.s)return r.s=-r.s,p.plus(r);if(c=p.d,m=r.d,a=g.precision,u=g.rounding,!c[0]||!m[0]){if(m[0])r.s=-r.s;else if(c[0])r=new g(p);else return new g(u===3?-0:0);return G?E(r,a,u):r}if(t=Ie(r.e/W),l=Ie(p.e/W),c=c.slice(),o=l-t,o){for(d=o<0,d?(e=c,o=-o,s=m.length):(e=m,t=l,s=c.length),n=Math.max(Math.ceil(a/W),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=m.length,d=n<s,d&&(s=n),n=0;n<s;n++)if(c[n]!=m[n]){d=c[n]<m[n];break}o=0}for(d&&(e=c,c=m,m=e,r.s=-r.s),s=c.length,n=m.length-s;n>0;--n)c[s++]=0;for(n=m.length;n>o;){if(c[--n]<m[n]){for(i=n;i&&c[--i]===0;)c[i]=He-1;--c[i],c[n]+=He}c[n]-=m[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=bn(c,t),G?E(r,a,u):r):new g(u===3?-0:0)};I.modulo=I.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?E(new n(t),n.precision,n.rounding):(G=!1,n.modulo==9?(e=oe(t,r.abs(),0,3,1),e.s*=r.s):e=oe(t,r,0,n.modulo,1),e=e.times(r),G=!0,t.minus(e))};I.naturalExponential=I.exp=function(){return Un(this)};I.naturalLogarithm=I.ln=function(){return mt(this)};I.negated=I.neg=function(){var r=new this.constructor(this);return r.s=-r.s,E(r)};I.plus=I.add=function(r){var e,t,n,i,o,s,a,u,c,l,d=this,m=d.constructor;if(r=new m(r),!d.d||!r.d)return!d.s||!r.s?r=new m(NaN):d.d||(r=new m(r.d||d.s===r.s?d:NaN)),r;if(d.s!=r.s)return r.s=-r.s,d.minus(r);if(c=d.d,l=r.d,a=m.precision,u=m.rounding,!c[0]||!l[0])return l[0]||(r=new m(d)),G?E(r,a,u):r;if(o=Ie(d.e/W),n=Ie(r.e/W),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/W),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/He|0,c[i]%=He;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=bn(c,n),G?E(r,a,u):r};I.precision=I.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(dt+r);return t.d?(e=Fi(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};I.round=function(){var r=this,e=r.constructor;return E(new e(r),r.e+1,e.rounding)};I.sine=I.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+W,n.rounding=1,t=Yr(n,qi(n,t)),n.precision=r,n.rounding=e,E(at>2?t.neg():t,r,e,!0)):new n(NaN)};I.squareRoot=I.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(G=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=he(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=Ie((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(oe(s,o,t+2,1)).times(.5),he(o.d).slice(0,t)===(e=he(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(E(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(E(n,u+1,1),r=!n.times(n).eq(s));break}return G=!0,E(n,u,l.rounding,r)};I.tangent=I.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=oe(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,E(at==2||at==4?t.neg():t,r,e,!0)):new n(NaN)};I.times=I.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,d=l.constructor,m=l.d,p=(r=new d(r)).d;if(r.s*=l.s,!m||!m[0]||!p||!p[0])return new d(!r.s||m&&!m[0]&&!p||p&&!p[0]&&!m?NaN:!m||!p?r.s/0:r.s*0);for(t=Ie(l.e/W)+Ie(r.e/W),u=m.length,c=p.length,u<c&&(o=m,m=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+p[n]*m[i-n-1]+e,o[i--]=a%He|0,e=a/He|0;o[i]=(o[i]+e)%He|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=bn(o,t),G?E(r,d.precision,d.rounding):r};I.toBinary=function(r,e){return Gn(this,2,r,e)};I.toDecimalPlaces=I.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(Ee(r,0,pt),e===void 0?e=n.rounding:Ee(e,0,8),E(t,r+t.e+1,e))};I.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=et(n,!0):(Ee(r,0,pt),e===void 0?e=i.rounding:Ee(e,0,8),n=E(new i(n),r+1,e),t=et(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};I.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=et(i):(Ee(r,0,pt),e===void 0?e=o.rounding:Ee(e,0,8),n=E(new o(i),r+i.e+1,e),t=et(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};I.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,d,m,p=this,g=p.d,f=p.constructor;if(!g)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=Fi(g)-p.e-1,s=o%W,e.d[0]=Ae(10,s<0?W+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(dt+a);r=a.gt(e)?o>0?e:c:a}for(G=!1,a=new f(he(g)),l=f.precision,f.precision=o=g.length*W*2;d=oe(a,e,0,1,1),i=t.plus(d.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(d.times(i)),u=i,i=e,e=a.minus(d.times(i)),a=i;return i=oe(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=p.s,m=oe(c,n,o,1).minus(p).abs().cmp(oe(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,G=!0,m};I.toHexadecimal=I.toHex=function(r,e){return Gn(this,16,r,e)};I.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:Ee(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(G=!1,t=oe(t,r,0,e,1).times(r),G=!0,E(t)):(r.s=t.s,t=r),t};I.toNumber=function(){return+this};I.toOctal=function(r,e){return Gn(this,8,r,e)};I.toPower=I.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Ae(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return E(a,n,o);if(e=Ie(r.e/W),e>=r.d.length-1&&(t=c<0?-c:c)<=Gr)return i=vi(u,a,t,n),r.s<0?new u(1).div(i):E(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Ae(+a,c),e=t==0||!isFinite(t)?Ie(c*(Math.log("0."+he(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(G=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Un(r.times(mt(a,n+t)),n),i.d&&(i=E(i,n+5,1),qt(i.d,n,o)&&(e=n+10,i=E(Un(r.times(mt(a,e+t)),e),e+5,1),+he(i.d).slice(n+1,n+15)+1==1e14&&(i=E(i,n+1,0)))),i.s=s,G=!0,u.rounding=o,E(i,n,o))};I.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=et(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ee(r,1,pt),e===void 0?e=i.rounding:Ee(e,0,8),n=E(new i(n),r,e),t=et(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};I.toSignificantDigits=I.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(Ee(r,1,pt),e===void 0?e=n.rounding:Ee(e,0,8)),E(new n(t),r,e)};I.toString=function(){var r=this,e=r.constructor,t=et(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};I.truncated=I.trunc=function(){return E(new this.constructor(this),this.e+1,1)};I.valueOf=I.toJSON=function(){var r=this,e=r.constructor,t=et(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function he(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=W-n.length,t&&(o+=lt(t)),o+=n;s=r[e],n=s+"",t=W-n.length,t&&(o+=lt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ee(r,e,t){if(r!==~~r||r<e||r>t)throw Error(dt+r)}function qt(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=W,i=0):(i=Math.ceil((e+1)/W),e%=W),o=Ae(10,W-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Ae(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Ae(10,e-3)-1,s}function un(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=Vn.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function Hr(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/gn(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=It(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var oe=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,d,m,p,g,f,y,b,w,A,k,T,P,B,x,C,D,S,N,V=n.constructor,F=n.s==i.s?1:-1,Y=n.d,X=i.d;if(!Y||!Y[0]||!X||!X[0])return new V(!n.s||!i.s||(Y?X&&Y[0]==X[0]:!X)?NaN:Y&&Y[0]==0||!X?F*0:F/0);for(u?(p=1,l=n.e-i.e):(u=He,p=W,l=Ie(n.e/p)-Ie(i.e/p)),S=X.length,C=Y.length,b=new V(F),w=b.d=[],d=0;X[d]==(Y[d]||0);d++);if(X[d]>(Y[d]||0)&&l--,o==null?(P=o=V.precision,s=V.rounding):a?P=o+(n.e-i.e)+1:P=o,P<0)w.push(1),g=!0;else{if(P=P/p+2|0,d=0,S==1){for(m=0,X=X[0],P++;(d<C||m)&&P--;d++)B=m*u+(Y[d]||0),w[d]=B/X|0,m=B%X|0;g=m||d<C}else{for(m=u/(X[0]+1)|0,m>1&&(X=r(X,m,u),Y=r(Y,m,u),S=X.length,C=Y.length),x=S,A=Y.slice(0,S),k=A.length;k<S;)A[k++]=0;N=X.slice(),N.unshift(0),D=X[0],X[1]>=u/2&&++D;do m=0,c=e(X,A,S,k),c<0?(T=A[0],S!=k&&(T=T*u+(A[1]||0)),m=T/D|0,m>1?(m>=u&&(m=u-1),f=r(X,m,u),y=f.length,k=A.length,c=e(f,A,y,k),c==1&&(m--,t(f,S<y?N:X,y,u))):(m==0&&(c=m=1),f=X.slice()),y=f.length,y<k&&f.unshift(0),t(A,f,k,u),c==-1&&(k=A.length,c=e(X,A,S,k),c<1&&(m++,t(A,S<k?N:X,k,u))),k=A.length):c===0&&(m++,A=[0]),w[d++]=m,c&&A[0]?A[k++]=Y[x]||0:(A=[Y[x]],k=1);while((x++<C||A[0]!==void 0)&&P--);g=A[0]!==void 0}w[0]||w.shift()}if(p==1)b.e=l,Mi=g;else{for(d=1,m=w[0];m>=10;m/=10)d++;b.e=d+l*p-1,E(b,a?o+b.e+1:o,s,g)}return b}}();function E(r,e,t,n){var i,o,s,a,u,c,l,d,m,p=r.constructor;e:if(e!=null){if(d=r.d,!d)return r;for(i=1,a=d[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=W,s=e,l=d[m=0],u=l/Ae(10,i-s-1)%10|0;else if(m=Math.ceil((o+1)/W),a=d.length,m>=a)if(n){for(;a++<=m;)d.push(0);l=u=0,i=1,o%=W,s=o-W+1}else break e;else{for(l=a=d[m],i=1;a>=10;a/=10)i++;o%=W,s=o-W+i,u=s<0?0:l/Ae(10,i-s-1)%10|0}if(n=n||e<0||d[m+1]!==void 0||(s<0?l:l%Ae(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Ae(10,i-s):0:d[m-1])%10&1||t==(r.s<0?8:7)),e<1||!d[0])return d.length=0,c?(e-=r.e+1,d[0]=Ae(10,(W-e%W)%W),r.e=-e||0):d[0]=r.e=0,r;if(o==0?(d.length=m,a=1,m--):(d.length=m+1,a=Ae(10,W-o),d[m]=s>0?(l/Ae(10,i-s)%Ae(10,s)|0)*a:0),c)for(;;)if(m==0){for(o=1,s=d[0];s>=10;s/=10)o++;for(s=d[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,d[0]==He&&(d[0]=1));break}else{if(d[m]+=a,d[m]!=He)break;d[m--]=0,a=1}for(o=d.length;d[--o]===0;)d.pop()}return G&&(r.e>p.maxE?(r.d=null,r.e=NaN):r.e<p.minE&&(r.e=0,r.d=[0])),r}function et(r,e,t){if(!r.isFinite())return Wi(r);var n,i=r.e,o=he(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+lt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+lt(-i-1)+o,t&&(n=t-s)>0&&(o+=lt(n))):i>=s?(o+=lt(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+lt(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=lt(n))),o}function bn(r,e){var t=r[0];for(e*=W;t>=10;t/=10)e++;return e}function pn(r,e,t){if(e>Xr)throw G=!0,t&&(r.precision=t),Error(Oi);return E(new r(mn),e,1,!0)}function $e(r,e,t){if(e>qn)throw Error(Oi);return E(new r(dn),e,t,!0)}function Fi(r){var e=r.length-1,t=e*W+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function lt(r){for(var e="";r--;)e+="0";return e}function vi(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/W+4);for(G=!1;;){if(t%2&&(o=o.times(e),Li(o.d,s)&&(i=!0)),t=Ie(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),Li(e.d,s)}return G=!0,o}function Ki(r){return r.d[r.d.length-1]&1}function Vi(r,e,t){for(var n,i,o=new r(e[0]),s=0;++s<e.length;){if(i=new r(e[s]),!i.s){o=i;break}n=o.cmp(i),(n===t||n===0&&o.s===t)&&(o=i)}return o}function Un(r,e){var t,n,i,o,s,a,u,c=0,l=0,d=0,m=r.constructor,p=m.rounding,g=m.precision;if(!r.d||!r.d[0]||r.e>17)return new m(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(G=!1,u=g):u=e,a=new m(.03125);r.e>-2;)r=r.times(a),d+=5;for(n=Math.log(Ae(2,d))/Math.LN10*2+5|0,u+=n,t=o=s=new m(1),m.precision=u;;){if(o=E(o.times(r),u,1),t=t.times(++l),a=s.plus(oe(o,t,u,1)),he(a.d).slice(0,u)===he(s.d).slice(0,u)){for(i=d;i--;)s=E(s.times(s),u,1);if(e==null)if(c<3&&qt(s.d,u-n,p,c))m.precision=u+=10,t=o=a=new m(1),l=0,c++;else return E(s,m.precision=g,p,G=!0);else return m.precision=g,s}s=a}}function mt(r,e){var t,n,i,o,s,a,u,c,l,d,m,p=1,g=10,f=r,y=f.d,b=f.constructor,w=b.rounding,A=b.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new b(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(G=!1,l=A):l=e,b.precision=l+=g,t=he(y),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=he(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new b("0."+t),o++):f=new b(n+"."+t.slice(1))}else return c=pn(b,l+2,A).times(o+""),f=mt(new b(n+"."+t.slice(1)),l-g).plus(c),b.precision=A,e==null?E(f,A,w,G=!0):f;for(d=f,u=s=f=oe(f.minus(1),f.plus(1),l,1),m=E(f.times(f),l,1),i=3;;){if(s=E(s.times(m),l,1),c=u.plus(oe(s,new b(i),l,1)),he(c.d).slice(0,l)===he(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(pn(b,l+2,A).times(o+""))),u=oe(u,new b(p),l,1),e==null)if(qt(u.d,l-g,w,a))b.precision=l+=g,c=s=f=oe(d.minus(1),d.plus(1),l,1),m=E(f.times(f),l,1),i=a=1;else return E(u,b.precision=A,w,G=!0);else return b.precision=A,u;u=c,i+=2}}function Wi(r){return String(r.s*r.s/0)}function ln(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%W,t<0&&(n+=W),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=W;n<i;)r.d.push(+e.slice(n,n+=W));e=e.slice(n),n=W-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),G&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function zr(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Di.test(e))return ln(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(qr.test(e))t=16,e=e.toLowerCase();else if(Wr.test(e))t=2;else if(Ur.test(e))t=8;else throw Error(dt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=vi(n,new n(t),o,o*2)),c=un(e,t,He),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=bn(c,l),r.d=c,G=!1,s&&(r=oe(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Ae(2,u):Ut.pow(2,u))),G=!0,r)}function Yr(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:It(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/gn(5,t)),e=It(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function It(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,d=Math.ceil(l/W);for(G=!1,u=t.times(t),a=new r(n);;){if(s=oe(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=oe(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[d]!==void 0){for(o=d;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return G=!0,s.d.length=d+1,s}function gn(r,e){for(var t=r;--e;)t*=r;return t}function qi(r,e){var t,n=e.s<0,i=$e(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return at=n?4:1,e;if(t=e.divToInt(i),t.isZero())at=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return at=Ki(t)?n?2:3:n?4:1,e;at=Ki(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Gn(r,e,t,n){var i,o,s,a,u,c,l,d,m,p=r.constructor,g=t!==void 0;if(g?(Ee(t,1,pt),n===void 0?n=p.rounding:Ee(n,0,8)):(t=p.precision,n=p.rounding),!r.isFinite())l=Wi(r);else{for(l=et(r),s=l.indexOf("."),g?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),m=new p(1),m.e=l.length-s,m.d=un(et(m),10,i),m.e=m.d.length),d=un(l,10,i),o=u=d.length;d[--u]==0;)d.pop();if(!d[0])l=g?"0p+0":"0";else{if(s<0?o--:(r=new p(r),r.d=d,r.e=o,r=oe(r,m,t,n,0,i),d=r.d,o=r.e,c=Mi),s=d[t],a=i/2,c=c||d[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&d[t-1]&1||n===(r.s<0?8:7)),d.length=t,c)for(;++d[--t]>i-1;)d[t]=0,t||(++o,d.unshift(1));for(u=d.length;!d[u-1];--u);for(s=0,l="";s<u;s++)l+=Vn.charAt(d[s]);if(g){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(d=un(l,i,e),u=d.length;!d[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Vn.charAt(d[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function Li(r,e){if(r.length>e)return r.length=e,!0}function jr(r){return new this(r).abs()}function Qr(r){return new this(r).acos()}function Zr(r){return new this(r).acosh()}function Jr(r,e){return new this(r).plus(e)}function $r(r){return new this(r).asin()}function eo(r){return new this(r).asinh()}function to(r){return new this(r).atan()}function no(r){return new this(r).atanh()}function io(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=$e(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?$e(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=$e(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(oe(r,e,o,1)),e=$e(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(oe(r,e,o,1)),t}function ro(r){return new this(r).cbrt()}function oo(r){return E(r=new this(r),r.e+1,2)}function so(r,e,t){return new this(r).clamp(e,t)}function ao(r){if(!r||typeof r!="object")throw Error(fn+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,pt,"rounding",0,8,"toExpNeg",-xt,0,"toExpPos",0,xt,"maxE",0,xt,"minE",-xt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Wn[t]),(n=r[t])!==void 0)if(Ie(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(dt+t+": "+n);if(t="crypto",i&&(this[t]=Wn[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(Ei);else this[t]=!1;else throw Error(dt+t+": "+n);return this}function co(r){return new this(r).cos()}function uo(r){return new this(r).cosh()}function Ui(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,Ri(o)){c.s=o.s,G?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;G?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return ln(c,o.toString())}if(u==="string")return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Di.test(o)?ln(c,o):zr(c,o);if(u==="bigint")return o<0?(o=-o,c.s=-1):c.s=1,ln(c,o.toString());throw Error(dt+o)}if(i.prototype=I,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=ao,i.clone=Ui,i.isDecimal=Ri,i.abs=jr,i.acos=Qr,i.acosh=Zr,i.add=Jr,i.asin=$r,i.asinh=eo,i.atan=to,i.atanh=no,i.atan2=io,i.cbrt=ro,i.ceil=oo,i.clamp=so,i.cos=co,i.cosh=uo,i.div=lo,i.exp=mo,i.floor=po,i.hypot=fo,i.ln=bo,i.log=go,i.log10=wo,i.log2=yo,i.max=Ao,i.min=Po,i.mod=ko,i.mul=To,i.pow=ho,i.random=Bo,i.round=xo,i.sign=Io,i.sin=So,i.sinh=Co,i.sqrt=No,i.sub=Ko,i.sum=Lo,i.tan=Ro,i.tanh=Mo,i.trunc=Oo,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function lo(r,e){return new this(r).div(e)}function mo(r){return new this(r).exp()}function po(r){return E(r=new this(r),r.e+1,3)}function fo(){var r,e,t=new this(0);for(G=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return G=!0,new this(1/0);t=e}return G=!0,t.sqrt()}function Ri(r){return r instanceof Ut||r&&r.toStringTag===_i||!1}function bo(r){return new this(r).ln()}function go(r,e){return new this(r).log(e)}function yo(r){return new this(r).log(2)}function wo(r){return new this(r).log(10)}function Ao(){return Vi(this,arguments,-1)}function Po(){return Vi(this,arguments,1)}function ko(r,e){return new this(r).mod(e)}function To(r,e){return new this(r).mul(e)}function ho(r,e){return new this(r).pow(e)}function Bo(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:Ee(r,1,pt),n=Math.ceil(r/W),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(Ei);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=W,n&&r&&(i=Ae(10,W-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=W)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<W&&(t-=W-n)}return s.e=t,s.d=a,s}function xo(r){return E(r=new this(r),r.e+1,this.rounding)}function Io(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function So(r){return new this(r).sin()}function Co(r){return new this(r).sinh()}function No(r){return new this(r).sqrt()}function Ko(r,e){return new this(r).sub(e)}function Lo(){var r=0,e=arguments,t=new this(e[r]);for(G=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return G=!0,E(t,this.precision,this.rounding)}function Ro(r){return new this(r).tan()}function Mo(r){return new this(r).tanh()}function Oo(r){return E(r=new this(r),r.e+1,1)}I[Symbol.for("nodejs.util.inspect.custom")]=I.toString;I[Symbol.toStringTag]="Decimal";var Ut=I.constructor=Ui(Wn);mn=new Ut(mn);dn=new Ut(dn);var K=Ut;var ji=ye(require("big.js")),zt=ye(require("bn.js"));var Gi=ye(require("toformat")),Eo=Gi.default,Gt=Eo;var Xt=ye(require("big.js")),Hi=ye(require("bn.js")),zi=ye(require("decimal.js-light"));var St=ye(require("bn.js"));var Xi=9007199254740991;function Pe(r){let e=Te("CobaltX_parseBigNumberish");if(r instanceof St.default)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new St.default(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Xi||r<=-Xi)&&e.logWithError(`BigNumberish number overflow: ${r}`),new St.default(String(r))):typeof r=="bigint"?new St.default(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new St.default(0))}var yn=Te("module/fraction"),Xn=Gt(Xt.default),Ht=Gt(zi.default),Do={[0]:Ht.ROUND_DOWN,[1]:Ht.ROUND_HALF_UP,[2]:Ht.ROUND_UP},Fo={[0]:Xt.default.roundDown,[1]:Xt.default.roundHalfUp,[2]:Xt.default.roundUp},ne=class{constructor(e,t=new Hi.default(1)){this.numerator=Pe(e),this.denominator=Pe(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ne(this.denominator,this.numerator)}add(e){let t=e instanceof ne?e:new ne(Pe(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.add(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ne?e:new ne(Pe(e));return this.denominator.eq(t.denominator)?new ne(this.numerator.sub(t.numerator),this.denominator):new ne(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ne?e:new ne(Pe(e));return new ne(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ne?e:new ne(Pe(e));return new ne(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||yn.logWithError(`${e} is not an integer.`),e<=0&&yn.logWithError(`${e} is not positive.`),Ht.set({precision:e+1,rounding:Do[n]});let i=new Ht(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||yn.logWithError(`${e} is not an integer.`),e<0&&yn.logWithError(`${e} is negative.`),Xn.DP=e,Xn.RM=Fo[n]||1,new Xn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var vo=Te("CobaltX_amount"),Yi=Gt(ji.default);function Vo(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):vo.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var Be=class extends ne{constructor(t,n,i=!0,o){let s=new zt.default(0),a=Hn.pow(new zt.default(t.decimals));if(i)s=Pe(n);else{let u=new zt.default(0),c=new zt.default(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=Vo(n.toString(),t.decimals);u=Pe(l),c=Pe(d)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=Te(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,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Yi.DP=this.token.decimals,new Yi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};var Qi=require("@solana/spl-token"),qo=require("@solana/web3.js");var tt=require("@solana/web3.js");var Wo={["sooneth"]:{NATIVE_TOKEN_SYMBOL:"ETH",SWAP_HOST:"https://trade-api.cobaltx.io",BASE_HOST:"https://api.cobaltx.io",OWNER_BASE_HOST:"https://api.cobaltx.io",SERVICE_BASE_HOST:"https://api.cobaltx.io",MONITOR_BASE_HOST:"https://api.cobaltx.io",SERVICE_1_BASE_HOST:"https://api.cobaltx.io",ANALYTICS_BASE_HOST:"https://api.cobaltx.io",GITHUB_TOKEN_LIST_URL:"https://raw.githubusercontent.com/cobaltx-io/tokens/main/tokens.json",WSOL_MINT_ADDRESS:"So11111111111111111111111111111111111111112",GITHUB_LOGO_URL:"https://raw.githubusercontent.com/cobaltx-io/tokens/main/logo/So11111111111111111111111111111111111111112.png",LOOKUP_TABLE_CACHE:"6fa5xTGwoYJPMLMXaQ4tQFKMoYvXuvsJFLigMJ9a5QeB",CLMM_PROGRAMM_ID:"2TnjBuwqyBB9to5jURagDT7jLmBPefGRiKL2yh1zPZ4V",BONK_MINT_ADDRESS:"71kRXzJMvSeArtXYNEWa8KAjpRJosdMQ7Dpgy5Jt5zfd",SOL_MINT_ADDRESS:"ERFzpDteGNo8LTDKW1WwVGrkRMmA2y9WZHXNHxMA6BSV",USDC_MINT_ADDRESS:"ExYxyorY2x3h8gLcuypnHFQV3F36rmMkQVn7HHV8mUy9",USDT_MINT_ADDRESS:"742wcXVzkhNuEePAot7L3GvPseh93pvYFPgyHLX8mUy9",FULL_TOKEN_NAME:"Wrapped Ethereum",ETH_MINT_ADDRESS:"71kRXzJMvSeArtXYNEWa8KAjpRJosdMQ7Dpgy5Jt5zfd",WRAPPED_TOKEN_SYMBOL:"WETH",INPUT_MINT_ADDRESS:tt.PublicKey.default.toString(),OUTPUT_MINT_ADDRESS:"742wcXVzkhNuEePAot7L3GvPseh93pvYFPgyHLX8mUy9",POPULAR_TOKENS:{SOL:tt.PublicKey.default.toString(),ETH:"71kRXzJMvSeArtXYNEWa8KAjpRJosdMQ7Dpgy5Jt5zfd",USDC:"ExYxyorY2x3h8gLcuypnHFQV3F36rmMkQVn7HHV8KjtA",USDT:"742wcXVzkhNuEePAot7L3GvPseh93pvYFPgyHLX8mUy9"},WSOL_DECIMALS:9},["svmbnb"]:{NATIVE_TOKEN_SYMBOL:"BNB",SWAP_HOST:"https://trade-api.svmbnb.cobaltx.io",BASE_HOST:"https://api.svmbnb.cobaltx.io",OWNER_BASE_HOST:"https://api.svmbnb.cobaltx.io",SERVICE_BASE_HOST:"https://api.svmbnb.cobaltx.io",MONITOR_BASE_HOST:"https://api.svmbnb.cobaltx.io",SERVICE_1_BASE_HOST:"https://api.svmbnb.cobaltx.io",ANALYTICS_BASE_HOST:"https://api.svmbnb.cobaltx.io",GITHUB_TOKEN_LIST_URL:"https://raw.githubusercontent.com/cobaltx-io/svmbnb-tokens/main/tokens.json",WSOL_MINT_ADDRESS:"So11111111111111111111111111111111111111112",GITHUB_LOGO_URL:"https://raw.githubusercontent.com/cobaltx-io/svmbnb-tokens/main/logo/So11111111111111111111111111111111111111112.svg",LOOKUP_TABLE_CACHE:"GSR5XQGWhpzV9TTduBJR6qPNjYsepMQSGkpaqfrbrW9w",CLMM_PROGRAMM_ID:"6f1b3xyVZbnWMHXBjgW1KPwxmPAgXcRdrvKNn4Nmf1Cn",ETH_MINT_ADDRESS:"H3xpFH1yN5E1zFdAoBrC9Y7m7RfJUeQNLvkHi8kNf9Qu",USDC_MINT_ADDRESS:"5odzAHDpDETYhupMkc6kjiYen3K2nrf8oPmvqmsoNW4L",USDT_MINT_ADDRESS:"s8cRDxnp3VxjB6khRnGDdxv6QbCUPyY9Vn1bgSQQsnG",SOL_MINT_ADDRESS:"So11111111111111111111111111111111111111112",FULL_TOKEN_NAME:"Wrapped BNB",WRAPPED_TOKEN_SYMBOL:"WBNB",INPUT_MINT_ADDRESS:tt.PublicKey.default.toBase58(),OUTPUT_MINT_ADDRESS:"ABoT7umUXnx8RtJTeRqKB6myebVjP2wdJGQuV23jVVH3",POPULAR_TOKENS:{SOL:tt.PublicKey.default.toString(),ETH:"H3xpFH1yN5E1zFdAoBrC9Y7m7RfJUeQNLvkHi8kNf9Qu",USDC:"5odzAHDpDETYhupMkc6kjiYen3K2nrf8oPmvqmsoNW4L",USDT:"s8cRDxnp3VxjB6khRnGDdxv6QbCUPyY9Vn1bgSQQsnG"},WSOL_DECIMALS:9},["svmbnb_testnet"]:{NATIVE_TOKEN_SYMBOL:"BNB",SWAP_HOST:"https://trade-api.svmbnb.cobaltx.io",BASE_HOST:"https://api.testnet.svmbnb.cobaltx.io",OWNER_BASE_HOST:"https://api.testnet.svmbnb.cobaltx.io",SERVICE_BASE_HOST:"https://api.testnet.svmbnb.cobaltx.io",MONITOR_BASE_HOST:"https://api.testnet.svmbnb.cobaltx.io",SERVICE_1_BASE_HOST:"https://api.testnet.svmbnb.cobaltx.io",ANALYTICS_BASE_HOST:"https://api.testnet.svmbnb.cobaltx.io",GITHUB_TOKEN_LIST_URL:"https://raw.githubusercontent.com/cobaltx-io/svmbnb-testnet-tokens/main/tokens.json",WSOL_MINT_ADDRESS:"So11111111111111111111111111111111111111112",GITHUB_LOGO_URL:"https://raw.githubusercontent.com/cobaltx-io/svmbnb-testnet-tokens/main/logo/So11111111111111111111111111111111111111112.svg",LOOKUP_TABLE_CACHE:"D79gSiTNV9pyLPJyscW5yZYwdPVDrtKsamL3ZfQi6JiM",CLMM_PROGRAMM_ID:"FgycD57kcCZsjpoTAi2u67GTPxm59bPEhycL2Lw1icm1",ETH_MINT_ADDRESS:"5aLr3sV4UNVcMB6CiA3PZTWbgVBRNyMdEp1s5LNfhR95",USDC_MINT_ADDRESS:"jrhUNRxEDpFmGV3sqaWyveS7bVtRQgtHsfBTCdjfMBw",USDT_MINT_ADDRESS:"Ex86C4gmdjvPRNrfyvsyejbjkP6RstNaBC5g3itZw2iv",FULL_TOKEN_NAME:"Wrapped BNB",WRAPPED_TOKEN_SYMBOL:"WBNB",INPUT_MINT_ADDRESS:"bnb",OUTPUT_MINT_ADDRESS:"jrhUNRxEDpFmGV3sqaWyveS7bVtRQgtHsfBTCdjfMBw",POPULAR_TOKENS:{SOL:tt.PublicKey.default.toString(),ETH:"5aLr3sV4UNVcMB6CiA3PZTWbgVBRNyMdEp1s5LNfhR95",USDC:"jrhUNRxEDpFmGV3sqaWyveS7bVtRQgtHsfBTCdjfMBw",USDT:"Ex86C4gmdjvPRNrfyvsyejbjkP6RstNaBC5g3itZw2iv"},WSOL_DECIMALS:9},["svmbase_testnet"]:{NATIVE_TOKEN_SYMBOL:"ETH",SWAP_HOST:"https://trade-api.testnet.svmbase.cobaltx.io",BASE_HOST:"https://api.testnet.svmbase.cobaltx.io",OWNER_BASE_HOST:"https://api.testnet.svmbase.cobaltx.io",SERVICE_BASE_HOST:"https://api.testnet.svmbase.cobaltx.io",MONITOR_BASE_HOST:"https://api.testnet.svmbase.cobaltx.io",SERVICE_1_BASE_HOST:"https://api.testnet.svmbase.cobaltx.io",ANALYTICS_BASE_HOST:"https://api.testnet.svmbase.cobaltx.io",GITHUB_TOKEN_LIST_URL:"https://raw.githubusercontent.com/cobaltx-io/svmbase-testnet-tokens/main/tokens.json",WSOL_MINT_ADDRESS:"So11111111111111111111111111111111111111112",GITHUB_LOGO_URL:"https://raw.githubusercontent.com/cobaltx-io/svmbase-testnet-tokens/main/logo/So11111111111111111111111111111111111111112.png",LOOKUP_TABLE_CACHE:"AyPMvNmUUY2jwZ75NxhkLYPraQGNk5DssVfP4TnMcPJF",CLMM_PROGRAMM_ID:"DnZnBqJKiGSYHUHYvkXAbQmkMbwrjfgo4orR7jWyMsik",ETH_MINT_ADDRESS:"71kRXzJMvSeArtXYNEWa8KAjpRJosdMQ7Dpgy5Jt5zfd",USDC_MINT_ADDRESS:"63tPXWPnYeZ9hA3dJsAY5RcQ8YbwEz8uZ5nKu3uFD1aK",USDT_MINT_ADDRESS:"4fyX7hSmPetQC2wRS3YVAhWeFzif7WStarKwTvCXrBtD",FULL_TOKEN_NAME:"Wrapped Ethereum",WRAPPED_TOKEN_SYMBOL:"WETH",INPUT_MINT_ADDRESS:tt.PublicKey.default.toString(),OUTPUT_MINT_ADDRESS:"63tPXWPnYeZ9hA3dJsAY5RcQ8YbwEz8uZ5nKu3uFD1aK",POPULAR_TOKENS:{SOL:tt.PublicKey.default.toString(),ETH:"So11111111111111111111111111111111111111112",USDC:"63tPXWPnYeZ9hA3dJsAY5RcQ8YbwEz8uZ5nKu3uFD1aK",USDT:"4fyX7hSmPetQC2wRS3YVAhWeFzif7WStarKwTvCXrBtD"},WSOL_DECIMALS:9},["soonbase_mainnet"]:{NATIVE_TOKEN_SYMBOL:"ETH",SWAP_HOST:"https://trade-api.soonbase.cobaltx.io",BASE_HOST:"https://api.soonbase.cobaltx.io",OWNER_BASE_HOST:"https://api.soonbase.cobaltx.io",SERVICE_BASE_HOST:"https://api.soonbase.cobaltx.io",MONITOR_BASE_HOST:"https://api.soonbase.cobaltx.io",SERVICE_1_BASE_HOST:"https://api.soonbase.cobaltx.io",ANALYTICS_BASE_HOST:"https://api.soonbase.cobaltx.io",GITHUB_TOKEN_LIST_URL:"https://raw.githubusercontent.com/cobaltx-io/soonbase-tokens/main/tokens.json",WSOL_MINT_ADDRESS:"So11111111111111111111111111111111111111112",GITHUB_LOGO_URL:"https://raw.githubusercontent.com/cobaltx-io/soonbase-tokens/main/logo/So11111111111111111111111111111111111111112.png",LOOKUP_TABLE_CACHE:"FGRusuLycV6nhSPQc9VX55YjT6DCzJFc59mvTTarSTjK",CLMM_PROGRAMM_ID:"6f1b3xyVZbnWMHXBjgW1KPwxmPAgXcRdrvKNn4Nmf1Cn",ETH_MINT_ADDRESS:"71kRXzJMvSeArtXYNEWa8KAjpRJosdMQ7Dpgy5Jt5zfd",USDC_MINT_ADDRESS:"BoYN2f2gLQS4jpvMSV9dAZwfzKJiKGk4NPck5BjXfujo",USDT_MINT_ADDRESS:"J87bysZjwfS3n6KR21cwbdPZVJWNSFcXpWF5kiChAwQH",FULL_TOKEN_NAME:"Wrapped Ethereum",WRAPPED_TOKEN_SYMBOL:"WETH",INPUT_MINT_ADDRESS:tt.PublicKey.default.toString(),OUTPUT_MINT_ADDRESS:"BoYN2f2gLQS4jpvMSV9dAZwfzKJiKGk4NPck5BjXfujo",POPULAR_TOKENS:{SOL:tt.PublicKey.default.toString(),ETH:"FkvCG5DcuYCQ1BnPH4ZzTkCdk3VzutgyDAFBec4qAjhh",USDC:"BoYN2f2gLQS4jpvMSV9dAZwfzKJiKGk4NPck5BjXfujo",USDT:"J87bysZjwfS3n6KR21cwbdPZVJWNSFcXpWF5kiChAwQH"},WSOL_DECIMALS:9}},ft=r=>Wo[r];function Re(r){let e=ft(r);return{chainId:101,address:e.WSOL_MINT_ADDRESS,programId:Qi.TOKEN_PROGRAM_ID.toBase58(),decimals:9,symbol:e.WRAPPED_TOKEN_SYMBOL||"",name:e.FULL_TOKEN_NAME,logoURI:e.GITHUB_LOGO_URL,tags:[],priority:2,type:"cobaltx",extensions:{coingeckoId:"solana"}}}var An=require("@solana/web3.js");var Zi=require("@solana/spl-token"),ie=require("@solana/web3.js");function zn({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Js=[zn({pubkey:Zi.TOKEN_PROGRAM_ID,isWritable:!1}),zn({pubkey:ie.SystemProgram.programId,isWritable:!1}),zn({pubkey:ie.SYSVAR_RENT_PUBKEY,isWritable:!1})];function Yn({publicKey:r,transformSol:e,network:t}){let n=Ji(r.toString());if(e&&t){let{WSOLMint:i}=ue(t);if(n instanceof ie.PublicKey)return e&&n.equals(Yt)?i:n;if(e&&n.toString()===Yt.toBase58())return i}else if(n instanceof ie.PublicKey)return n;if(typeof n=="string"){if(n===ie.PublicKey.default.toBase58())return ie.PublicKey.default;try{return new ie.PublicKey(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ji(r){try{return new ie.PublicKey(r)}catch{return r}}var wn=new ie.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),jn=new ie.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),bt=new ie.PublicKey("SysvarRent111111111111111111111111111111111"),$s=new ie.PublicKey("SysvarC1ock11111111111111111111111111111111"),ht=new ie.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ea=new ie.PublicKey("Sysvar1nstructions1111111111111111111111111"),ta=ie.SystemProgram.programId,Yt=ie.PublicKey.default;function ue(r){let e=ft(r);return{USDCMint:new ie.PublicKey(e.USDC_MINT_ADDRESS),USDTMint:new ie.PublicKey(e.USDT_MINT_ADDRESS),WSOLMint:new ie.PublicKey(e.WSOL_MINT_ADDRESS),ETHMint:new ie.PublicKey(e.ETH_MINT_ADDRESS),BONK_Mint:e.BONK_MINT_ADDRESS?new ie.PublicKey(e.BONK_MINT_ADDRESS):ie.PublicKey.default,SOL_Mint:e.SOL_MINT_ADDRESS?new ie.PublicKey(e.SOL_MINT_ADDRESS):ie.PublicKey.default,INPUT_MINT:new ie.PublicKey(e.INPUT_MINT_ADDRESS),OUTPUT_MINT:new ie.PublicKey(e.OUTPUT_MINT_ADDRESS)}}function Tt(r,e){return Yn({publicKey:r,transformSol:!0,network:e})}var ze=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1,network:a}){if(e===Yt.toBase58()||e instanceof An.PublicKey&&Yt.equals(e)&&a){this.decimals=Re(a).decimals,this.symbol=Re(a).symbol,this.name=Re(a).name,this.mint=new An.PublicKey(Re(a).address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?An.PublicKey.default:Yn({publicKey:e}),this.isToken2022=s}static getWSol(e){return new ze({...Re(e),mint:Re(e).address})}equals(e){return this===e?!0:this.mint.equals(e.mint)}};var er=ye(require("bn.js"));var $i=new ne(new er.default(100)),gt=class extends ne{toSignificant(e=5,t,n){return this.mul($i).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul($i).toFixed(e,t,n)}};var Go=Te("CobaltX_price"),Ye=class extends ne{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new ne(Qn(n.decimals),Qn(i.decimals))}get raw(){return new ne(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ye({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Go.logWithError("mul token not equals");let n=super.mul(t);return new Ye({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Ho=require("@solana/web3.js"),zo=ye(require("bn.js"));var Xo=new nt.default(0),za=new nt.default(1),Ya=new nt.default(2),ja=new nt.default(3),Qa=new nt.default(5),Hn=new nt.default(10),Za=new nt.default(100),Ja=new nt.default(1e3),$a=new nt.default(1e4);function Qn(r){return Hn.pow(Pe(r))}function Fn(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var rr=require("@solana/web3.js"),or=require("@solana/spl-token");var Se=require("@solana/web3.js");var be={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee"};var nr=require("@solana/spl-token"),tr=Te("CobaltX_txUtil"),ir=1644;function Pn(r){let e=[],t=[];return r.microLamports&&(e.push(Se.ComputeBudgetProgram.setComputeUnitPrice({microLamports:r.microLamports})),t.push(be.SetComputeUnitPrice)),r.units&&(e.push(Se.ComputeBudgetProgram.setComputeUnitLimit({units:r.units})),t.push(be.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Ct(r,e){var n,i;let t=e!=null?e:"confirmed";return(i=await((n=r.getLatestBlockhash)==null?void 0:n.call(r,{commitment:t})))==null?void 0:i.blockhash}async function kn(r,e){return r.getSignatureStatuses([e]),new Promise((t,n)=>{let i=setTimeout(n,6e4);r.onSignature(e,o=>{if(clearTimeout(i),!o.err){t("");return}n(o.err.toString())},"confirmed")})}function Yo(r,e){r.length<1&&tr.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&tr.logWithError(`no signers provided:, ${e.toString()}`);let t=new Se.Transaction;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<ir}catch{return!1}}function Ce(r,e){let[t,n]=Se.PublicKey.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function jt({instructions:r,payer:e,signers:t}){return Yo(r,[e,...t])}function Qt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Se.Keypair.generate().publicKey.toString()}){let o=new Se.TransactionMessage({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Se.VersionedTransaction(o).serialize()).toString("base64").length<ir}catch{return!1}}var jo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Qo=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof Se.VersionedTransaction&&(e=jo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Bt(r){let e=[];return r.forEach(t=>{t instanceof Se.Transaction&&(t.recentBlockhash||(t.recentBlockhash=nr.TOKEN_PROGRAM_ID.toBase58()),t.feePayer||(t.feePayer=Se.Keypair.generate().publicKey)),e.push(Qo(t))}),console.log("simulate tx string:",e),e}function le(r,e,t){return Ce([r.toBuffer(),(t!=null?t:or.TOKEN_PROGRAM_ID).toBuffer(),e.toBuffer()],new rr.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}var H=require("@solana/web3.js"),gc=new H.PublicKey("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),yc=new H.PublicKey("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),wc=new H.PublicKey("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ac=new H.PublicKey("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Pc=new H.PublicKey("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),kc=new H.PublicKey("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Tc=new H.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),hc=new H.PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Bc=new H.PublicKey("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),xc=new H.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo");function Zt(r){let e=ft(r);return new H.PublicKey(e.CLMM_PROGRAMM_ID)}var Jt=new H.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Tn=new H.PublicKey("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Ic=new H.PublicKey("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Sc=new H.PublicKey("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Cc=new H.PublicKey("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Nc=new H.PublicKey("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Kc=new H.PublicKey("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Lc=new H.PublicKey("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Rc=new H.PublicKey("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Mc=new H.PublicKey("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Oc=new H.PublicKey("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Zo=new H.PublicKey("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Jo=new H.PublicKey("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),$o=new H.PublicKey("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Ec=new H.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),es=new H.PublicKey("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),_c=new H.PublicKey("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),ts=new H.PublicKey("7AFUeLVRjBfzqK3tTGw8hN48KLQWSk6DTE8xprWdPqix");var Dc={SERUM_MARKET:H.PublicKey.default,OPENBOOK_MARKET:new H.PublicKey("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:H.PublicKey.default,FarmV3:new H.PublicKey("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new H.PublicKey("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new H.PublicKey("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new H.PublicKey("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new H.PublicKey("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new H.PublicKey("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),CLMM_LOCK_PROGRAM_ID:new H.PublicKey("DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC"),CLMM_LOCK_AUTH_ID:new H.PublicKey("8qmHNvu2Kr2C7U8mJL4Vz1vTDxMhVuXKREwU7TNoaVEo"),Router:new H.PublicKey("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Zo,CREATE_CPMM_POOL_AUTH:Jo,CREATE_CPMM_POOL_FEE_ACC:$o,FEE_DESTINATION_ID:new H.PublicKey("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR"),LOCK_CPMM_PROGRAM:es,LCOK_CPMM_AUTH:ts};var Ue=ye(require("bn.js")),$t=1e4;function pe(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i={...e,olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}},o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new Ue.default(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===$t){let u=new Ue.default(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=Zn(r.mul(new Ue.default($t)),new Ue.default($t-o.transferFeeBasisPoints)),c=new Ue.default(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,d=Zn(l.mul(new Ue.default(o.transferFeeBasisPoints)),new Ue.default($t)),m=d.gt(s)?s:d;return{amount:l,fee:m,expirationTime:a}}else{let u=Zn(r.mul(new Ue.default(o.transferFeeBasisPoints)),new Ue.default($t)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function yt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function Zn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Ue.default(0))?t.add(new Ue.default(1)):t}var wt=require("@solana/web3.js");async function Jn({connection:r,address:e,network:t}){let n=await ot(r,[...new Set(e.map(o=>o.toString()))].map(o=>new wt.PublicKey(o))),i={};for(let o=0;o<e.length;o++){let s=n[o],a=e[o];if(!s)continue;let u=new wt.AddressLookupTableAccount({key:a,state:wt.AddressLookupTableAccount.deserialize(s.data)});i[a.toString()]=u,hn(t)[a.toString()]=u}return i}function hn(r){let e=ft(r);return{[e.LOOKUP_TABLE_CACHE]:new wt.AddressLookupTableAccount({key:new wt.PublicKey(e.LOOKUP_TABLE_CACHE),state:wt.AddressLookupTableAccount.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"))})}}var re=require("@solana/web3.js"),sr=ye(require("axios"));var Bn=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.api=e.api,this.network=e.network}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await sr.default.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Pn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==re.PublicKey.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0({...t||{}}):this.build(t)}build(e){var n;let t=new re.Transaction;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var c;let{recentBlockHash:o,skipPreflight:s=!0,sendAndConfirm:a}=i||{},u=o!=null?o:await Ct(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),Bt([t]),(c=this.owner)!=null&&c.isKeyPair)return{txId:a?await(0,re.sendAndConfirmTransaction)(this.connection,t,this.signers.find(d=>d.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var c;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(l=>l.transaction.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async l=>{var b;let{sequentially:d,onTxUpdate:m,skipTxCount:p=0,recentBlockHash:g,skipPreflight:f=!0}=l||{},y=g!=null?g:await Ct(this.connection,this.blockhashCommitment);if((b=this.owner)!=null&&b.isKeyPair){if(d){let w=[],A=0;for(let k of s){if(++A,A<=p)continue;let T=await(0,re.sendAndConfirmTransaction)(this.connection,k,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});w.push(T)}return{txIds:w,signedTxs:s}}return{txIds:await await Promise.all(s.map(async w=>(w.recentBlockhash=y,await this.connection.sendRawTransaction(w.serialize(),{skipPreflight:f})))),signedTxs:s}}if(this.signAllTransactions){let w=s.map((k,T)=>(k.recentBlockhash=y,a[T].length&&k.sign(...a[T]),k));Bt(w);let A=await this.signAllTransactions(w);if(d){let k=0,T=[],P=async()=>{if(!A[k])return;let B=await this.connection.sendRawTransaction(A[k].serialize(),{skipPreflight:f});T.push({txId:B,status:"sent",signedTx:A[k]}),m==null||m([...T]),k++,this.connection.onSignature(B,x=>{let C=T.findIndex(D=>D.txId===B);C>-1&&(T[C].status=x.err?"error":"success"),m==null||m([...T]),x.err||P()},"processed"),this.connection.getSignatureStatus(B)};return await P(),{txIds:T.map(B=>B.txId),signedTxs:A}}else{let k=[];for(let T=0;T<A.length;T+=1){let P=await this.connection.sendRawTransaction(A[T].serialize(),{skipPreflight:f});k.push(P)}return{txIds:k,signedTxs:A}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var f;let{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:o,network:s=this.network,...a}=e||{},u={...this.cluster==="devnet"?{}:hn(s),...t},c=Array.from(new Set([...n,...this.lookupTableAddress])),l=[];for(let y of c)u[y]===void 0&&l.push(new re.PublicKey(y));let d=await Jn({connection:this.connection,address:l,network:s});for(let[y,b]of Object.entries(d))u[y]=b;let m=i?re.PublicKey.default.toBase58():o!=null?o:await Ct(this.connection,this.blockhashCommitment),p=new re.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...this.allInstructions]}).compileToV0Message();((f=this.owner)==null?void 0:f.signer)&&!this.signers.some(y=>y.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let g=new re.VersionedTransaction(p);return g.sign(this.signers),{builder:this,transaction:g,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async y=>{var A;let{skipPreflight:b=!0,sendAndConfirm:w}=y||{};if(Bt([g]),(A=this.owner)!=null&&A.isKeyPair){let k=await this.connection.sendTransaction(g,{skipPreflight:b});return w&&await kn(this.connection,k),{txId:k,signedTx:g}}if(this.signAllTransactions){let k=await this.signAllTransactions([g]);return{txId:await this.connection.sendTransaction(k[0],{skipPreflight:b}),signedTx:k[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}async buildV0MultiTx(e){var c;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(l=>l.builder.instructions.length>0),s=[i,...o.map(l=>l.transaction)],a=[this.signers,...o.map(l=>l.signers)],u=[...this.instructionTypes,...o.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,d)=>{l.sign(a[d])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async l=>{var f;let{sequentially:d,onTxUpdate:m,recentBlockHash:p,skipPreflight:g=!0}=l||{};if(p&&s.forEach(y=>y.message.recentBlockhash=p),Bt(s),(f=this.owner)!=null&&f.isKeyPair){if(d){let y=[];for(let b of s){let w=await this.connection.sendTransaction(b,{skipPreflight:g});await kn(this.connection,w),y.push(w)}return{txIds:y,signedTxs:s}}return{txIds:await Promise.all(s.map(async y=>await this.connection.sendTransaction(y,{skipPreflight:g}))),signedTxs:s}}if(this.signAllTransactions){let y=await this.signAllTransactions(s);if(d){let b=0,w=[],A=async()=>{if(!y[b])return;let k=await this.connection.sendTransaction(y[b],{skipPreflight:g});w.push({txId:k,status:"sent",signedTx:y[b]}),m==null||m([...w]),b++,this.connection.onSignature(k,T=>{let P=w.findIndex(B=>B.txId===k);P>-1&&(w[P].status=T.err?"error":"success"),m==null||m([...w]),T.err||A()},"processed"),this.connection.getSignatureStatus(k)};return A(),{txIds:[],signedTxs:y}}else{let b=[];for(let w=0;w<y.length;w+=1){let A=await this.connection.sendTransaction(y[w],{skipPreflight:g});b.push(A)}return{txIds:b,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var d;let{splitIns:t=[],computeBudgetConfig:n,...i}=e||{},o=n?Pn(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((m,p)=>({...m,[p.publicKey.toBase58()]:p}),{}),a=[],u=[],c=[],l=0;if(this.allInstructions.forEach(m=>{let p=[...c,m],g=n?[...o.instructions,...p]:p,y=[...new Set(p.map(b=>b.keys.filter(w=>w.isSigner).map(w=>w.pubkey.toString())).flat()).values()].map(b=>new re.PublicKey(b));if(m!==t[l]&&c.length<12&&(jt({instructions:g,payer:this.feePayer,signers:y})||jt({instructions:p,payer:this.feePayer,signers:y})))c.push(m);else{if(c.length===0)throw Error("item ins too big");l+=m===t[l]?1:0,jt({instructions:n?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:y})?a.push(new re.Transaction().add(...o.instructions,...c)):a.push(new re.Transaction().add(...c)),u.push(Array.from(new Set(c.map(b=>b.keys.filter(w=>w.isSigner).map(w=>w.pubkey.toString())).flat())).map(b=>s[b]).filter(b=>b!==void 0)),c=[m]}}),c.length>0){let p=[...new Set(c.map(g=>g.keys.filter(f=>f.isSigner).map(f=>f.pubkey.toString())).flat()).values()].map(g=>s[g]).filter(g=>g!==void 0);jt({instructions:n?[...o.instructions,...c]:[...c],payer:this.feePayer,signers:p.map(g=>g.publicKey)})?a.push(new re.Transaction().add(...o.instructions,...c)):a.push(new re.Transaction().add(...c)),u.push(p)}return a.forEach(m=>m.feePayer=this.feePayer),(d=this.owner)!=null&&d.signer&&u.forEach(m=>{m.some(p=>p.publicKey.equals(this.owner.publicKey))||m.push(this.owner.signer)}),{builder:this,transactions:a,signers:u,instructionTypes:this.instructionTypes,execute:async m=>{var A;let{sequentially:p,onTxUpdate:g,skipTxCount:f=0,recentBlockHash:y,skipPreflight:b=!0}=m||{},w=y!=null?y:await Ct(this.connection,this.blockhashCommitment);if(a.forEach(async(k,T)=>{k.recentBlockhash=w,u[T].length&&k.sign(...u[T])}),Bt(a),(A=this.owner)!=null&&A.isKeyPair){if(p){let k=0,T=[];for(let P of a){if(++k,k<=f){T.push("tx skipped");continue}let B=await(0,re.sendAndConfirmTransaction)(this.connection,P,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});T.push(B)}return{txIds:T,signedTxs:a}}return{txIds:await Promise.all(a.map(async k=>await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:b}))),signedTxs:a}}if(this.signAllTransactions){let k=await this.signAllTransactions(a.slice(f,a.length)),T=[...a.slice(0,f),...k];if(p){let P=0,B=[],x=async()=>{if(!T[P])return;P<f&&(B.push({txId:"",status:"success",signedTx:T[P]}),g==null||g([...B]),P++,x());let C=await this.connection.sendRawTransaction(T[P].serialize(),{skipPreflight:b});B.push({txId:C,status:"sent",signedTx:T[P]}),g==null||g([...B]),P++,this.connection.onSignature(C,D=>{let S=B.findIndex(N=>N.txId===C);S>-1&&(B[S].status=D.err?"error":"success"),g==null||g([...B]),D.err||x()},"processed"),this.connection.getSignatureStatus(C)};return await x(),{txIds:B.map(C=>C.txId),signedTxs:T}}else{let P=[];for(let B=0;B<T.length;B+=1){let x=await this.connection.sendRawTransaction(T[B].serialize(),{skipPreflight:b});P.push(x)}return{txIds:P,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var A;let{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:o=[],network:s=this.network,...a}=e||{},u={...this.cluster==="devnet"?{}:hn(s),...i},c=Array.from(new Set([...this.lookupTableAddress,...o])),l=[];for(let k of c)u[k]===void 0&&l.push(new re.PublicKey(k));let d=await Jn({connection:this.connection,address:l,network:s});for(let[k,T]of Object.entries(d))u[k]=T;let m=t?Pn(t):{instructions:[],instructionTypes:[]},p=await Ct(this.connection,this.blockhashCommitment),g=this.signers.reduce((k,T)=>({...k,[T.publicKey.toBase58()]:T}),{}),f=[],y=[],b=[],w=0;if(this.allInstructions.forEach(k=>{let T=[...b,k],P=t?[...m.instructions,...T]:T;if(k!==n[w]&&b.length<12&&(Qt({instructions:P,payer:this.feePayer,lookupTableAddressAccount:u})||Qt({instructions:T,payer:this.feePayer,lookupTableAddressAccount:u})))b.push(k);else{if(b.length===0)throw Error("item ins too big");w+=k===n[w]?1:0;let B={};for(let x of[...new Set(c)])u[x]!==void 0&&(B[x]=u[x]);if(t&&Qt({instructions:[...m.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:u,recentBlockhash:p})){let x=new re.TransactionMessage({payerKey:this.feePayer,recentBlockhash:p,instructions:[...m.instructions,...b]}).compileToV0Message(Object.values(u));f.push(new re.VersionedTransaction(x))}else{let x=new re.TransactionMessage({payerKey:this.feePayer,recentBlockhash:p,instructions:[...b]}).compileToV0Message(Object.values(u));f.push(new re.VersionedTransaction(x))}y.push(Array.from(new Set(b.map(x=>x.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat())).map(x=>g[x]).filter(x=>x!==void 0)),b=[k]}}),b.length>0){let T=[...new Set(b.map(P=>P.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat()).values()].map(P=>g[P]).filter(P=>P!==void 0);if(t&&Qt({instructions:[...m.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:u,recentBlockhash:p})){let P=new re.TransactionMessage({payerKey:this.feePayer,recentBlockhash:p,instructions:[...m.instructions,...b]}).compileToV0Message(Object.values(u));f.push(new re.VersionedTransaction(P))}else{let P=new re.TransactionMessage({payerKey:this.feePayer,recentBlockhash:p,instructions:[...b]}).compileToV0Message(Object.values(u));f.push(new re.VersionedTransaction(P))}y.push(T)}return(A=this.owner)!=null&&A.signer&&y.forEach(k=>{k.some(T=>T.publicKey.equals(this.owner.publicKey))||k.push(this.owner.signer)}),{builder:this,transactions:f,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async k=>{var D;let{sequentially:T,onTxUpdate:P,skipTxCount:B=0,recentBlockHash:x,skipPreflight:C=!0}=k||{};if(f.map(async(S,N)=>{y[N].length&&S.sign(y[N]),x&&(S.message.recentBlockhash=x)}),Bt(f),(D=this.owner)!=null&&D.isKeyPair){if(T){let S=0,N=[];for(let V of f){if(++S,S<=B){console.log("skip tx: ",S),N.push("tx skipped");continue}let F=await this.connection.sendTransaction(V,{skipPreflight:C});await kn(this.connection,F),N.push(F)}return{txIds:N,signedTxs:f}}return{txIds:await Promise.all(f.map(async S=>await this.connection.sendTransaction(S,{skipPreflight:C}))),signedTxs:f}}if(this.signAllTransactions){let S=await this.signAllTransactions(f.slice(B,f.length)),N=[...f.slice(0,B),...S];if(T){let V=0,F=[],Y=async()=>{if(!N[V])return;if(V<B){F.push({txId:"",status:"success",signedTx:N[V]}),P==null||P([...F]),V++,Y();return}let X=await this.connection.sendTransaction(N[V],{skipPreflight:C});F.push({txId:X,status:"sent",signedTx:N[V]}),P==null||P([...F]),V++,this.connection.onSignature(X,Xe=>{let Fe=F.findIndex(Vt=>Vt.txId===X);Fe>-1&&(F[Fe].status=Xe.err?"error":"success"),P==null||P([...F]),Xe.err||Y()},"processed"),this.connection.getSignatureStatus(X)};return Y(),{txIds:[],signedTxs:N}}else{let V=[];for(let F=0;F<N.length;F+=1){let Y=await this.connection.sendTransaction(N[F],{skipPreflight:C});V.push(Y)}return{txIds:V,signedTxs:N}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};var Le=require("@solana/spl-token"),L=require("@solana/web3.js"),Oe=ye(require("bn.js"));var $n=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),en=class{constructor({scope:e,moduleName:t,network:n}){this.disabled=!1;this.scope=e,this.logger=Te(t),this.network=n}createTxBuilder(e){return this.scope.checkOwner(),new Bn({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions,network:this.network})}logDebug(...e){this.logger.debug($n(e))}logInfo(...e){this.logger.info($n(e))}logAndCreateError(...e){let t=$n(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var lr=require("@solana/web3.js"),Nt=ye(require("bn.js"));var _=require("@solana/buffer-layout"),ei=_.Layout,ar=_.Structure;var ti=_.UInt;var cr=_.u8,tn=_.u16;var me=_.s32;var ur=_.seq;var Ve=_.blob;var Kt=class extends ei{constructor(t,n,i){super(t,i);this.blob=Ve(t),this.signed=n}decode(t,n=0){let i=new Nt.default(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new Nt.default(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}};function se(r){return new ti(1,r)}function ct(r){return new ti(4,r)}function O(r){return new Kt(8,!1,r)}function Z(r){return new Kt(16,!1,r)}function mr(r){return new Kt(8,!0,r)}function dr(r){return new Kt(16,!0,r)}var xn=class extends ei{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function te(r){return new xn(Ve(32),e=>new lr.PublicKey(e),e=>e.toBuffer(),r)}function Me(r){return new xn(cr(),is,rs,r)}function is(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function rs(r){return r?1:0}var ni=class extends ar{decode(e,t){return super.decode(e,t)}};function ee(r,e,t){return new ni(r,e,t)}function fe(r,e,t){let n,i=typeof e=="number"?e:(0,Nt.isBN)(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=(0,Nt.isBN)(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 ur(r,i,t)}var Mu=ee([ct("mintAuthorityOption"),te("mintAuthority"),O("supply"),se("decimals"),se("isInitialized"),ct("freezeAuthorityOption"),te("freezeAuthority")]);var os=require("@solana/web3.js"),pr=require("@solana/spl-token");var In=({address:r,programId:e,decimals:t,network:n,...i})=>({chainId:101,address:Tt(r,n).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:i.extensions||{},...i}),ii=r=>r?{...r,transferFeeConfigAuthority:r.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:r.withdrawWithheldAuthority.toBase58(),withheldAmount:r.withheldAmount.toString(),olderTransferFee:{...r.olderTransferFee,epoch:r.olderTransferFee.epoch.toString(),maximumFee:r.olderTransferFee.maximumFee.toString()},newerTransferFee:{...r.newerTransferFee,epoch:r.newerTransferFee.epoch.toString(),maximumFee:r.newerTransferFee.maximumFee.toString()}}:void 0;var M=require("@solana/spl-token"),h=require("@solana/web3.js"),Mn=ye(require("bn.js"));var Br=ye(require("bn.js"));var We=ye(require("bn.js")),$=new We.default(0),je=new We.default(1),it=new We.default(-1),_e=new We.default(1).shln(64),nn=new We.default(1).shln(128),Sn=_e.sub(je),Lt=64,ri=nn.subn(1),xe=-443636,Ne=-xe,Qe=new We.default("4295048016"),Ze=new We.default("79226673521066979257578248091"),ss=new We.default("4295048017"),as=new We.default("79226673521066979257578248090"),oi=16,si="59543866431248",ai="184467440737095516",ci="15793534762490258745",rn=new We.default(10).pow(new We.default(6)),fr=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(fr||{}),cs={[500]:10,[3e3]:60,[1e4]:200},us={version:6,liquidity:$,tickCurrent:0,feeGrowthGlobalX64A:$,feeGrowthGlobalX64B:$,protocolFeesTokenA:$,protocolFeesTokenB:$,swapInAmountTokenA:$,swapOutAmountTokenB:$,swapInAmountTokenB:$,swapOutAmountTokenA:$,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},ui={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},ls=new We.default("18446744073700000000");var z=ye(require("bn.js"));function li(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function ms(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function ds(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function on(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Cn(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Nn(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Rt(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function mi(r,e){return Rt(r,e)?null:Cn(r,e)}function di(r,e){return Rt(r,e)?null:Nn(r,e)}var br=Buffer.from("amm_config","utf8"),gr=Buffer.from("pool","utf8"),yr=Buffer.from("pool_vault","utf8"),wr=Buffer.from("pool_reward_vault","utf8"),pi=Buffer.from("position","utf8"),Ar=Buffer.from("tick_array","utf8"),Pr=Buffer.from("operation","utf8"),kr=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Tr=Buffer.from("observation","utf8");function ps(r,e){return Ce([br,li(e)],r)}function fi(r,e,t,n){return Ce([gr,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Kn(r,e,t){return Ce([yr,e.toBuffer(),t.toBuffer()],r)}function bi(r,e,t){return Ce([wr,e.toBuffer(),t.toBuffer()],r)}function j(r,e,t){return Ce([Ar,e.toBuffer(),on(t)],r)}function Ge(r,e,t,n){return Ce([pi,e.toBuffer(),on(t),on(n)],r)}function Ke(r,e){return Ce([pi,e.toBuffer()],r)}function Mt(r){return Ce([Buffer.from("metadata","utf8"),ht.toBuffer(),r.toBuffer()],ht)}function Ot(r){return Ce([Pr],r)}function ge(r,e){return Ce([kr,e.toBuffer()],r)}function gi(r,e){return Ce([Tr,e.toBuffer()],r)}var yi=Buffer.from("locked_position","utf8");function Ln(r,e){return Ce([yi,e.toBuffer()],r)}function Et(r,e){return Ce([yi,e.toBuffer()],r)}var Ai=require("@solana/spl-token"),De=require("@solana/web3.js"),ae=ye(require("bn.js"));var Je=ye(require("bn.js"));var _t=class{static getfeeGrowthInside(e,t,n){let i=new Je.default(0),o=new Je.default(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Je.default(0),a=new Je.default(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=U.wrappingSubU128(U.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=U.wrappingSubU128(U.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=U.mulDivFloor(U.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,_e),u=t.tokenFeesOwedA.add(a),c=U.mulDivFloor(U.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,_e),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=U.mulDivFloor(U.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,_e),u=t.tokenFeesOwedA.add(a),c=U.mulDivFloor(U.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,_e),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=U.wrappingSubU128(u,c.growthInsideLastX64),d=U.mulDivFloor(l,t.liquidity,_e),m=c.rewardAmountOwed.add(d);o.push(m)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=U.wrappingSubU128(u,c.growthInsideLastX64),d=U.mulDivFloor(l,t.liquidity,_e),m=c.rewardAmountOwed.add(d);o.push(m)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Je.default(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Je.default(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(U.wrappingSubU128(U.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Je.default(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Je.default(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(U.wrappingSubU128(U.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var y,b,w,A;let a=v.priceToSqrtPriceX64(new K(e.price),e.mintA.decimals,e.mintB.decimals),u=v.getSqrtPriceX64FromTick(t.tickLower),c=v.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,d=Q.getAmountsFromLiquidity(a,u,c,n,o),[m,p]=[pe(d.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),pe(d.amountB,(b=e.mintB.extensions)==null?void 0:b.feeConfig,s,!0)],[g,f]=[pe(new Je.default(new K(d.amountA.toString()).mul(l).toFixed(0)),(w=e.mintA.extensions)==null?void 0:w.feeConfig,s,!0),pe(new Je.default(new K(d.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:m,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:yt(m.expirationTime,p.expirationTime)}}};var hr=15,J=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=R.getTickArrayStartIndexByTick(i,o),l=R.getInitializedTickArrayInRange(s,a,o,c,Math.floor(hr/2));for(let p=0;p<l.length;p++){let{publicKey:g}=j(t,n,l[p]);u.push(g)}let d=(await ot(e,u)).map(p=>p!==null?Dt.decode(p.data):null),m={};for(let p=0;p<u.length;p++){let g=d[p];g!==null&&(m[g.startTickIndex]={...g,address:u[p]})}return m}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=R.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:d,tickArrayAddress:m,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[d,m,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/J.tickCount(t)),a=n?R.searchLowBitFromStart(i,o,s-1,1,t):R.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=we-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<we;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=j(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=R.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let m=c.ticks[u];if(m.liquidityGross.gtn(0)){l=m;break}u=u-1}else for(u=u+1;u<we;){let m=c.ticks[u];if(m.liquidityGross.gtn(0)){l=m;break}u=u+1}let{publicKey:d}=j(e,t,a);return{initializedTick:l,tickArrayAddress:d,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(R.checkIsOutOfBoundary(e)){if(e>Ne)return!1;let n=R.getTickArrayStartIndexByTick(xe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return we*e}};var Rn=14,rt=class{static maxTickInTickarrayBitmap(e){return e*we*At}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!J.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-J.tickCount(n):t+J.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*we,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),d=mi(1024,l);if(d!==null){let m=(c-d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),d=di(1024,l);if(d!==null){let m=(c+d-512)*a;return{isInit:!0,tickIndex:m}}else return{isInit:!1,tickIndex:o-J.tickCount(n)}}}},Ft=class{static getBitmapOffset(e,t){if(!J.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=rt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=rt.maxTickInTickarrayBitmap(e),n=-t;if(Ne<=t)throw Error(`extensionTickBoundary check error: ${Ne}, ${t}`);if(n<=xe)throw Error(`extensionTickBoundary check error: ${n}, ${xe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:R.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=J.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=rt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=R.mergeTickArrayBitmap(e).shln(At-1-a),c=Rt(512,u)?null:Cn(512,u);if(c!==null){let l=t-c*J.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=R.mergeTickArrayBitmap(e).shrn(a),c=Rt(512,u)?null:Nn(512,u);if(c!==null){let l=t+c*J.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-J.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%rt.maxTickInTickarrayBitmap(t),i=Math.floor(n/J.tickCount(t));return e<0&&n!=0&&(i=At-i),i}};var de=class{constructor(e){this.network=e}static getOutputAmountAndRemainAccounts(e,t,n,i,o,s=!1){let a=n.toBase58()===e.mintA.address,u=[],{isExist:c,startIndex:l,nextAccountMeta:d}=this.getFirstInitializedTickArray(e,a);if(!c||l===void 0||!d)throw new Error("Invalid tick array");u.push(d);let{allTrade:m,amountCalculated:p,accounts:g,sqrtPriceX64:f,feeAmount:y}=Pt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,l,o,s);return u.push(...g),{allTrade:m,expectedAmountOut:p.mul(it),remainingAccounts:u,executionPrice:f,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:y}=j(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:d,accounts:m,sqrtPriceX64:p,feeAmount:g}=Pt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(it),c,o);return a.push(...m),{expectedAmountIn:d,remainingAccounts:a,executionPrice:p,feeAmount:g}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=de.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Ft.checkTickArrayIsInit(J.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):R.checkTickArrayIsInitialized(R.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=j(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,J.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=j(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/J.tickCount(e.tickSpacing)),i=t?R.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):R.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=J.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=rt.nextInitializedTickArrayStartIndex(R.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Ft.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<xe||t>Ne)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let d=o[l],m=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(d.tokenMint))==null?void 0:u.owner;if(m===void 0)throw Error("get new reward mint info error");let p={...d,perSecond:U.x64ToDecimal(d.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new De.PublicKey(m)};if(p.tokenMint.equals(De.PublicKey.default))continue;if(n<=p.openTime.toNumber()||i.eq($)){s.push(p);continue}let g=new ae.default(Math.min(p.endTime.toNumber(),n)),f=g.sub(p.lastUpdateTime),y=U.mulDivFloor(f,p.emissionsPerSecondX64,i),b=p.rewardGrowthGlobalX64.add(y),w=U.mulDivFloor(f,p.emissionsPerSecondX64,_e),A=p.rewardTotalEmissioned.add(w);s.push({...p,rewardGrowthGlobalX64:b,rewardTotalEmissioned:A,lastUpdateTime:g})}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=R.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=rt.maxTickInTickarrayBitmap(e),n=-t;return t>Ne&&(t=J.getArrayStartIndex(Ne,e)+J.tickCount(e)),n<xe&&(n=J.getArrayStartIndex(xe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!J.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/J.tickCount(t)*At}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await st(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=ki.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=R.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=R.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let d of l){let{publicKey:m}=j(u.programId,u.id,d);o.push({pubkey:m}),i[m.toString()]=u.id}}let s=await st(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Dt.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]={...l,address:u.pubkey}}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(m=>m.accountInfo.mint),c=[];for(let m of u)for(let p of s)c.push(Ke(p,m).publicKey);let l=await ot(t,c,{batchRequest:i}),d={};for(let m of l){if(m===null)continue;let p=vt.decode(m.data),g=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===g);if(f===void 0)continue;let y=f.state,b=R._getTickPriceLegacy({poolInfo:y,tick:p.tickLower,baseIn:!0}),w=R._getTickPriceLegacy({poolInfo:y,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:k}=Q.getAmountsFromLiquidity(y.sqrtPriceX64,b.tickSqrtPriceX64,w.tickSqrtPriceX64,p.liquidity,!1),T=1/(1-Math.sqrt(Math.sqrt(b.price.div(w.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:b.price,priceUpper:w.price,amountA:A,amountB:k,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>({...x,pendingReward:new ae.default(0)})),leverage:T,tokenFeeAmountA:new ae.default(0),tokenFeeAmountB:new ae.default(0)}];let P=await R.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),B=await R.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=P,d[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=B}if(o){let m=Object.values(d),p=await ot(t,m,{batchRequest:i}),g={};for(let f=0;f<m.length;f++){let y=p[f];if(y===null)continue;let b=m[f].toString();g[b]=Dt.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let b of y){let w=`${f.programId.toString()}-${f.id.toString()}-${b.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${b.tickUpper}`,k=g[d[w].toString()],T=g[d[A].toString()],P=k.ticks[R.getTickOffsetInArray(b.tickLower,f.tickSpacing)],B=T.ticks[R.getTickOffsetInArray(b.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:C}=await _t.GetPositionFees(f,b,P,B),D=await _t.GetPositionRewards(f,b,P,B);b.tokenFeeAmountA=x.gte(new ae.default(0))?x:new ae.default(0),b.tokenFeeAmountB=C.gte(new ae.default(0))?C:new ae.default(0);for(let S=0;S<D.length;S++)b.rewardInfos[S].pendingReward=D[S].gte(new ae.default(0))?D[S]:new ae.default(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new K(0),catchLiquidityInsufficient:u=!1}){var N;let c,l=n.toBase58()===e.mintA.address,[d,m]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new K(0))?c=l?Qe.add(new ae.default(1)):Ze.sub(new ae.default(1)):c=v.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=pe(o,d,i,!1),{allTrade:g,expectedAmountOut:f,remainingAccounts:y,executionPrice:b,feeAmount:w}=de.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((N=p.fee)!=null?N:$),c,u),A=pe(f,m,i,!1),k=v.sqrtPriceX64ToPrice(b,e.mintA.decimals,e.mintB.decimals),T=l?k:new K(1).div(k),P=f.mul(new ae.default(Math.floor((1-s)*1e10))).div(new ae.default(1e10)),B=pe(P,m,i,!1),x=l?e.currentPrice:new K(1).div(e.currentPrice),C=new K(T).sub(x).abs(),D=x,S=new gt(new K(C).mul(10**15).toFixed(0),new K(D).mul(10**15).toFixed(0));return{allTrade:g,realAmountIn:p,amountOut:A,minAmountOut:B,expirationTime:yt(p.expirationTime,A.expirationTime),currentPrice:e.currentPrice,executionPrice:T,priceImpact:S,fee:w,remainingAccounts:y,executionPriceX64:b}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s,catchLiquidityInsufficient:a=!1}){let u=i.address===e.mintB.address,[c,l]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[d,m]=[new ze({...c,mint:c.address,isToken2022:c.programId===Ai.TOKEN_2022_PROGRAM_ID.toBase58()}),new ze({...l,mint:l.address,isToken2022:l.programId===Ai.TOKEN_2022_PROGRAM_ID.toBase58()})],{allTrade:p,realAmountIn:g,amountOut:f,minAmountOut:y,expirationTime:b,currentPrice:w,executionPrice:A,priceImpact:k,fee:T,remainingAccounts:P,executionPriceX64:B}=de.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new De.PublicKey(c.address),amountIn:n,slippage:o,epochInfo:s,catchLiquidityInsufficient:a}),x={...g,amount:new Be(d,g.amount),fee:g.fee===void 0?void 0:new Be(d,g.fee)},C={...f,amount:new Be(m,f.amount),fee:f.fee===void 0?void 0:new Be(m,f.fee)},D={...y,amount:new Be(m,y.amount),fee:y.fee===void 0?void 0:new Be(m,y.fee)},S=new Ye({baseToken:d,denominator:new ae.default(10).pow(new ae.default(20+d.decimals)),quoteToken:m,numerator:w.mul(new K(10**(20+m.decimals))).toFixed(0)}),N=new Ye({baseToken:d,denominator:new ae.default(10).pow(new ae.default(20+d.decimals)),quoteToken:m,numerator:A.mul(new K(10**(20+m.decimals))).toFixed(0)}),V=new Be(d,T);return{allTrade:p,realAmountIn:x,amountOut:C,minAmountOut:D,expirationTime:b,currentPrice:S,executionPrice:N,priceImpact:k,fee:V,remainingAccounts:P,executionPriceX64:B}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountOut:o,slippage:s,priceLimit:a=new K(0)}){var D;let u=n.toBase58()===e.mintA.address,c={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;a.equals(new K(0))?l=u?Ze.sub(new ae.default(1)):Qe.add(new ae.default(1)):l=v.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=pe(o,c[n.toString()],i,!0),{expectedAmountIn:m,remainingAccounts:p,executionPrice:g,feeAmount:f}=de.getInputAmountAndRemainAccounts(e,t,n,d.amount.sub((D=d.fee)!=null?D:$),l),y=u?e.mintB.address:e.mintA.address,b=pe(m,c[y],i,!1),w=v.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),A=u?w:new K(1).div(w),k=m.mul(new ae.default(Math.floor((1+s)*1e10))).div(new ae.default(1e10)),T=pe(k,c[y],i,!0),P=u?e.currentPrice:new K(1).div(e.currentPrice),B=new K(A).sub(P).abs(),x=P,C=new gt(new K(B).mul(10**15).toFixed(0),new K(x).mul(10**15).toFixed(0));return{amountIn:b,maxAmountIn:T,realAmountOut:d,expirationTime:yt(b.expirationTime,d.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:C,fee:f,remainingAccounts:p}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var g,f,y;let o=e[t],s=R.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=R.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,d=a-s,m=o.priceMax-o.priceMin,p;return l<=0?p=0:d===l?p=m/l:m===l?p=l/d:p=l/m*(l/d),{feeApr:o.feeApr*p,rewardsApr:[((g=o.rewardApr[0])!=null?g:0)*p,((f=o.rewardApr[1])!=null?f:0)*p,((y=o.rewardApr[2])!=null?y:0)*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u,network:c}){let l=n==="day"?1:n==="week"?7:n==="month"?30:0,d=e[n],m=i[Tt(e.mintA.address,c).toString()],p=i[Tt(e.mintB.address,c).toString()],g=e.mintA.decimals,f=e.mintB.decimals;if(!d||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let y=v.priceToSqrtPriceX64(new K(e.price),e.mintA.decimals,e.mintB.decimals),b=v.getSqrtPriceX64FromTick(s),w=v.getSqrtPriceX64FromTick(a),{amountSlippageA:A,amountSlippageB:k}=Q.getAmountsFromLiquidityWithSlippage(y,b,w,t,!1,!1,0),{amountSlippageA:T,amountSlippageB:P}=Q.getAmountsFromLiquidityWithSlippage(y,b,w,o,!1,!1,0),B=new K(A.toString()).div(new K(10).pow(g)).mul(m.value).add(new K(k.toString()).div(new K(10).pow(f)).mul(p.value)),x=new K(T.toString()).div(new K(10).pow(g)).mul(m.value).add(new K(P.toString()).div(new K(10).pow(f)).mul(p.value)),C=new K(1).div(B.add(x)),S=new K(d.volumeFee).mul(365).div(l).mul(C).mul(100).toNumber(),N=3600*24*365,V=e.rewardDefaultInfos.map(F=>{var Xe,Fe;let Y=F.mint.decimals,X=i[F.mint.address];return u<((Xe=F.startTime)!=null?Xe:0)||u>((Fe=F.endTime)!=null?Fe:0)||!F.perSecond||!X||Y===void 0?0:new K(X.value).mul(new K(F.perSecond).mul(N)).div(new K(10).pow(Y)).mul(C).mul(100).toNumber()});return{feeApr:S,rewardsApr:V,apr:S+V.reduce((F,Y)=>F+Y,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var b,w;let l=v.priceToSqrtPriceX64(new K(e.price),e.mintA.decimals,e.mintB.decimals),d=v.getSqrtPriceX64FromTick(n),m=v.getSqrtPriceX64FromTick(i),p=a?1-s:1+s,g=pe(o,(b=e[t?"mintA":"mintB"].extensions)==null?void 0:b.feeConfig,u,!c),f=new ae.default(new K(g.amount.sub((w=g.fee)!=null?w:$).toString()).mul(p).toFixed(0)),y;if(l.lte(d))y=t?Q.getLiquidityFromTokenAmountA(d,m,f,!a):new ae.default(0);else if(l.lte(m)){let A=Q.getLiquidityFromTokenAmountA(l,m,f,!a),k=Q.getLiquidityFromTokenAmountB(d,l,f);y=t?A:k}else y=t?new ae.default(0):Q.getLiquidityFromTokenAmountB(d,m,f);return de.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:y,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var y,b,w,A;let u=v.getSqrtPriceX64FromTick(n),c=v.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,d=Q.getAmountsFromLiquidity(v.priceToSqrtPriceX64(new K(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[m,p]=[pe(d.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),pe(d.amountB,(b=t.mintB.extensions)==null?void 0:b.feeConfig,e,!0)],[g,f]=[pe(d.amountA.muln(l),(w=t.mintA.extensions)==null?void 0:w.feeConfig,e,!0),pe(d.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:m,amountB:p,amountSlippageA:g,amountSlippageB:f,expirationTime:yt(m.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(u=>!n[u.id]).map(u=>new De.PublicKey(u.id));(await ot(e,i)).forEach((u,c)=>{!u||(n[i[c].toBase58()]=sn.decode(u.data))});let s=t.map(u=>ge(new De.PublicKey(u.programId),new De.PublicKey(u.id)).publicKey),a=await de.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((u,c)=>({...u,[c.id]:{...n[c.id],id:new De.PublicKey(c.id),version:6,programId:new De.PublicKey(c.programId),mintA:c.mintA,mintB:c.mintB,ammConfig:{...c.config,id:new De.PublicKey(c.config.id),fundOwner:""},currentPrice:new K(c.price),exBitmapAccount:ge(new De.PublicKey(c.programId),new De.PublicKey(c.id)).publicKey,exBitmapInfo:a[ge(new De.PublicKey(c.programId),new De.PublicKey(c.id)).publicKey.toBase58()],startTime:n[c.id].startTime.toNumber(),rewardInfos:n[c.id].rewardInfos}}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};function fs({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var A,k,T,P;let[c,l,d,m]=e<t?[e,t,n,i]:[t,e,i,n],p=v.priceToSqrtPriceX64(new K(r.price),r.mintA.decimals,r.mintB.decimals),g=v.getSqrtPriceX64FromTick(c),f=v.getSqrtPriceX64FromTick(l),[y,b]=[pe(d,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),pe(m,(k=r.mintB.extensions)==null?void 0:k.feeConfig,a,!u)],w=Q.getLiquidityFromTokenAmounts(p,g,f,y.amount.sub((T=y.fee)!=null?T:$),b.amount.sub((P=b.fee)!=null?P:$));return Q.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:w,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var wi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function Pi(r){return{...r,type:"Concentrated",programId:r.programId.toString(),id:r.id.toString(),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Clmm",price:r.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:r.ammConfig.tradeFeeRate,openTime:r.startTime.toString(),tvl:0,day:wi,week:wi,month:wi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,burnPercent:0,config:{...r.ammConfig,id:r.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}}}var U=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq($)||(o=o.add(je)),o}static mulDivFloor(e,t,n){if(n.eq($))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq($))throw new Error("division by 0");return e.mul(t).add(n.sub(je)).div(n)}static x64ToDecimal(e,t){return new K(e.toString()).div(K.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new z.default(e.mul(K.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(nn).sub(t).mod(nn)}};function ke(r,e){return Ti(r.mul(e),64,256)}function bs(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Ti(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var v=class{static sqrtPriceX64ToPrice(e,t,n){return U.x64ToDecimal(e).pow(2).mul(K.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return U.decimalToX64(e.mul(K.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt($))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt($))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt($))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt($))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq($))return e;let o=t.shln(Lt);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?U.mulDivCeil(s,e,a):U.mulDivRoundingUp(s,je,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return U.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(Lt);if(i)return e.add(o.div(t));{let s=U.mulDivRoundingUp(o,je,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<xe||e>Ne)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new z.default("18445821805675395072"):new z.default("18446744073709551616");return(t&2)!=0&&(n=ke(n,new z.default("18444899583751176192"))),(t&4)!=0&&(n=ke(n,new z.default("18443055278223355904"))),(t&8)!=0&&(n=ke(n,new z.default("18439367220385607680"))),(t&16)!=0&&(n=ke(n,new z.default("18431993317065453568"))),(t&32)!=0&&(n=ke(n,new z.default("18417254355718170624"))),(t&64)!=0&&(n=ke(n,new z.default("18387811781193609216"))),(t&128)!=0&&(n=ke(n,new z.default("18329067761203558400"))),(t&256)!=0&&(n=ke(n,new z.default("18212142134806163456"))),(t&512)!=0&&(n=ke(n,new z.default("17980523815641700352"))),(t&1024)!=0&&(n=ke(n,new z.default("17526086738831433728"))),(t&2048)!=0&&(n=ke(n,new z.default("16651378430235570176"))),(t&4096)!=0&&(n=ke(n,new z.default("15030750278694412288"))),(t&8192)!=0&&(n=ke(n,new z.default("12247334978884435968"))),(t&16384)!=0&&(n=ke(n,new z.default("8131365268886854656"))),(t&32768)!=0&&(n=ke(n,new z.default("3584323654725218816"))),(t&65536)!=0&&(n=ke(n,new z.default("696457651848324352"))),(t&131072)!=0&&(n=ke(n,new z.default("26294789957507116"))),(t&262144)!=0&&(n=ke(n,new z.default("37481735321082"))),e>0&&(n=ri.div(n)),n}static getTickFromPrice(e,t,n){return v.getTickFromSqrtPriceX64(v.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Ze)||e.lt(Qe))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new z.default(t-64),i=bs(n,32,128),o=new z.default("8000000000000000","hex"),s=0,a=new z.default(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new z.default(0))&&s<oi;){u=u.mul(u);let g=u.shrn(127);u=u.shrn(63+g.toNumber()),a=a.add(o.mul(g)),o=o.shrn(1),s+=1}let c=a.shrn(32),d=i.add(c).mul(new z.default(si)),m=Ti(d.sub(new z.default(ai)),64,128).toNumber(),p=Ti(d.add(new z.default(ci)),64,128).toNumber();return m==p?m:v.getSqrtPriceX64FromTick(p).lte(e)?p:m}},kt=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=v.getTickFromSqrtPriceX64(v.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=kt.getTickWithPriceAndTickspacing(e,t,n,i),s=v.getSqrtPriceX64FromTick(o);return v.sqrtPriceX64ToPrice(s,n,i)}},Q=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt($))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Lt),s=t.sub(e);return i?U.mulDivRoundingUp(U.mulDivCeil(o,s,t),je,e):U.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt($))throw new Error("sqrtPriceX64A must greater than 0");return i?U.mulDivCeil(n,t.sub(e),_e):U.mulDivFloor(n,t.sub(e),_e)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?U.mulDivRoundingUp(a,je,Sn):a.shrn(Lt)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),U.mulDivFloor(n,Sn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return Q.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=Q.getLiquidityFromTokenAmountA(e,n,i,!1),a=Q.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return Q.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:Q.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new z.default(0)};if(e.lt(n)){let s=Q.getTokenAmountAFromLiquidity(e,n,i,o),a=Q.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new z.default(0),amountB:Q.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=Q.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,d=new z.default(new K(u.toString()).mul(l).toFixed(0)),m=new z.default(new K(c.toString()).mul(l).toFixed(0));return{amountSlippageA:d,amountSlippageB:m}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var w,A,k,T;let c=v.priceToSqrtPriceX64(new K(e.price),e.mintA.decimals,e.mintB.decimals),l=v.getSqrtPriceX64FromTick(t),d=v.getSqrtPriceX64FromTick(n),m=s?1+o:1-o,p=Q.getAmountsFromLiquidity(c,l,d,i,s),[g,f]=[pe(p.amountA,(w=e.mintA.extensions)==null?void 0:w.feeConfig,a,u),pe(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[y,b]=[pe(new z.default(new K(p.amountA.toString()).mul(m).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),pe(new z.default(new K(p.amountB.toString()).mul(m).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,a,u)];return{liquidity:i,amountA:g,amountB:f,amountSlippageA:y,amountSlippageB:b,expirationTime:yt(g.expirationTime,f.expirationTime)}}},Pt=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,d,m,p,g,f=!1){if(m.eq($))throw new Error("amountSpecified must not be 0");if(g||(g=s?Qe.add(je):Ze.sub(je)),s){if(g.lt(Qe))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(g.gte(d))throw new Error("sqrtPriceX64 must smaller than current")}else{if(g.gt(Ze))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(g.lte(d))throw new Error("sqrtPriceX64 must greater than current")}let y=m.gt($),b={amountSpecifiedRemaining:m,amountCalculated:$,sqrtPriceX64:d,tick:c>p?Math.min(p+J.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new z.default(0)},w=p,A=n[p],k=0,T=!s&&A.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq($)&&!b.sqrtPriceX64.eq(g);){k>10;let P={};P.sqrtPriceStartX64=b.sqrtPriceX64;let B=R.nextInitTick(A,b.tick,l,s,T),x=B||null,C=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let S=de.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},w,s);if(!S.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts};throw Error("swapCompute LiquidityInsufficient")}w=S.nextStartIndex;let{publicKey:N}=j(e,t,w);C=N,A=n[w];try{x=R.firstInitializedTick(A,s)}catch{throw Error("not found next tick info")}}P.tickNext=x.tick,P.initialized=x.liquidityGross.gtn(0),p!==w&&C&&(b.accounts.push(C),p=w),P.tickNext<xe?P.tickNext=xe:P.tickNext>Ne&&(P.tickNext=Ne),P.sqrtPriceNextX64=v.getSqrtPriceX64FromTick(P.tickNext);let D;if(s&&P.sqrtPriceNextX64.lt(g)||!s&&P.sqrtPriceNextX64.gt(g)?D=g:D=P.sqrtPriceNextX64,[b.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=Pt.swapStepCompute(b.sqrtPriceX64,D,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(P.feeAmount),y?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),b.amountCalculated=b.amountCalculated.sub(P.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(P.amountOut),b.amountCalculated=b.amountCalculated.add(P.amountIn.add(P.feeAmount))),b.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let S=x.liquidityNet;s&&(S=S.mul(it)),b.liquidity=Q.addDelta(b.liquidity,S)}T=P.tickNext!=b.tick&&!s&&A.startTickIndex===P.tickNext,b.tick=s?P.tickNext-1:P.tickNext}else if(b.sqrtPriceX64!=P.sqrtPriceStartX64){let S=v.getTickFromSqrtPriceX64(b.sqrtPriceX64);T=S!=b.tick&&!s&&A.startTickIndex===S,b.tick=S}++k}try{let{nextStartIndex:P,isExist:B}=J.nextInitializedTickArray(b.tick,l,s,i,o);B&&p!==P&&(b.accounts.push(j(e,t,P).publicKey),p=P)}catch{}return{allTrade:!0,amountSpecifiedRemaining:$,amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new z.default(0),amountIn:new z.default(0),amountOut:new z.default(0),feeAmount:new z.default(0)},a=e.gte(t),u=i.gte($);if(u){let l=U.mulDivFloor(i,rn.sub(new z.default(o.toString())),rn);s.amountIn=a?Q.getTokenAmountAFromLiquidity(t,e,n,!0):Q.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=v.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?Q.getTokenAmountBFromLiquidity(t,e,n,!1):Q.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(it).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=v.getNextSqrtPriceX64FromOutput(e,n,i.mul(it),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=Q.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=Q.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:Q.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:Q.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(it))&&(s.amountOut=i.mul(it)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=U.mulDivCeil(s.amountIn,new z.default(o),rn.sub(new z.default(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var we=60,At=512,R=class{static getTickArrayAddressByTick(e,t,n,i){let o=R.getTickArrayStartIndexByTick(n,i),{publicKey:s}=j(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=R.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=we)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=J.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*J.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*we,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*we,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*we:e+t*we}static mergeTickArrayBitmap(e){let t=new Br.default(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*we));return[...R.searchLowBitFromStart(e,t,s-1,o,n),...R.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return R.searchHightBitFromStart(e,t,0,At,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=R.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=j(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>R.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=J.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>R.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=J.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<xe||e>Ne}static nextInitTick(e,t,n,i,o){if(J.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<we;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=we-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<we;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=v.getSqrtPriceX64FromTick(t),o=v.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new K(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new K(1).div(t),o=kt.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=v.getSqrtPriceX64FromTick(o),a=v.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new K(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=v.getSqrtPriceX64FromTick(t),o=v.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new K(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new K(1).div(t),o=kt.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=v.getSqrtPriceX64FromTick(o),a=v.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new K(1).div(a)}}};var hi=ee([Ve(8),se("bump"),tn("index"),te(""),ct("protocolFeeRate"),ct("tradeFeeRate"),tn("tickSpacing"),fe(O(),8,"")]),xr=ee([ct("blockTimestamp"),mr("tickCumulative"),fe(O(),4)]),Bi=ee([Ve(8),Me("initialized"),O("recentEpoch"),tn("observationIndex"),te("poolId"),fe(xr,100,"observations"),fe(O(),4)]),Ir=ee([se("rewardState"),O("openTime"),O("endTime"),O("lastUpdateTime"),Z("emissionsPerSecondX64"),O("rewardTotalEmissioned"),O("rewardClaimed"),te("tokenMint"),te("tokenVault"),te("creator"),Z("rewardGrowthGlobalX64")]),sn=ee([Ve(8),se("bump"),te("ammConfig"),te("creator"),te("mintA"),te("mintB"),te("vaultA"),te("vaultB"),te("observationId"),se("mintDecimalsA"),se("mintDecimalsB"),tn("tickSpacing"),Z("liquidity"),Z("sqrtPriceX64"),me("tickCurrent"),ct(),Z("feeGrowthGlobalX64A"),Z("feeGrowthGlobalX64B"),O("protocolFeesTokenA"),O("protocolFeesTokenB"),Z("swapInAmountTokenA"),Z("swapOutAmountTokenB"),Z("swapInAmountTokenB"),Z("swapOutAmountTokenA"),se("status"),fe(se(),7,""),fe(Ir,3,"rewardInfos"),fe(O(),16,"tickArrayBitmap"),O("totalFeesTokenA"),O("totalFeesClaimedTokenA"),O("totalFeesTokenB"),O("totalFeesClaimedTokenB"),O("fundFeesTokenA"),O("fundFeesTokenB"),O("startTime"),fe(O(),15*4-3,"padding")]),Sr=ee([Z("growthInsideLastX64"),O("rewardAmountOwed")]),vt=ee([Ve(8),se("bump"),te("nftMint"),te("poolId"),me("tickLower"),me("tickUpper"),Z("liquidity"),Z("feeGrowthInsideLastX64A"),Z("feeGrowthInsideLastX64B"),O("tokenFeesOwedA"),O("tokenFeesOwedB"),fe(Sr,3,"rewardInfos"),fe(O(),8,"")]),gs=ee([Ve(8),se("bump"),te("poolId"),me("tickLowerIndex"),me("tickUpperIndex"),Z("liquidity"),Z("feeGrowthInsideLastX64A"),Z("feeGrowthInsideLastX64B"),O("tokenFeesOwedA"),O("tokenFeesOwedB"),fe(Z(),3,"rewardGrowthInside"),fe(O(),8,"")]),Cr=ee([me("tick"),dr("liquidityNet"),Z("liquidityGross"),Z("feeGrowthOutsideX64A"),Z("feeGrowthOutsideX64B"),fe(Z(),3,"rewardGrowthsOutsideX64"),fe(ct(),13,"")]),Dt=ee([Ve(8),te("poolId"),me("startTickIndex"),fe(Cr,we,"ticks"),se("initializedTickCount"),fe(se(),115,"")]),xi=ee([Ve(329),fe(te(),100,"whitelistMints")]),ki=ee([Ve(8),te("poolId"),fe(fe(O(),8),Rn,"positiveTickArrayBitmap"),fe(fe(O(),8),Rn,"negativeTickArrayBitmap")]),ys=ee([O(),se("bump"),te("owner"),te("poolId"),te("positionId"),te("nftAccount"),fe(O(),8)]),ws=ee([Ve(8),se("bump"),te("lockOwner"),te("poolId"),te("positionId"),te("nftAccount"),te("lockNftMint"),O("recentEpoch"),fe(O(),8)]);Bi.span;var Nr=Te("CobaltX_Clmm"),qe={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],openPositionWithTokenEx:[77,255,174,82,125,29,201,46],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Kr=[188,37,179,131,82,150,84,73],Lr=[16,72,250,198,14,162,212,19],ce=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,d,m,p,g){let f=ee([Z("sqrtPriceX64"),O("startTime")]),y=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:h.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1}],b=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:g},b);let w=Buffer.from([...qe.createPool,...b]);return new h.TransactionInstruction({keys:y,programId:e,data:w})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:o,ammConfigId:s,initialPriceX64:a,startTime:u}=e,[c,l]=[new h.PublicKey(i.address),new h.PublicKey(o.address)],{publicKey:d}=fi(t,s,c,l),{publicKey:m}=gi(t,d),{publicKey:p}=Kn(t,d,c),{publicKey:g}=Kn(t,d,l),f=ge(t,d).publicKey,y=[this.createPoolInstruction(t,d,n,s,m,c,p,new h.PublicKey(i.programId||M.TOKEN_PROGRAM_ID),l,g,new h.PublicKey(o.programId||M.TOKEN_PROGRAM_ID),f,a,u)];return{signers:[],instructions:y,instructionTypes:[be.CreateAccount,be.ClmmCreatePool],address:{poolId:d,observationId:m,exBitmapAccount:f,mintAVault:p,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,d,m,p,g,f,y,b,w,A,k,T,P,B,x,C,D){let S=ee([me("tickLowerIndex"),me("tickUpperIndex"),me("tickArrayLowerStartIndex"),me("tickArrayUpperStartIndex"),Z("liquidity"),O("amountMaxA"),O("amountMaxB"),Me("withMetadata"),se("optionBaseFlag"),Me("baseFlag")]),N=[...D?[{pubkey:D,isSigner:!1,isWritable:!0}]:[]],V=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:h.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:ht,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...N],F=Buffer.alloc(S.span);S.encode({tickLowerIndex:w,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:T,liquidity:P,amountMaxA:B,amountMaxB:x,withMetadata:C==="create",baseFlag:!1,optionBaseFlag:0},F);let Y=Buffer.from([...qe.openPosition,...F]);return new h.TransactionInstruction({keys:V,programId:e,data:Y})}static openPositionFromLiquidityInstruction22(e,t,n,i,o,s,a,u,c,l,d,m,p,g,f,y,b,w,A,k,T,P,B,x,C){let D=ee([me("tickLowerIndex"),me("tickUpperIndex"),me("tickArrayLowerStartIndex"),me("tickArrayUpperStartIndex"),Z("liquidity"),O("amountMaxA"),O("amountMaxB"),Me("withMetadata"),se("optionBaseFlag"),Me("baseFlag")]),S=[...C?[{pubkey:C,isSigner:!1,isWritable:!0}]:[]],N=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:h.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...S],V=Buffer.alloc(D.span);D.encode({tickLowerIndex:b,tickUpperIndex:w,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:k,liquidity:T,amountMaxA:P,amountMaxB:B,withMetadata:x==="create",baseFlag:!1,optionBaseFlag:0},V);let F=Buffer.from([...qe.openPositionWithTokenEx,...V]);return new h.TransactionInstruction({keys:N,programId:e,data:F})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l,nft2022:d}){let m=[],[p,g]=[new h.PublicKey(e.programId),new h.PublicKey(e.id)],f;if(l)f=new h.PublicKey((await l(1))[0]);else{let C=h.Keypair.generate();m.push(C),f=C.publicKey}let y=R.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=R.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=j(p,g,y),{publicKey:A}=j(p,g,b),{publicKey:k}=d?le(n.wallet,f,M.TOKEN_2022_PROGRAM_ID):le(n.wallet,f,M.TOKEN_PROGRAM_ID),{publicKey:T}=Mt(f),{publicKey:P}=Ke(p,f),{publicKey:B}=Ge(p,g,i,o),x=d?this.openPositionFromLiquidityInstruction22(p,n.feePayer,g,n.wallet,f,k,B,w,A,P,n.tokenAccountA,n.tokenAccountB,new h.PublicKey(t.vault.A),new h.PublicKey(t.vault.B),new h.PublicKey(e.mintA.address),new h.PublicKey(e.mintB.address),i,o,y,b,s,a,u,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ge(p,g).publicKey:void 0):this.openPositionFromLiquidityInstruction(p,n.feePayer,g,n.wallet,f,k,T,B,w,A,P,n.tokenAccountA,n.tokenAccountB,new h.PublicKey(t.vault.A),new h.PublicKey(t.vault.B),new h.PublicKey(e.mintA.address),new h.PublicKey(e.mintB.address),i,o,y,b,s,a,u,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ge(p,g).publicKey:void 0);return{signers:m,instructions:[x],instructionTypes:[be.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:f,tickArrayLower:w,tickArrayUpper:A,positionNftAccount:k,metadataAccount:T,personalPosition:P,protocolPosition:B}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l,nft2022:d}){let m=[],[p,g]=[new h.PublicKey(e.programId),new h.PublicKey(e.id)],f;if(l)f=new h.PublicKey((await l(1))[0]);else{let C=h.Keypair.generate();m.push(C),f=C.publicKey}let y=R.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=R.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=j(p,g,y),{publicKey:A}=j(p,g,b),{publicKey:k}=d?le(n.wallet,f,M.TOKEN_2022_PROGRAM_ID):le(n.wallet,f,M.TOKEN_PROGRAM_ID),{publicKey:T}=Mt(f),{publicKey:P}=Ke(p,f),{publicKey:B}=Ge(p,g,i,o),x=d?this.openPositionFromBaseInstruction22(p,n.feePayer,g,n.wallet,f,k,B,w,A,P,n.tokenAccountA,n.tokenAccountB,new h.PublicKey(t.vault.A),new h.PublicKey(t.vault.B),new h.PublicKey(e.mintA.address),new h.PublicKey(e.mintB.address),i,o,y,b,c,s,a,u,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ge(p,g).publicKey:void 0):this.openPositionFromBaseInstruction(p,n.feePayer,g,n.wallet,f,k,T,B,w,A,P,n.tokenAccountA,n.tokenAccountB,new h.PublicKey(t.vault.A),new h.PublicKey(t.vault.B),new h.PublicKey(e.mintA.address),new h.PublicKey(e.mintB.address),i,o,y,b,c,s,a,u,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ge(p,g).publicKey:void 0);return{address:{nftMint:f,tickArrayLower:w,tickArrayUpper:A,positionNftAccount:k,metadataAccount:T,personalPosition:P,protocolPosition:B},instructions:[x],signers:m,instructionTypes:[be.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount&&t.lookupTableAccount!=""?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,d,m,p,g,f,y,b,w,A,k,T,P,B,x,C,D){let S=ee([me("tickLowerIndex"),me("tickUpperIndex"),me("tickArrayLowerStartIndex"),me("tickArrayUpperStartIndex"),Z("liquidity"),O("amountMaxA"),O("amountMaxB"),Me("withMetadata"),se("optionBaseFlag"),Me("baseFlag")]),N=[...D?[{pubkey:D,isSigner:!1,isWritable:!0}]:[]],V=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:h.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:ht,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...N],F=Buffer.alloc(S.span);S.encode({tickLowerIndex:w,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:T,liquidity:new Mn.default(0),amountMaxA:B==="MintA"?x:C,amountMaxB:B==="MintA"?C:x,withMetadata:P==="create",baseFlag:B==="MintA",optionBaseFlag:1},F);let Y=Buffer.from([...qe.openPosition,...F]);return new h.TransactionInstruction({keys:V,programId:e,data:Y})}static openPositionFromBaseInstruction22(e,t,n,i,o,s,a,u,c,l,d,m,p,g,f,y,b,w,A,k,T,P,B,x,C){let D=ee([me("tickLowerIndex"),me("tickUpperIndex"),me("tickArrayLowerStartIndex"),me("tickArrayUpperStartIndex"),Z("liquidity"),O("amountMaxA"),O("amountMaxB"),Me("withMetadata"),se("optionBaseFlag"),Me("baseFlag")]),S=[...C?[{pubkey:C,isSigner:!1,isWritable:!0}]:[]],N=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:h.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...S],V=Buffer.alloc(D.span);D.encode({tickLowerIndex:b,tickUpperIndex:w,tickArrayLowerStartIndex:A,tickArrayUpperStartIndex:k,liquidity:new Mn.default(0),amountMaxA:P==="MintA"?B:x,amountMaxB:P==="MintA"?x:B,withMetadata:T==="create",baseFlag:P==="MintA",optionBaseFlag:1},V);let F=Buffer.from([...qe.openPositionWithTokenEx,...V]);return new h.TransactionInstruction({keys:N,programId:e,data:F})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l,nft2022:d}){let m,p=[];if(l)m=new h.PublicKey((await l(1))[0]);else{let C=h.Keypair.generate();p.push(C),m=C.publicKey}let[g,f]=[new h.PublicKey(e.programId),new h.PublicKey(e.id)],y=R.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=R.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:w}=j(g,f,y),{publicKey:A}=j(g,f,b),{publicKey:k}=d?le(n.wallet,m,M.TOKEN_2022_PROGRAM_ID):le(n.wallet,m,M.TOKEN_PROGRAM_ID),{publicKey:T}=Mt(m),{publicKey:P}=Ke(g,m),{publicKey:B}=Ge(g,f,i,o),x=d?this.openPositionFromLiquidityInstruction22(g,n.wallet,f,n.wallet,m,k,B,w,A,P,n.tokenAccountA,n.tokenAccountB,new h.PublicKey(t.vault.A),new h.PublicKey(t.vault.B),new h.PublicKey(t.mintA.address),new h.PublicKey(t.mintB.address),i,o,y,b,s,a,u,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ge(g,f).publicKey:void 0):this.openPositionFromLiquidityInstruction(g,n.wallet,f,n.wallet,m,k,T,B,w,A,P,n.tokenAccountA,n.tokenAccountB,new h.PublicKey(t.vault.A),new h.PublicKey(t.vault.B),new h.PublicKey(t.mintA.address),new h.PublicKey(t.mintB.address),i,o,y,b,s,a,u,c,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[y,b])?ge(g,f).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:w,tickArrayUpper:A,positionNftAccount:k,metadataAccount:T,personalPosition:P,protocolPosition:B},instructions:[x],signers:p,instructionTypes:[be.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o,s){let a=ee([]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:h.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:s?M.TOKEN_2022_PROGRAM_ID:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}],c=Buffer.alloc(a.span);a.encode({},c);let l=Buffer.from([...qe.closePosition,...c]);return new h.TransactionInstruction({keys:u,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i,nft2022:o}){let s=new h.PublicKey(e.programId),a=o?le(n.wallet,i.nftMint,M.TOKEN_2022_PROGRAM_ID).publicKey:le(n.wallet,i.nftMint,M.TOKEN_PROGRAM_ID).publicKey,{publicKey:u}=Ke(s,i.nftMint),c=[];return c.push(this.closePositionInstruction(s,n.wallet,i.nftMint,a,u,o)),{address:{positionNftAccount:a,personalPosition:u},signers:[],instructions:c,instructionTypes:[be.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,d,m,p,g,f,y,b,w){let A=ee([Z("liquidity"),O("amountMaxA"),O("amountMaxB"),se("optionBaseFlag"),Me("baseFlag")]),k=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...k],P=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:y,amountMaxB:b,optionBaseFlag:0,baseFlag:!1},P);let B=Buffer.from([...qe.increaseLiquidity,...P]);return new h.TransactionInstruction({keys:T,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a,nft2022:u}){let[c,l]=[new h.PublicKey(e.programId),new h.PublicKey(e.id)],d=R.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=R.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=j(c,l,d),{publicKey:g}=j(c,l,m),{publicKey:f}=u?le(i.wallet,n.nftMint,M.TOKEN_2022_PROGRAM_ID):le(i.wallet,n.nftMint,M.TOKEN_PROGRAM_ID),{publicKey:y}=Ke(c,n.nftMint),{publicKey:b}=Ge(c,l,n.tickLower,n.tickUpper),w=this.increasePositionFromLiquidityInstruction(c,i.wallet,f,y,l,b,p,g,i.tokenAccountA,i.tokenAccountB,new h.PublicKey(t.vault.A),new h.PublicKey(t.vault.B),new h.PublicKey(e.mintA.address),new h.PublicKey(e.mintB.address),o,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,m])?ge(c,l).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:y,protocolPosition:b},signers:[],instructions:[w],instructionTypes:[be.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a,nft2022:u}){let[c,l]=[new h.PublicKey(e.programId),new h.PublicKey(e.id)],d=R.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=R.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=j(c,l,d),{publicKey:g}=j(c,l,m),{publicKey:f}=u?le(i.wallet,n.nftMint,M.TOKEN_2022_PROGRAM_ID):le(i.wallet,n.nftMint,M.TOKEN_PROGRAM_ID),{publicKey:y}=Ke(c,n.nftMint),{publicKey:b}=Ge(c,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:f,personalPosition:y,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(c,i.wallet,f,y,l,b,p,g,i.tokenAccountA,i.tokenAccountB,new h.PublicKey(t.vault.A),new h.PublicKey(t.vault.B),new h.PublicKey(e.mintA.address),new h.PublicKey(e.mintB.address),o,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,m])?ge(c,l).publicKey:void 0)],signers:[],instructionTypes:[be.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,d,m,p,g,f,y,b,w){let A=ee([Z("liquidity"),O("amountMaxA"),O("amountMaxB"),se("optionBaseFlag"),Me("baseFlag")]),k=[...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...k],P=Buffer.alloc(A.span);A.encode({liquidity:new Mn.default(0),amountMaxA:f==="MintA"?y:b,amountMaxB:f==="MintA"?b:y,baseFlag:f==="MintA",optionBaseFlag:1},P);let B=Buffer.from([...qe.increaseLiquidity,...P]);return new h.TransactionInstruction({keys:T,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,d,m,p,g,f,y,b,w,A){let k=ee([Z("liquidity"),O("amountMinA"),O("amountMinB")]),T=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(C=>[{pubkey:C.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.rewardMint,isSigner:!1,isWritable:!1}]).flat()],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:wn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...T],B=Buffer.alloc(k.span);k.encode({liquidity:y,amountMinA:b,amountMinB:w},B);let x=Buffer.from([...qe.decreaseLiquidity,...B]);return new h.TransactionInstruction({keys:P,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u,nft2022:c}){let[l,d]=[new h.PublicKey(e.programId),new h.PublicKey(e.id)],m=R.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=R.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:g}=j(l,d,m),{publicKey:f}=j(l,d,p),{publicKey:y}=c?le(i.wallet,n.nftMint,M.TOKEN_2022_PROGRAM_ID):le(i.wallet,n.nftMint,u),{publicKey:b}=Ke(l,n.nftMint),{publicKey:w}=Ge(l,d,n.tickLower,n.tickUpper),A=[];for(let P=0;P<e.rewardDefaultInfos.length;P++)A.push({poolRewardVault:new h.PublicKey(t.rewardInfos[P].vault),ownerRewardVault:i.rewardAccounts[P],rewardMint:new h.PublicKey(e.rewardDefaultInfos[P].mint.address)});let k=[],T=this.decreaseLiquidityInstruction(l,i.wallet,y,b,d,w,g,f,i.tokenAccountA,i.tokenAccountB,new h.PublicKey(t.vault.A),new h.PublicKey(t.vault.B),new h.PublicKey(e.mintA.address),new h.PublicKey(e.mintB.address),A,o,s,a,de.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?ge(l,d).publicKey:void 0);return k.push(T),{address:{tickArrayLower:g,tickArrayUpper:f,positionNftAccount:y,personalPosition:b,protocolPosition:w},signers:[],instructions:k,instructionTypes:[be.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,d,m,p,g,f,y,b){let w=ee([O("amount"),O("otherAmountThreshold"),Z("sqrtPriceLimitX64"),Me("isBaseInput")]),A=[...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...d.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:wn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],T=Buffer.alloc(w.span);w.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:f,isBaseInput:y},T);let P=Buffer.from([...qe.swap,...T]);return new h.TransactionInstruction({keys:k,programId:e,data:P})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,d]=[new h.PublicKey(e.programId),new h.PublicKey(e.id)],[m,p]=[new h.PublicKey(t.vault.A),new h.PublicKey(t.vault.B)],[g,f]=[new h.PublicKey(e.mintA.address),new h.PublicKey(e.mintB.address)],y=e.mintA.address===o.toString(),b=[this.swapInstruction(l,i.wallet,d,new h.PublicKey(e.config.id),y?i.tokenAccountA:i.tokenAccountB,y?i.tokenAccountB:i.tokenAccountA,y?m:p,y?p:m,y?g:f,y?f:g,c,n,s,a,u,!0,ge(l,d).publicKey)];return{signers:[],instructions:b,instructionTypes:[be.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,outputMint:o,amountOut:s,amountInMax:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,d]=[new h.PublicKey(e.programId),new h.PublicKey(e.id)],[m,p]=[new h.PublicKey(t.vault.A),new h.PublicKey(t.vault.B)],[g,f]=[new h.PublicKey(e.mintA.address),new h.PublicKey(e.mintB.address)],y=e.mintA.address===o.toBase58(),b=[this.swapInstruction(l,i.wallet,d,new h.PublicKey(e.config.id),y?i.tokenAccountB:i.tokenAccountA,y?i.tokenAccountA:i.tokenAccountB,y?p:m,y?m:p,y?f:g,y?g:f,c,n,s,a,u,!1,ge(l,d).publicKey)];return{signers:[],instructions:b,instructionTypes:[be.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,d,m){let p=ee([O("openTime"),O("endTime"),Z("emissionsPerSecondX64")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:h.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:Pe(l),endTime:Pe(d),emissionsPerSecondX64:m},f);let y=Buffer.from([...qe.initReward,...f]);return new h.TransactionInstruction({keys:g,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new h.PublicKey(e.programId),new h.PublicKey(e.id)],a=bi(o,s,i.mint).publicKey,u=Ot(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new h.PublicKey(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[be.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,d,m){let p=ee([se("rewardIndex"),Z("emissionsPerSecondX64"),O("openTime"),O("endTime")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:m,openTime:Pe(l),endTime:Pe(d)},f);let y=Buffer.from([...qe.setRewardEmissions,...f]);return new h.TransactionInstruction({keys:g,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new h.PublicKey(e.programId),new h.PublicKey(e.id)],a,u,c;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===i.mint.toString()&&(a=m,u=new h.PublicKey(t.rewardInfos[m].vault),c=new h.PublicKey(t.rewardInfos[m].mint.address));(a===void 0||u===void 0)&&Nr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Ot(o).publicKey,d=[this.setRewardInstruction(o,n.wallet,s,l,new h.PublicKey(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:d,instructionTypes:[be.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=ee([se("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:wn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let d=Buffer.from([...qe.collectReward,...l]);return new h.TransactionInstruction({keys:c,programId:e,data:d})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new h.PublicKey(e.programId),new h.PublicKey(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new h.PublicKey(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Nr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[be.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:i,wallet:o,nftMint:s,nft2022:a,getEphemeralSigners:u}){let c=[],l;if(u)l=new h.PublicKey((await u(1))[0]);else{let b=h.Keypair.generate();c.push(b),l=b.publicKey}let d=a?le(o,s,M.TOKEN_2022_PROGRAM_ID).publicKey:le(o,s,M.TOKEN_PROGRAM_ID).publicKey,{publicKey:m}=Ke(n,s),p=Et(e,l).publicKey,g=le(o,l,M.TOKEN_PROGRAM_ID).publicKey,f=Mt(l).publicKey,y=ce.lockPositionInstructionV2({programId:e,auth:t,payer:i,positionOwner:o,lockOwner:o,positionNftAccount:d,positionId:m,lockPositionId:p,lockNftMint:l,lockNftAccount:g,metadataAccount:f,withMetadata:!0,nft2022:a,positionNftMint:s,authPositionNftAccount:le(t,s,a?M.TOKEN_2022_PROGRAM_ID:M.TOKEN_PROGRAM_ID).publicKey,positionNftProgram:a?M.TOKEN_2022_PROGRAM_ID:M.TOKEN_PROGRAM_ID});return{address:{positionId:m,lockPositionId:p,lockNftAccount:g,lockNftMint:l,positionNftAccount:d,metadataAccount:f},instructions:[y],signers:c,instructionTypes:[be.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:i,lockOwner:o,positionNftAccount:s,positionId:a,positionNftMint:u,authPositionNftAccount:c,positionNftProgram:l,lockPositionId:d,lockNftMint:m,lockNftAccount:p,metadataAccount:g,withMetadata:f}){let y=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!0,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:ht,isSigner:!1,isWritable:!1},{pubkey:M.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:bt,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:h.SystemProgram.programId,isSigner:!1,isWritable:!1}],b=ee([Me("withMetadata")]),w=Buffer.alloc(b.span);b.encode({withMetadata:f},w);let A=Buffer.from([...Kr,...w]);return new h.TransactionInstruction({keys:y,programId:e,data:A})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:i,positionNft:o}){let{publicKey:s}=le(i,o,M.TOKEN_PROGRAM_ID),{publicKey:a}=Ke(n,o),u=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Ln(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:h.SystemProgram.programId,isSigner:!1,isWritable:!1}];return new h.TransactionInstruction({keys:u,programId:e,data:Buffer.from(Kr)})}static harvestLockPositionInstruction(e){let[t,n]=[new h.PublicKey(e.poolKeys.programId),new h.PublicKey(e.poolKeys.id)],i=R.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),o=R.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:s}=j(t,n,i),{publicKey:a}=j(t,n,o),{publicKey:u}=le(e.owner,e.ownerPosition.nftMint,M.TOKEN_PROGRAM_ID),{publicKey:c}=Ke(t,e.ownerPosition.nftMint),{publicKey:l}=Ge(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),d=[];for(let g=0;g<e.poolKeys.rewardInfos.length;g++)d.push({poolRewardVault:new h.PublicKey(e.poolKeys.rewardInfos[g].vault),ownerRewardVault:e.ownerRewardAccounts[g],rewardMint:new h.PublicKey(e.poolKeys.rewardInfos[g].mint.address)});let m=[...d.map(g=>[{pubkey:g.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:g.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:g.rewardMint,isSigner:!1,isWritable:!1}]).flat()],p=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:Ln(e.programId,c).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:new h.PublicKey(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new h.PublicKey(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:jn,isSigner:!1,isWritable:!1},{pubkey:new h.PublicKey(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new h.PublicKey(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...m];return new h.TransactionInstruction({keys:p,programId:e.programId,data:Buffer.from(Lr)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:i,lockOwner:o,lockNftMint:s,lockNftAccount:a,positionNftAccount:u,positionId:c,poolId:l,protocolPosition:d,vaultA:m,vaultB:p,tickArrayLower:g,tickArrayUpper:f,userVaultA:y,userVaultB:b,mintA:w,mintB:A,rewardAccounts:k,exTickArrayBitmap:T}){let P=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[],...k.map(x=>[{pubkey:x.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:x.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:x.rewardMint,isSigner:!1,isWritable:!1}]).flat()],B=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:M.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:M.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:jn,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:A,isSigner:!1,isWritable:!1},...P];return new h.TransactionInstruction({keys:B,programId:e,data:Buffer.from(Lr)})}};var On=class extends en{constructor(t){super(t);this.network=t.network}async getClmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async createPool(t){var k;let{programId:n,owner:i=((k=this.scope.owner)==null?void 0:k.publicKey)||L.PublicKey.default,mint1:o,mint2:s,ammConfig:a,initialPrice:u,startTime:c,computeBudgetConfig:l,forerunCreate:d,getObserveState:m,txVersion:p}=t,g=this.createTxBuilder(),[f,y,b]=new Oe.default(new L.PublicKey(o.address).toBuffer()).gt(new Oe.default(new L.PublicKey(s.address).toBuffer()))?[s,o,new K(1).div(u)]:[o,s,u],w=v.priceToSqrtPriceX64(b,f.decimals,y.decimals),A=await ce.createPoolInstructions({connection:this.scope.connection,programId:n,owner:i,mintA:f,mintB:y,ammConfigId:a.id,initialPriceX64:w,startTime:c,forerunCreate:!m&&d});return g.addInstruction(A),g.addCustomComputeBudget(l),g.versionBuild({txVersion:p,extInfo:{address:{...A.address,observationId:A.address.observationId.toBase58(),exBitmapAccount:A.address.exBitmapAccount.toBase58(),programId:n.toString(),id:A.address.poolId.toString(),mintA:f,mintB:y,openTime:c.toString(),vault:{A:A.address.mintAVault.toString(),B:A.address.mintBVault.toString()},rewardInfos:[],config:{id:a.id.toString(),index:a.index,protocolFeeRate:a.protocolFeeRate,tradeFeeRate:a.tradeFeeRate,tickSpacing:a.tickSpacing,fundFeeRate:a.fundFeeRate,description:a.description,defaultRange:0,defaultRangePoint:[]}},mockPoolInfo:{type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:A.address.poolId.toString(),mintA:f,mintB:y,feeRate:a.tradeFeeRate,openTime:c.toString(),programId:n.toString(),price:b.toNumber(),config:{id:a.id.toString(),index:a.index,protocolFeeRate:a.protocolFeeRate,tradeFeeRate:a.tradeFeeRate,tickSpacing:a.tickSpacing,fundFeeRate:a.fundFeeRate,description:a.description,defaultRange:0,defaultRangePoint:[]},burnPercent:0,...ui},forerunCreate:d}})}async openPositionFromBase({poolInfo:t,poolKeys:n,ownerInfo:i,tickLower:o,tickUpper:s,base:a,baseAmount:u,otherAmountMax:c,nft2022:l,associatedOnly:d=!0,checkCreateATAOwner:m=!1,withMetadata:p="create",getEphemeralSigners:g,computeBudgetConfig:f,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let b=this.createTxBuilder(),w=null,A=null,k=i.useSOLBalance&&t.mintA.address===ue(this.network).WSOLMint.toBase58(),T=i.useSOLBalance&&t.mintB.address===ue(this.network).WSOLMint.toBase58(),[P,B]=a==="MintA"?[u,c]:[c,u],{account:x,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new L.PublicKey(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k||P.isZero()?{payer:this.scope.ownerPubKey,amount:P}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:d,checkCreateATAOwner:m});x&&(w=x),b.addInstruction(C||{});let{account:D,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new L.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T||B.isZero()?{payer:this.scope.ownerPubKey,amount:B}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:T?!1:d,checkCreateATAOwner:m});D&&(A=D),b.addInstruction(S||{}),(!w||!A)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:w==null?void 0:w.toBase58(),ownerTokenAccountB:A==null?void 0:A.toBase58()});let N=n||await this.getClmmPoolKeys(t.id),V=await ce.openPositionFromBaseInstructions({poolInfo:t,poolKeys:N,ownerInfo:{...i,feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:w,tokenAccountB:A},tickLower:o,tickUpper:s,base:a,baseAmount:u,otherAmountMax:c,withMetadata:p,getEphemeralSigners:g,nft2022:l});return console.log("insInfo",V),b.addInstruction(V),b.addCustomComputeBudget(f),b.versionBuild({txVersion:y,extInfo:{...V.address}})}async openPositionFromLiquidity({poolInfo:t,poolKeys:n,ownerInfo:i,amountMaxA:o,amountMaxB:s,tickLower:a,tickUpper:u,liquidity:c,associatedOnly:l=!0,checkCreateATAOwner:d=!1,withMetadata:m="create",txVersion:p,computeBudgetConfig:g,getEphemeralSigners:f,nft2022:y}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let b=this.createTxBuilder(),w=null,A=null,k=i.useSOLBalance&&t.mintA.address===ue(this.network).WSOLMint.toBase58(),T=i.useSOLBalance&&t.mintB.address===ue(this.network).WSOLMint.toBase58(),{account:P,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new L.PublicKey(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:l,checkCreateATAOwner:d});P&&(w=P),b.addInstruction(B||{});let{account:x,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new L.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:T?!1:l,checkCreateATAOwner:d});x&&(A=x),b.addInstruction(C||{}),(w===void 0||A===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let D=n||await this.getClmmPoolKeys(t.id),S=await ce.openPositionFromLiquidityInstructions({poolInfo:t,poolKeys:D,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:w,tokenAccountB:A},tickLower:a,tickUpper:u,liquidity:c,amountMaxA:o,amountMaxB:s,withMetadata:m,getEphemeralSigners:f,nft2022:y});return b.addInstruction(S),b.addCustomComputeBudget(g),b.versionBuild({txVersion:p,extInfo:{address:S.address}})}async increasePositionFromLiquidity(t){var C;let{poolInfo:n,poolKeys:i,ownerPosition:o,amountMaxA:s,amountMaxB:a,liquidity:u,ownerInfo:c,associatedOnly:l=!0,checkCreateATAOwner:d=!1,computeBudgetConfig:m,txVersion:p}=t,g=this.createTxBuilder(),f,y,b=c.useSOLBalance&&n.mintA.address===ue(this.network).WSOLMint.toBase58(),w=c.useSOLBalance&&n.mintB.address===ue(this.network).WSOLMint.toBase58(),{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintA.programId,mint:new L.PublicKey(n.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:b||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,skipCloseAccount:!b,associatedOnly:b?!1:l,checkCreateATAOwner:d});A&&(f=A),g.addInstruction(k||{});let{account:T,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintB.programId,mint:new L.PublicKey(n.mintB.address),owner:this.scope.ownerPubKey,createInfo:w||a.isZero()?{payer:this.scope.ownerPubKey,amount:a}:void 0,notUseTokenAccount:w,skipCloseAccount:!w,associatedOnly:w?!1:l,checkCreateATAOwner:d});T&&(y=T),g.addInstruction(P||{}),!f&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=i!=null?i:await this.getClmmPoolKeys(n.id),x=ce.increasePositionFromLiquidityInstructions({poolInfo:n,poolKeys:B,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:y},liquidity:u,amountMaxA:s,amountMaxB:a,nft2022:(C=await this.scope.connection.getAccountInfo(o.nftMint))==null?void 0:C.owner.equals(Le.TOKEN_2022_PROGRAM_ID)});return g.addInstruction(x),g.addCustomComputeBudget(m),g.versionBuild({txVersion:p,extInfo:{address:x.address}})}async increasePositionFromBase(t){var x;let{poolInfo:n,ownerPosition:i,base:o,baseAmount:s,otherAmountMax:a,ownerInfo:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:d,txVersion:m}=t,p=this.createTxBuilder(),g,f,y=u.useSOLBalance&&n.mintA.address===ue(this.network).WSOLMint.toBase58(),b=u.useSOLBalance&&n.mintB.address===ue(this.network).WSOLMint.toBase58(),{account:w,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintA.programId,mint:new L.PublicKey(n.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:y||(o==="MintA"?s:a).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?s:a}:void 0,skipCloseAccount:!y,associatedOnly:y?!1:c,checkCreateATAOwner:l});w&&(g=w),p.addInstruction(A||{});let{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintB.programId,mint:new L.PublicKey(n.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||(o==="MintA"?a:s).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?a:s}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:l});k&&(f=k),p.addInstruction(T||{}),!g&&!f&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let P=await this.getClmmPoolKeys(n.id),B=ce.increasePositionFromBaseInstructions({poolInfo:n,poolKeys:P,ownerPosition:i,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:g,tokenAccountB:f},base:o,baseAmount:s,otherAmountMax:a,nft2022:(x=await this.scope.connection.getAccountInfo(i.nftMint))==null?void 0:x.owner.equals(Le.TOKEN_2022_PROGRAM_ID)});return p.addInstruction(B),p.addCustomComputeBudget(d),p.versionBuild({txVersion:m,extInfo:{address:B.address}})}async decreaseLiquidity(t){var V;let{poolInfo:n,poolKeys:i,ownerPosition:o,ownerInfo:s,amountMinA:a,amountMinB:u,liquidity:c,associatedOnly:l=!0,checkCreateATAOwner:d=!1,computeBudgetConfig:m,txVersion:p,nftAccount:g}=t;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let f=this.createTxBuilder(),y=s.useSOLBalance&&n.mintA.address===ue(this.network).WSOLMint.toBase58(),b=s.useSOLBalance&&n.mintB.address===ue(this.network).WSOLMint.toBase58(),w,A,{account:k,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintA.programId,mint:new L.PublicKey(n.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:l,checkCreateATAOwner:d});w=k,T&&f.addInstruction(T);let{account:P,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.mintB.programId,mint:new L.PublicKey(n.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:b?!1:l,checkCreateATAOwner:d});A=P,B&&f.addInstruction(B);let x=[];for(let F of n.rewardDefaultInfos){let Y=s.useSOLBalance&&F.mint.address===Re(this.network).address.toString(),X;if(F.mint.address===n.mintA.address)X=w;else if(F.mint.address===n.mintB.address)X=A;else{let{account:Xe,instructionParams:Fe}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L.PublicKey(F.mint.programId),mint:new L.PublicKey(F.mint.address),notUseTokenAccount:Y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!Y,associatedOnly:Y?!1:l,checkCreateATAOwner:d});X=Xe,Fe&&f.addInstruction(Fe)}x.push(X)}!w&&!A&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let C=i!=null?i:await this.getClmmPoolKeys(n.id),D=(V=await this.scope.connection.getAccountInfo(o.nftMint))==null?void 0:V.owner.equals(Le.TOKEN_2022_PROGRAM_ID),S=await ce.decreaseLiquidityInstructions({poolInfo:n,poolKeys:C,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:w,tokenAccountB:A,rewardAccounts:x},liquidity:c,amountMinA:a,amountMinB:u,nft2022:D});f.addInstruction({instructions:S.instructions,instructionTypes:[be.ClmmDecreasePosition]});let N={...S.address};if(s.closePosition){let F=await ce.closePositionInstructions({poolInfo:n,poolKeys:C,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:o,nft2022:D});f.addInstruction({endInstructions:F.instructions,endInstructionTypes:F.instructionTypes}),N={...N,...F.address}}return f.addCustomComputeBudget(m),f.versionBuild({txVersion:p,extInfo:{address:N}})}async lockPosition(t){var p;let{programId:n=Jt,authProgramId:i=Tn,poolProgramId:o=Zt(this.network),ownerPosition:s,payer:a,computeBudgetConfig:u,txVersion:c,getEphemeralSigners:l}=t,d=this.createTxBuilder(),m=await ce.makeLockPositions({programId:n,authProgramId:i,poolProgramId:o,wallet:this.scope.ownerPubKey,payer:a!=null?a:this.scope.ownerPubKey,nftMint:s.nftMint,getEphemeralSigners:l,nft2022:(p=await this.scope.connection.getAccountInfo(s.nftMint))==null?void 0:p.owner.equals(Le.TOKEN_2022_PROGRAM_ID)});return d.addInstruction(m),d.addCustomComputeBudget(u),d.versionBuild({txVersion:c,extInfo:m.address})}async harvestLockPosition(t){let{programId:n=Jt,authProgramId:i=Tn,clmmProgram:o=Zt(this.network),poolKeys:s,lockData:a,ownerInfo:u={useSOLBalance:!0},associatedOnly:c=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:d,txVersion:m}=t,p=s||await this.getClmmPoolKeys(a.poolId.toString()),g=this.createTxBuilder(),f=await this.scope.connection.getAccountInfo(a.positionId);f||this.logger.logWithError("position not found",a.positionId);let y=vt.decode(f.data),b=u.useSOLBalance&&p.mintA.address===ue(this.network).WSOLMint.toBase58(),w=u.useSOLBalance&&p.mintB.address===ue(this.network).WSOLMint.toBase58(),A,k,{account:T,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintA.programId,mint:new L.PublicKey(p.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:l});A=T,P&&g.addInstruction(P);let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintB.programId,mint:new L.PublicKey(p.mintB.address),notUseTokenAccount:w,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!w,associatedOnly:w?!1:c,checkCreateATAOwner:l});k=B,x&&g.addInstruction(x);let C={},D=[];for(let ve of p.rewardInfos){let En=u.useSOLBalance&&ve.mint.address===Re(this.network).address.toString(),an=C[ve.mint.address];if(!an){let{account:Rr,instructionParams:Ii}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L.PublicKey(ve.mint.programId),mint:new L.PublicKey(ve.mint.address),notUseTokenAccount:En,owner:this.scope.ownerPubKey,skipCloseAccount:!En,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:En?!1:c});an=Rr,Ii&&g.addInstruction(Ii)}C[ve.mint.address]=an,D.push(an)}let S=Et(n,a.lockNftMint).publicKey,N=le(this.scope.ownerPubKey,a.lockNftMint,Le.TOKEN_PROGRAM_ID).publicKey,V=R.getTickArrayStartIndexByTick(y.tickLower,p.config.tickSpacing),F=R.getTickArrayStartIndexByTick(y.tickUpper,p.config.tickSpacing),{publicKey:Y}=j(new L.PublicKey(p.programId),a.poolId,V),{publicKey:X}=j(new L.PublicKey(p.programId),a.poolId,F),{publicKey:Xe}=Ge(new L.PublicKey(p.programId),a.poolId,y.tickLower,y.tickUpper),Fe=[];for(let ve=0;ve<p.rewardInfos.length;ve++)Fe.push({poolRewardVault:new L.PublicKey(p.rewardInfos[ve].vault),ownerRewardVault:D[ve],rewardMint:new L.PublicKey(p.rewardInfos[ve].mint.address)});let Vt=await ce.harvestLockPositionInstructionV2({programId:n,auth:i,lockPositionId:S,clmmProgram:o,lockOwner:this.scope.ownerPubKey,lockNftMint:a.lockNftMint,lockNftAccount:N,positionNftAccount:a.nftAccount,positionId:a.positionId,poolId:a.poolId,protocolPosition:Xe,vaultA:new L.PublicKey(p.vault.A),vaultB:new L.PublicKey(p.vault.B),tickArrayLower:Y,tickArrayUpper:X,userVaultA:A,userVaultB:k,mintA:new L.PublicKey(p.mintA.address),mintB:new L.PublicKey(p.mintB.address),rewardAccounts:Fe,exTickArrayBitmap:ge(o,a.poolId).publicKey});return g.addInstruction({instructions:[Vt],instructionTypes:[be.ClmmHarvestLockPosition]}),g.addCustomComputeBudget(d),g.versionBuild({txVersion:m})}async closePosition({poolInfo:t,poolKeys:n,ownerPosition:i,txVersion:o}){var c;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let s=this.createTxBuilder(),a=n!=null?n:await this.getClmmPoolKeys(t.id),u=ce.closePositionInstructions({poolInfo:t,poolKeys:a,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:i,nft2022:(c=await this.scope.connection.getAccountInfo(i.nftMint))==null?void 0:c.owner.equals(Le.TOKEN_2022_PROGRAM_ID)});return s.addInstruction(u).versionBuild({txVersion:o,extInfo:{address:u.address}})}async initReward({poolInfo:t,ownerInfo:n,rewardInfo:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:u}){i.endTime<=i.openTime&&this.logAndCreateError("reward time error","rewardInfo",i);let c=this.createTxBuilder(),l=n.useSOLBalance&&i.mint.address.toString()===Re(this.network).address.toString(),d=i.perSecond.mul(i.endTime-i.openTime),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L.PublicKey(i.mint.address),mint:new L.PublicKey(i.mint.address),notUseTokenAccount:!!l,skipCloseAccount:!l,owner:this.scope.ownerPubKey,createInfo:l?{payer:n.feePayer||this.scope.ownerPubKey,amount:new Oe.default(new K(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:l?!1:o,checkCreateATAOwner:s});p&&c.addInstruction(p),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(t.id),f=ce.initRewardInstructions({poolInfo:t,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new L.PublicKey(i.mint.programId),mint:new L.PublicKey(i.mint.address),openTime:i.openTime,endTime:i.endTime,emissionsPerSecondX64:U.decimalToX64(i.perSecond)}});return c.addInstruction(f),c.addCustomComputeBudget(a),c.versionBuild({txVersion:u,extInfo:{address:f.address}})}async initRewards({poolInfo:t,poolKeys:n,ownerInfo:i,rewardInfos:o,associatedOnly:s=!0,checkCreateATAOwner:a=!1,computeBudgetConfig:u,txVersion:c}){for(let m of o)m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let l=this.createTxBuilder(),d={};for(let m of o){let p=i.useSOLBalance&&m.mint.address===Re(this.network).address.toString(),g=m.perSecond.mul(m.endTime-m.openTime),{account:f,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L.PublicKey(m.mint.programId),mint:new L.PublicKey(m.mint.address),notUseTokenAccount:!!p,skipCloseAccount:!p,owner:this.scope.ownerPubKey,createInfo:p?{payer:i.feePayer||this.scope.ownerPubKey,amount:new Oe.default(new K(g.toFixed(0)).gte(g)?g.toFixed(0):g.add(1).toFixed(0))}:void 0,associatedOnly:p?!1:s,checkCreateATAOwner:a});y&&l.addInstruction(y),f||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let b=n!=null?n:await this.getClmmPoolKeys(t.id),w=ce.initRewardInstructions({poolInfo:t,poolKeys:b,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:f},rewardInfo:{programId:new L.PublicKey(m.mint.programId),mint:new L.PublicKey(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:U.decimalToX64(m.perSecond)}});d={...d,...w.address},l.addInstruction(w)}return l.addCustomComputeBudget(u),l.versionBuild({txVersion:c,extInfo:{address:d}})}async setReward({poolInfo:t,ownerInfo:n,rewardInfo:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:u}){i.endTime<=i.openTime&&this.logAndCreateError("reward time error","rewardInfo",i);let c=this.createTxBuilder(),l=n.useSOLBalance&&i.mint.equals(ue(this.network).WSOLMint),{account:d,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:i.programId,mint:i.mint,notUseTokenAccount:l,owner:this.scope.ownerPubKey,createInfo:l?{payer:n.feePayer||this.scope.ownerPubKey,amount:new Oe.default(new K(i.perSecond.sub(i.endTime-i.openTime).toFixed(0)).gte(i.perSecond.sub(i.endTime-i.openTime))?i.perSecond.sub(i.endTime-i.openTime).toFixed(0):i.perSecond.sub(i.endTime-i.openTime).add(1).toFixed(0))}:void 0,associatedOnly:l?!1:o,checkCreateATAOwner:s});m&&c.addInstruction(m),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(t.id),g=ce.setRewardInstructions({poolInfo:t,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:i.mint,openTime:i.openTime,endTime:i.endTime,emissionsPerSecondX64:U.decimalToX64(i.perSecond)}});return c.addInstruction(g),c.addCustomComputeBudget(a),c.versionBuild({txVersion:u,extInfo:{address:g.address}})}async setRewards({poolInfo:t,poolKeys:n,ownerInfo:i,rewardInfos:o,associatedOnly:s=!0,checkCreateATAOwner:a=!1,computeBudgetConfig:u,txVersion:c}){let l=this.createTxBuilder(),d={};for(let m of o){m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let p=i.useSOLBalance&&m.mint.address===Re(this.network).address.toString(),{account:g,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L.PublicKey(m.mint.programId),mint:new L.PublicKey(m.mint.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:p?{payer:i.feePayer||this.scope.ownerPubKey,amount:new Oe.default(new K(m.perSecond.sub(m.endTime-m.openTime).toFixed(0)).gte(m.perSecond.sub(m.endTime-m.openTime))?m.perSecond.sub(m.endTime-m.openTime).toFixed(0):m.perSecond.sub(m.endTime-m.openTime).add(1).toFixed(0))}:void 0,associatedOnly:p?!1:s,checkCreateATAOwner:a});f&&l.addInstruction(f),g||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=n!=null?n:await this.getClmmPoolKeys(t.id),b=ce.setRewardInstructions({poolInfo:t,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:g},rewardInfo:{mint:new L.PublicKey(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:U.decimalToX64(m.perSecond)}});l.addInstruction(b),d={...d,...b.address}}return l.addCustomComputeBudget(u),l.versionBuild({txVersion:c,extInfo:{address:d}})}async collectReward({poolInfo:t,ownerInfo:n,rewardMint:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:u}){let c=t.rewardDefaultInfos.find(y=>y.mint.address===i.toString());c||this.logAndCreateError("reward mint error","not found reward mint",i);let l=this.createTxBuilder(),d=n.useSOLBalance&&i.equals(ue(this.network).WSOLMint),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L.PublicKey(c.mint.programId),mint:i,notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:o,checkCreateATAOwner:s});p&&l.addInstruction(p),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(t.id),f=ce.collectRewardInstructions({poolInfo:t,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:i});return l.addInstruction(f),l.addCustomComputeBudget(a),l.versionBuild({txVersion:u,extInfo:{address:f.address}})}async collectRewards({poolInfo:t,ownerInfo:n,rewardMints:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1}){let a=this.createTxBuilder(),u={};for(let c of i){let l=t.rewardDefaultInfos.find(y=>y.mint.address===c.toString());if(!l){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let d=n.useSOLBalance&&c.equals(ue(this.network).WSOLMint),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L.PublicKey(l.mint.programId),mint:c,notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:o,checkCreateATAOwner:s});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),p&&a.addInstruction(p);let g=await this.getClmmPoolKeys(t.id),f=ce.collectRewardInstructions({poolInfo:t,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:c});a.addInstruction(f),u={...u,...f.address}}return a.build({address:u})}async swap({poolInfo:t,poolKeys:n,inputMint:i,amountIn:o,amountOutMin:s,priceLimit:a,observationId:u,ownerInfo:c,remainingAccounts:l,associatedOnly:d=!0,checkCreateATAOwner:m=!1,txVersion:p,computeBudgetConfig:g}){let f=this.createTxBuilder(),y=i.toString()===t.mintA.address,b=c.useSOLBalance&&t.mintA.address===ue(this.network).WSOLMint.toBase58(),w=c.useSOLBalance&&t.mintB.address===ue(this.network).WSOLMint.toBase58(),A;!a||a.equals(new K(0))?A=y?Qe.add(new Oe.default(1)):Ze.sub(new Oe.default(1)):A=v.priceToSqrtPriceX64(a,t.mintA.decimals,t.mintB.decimals);let k;if(!k){let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new L.PublicKey(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,skipCloseAccount:!b,createInfo:b||!y?{payer:c.feePayer||this.scope.ownerPubKey,amount:y?o:0}:void 0,associatedOnly:b?!1:d,checkCreateATAOwner:m});k=B,x&&f.addInstruction(x)}let T;if(!T){let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new L.PublicKey(t.mintB.address),notUseTokenAccount:w,owner:this.scope.ownerPubKey,skipCloseAccount:!w,createInfo:w||y?{payer:c.feePayer||this.scope.ownerPubKey,amount:y?0:o}:void 0,associatedOnly:w?!1:d,checkCreateATAOwner:m});T=B,x&&f.addInstruction(x)}(!k||!T)&&this.logAndCreateError("user do not have token account",{tokenA:t.mintA.symbol||t.mintA.address,tokenB:t.mintB.symbol||t.mintB.address,ownerTokenAccountA:k,ownerTokenAccountB:T,mintAUseSOLBalance:b,mintBUseSOLBalance:w,associatedOnly:d});let P=n!=null?n:await this.getClmmPoolKeys(t.id);return f.addInstruction(ce.makeSwapBaseInInstructions({poolInfo:t,poolKeys:P,observationId:u,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:k,tokenAccountB:T},inputMint:new L.PublicKey(i),amountIn:o,amountOutMin:s,sqrtPriceLimitX64:A,remainingAccounts:l})),f.addCustomComputeBudget(g),f.versionBuild({txVersion:p})}async swapBaseOut({poolInfo:t,poolKeys:n,outputMint:i,amountOut:o,amountInMax:s,priceLimit:a,observationId:u,ownerInfo:c,remainingAccounts:l,associatedOnly:d=!0,checkCreateATAOwner:m=!1,txVersion:p,computeBudgetConfig:g}){let f=this.createTxBuilder(),y=i.toString()===t.mintB.address,b=c.useSOLBalance&&t.mintA.address===ue(this.network).WSOLMint.toBase58(),w=c.useSOLBalance&&t.mintB.address===ue(this.network).WSOLMint.toBase58(),A;!a||a.equals(new K(0))?A=i.toString()===t.mintB.address?Qe.add(new Oe.default(1)):Ze.sub(new Oe.default(1)):A=v.priceToSqrtPriceX64(a,t.mintA.decimals,t.mintB.decimals);let k;if(!k){let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new L.PublicKey(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,skipCloseAccount:!b,createInfo:b||!y?{payer:c.feePayer||this.scope.ownerPubKey,amount:y?s:0}:void 0,associatedOnly:b?!1:d,checkCreateATAOwner:m});k=B,x&&f.addInstruction(x)}let T;if(!T){let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new L.PublicKey(t.mintB.address),notUseTokenAccount:w,owner:this.scope.ownerPubKey,skipCloseAccount:!w,createInfo:w||y?{payer:c.feePayer||this.scope.ownerPubKey,amount:y?0:s}:void 0,associatedOnly:w?!1:d,checkCreateATAOwner:m});T=B,x&&f.addInstruction(x)}(!k||!T)&&this.logAndCreateError("user do not have token account",{tokenA:t.mintA.symbol||t.mintA.address,tokenB:t.mintB.symbol||t.mintB.address,ownerTokenAccountA:k,ownerTokenAccountB:T,mintAUseSOLBalance:b,mintBUseSOLBalance:w,associatedOnly:d});let P=n!=null?n:await this.getClmmPoolKeys(t.id);return f.addInstruction(ce.makeSwapBaseOutInstructions({poolInfo:t,poolKeys:P,observationId:u,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:k,tokenAccountB:T},outputMint:new L.PublicKey(i),amountOut:o,amountInMax:s,sqrtPriceLimitX64:A,remainingAccounts:l})),f.addCustomComputeBudget(g),f.versionBuild({txVersion:p})}async harvestAllRewards({allPoolInfo:t,allPositions:n,lockInfo:i,ownerInfo:o,associatedOnly:s=!0,checkCreateATAOwner:a=!1,programId:u,txVersion:c,computeBudgetConfig:l}){var y,b;let d={};for(let w of this.scope.account.tokenAccountRawInfos)s?le(this.scope.ownerPubKey,w.accountInfo.mint,u).publicKey.equals(w.pubkey)&&(d[w.accountInfo.mint.toString()]=w.pubkey):d[w.accountInfo.mint.toString()]=w.pubkey;let m=Object.values(n).flat().map(w=>w.nftMint),p=await st(this.scope.connection,m.map(w=>({pubkey:w}))),g={};p.forEach(w=>{var A,k;g[w.pubkey.toBase58()]=(k=(A=w==null?void 0:w.accountInfo)==null?void 0:A.owner)!=null?k:null});let f=this.createTxBuilder();for(let w of Object.values(t)){if(n[w.id]===void 0||!n[w.id].find(S=>!S.liquidity.isZero()||S.rewardInfos.find(N=>!N.rewardAmountOwed.isZero())))continue;let A=w,k=o.useSOLBalance&&A.mintA.address===ue(this.network).WSOLMint.toBase58(),T=o.useSOLBalance&&A.mintB.address===ue(this.network).WSOLMint.toBase58(),P=d[A.mintA.address];if(!P){let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:A.mintA.programId,mint:new L.PublicKey(A.mintA.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:k?!1:s,checkCreateATAOwner:a});P=S,N&&f.addInstruction(N)}let B=d[A.mintB.address];if(!B){let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:A.mintB.programId,mint:new L.PublicKey(A.mintB.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,skipCloseAccount:!T,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:T?!1:s,checkCreateATAOwner:a});B=S,N&&f.addInstruction(N)}d[A.mintA.address]=P,d[A.mintB.address]=B;let x=[];for(let S of A.rewardDefaultInfos){let N=o.useSOLBalance&&S.mint.address===Re(this.network).address.toString(),V=d[S.mint.address];if(!V){let{account:F,instructionParams:Y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new L.PublicKey(S.mint.programId),mint:new L.PublicKey(S.mint.address),notUseTokenAccount:N,owner:this.scope.ownerPubKey,skipCloseAccount:!N,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:N?!1:s});V=F,Y&&f.addInstruction(Y)}d[S.mint.address]=V,x.push(V)}let C=await this.getClmmPoolKeys(A.id),D=[];for(let S=0;S<C.rewardInfos.length;S++)D.push({poolRewardVault:new L.PublicKey(C.rewardInfos[S].vault),ownerRewardVault:x[S],rewardMint:new L.PublicKey(C.rewardInfos[S].mint.address)});for(let S of n[w.id]){let N=(y=i==null?void 0:i[w.id])==null?void 0:y[S.nftMint.toBase58()];if(N){let V=le(this.scope.ownerPubKey,N.lockNftMint,Le.TOKEN_PROGRAM_ID).publicKey,F=R.getTickArrayStartIndexByTick(S.tickLower,C.config.tickSpacing),Y=R.getTickArrayStartIndexByTick(S.tickUpper,C.config.tickSpacing),{publicKey:X}=j(new L.PublicKey(C.programId),N.poolId,F),{publicKey:Xe}=j(new L.PublicKey(C.programId),N.poolId,Y),{publicKey:Fe}=Ge(new L.PublicKey(C.programId),N.poolId,S.tickLower,S.tickUpper),Vt=Et(Jt,N.lockNftMint).publicKey,ve=ce.harvestLockPositionInstructionV2({programId:Jt,auth:Tn,lockPositionId:Vt,clmmProgram:Zt(this.network),lockOwner:this.scope.ownerPubKey,lockNftMint:N.lockNftMint,lockNftAccount:V,positionNftAccount:N.nftAccount,positionId:N.positionId,poolId:N.poolId,protocolPosition:Fe,vaultA:new L.PublicKey(C.vault.A),vaultB:new L.PublicKey(C.vault.B),tickArrayLower:X,tickArrayUpper:Xe,userVaultA:P,userVaultB:B,mintA:new L.PublicKey(C.mintA.address),mintB:new L.PublicKey(C.mintB.address),rewardAccounts:D,exTickArrayBitmap:ge(Zt(this.network),N.poolId).publicKey});f.addInstruction({instructions:[ve],instructionTypes:[be.ClmmHarvestLockPosition],lookupTableAddress:C.lookupTableAccount?[C.lookupTableAccount]:[]})}else{let V=ce.decreaseLiquidityInstructions({poolInfo:A,poolKeys:C,ownerPosition:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:P,tokenAccountB:B,rewardAccounts:x},liquidity:new Oe.default(0),amountMinA:new Oe.default(0),amountMinB:new Oe.default(0),nft2022:(b=g[S.nftMint.toBase58()])==null?void 0:b.equals(Le.TOKEN_2022_PROGRAM_ID)});f.addInstruction(V)}}}return c===0?f.sizeCheckBuildV0({computeBudgetConfig:l}):f.sizeCheckBuild({computeBudgetConfig:l})}async getWhiteListMint({programId:t}){let n=await this.scope.connection.getAccountInfo(Ot(t).publicKey);return n?xi.decode(n.data).whitelistMints.filter(o=>!o.equals(L.PublicKey.default)):[]}async getOwnerPositionInfo({programId:t}){await this.scope.account.fetchWalletTokenAccounts();let i=this.scope.account.tokenAccountRawInfos.filter(a=>a.accountInfo.amount.eq(new Oe.default(1))).map(a=>Ke(new L.PublicKey(t),a.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(i),s=[];return o.forEach(a=>{if(!a)return;let u=vt.decode(a.data);s.push(u)}),s}async getRpcClmmPoolInfo({poolId:t}){return(await this.getRpcClmmPoolInfos({poolIds:[t]}))[String(t)]}async getRpcClmmPoolInfos({poolIds:t,config:n}){let i=await st(this.scope.connection,t.map(s=>({pubkey:new L.PublicKey(s)})),n),o={};for(let s=0;s<t.length;s++){let a=i[s];if(a===null||!a.accountInfo)throw Error("fetch pool info error: "+String(t[s]));let u=sn.decode(a.accountInfo.data),c=v.sqrtPriceX64ToPrice(u.sqrtPriceX64,u.mintDecimalsA,u.mintDecimalsB).toNumber();o[String(t[s])]={...u,currentPrice:c,programId:a.accountInfo.owner}}return o}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:t,mintInfos:n}){let i=new Set(Object.keys(t).map(c=>t[c].ammConfig.toBase58())),o=await st(this.scope.connection,Array.from(i).map(c=>({pubkey:new L.PublicKey(c)}))),s={};o.forEach(c=>{!c.accountInfo||(s[c.pubkey.toBase58()]=hi.decode(c.accountInfo.data))});let a=await de.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:t,poolList:Object.keys(t).map(c=>{var m,p,g,f;let[l,d]=[t[c].mintA.toBase58(),t[c].mintB.toBase58()];return{id:c,programId:t[c].programId.toBase58(),mintA:In({address:l,decimals:t[c].mintDecimalsA,programId:n[l].programId.toBase58()||Le.TOKEN_PROGRAM_ID.toBase58(),extensions:{feeConfig:(m=n[l])!=null&&m.feeConfig?ii((p=n[l])==null?void 0:p.feeConfig):void 0},network:this.network}),mintB:In({address:d,decimals:t[c].mintDecimalsB,programId:n[d].programId.toBase58()||Le.TOKEN_PROGRAM_ID.toBase58(),extensions:{feeConfig:(g=n[d])!=null&&g.feeConfig?ii((f=n[d])==null?void 0:f.feeConfig):void 0},network:this.network}),price:t[c].currentPrice,config:{...s[t[c].ammConfig.toBase58()],id:t[c].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]}}})}),u=await de.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(a)});return{computeClmmPoolInfo:a,computePoolTickData:u}}async getPoolInfoFromRpc(t){var d;let n=await this.getRpcClmmPoolInfo({poolId:t}),i=new Set([n.mintA.toBase58(),n.mintB.toBase58()]),o=await Ni({connection:this.scope.connection,mints:Array.from(i).map(m=>new L.PublicKey(m)),network:this.network}),{computeClmmPoolInfo:s,computePoolTickData:a}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[t]:n},mintInfos:o}),u=await st(this.scope.connection,[{pubkey:n.vaultA},{pubkey:n.vaultB}]),c=Pi(s[t]);if(!u[0].accountInfo||!u[1].accountInfo)throw new Error("pool vault data not found");c.mintAmountA=Number(Le.AccountLayout.decode(u[0].accountInfo.data).amount.toString()),c.mintAmountB=Number(Le.AccountLayout.decode((d=u[1].accountInfo)==null?void 0:d.data).amount.toString());let l={...s[t],exBitmapAccount:s[t].exBitmapAccount.toBase58(),observationId:s[t].observationId.toBase58(),id:t,programId:n.programId.toBase58(),openTime:n.startTime.toString(),vault:{A:n.vaultA.toBase58(),B:n.vaultB.toBase58()},config:c.config,rewardInfos:s[t].rewardInfos.filter(m=>!m.tokenVault.equals(L.PublicKey.default)).map(m=>({mint:In({address:m.tokenMint.toBase58(),programId:Le.TOKEN_PROGRAM_ID.toBase58(),decimals:10,network:this.network}),vault:m.tokenVault.toBase58()}))};return{poolInfo:c,poolKeys:l,computePoolInfo:s[t],tickData:a}}};0&&(module.exports={AMM_CONFIG_SEED,BIT_PRECISION,Clmm,ClmmConfigLayout,ClmmInstrument,EXTENSION_TICKARRAY_BITMAP_SIZE,FEE_RATE_DENOMINATOR,FETCH_TICKARRAY_COUNT,Fee,LOG_B_2_X32,LOG_B_P_ERR_MARGIN_LOWER_X64,LOG_B_P_ERR_MARGIN_UPPER_X64,LiquidityMath,LockClPositionLayoutV2,LockPositionLayout,MAX_SQRT_PRICE_X64,MAX_SQRT_PRICE_X64_SUB_ONE,MAX_TICK,MIN_SQRT_PRICE_X64,MIN_SQRT_PRICE_X64_ADD_ONE,MIN_TICK,MathUtil,MaxU64,MaxUint128,NEGATIVE_ONE,OBSERVATION_SEED,ONE,OPERATION_SEED,ObservationInfoLayout,ObservationLayout,OperationLayout,POOL_LOCK_ID_SEED,POOL_REWARD_VAULT_SEED,POOL_SEED,POOL_TICK_ARRAY_BITMAP_SEED,POOL_VAULT_SEED,POSITION_SEED,PoolInfoLayout,PoolUtils,PositionInfoLayout,PositionRewardInfoLayout,PositionUtils,ProtocolPositionLayout,Q128,Q64,RewardInfo,SqrtPriceMath,SwapMath,TICK_ARRAY_BITMAP_SIZE,TICK_ARRAY_SEED,TICK_ARRAY_SIZE,TICK_SPACINGS,TickArrayBitmap,TickArrayBitmapExtensionLayout,TickArrayBitmapExtensionUtils,TickArrayLayout,TickLayout,TickMath,TickQuery,TickUtils,U64Resolution,U64_IGNORE_RANGE,ZERO,clmmComputeInfoToApiInfo,getLiquidityFromAmounts,getPdaAmmConfigId,getPdaExBitmapAccount,getPdaLockClPositionIdV2,getPdaLockPositionId,getPdaMetadataKey,getPdaObservationAccount,getPdaOperationAccount,getPdaPersonalPositionAddress,getPdaPoolId,getPdaPoolRewardVaulId,getPdaPoolVaultId,getPdaProtocolPositionAddress,getPdaTickArrayAddress,i16ToBytes,i32ToBytes,isZero,leadingZeros,leastSignificantBit,mockCreatePoolInfo,mockV3CreatePoolInfo,mostSignificantBit,trailingZeros,u16ToBytes,u32ToBytes});
/*!
* decimal.js v10.5.0
* An arbitrary-precision Decimal type for JavaScript.
* https://github.com/MikeMcl/decimal.js
* Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>
* MIT Licence
*/
//# sourceMappingURL=index.js.map