@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 114 kB
JavaScript
var ni=Object.defineProperty,oi=Object.defineProperties;var ii=Object.getOwnPropertyDescriptors;var Vt=Object.getOwnPropertySymbols;var Dn=Object.prototype.hasOwnProperty,Wn=Object.prototype.propertyIsEnumerable;var En=(a,e,t)=>e in a?ni(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,L=(a,e)=>{for(var t in e||(e={}))Dn.call(e,t)&&En(a,t,e[t]);if(Vt)for(var t of Vt(e))Wn.call(e,t)&&En(a,t,e[t]);return a},E=(a,e)=>oi(a,ii(e));var Ke=(a,e)=>{var t={};for(var n in a)Dn.call(a,n)&&e.indexOf(n)<0&&(t[n]=a[n]);if(a!=null&&Vt)for(var n of Vt(a))e.indexOf(n)<0&&Wn.call(a,n)&&(t[n]=a[n]);return t};import{PublicKey as ye}from"@solana/web3.js";import pe from"bn.js";import{PublicKey as bi}from"@solana/web3.js";import Xn,{isBN as Yn}from"bn.js";import{bits as ri,BitStructure as ts,blob as ai,Blob as ns,cstr as os,f32 as is,f32be as rs,f64 as as,f64be as ss,greedy as us,Layout as si,ns64 as cs,ns64be as ls,nu64 as ms,nu64be as ds,offset as ui,s16 as ps,s16be as fs,s24 as ys,s24be as bs,s32 as ci,s32be as gs,s40 as Ps,s40be as As,s48 as ws,s48be as ks,s8 as Ts,seq as li,struct as hs,Structure as mi,u16 as di,u16be as Is,u24 as Bs,u24be as Ss,u32 as pi,u32be as Ks,u40 as xs,u40be as Cs,u48 as Rs,u48be as Ls,u8 as fi,UInt as yi,union as Os,Union as Ns,unionLayoutDiscriminator as Ms,utf8 as Fs}from"@solana/buffer-layout";var _t=si,qn=mi;var sn=yi;var Un=fi,ie=di;var Et=pi;var xe=ci;var Gn=li;var W=ai;var un=ri,zn=ui;var He=class extends _t{constructor(t,n,i){super(t,i);this.blob=W(t),this.signed=n}decode(t,n=0){let i=new Xn(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 Xn(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Dt=class extends _t{constructor(t){super(8,t);this._lower=un(Et(),!1),this._upper=un(Et(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),r=this._upper.decode(t,n+this._lower.span);return L(L({},i),r)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function w(a){return new sn(1,a)}function $(a){return new sn(4,a)}function o(a){return new He(8,!1,a)}function D(a){return new He(16,!1,a)}function Qn(a){return new He(1,!0,a)}function nt(a){return new He(8,!0,a)}function Zn(a){return new He(16,!0,a)}var bt=class extends _t{constructor(t,n,i,r){super(t.span,r);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 d(a){return new bt(W(32),e=>new bi(e),e=>e.toBuffer(),a)}function we(a){return new bt(Un(),gi,Pi,a)}function gi(a){if(a===0)return!1;if(a===1)return!0;throw new Error("Invalid bool: "+a)}function Pi(a){return a?1:0}function Hn(a,e){let t=Et("length"),n=k([t,B(a,zn(t,-t.span),"values")]);return new bt(n,({values:i})=>i,i=>({values:i}),e)}var cn=class extends qn{decode(e,t){return super.decode(e,t)}};function k(a,e,t){return new cn(a,e,t)}function B(a,e,t){let n,i=typeof e=="number"?e:Yn(e)?e.toNumber():new Proxy(e,{get(r,s){if(!n){let u=Reflect.get(r,"count");n=Yn(u)?u.toNumber():u,Reflect.set(r,"count",n)}return Reflect.get(r,s)},set(r,s,u){return s==="count"&&(n=u),Reflect.set(r,s,u)}});return Gn(a,i,t)}import X from"bn.js";var H=new X(1).shln(64),ot=64,Ai=new X(1).shln(128),De=new X(1).shln(64).subn(1),wi=new X(1).shln(128).subn(1),ke=-443636,Te=443636,Oe=new X("4295048016"),Ne=new X("79226673521066979257578248091"),jn=new X("59543866431248"),$n=new X("184467440737095516"),Jn=new X("15793534762490258745"),eo=16,Wt=512,be=60,Xs=new X("18446743708227953217"),to=[{bit:0,factor:new X("fffcb933bd6fb800",16)},{bit:1,factor:new X("fff97272373d4000",16)},{bit:2,factor:new X("fff2e50f5f657000",16)},{bit:3,factor:new X("ffe5caca7e10f000",16)},{bit:4,factor:new X("ffcb9843d60f7000",16)},{bit:5,factor:new X("ff973b41fa98e800",16)},{bit:6,factor:new X("ff2ea16466c9b000",16)},{bit:7,factor:new X("fe5dee046a9a3800",16)},{bit:8,factor:new X("fcbe86c7900bb000",16)},{bit:9,factor:new X("f987a7253ac65800",16)},{bit:10,factor:new X("f3392b0822bb6000",16)},{bit:11,factor:new X("e7159475a2caf000",16)},{bit:12,factor:new X("d097f3bdfd2f2000",16)},{bit:13,factor:new X("a9f746462d9f8000",16)},{bit:14,factor:new X("70d869a156f31c00",16)},{bit:15,factor:new X("31be135f97ed3200",16)},{bit:16,factor:new X("9aa508b5b85a500",16)},{bit:17,factor:new X("5d6af8dedc582c",16)},{bit:18,factor:new X("2216e584f5fa",16)}],We=1e6;var qt=1e5,gt=1e4,no=1e4,oo=1e5;var Pt=3,io=100;var ro=10,ao=100,it=14;var C=new X(0),Me=new X(1),Ys=new X(-1);var Qs=new X("18446744073700000000");var ki=k([W(8),w("bump"),ie("index"),d("owner"),$("protocolFeeRate"),$("tradeFeeRate"),ie("tickSpacing"),$("fundFeeRate"),B($(),1),d("fundOwner"),B(o(),3)]),Ti=k([$("blockTimestamp"),nt("tickCumulative"),B(o(),4)]),so=k([W(8),we("initialized"),o("recentEpoch"),ie("observationIndex"),d("poolId"),B(Ti,io,"observations"),B(o(),4)]),hi=k([ie("filterPeriod"),ie("decayPeriod"),ie("reductionFactor"),$("dynamicFeeControl"),$("maxVolatilityAccumulator"),xe("tickSpacingIndexReference"),$("volatilityReference"),$("volatilityAccumulator"),o("lastUpdateTimestamp"),B(w(),46)]),Ii=k([w("state"),o("openTime"),o("endTime"),o("lastUpdateTime"),D("emissionsPerSecondX64"),o("totalEmissioned"),o("claimed"),d("mint"),d("vault"),d("creator"),D("growthGlobalX64")]),Ut=k([W(8),w("bump"),d("configId"),d("creator"),d("mintA"),d("mintB"),d("vaultA"),d("vaultB"),d("observationId"),w("mintDecimalsA"),w("mintDecimalsB"),ie("tickSpacing"),D("liquidity"),D("sqrtPriceX64"),xe("tickCurrent"),$(),D("feeGrowthGlobalX64A"),D("feeGrowthGlobalX64B"),o("protocolFeesTokenA"),o("protocolFeesTokenB"),B(D(),4),w("status"),w("feeOn"),W(6),B(Ii,Pt,"rewardInfos"),W(8*16,"tickArrayBitmap"),B(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),hi.replicate("dynamicFeeInfo"),B(o(),46)]),Bi=k([D("growthInsideLastX64"),o("rewardAmountOwed")]),Si=k([W(8),w("bump"),d("nftMint"),d("poolId"),xe("tickLower"),xe("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),B(Bi,Pt,"rewardInfos"),o("recentEpoch"),B(o(),7)]),$s=k([W(8),w("bump"),d("poolId"),xe("tickLower"),xe("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),B(D(),Pt,"rewardGrowthInside"),o("recentEpoch"),B(o(),7)]),Ki=k([xe("tick"),Zn("liquidityNet"),D("liquidityGross"),D("feeGrowthOutsideX64A"),D("feeGrowthOutsideX64B"),B(D(),Pt,"rewardGrowthsOutsideX64"),o("orderPhase"),o("ordersAmount"),o("partFilledOrdersRemaining"),D("unfilledRatioX64"),B($(),3)]),At=k([W(8),d("poolId"),xe("startTickIndex"),B(Ki,be,"ticks"),w("initializedTickCount"),o("recentEpoch"),B(w(),107)]),xi=k([W(8),w("bump"),B(d(),ro,"operationOwners"),B(d(),ao,"whitelistMints")]),Ci=k([W(8),d("poolId"),d("owner"),xe("tick"),we("zeroForOne"),o("orderPhase"),o("totalAmount"),o("filledAmount"),o("settleBase"),o("settleOutput"),o("openTime"),D("unfilledRatioX64"),B(o(),4)]),ln=k([W(8),d("poolId"),W(8*8*it,"positiveTickArrayBitmap"),W(8*8*it,"negativeTickArrayBitmap")]),Js=k([W(8),ie("index"),ie("filterPeriod"),ie("decayPeriod"),ie("reductionFactor"),$("dynamicFeeControl"),$("maxVolatilityAccumulator"),B(o(),8)]),Ri=k([W(8),d("wallet"),w("nonceIndex"),o("orderNonce"),B(o(),4)]),eu=k([o(),w("bump"),d("owner"),d("poolId"),d("positionId"),d("nftAccount"),B(o(),8)]),Li=k([W(8),w("bump"),d("lockOwner"),d("poolId"),d("positionId"),d("nftAccount"),d("lockNftMint"),o("recentEpoch"),B(o(),8)]);import Oi from"bn.js";import uo from"decimal.js";function ee(a,e,t){if(t.isZero())throw new Error("Division by zero");return a.mul(e).div(t)}function j(a,e,t){if(t.isZero())throw new Error("Division by zero");let n=a.mul(e),i=n.div(t);return n.mod(t).isZero()?i:i.addn(1)}function Gt(a,e){return a.div(e).add(a.mod(e).isZero()?C:Me)}var ru=new Oi(1).shln(256).subn(1);function co(a){return a.isZero()?-1:a.bitLength()-1}function lo(a,e){return new uo(a.toString()).div(uo.pow(2,64)).toDecimalPlaces(e)}import{PublicKey as Fi}from"@solana/web3.js";import{get as mo,set as Ni}from"lodash";var mn=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}},po={},Mi={};function G(a){let e=mo(po,a);if(!e){let t=mo(Mi,a);e=new mn({name:a,logLevel:t}),Ni(po,a,e)}return e}import{MINT_SIZE as bu,TOKEN_PROGRAM_ID as gu,getTransferFeeConfig as Pu,unpackMint as Au}from"@solana/spl-token";var dn=G("Raydium_accountInfo_util");async function he(a,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:r=100}=L({batchRequest:!1},t),s=pn(e,r),u=new Array(s.length).fill([]);if(n){let c=s.map(p=>{let P=a._buildArgs([p.map(g=>g.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:P}}),l=pn(c,10);u=(await(await Promise.all(l.map(async p=>await a._rpcBatchRequest(p)))).flat()).map(p=>(p.error&&dn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${p.error.message}`),p.result.value.map(P=>{if(P){let{data:g,executable:h,lamports:A,owner:T,rentEpoch:S}=P;return g.length!==2&&g[1]!=="base64"&&dn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(g[0],"base64"),executable:h,lamports:A,owner:new Fi(T),rentEpoch:S}}return null})))}else try{u=await Promise.all(s.map(c=>a.getMultipleAccountsInfo(c,i)))}catch(c){c instanceof Error&&dn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return u.flat()}async function qe(a,e,t){let n=await he(a,e.map(i=>i.pubkey),t);return e.map((i,r)=>E(L({},i),{accountInfo:n[r]}))}import et from"bn.js";import TC from"decimal.js";import Ui from"big.js";import Yt from"bn.js";import vi from"toformat";var Vi=vi,wt=Vi;import Xt from"big.js";import Ei from"bn.js";import Di from"decimal.js-light";import kt from"bn.js";var fo=9007199254740991;function re(a){let e=G("Raydium_parseBigNumberish");if(a instanceof kt)return a;if(typeof a=="string"){if(a.match(/^-?[0-9]+$/))return new kt(a);e.logWithError(`invalid BigNumberish string: ${a}`)}return typeof a=="number"?(a%1&&e.logWithError(`BigNumberish number underflow: ${a}`),(a>=fo||a<=-fo)&&e.logWithError(`BigNumberish number overflow: ${a}`),new kt(String(a))):typeof a=="bigint"?new kt(a.toString()):(e.error(`invalid BigNumberish value: ${a}`),new kt(0))}var zt=G("module/fraction"),fn=wt(Xt),Tt=wt(Di),Wi={[0]:Tt.ROUND_DOWN,[1]:Tt.ROUND_HALF_UP,[2]:Tt.ROUND_UP},qi={[0]:Xt.roundDown,[1]:Xt.roundHalfUp,[2]:Xt.roundUp},Y=class{constructor(e,t=new Ei(1)){this.numerator=re(e),this.denominator=re(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Y(this.denominator,this.numerator)}add(e){let t=e instanceof Y?e:new Y(re(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.add(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Y?e:new Y(re(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.sub(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Y?e:new Y(re(e));return new Y(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Y?e:new Y(re(e));return new Y(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||zt.logWithError(`${e} is not an integer.`),e<=0&&zt.logWithError(`${e} is not positive.`),Tt.set({precision:e+1,rounding:Wi[n]});let i=new Tt(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)||zt.logWithError(`${e} is not an integer.`),e<0&&zt.logWithError(`${e} is negative.`),fn.DP=e,fn.RM=qi[n]||1,new fn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Gi=G("Raydium_amount"),yo=wt(Ui);function zi(a,e){let t="0",n="0";if(a.includes(".")){let i=a.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):Gi.logWithError(`invalid number string, num: ${a}`)}else t=a;return[t,n.slice(0,e)||n]}var ae=class extends Y{constructor(t,n,i=!0,r){let s=new Yt(0),u=yn.pow(new Yt(t.decimals));if(i)s=re(n);else{let c=new Yt(0),l=new Yt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[m,p]=zi(n.toString(),t.decimals);c=re(m),l=re(p)}c=c.mul(u),s=c.add(l)}super(s,u);this.logger=G(r||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new ae(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ae(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,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 yo.DP=this.token.decimals,new yo(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Xi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bo}from"@solana/spl-token";var Qt={chainId:101,address:Xi.default.toBase58(),programId:bo.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Fe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:bo.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as Pn}from"@solana/web3.js";import{PublicKey as J,SystemProgram as go,SYSVAR_RENT_PUBKEY as Yi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qi}from"@solana/spl-token";function rt({pubkey:a,isSigner:e=!1,isWritable:t=!0}){return{pubkey:a,isWritable:t,isSigner:e}}var Zi=[rt({pubkey:Qi,isWritable:!1}),rt({pubkey:go.programId,isWritable:!1}),rt({pubkey:Yi,isWritable:!1})];function bn({publicKey:a,transformSol:e}){let t=Po(a.toString());if(t instanceof J)return e&&t.equals(je)?Ue:t;if(e&&t.toString()===je.toBase58())return Ue;if(typeof t=="string"){if(t===J.default.toBase58())return J.default;try{return new J(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Po(a){try{return new J(a)}catch{return a}}var gn=new J("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ht=new J("SysvarRent111111111111111111111111111111111"),ju=new J("SysvarC1ock11111111111111111111111111111111"),Zt=new J("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Hi=new J("Sysvar1nstructions1111111111111111111111111"),ji=go.programId,$u=new J("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ju=new J("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ec=new J("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),tc=new J("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),nc=new J("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),oc=new J("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),ic=new J("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),rc=new J("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ac=new J("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),sc=new J("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),uc=new J("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ue=new J("So11111111111111111111111111111111111111112"),je=J.default;function Ge(a){return bn({publicKey:a,transformSol:!0})}var An=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:r=!1,isToken2022:s=!1}){if(e===je.toBase58()||e instanceof Pn&&je.equals(e)){this.decimals=Fe.decimals,this.symbol=Fe.symbol,this.name=Fe.name,this.mint=new Pn(Fe.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=r?Pn.default:bn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},le=An;le.WSOL=new An(E(L({},Fe),{mint:Fe.address}));var wn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Ht=wn;Ht.SOL=new wn(Qt);import $i from"bn.js";var Ao=new Y(new $i(100)),ve=class extends Y{toSignificant(e=5,t,n){return this.mul(Ao).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ao).toFixed(e,t,n)}};var Ji=G("Raydium_price"),Ie=class extends Y{constructor(t){let{baseToken:n,quoteToken:i,numerator:r,denominator:s}=t;super(r,s);this.baseToken=n,this.quoteToken=i,this.scalar=new Y(kn(n.decimals),kn(i.decimals))}get raw(){return new Y(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ie({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Ji.logWithError("mul token not equals");let n=super.mul(t);return new Ie({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)}};import{merge as Ix}from"lodash";import Oc from"axios";var wo={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},er=E(L({},wo),{BASE_HOST:"https://api-v3-devnet.raydium.io",OWNER_BASE_HOST:"https://owner-v1-devnet.raydium.io",SWAP_HOST:"https://transaction-v1-devnet.raydium.io",CPMM_LOCK:"https://dynamic-ipfs-devnet.raydium.io/lock/cpmm/position",TEMP_HOST:"https://temp-api-v1-devnet.raydium.io",LAUNCH_AUTH_HOST:"https://launch-auth-v1-devnet.raydium.io",LAUNCH_COMMENT_HOST:"https://launch-forum-v1-devnet.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1-devnet.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1-devnet.raydium.io"});var tl=G("Raydium_Api");import{PublicKey as Cm,SystemProgram as Rm}from"@solana/web3.js";import{AccountLayout as Fm,createAssociatedTokenAccountIdempotentInstruction as vm,TOKEN_PROGRAM_ID as Vm,TOKEN_2022_PROGRAM_ID as _m}from"@solana/spl-token";import{PublicKey as lt,sendAndConfirmTransaction as Kn,SystemProgram as ar,Transaction as St,TransactionMessage as Kt,VersionedTransaction as xt}from"@solana/web3.js";import sr from"axios";import{PublicKey as Tn,AddressLookupTableAccount as ut}from"@solana/web3.js";async function hn({connection:a,address:e,cluster:t="mainnet"}){let n=await he(a,[...new Set(e.map(r=>r.toString()))].map(r=>new Tn(r))),i={};for(let r=0;r<e.length;r++){let s=n[r],u=e[r];if(!s)continue;let c=new ut({key:u,state:ut.deserialize(s.data)});i[u.toString()]=c,t==="devnet"?st[u.toString()]=c:at[u.toString()]=c}return i}var at={},In=async a=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(at[e])return at;let t=new Tn(e),n=await a.getAccountInfo(t);return n&&(at[e]=new ut({key:t,state:ut.deserialize(n.data)})),at},st={},Bn=async a=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(st[e])return st;let t=new Tn(e),n=await a.getAccountInfo(t);return n&&(st[e]=new ut({key:t,state:ut.deserialize(n.data)})),st};var me={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as ko,Keypair as ho,PublicKey as tr,Transaction as Io,TransactionMessage as nr,VersionedTransaction as Bo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as or}from"@solana/spl-token";var To=G("Raydium_txUtil"),So=1644;function jt(a){let e=[],t=[];return a.microLamports&&(e.push(ko.setComputeUnitPrice({microLamports:a.microLamports})),t.push(me.SetComputeUnitPrice)),a.units&&(e.push(ko.setComputeUnitLimit({units:a.units})),t.push(me.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function ct(a,e){var n,i;let t=e!=null?e:"confirmed";return(i=await((n=a.getLatestBlockhash)==null?void 0:n.call(a,{commitment:t})))==null?void 0:i.blockhash}async function $t(a,e){return a.getSignatureStatuses([e]),new Promise((t,n)=>{let i=setTimeout(n,6e4);a.onSignature(e,r=>{if(clearTimeout(i),!r.err){t("");return}n(Object.assign(r.err,{txId:e}))},"confirmed")})}function Sn(a,e){a.length<1&&To.logWithError(`no instructions provided: ${a.toString()}`),e.length<1&&To.logWithError(`no signers provided:, ${e.toString()}`);let t=new Io;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...a);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<So}catch{return!1}}function Be(a,e){let[t,n]=tr.findProgramAddressSync(a,e);return{publicKey:t,nonce:n}}function It({instructions:a,payer:e,signers:t}){return Sn(a,[e,...t])}function Bt({instructions:a,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=ho.generate().publicKey.toString()}){let r=new nr({payerKey:e,recentBlockhash:n,instructions:a}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Bo(r).serialize()).toString("base64").length<So}catch{return!1}}var ir=a=>Buffer.isBuffer(a)?a:a instanceof Uint8Array?Buffer.from(a.buffer,a.byteOffset,a.byteLength):Buffer.from(a),rr=a=>{let e=a.serialize({requireAllSignatures:!1,verifySignatures:!1});a instanceof Bo&&(e=ir(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function $e(a){let e=[];return a.forEach(t=>{t instanceof Io&&(t.recentBlockhash||(t.recentBlockhash=or.toBase58()),t.feePayer||(t.feePayer=ho.generate().publicKey)),e.push(rr(t))}),console.log("simulate tx string:",e),e}var Jt=2e3,en=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.loopMultiTxStatus=!!e.loopMultiTxStatus}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.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}=jt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(ar.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new lt(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(me.TransferTip),!0):!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:r=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...r),this.lookupTableAddress.push(...s.filter(u=>u!==lt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(E(L({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new St;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 m;let{recentBlockHash:r,skipPreflight:s=!0,sendAndConfirm:u,notSendToRpc:c}=i||{},l=r!=null?r:await ct(this.connection,this.blockhashCommitment);if(t.recentBlockhash=l,this.signers.length&&t.sign(...this.signers),$e([t]),(m=this.owner)!=null&&m.isKeyPair)return{txId:u?await Kn(this.connection,t,this.signers.find(P=>P.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 p=await this.signAllTransactions([t]);if(this.signers.length)for(let P of p)try{P.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(p[0].serialize(),{skipPreflight:s}),signedTx:p[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var l;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),r=t.filter(m=>m.transaction.instructions.length>0),s=[i,...r.map(m=>m.transaction)],u=[this.signers,...r.map(m=>m.signers)],c=[...this.instructionTypes,...r.map(m=>m.instructionTypes).flat()];return(l=this.owner)!=null&&l.signer&&u.forEach(m=>{m.some(p=>p.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:u,instructionTypes:c,execute:async m=>{var S;let{sequentially:p,onTxUpdate:P,skipTxCount:g=0,recentBlockHash:h,skipPreflight:A=!0}=m||{},T=h!=null?h:await ct(this.connection,this.blockhashCommitment);if((S=this.owner)!=null&&S.isKeyPair){if(p){let K=[],M=0;for(let F of s){if(++M,M<=g)continue;let b=await Kn(this.connection,F,this.signers.find(I=>I.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});K.push(b)}return{txIds:K,signedTxs:s}}return{txIds:await await Promise.all(s.map(async K=>(K.recentBlockhash=T,await this.connection.sendRawTransaction(K.serialize(),{skipPreflight:A})))),signedTxs:s}}if(this.signAllTransactions){let K=s.map((F,b)=>(F.recentBlockhash=T,u[b].length&&F.sign(...u[b]),F));$e(K);let M=await this.signAllTransactions(K);if(p){let F=0,b=[],I=async()=>{if(!M[F])return;let x=await this.connection.sendRawTransaction(M[F].serialize(),{skipPreflight:A});b.push({txId:x,status:"sent",signedTx:M[F]}),P==null||P([...b]),F++;let O=!1,R=null,V=null,Z=U=>{R!==null&&clearInterval(R),V!==null&&this.connection.removeSignatureListener(V);let N=b.findIndex(Q=>Q.txId===x);if(N>-1){if(b[N].status==="error"||b[N].status==="success")return;b[N].status=U.err?"error":"success"}P==null||P([...b]),U.err||I()};this.loopMultiTxStatus&&(R=setInterval(async()=>{var U;if(O){clearInterval(R);return}try{let N=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});N&&(O=!0,clearInterval(R),Z({err:((U=N.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",x))}catch(N){O=!0,clearInterval(R),console.error("getTransaction timeout:",N,x)}},Jt)),V=this.connection.onSignature(x,U=>{if(O){this.connection.removeSignatureListener(V);return}O=!0,Z(U)},"confirmed"),this.connection.getSignatureStatus(x)};return await I(),{txIds:b.map(x=>x.txId),signedTxs:M}}else{let F=[];for(let b=0;b<M.length;b+=1){let I=await this.connection.sendRawTransaction(M[b].serialize(),{skipPreflight:A});F.push(I)}return{txIds:F,signedTxs:M}}}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 A;let h=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:r}=h,s=Ke(h,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),u=L(L({},this.cluster==="devnet"?await Bn(this.connection):await In(this.connection)),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),l=[];for(let T of c)u[T]===void 0&&l.push(new lt(T));let m=await hn({connection:this.connection,address:l});for(let[T,S]of Object.entries(m))u[T]=S;let p=i?lt.default.toBase58():r!=null?r:await ct(this.connection,this.blockhashCommitment),P=new Kt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(u));((A=this.owner)==null?void 0:A.signer)&&!this.signers.some(T=>T.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let g=new xt(P);return g.sign(this.signers),{builder:this,transaction:g,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async T=>{var F;let{skipPreflight:S=!0,sendAndConfirm:K,notSendToRpc:M}=T||{};if($e([g]),(F=this.owner)!=null&&F.isKeyPair){let b=await this.connection.sendTransaction(g,{skipPreflight:S});return K&&await $t(this.connection,b),{txId:b,signedTx:g}}if(this.signAllTransactions){let b=await this.signAllTransactions([g]);if(this.signers.length)for(let I of b)try{I.sign(this.signers)}catch{}return{txId:M?"":await this.connection.sendTransaction(b[0],{skipPreflight:S}),signedTx:b[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var l;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),r=t.filter(m=>m.builder.instructions.length>0),s=[i,...r.map(m=>m.transaction)],u=[this.signers,...r.map(m=>m.signers)],c=[...this.instructionTypes,...r.map(m=>m.instructionTypes).flat()];return(l=this.owner)!=null&&l.signer&&u.forEach(m=>{m.some(p=>p.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(m,p)=>{m.sign(u[p])}),{builder:this,transactions:s,signers:u,instructionTypes:c,buildProps:n,execute:async m=>{var A;let{sequentially:p,onTxUpdate:P,recentBlockHash:g,skipPreflight:h=!0}=m||{};if(g&&s.forEach(T=>T.message.recentBlockhash=g),$e(s),(A=this.owner)!=null&&A.isKeyPair){if(p){let T=[];for(let S of s){let K=await this.connection.sendTransaction(S,{skipPreflight:h});await $t(this.connection,K),T.push(K)}return{txIds:T,signedTxs:s}}return{txIds:await Promise.all(s.map(async T=>await this.connection.sendTransaction(T,{skipPreflight:h}))),signedTxs:s}}if(this.signAllTransactions){let T=await this.signAllTransactions(s);if(p){let S=0,K=[],M=async()=>{if(!T[S])return;let F=await this.connection.sendTransaction(T[S],{skipPreflight:h});K.push({txId:F,status:"sent",signedTx:T[S]}),P==null||P([...K]),S++;let b=!1,I=null,x=null,O=R=>{I!==null&&clearInterval(I),x!==null&&this.connection.removeSignatureListener(x);let V=K.findIndex(Z=>Z.txId===F);if(V>-1){if(K[V].status==="error"||K[V].status==="success")return;K[V].status=R.err?"error":"success"}P==null||P([...K]),R.err||M()};this.loopMultiTxStatus&&(I=setInterval(async()=>{var R;if(b){clearInterval(I);return}try{let V=await this.connection.getTransaction(F,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(b=!0,clearInterval(I),O({err:((R=V.meta)==null?void 0:R.err)||null}),console.log("tx status from getTransaction:",F))}catch(V){b=!0,clearInterval(I),console.error("getTransaction timeout:",V,F)}},Jt)),x=this.connection.onSignature(F,R=>{if(b){this.connection.removeSignatureListener(x);return}b=!0,O(R)},"confirmed"),this.connection.getSignatureStatus(F)};return M(),{txIds:[],signedTxs:T}}else{let S=[];for(let K=0;K<T.length;K+=1){let M=await this.connection.sendTransaction(T[K],{skipPreflight:h});S.push(M)}return{txIds:S,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var P;let p=e||{},{splitIns:t=[],computeBudgetConfig:n}=p,i=Ke(p,["splitIns","computeBudgetConfig"]),r=n?jt(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((g,h)=>E(L({},g),{[h.publicKey.toBase58()]:h}),{}),u=[],c=[],l=[],m=0;if(this.allInstructions.forEach(g=>{let h=[...l,g],A=n?[...r.instructions,...h]:h,S=[...new Set(h.map(K=>K.keys.filter(M=>M.isSigner).map(M=>M.pubkey.toString())).flat()).values()].map(K=>new lt(K));if(g!==t[m]&&l.length<12&&(It({instructions:A,payer:this.feePayer,signers:S})||It({instructions:h,payer:this.feePayer,signers:S})))l.push(g);else{if(l.length===0)throw Error("item ins too big");m+=g===t[m]?1:0,It({instructions:n?[...r.instructions,...l]:[...l],payer:this.feePayer,signers:S})?u.push(new St().add(...r.instructions,...l)):u.push(new St().add(...l)),c.push(Array.from(new Set(l.map(K=>K.keys.filter(M=>M.isSigner).map(M=>M.pubkey.toString())).flat())).map(K=>s[K]).filter(K=>K!==void 0)),l=[g]}}),l.length>0){let h=[...new Set(l.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>s[A]).filter(A=>A!==void 0);It({instructions:n?[...r.instructions,...l]:[...l],payer:this.feePayer,signers:h.map(A=>A.publicKey)})?u.push(new St().add(...r.instructions,...l)):u.push(new St().add(...l)),c.push(h)}return u.forEach(g=>g.feePayer=this.feePayer),(P=this.owner)!=null&&P.signer&&c.forEach(g=>{g.some(h=>h.publicKey.equals(this.owner.publicKey))||g.push(this.owner.signer)}),{builder:this,transactions:u,signers:c,instructionTypes:this.instructionTypes,execute:async g=>{var F;let{sequentially:h,onTxUpdate:A,skipTxCount:T=0,recentBlockHash:S,skipPreflight:K=!0}=g||{},M=S!=null?S:await ct(this.connection,this.blockhashCommitment);if(u.forEach(async(b,I)=>{b.recentBlockhash=M,c[I].length&&b.sign(...c[I])}),$e(u),(F=this.owner)!=null&&F.isKeyPair){if(h){let b=0,I=[];for(let x of u){if(++b,b<=T){I.push("tx skipped");continue}let O=await Kn(this.connection,x,this.signers.find(R=>R.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:K});I.push(O)}return{txIds:I,signedTxs:u}}return{txIds:await Promise.all(u.map(async b=>await this.connection.sendRawTransaction(b.serialize(),{skipPreflight:K}))),signedTxs:u}}if(this.signAllTransactions){let b=await this.signAllTransactions(u.slice(T,u.length)),I=[...u.slice(0,T),...b];if(h){let x=0,O=[],R=async()=>{if(!I[x])return;x<T&&(O.push({txId:"",status:"success",signedTx:I[x]}),A==null||A([...O]),x++,R());let V=await this.connection.sendRawTransaction(I[x].serialize(),{skipPreflight:K});O.push({txId:V,status:"sent",signedTx:I[x]}),A==null||A([...O]),x++;let Z=!1,U=null,N=null,Q=q=>{U!==null&&clearInterval(U),N!==null&&this.connection.removeSignatureListener(N);let ne=O.findIndex(Ae=>Ae.txId===V);if(ne>-1){if(O[ne].status==="error"||O[ne].status==="success")return;O[ne].status=q.err?"error":"success"}A==null||A([...O]),q.err||R()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var q;if(Z){clearInterval(U);return}try{let ne=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});ne&&(Z=!0,clearInterval(U),Q({err:((q=ne.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",V))}catch(ne){Z=!0,clearInterval(U),console.error("getTransaction timeout:",ne,V)}},Jt)),N=this.connection.onSignature(V,q=>{if(Z){this.connection.removeSignatureListener(N);return}Z=!0,Q(q)},"confirmed"),this.connection.getSignatureStatus(V)};return await R(),{txIds:O.map(V=>V.txId),signedTxs:I}}else{let x=[];for(let O=0;O<I.length;O+=1){let R=await this.connection.sendRawTransaction(I[O].serialize(),{skipPreflight:K});x.push(R)}return{txIds:x,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var F;let M=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:r=[],insCountLimit:s=12}=M,u=Ke(M,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),c=L(L({},this.cluster==="devnet"?await Bn(this.connection):await In(this.connection)),i),l=Array.from(new Set([...this.lookupTableAddress,...r])),m=[];for(let b of l)c[b]===void 0&&m.push(new lt(b));let p=await hn({connection:this.connection,address:m});for(let[b,I]of Object.entries(p))c[b]=I;let P=t?jt(t):{instructions:[],instructionTypes:[]},g=await ct(this.connection,this.blockhashCommitment),h=this.signers.reduce((b,I)=>E(L({},b),{[I.publicKey.toBase58()]:I}),{}),A=[],T=[],S=[],K=0;if(this.allInstructions.forEach(b=>{let I=[...S,b],x=t?[...P.instructions,...I]:I;if(b!==n[K]&&S.length<s&&(Bt({instructions:x,payer:this.feePayer,lookupTableAddressAccount:c})||Bt({instructions:I,payer:this.feePayer,lookupTableAddressAccount:c})))S.push(b);else{if(S.length===0)throw Error("item ins too big");K+=b===n[K]?1:0;let O={};for(let R of[...new Set(l)])c[R]!==void 0&&(O[R]=c[R]);if(t&&Bt({instructions:[...P.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:g})){let R=new Kt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...P.instructions,...S]}).compileToV0Message(Object.values(c));A.push(new xt(R))}else{let R=new Kt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...S]}).compileToV0Message(Object.values(c));A.push(new xt(R))}T.push(Array.from(new Set(S.map(R=>R.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(R=>h[R]).filter(R=>R!==void 0)),S=[b]}}),S.length>0){let I=[...new Set(S.map(x=>x.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(x=>h[x]).filter(x=>x!==void 0);if(t&&Bt({instructions:[...P.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:g})){let x=new Kt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...P.instructions,...S]}).compileToV0Message(Object.values(c));A.push(new xt(x))}else{let x=new Kt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...S]}).compileToV0Message(Object.values(c));A.push(new xt(x))}T.push(I)}return(F=this.owner)!=null&&F.signer&&T.forEach(b=>{b.some(I=>I.publicKey.equals(this.owner.publicKey))||b.push(this.owner.signer)}),A.forEach((b,I)=>{b.sign(T[I])}),{builder:this,transactions:A,buildProps:e,signers:T,instructionTypes:this.instructionTypes,execute:async b=>{var Z;let{sequentially:I,onTxUpdate:x,skipTxCount:O=0,recentBlockHash:R,skipPreflight:V=!0}=b||{};if(A.map(async(U,N)=>{T[N].length&&U.sign(T[N]),R&&(U.message.recentBlockhash=R)}),$e(A),(Z=this.owner)!=null&&Z.isKeyPair){if(I){let U=0,N=[];for(let Q of A){if(++U,U<=O){console.log("skip tx: ",U),N.push("tx skipped");continue}let q=await this.connection.sendTransaction(Q,{skipPreflight:V});await $t(this.connection,q),N.push(q)}return{txIds:N,signedTxs:A}}return{txIds:await Promise.all(A.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:V}))),signedTxs:A}}if(this.signAllTransactions){let U=await this.signAllTransactions(A.slice(O,A.length)),N=[...A.slice(0,O),...U];if(I){let Q=0,q=[],ne=async()=>{if(!N[Q])return;if(Q<O){q.push({txId:"",status:"success",signedTx:N[Q]}),x==null||x([...q]),Q++,ne();return}let Ae=await this.connection.sendTransaction(N[Q],{skipPreflight:V});q.push({txId:Ae,status:"sent",signedTx:N[Q]}),x==null||x([...q]),Q++;let yt=!1,tt=null,vt=null,_n=Ze=>{tt!==null&&clearInterval(tt),vt!==null&&this.connection.removeSignatureListener(vt);let Ee=q.findIndex(ti=>ti.txId===Ae);if(Ee>-1){if(q[Ee].status==="error"||q[Ee].status==="success")return;q[Ee].status=Ze.err?"error":"success"}x==null||x([...q]),Ze.err||ne()};this.loopMultiTxStatus&&(tt=setInterval(async()=>{var Ze;if(yt){clearInterval(tt);return}try{let Ee=await this.connection.getTransaction(Ae,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ee&&(yt=!0,clearInterval(tt),_n({err:((Ze=Ee.meta)==null?void 0:Ze.err)||null}),console.log("tx status from getTransaction:",Ae))}catch(Ee){yt=!0,clearInterval(tt),console.error("getTransaction timeout:",Ee,Ae)}},Jt)),vt=this.connection.onSignature(Ae,Ze=>{if(yt){this.connection.removeSignatureListener(vt);return}yt=!0,_n(Ze)},"confirmed"),this.connection.getSignatureStatus(Ae)};return ne(),{txIds:[],signedTxs:N}}else{let Q=[];for(let q=0;q<N.length;q+=1){let ne=await this.connection.sendTransaction(N[q],{skipPreflight:V});Q.push(ne)}return{txIds:Q,signedTxs:N}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}};var xn=(...a)=>a.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ge=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=G(t)}createTxBuilder(e){return this.scope.checkOwner(),new en({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(xn(e))}logInfo(...e){this.logger.info(xn(e))}logAndCreateError(...e){let t=xn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as am,SystemProgram as um}from"@solana/web3.js";import mm from"bn.js";import{createCloseAccountInstruction as ym,createInitializeAccountInstruction as bm,createTransferInstruction as gm,TOKEN_PROGRAM_ID as Pm}from"@solana/spl-token";import{Keypair as Yl,PublicKey as Ql}from"@solana/web3.js";import jl from"bn.js";import{TOKEN_PROGRAM_ID as em}from"@solana/spl-token";var tn=k([d("mint"),d("owner"),o("amount"),$("delegateOption"),d("delegate"),w("state"),$("isNativeOption"),o("isNative"),o("delegatedAmount"),$("closeAuthorityOption"),d("closeAuthority")]);import{PublicKey as lg,SystemProgram as mg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as pg}from"@solana/spl-token";import{PublicKey as zm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ym}from"@solana/spl-token";import{PublicKey as v}from"@solana/web3.js";var xo=new v("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Co=new v("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Ro=new v("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Cn=new v("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),jm=new v("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),cr=new v("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Lo=new v("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Oo=new v("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),$m=new v("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),lr=new v("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),No=new v("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),mr=new v("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),dr=new v("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Mo=new v("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Jm=new v("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),pr=new v("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Rn=new v("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),fr=new v("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ed=new v("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),yr=new v("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),br=new v("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),gr=new v("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),td=new v("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),nd=new v("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),od=new v("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),id=new v("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),rd=new v("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var ze={OPEN_BOOK_PROGRAM:new v("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new v("Ray1111111111111111111111111111111111111111"),AMM_V4:new v("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new v("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new v("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new v("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new v("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new v("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new v("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new v("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new v("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new v("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:v.default,Router:new v("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new v("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new v("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new v("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new v("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new v("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new v("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new v("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new v("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new v("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new v("Ray1111111111111111111111111111111111111111")};import hg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Df,TOKEN_2022_PROGRAM_ID as Wf,TOKEN_PROGRAM_ID as qf}from"@solana/spl-token";import{PublicKey as Gf}from"@solana/web3.js";import Xf from"bn.js";import Qf from"decimal.js";import{TOKEN_PROGRAM_ID as Ad}from"@solana/spl-token";import{PublicKey as hd}from"@solana/web3.js";var Pr=k([$("mintAuthorityOption"),d("mintAuthority"),o("supply"),w("decimals"),w("isInitialized"),$("freezeAuthorityOption"),d("freezeAuthority")]);var mt=i=>{var r=i,{address:a,programId:e,decimals:t}=r,n=Ke(r,["address","programId","decimals"]);return L({chainId:101,address:Ge(a).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import{ASSOCIATED_TOKEN_PROGRAM_ID as lf,TOKEN_2022_PROGRAM_ID as mf,TOKEN_PROGRAM_ID as df}from"@solana/spl-token";import{Keypair as yf,PublicKey as bf,SystemProgram as Pf,TransactionInstruction as Af}from"@solana/web3.js";import kf from"bn.js";import Fd from"bn.js";function Fo(a){let e=Buffer.alloc(4);return e.writeInt32BE(a),e}var zd=Buffer.from("amm_config","utf8"),wr=Buffer.from("pool","utf8"),kr=Buffer.from("pool_vault","utf8"),Xd=Buffer.from("pool_reward_vault","utf8"),Yd=Buffer.from("position","utf8"),Tr=Buffer.from("tick_array","utf8"),Qd=Buffer.from("operation","utf8"),hr=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Zd=Buffer.from("observation","utf8"),Hd=Buffer.from("support_mint","utf8"),jd=Buffer.from("dynamic_fee_config","utf8"),$d=Buffer.from("permission","utf8");function Xe(a,e,t){return Be([Tr,e.toBuffer(),Fo(t)],a)}function Ye(a,e){return Be([hr,e.toBuffer()],a)}var Jd=Buffer.from("locked_position","utf8");import{sha256 as Cr}from"js-sha256";import np from"bn.js";import on from"bn.js";import vo from"decimal.js";var te=class{static getDeltaAmountAUnsigned(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let r=n.shln(ot),s=t.sub(e);if(!e.gt(C))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let u=i?Gt(j(r,s,t),e):ee(r,s,t).div(e);if(u.gt(De))throw Error("MaxTokenOverflow");return u}static getDeltaAmountBUnsigned(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let r=i?j(n,t.sub(e),H):ee(n,t.sub(e),H);if(r.gt(De))throw Error("MaxTokenOverflow");return r}static addDelta(e,t){if(t.isNeg()){let n=t.neg();if(e.lt(n))throw new Error("Liquidity underflow");return e.sub(n)}else return e.add(t)}static getLiquidityFromAmountA(e,t,n){if(n.isZero())return C;e.gt(t)&&([e,t]=[t,e]);let i=ee(e,t,H),r=t.sub(e);return ee(n,i,r)}static getLiquidityFromAmountB(e,t,n){if(n.isZero())return C;e.gt(t)&&([e,t]=[t,e]);let i=t.sub(e);return ee(n,H,i)}static getLiquidityFromAmounts(e,t,n,i,r){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return this.getLiquidityFromAmountA(t,n,i);if(e.lt(n)){let s=this.getLiquidityFromAmountA(e,n,i),u=this.getLiquidityFromAmountB(t,e,r);return s.lt(u)?s:u}else return this.getLiquidityFromAmountB(t,n,r)}static getAmountsForLiquidity(e,t,n,i,r){t.gt(n)&&([t,n]=[n,t]);let s=C,u=C;return e.lte(t)?s=this.getDeltaAmountAUnsigned(t,n,i,r):e.lt(n)?(s=this.getDeltaAmountAUnsigned(e,n,i,r),u=this.getDeltaAmountBUnsigned(t,e,i,r)):u=this.getDeltaAmountBUnsigned(t,n,i,r),{amountA:s,amountB:u}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,r,s,u){let{amountA:c,amountB:l}=this.getAmountsForLiquidity(e,t,n,i,s),m=r?1+u:1-u,p=new on(new vo(c.toString()).mul(m).toFixed(0)),P=new on(new vo(l.toString()).mul(m).toFixed(0));return{amountSlippageA:p,amountSlippageB:P}}static getLiquidityAndAmountsFromAmount({sqrtPriceCurrentX64:e,sqrtPriceLowerX64:t,sqrtPriceUpperX64:n,amountInfo:i}){let r;if(i.type==="liquidity")r=i.amount;else if(i.type==="amountA")r=e.gte(n)?C:this.getLiquidityFromAmountA(on.max(e,t),n,i.amount);else if(i.type==="amountB")r=e.lte(t)?C:this.getLiquidityFromAmountB(t,on.min(e,n),i.amount);else throw Error("amount info type check error");return L({liquidity:r},this.getAmountsForLiquidity(e,t,n,i.amount,!0))}};import yp from"bn.js";var Ct=class{static getNextSqrtPriceFromAmountARoundingUp(e,t,n,i){if(n.isZero())return e;let r=t.shln(ot);if(i){let s=n.mul(e),u=r.add(s);if(u.gte(r))return j(r,e,u);let c=ee(r,Me,e);return j(r,Me,c.add(n))}else{let s=n.mul(e);if(r.lte(s))throw new Error("Insufficient liquidity for token0 removal");let u=r.sub(s);return j(r,e,u)}}static getNextSqrtPriceFromAmountBRoundingDown(e,t,n,i){if(n.isZero())return e;if(i){let r=n.shln(ot).div(t);return e.add(r)}else{let r=Gt(n.shln(ot),t);return e.sub(r)}}static getNextSqrtPriceFromInput(e,t,n,i){if(!e.gt(C))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(C))throw Error("liquidity.gt(BN_ZERO)");return i?this.getNextSqrtPriceFromAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceFromOutput(e,t,n,i){if(!e.gt(C))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(C))throw Error("liquidity.gt(BN_ZERO)");return i?this.getNextSqrtPriceFromAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromAmountARoundingUp(e,t,n,!1)}};import oe from"bn.js";var Ce=class{static newValue({poolInfo:e,amountSpecified:t,zeroForOne:n,feeRate:i,blockTimestamp:r}){let s={amountSpecifiedRemaining:t,amountCalculated:C,sqrtPriceX64:e.sqrtPriceX64,tick:e.tickCurrent,feeGrowthGlobalX64:n?e.feeGrowthGlobalX64A:e.feeGrowthGlobalX64B,lpFee:C,protocolFee:C,fundFee:C,liquidity:e.liquidity,sqrtPriceNextX64:C,tickNext:0,baseFeeRate:i,tickSpacing:e.tickSpacing,tickSpacingIndex:0,dynamicFeeInfo:dt.getDynamicFeeInfo({poolInfo:e})};return s.dynamicFeeInfo&&(s.tickSpacingIndex=Lt.tickSpacingIndexFromTick(s.tick,s.tickSpacing),dt.updateReference({dynamicFeeInfo:s.dynamicFeeInfo,tickSpacingIndex:s.tickSpacingIndex,currentTimestamp:r})),s}static getTargetPriceBasedOnNextTick({data:e,tickNext:t,zeroForOne:n,sqrtPriceLimitX64:i}){e.tickNext=t,e.tickNext<ke?e.tickNext=ke:e.tickNext>Te&&(e.tickNext=Te),e.sqrtPriceNextX64=_.getSqrtPriceAtTick(e.tickNext);let r;if(n&&e.sqrtPriceNextX64.lt(i)||!n&&e.sqrtPriceNextX64.gt(i)?r=i:r=e.sqrtPriceNextX64,n){if(e.tick<e.tickNext)throw Error("data.tick < data.tickNext");if(e.sqrtPriceX64.lt(e.sqrtPriceNextX64))throw Error("data.sqrtPriceX64.lt(data.sqrtPriceNextX64)");if(e.sqrtPriceX64.lt(r))throw Error("data.sqrtPriceX64.lt(targetPrice)")}else{if(e.tickNext<=e.tick)throw Error("data.tickNext <= data.tick");if(e.sqrtPriceNextX64.lt(e.sqrtPriceX64))throw Error("data.sqrtPriceNextX64.lt(data.sqrtPriceX64)");if(r.lt(e.sqrtPriceX64))throw Error("targetPrice.lt(data.sqrtPriceX64)")}return r}static updateVolatilityAccumulator({state:e}){!e.dynamicFeeInfo||dt.updateVolatilityAccumulator({state:e.dynamicFeeInfo,tickSpacingIndex:e.tickSpacingIndex})}static computeDynamicFeeRate({data:e,tickSpacing:t}){let n=e.volatilityAccumulator*t,i=n*n,r=oo*gt*gt,s=j(new oe(e.dynamicFeeControl),new oe(i),new oe(r)).toNumber();return s>qt?qt:s}static getTotalFeeRate({data:e}){if(e.dynamicFeeInfo){let t=this.computeDynamicFeeRate({data:e.dynamicFeeInfo,tickSpacing:e.tickSpacing}),n=e.baseFeeRate+t;return Math.min(qt,n)}return e.baseFeeRate}static getSpacingBoundedPrice({data:e,targetPrice:t,zeroForOne:n}){if(e.dynamicFeeInfo===void 0)return{isSkipped:!0,boundedPrice:t};if(e.liquidity.isZero()||e.dynamicFeeInfo.volatilityAccumulator===e.dynamicFeeInfo.maxVolatilityAccumulator)return{isSkipped:!0,boundedPrice:t};let i=e.tickSpacing,r=n?e.tickSpacingIndex*i:(e.tickSpacingIndex+1)*i,s=Math.max(ke,Math.min(Te,r)),u=_.getSqrtPriceAtTick(s);return n?{isSkipped:!1,boundedPrice:oe.max(t,u)}:{isSkipped:!1,boundedPrice:oe.min(t,u)}}static applySwapAmounts({state:e,amountIn:t,amountOut:n,feeAmount:i,isBaseInput:r,isFeeOnInput:s,protocolFeeRate:u,fundFeeRate:c}){let l=s?t.add(i):t;r?(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(l),e.amountCalculated=e.amountCalculated.add(n)):(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(n),e.amountCalculated=e.amountCalculated.add(l)),this.splitFee({state:e,feeAmount:i,protocolFeeRate:u,fundFeeRate:c})}static updateDynamicFeeIndex({state:e,zeroForOne:t,isSkippedTickSpacing:n}){if(e.dynamicFeeInfo!==void 0){if(n){let i=e.sqrtPriceX64.eq(e.sqrtPriceNextX64)?e.tickNext:e.tick,r=Lt.tickSpacingIndexFromTick(i,e.tickSpacing);!t&&i%e.tickSpacing===0&&(r=r-1),e.tickSpacingIndex=r,e.dynamicFeeInfo.volatilityAccumulator!==e.dynamicFeeInfo.maxVolatilityAccumulator&&this.updateVolatilityAccumulator({state:e})}e.tickSpacingIndex+=t?-1:1}}static splitFee({state:e,feeAmount:t,protocolFeeRate:n,fundFeeRate:i}){let r=t;if(n.gt(C)){let s=t.mul(n).div(new oe(Se));e.protocolFee=e.protocolFee.add(s),r=r.sub(s)}if(i.gt(C)){let s=t.mul(i).div(new oe(Se));e.fundFee=e.fundFee.add(s),r=r.sub(s)}if(e.liquidity.gt(C)){let s=ee(r,H,e.liquidity);e.feeGrowthGlobalX64=e.feeGrowthGlobalX64.add(s),e.lpFee=e.lpFee.add(r)}}},Rt=class{static newSwapComputationResult({sqrtPriceNextX64:e}){return{sqrtPriceNextX64:e!=null?e:C,amountIn:C,amountOut:C,feeAmount:C}}static calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:i,isBaseInput:r}){if(r)try{return i?te.getDeltaAmountAUnsigned(t,e,n,!0):te.getDeltaAmountBUnsigned(e,t,n,!0)}catch(s){if(s.message==="MaxTokenOverflow")return null;throw s}else try{return i?te.getDeltaAmountBUnsigned(t,e,n,!1):te.getDeltaAmountAUnsigned(e,t,n,!1)}catch(s){if(s.message==="MaxTokenOverflow")return null;throw s}}static computeSwap(e,t,n,i,r,s,u,c){let l=this.newSwapComputationResult({});if(s){let p=c?ee(i,new oe(We-r),new oe(We)):i,P=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:u,isBaseInput:s});P!==null&&(l.amountIn=P),l.sqrtPriceNextX64=P!==null&&p.gte(l.amountIn)?t:Ct.getNextSqrtPriceFromInput(e,n,p,u)}else{let p=c?i:j(i,new oe(We),new oe(We-r)),P=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:u,isBaseInput:s});P!==null&&(l.amountOut=P),l.sqrtPriceNextX64=P!==null&&p.gte(l.amountOut)?t:Ct.getNextSqrtPriceFromOutput(e,n,p,u)}if(u){if(!l.sqrtPriceNextX64.gte(t))throw Error("!result.sqrtPriceNextX64.gte(sqrtPriceTargetX64)")}else if(!t.gte(l.sqrtPriceNextX64))throw Error("!sqrtPriceTargetX64.gte(result.sqrtPriceNextX64)");let m=t.eq(l.sqrtPriceNextX64);if(u?(m&&s||(l.amountIn=te.getDeltaAmountAUnsigned(l.sqrtPriceNextX64,e,n,!0)),m&&!s||(l.amountOut=te.getDeltaAmountBUnsigned(l.sqrtPriceNextX64,e,n,!1))):(m&&s||(l.amountIn=te.getDeltaAmountBUnsigned(e,l.sqrtPriceNextX64,n,!0)),m&&!s||(l.amountOut=te.getDeltaAmountAUnsigned(e,l.sqrtPriceNextX64,n,!1))),s)c?l.sqrtPriceNextX64.eq(t)?l.feeAmount=j(l.amountIn,new oe(r),new oe(We-r)):l.feeAmount=i.sub(l.amountIn):(l.feeAmount=j(l.amountOut,new oe(r),new oe(We)),l.amountOut=l.amountOut.sub(l.feeAmount),m||(l.amountIn=i));else if(c)l.amountOut=oe.min(l.amountOut,i),l.feeAmount=j(l.amountIn,new oe(r),new oe(We-r));else{l.feeAmount=j(l.amountOut,new oe(r),new oe(We));let p=l.amountOut.sub(l.feeAmount);p.gt(i)?(l.feeAmount=l.amountOut.sub(i),l.amountOut=i):l.amountOut=p}return l}};import pt from"bn.js";function Ln({programId:a,poolId:e,poolInfo:t,tickArrays:n,configInfo:i,tickarrayBitmapExtension:r,amountSpecified:s,sqrtPriceLimitX64:u,zeroForOne:c,isBaseInput:l,blockTimestamp:m,includeExtraTickArrays:p}){u.isZero()&&(u=c?new pt(Oe).addn(1):new pt(Ne).subn(1));let P=0;if(n.length===0)return{allTrade:!1,amountSpecifiedRemaining:s,amountCalculated:C,feeAmount:C,sqrtPriceX64:t.sqrtPriceX64,liquidity:t.liquidity,tickCurrent:t.tickCurrent,accounts:[]};let g=p?Qe.findTickArrayAddress({programId:a,poolId:e,tickSpacing:t.tickSpacing,poolBitmap:t.tickArrayBitmap,tickArrayBitmap:r,findInfo:{type:c?"oneForZero":"zeroForOne",count:2,tickArrayCurrent:t.tickCurrent}}).filter(I=>I.toString()!==n[0].address.toString()):[],h=se.getTickArrayStartIndex(t.tickCurrent,t.tickSpacing),{firstItckArrayContainsPoolTick:A,firstValidTickArrayStartIndex:T}={firstItckArrayContainsPoolTick:n[P].value.startTickIndex===h,firstValidTickArrayStartIndex:n[P].value.startTickIndex},S=A,K=T,M=n[P],F=Ot.isFeeOnInput(t.feeOn,c),b=Ce.newValue({poolInfo:t,amountSpecified:s,zeroForOne:c,feeRate:i.tradeFeeRate,blockTimestamp:m});for(;!b.amountSpecifiedRemaining.isZero()&&!b.sqrtPriceX64.eq(u);){let I=(()=>{let R=se.nextInitalizedTick({data:M.value,tickSpacing:b.tickSpacing,zeroForOne:c,currentTickIndex:b.tick});if(R!==void 0)return R;if(S){let V=n[++P];return V===void 0?void 0:(K=V.value.startTickIndex,M=V,se.firstinitializedTick({data:V.value,zeroForOne:c}))}else return S=!0,se.firstinitializedTick({data:M.value,zeroForOne:c})})();if(I===void 0)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.lpFee.add(b.fundFee).add(b.protocolFee),sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:n.slice(0,P).map(R=>R.address)};let x=Ce.getTargetPriceBasedOnNextTick({data:b,tickNext:I.tick,zeroForOne:c,sqrtPriceLimitX64:u}),O=b.liquidity;do{Ce.updateVolatilityAccumulator({state:b});let R=Ce.getTotalFeeRate({data:b}),{isSkipped:V,boundedPrice:Z}=Ce.getSpacingBoundedPrice({data:b,targetPrice:x,zeroForOne:c}),U=!b.sqrtPriceX64.eq(Z),N;U?(N=Rt.computeSwap(b.sqrtPriceX64,Z,b.liquidity,b.amountSpecifiedRemaining,R,l,c,F),Ce.applySwapAmounts({state:b,amountIn:N.amountIn,amountOut:N.amountOut,feeAmount:N.feeAmount,isBaseInput:l,isFeeOnInput:F,protocolFeeRate:new pt(i.protocolFeeRate),fundFeeRate:new pt(i.fundFeeRate)})):N=Rt.newSwapComputationResult({sqrtPriceNextX64:Z});let Q=_.limitOrderUnfilledAmount({tick:I});if(b.sqrtPriceNextX64.eq(N.sqrtPriceNextX64)){let q=_.matchLimitOrder({tick:I,swapAmount:b.amountSpecifiedRemaining,swapDirectionZeroForOne:c,isBaseInput:l,feeRate:R,isFeeOnInput:F});if(q.amountIn.gt(C)&&Ce.applySwapAmounts({state:b,amountIn:q.amountIn,amountOut:q.amountOut,feeAmount:q.ammFeeAmount,isBaseInput:l,isFeeOnInput:F,protocolFeeRate:new pt(i.protocolFeeRate),fundFeeRate:new pt(i.fundFeeRate)}),_.hasLiquidity({data:I})&&!_.hasLimitOrders({data:I})){let ne=c?I.liquidityNet.neg():I.liquidityNet;O=te.addDelta(b.liquidity,ne)}b.tick=c&&!_.hasLimitOrders({data:I})||!c&&_.hasLimitOrders({data:I})?b.tickNext-1:b.tickNext}else b.sqrtPriceX64.eq(N.sqrtPriceNextX64)||(b.tick=_.getTickAtSqrtPrice(N.sqrtPriceNextX64));if(b.sqrtPriceX64=N.sqrtPriceNextX64,Ce.updateDynamicFeeIndex({state:b,zeroForOne:c,isSkippedTickSpacing:V}),b.amountSpecifiedRemaining.isZero()||b.sqrtPriceX64.eq(x)){let q=_.limitOrderUnfilledAmount({tick:I});if(!b.amountSpecifiedRemaining.isZero()&&!q.eq(Q)&&!q.isZero())throw Error("!limitOrderUnfilledAmountAfter.isZero()");break}}while(!0);b.liquidity=O}return{allTrade:!0,amountSpecifiedRemaining:C,amountCalculated:b.amountCalculated,feeAmount:b.lpFee.add(b.fundFee).add(b.protocolFee),sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:[...g,...n.slice(0,P+1+(p?1:0)).map(I=>I.address)]}}function de(a){let e=`global:${a}`;return Buffer.from(Cr.digest(e)).slice(0,8)}so.span;var Cf=G("Raydium_Clmm"),Rf={createPool:de("create_pool"),createCustomizablePool:de("create_customizable_pool"),createPermissionedPool:de("create_permissioned_pool"),openPositionV2:de("open_position_v2"),openPositionWithToken22Nft:de("open_position_with_token22_nft"),closePosition:de("close_position"),increaseLiquidityV2:de("increase_liquidity_v2"),decreaseLiquidityV2:de("decrease_liquidity_v2"),initializeReward:de("initialize_reward"),setRewardParams:de("set_reward_params"),updateRewardInfos:de("update_reward_infos"),collectRemainingRewards:de("collect_remaining_rewards"),swapV2:de("swap_v2"),openLimitOrder:de("open_limit_order"),increaseLimitOrder:de("increase_limit_order"),decreaseLimitOrder:de("decrease_limit_order"),settleLimitOrder:de("settle_limit_order"),closeLimitOrder:de("close_limit_order")};import{PublicKey as Nn}from"@solana/web3.js";var Mr=k([w("instruction")]),Fr=k([w("instruction")]),vr=k([o("rewardState"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardLastUpdateTime"),o("totalReward"),o("totalRewardEmissioned"),o("rewardClaimed"),o("rewardPerSecond"),D("accRewardPerShare"),d("rewardVault"),d("rewardMint"),d("rewardSender"),o("rewardType"),B(o(),15,"padding")]),Vr=k([o("state"),o("nonce"),d("lpVault"),d("rewardVault"),d(),d(),o(),o(),o("totalReward"),D("perShareReward"),o("lastSlot"),o("perSlotReward")]),_r=k([o("state"),o("nonce"),d("lpVault"),d("rewardVaultA"),o("totalRewardA"),D("perShareRewardA"),o("perSlotRewardA"),w("option"),d("rewardVaultB"),W(7),o("totalRewardB"),D("perShareRewardB"),o("perSlotRewardB"),o("lastSlot"),d()]),Er=k([o(),o("state"),o("nonce"),o("validRewardTokenNum"),D("rewardMultiplier"),o("rewardPeriodMax"),o("rewardPeriodMin"),o("rewardPeriodExtend"),d("lpMint"),d("lpVault"),B(vr,5,"rewardInfos"),d("creator"),d(),B(o(),32,"padding")]),Dr=new Proxy(Vr,{get(a,e,t){return e==="decode"?(...n)=>{let i=a.decode(...n);return E(L({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(a,e,t)}}),Wr=new Proxy(_r,{get(a,e,t){return e==="decode"?(...n)=>{let i=a.decode(...n);return E(L({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(a,e,t)}}),Do=new Proxy(Er,{get(a,e,t){return e==="decode"?(...n)=>{let i=a.decode(...n);return E(L({},i),{version:6,rewardInfos:i.rewardInfos.map(r=>{var s;return E(L({},r),{rewardType:((s=Object.entries(Nt).find(u=>String(u[1])===r.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(a,e,t)}}),qr=k([o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),Ur=k([w("instruction"),o("nonce"),B(qr,5,"rewardTimeInfo")]),Gr=k([w("instruction"),o("rewardReopenTime"),o("rewardEndTime"),o("rewardPerSecond")]),zr=k([w("instruction"),o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),xy=k([o("state"),d("id"),d("owner"),o("deposited"),B(o(),1,"rewardDebts")]),Wo=k([o("state"),d("id"),d("owner"),o("deposited"),B(D(),1,"rewardDebts"),o(""),o("voteLockedBalance"),B(o(),15)]),Cy=k([o("state"),d("id"),d("owner"),o("deposited"),B(o(),2,"rewardDebts")]),Xr=k([o("state"),d("id"),d("owner"),o("deposited"),B(D(),2,"rewardDebts"),B(o(),17)]),Yr=k([o(),o("state"),d("id"),d("owner"),o("deposited"),B(D(),5,"rewardDebts"),B(o(),16)]),Qr=k([w("instruction"),o("amount")]),Zr=k([d("mint"),d("grantAuthority"),o("baselineVoteWeightScaledFactor"),o("maxExtraLockupVoteWeightScaledFactor"),o("lockupSaturationSecs"),Qn("digitShift"),B(w(),7,"reserved1"),B(o(),7,"reserved2")]),Hr=k([W(8),d("governanceProgramId"),d("realm"),d("realmGoverningTokenMint"),d("realmAuthority"),B(w(),32,"reserved1"),B(Zr,4,"votingMints"),nt("timeOffset"),w("bump"),B(w(),7,"reserved2"),B(o(),11,"reserved3")]),jr=k([nt("startTime"),nt("endTime"),w("kind"),B(w(),15,"reserved")]),$r=k([B(jr,1,"lockup"),o("amountDeposited_native"),o("amountInitiallyLockedNative"),we("isUsed"),we("allowClawback"),w("votingMintConfigIdx"),B(w(),29,"reserved")]),Jr=k([W(8),d("voterAuthority"),d("registrar"),B($r,32,"deposits"),w("voterBump"),w("voterWweightRecordBump"),B(w(),94,"reserved")]);import{NATIVE_MINT as _y}from"@solana/spl-token";var Ey=G("Raydium_farm_config"),ea=new Nn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ta=new Nn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Dy=new Nn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var Nt={"Standard SPL":0,"Option tokens":1},qo={[xo.toString()]:3,[Co.toString()]:4,[Ro.toString()]:5,[Cn.toString()]:6,[ze.FARM_PROGRAM_ID_V3.toString()]:3,[ze.FARM_PROGRAM_ID_V4.toString()]:4,[ze.FARM_PROGRAM_ID_V5.toString()]:5,[ze.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as Bb,SystemProgram as Sb,SYSVAR_CLOCK_PUBKEY as Kb,SYSVAR_RENT_PUBKEY as xb,TransactionInstruction as Cb}from"@solana/web3.js";import Lb from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Nb,createAssociatedTokenAccountIdempotentInstruction as Mb,TOKEN_PROGRAM_ID as Fb}from"@solana/spl-token";import tb from"bn.js";import{PublicKey as Xy}from"@solana/web3.js";import Qy from"bn.js";var fb=G("Raydium.farm.util");var Xb=G("Raydium_farm_instruction"),Yb={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};import Mg from"bn.js";import{PublicKey as DA}from"@solana/web3.js";import{AccountLayout as UA,MintLayout as GA,NATIVE_MINT as zA,TOKEN_PROGRAM_ID as YA}from"@solana/spl-token";import Re from"bn.js";var Mt=1e4;function Pe(a,e,t,n){if(e===void 0)return{amount:a,fee:void 0,expirationTime:void 0};let i=E(L({},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}}),r=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new Re(r.maximumFee.toString()),u=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(r.transferFeeBasisPoints===Mt){let c=new Re(r.maximumFee.toString());return{amount:a.add(c),fee:c,expirationTime:u}}else{let c=rn(a.mul(new Re(Mt)),new Re(Mt-r.transferFeeBasisPoints)),l=new Re(r.maximumFee.toString()),m=c.sub(a).gt(l)?a.add(l):c,p=rn(m.mul(new Re(r.transferFeeBasisPoints)),new Re(Mt)),P=p.gt(s)?s:p;return{amount:m,fee:P,expirationTime:u}}else{let c=rn(a.mul(new Re(r.transferFeeBasisPoints)),new Re(Mt)),l=c.gt(s)?s:c;return{amount:a,fee:l,expirationTime:u}}}function Ft(a,e){return a===void 0?e:e===void 0?a:Math.min(a,e)}function rn(a,e){let{div:t,mod:n}=a.divmod(e);return n.gt(new Re(0))?t.add(new Re(1)):t}import Go from"bn.js";var ca=new Go(25),la=new Go(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as iP,TOKEN_PROGRAM_ID as rP}from"@solana/spl-token";import{PublicKey as sP,SystemProgram as uP,SYSVAR_RENT_PUBKEY as cP,TransactionInstruction as lP}from"@solana/web3.js";import PP from"bn.js";var ma=k([w("instruction"),o("amountIn"),o("minAmountOut")]),da=k([w("instruction"),o("maxAmountIn"),o("amountOut")]),eP=k([w("instruction"),w("nonce")]),pa=k([w("instruction"),w("nonce"),o("startTime")]),zo=k([o("status"),o("nonce"),o("maxOrder"),o("depth"),o("baseDecimal"),o("quoteDecimal"),o("state"),o("resetFlag"),o("minSize"),o("volMaxCutRatio"),o("amountWaveRatio"),o("baseLotSize"),o("quoteLotSize"),o("minPriceMultiplier"),o("maxPriceMultiplier"),o("systemDecimalValue"),o("minSeparateNumerator"),o("minSeparateDenominator"),o("tradeFeeNumerator"),o("tradeFeeDenominator"),o("pnlNumerator"),o("pnlDenominator"),o("swapFeeNumerator"),o("swapFeeDenominator"),o("baseNeedTakePnl"),o("quoteNeedTakePnl"),o("quoteTotalPnl"),o("baseTotalPnl"),o("poolOpenTime"),o("punishPcAmount"),o("punishCoinAmount"),o("orderbookToInitTime"),D("swapBaseInAmount"),D("swapQuoteOutAmount"),o("swapBase2QuoteFee"),D("swapQuoteInAmount"),D("swapBaseOutAmount"),o("swapQuote2BaseFee"),d("baseVault"),d("quoteVault"),d("baseMint"),d("quoteMint"),d("lpMint"),d("openOrders"),d("marketId"),d("marketProgramId"),d("targetOrders"),d("withdrawQueue"),d("lpVault"),d("owner"),o("lpReserve"),B(o(),3,"padding")]),tP=k([o("accountType"),o("status"),o("nonce"),o("maxOrder"),o("depth"),o("baseDecimal"),o("quoteDecimal"),o("state"),o("resetFlag"),o("minSize"),o("volMaxCutRatio"),o("amountWaveRatio"),o("baseLotSize"),o("quoteLotSize"),o("minPriceMultiplier"),o("maxPriceMultiplier"),o("systemDecimalsValue"),o("abortTradeFactor"),o("priceTickMultiplier"),o("priceTick"),o("minSeparateNumerator"),o("minSeparateDenominator"),o("tradeFeeNumerator"),o("tradeFeeDenominator"),o("pnlNumerator"),o("pnlDenominator"),o("swapFeeNumerator"),o("swapFeeDenominator"),o("baseNeedTakePnl"),o("quoteNeedTakePnl"),o("quoteTotalPnl"),o("baseTotalPnl"),o("poolOpenTime"),o("punishPcAmount"),o("punishCoinAmount"),o("orderbookToInitTime"),D("swapBaseInAmount"),D("swapQuoteOutAmount"),D("swapQuoteInAmount"),D("swapBaseOutAmount"),o("swapQuote2BaseFee"),o("swapBase2QuoteFee"),d("baseVault"),d("quoteVault"),d("baseMint"),d("quoteMint"),d("lpMint"),d("modelDataAccount"),d("openOrders"),d("marketId"),d("marketProgramId"),d("targetOrders"),d("owner"),B(o(),64,"padding")]),fa=k([w("instruction"),o("baseAmountIn"),o("quoteAmountIn"),o("fixedSide"),o("otherAmountMin")]),ya=k([w("instruction"),o("lpAmount"),o("baseAmountMin"),o("quoteAmountMin")]);var ba=k([o("fee")]);var kP=G("Raydium_liquidity_instruction");var ga=5e4,Pa=k([o("x"),o("y"),o("price")]),BP=k([o("accountType"),o("status"),o("multiplier"),o("validDataCount"),B(Pa,ga,"DataElement")]);import{PublicKey as VP}from"@solana/web3.js";import EP from"decimal.js";import{TOKEN_PROGRAM_ID as WP}from"@solana/spl-token";import{PublicKey as CP}from"@solana/web3.js";var OP=G("Raydium_liquidity_serum");import pw from"bn.js";import yw from"decimal.js";import{TOKEN_PROGRAM_ID as fA}from"@solana/spl-token";import{PublicKey as bA}from"@solana/web3.js";import PA from"bn.js";import{SystemProgram as tA,SYSVAR_RENT_PUBKEY as nA,Transaction as oA,TransactionInstruction as iA}from"@solana/web3.js";import{createInitializeAccountInstruction as aA,TOKEN_PROGRAM_ID as sA}from"@solana/spl-token";function Aa(a="accountFlags"){let e=new Dt(a);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var wa=k([W(5),Aa("accountFlags"),d("ownAddress"),o("vaultSignerNonce"),d("baseMint"),d("quoteMint"),d("baseVault"),o("baseDepositsTotal"),o("baseFeesAccrued"),d("quoteVault"),o("quoteDepositsTotal"),o("quoteFeesAccrued"),o("quoteDustThreshold"),d("requestQueue"),d("eventQueue"),d("bids"),d("asks"),o("baseLotSize"),o("quoteLotSize"),o("feeRateBps"),o("referrerRebatesAccrued"),W(7)]);import{PublicKey as Dk}from"@solana/web3.js";import{AccountLayout as qk,NATIVE_MINT as Uk,TOKEN_2022_PROGRAM_ID as Gk,TOKEN_PROGRAM_ID as zk,createAssociatedTokenAccountIdempotentInstruction as Xk}from"@solana/spl-token";import Ew from"bn.js";import Ka from"bn.js";var Bw=new Ka(0);import Lw from"bn.js";import xa from"bn.js";var Se=new xa(1e6);import eT from"bn.js";import nT from"decimal.js";import{PublicKey as ok,TransactionInstruction as ik,Keypair as ak,SystemProgram as sk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as ck,TOKEN_2022_PROGRAM_ID as lk,TOKEN_PROGRAM_ID as mk}from"@solana/spl-token";var Gw=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),zw=Buffer.from("amm_config","utf8"),Xw=Buffer.from("pool","utf8"),Yw=Buffer.from("pool_lp_mint","utf8"),Qw=Buffer.from("pool_vault","utf8"),Zw=Buffer.from("observation","utf8"),Hw=Buffer.from("permission","utf8"),jw=Buffer.from("support_mint","utf8");var $w=Buffer.from("locked_liquidity","utf8");var Pk=G("Raydium_cpmm"),Ak={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133],createPermissionPda:Buffer.from([135,136,2,216,137,169,181,202]),closePermissionPda:Buffer.from([156,84,32,118,69,135,70,123]),initializeWithPermission:Buffer.from([63,55,254,65,49,178,89,121]),collectCreatorFee:Buffer.from([20,22,86,123,198,28,219,132]),collectCreatorFeePermissionless:Buffer.from([202,202,34,83,226,122,145,229])};var La=k([W(8),w("bump"),we("disableCreatePool"),ie("index"),o("tradeFeeRate"),o("protocolFeeRate"),o("fundFeeRate"),o("createPoolFee"),d("protocolOwner"),d("fundOwner"),o("creatorFeeRate"),B(o(),15)]),Xo=k([W(8),d("configId"),d("poolCreator"),d("vaultA"),d("vaultB"),d("mintLp"),d("mintA"),d("mintB"),d("mintProgramA"),d("mintProgramB"),d("observationId"),w("bump"),w("status"),w("lpDecimals"),w("mintDecimalA"),w("mintDecimalB"),o("lpAmount"),o("protocolFeesMintA"),o("protocolFeesMintB"),o("fundFeesMintA"),o("fundFeesMintB"),o("openTime"),o("epoch"),w("feeOn"),we("enableCreatorFee"),B(w(),6),o("creatorFeesMintA"),o("creatorFeesMintB"),B(o(),28)]),Tk=k([W(8),d("configId"),B(o(),30)]);import{PublicKey as YS,SystemProgram as QS}from"@solana/web3.js";import{createTransferInstruction as HS,TOKEN_PROGRAM_ID as jS,TOKEN_2022_PROGRAM_ID as $S,createAssociatedTokenAccountIdempotentInstruction as JS,createSyncNativeInstruction as tK,createTransferCheckedInstruction as nK}from"@solana/spl-token";import Qa from"bn.js";import rK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as dh,TOKEN_2022_PROGRAM_ID as ph,TOKEN_PROGRAM_ID as fh}from"@solana/spl-token";import{SystemProgram as Ph,TransactionInstruction as Ah}from"@solana/web3.js";import _a from"bn.js";var Ma=k([o(),o("epoch"),w("curveType"),ie("index"),o("migrateFee"),o("tradeFeeRate"),o("maxShareFeeRate"),o("minSupplyA"),o("maxLockRate"),o("minSellRateA"),o("minMigrateRateA"),o("minFundRaisingB"),d("mintB"),d("protocolFeeOwner"),d("migrateFeeOwner"),d("migrateToAmmWallet"),d("migrateToCpmmWallet"),B(o(),16)]),Fa=k([o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod"),o("startTime"),o("totalAllocatedShare")]),va=k([o(),o("epoch"),w("bump"),w("status"),w("mintDecimalsA"),w("mintDecimalsB"),w("migrateType"),o("supply"),o("totalSellA"),o("virtualA"),o("virtualB"),o("realA"),o("realB"),o("totalFundRaisingB"),o("protocolFee"),o("platformFee"),o("migrateFee"),Fa.replicate("vestingSchedule"),d("configId"),d("platformId"),d("mintA"),d("mintB"),d("vaultA"),d("vaultB"),d("creator"),w("mintProgramFlag"),w("cpmmCreatorFeeOn"),o("platformVestingShare"),B(w(),54)]),YT=k([o(),o("epoch"),d("poolId"),d("beneficiary"),o("claimedAmount"),o("tokenShareAmount"),B(o(),8)]),Qo=k([w("migrateType"),w("migrateCpmmFeeOn"),o("supply"),o("totalSellA"),o("totalFundRaisingB"),o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod")]),Va=k([o("epoch"),w("index"),d("configId"),Qo.replicate("bondingCurveParam"),B(o(),50)]),Zo=k([o(),o("epoch"),d("platformClaimFeeWallet"),d("platformLockNftWallet"),o("platformScale"),o("creatorScale"),o("burnScale"),o("feeRate"),B(w(),64,"name"),B(w(),256,"web"),B(w(),256,"img"),d("cpConfigId"),o("creatorFeeRate"),d("transferFeeExtensionAuth"),d("platformVestingWallet"),o("platformVestingScale"),d("platformCpCreator"),w("restrictGlobalConfig"),B(w(),107),Hn(Va,"platformCurve")]);var $T=Buffer.from("vault_auth_seed","utf8"),JT=Buffer.from("global_config","utf8"),eh=Buffer.from("pool_vesting","utf8"),th=Buffer.from("platform_config","utf8"),nh=Buffer.from("platform_fee_vault_auth_seed","utf8"),oh=Buffer.from("creator_fee_vault_auth_seed","utf8"),ih=Buffer.from("platform_global_access","utf8"),rh=Buffer.from("platform_allow_config","utf8");var hh={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215])};var Ih=new _a("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as xh,TOKEN_PROGRAM_ID as Ch}from"@solana/spl-token";import Nh from"bn.js";import Fh from"decimal.js";import pI from"bn.js";import yI from"decimal.js";import Wh from"bn.js";import Uh from"decimal.js";import Jh from"bn.js";import tI from"decimal.js";import $o from"bn.js";import Fn from"decimal.js";var an=class{static _multipler(e){return new Fn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new Fn(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(n))}static getPriceX64({price:e,decimalA:t,decimalB:n}){let i=e.mul(this._multipler(n)).div(this._multipler(t));return new $o(i.mul(this._Q64).toFixed(0))}};an._Q64=new Fn(new $o(1).shln(64).toString());import{NATIVE_MINT as hB,TOKEN_2022_PROGRAM_ID as IB,TOKEN_PROGRAM_ID as BB,createAssociatedTokenAccountIdempotentInstruction as KB,createSyncNativeInstruction as xB,getTransferFeeConfig as CB,unpackMint as RB}from"@solana/spl-token";import ue from"bn.js";import{PublicKey as za,SystemProgram as NB}from"@solana/web3.js";import DB from"decimal.js";var WB={initPriceX64:new ue("515752397214619"),supply:new ue(1e15),totalSellA:new ue(7931e11),totalFundRaisingB:new ue(85e9),totalFundRaisingBUSD:new ue(125e8),totalLockedAmount:new ue("0"),cliffPeriod:new ue("0"),unlockPeriod:new ue("0"),decimals:6,virtualA:new ue("1073471847374405"),virtualB:new ue("30050573465"),realA:new ue(0),realB:new ue(0),protocolFee:new ue(0),platformId:new za("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ue(0),cliffPeriod:new ue(0),unlockPeriod:new ue(0),startTime:new ue(0),totalAllocatedShare:new ue(0)}},qB=new ue(1e4);var Xa={[Lo.toBase58()]:3};var Ya=k([W(5),W(8),d("ownAddress"),o("vaultSignerNonce"),d("baseMint"),d("quoteMint"),d("baseVault"),o("baseDepositsTotal"),o("baseFeesAccrued"),d("quoteVault"),o("quoteDepositsTotal"),o("quoteFeesAccrued"),o("quoteDustThreshold"),d("requestQueue"),d("eventQueue"),d("bids"),d("asks"),o("baseLotSize"),o("quoteLotSize"),o("feeRateBps"),o("referrerRebatesAccrued"),W(7)]);import{PublicKey as mS}from"@solana/web3.js";var bS=G("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as BS,TOKEN_2022_PROGRAM_ID as SS,TOKEN_PROGRAM_ID as KS}from"@solana/spl-token";import{PublicKey as CS,SystemProgram as RS,TransactionInstruction as LS}from"@solana/web3.js";import NS from"bn.js";var FK=new Qa(0);import{PublicKey as Za,Transaction as vn,TransactionInstruction as Ha}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ja}from"@solana/spl-token";import Jo from"bn.js";var fe=class extends ge{static getPdaPoolId(e,t){return Be([fe.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return Be([fe.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Jo(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:r}){if(n.length===0)return[];let s=n.map(m=>fe.getPdaPoolId(t,m).publicKey),u=[];for(let m=0;m<fe.VERSION_PROJECT.length;m++)u.push(...s.map(p=>fe.getPdaOwnerId(t,p,i,m).publicKey));let c=await he(e,[...s,...u]),l=[];for(let m=0;m<c.length;m++){let p=Math.floor(m/n.length),P=m%n.length,g=s[P],h=u[m],A=c[P],T=c[n.length+m];if(!(A&&T)||A.data.length!==fe.POOL_LAYOUT.span||T.data.length!==fe.OWNER_LAYOUT.span)continue;let S=fe.POOL_LAYOUT.decode(A.data),K=fe.OWNER_LAYOUT.decode(T.data),M=S.openTime.toNumber(),F=S.endTime.toNumber(),b=K.tokenInfo.map(O=>O.debtAmount.gt(new Jo(0))).filter(O=>!O).length!==3,I=r>M&&r<F&&S.status===1,x=b&&I;l.push({programId:t,poolId:g,ammId:S.ammId,ownerAccountId:h,snapshotLpAmount:K.lpAmount,project:fe.VERSION_PROJECT[p],openTime:M,endTime:F,canClaim:x,canClaimErrorType:b?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:S.tokenInfo.map((O,R)=>({mintAddress:O.mintAddress,mintVault:O.mintVault,mintDecimals:O.mintDecimals,perLpLoss:O.perLpLoss,debtAmount:K.tokenInfo[R].debtAmount.add(K.tokenInfo[R].claimedAmount)}))})}return l}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:n}){t.wallet||this.scope.checkOwner();let i=this.createTxBuilder(n),r=t.wallet||this.scope.ownerPubKey,s=[];for(let l of e.tokenInfo){let{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:l.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:l.mintAddress.equals(le.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!l.mintAddress.equals(le.WSOL.mint),associatedOnly:l.mintAddress.equals(le.WSOL.mint)?!1:t.associatedOnly});p&&i.addInstruction(p),s.push(m)}i.addInstruction({instructions:[fe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,ownerPda:e.ownerAccountId,claimAddress:s}})]});let{transaction:u,signers:c}=i.build();return[{transaction:u,signer:c}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:n}){let i=this.createTxBuilder(n),r=t.wallet||this.scope.ownerPubKey,s={};for(let m of e){let p=[];for(let P of m.tokenInfo){let{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:P.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:P.mintAddress.equals(le.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!P.mintAddress.equals(le.WSOL.mint),associatedOnly:P.mintAddress.equals(le.WSOL.mint)?!1:t.associatedOnly});h&&i.addInstruction(h),g&&(s[P.mintAddress.toString()]=g,p.push(g))}i.addInstruction({instructions:[fe.makeClaimInstruction({programId:m.programId,poolInfo:m,ownerInfo:{wallet:r,ownerPda:m.ownerAccountId,claimAddress:p}})]})}let{transaction:u,signers:c}=i.build(),l=i.allInstructions;return Sn(l,[r,...c.map(m=>m.publicKey)])?[{transaction:u,signer:c}]:[{transaction:new vn().add(...l.slice(0,i.AllTxData.instructions.length-1)),signer:c},{transaction:new vn().add(...l.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new vn().add(...i.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=k([]),r=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:c})=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:ja,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let u=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new Ha({keys:r,programId:e,data:u})}},Le=fe;Le.CLAIMED_NUM=3,Le.POOL_LAYOUT=k([W(8),w("bump"),w("status"),o("openTime"),o("endTime"),d("ammId"),B(k([w("mintDecimals"),d("mintAddress"),d("mintVault"),o("perLpLoss"),o("totalClaimedAmount")]),fe.CLAIMED_NUM,"tokenInfo"),B(o(),10,"padding")]),Le.OWNER_LAYOUT=k([W(8),w("bump"),w("version"),d("poolId"),d("owner"),o("lpAmount"),B(k([d("mintAddress"),o("debtAmount"),o("claimedAmount")]),fe.CLAIMED_NUM,"tokenInfo"),B(o(),4,"padding")]),Le.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Za(e)),Le.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},Le.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as $K}from"@solana/web3.js";import{getTransferFeeConfig as ex,MintLayout as tx,TOKEN_2022_PROGRAM_ID as nx,TOKEN_PROGRAM_ID as ox,unpackMint as ix}from"@solana/spl-token";var OC=new et(2),NC=new et(3),MC=new et(5),yn=new et(10),FC=new et(100),vC=new et(1e3),VC=new et(1e4);function kn(a){return yn.pow(re(a))}function pn(a,e=1,t=[]){let n=[...a];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import ce from"bn.js";import ft from"decimal.js";var Qe=class{static scanLinearBitmap({bitmap:e,tickSpacing:t,offset:n,checkInfo:i}){let r=[],s=e.length*8,u=0,c=s-1;if(i){let p=i.tick/(t*be)-n;i.valueType==="gte"?u=Math.max(0,Math.ceil(p)):c=Math.min(s-1,Math.floor(p))}if(u>c)return r;let l=Math.floor(u/8),m=Math.floor(c/8);for(let p=l;p<=m;p++){if(!e[p])continue;let P=p===l?u%8:0,g=p===m?c%8:7;for(let h=P;h<=g;h++)e[p]&1<<h&&r.push((p*8+h+n)*t*be)}return r}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let i=Math.floor(n.tick/be/t);if(n.valueType==="lte"&&i<-512)return[];if(n.valueType==="gte"&&i>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:-Wt,checkInfo:n})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let i=Math.floor(n.tick/be/t);if(n.valueType==="lte"&&i<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:Wt,checkInfo:n})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:t,count:n,checkInfo:i}){let r=[];if(i){let c=Math.floor(i.tick/be/t);if(i.valueType==="gte"&&c>=-512)return r}let s=(i==null?void 0:i.valueType)==="lte"?Math.floor(i.tick/(be*t))+7680:1/0,u=(i==null?void 0:i.valueType)==="gte"?Math.ceil(i.tick/(be*t))+7680:0;e:for(let c=0;c<it;c++){let l=it-1-c;for(let m=0;m<512;m++){let p=c*512+m;if(p>s)break e;if(p<u)continue;let P=l*64+Math.floor(m/8);if(!e[P]){m=Math.floor(m/8)*8+7;continue}if(e[P]&1<<m%8){let g=(c*512+m-7680)*be*t;if(r.push(g),n!==void 0&&r.length>=n)break e}}}return r}static findTickArrayStartIndex({tickSpacing:e,poolBitmap:t,tickArrayBitmap:n,findInfo:i}){if(i.type==="all")return[...this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap}),...this.findPoolBitmap({tickSpacing:e,bitmap:t}),...this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap})];let r=se.getTickArrayStartIndex(i.tickArrayCurrent,e),{count:s}=i;if(i.type==="oneForZero"){let u={tick:r,valueType:"gte"},c=[()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:u}),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:u}),()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:u})];return this.collectUntil(c,s)}if(i.type==="zeroForOne"){let u={tick:r,valueType:"lte"},c=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:u}).sort((l,m)=>m-l),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:u}).sort((l,m)=>m-l),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:u}).sort((l,m)=>m-l)];return this.collectUntil(c,s)}throw new Error("find info type check error")}static collectUntil(e,t){let n=[];for(let i of e){if(t!==void 0&&n.length>=t)break;n.push(...i())}return n.slice(0,t)}static findTickArrayAddress(e){return this.findTickArrayStartIndex(e).map(t=>Xe(e.programId,e.poolId,t).publicKey)}static maxTickInTickarrayBitmap(e){return e*be*Wt}},se=class{static firstinitializedTick({data:e,zeroForOne:t}){if(t){for(let n=e.ticks.length-1;n>=0;n--)if(_.isInitialized({data:e.ticks[n]}))return e.ticks[n]}else for(let n=0;n<e.ticks.length;n++)if(_.isInitialized({data:e.ticks[n]}))return e.ticks[n]}static nextInitalizedTick({data:e,currentTickIndex:t,tickSpacing:n,zeroForOne:i}){if(this.getTickArrayStartIndex(t,n)!==e.startTickIndex)return;let s=Math.floor((t-e.startTickIndex)/n);if(i){for(let u=s;u>=0;u--)if(_.isInitialized({data:e.ticks[u]}))return e.ticks[u]}else for(let u=s+1;u<be;u++)if(_.isInitialized({data:e.ticks[u]}))return e.ticks[u]}static getTickArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=this.getTickArrayStartIndex(e,t);return Math.floor((e-n)/t)}static tickCount(e){return be*e}static getMinTick(e){return Math.ceil(ke/e)*e}static getMaxTick(e){return Math.floor(Te/e)*e}},_=class{static isInitialized({data:e}){return this.hasLiquidity({data:e})||this.hasLimitOrders({data:e})}static hasLimitOrders({data:e}){return!e.ordersAmount.isZero()||!e.partFilledOrdersRemaining.isZero()}static hasLiquidity({data:e}){return!e.liquidityGross.isZero()}static isValidTick(e){return e>=ke&&e<=Te}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${ke}, ${Te}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),n=H.clone();for(let{bit:i,factor:r}of to)(t&1<<i)!==0&&(n=ee(n,r,H));return e>0&&(n=ee(H,H,n)),n}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:n}){if(n){let i=_.getPriceAtTick(t,!1);return ee(e,i,H)}else{let i=_.getPriceAtTick(t,!0);return ee(e,H,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:n}){if(n){let i=_.getPriceAtTick(t,!0);return j(e,i,H)}else{let i=_.getPriceAtTick(t,!1);return j(e,H,i)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:n,isBaseInput:i,feeRate:r,isFeeOnInput:s}){let u={amountIn:C,amountOut:C,ammFeeAmount:C},c=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||c.isZero())return u;if(i)s?(u.ammFeeAmount=j(t,new ce(r),Se),u.amountIn=t.sub(u.ammFeeAmount)):u.amountIn=t,u.amountOut=this.getLimitOrderOutput({amountIn:u.amountIn,tick:e.tick,zeroForOne:n}),u.amountOut.gt(c)&&(u.amountOut=c,u.amountIn=this.getLimitOrderInput({amountOut:c,tick:e.tick,zeroForOne:!n}),s&&(u.ammFeeAmount=j(u.amountIn,new ce(r),Se.sub(new ce(r)))));else{let p=ce.min(t,c);s?u.amountOut=p:u.amountOut=ce.min(j(p,Se,Se.sub(new ce(r))),c),u.amountIn=this.getLimitOrderInput({amountOut:u.amountOut,tick:e.tick,zeroForOne:!n}),s&&(u.ammFeeAmount=j(u.amountIn,new ce(r),Se.sub(new ce(r))))}let l=C;e.partFilledOrdersRemaining.gt(C)&&(l=ce.min(e.partFilledOrdersRemaining,u.amountOut),l.gt(C)&&(e.unfilledRatioX64=ee(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(l),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(l));let m=u.amountOut.sub(l);if(m.gt(C)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(m))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(Me),e.unfilledRatioX64=ee(H,e.ordersAmount.sub(m),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(m),e.ordersAmount=C}return s||(u.ammFeeAmount=j(u.amountOut,new ce(r),Se),u.amountOut=u.amountOut.sub(u.ammFeeAmount)),u}static getPriceAtTick(e,t){let n=this.getSqrtPriceAtTick(e);return t?n.mul(n).add(H.subn(1)).div(H):n.mul(n).div(H)}static getTickAtSqrtPrice(e){if(!(e.gte(Oe)&&e.lte(Ne)))throw Error("SqrtPriceX64");let t=co(e),n=t-64,i;n>=0?i=new ce(n).shln(32):i=new ce(-n).shln(32).neg();let r;t>=64?r=e.shrn(t-63):r=e.shln(63-t);let s=new ce(0),u=new ce(1).shln(63);for(let T=0;T<eo&&!u.isZero();T++){r=r.mul(r);let S=r.shrn(127).toNumber();r=r.shrn(63+S),S&&(s=s.add(u)),u=u.shrn(1)}let c=s.shrn(32),m=i.add(c).mul(jn),p=m.sub($n),P=m.add(Jn),g=this.signedShrn64(p),h=this.signedShrn64(P);return g===h?g:_.getSqrtPriceAtTick(h).lte(e)?h:g}static signedShrn64(e){if(e.isNeg()){let t=new ce(1).shln(64),n=e.div(t);return!e.mod(t).isZero()&&e.isNeg()?n.subn(1).toNumber():n.toNumber()}else return e.shrn(64).toNumber()}static sqrtPriceX64ToPrice(e,t,n){let i=e.mul(e),r=t-n,s=20,u=new ce(10).pow(new ce(s)),c=i.mul(u),l=new ce(1).shln(128),p=c.div(l).toString();for(;p.length<=s;)p="0"+p;let P=p.slice(0,-s),g=p.slice(-s),h=P+"."+g;return new ft(h).mul(new ft(10).pow(r))}static tickToPrice(e,t,n){let i=_.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(i,t,n)}static priceToTick(e,t,n){let r=e.div(Math.pow(10,t-n)).log().div(new ft(1.0001).log()).floor();return Math.max(ke,Math.min(Te,r.toNumber()))}static priceToSqrtPriceX64(e,t,n){let s=e.div(Math.pow(10,t-n)).sqrt().mul(new ft(2).pow(64));return new ce(s.toFixed(0))}static toTickIndex(e,t){return e>=0?e-e%t:e-e%t-(e%t!==0?t:0)}static getPriceAndTick({price:e,mintADecimals:t,mintBDecimals:n,zeroForOne:i,tickSpacing:r}){let s=e.clamp(1/10**Math.max(t,n),Number.MAX_SAFE_INTEGER);i||(s=new ft(1).div(s));let u=_.toTickIndex(_.priceToTick(s,t,n),r),c=_.tickToPrice(u,t,n);return{price:i?c:new ft(1).div(c),tick:u}}};import{TOKEN_2022_PROGRAM_ID as ei,TOKEN_PROGRAM_ID as $a}from"@solana/spl-token";import z from"decimal.js";var Lt=class{static tickSpacingIndexFromTick(e,t){return Math.floor(e/t)}},dt=class{static getDynamicFeeInfo({poolInfo:e}){if(!(e.dynamicFeeInfo.filterPeriod===0&&e.dynamicFeeInfo.decayPeriod===0&&e.dynamicFeeInfo.reductionFactor===0&&e.dynamicFeeInfo.dynamicFeeControl===0&&e.dynamicFeeInfo.maxVolatilityAccumulator===0&&e.dynamicFeeInfo.tickSpacingIndexReference===0&&e.dynamicFeeInfo.volatilityReference===0&&e.dynamicFeeInfo.volatilityAccumulator===0&&e.dynamicFeeInfo.lastUpdateTimestamp.isZero()))return e.dynamicFeeInfo}static updateReference({dynamicFeeInfo:e,tickSpacingIndex:t,currentTimestamp:n}){let i=n-e.lastUpdateTimestamp.toNumber();i<e.filterPeriod||(i<e.decayPeriod?(e.tickSpacingIndexReference=t,e.volatilityReference=Math.floor(e.volatilityAccumulator*e.reductionFactor/no),e.lastUpdateTimestamp=new pe(n)):(e.tickSpacingIndexReference=t,e.volatilityReference=0,e.lastUpdateTimestamp=new pe(n)))}static updateVolatilityAccumulator({state:e,tickSpacingIndex:t}){let n=Math.abs(e.tickSpacingIndexReference-t),i=e.volatilityReference+n*gt;e.volatilityAccumulator=Math.min(i,e.maxVolatilityAccumulator)}},Ot=class{static isFeeOnInput(e,t){switch(e){case 0:return!0;case 1:return t;case 2:return!t;default:return!0}}static isFeeOnTokenA(e,t){return e.feeOn===0?t:e.feeOn===1}static isOverflowDefaultTickarrayBitmap({tickSpacing:e,tickIndexs:t}){let{maxTickBoundary:n,minTickBoundary:i}=this.tickArrayStartIndexRange({tickSpacing:e});for(let r of t){let s=se.getTickArrayStartIndex(r,e);if(s>=n||s<i)return!0}return!1}static tickArrayStartIndexRange({tickSpacing:e}){let t=Qe.maxTickInTickarrayBitmap(e),n=-t;return t>Te&&(t=se.getTickArrayStartIndex(Te,e)+se.tickCount(e)),n<ke&&(n=se.getTickArrayStartIndex(ke,e)),{maxTickBoundary:t,minTickBoundary:n}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:r}){var u,c,l;let s=[];for(let m=0;m<r.length;m++){let p=r[m],P=(l=(u=t.rewardDefaultInfos[m])==null?void 0:u.mint.programId)!=null?l:(c=await e.getAccountInfo(p.mint))==null?void 0:c.owner;if(P===void 0)throw Error("get new reward mint info error");let g=E(L({},p),{perSecond:lo(p.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new ye(P)});if(g.mint.equals(ye.default)||g.totalEmissioned.eq(De))continue;if(n<=g.openTime.toNumber()||i.eq(C)){s.push(g);continue}let h=new pe(Math.min(g.endTime.toNumber(),n)),A=h.sub(g.lastUpdateTime);if(A.isZero()){s.push(g);continue}let T=j(A,g.emissionsPerSecondX64,H),S=ee(A,g.emissionsPerSecondX64,i),K,M=g.totalEmissioned.add(T);if(M.lte(De))K=M;else{let b=De.sub(g.totalEmissioned);K=De,S=ee(b,H,i)}let F=g.growthGlobalX64.add(S);s.push(E(L({},g),{growthGlobalX64:F,totalEmissioned:K,lastUpdateTime:h}))}return s}},_e=class{static getOutputAmountAndRemainAccounts(e,t,n,i,r,s,u){let c=i.toBase58()===e.mintA.address,l=se.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:m,amountCalculated:p,feeAmount:P,sqrtPriceX64:g,accounts:h}=Ln({programId:e.programId,poolId:e.id,poolInfo:e.accInfo,tickArrays:Object.entries(n).map(A=>({address:A[1].address,value:A[1]})).filter(A=>c?A.value.startTickIndex<=l:A.value.startTickIndex>=l).sort((A,T)=>c?T.value.startTickIndex-A.value.startTickIndex:A.value.startTickIndex-T.value.startTickIndex),configInfo:e.ammConfig,tickarrayBitmapExtension:t,amountSpecified:r,sqrtPriceLimitX64:u!=null?u:C,zeroForOne:c,isBaseInput:!0,blockTimestamp:s,includeExtraTickArrays:!0});return{allTrade:m,expectedAmountOut:p,remainingAccounts:h,executionPrice:g,feeAmount:P}}static getInputAmountAndRemainAccounts(e,t,n,i,r,s,u){let c=i.toBase58()===e.mintB.address,l=se.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:m,amountCalculated:p,feeAmount:P,sqrtPriceX64:g,accounts:h}=Ln({programId:e.programId,poolId:e.id,poolInfo:e.accInfo,tickArrays:Object.entries(n).map(A=>({address:new ye(A[0]),value:A[1]})).filter(A=>c?A.value.startTickIndex<=l:A.value.startTickIndex>=l).sort((A,T)=>c?T.value.startTickIndex-A.value.startTickIndex:A.value.startTickIndex-T.value.startTickIndex),configInfo:e.ammConfig,tickarrayBitmapExtension:t,amountSpecified:r,sqrtPriceLimitX64:u!=null?u:C,zeroForOne:c,isBaseInput:!1,blockTimestamp:s,includeExtraTickArrays:!0});return{allTrade:m,expectedAmountIn:p,remainingAccounts:h,executionPrice:g,feeAmount:P}}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await qe(e,t.map(s=>({pubkey:s})),{batchRequest:n}),r={};for(let s of i)s.accountInfo!==null&&(r[s.pubkey.toString()]=ln.decode(s.accountInfo.data));return r}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},r=[];for(let c of t){let l=[...Qe.findTickArrayStartIndex({tickSpacing:c.tickSpacing,poolBitmap:c.tickArrayBitmap,tickArrayBitmap:c.exBitmapInfo,findInfo:{type:"zeroForOne",count:7,tickArrayCurrent:c.tickCurrent}}),...Qe.findTickArrayStartIndex({tickSpacing:c.tickSpacing,poolBitmap:c.tickArrayBitmap,tickArrayBitmap:c.exBitmapInfo,findInfo:{type:"oneForZero",count:7,tickArrayCurrent:c.tickCurrent}})];for(let m of l){let{publicKey:p}=Xe(c.programId,c.id,m);i[p.toString()]===void 0&&(r.push({pubkey:p}),i[p.toString()]=c.id)}}let s=await qe(e,r,{batchRequest:n}),u={};for(let c of s){if(!c.accountInfo)continue;let l=i[c.pubkey.toString()];if(!l)continue;u[l.toString()]===void 0&&(u[l.toString()]={});let m=At.decode(c.accountInfo.data);u[l.toString()][m.startTickIndex]=E(L({},m),{address:c.pubkey})}return u}static computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:i,epochInfo:r,amountIn:s,slippage:u,blockTimestamp:c,priceLimit:l=new z(0)}){var N;let m,p=i.toBase58()===e.mintA.address,[P,g]=p?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];l.equals(new z(0))?m=p?Oe.add(new pe(1)):Ne.sub(new pe(1)):m=_.priceToSqrtPriceX64(l,e.mintA.decimals,e.mintB.decimals);let h=Pe(s,P,r,!1),{allTrade:A,expectedAmountOut:T,remainingAccounts:S,executionPrice:K,feeAmount:M}=_e.getOutputAmountAndRemainAccounts(e,t,n,i,h.amount.sub((N=h.fee)!=null?N:C),c,m),F=Pe(T,g,r,!1),b=_.sqrtPriceX64ToPrice(K,e.mintA.decimals,e.mintB.decimals),I=p?b:new z(1).div(b),x=T.mul(new pe(Math.floor((1-u)*1e10))).div(new pe(1e10)),O=Pe(x,g,r,!1),R=p?e.currentPrice:new z(1).div(e.currentPrice),V=new z(I).sub(R).abs(),Z=R,U=new ve(new z(V).mul(10**15).toFixed(0),new z(Z).mul(10**15).toFixed(0));return{allTrade:A,realAmountIn:h,amountOut:F,minAmountOut:O,expirationTime:Ft(h.expirationTime,F.expirationTime),currentPrice:e.currentPrice,executionPrice:I,priceImpact:U,fee:M,remainingAccounts:S,executionPriceX64:K}}static computeAmountOutFormat({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,amountIn:i,tokenOut:r,slippage:s,epochInfo:u,blockTimestamp:c,catchLiquidityInsufficient:l=!1}){let m=r.address===e.mintB.address,[p,P]=m?[e.mintA,e.mintB]:[e.mintB,e.mintA],[g,h]=[new le(E(L({},p),{mint:p.address,isToken2022:p.programId===ei.toBase58()})),new le(E(L({},P),{mint:P.address,isToken2022:P.programId===ei.toBase58()}))],{allTrade:A,realAmountIn:T,amountOut:S,minAmountOut:K,expirationTime:M,currentPrice:F,executionPrice:b,priceImpact:I,fee:x,remainingAccounts:O,executionPriceX64:R}=_e.computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:new ye(p.address),amountIn:i,slippage:s,epochInfo:u,catchLiquidityInsufficient:l,blockTimestamp:c}),V=E(L({},T),{amount:new ae(g,T.amount),fee:T.fee===void 0?void 0:new ae(g,T.fee)}),Z=E(L({},S),{amount:new ae(h,S.amount),fee:S.fee===void 0?void 0:new ae(h,S.fee)}),U=E(L({},K),{amount:new ae(h,K.amount),fee:K.fee===void 0?void 0:new ae(h,K.fee)}),N=new Ie({baseToken:g,denominator:new pe(10).pow(new pe(20+g.decimals)),quoteToken:h,numerator:F.mul(new z(10**(20+h.decimals))).toFixed(0)}),Q=new Ie({baseToken:g,denominator:new pe(10).pow(new pe(20+g.decimals)),quoteToken:h,numerator:b.mul(new z(10**(20+h.decimals))).toFixed(0)}),q=new ae(g,x);return{allTrade:A,realAmountIn:V,amountOut:Z,minAmountOut:U,expirationTime:M,currentPrice:N,executionPrice:Q,priceImpact:I,fee:q,remainingAccounts:O,executionPriceX64:R}}static computeAmountIn({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:i,epochInfo:r,amountOut:s,slippage:u,priceLimit:c=new z(0),blockTimestamp:l}){var N;let m=i.toBase58()===e.mintA.address,p={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},P;c.equals(new z(0))?P=m?Ne.sub(new pe(1)):Oe.add(new pe(1)):P=_.priceToSqrtPriceX64(c,e.mintA.decimals,e.mintB.decimals);let g=Pe(s,p[i.toString()],r,!0),{allTrade:h,expectedAmountIn:A,remainingAccounts:T,executionPrice:S,feeAmount:K}=_e.getInputAmountAndRemainAccounts(e,t,n,i,g.amount.sub((N=g.fee)!=null?N:C),l,P),M=m?e.mintB.address:e.mintA.address,F=Pe(A,p[M],r,!1),b=_.sqrtPriceX64ToPrice(S,e.mintA.decimals,e.mintB.decimals),I=m?b:new z(1).div(b),x=A.mul(new pe(Math.floor((1+u)*1e10))).div(new pe(1e10)),O=Pe(x,p[M],r,!0),R=m?e.currentPrice:new z(1).div(e.currentPrice),V=new z(I).sub(R).abs(),Z=R,U=new ve(new z(V).mul(10**15).toFixed(0),new z(Z).mul(10**15).toFixed(0));return{allTrade:h,amountIn:F,maxAmountIn:O,realAmountOut:g,expirationTime:Ft(F.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:I,priceImpact:U,fee:K,remainingAccounts:T}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var h,A,T;let r=e[t],s=_.tickToPrice(n,e.mintA.decimals,e.mintB.decimals).toNumber(),u=_.tickToPrice(i,e.mintA.decimals,e.mintB.decimals).toNumber(),c=Math.max(s,r.priceMin),m=Math.min(u,r.priceMax)-c,p=u-s,P=r.priceMax-r.priceMin,g;return m<=0?g=0:p===m?g=P/m:P===m?g=m/p:g=m/P*(m/p),{feeApr:r.feeApr*g,rewardsApr:[((h=r.rewardApr[0])!=null?h:0)*g,((A=r.rewardApr[1])!=null?A:0)*g,((T=r.rewardApr[2])!=null?T:0)*g],apr:r.apr*g}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:r,positionTickLowerIndex:s,positionTickUpperIndex:u,chainTime:c}){let l=n==="day"?1:n==="week"?7:n==="month"?30:0,m=e[n],p=i[Ge(e.mintA.address).toString()],P=i[Ge(e.mintB.address).toString()],g=e.mintA.decimals,h=e.mintB.decimals;if(!m||!p||!P)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let A=_.priceToSqrtPriceX64(new z(e.price),e.mintA.decimals,e.mintB.decimals),T=_.getSqrtPriceAtTick(s),S=_.getSqrtPriceAtTick(u),{amountSlippageA:K,amountSlippageB:M}=te.getAmountsFromLiquidityWithSlippage(A,T,S,t,!1,!1,0),{amountSlippageA:F,amountSlippageB:b}=te.getAmountsFromLiquidityWithSlippage(A,T,S,r,!1,!1,0),I=new z(K.toString()).div(new z(10).pow(g)).mul(p.value).add(new z(M.toString()).div(new z(10).pow(h)).mul(P.value)),x=new z(F.toString()).div(new z(10).pow(g)).mul(p.value).add(new z(b.toString()).div(new z(10).pow(h)).mul(P.value)),O=new z(1).div(I.add(x)),V=new z(m.volumeFee).mul(365).div(l).mul(O).mul(100).toNumber(),Z=3600*24*365,U=e.rewardDefaultInfos.map(N=>{var ne,Ae;let Q=N.mint.decimals,q=i[N.mint.address];return c<((ne=N.startTime)!=null?ne:0)||c>((Ae=N.endTime)!=null?Ae:0)||!N.perSecond||!q||Q===void 0?0:new z(q.value).mul(new z(N.perSecond).mul(Z)).div(new z(10).pow(Q)).mul(O).mul(100).toNumber()});return{feeApr:V,rewardsApr:U,apr:V+U.reduce((N,Q)=>N+Q,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:r,slippage:s,add:u,epochInfo:c,amountHasFee:l}){var S,K;let m=_.priceToSqrtPriceX64(new z(e.price),e.mintA.decimals,e.mintB.decimals),p=_.getSqrtPriceAtTick(n),P=_.getSqrtPriceAtTick(i),g=Pe(r,(S=e[t?"mintA":"mintB"].extensions)==null?void 0:S.feeConfig,c,!l),h=new pe(new z(g.amount.sub((K=g.fee)!=null?K:C).toString()).toFixed(0)),A;if(m.lte(p))A=t?te.getLiquidityFromAmountA(p,P,h):new pe(0);else if(m.lte(P)){let M=te.getLiquidityFromAmountA(m,P,h),F=te.getLiquidityFromAmountB(p,m,h);A=t?M:F}else A=t?new pe(0):te.getLiquidityFromAmountB(p,P,h);let T=await _e.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:i,liquidity:A,slippage:s,add:u});return{liquidity:A,amountA:t?g:T.amountA,amountB:t?T.amountB:g,amountSlippageA:t?g:T.amountSlippageA,amountSlippageB:t?T.amountSlippageB:g,expirationTime:T.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:r,slippage:s,add:u}){var T,S,K,M;let c=_.getSqrtPriceAtTick(n),l=_.getSqrtPriceAtTick(i),m=u?1+s:1-s,p=te.getAmountsForLiquidity(_.priceToSqrtPriceX64(new z(t.price),t.mintA.decimals,t.mintB.decimals),c,l,r,u),[P,g]=[Pe(p.amountA,(T=t.mintA.extensions)==null?void 0:T.feeConfig,e,!0),Pe(p.amountB,(S=t.mintB.extensions)==null?void 0:S.feeConfig,e,!0)],[h,A]=[Pe(p.amountA.muln(m),(K=t.mintA.extensions)==null?void 0:K.feeConfig,e,!0),Pe(p.amountB.muln(m),(M=t.mintB.extensions)==null?void 0:M.feeConfig,e,!0)];return{liquidity:r,amountA:P,amountB:g,amountSlippageA:h,amountSlippageB:A,expirationTime:Ft(P.expirationTime,g.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(l=>!n[l.id]).map(l=>new ye(l.id));(await he(e,i)).forEach((l,m)=>{!l||(n[i[m].toBase58()]=Ut.decode(l.data))});let s=t.map(l=>Ye(new ye(l.programId),new ye(l.id)).publicKey),u=await _e.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1}),c={};return t.reduce((l,m)=>E(L({},l),{[m.id]:E(L({accInfo:n[m.id]},n[m.id]),{id:new ye(m.id),version:6,programId:new ye(m.programId),mintA:m.mintA,mintB:m.mintB,ammConfig:E(L({},m.config),{id:new ye(m.config.id),fundOwner:""}),currentPrice:new z(m.price),exBitmapAccount:Ye(new ye(m.programId),new ye(m.id)).publicKey,exBitmapInfo:u[Ye(new ye(m.programId),new ye(m.id)).publicKey.toBase58()],startTime:n[m.id].startTime.toNumber(),rewardInfos:n[m.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]}static async fetchTickArrayInfo({connection:e,programId:t,poolId:n,tick:i,tickSpacing:r}){let s=se.getTickArrayStartIndex(i,r),u=Xe(t,n,s).publicKey,c=await e.getAccountInfo(u);if(!c)throw new Error(`tick array ${u.toBase58()} not found`);return At.decode(c.data)}static async fetchMultipleTickArrayInfo({connection:e,tickInfoList:t}){let n=t.map(r=>{let s=se.getTickArrayStartIndex(r.tick,r.tickSpacing);return Xe(r.programId,r.poolId,s).publicKey});return(await he(e,n)).map(r=>r&&At.decode(r.data))}},Vn={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function Or(a,e){let t=e!=null?e:{};return E(L({},a),{type:"Concentrated",programId:a.programId.toString(),id:a.id.toString(),rewardDefaultInfos:a.rewardInfos.filter(n=>!n.mint.equals(ye.default)).map(n=>{var i,r;return{mint:mt({address:n.mint.toBase58(),programId:$a.toBase58(),decimals:(i=t[n.mint.toBase58()].decimals)!=null?i:6}),perSecond:Number(n.emissionsPerSecondX64.divn(10**((r=t[n.mint.toBase58()].decimals)!=null?r:6)).toString()),startTime:n.openTime.toNumber(),endTime:n.endTime.toNumber()}}),rewardDefaultPoolInfos:"Clmm",price:a.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:a.ammConfig.tradeFeeRate,openTime:a.startTime.toString(),tvl:0,day:Vn,week:Vn,month:Vn,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,burnPercent:0,config:E(L({},a.ammConfig),{id:a.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),hasDynamicFee:!1,feeOn:"",launchMigratePool:!1,tips:[]})}export{dt as DynamicFeeInfo,Lt as PoolFee,Ot as PoolUtil,_e as PoolUtils,Or as clmmComputeInfoToApiInfo};
//# sourceMappingURL=pool.mjs.map