@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 115 kB
JavaScript
var ti=Object.defineProperty,ni=Object.defineProperties;var oi=Object.getOwnPropertyDescriptors;var _t=Object.getOwnPropertySymbols;var Wn=Object.prototype.hasOwnProperty,qn=Object.prototype.propertyIsEnumerable;var Dn=(a,e,t)=>e in a?ti(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,C=(a,e)=>{for(var t in e||(e={}))Wn.call(e,t)&&Dn(a,t,e[t]);if(_t)for(var t of _t(e))qn.call(e,t)&&Dn(a,t,e[t]);return a},V=(a,e)=>ni(a,oi(e));var Ke=(a,e)=>{var t={};for(var n in a)Wn.call(a,n)&&e.indexOf(n)<0&&(t[n]=a[n]);if(a!=null&&_t)for(var n of _t(a))e.indexOf(n)<0&&qn.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 yi}from"@solana/web3.js";import Yn,{isBN as Hn}from"bn.js";import{bits as ii,BitStructure as is,blob as ri,Blob as rs,cstr as as,f32 as ss,f32be as us,f64 as cs,f64be as ls,greedy as ms,Layout as ai,ns64 as ds,ns64be as ps,nu64 as fs,nu64be as ys,offset as si,s16 as bs,s16be as gs,s24 as Ps,s24be as As,s32 as ui,s32be as ws,s40 as ks,s40be as Ts,s48 as hs,s48be as Is,s8 as Bs,seq as ci,struct as Ss,Structure as li,u16 as mi,u16be as Ks,u24 as xs,u24be as Cs,u32 as di,u32be as Rs,u40 as Ls,u40be as Os,u48 as Ns,u48be as Ms,u8 as pi,UInt as fi,union as Fs,Union as vs,unionLayoutDiscriminator as _s,utf8 as Vs}from"@solana/buffer-layout";var Vt=ai,Un=li;var sn=fi;var Gn=pi,oe=mi;var Et=di;var xe=ui;var zn=ci;var W=ri;var un=ii,Xn=si;var Ze=class extends Vt{constructor(t,n,i){super(t,i);this.blob=W(t),this.signed=n}decode(t,n=0){let i=new Yn(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 Yn(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Dt=class extends Vt{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 C(C({},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 j(a){return new sn(4,a)}function o(a){return new Ze(8,!1,a)}function D(a){return new Ze(16,!1,a)}function Qn(a){return new Ze(1,!0,a)}function nt(a){return new Ze(8,!0,a)}function Zn(a){return new Ze(16,!0,a)}var bt=class extends Vt{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 l(a){return new bt(W(32),e=>new yi(e),e=>e.toBuffer(),a)}function we(a){return new bt(Gn(),bi,gi,a)}function bi(a){if(a===0)return!1;if(a===1)return!0;throw new Error("Invalid bool: "+a)}function gi(a){return a?1:0}function ln(a,e){let t=Et("length"),n=k([t,B(a,Xn(t,-t.span),"values")]);return new bt(n,({values:i})=>i,i=>({values:i}),e)}var cn=class extends Un{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:Hn(e)?e.toNumber():new Proxy(e,{get(r,s){if(!n){let u=Reflect.get(r,"count");n=Hn(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 zn(a,i,t)}import X from"bn.js";var Z=new X(1).shln(64),ot=64,Pi=new X(1).shln(128),De=new X(1).shln(64).subn(1),Ai=new X(1).shln(128).subn(1),ke=-443636,Te=443636,Oe=new X("4295048016"),Ne=new X("79226673521066979257578248091"),$n=new X("59543866431248"),jn=new X("184467440737095516"),Jn=new X("15793534762490258745"),eo=16,Wt=512,be=60,Qs=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 R=new X(0),Me=new X(1),Zs=new X(-1);var $s=new X("18446744073700000000");var wi=k([W(8),w("bump"),oe("index"),l("owner"),j("protocolFeeRate"),j("tradeFeeRate"),oe("tickSpacing"),j("fundFeeRate"),B(j(),1),l("fundOwner"),B(o(),3)]),ki=k([j("blockTimestamp"),nt("tickCumulative"),B(o(),4)]),so=k([W(8),we("initialized"),o("recentEpoch"),oe("observationIndex"),l("poolId"),B(ki,io,"observations"),B(o(),4)]),Ti=k([oe("filterPeriod"),oe("decayPeriod"),oe("reductionFactor"),j("dynamicFeeControl"),j("maxVolatilityAccumulator"),xe("tickSpacingIndexReference"),j("volatilityReference"),j("volatilityAccumulator"),o("lastUpdateTimestamp"),B(w(),46)]),hi=k([w("state"),o("openTime"),o("endTime"),o("lastUpdateTime"),D("emissionsPerSecondX64"),o("totalEmissioned"),o("claimed"),l("mint"),l("vault"),l("creator"),D("growthGlobalX64")]),Ut=k([W(8),w("bump"),l("configId"),l("creator"),l("mintA"),l("mintB"),l("vaultA"),l("vaultB"),l("observationId"),w("mintDecimalsA"),w("mintDecimalsB"),oe("tickSpacing"),D("liquidity"),D("sqrtPriceX64"),xe("tickCurrent"),j(),D("feeGrowthGlobalX64A"),D("feeGrowthGlobalX64B"),o("protocolFeesTokenA"),o("protocolFeesTokenB"),B(D(),4),w("status"),w("feeOn"),W(6),B(hi,Pt,"rewardInfos"),W(8*16,"tickArrayBitmap"),B(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),Ti.replicate("dynamicFeeInfo"),B(o(),46)]),Ii=k([D("growthInsideLastX64"),o("rewardAmountOwed")]),Bi=k([W(8),w("bump"),l("nftMint"),l("poolId"),xe("tickLower"),xe("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),B(Ii,Pt,"rewardInfos"),o("recentEpoch"),B(o(),7)]),tu=k([W(8),w("bump"),l("poolId"),xe("tickLower"),xe("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),B(D(),Pt,"rewardGrowthInside"),o("recentEpoch"),B(o(),7)]),Si=k([xe("tick"),Zn("liquidityNet"),D("liquidityGross"),D("feeGrowthOutsideX64A"),D("feeGrowthOutsideX64B"),B(D(),Pt,"rewardGrowthsOutsideX64"),o("orderPhase"),o("ordersAmount"),o("partFilledOrdersRemaining"),D("unfilledRatioX64"),B(j(),3)]),At=k([W(8),l("poolId"),xe("startTickIndex"),B(Si,be,"ticks"),w("initializedTickCount"),o("recentEpoch"),B(w(),107)]),Ki=k([W(8),w("bump"),B(l(),ro,"operationOwners"),B(l(),ao,"whitelistMints")]),xi=k([W(8),l("poolId"),l("owner"),xe("tick"),we("zeroForOne"),o("orderPhase"),o("totalAmount"),o("filledAmount"),o("settleBase"),o("settleOutput"),o("openTime"),D("unfilledRatioX64"),B(o(),4)]),mn=k([W(8),l("poolId"),W(8*8*it,"positiveTickArrayBitmap"),W(8*8*it,"negativeTickArrayBitmap")]),nu=k([W(8),oe("index"),oe("filterPeriod"),oe("decayPeriod"),oe("reductionFactor"),j("dynamicFeeControl"),j("maxVolatilityAccumulator"),B(o(),8)]),Ci=k([W(8),l("wallet"),w("nonceIndex"),o("orderNonce"),B(o(),4)]),ou=k([o(),w("bump"),l("owner"),l("poolId"),l("positionId"),l("nftAccount"),B(o(),8)]),Ri=k([W(8),w("bump"),l("lockOwner"),l("poolId"),l("positionId"),l("nftAccount"),l("lockNftMint"),o("recentEpoch"),B(o(),8)]);import Li 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 $(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()?R:Me)}var uu=new Li(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 Mi}from"@solana/web3.js";import{get as mo,set as Oi}from"lodash";var dn=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={},Ni={};function G(a){let e=mo(po,a);if(!e){let t=mo(Ni,a);e=new dn({name:a,logLevel:t}),Oi(po,a,e)}return e}import{MINT_SIZE as Au,TOKEN_PROGRAM_ID as wu,getTransferFeeConfig as ku,unpackMint as Tu}from"@solana/spl-token";var pn=G("Raydium_accountInfo_util");async function he(a,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:r=100}=C({batchRequest:!1},t),s=fn(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}}),d=fn(c,10);u=(await(await Promise.all(d.map(async p=>await a._rpcBatchRequest(p)))).flat()).map(p=>(p.error&&pn.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"&&pn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(g[0],"base64"),executable:h,lamports:A,owner:new Mi(T),rentEpoch:S}}return null})))}else try{u=await Promise.all(s.map(c=>a.getMultipleAccountsInfo(c,i)))}catch(c){c instanceof Error&&pn.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)=>V(C({},i),{accountInfo:n[r]}))}import et from"bn.js";import XC from"decimal.js";import qi from"big.js";import Yt from"bn.js";import Fi from"toformat";var vi=Fi,wt=vi;import Xt from"big.js";import Vi from"bn.js";import Ei 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"),yn=wt(Xt),Tt=wt(Ei),Di={[0]:Tt.ROUND_DOWN,[1]:Tt.ROUND_HALF_UP,[2]:Tt.ROUND_UP},Wi={[0]:Xt.roundDown,[1]:Xt.roundHalfUp,[2]:Xt.roundUp},Y=class{constructor(e,t=new Vi(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:Di[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.`),yn.DP=e,yn.RM=Wi[n]||1,new yn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Ui=G("Raydium_amount"),yo=wt(qi);function Gi(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")):Ui.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=bn.pow(new Yt(t.decimals));if(i)s=re(n);else{let c=new Yt(0),d=new Yt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[m,p]=Gi(n.toString(),t.decimals);c=re(m),d=re(p)}c=c.mul(u),s=c.add(d)}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 zi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bo}from"@solana/spl-token";var Ht={chainId:101,address:zi.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 An}from"@solana/web3.js";import{PublicKey as J,SystemProgram as go,SYSVAR_RENT_PUBKEY as Xi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Yi}from"@solana/spl-token";function rt({pubkey:a,isSigner:e=!1,isWritable:t=!0}){return{pubkey:a,isWritable:t,isSigner:e}}var Hi=[rt({pubkey:Yi,isWritable:!1}),rt({pubkey:go.programId,isWritable:!1}),rt({pubkey:Xi,isWritable:!1})];function gn({publicKey:a,transformSol:e}){let t=Po(a.toString());if(t instanceof J)return e&&t.equals($e)?Ue:t;if(e&&t.toString()===$e.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 Pn=new J("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ht=new J("SysvarRent111111111111111111111111111111111"),ec=new J("SysvarC1ock11111111111111111111111111111111"),Qt=new J("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Qi=new J("Sysvar1nstructions1111111111111111111111111"),Zi=go.programId,tc=new J("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),nc=new J("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),oc=new J("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ic=new J("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),rc=new J("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),ac=new J("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),sc=new J("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),uc=new J("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),cc=new J("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),lc=new J("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),mc=new J("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ue=new J("So11111111111111111111111111111111111111112"),$e=J.default;function Ge(a){return gn({publicKey:a,transformSol:!0})}var wn=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:r=!1,isToken2022:s=!1}){if(e===$e.toBase58()||e instanceof An&&$e.equals(e)){this.decimals=Fe.decimals,this.symbol=Fe.symbol,this.name=Fe.name,this.mint=new An(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?An.default:gn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},le=wn;le.WSOL=new wn(V(C({},Fe),{mint:Fe.address}));var kn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Zt=kn;Zt.SOL=new kn(Ht);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(Tn(n.decimals),Tn(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 Hx}from"lodash";import Fc 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"},Ji=V(C({},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 il=G("Raydium_Api");import{PublicKey as Om,SystemProgram as Nm}from"@solana/web3.js";import{AccountLayout as Vm,createAssociatedTokenAccountIdempotentInstruction as Em,TOKEN_PROGRAM_ID as Dm,TOKEN_2022_PROGRAM_ID as Wm}from"@solana/spl-token";import{PublicKey as lt,sendAndConfirmTransaction as xn,SystemProgram as rr,Transaction as St,TransactionMessage as Kt,VersionedTransaction as xt}from"@solana/web3.js";import ar from"axios";import{PublicKey as hn,AddressLookupTableAccount as ut}from"@solana/web3.js";async function In({connection:a,address:e,cluster:t="mainnet"}){let n=await he(a,[...new Set(e.map(r=>r.toString()))].map(r=>new hn(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={},Bn=async a=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(at[e])return at;let t=new hn(e),n=await a.getAccountInfo(t);return n&&(at[e]=new ut({key:t,state:ut.deserialize(n.data)})),at},st={},Sn=async a=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(st[e])return st;let t=new hn(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 er,Transaction as Io,TransactionMessage as tr,VersionedTransaction as Bo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as nr}from"@solana/spl-token";var To=G("Raydium_txUtil"),So=1644;function $t(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 jt(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 Kn(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]=er.findProgramAddressSync(a,e);return{publicKey:t,nonce:n}}function It({instructions:a,payer:e,signers:t}){return Kn(a,[e,...t])}function Bt({instructions:a,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=ho.generate().publicKey.toString()}){let r=new tr({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 or=a=>Buffer.isBuffer(a)?a:a instanceof Uint8Array?Buffer.from(a.buffer,a.byteOffset,a.byteLength):Buffer.from(a),ir=a=>{let e=a.serialize({requireAllSignatures:!1,verifySignatures:!1});a instanceof Bo&&(e=or(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function je(a){let e=[];return a.forEach(t=>{t instanceof Io&&(t.recentBlockhash||(t.recentBlockhash=nr.toBase58()),t.feePayer||(t.feePayer=ho.generate().publicKey)),e.push(ir(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 ar.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}=$t(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(rr.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(V(C({},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||{},d=r!=null?r:await ct(this.connection,this.blockhashCommitment);if(t.recentBlockhash=d,this.signers.length&&t.sign(...this.signers),je([t]),(m=this.owner)!=null&&m.isKeyPair)return{txId:u?await xn(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 d;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(d=this.owner)!=null&&d.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 xn(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));je(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,L=null,_=null,Q=U=>{L!==null&&clearInterval(L),_!==null&&this.connection.removeSignatureListener(_);let N=b.findIndex(H=>H.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&&(L=setInterval(async()=>{var U;if(O){clearInterval(L);return}try{let N=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:1});N&&(O=!0,clearInterval(L),Q({err:((U=N.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",x))}catch(N){O=!0,clearInterval(L),console.error("getTransaction timeout:",N,x)}},Jt)),_=this.connection.onSignature(x,U=>{if(O){this.connection.removeSignatureListener(_);return}O=!0,Q(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=C(C({},this.cluster==="devnet"?await Sn(this.connection):await Bn(this.connection)),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),d=[];for(let T of c)u[T]===void 0&&d.push(new lt(T));let m=await In({connection:this.connection,address:d});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(je([g]),(F=this.owner)!=null&&F.isKeyPair){let b=await this.connection.sendTransaction(g,{skipPreflight:S});return K&&await jt(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 d;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(d=this.owner)!=null&&d.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),je(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 jt(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=L=>{I!==null&&clearInterval(I),x!==null&&this.connection.removeSignatureListener(x);let _=K.findIndex(Q=>Q.txId===F);if(_>-1){if(K[_].status==="error"||K[_].status==="success")return;K[_].status=L.err?"error":"success"}P==null||P([...K]),L.err||M()};this.loopMultiTxStatus&&(I=setInterval(async()=>{var L;if(b){clearInterval(I);return}try{let _=await this.connection.getTransaction(F,{commitment:"confirmed",maxSupportedTransactionVersion:1});_&&(b=!0,clearInterval(I),O({err:((L=_.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",F))}catch(_){b=!0,clearInterval(I),console.error("getTransaction timeout:",_,F)}},Jt)),x=this.connection.onSignature(F,L=>{if(b){this.connection.removeSignatureListener(x);return}b=!0,O(L)},"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?$t(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((g,h)=>V(C({},g),{[h.publicKey.toBase58()]:h}),{}),u=[],c=[],d=[],m=0;if(this.allInstructions.forEach(g=>{let h=[...d,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]&&d.length<12&&(It({instructions:A,payer:this.feePayer,signers:S})||It({instructions:h,payer:this.feePayer,signers:S})))d.push(g);else{if(d.length===0)throw Error("item ins too big");m+=g===t[m]?1:0,It({instructions:n?[...r.instructions,...d]:[...d],payer:this.feePayer,signers:S})?u.push(new St().add(...r.instructions,...d)):u.push(new St().add(...d)),c.push(Array.from(new Set(d.map(K=>K.keys.filter(M=>M.isSigner).map(M=>M.pubkey.toString())).flat())).map(K=>s[K]).filter(K=>K!==void 0)),d=[g]}}),d.length>0){let h=[...new Set(d.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,...d]:[...d],payer:this.feePayer,signers:h.map(A=>A.publicKey)})?u.push(new St().add(...r.instructions,...d)):u.push(new St().add(...d)),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])}),je(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 xn(this.connection,x,this.signers.find(L=>L.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=[],L=async()=>{if(!I[x])return;x<T&&(O.push({txId:"",status:"success",signedTx:I[x]}),A==null||A([...O]),x++,L());let _=await this.connection.sendRawTransaction(I[x].serialize(),{skipPreflight:K});O.push({txId:_,status:"sent",signedTx:I[x]}),A==null||A([...O]),x++;let Q=!1,U=null,N=null,H=q=>{U!==null&&clearInterval(U),N!==null&&this.connection.removeSignatureListener(N);let ne=O.findIndex(Ae=>Ae.txId===_);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||L()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var q;if(Q){clearInterval(U);return}try{let ne=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:1});ne&&(Q=!0,clearInterval(U),H({err:((q=ne.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",_))}catch(ne){Q=!0,clearInterval(U),console.error("getTransaction timeout:",ne,_)}},Jt)),N=this.connection.onSignature(_,q=>{if(Q){this.connection.removeSignatureListener(N);return}Q=!0,H(q)},"confirmed"),this.connection.getSignatureStatus(_)};return await L(),{txIds:O.map(_=>_.txId),signedTxs:I}}else{let x=[];for(let O=0;O<I.length;O+=1){let L=await this.connection.sendRawTransaction(I[O].serialize(),{skipPreflight:K});x.push(L)}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=C(C({},this.cluster==="devnet"?await Sn(this.connection):await Bn(this.connection)),i),d=Array.from(new Set([...this.lookupTableAddress,...r])),m=[];for(let b of d)c[b]===void 0&&m.push(new lt(b));let p=await In({connection:this.connection,address:m});for(let[b,I]of Object.entries(p))c[b]=I;let P=t?$t(t):{instructions:[],instructionTypes:[]},g=await ct(this.connection,this.blockhashCommitment),h=this.signers.reduce((b,I)=>V(C({},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 L of[...new Set(d)])c[L]!==void 0&&(O[L]=c[L]);if(t&&Bt({instructions:[...P.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:g})){let L=new Kt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...P.instructions,...S]}).compileToV0Message(Object.values(c));A.push(new xt(L))}else{let L=new Kt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...S]}).compileToV0Message(Object.values(c));A.push(new xt(L))}T.push(Array.from(new Set(S.map(L=>L.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(L=>h[L]).filter(L=>L!==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 Q;let{sequentially:I,onTxUpdate:x,skipTxCount:O=0,recentBlockHash:L,skipPreflight:_=!0}=b||{};if(A.map(async(U,N)=>{T[N].length&&U.sign(T[N]),L&&(U.message.recentBlockhash=L)}),je(A),(Q=this.owner)!=null&&Q.isKeyPair){if(I){let U=0,N=[];for(let H of A){if(++U,U<=O){console.log("skip tx: ",U),N.push("tx skipped");continue}let q=await this.connection.sendTransaction(H,{skipPreflight:_});await jt(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:_}))),signedTxs:A}}if(this.signAllTransactions){let U=await this.signAllTransactions(A.slice(O,A.length)),N=[...A.slice(0,O),...U];if(I){let H=0,q=[],ne=async()=>{if(!N[H])return;if(H<O){q.push({txId:"",status:"success",signedTx:N[H]}),x==null||x([...q]),H++,ne();return}let Ae=await this.connection.sendTransaction(N[H],{skipPreflight:_});q.push({txId:Ae,status:"sent",signedTx:N[H]}),x==null||x([...q]),H++;let yt=!1,tt=null,vt=null,En=Qe=>{tt!==null&&clearInterval(tt),vt!==null&&this.connection.removeSignatureListener(vt);let Ee=q.findIndex(ei=>ei.txId===Ae);if(Ee>-1){if(q[Ee].status==="error"||q[Ee].status==="success")return;q[Ee].status=Qe.err?"error":"success"}x==null||x([...q]),Qe.err||ne()};this.loopMultiTxStatus&&(tt=setInterval(async()=>{var Qe;if(yt){clearInterval(tt);return}try{let Ee=await this.connection.getTransaction(Ae,{commitment:"confirmed",maxSupportedTransactionVersion:1});Ee&&(yt=!0,clearInterval(tt),En({err:((Qe=Ee.meta)==null?void 0:Qe.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,Qe=>{if(yt){this.connection.removeSignatureListener(vt);return}yt=!0,En(Qe)},"confirmed"),this.connection.getSignatureStatus(Ae)};return ne(),{txIds:[],signedTxs:N}}else{let H=[];for(let q=0;q<N.length;q+=1){let ne=await this.connection.sendTransaction(N[q],{skipPreflight:_});H.push(ne)}return{txIds:H,signedTxs:N}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}};var Cn=(...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(Cn(e))}logInfo(...e){this.logger.info(Cn(e))}logAndCreateError(...e){let t=Cn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as cm,SystemProgram as mm}from"@solana/web3.js";import fm from"bn.js";import{createCloseAccountInstruction as Pm,createInitializeAccountInstruction as Am,createTransferInstruction as wm,TOKEN_PROGRAM_ID as km}from"@solana/spl-token";import{Keypair as Zl,PublicKey as $l}from"@solana/web3.js";import em from"bn.js";import{TOKEN_PROGRAM_ID as om}from"@solana/spl-token";var tn=k([l("mint"),l("owner"),o("amount"),j("delegateOption"),l("delegate"),w("state"),j("isNativeOption"),o("isNative"),o("delegatedAmount"),j("closeAuthorityOption"),l("closeAuthority")]);import{PublicKey as lg,SystemProgram as mg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as pg}from"@solana/spl-token";import{PublicKey as Hm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zm}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"),Rn=new v("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),ed=new v("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ur=new v("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Lo=new v("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Oo=new v("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),td=new v("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),cr=new v("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),No=new v("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),lr=new v("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),mr=new v("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Mo=new v("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),nd=new v("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),dr=new v("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Ln=new v("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),pr=new v("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),od=new v("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),fr=new v("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),yr=new v("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),br=new v("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),id=new v("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),rd=new v("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),ad=new v("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),sd=new v("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),ud=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 Gf,TOKEN_2022_PROGRAM_ID as zf,TOKEN_PROGRAM_ID as Xf}from"@solana/spl-token";import{PublicKey as Hf}from"@solana/web3.js";import Zf from"bn.js";import jf from"decimal.js";import{TOKEN_PROGRAM_ID as Td}from"@solana/spl-token";import{PublicKey as Sd}from"@solana/web3.js";var gr=k([j("mintAuthorityOption"),l("mintAuthority"),o("supply"),w("decimals"),w("isInitialized"),j("freezeAuthorityOption"),l("freezeAuthority")]);var mt=i=>{var r=i,{address:a,programId:e,decimals:t}=r,n=Ke(r,["address","programId","decimals"]);return C({chainId:101,address:Ge(a).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import{ASSOCIATED_TOKEN_PROGRAM_ID as pf,TOKEN_2022_PROGRAM_ID as ff,TOKEN_PROGRAM_ID as yf}from"@solana/spl-token";import{Keypair as Pf,PublicKey as Af,SystemProgram as kf,TransactionInstruction as Tf}from"@solana/web3.js";import If from"bn.js";import Vd from"bn.js";function Fo(a){let e=Buffer.alloc(4);return e.writeInt32BE(a),e}var Hd=Buffer.from("amm_config","utf8"),Ar=Buffer.from("pool","utf8"),wr=Buffer.from("pool_vault","utf8"),Qd=Buffer.from("pool_reward_vault","utf8"),Zd=Buffer.from("position","utf8"),kr=Buffer.from("tick_array","utf8"),$d=Buffer.from("operation","utf8"),Tr=Buffer.from("pool_tick_array_bitmap_extension","utf8"),jd=Buffer.from("observation","utf8"),Jd=Buffer.from("support_mint","utf8"),ep=Buffer.from("dynamic_fee_config","utf8"),tp=Buffer.from("permission","utf8");function Xe(a,e,t){return Be([kr,e.toBuffer(),Fo(t)],a)}function Ye(a,e){return Be([Tr,e.toBuffer()],a)}var np=Buffer.from("locked_position","utf8");import{sha256 as xr}from"js-sha256";import rp 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(R))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let u=i?Gt($(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?$(n,t.sub(e),Z):ee(n,t.sub(e),Z);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 R;e.gt(t)&&([e,t]=[t,e]);let i=ee(e,t,Z),r=t.sub(e);return ee(n,i,r)}static getLiquidityFromAmountB(e,t,n){if(n.isZero())return R;e.gt(t)&&([e,t]=[t,e]);let i=t.sub(e);return ee(n,Z,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=R,u=R;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:d}=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(d.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)?R:this.getLiquidityFromAmountA(on.max(e,t),n,i.amount);else if(i.type==="amountB")r=e.lte(t)?R:this.getLiquidityFromAmountB(t,on.min(e,n),i.amount);else throw Error("amount info type check error");return C({liquidity:r},this.getAmountsForLiquidity(e,t,n,i.amount,!0))}};import Pp 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 $(r,e,u);let c=ee(r,Me,e);return $(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 $(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(R))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(R))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(R))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(R))throw Error("liquidity.gt(BN_ZERO)");return i?this.getNextSqrtPriceFromAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromAmountARoundingUp(e,t,n,!1)}};import ie from"bn.js";var Ce=class{static newValue({poolInfo:e,amountSpecified:t,zeroForOne:n,feeRate:i,blockTimestamp:r}){let s={amountSpecifiedRemaining:t,amountCalculated:R,sqrtPriceX64:e.sqrtPriceX64,tick:e.tickCurrent,feeGrowthGlobalX64:n?e.feeGrowthGlobalX64A:e.feeGrowthGlobalX64B,lpFee:R,protocolFee:R,fundFee:R,liquidity:e.liquidity,sqrtPriceNextX64:R,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=E.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=$(new ie(e.dynamicFeeControl),new ie(i),new ie(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=E.getSqrtPriceAtTick(s);return n?{isSkipped:!1,boundedPrice:ie.max(t,u)}:{isSkipped:!1,boundedPrice:ie.min(t,u)}}static applySwapAmounts({state:e,amountIn:t,amountOut:n,feeAmount:i,isBaseInput:r,isFeeOnInput:s,protocolFeeRate:u,fundFeeRate:c}){let d=s?t.add(i):t;r?(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(d),e.amountCalculated=e.amountCalculated.add(n)):(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(n),e.amountCalculated=e.amountCalculated.add(d)),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(R)){let s=t.mul(n).div(new ie(Se));e.protocolFee=e.protocolFee.add(s),r=r.sub(s)}if(i.gt(R)){let s=t.mul(i).div(new ie(Se));e.fundFee=e.fundFee.add(s),r=r.sub(s)}if(e.liquidity.gt(R)){let s=ee(r,Z,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:R,amountIn:R,amountOut:R,feeAmount:R}}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 d=this.newSwapComputationResult({});if(s){let p=c?ee(i,new ie(We-r),new ie(We)):i,P=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:u,isBaseInput:s});P!==null&&(d.amountIn=P),d.sqrtPriceNextX64=P!==null&&p.gte(d.amountIn)?t:Ct.getNextSqrtPriceFromInput(e,n,p,u)}else{let p=c?i:$(i,new ie(We),new ie(We-r)),P=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:u,isBaseInput:s});P!==null&&(d.amountOut=P),d.sqrtPriceNextX64=P!==null&&p.gte(d.amountOut)?t:Ct.getNextSqrtPriceFromOutput(e,n,p,u)}if(u){if(!d.sqrtPriceNextX64.gte(t))throw Error("!result.sqrtPriceNextX64.gte(sqrtPriceTargetX64)")}else if(!t.gte(d.sqrtPriceNextX64))throw Error("!sqrtPriceTargetX64.gte(result.sqrtPriceNextX64)");let m=t.eq(d.sqrtPriceNextX64);if(u?(m&&s||(d.amountIn=te.getDeltaAmountAUnsigned(d.sqrtPriceNextX64,e,n,!0)),m&&!s||(d.amountOut=te.getDeltaAmountBUnsigned(d.sqrtPriceNextX64,e,n,!1))):(m&&s||(d.amountIn=te.getDeltaAmountBUnsigned(e,d.sqrtPriceNextX64,n,!0)),m&&!s||(d.amountOut=te.getDeltaAmountAUnsigned(e,d.sqrtPriceNextX64,n,!1))),s)c?d.sqrtPriceNextX64.eq(t)?d.feeAmount=$(d.amountIn,new ie(r),new ie(We-r)):d.feeAmount=i.sub(d.amountIn):(d.feeAmount=$(d.amountOut,new ie(r),new ie(We)),d.amountOut=d.amountOut.sub(d.feeAmount),m||(d.amountIn=i));else if(c)d.amountOut=ie.min(d.amountOut,i),d.feeAmount=$(d.amountIn,new ie(r),new ie(We-r));else{d.feeAmount=$(d.amountOut,new ie(r),new ie(We));let p=d.amountOut.sub(d.feeAmount);p.gt(i)?(d.feeAmount=d.amountOut.sub(i),d.amountOut=i):d.amountOut=p}return d}};import pt from"bn.js";function On({programId:a,poolId:e,poolInfo:t,tickArrays:n,configInfo:i,tickarrayBitmapExtension:r,amountSpecified:s,sqrtPriceLimitX64:u,zeroForOne:c,isBaseInput:d,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:R,feeAmount:R,sqrtPriceX64:t.sqrtPriceX64,liquidity:t.liquidity,tickCurrent:t.tickCurrent,accounts:[]};let g=p?He.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 L=se.nextInitalizedTick({data:M.value,tickSpacing:b.tickSpacing,zeroForOne:c,currentTickIndex:b.tick});if(L!==void 0)return L;if(S){let _=n[++P];return _===void 0?void 0:(K=_.value.startTickIndex,M=_,se.firstinitializedTick({data:_.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(L=>L.address)};let x=Ce.getTargetPriceBasedOnNextTick({data:b,tickNext:I.tick,zeroForOne:c,sqrtPriceLimitX64:u}),O=b.liquidity;do{Ce.updateVolatilityAccumulator({state:b});let L=Ce.getTotalFeeRate({data:b}),{isSkipped:_,boundedPrice:Q}=Ce.getSpacingBoundedPrice({data:b,targetPrice:x,zeroForOne:c}),U=!b.sqrtPriceX64.eq(Q),N;U?(N=Rt.computeSwap(b.sqrtPriceX64,Q,b.liquidity,b.amountSpecifiedRemaining,L,d,c,F),Ce.applySwapAmounts({state:b,amountIn:N.amountIn,amountOut:N.amountOut,feeAmount:N.feeAmount,isBaseInput:d,isFeeOnInput:F,protocolFeeRate:new pt(i.protocolFeeRate),fundFeeRate:new pt(i.fundFeeRate)})):N=Rt.newSwapComputationResult({sqrtPriceNextX64:Q});let H=E.limitOrderUnfilledAmount({tick:I});if(b.sqrtPriceNextX64.eq(N.sqrtPriceNextX64)){let q=E.matchLimitOrder({tick:I,swapAmount:b.amountSpecifiedRemaining,swapDirectionZeroForOne:c,isBaseInput:d,feeRate:L,isFeeOnInput:F});if(q.amountIn.gt(R)&&Ce.applySwapAmounts({state:b,amountIn:q.amountIn,amountOut:q.amountOut,feeAmount:q.ammFeeAmount,isBaseInput:d,isFeeOnInput:F,protocolFeeRate:new pt(i.protocolFeeRate),fundFeeRate:new pt(i.fundFeeRate)}),E.hasLiquidity({data:I})&&!E.hasLimitOrders({data:I})){let ne=c?I.liquidityNet.neg():I.liquidityNet;O=te.addDelta(b.liquidity,ne)}b.tick=c&&!E.hasLimitOrders({data:I})||!c&&E.hasLimitOrders({data:I})?b.tickNext-1:b.tickNext}else b.sqrtPriceX64.eq(N.sqrtPriceNextX64)||(b.tick=E.getTickAtSqrtPrice(N.sqrtPriceNextX64));if(b.sqrtPriceX64=N.sqrtPriceNextX64,Ce.updateDynamicFeeIndex({state:b,zeroForOne:c,isSkippedTickSpacing:_}),b.amountSpecifiedRemaining.isZero()||b.sqrtPriceX64.eq(x)){let q=E.limitOrderUnfilledAmount({tick:I});if(!b.amountSpecifiedRemaining.isZero()&&!q.eq(H)&&!q.isZero())throw Error("!limitOrderUnfilledAmountAfter.isZero()");break}}while(!0);b.liquidity=O}return{allTrade:!0,amountSpecifiedRemaining:R,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(xr.digest(e)).slice(0,8)}so.span;var Nf=G("Raydium_Clmm"),Mf={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 Mn}from"@solana/web3.js";var Nr=k([w("instruction")]),Mr=k([w("instruction")]),Fr=k([o("rewardState"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardLastUpdateTime"),o("totalReward"),o("totalRewardEmissioned"),o("rewardClaimed"),o("rewardPerSecond"),D("accRewardPerShare"),l("rewardVault"),l("rewardMint"),l("rewardSender"),o("rewardType"),B(o(),15,"padding")]),vr=k([o("state"),o("nonce"),l("lpVault"),l("rewardVault"),l(),l(),o(),o(),o("totalReward"),D("perShareReward"),o("lastSlot"),o("perSlotReward")]),_r=k([o("state"),o("nonce"),l("lpVault"),l("rewardVaultA"),o("totalRewardA"),D("perShareRewardA"),o("perSlotRewardA"),w("option"),l("rewardVaultB"),W(7),o("totalRewardB"),D("perShareRewardB"),o("perSlotRewardB"),o("lastSlot"),l()]),Vr=k([o(),o("state"),o("nonce"),o("validRewardTokenNum"),D("rewardMultiplier"),o("rewardPeriodMax"),o("rewardPeriodMin"),o("rewardPeriodExtend"),l("lpMint"),l("lpVault"),B(Fr,5,"rewardInfos"),l("creator"),l(),B(o(),32,"padding")]),Er=new Proxy(vr,{get(a,e,t){return e==="decode"?(...n)=>{let i=a.decode(...n);return V(C({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(a,e,t)}}),Dr=new Proxy(_r,{get(a,e,t){return e==="decode"?(...n)=>{let i=a.decode(...n);return V(C({},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(Vr,{get(a,e,t){return e==="decode"?(...n)=>{let i=a.decode(...n);return V(C({},i),{version:6,rewardInfos:i.rewardInfos.map(r=>{var s;return V(C({},r),{rewardType:((s=Object.entries(Nt).find(u=>String(u[1])===r.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(a,e,t)}}),Wr=k([o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),qr=k([w("instruction"),o("nonce"),B(Wr,5,"rewardTimeInfo")]),Ur=k([w("instruction"),o("rewardReopenTime"),o("rewardEndTime"),o("rewardPerSecond")]),Gr=k([w("instruction"),o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),xy=k([o("state"),l("id"),l("owner"),o("deposited"),B(o(),1,"rewardDebts")]),Wo=k([o("state"),l("id"),l("owner"),o("deposited"),B(D(),1,"rewardDebts"),o(""),o("voteLockedBalance"),B(o(),15)]),Cy=k([o("state"),l("id"),l("owner"),o("deposited"),B(o(),2,"rewardDebts")]),zr=k([o("state"),l("id"),l("owner"),o("deposited"),B(D(),2,"rewardDebts"),B(o(),17)]),Xr=k([o(),o("state"),l("id"),l("owner"),o("deposited"),B(D(),5,"rewardDebts"),B(o(),16)]),Yr=k([w("instruction"),o("amount")]),Hr=k([l("mint"),l("grantAuthority"),o("baselineVoteWeightScaledFactor"),o("maxExtraLockupVoteWeightScaledFactor"),o("lockupSaturationSecs"),Qn("digitShift"),B(w(),7,"reserved1"),B(o(),7,"reserved2")]),Qr=k([W(8),l("governanceProgramId"),l("realm"),l("realmGoverningTokenMint"),l("realmAuthority"),B(w(),32,"reserved1"),B(Hr,4,"votingMints"),nt("timeOffset"),w("bump"),B(w(),7,"reserved2"),B(o(),11,"reserved3")]),Zr=k([nt("startTime"),nt("endTime"),w("kind"),B(w(),15,"reserved")]),$r=k([B(Zr,1,"lockup"),o("amountDeposited_native"),o("amountInitiallyLockedNative"),we("isUsed"),we("allowClawback"),w("votingMintConfigIdx"),B(w(),29,"reserved")]),jr=k([W(8),l("voterAuthority"),l("registrar"),B($r,32,"deposits"),w("voterBump"),w("voterWweightRecordBump"),B(w(),94,"reserved")]);import{NATIVE_MINT as Vy}from"@solana/spl-token";var Ey=G("Raydium_farm_config"),Jr=new Mn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ea=new Mn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Dy=new Mn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var Nt={"Standard SPL":0,"Option tokens":1},qo={[xo.toString()]:3,[Co.toString()]:4,[Ro.toString()]:5,[Rn.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 Hy 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=V(C({},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)),d=new Re(r.maximumFee.toString()),m=c.sub(a).gt(d)?a.add(d):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)),d=c.gt(s)?s:c;return{amount:a,fee:d,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 ua=new Go(25),ca=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 la=k([w("instruction"),o("amountIn"),o("minAmountOut")]),ma=k([w("instruction"),o("maxAmountIn"),o("amountOut")]),eP=k([w("instruction"),w("nonce")]),da=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"),l("baseVault"),l("quoteVault"),l("baseMint"),l("quoteMint"),l("lpMint"),l("openOrders"),l("marketId"),l("marketProgramId"),l("targetOrders"),l("withdrawQueue"),l("lpVault"),l("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"),l("baseVault"),l("quoteVault"),l("baseMint"),l("quoteMint"),l("lpMint"),l("modelDataAccount"),l("openOrders"),l("marketId"),l("marketProgramId"),l("targetOrders"),l("owner"),B(o(),64,"padding")]),pa=k([w("instruction"),o("baseAmountIn"),o("quoteAmountIn"),o("fixedSide"),o("otherAmountMin")]),fa=k([w("instruction"),o("lpAmount"),o("baseAmountMin"),o("quoteAmountMin")]);var ya=k([o("fee")]);var kP=G("Raydium_liquidity_instruction");var ba=5e4,ga=k([o("x"),o("y"),o("price")]),BP=k([o("accountType"),o("status"),o("multiplier"),o("validDataCount"),B(ga,ba,"DataElement")]);import{PublicKey as _P}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 Pa(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 Aa=k([W(5),Pa("accountFlags"),l("ownAddress"),o("vaultSignerNonce"),l("baseMint"),l("quoteMint"),l("baseVault"),o("baseDepositsTotal"),o("baseFeesAccrued"),l("quoteVault"),o("quoteDepositsTotal"),o("quoteFeesAccrued"),o("quoteDustThreshold"),l("requestQueue"),l("eventQueue"),l("bids"),l("asks"),o("baseLotSize"),o("quoteLotSize"),o("feeRateBps"),o("referrerRebatesAccrued"),W(7)]);import{PublicKey as Uk}from"@solana/web3.js";import{AccountLayout as zk,NATIVE_MINT as Xk,TOKEN_2022_PROGRAM_ID as Yk,TOKEN_PROGRAM_ID as Hk,createAssociatedTokenAccountIdempotentInstruction as Qk}from"@solana/spl-token";import Ew from"bn.js";import Sa from"bn.js";var Bw=new Sa(0);import Lw from"bn.js";import Ka from"bn.js";var Se=new Ka(1e6);import oT from"bn.js";import rT from"decimal.js";import{PublicKey as rk,TransactionInstruction as ak,Keypair as uk,SystemProgram as ck}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as mk,TOKEN_2022_PROGRAM_ID as dk,TOKEN_PROGRAM_ID as pk}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"),Hw=Buffer.from("pool_vault","utf8"),Qw=Buffer.from("observation","utf8"),Zw=Buffer.from("permission","utf8"),$w=Buffer.from("support_mint","utf8"),jw=Buffer.from("creator_fee_share","utf8");var Jw=Buffer.from("locked_liquidity","utf8");var wk=G("Raydium_cpmm"),kk={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 Ra=k([W(8),w("bump"),we("disableCreatePool"),oe("index"),o("tradeFeeRate"),o("protocolFeeRate"),o("fundFeeRate"),o("createPoolFee"),l("protocolOwner"),l("fundOwner"),o("creatorFeeRate"),o("creatorFeeShareRate"),B(o(),14)]),Xo=k([W(8),l("configId"),l("poolCreator"),l("vaultA"),l("vaultB"),l("mintLp"),l("mintA"),l("mintB"),l("mintProgramA"),l("mintProgramB"),l("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)]),Ik=k([W(8),l("configId"),B(o(),30)]),Bk=k([W(8),w("bump"),l("creator"),l("ammConfig"),o("shareRate"),B(o(),8)]);import{PublicKey as gK,SystemProgram as PK}from"@solana/web3.js";import{createTransferInstruction as wK,TOKEN_PROGRAM_ID as kK,TOKEN_2022_PROGRAM_ID as TK,createAssociatedTokenAccountIdempotentInstruction as hK,createSyncNativeInstruction as BK,createTransferCheckedInstruction as SK}from"@solana/spl-token";import $a from"bn.js";import CK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as ph,TOKEN_2022_PROGRAM_ID as fh,TOKEN_PROGRAM_ID as yh}from"@solana/spl-token";import{SystemProgram as Ah,TransactionInstruction as wh}from"@solana/web3.js";import Na from"bn.js";var jT=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"),ah=Buffer.from("platform_curve_rule","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]),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]),createPlatformCurveRule:Buffer.from([148,71,180,136,122,144,59,21]),updatePlatformCurveRule:Buffer.from([90,100,206,196,54,117,120,139]),removePlatformCurveRule:Buffer.from([236,77,154,138,32,145,127,219]),closePlatformCurveRule:Buffer.from([194,114,82,45,136,88,169,159])};var Ih=new Na("18446744073709551615");var Ma=k([o(),o("epoch"),w("curveType"),oe("index"),o("migrateFee"),o("tradeFeeRate"),o("maxShareFeeRate"),o("minSupplyA"),o("maxLockRate"),o("minSellRateA"),o("minMigrateRateA"),o("minFundRaisingB"),l("mintB"),l("protocolFeeOwner"),l("migrateFeeOwner"),l("migrateToAmmWallet"),l("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"),l("configId"),l("platformId"),l("mintA"),l("mintB"),l("vaultA"),l("vaultB"),l("creator"),w("mintProgramFlag"),w("cpmmCreatorFeeOn"),o("platformVestingShare"),B(w(),54)]),xh=k([o(),o("epoch"),l("poolId"),l("beneficiary"),o("claimedAmount"),o("tokenShareAmount"),B(o(),8)]),_a=k([w("migrateType"),w("migrateCpmmFeeOn"),o("supply"),o("totalSellA"),o("totalFundRaisingB"),o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod")]),Ch=k([o("epoch"),w("index"),l("configId"),_a.replicate("bondingCurveParam"),B(o(),50)]),Ho=k([o(),o("epoch"),l("platformClaimFeeWallet"),l("platformLockNftWallet"),o("platformScale"),o("creatorScale"),o("burnScale"),o("feeRate"),B(w(),64,"name"),B(w(),256,"web"),B(w(),256,"img"),l("cpConfigId"),o("creatorFeeRate"),l("transferFeeExtensionAuth"),l("platformVestingWallet"),o("platformVestingScale"),l("platformCpCreator"),w("restrictGlobalConfig"),w("restrictCurveParam"),l("curveRuleManager"),B(w(),78)]),Va=k([w("field"),w("op"),D("value")]),Ea=k([oe("groupId"),o("epoch"),ln(Va,"constraints")]),Da=k([o(),w("bump"),w("version"),l("platformId"),l("configId"),o("epoch"),B(o(),8),ln(Ea,"groups")]);import{TOKEN_2022_PROGRAM_ID as Oh,TOKEN_PROGRAM_ID as Nh}from"@solana/spl-token";import Wa from"bn.js";var zh=new Wa(1e6);import Qh from"bn.js";import $h from"decimal.js";import CI from"bn.js";import LI from"decimal.js";import oI from"bn.js";import rI from"decimal.js";import yI from"bn.js";import gI from"decimal.js";import $o from"bn.js";import vn from"decimal.js";var an=class{static _multipler(e){return new vn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new vn(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 vn(new $o(1).shln(64).toString());import{NATIVE_MINT as XB,TOKEN_2022_PROGRAM_ID as YB,TOKEN_PROGRAM_ID as HB,createAssociatedTokenAccountIdempotentInstruction as ZB,createSyncNativeInstruction as $B,getTransferFeeConfig as jB,unpackMint as JB}from"@solana/spl-token";import ue from"bn.js";import{PublicKey as Ha,SystemProgram as nS}from"@solana/web3.js";import cS from"decimal.js";var lS={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 Ha("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ue(0),cliffPeriod:new ue(0),unlockPeriod:new ue(0),startTime:new ue(0),totalAllocatedShare:new ue(0)}},mS=new ue(1e4);var Qa={[Lo.toBase58()]:3};var Za=k([W(5),W(8),l("ownAddress"),o("vaultSignerNonce"),l("baseMint"),l("quoteMint"),l("baseVault"),o("baseDepositsTotal"),o("baseFeesAccrued"),l("quoteVault"),o("quoteDepositsTotal"),o("quoteFeesAccrued"),o("quoteDustThreshold"),l("requestQueue"),l("eventQueue"),l("bids"),l("asks"),o("baseLotSize"),o("quoteLotSize"),o("feeRateBps"),o("referrerRebatesAccrued"),W(7)]);import{PublicKey as FS}from"@solana/web3.js";var DS=G("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as QS,TOKEN_2022_PROGRAM_ID as ZS,TOKEN_PROGRAM_ID as $S}from"@solana/spl-token";import{PublicKey as JS,SystemProgram as eK,TransactionInstruction as tK}from"@solana/web3.js";import oK from"bn.js";var rx=new $a(0);import{PublicKey as ja,Transaction as _n,TransactionInstruction as Ja}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as es}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]),d=[];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;d.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,L)=>({mintAddress:O.mintAddress,mintVault:O.mintVault,mintDecimals:O.mintDecimals,perLpLoss:O.perLpLoss,debtAmount:K.tokenInfo[L].debtAmount.add(K.tokenInfo[L].claimedAmount)}))})}return d}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 d of e.tokenInfo){let{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:d.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:d.mintAddress.equals(le.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!d.mintAddress.equals(le.WSOL.mint),associatedOnly:d.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(),d=i.allInstructions;return Kn(d,[r,...c.map(m=>m.publicKey)])?[{transaction:u,signer:c}]:[{transaction:new _n().add(...d.slice(0,i.AllTxData.instructions.length-1)),signer:c},{transaction:new _n().add(...d.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new _n().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:es,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 Ja({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"),l("ammId"),B(k([w("mintDecimals"),l("mintAddress"),l("mintVault"),o("perLpLoss"),o("totalClaimedAmount")]),fe.CLAIMED_NUM,"tokenInfo"),B(o(),10,"padding")]),Le.OWNER_LAYOUT=k([W(8),w("bump"),w("version"),l("poolId"),l("owner"),o("lpAmount"),B(k([l("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 ja(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 Tx}from"@solana/web3.js";import{getTransferFeeConfig as Ix,MintLayout as Bx,TOKEN_2022_PROGRAM_ID as Sx,TOKEN_PROGRAM_ID as Kx,unpackMint as xx}from"@solana/spl-token";var nR=new et(2),oR=new et(3),iR=new et(5),bn=new et(10),rR=new et(100),aR=new et(1e3),sR=new et(1e4);function Tn(a){return bn.pow(re(a))}function fn(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 He=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 d=Math.floor(u/8),m=Math.floor(c/8);for(let p=d;p<=m;p++){if(!e[p])continue;let P=p===d?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 d=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=d*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((d,m)=>m-d),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:u}).sort((d,m)=>m-d),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:u}).sort((d,m)=>m-d)];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(E.isInitialized({data:e.ticks[n]}))return e.ticks[n]}else for(let n=0;n<e.ticks.length;n++)if(E.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(E.isInitialized({data:e.ticks[u]}))return e.ticks[u]}else for(let u=s+1;u<be;u++)if(E.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}},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=Z.clone();for(let{bit:i,factor:r}of to)(t&1<<i)!==0&&(n=ee(n,r,Z));return e>0&&(n=ee(Z,Z,n)),n}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:n}){if(n){let i=E.getPriceAtTick(t,!1);return ee(e,i,Z)}else{let i=E.getPriceAtTick(t,!0);return ee(e,Z,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:n}){if(n){let i=E.getPriceAtTick(t,!0);return $(e,i,Z)}else{let i=E.getPriceAtTick(t,!1);return $(e,Z,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:R,amountOut:R,ammFeeAmount:R},c=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||c.isZero())return u;if(i)s?(u.ammFeeAmount=$(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=$(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($(p,Se,Se.sub(new ce(r))),c),u.amountIn=this.getLimitOrderInput({amountOut:u.amountOut,tick:e.tick,zeroForOne:!n}),s&&(u.ammFeeAmount=$(u.amountIn,new ce(r),Se.sub(new ce(r))))}let d=R;e.partFilledOrdersRemaining.gt(R)&&(d=ce.min(e.partFilledOrdersRemaining,u.amountOut),d.gt(R)&&(e.unfilledRatioX64=ee(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(d),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(d));let m=u.amountOut.sub(d);if(m.gt(R)){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(Z,e.ordersAmount.sub(m),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(m),e.ordersAmount=R}return s||(u.ammFeeAmount=$(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(Z.subn(1)).div(Z):n.mul(n).div(Z)}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($n),p=m.sub(jn),P=m.add(Jn),g=this.signedShrn64(p),h=this.signedShrn64(P);return g===h?g:E.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),d=new ce(1).shln(128),p=c.div(d).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=E.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=E.toTickIndex(E.priceToTick(s,t,n),r),c=E.tickToPrice(u,t,n);return{price:i?c:new ft(1).div(c),tick:u}}};import{TOKEN_2022_PROGRAM_ID as Jo,TOKEN_PROGRAM_ID as ts}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=He.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,d;let s=[];for(let m=0;m<r.length;m++){let p=r[m],P=(d=(u=t.rewardDefaultInfos[m])==null?void 0:u.mint.programId)!=null?d:(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=V(C({},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(R)){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=$(A,g.emissionsPerSecondX64,Z),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,Z,i)}let F=g.growthGlobalX64.add(S);s.push(V(C({},g),{growthGlobalX64:F,totalEmissioned:K,lastUpdateTime:h}))}return s}},Ve=class{static getOutputAmountAndRemainAccounts(e,t,n,i,r,s,u){let c=i.toBase58()===e.mintA.address,d=se.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:m,amountCalculated:p,feeAmount:P,sqrtPriceX64:g,accounts:h}=On({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<=d:A.value.startTickIndex>=d).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:R,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,d=se.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:m,amountCalculated:p,feeAmount:P,sqrtPriceX64:g,accounts:h}=On({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<=d:A.value.startTickIndex>=d).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:R,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()]=mn.decode(s.accountInfo.data));return r}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},r=[];for(let c of t){let d=[...He.findTickArrayStartIndex({tickSpacing:c.tickSpacing,poolBitmap:c.tickArrayBitmap,tickArrayBitmap:c.exBitmapInfo,findInfo:{type:"zeroForOne",count:7,tickArrayCurrent:c.tickCurrent}}),...He.findTickArrayStartIndex({tickSpacing:c.tickSpacing,poolBitmap:c.tickArrayBitmap,tickArrayBitmap:c.exBitmapInfo,findInfo:{type:"oneForZero",count:7,tickArrayCurrent:c.tickCurrent}})];for(let m of d){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 d=i[c.pubkey.toString()];if(!d)continue;u[d.toString()]===void 0&&(u[d.toString()]={});let m=At.decode(c.accountInfo.data);u[d.toString()][m.startTickIndex]=V(C({},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:d=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];d.equals(new z(0))?m=p?Oe.add(new pe(1)):Ne.sub(new pe(1)):m=E.priceToSqrtPriceX64(d,e.mintA.decimals,e.mintB.decimals);let h=Pe(s,P,r,!1),{allTrade:A,expectedAmountOut:T,remainingAccounts:S,executionPrice:K,feeAmount:M}=Ve.getOutputAmountAndRemainAccounts(e,t,n,i,h.amount.sub((N=h.fee)!=null?N:R),c,m),F=Pe(T,g,r,!1),b=E.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),L=p?e.currentPrice:new z(1).div(e.currentPrice),_=new z(I).sub(L).abs(),Q=L,U=new ve(new z(_).mul(10**15).toFixed(0),new z(Q).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:d=!1}){let m=r.address===e.mintB.address,[p,P]=m?[e.mintA,e.mintB]:[e.mintB,e.mintA],[g,h]=[new le(V(C({},p),{mint:p.address,isToken2022:p.programId===Jo.toBase58()})),new le(V(C({},P),{mint:P.address,isToken2022:P.programId===Jo.toBase58()}))],{allTrade:A,realAmountIn:T,amountOut:S,minAmountOut:K,expirationTime:M,currentPrice:F,executionPrice:b,priceImpact:I,fee:x,remainingAccounts:O,executionPriceX64:L}=Ve.computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:new ye(p.address),amountIn:i,slippage:s,epochInfo:u,catchLiquidityInsufficient:d,blockTimestamp:c}),_=V(C({},T),{amount:new ae(g,T.amount),fee:T.fee===void 0?void 0:new ae(g,T.fee)}),Q=V(C({},S),{amount:new ae(h,S.amount),fee:S.fee===void 0?void 0:new ae(h,S.fee)}),U=V(C({},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)}),H=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:_,amountOut:Q,minAmountOut:U,expirationTime:M,currentPrice:N,executionPrice:H,priceImpact:I,fee:q,remainingAccounts:O,executionPriceX64:L}}static computeAmountIn({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:i,epochInfo:r,amountOut:s,slippage:u,priceLimit:c=new z(0),blockTimestamp:d}){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=E.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}=Ve.getInputAmountAndRemainAccounts(e,t,n,i,g.amount.sub((N=g.fee)!=null?N:R),d,P),M=m?e.mintB.address:e.mintA.address,F=Pe(A,p[M],r,!1),b=E.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),L=m?e.currentPrice:new z(1).div(e.currentPrice),_=new z(I).sub(L).abs(),Q=L,U=new ve(new z(_).mul(10**15).toFixed(0),new z(Q).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=E.tickToPrice(n,e.mintA.decimals,e.mintB.decimals).toNumber(),u=E.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 d=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=E.priceToSqrtPriceX64(new z(e.price),e.mintA.decimals,e.mintB.decimals),T=E.getSqrtPriceAtTick(s),S=E.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)),_=new z(m.volumeFee).mul(365).div(d).mul(O).mul(100).toNumber(),Q=3600*24*365,U=e.rewardDefaultInfos.map(N=>{var ne,Ae;let H=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||H===void 0?0:new z(q.value).mul(new z(N.perSecond).mul(Q)).div(new z(10).pow(H)).mul(O).mul(100).toNumber()});return{feeApr:_,rewardsApr:U,apr:_+U.reduce((N,H)=>N+H,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:r,slippage:s,add:u,epochInfo:c,amountHasFee:d}){var S,K;let m=E.priceToSqrtPriceX64(new z(e.price),e.mintA.decimals,e.mintB.decimals),p=E.getSqrtPriceAtTick(n),P=E.getSqrtPriceAtTick(i),g=Pe(r,(S=e[t?"mintA":"mintB"].extensions)==null?void 0:S.feeConfig,c,!d),h=new pe(new z(g.amount.sub((K=g.fee)!=null?K:R).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 Ve.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=E.getSqrtPriceAtTick(n),d=E.getSqrtPriceAtTick(i),m=te.getAmountsForLiquidity(E.priceToSqrtPriceX64(new z(t.price),t.mintA.decimals,t.mintB.decimals),c,d,r,u),[p,P]=[Pe(m.amountA,(T=t.mintA.extensions)==null?void 0:T.feeConfig,e,!0),Pe(m.amountB,(S=t.mintB.extensions)==null?void 0:S.feeConfig,e,!0)],g=s*1e4,[h,A]=[Pe(m.amountA.muln(1e4-g).divn(1e4),(K=t.mintA.extensions)==null?void 0:K.feeConfig,e,!0),Pe(m.amountB.muln(1e4-g).divn(1e4),(M=t.mintB.extensions)==null?void 0:M.feeConfig,e,!0)];return{liquidity:r,amountA:p,amountB:P,amountSlippageA:h,amountSlippageB:A,expirationTime:Ft(p.expirationTime,P.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(d=>!n[d.id]).map(d=>new ye(d.id));(await he(e,i)).forEach((d,m)=>{!d||(n[i[m].toBase58()]=Ut.decode(d.data))});let s=t.map(d=>Ye(new ye(d.programId),new ye(d.id)).publicKey),u=await Ve.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1}),c={};return t.reduce((d,m)=>V(C({},d),{[m.id]:V(C({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:V(C({},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 Lr(a,e){let t=e!=null?e:{};return V(C({},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:ts.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:V(C({},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,Ve as PoolUtils,Lr as clmmComputeInfoToApiInfo};
//# sourceMappingURL=pool.mjs.map