@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 80.5 kB
JavaScript
var Co=Object.defineProperty,Ro=Object.defineProperties;var Lo=Object.getOwnPropertyDescriptors;var at=Object.getOwnPropertySymbols;var yn=Object.prototype.hasOwnProperty,bn=Object.prototype.propertyIsEnumerable;var fn=(o,t,n)=>t in o?Co(o,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):o[t]=n,L=(o,t)=>{for(var n in t||(t={}))yn.call(t,n)&&fn(o,n,t[n]);if(at)for(var n of at(t))bn.call(t,n)&&fn(o,n,t[n]);return o},V=(o,t)=>Ro(o,Lo(t));var de=(o,t)=>{var n={};for(var i in o)yn.call(o,i)&&t.indexOf(i)<0&&(n[i]=o[i]);if(o!=null&&at)for(var i of at(o))t.indexOf(i)<0&&bn.call(o,i)&&(n[i]=o[i]);return n};import ie from"bn.js";import{PublicKey as Mo}from"@solana/web3.js";import{get as gn,set as Oo}from"lodash";var Ct=class{constructor(t){this.logLevel=t.logLevel!==void 0?t.logLevel:0,this.name=t.name}set level(t){this.logLevel=t}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(t){return t<=this.logLevel}error(...t){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...t),this):this}logWithError(...t){let n=t.map(i=>typeof i=="object"?JSON.stringify(i):i).join(", ");throw new Error(n)}warning(...t){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...t),this):this}info(...t){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...t),this):this}debug(...t){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...t),this):this}},Pn={},No={};function _(o){let t=gn(Pn,o);if(!t){let n=gn(No,o);t=new Ct({name:o,logLevel:n}),Oo(Pn,o,t)}return t}import{MINT_SIZE as Xa,TOKEN_PROGRAM_ID as Ya,getTransferFeeConfig as Qa,unpackMint as Za}from"@solana/spl-token";var Rt=_("Raydium_accountInfo_util");async function pe(o,t,n){let{batchRequest:i,commitment:a="confirmed",chunkCount:c=100}=L({batchRequest:!1},n),d=Lt(t,c),p=new Array(d.length).fill([]);if(i){let g=d.map(x=>{let k=o._buildArgs([x.map(b=>b.toBase58())],a,"base64");return{methodName:"getMultipleAccounts",args:k}}),P=Lt(g,10);p=(await(await Promise.all(P.map(async x=>await o._rpcBatchRequest(x)))).flat()).map(x=>(x.error&&Rt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${x.error.message}`),x.result.value.map(k=>{if(k){let{data:b,executable:C,lamports:I,owner:A,rentEpoch:T}=k;return b.length!==2&&b[1]!=="base64"&&Rt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(b[0],"base64"),executable:C,lamports:I,owner:new Mo(A),rentEpoch:T}}return null})))}else try{p=await Promise.all(d.map(g=>o.getMultipleAccountsInfo(g,a)))}catch(g){g instanceof Error&&Rt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${g.message}`)}return p.flat()}async function we(o,t,n){let i=await pe(o,t.map(a=>a.pubkey),n);return t.map((a,c)=>V(L({},a),{accountInfo:i[c]}))}import xe from"bn.js";import WC from"decimal.js";import qo from"big.js";import ct from"bn.js";import Fo from"toformat";var vo=Fo,Xe=vo;import ut from"big.js";import _o from"bn.js";import Eo from"decimal.js-light";import Ye from"bn.js";var An=9007199254740991;function U(o){let t=_("Raydium_parseBigNumberish");if(o instanceof Ye)return o;if(typeof o=="string"){if(o.match(/^-?[0-9]+$/))return new Ye(o);t.logWithError(`invalid BigNumberish string: ${o}`)}return typeof o=="number"?(o%1&&t.logWithError(`BigNumberish number underflow: ${o}`),(o>=An||o<=-An)&&t.logWithError(`BigNumberish number overflow: ${o}`),new Ye(String(o))):typeof o=="bigint"?new Ye(o.toString()):(t.error(`invalid BigNumberish value: ${o}`),new Ye(0))}var st=_("module/fraction"),Ot=Xe(ut),Qe=Xe(Eo),Do={[0]:Qe.ROUND_DOWN,[1]:Qe.ROUND_HALF_UP,[2]:Qe.ROUND_UP},Wo={[0]:ut.roundDown,[1]:ut.roundHalfUp,[2]:ut.roundUp},W=class{constructor(t,n=new _o(1)){this.numerator=U(t),this.denominator=U(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new W(this.denominator,this.numerator)}add(t){let n=t instanceof W?t:new W(U(t));return this.denominator.eq(n.denominator)?new W(this.numerator.add(n.numerator),this.denominator):new W(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(t){let n=t instanceof W?t:new W(U(t));return this.denominator.eq(n.denominator)?new W(this.numerator.sub(n.numerator),this.denominator):new W(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(t){let n=t instanceof W?t:new W(U(t));return new W(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(t){let n=t instanceof W?t:new W(U(t));return new W(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(t,n={groupSeparator:""},i=1){Number.isInteger(t)||st.logWithError(`${t} is not an integer.`),t<=0&&st.logWithError(`${t} is not positive.`),Qe.set({precision:t+1,rounding:Do[i]});let a=new Qe(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(t);return a.toFormat(a.decimalPlaces(),n)}toFixed(t,n={groupSeparator:""},i=1){return Number.isInteger(t)||st.logWithError(`${t} is not an integer.`),t<0&&st.logWithError(`${t} is negative.`),Ot.DP=t,Ot.RM=Wo[i]||1,new Ot(this.numerator.toString()).div(this.denominator.toString()).toFormat(t,n)}isZero(){return this.numerator.isZero()}};var Uo=_("Raydium_amount"),wn=Xe(qo);function Go(o,t){let n="0",i="0";if(o.includes(".")){let a=o.split(".");a.length===2?([n,i]=a,i=i.padEnd(t,"0")):Uo.logWithError(`invalid number string, num: ${o}`)}else n=o;return[n,i.slice(0,t)||i]}var ae=class extends W{constructor(n,i,a=!0,c){let d=new ct(0),p=Nt.pow(new ct(n.decimals));if(a)d=U(i);else{let g=new ct(0),P=new ct(0);if(typeof i=="string"||typeof i=="number"||typeof i=="bigint"){let[y,x]=Go(i.toString(),n.decimals);g=U(y),P=U(x)}g=g.mul(p),d=g.add(P)}super(d,p);this.logger=_(c||"TokenAmount"),this.token=n}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(n){return this.token.equals(n.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(n.raw)}lt(n){return this.token.equals(n.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(n.raw)}add(n){return this.token.equals(n.token)||this.logger.logWithError("add token not equals"),new ae(this.token,this.raw.add(n.raw))}subtract(n){return this.token.equals(n.token)||this.logger.logWithError("sub token not equals"),new ae(this.token,this.raw.sub(n.raw))}toSignificant(n=this.token.decimals,i,a=0){return super.toSignificant(n,i,a)}toFixed(n=this.token.decimals,i,a=0){return n>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(n,i,a)}toExact(n={groupSeparator:""}){return wn.DP=this.token.decimals,new wn(this.numerator.toString()).div(this.denominator.toString()).toFormat(n)}};import{PublicKey as zo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kn}from"@solana/spl-token";var lt={chainId:101,address:zo.default.toBase58(),programId:kn.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:kn.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 vt}from"@solana/web3.js";import{PublicKey as X,SystemProgram as Tn,SYSVAR_RENT_PUBKEY as Xo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Yo}from"@solana/spl-token";function Re({pubkey:o,isSigner:t=!1,isWritable:n=!0}){return{pubkey:o,isWritable:n,isSigner:t}}var Qo=[Re({pubkey:Yo,isWritable:!1}),Re({pubkey:Tn.programId,isWritable:!1}),Re({pubkey:Xo,isWritable:!1})];function hn({publicKey:o,transformSol:t}){let n=Mt(o.toString());if(n instanceof X)return t&&n.equals(he)?Pe:n;if(t&&n.toString()===he.toBase58())return Pe;if(typeof n=="string"){if(n===X.default.toBase58())return X.default;try{return new X(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Mt(o){try{return new X(o)}catch{return o}}var Ft=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ze=new X("SysvarRent111111111111111111111111111111111"),Ks=new X("SysvarC1ock11111111111111111111111111111111"),mt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Zo=new X("Sysvar1nstructions1111111111111111111111111"),Ho=Tn.programId,xs=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Cs=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Rs=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ls=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Os=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ns=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ms=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Fs=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),vs=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Vs=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),_s=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Pe=new X("So11111111111111111111111111111111111111112"),he=X.default;var Vt=class{constructor({mint:t,decimals:n,symbol:i,name:a,skipMint:c=!1,isToken2022:d=!1}){if(t===he.toBase58()||t instanceof vt&&he.equals(t)){this.decimals=fe.decimals,this.symbol=fe.symbol,this.name=fe.name,this.mint=new vt(fe.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=i||t.toString().substring(0,6),this.name=a||t.toString().substring(0,6),this.mint=c?vt.default:hn({publicKey:t}),this.isToken2022=d}equals(t){return this===t?!0:this.mint.equals(t.mint)}},ee=Vt;ee.WSOL=new Vt(V(L({},fe),{mint:fe.address}));var _t=class{constructor({decimals:t,symbol:n="UNKNOWN",name:i="UNKNOWN"}){this.decimals=t,this.symbol=n,this.name=i}equals(t){return this===t}},dt=_t;dt.SOL=new _t(lt);import jo from"bn.js";var In=new W(new jo(100)),Ae=class extends W{toSignificant(t=5,n,i){return this.mul(In).toSignificant(t,n,i)}toFixed(t=2,n,i){return this.mul(In).toFixed(t,n,i)}};var $o=_("Raydium_price"),ce=class extends W{constructor(n){let{baseToken:i,quoteToken:a,numerator:c,denominator:d}=n;super(c,d);this.baseToken=i,this.quoteToken=a,this.scalar=new W(Et(i.decimals),Et(a.decimals))}get raw(){return new W(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new ce({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(n){this.quoteToken!==n.baseToken&&$o.logWithError("mul token not equals");let i=super.mul(n);return new ce({baseToken:this.baseToken,quoteToken:n.quoteToken,denominator:i.denominator,numerator:i.numerator})}toSignificant(n=this.quoteToken.decimals,i,a){return this.adjusted.toSignificant(n,i,a)}toFixed(n=this.quoteToken.decimals,i,a){return this.adjusted.toFixed(n,i,a)}};import{merge as Ux}from"lodash";import uu from"axios";var Bn={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"},Jo=V(L({},Bn),{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 Lu=_("Raydium_Api");import{PublicKey as Hl,SystemProgram as jl}from"@solana/web3.js";import{AccountLayout as nm,createAssociatedTokenAccountIdempotentInstruction as om,TOKEN_PROGRAM_ID as im,TOKEN_2022_PROGRAM_ID as rm}from"@solana/spl-token";import{PublicKey as Fe,sendAndConfirmTransaction as zt,SystemProgram as ri,Transaction as $e,TransactionMessage as Je,VersionedTransaction as et}from"@solana/web3.js";import ai from"axios";import{PublicKey as Dt,AddressLookupTableAccount as Ne}from"@solana/web3.js";async function Wt({connection:o,address:t,cluster:n="mainnet"}){let i=await pe(o,[...new Set(t.map(c=>c.toString()))].map(c=>new Dt(c))),a={};for(let c=0;c<t.length;c++){let d=i[c],p=t[c];if(!d)continue;let g=new Ne({key:p,state:Ne.deserialize(d.data)});a[p.toString()]=g,n==="devnet"?Oe[p.toString()]=g:Le[p.toString()]=g}return a}var Le={},qt=async o=>{let t="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Le[t])return Le;let n=new Dt(t),i=await o.getAccountInfo(n);return i&&(Le[t]=new Ne({key:n,state:Ne.deserialize(i.data)})),Le},Oe={},Ut=async o=>{let t="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Oe[t])return Oe;let n=new Dt(t),i=await o.getAccountInfo(n);return i&&(Oe[t]=new Ne({key:n,state:Ne.deserialize(i.data)})),Oe};var H={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 Sn,Keypair as xn,PublicKey as ei,Transaction as Cn,TransactionMessage as ti,VersionedTransaction as Rn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ni}from"@solana/spl-token";var Kn=_("Raydium_txUtil"),Ln=1644;function pt(o){let t=[],n=[];return o.microLamports&&(t.push(Sn.setComputeUnitPrice({microLamports:o.microLamports})),n.push(H.SetComputeUnitPrice)),o.units&&(t.push(Sn.setComputeUnitLimit({units:o.units})),n.push(H.SetComputeUnitLimit)),{instructions:t,instructionTypes:n}}async function Me(o,t){var i,a;let n=t!=null?t:"confirmed";return(a=await((i=o.getLatestBlockhash)==null?void 0:i.call(o,{commitment:n})))==null?void 0:a.blockhash}async function ft(o,t){return o.getSignatureStatuses([t]),new Promise((n,i)=>{let a=setTimeout(i,6e4);o.onSignature(t,c=>{if(clearTimeout(a),!c.err){n("");return}i(Object.assign(c.err,{txId:t}))},"confirmed")})}function Gt(o,t){o.length<1&&Kn.logWithError(`no instructions provided: ${o.toString()}`),t.length<1&&Kn.logWithError(`no signers provided:, ${t.toString()}`);let n=new Cn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=t[0],n.add(...o);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Ln}catch{return!1}}function se(o,t){let[n,i]=ei.findProgramAddressSync(o,t);return{publicKey:n,nonce:i}}function He({instructions:o,payer:t,signers:n}){return Gt(o,[t,...n])}function je({instructions:o,payer:t,lookupTableAddressAccount:n,recentBlockhash:i=xn.generate().publicKey.toString()}){let c=new ti({payerKey:t,recentBlockhash:i,instructions:o}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Rn(c).serialize()).toString("base64").length<Ln}catch{return!1}}var oi=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o),ii=o=>{let t=o.serialize({requireAllSignatures:!1,verifySignatures:!1});o instanceof Rn&&(t=oi(t));try{return t instanceof Buffer?t.toString("base64"):Buffer.from(t).toString("base64")}catch{return t.toString("base64")}};function Ie(o){let t=[];return o.forEach(n=>{n instanceof Cn&&(n.recentBlockhash||(n.recentBlockhash=ni.toBase58()),n.feePayer||(n.feePayer=xn.generate().publicKey)),t.push(ii(n))}),console.log("simulate tx string:",t),t}var yt=2e3,bt=class{constructor(t){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=t.connection,this.feePayer=t.feePayer,this.signAllTransactions=t.signAllTransactions,this.owner=t.owner,this.cluster=t.cluster,this.blockhashCommitment=t.blockhashCommitment,this.loopMultiTxStatus=!!t.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 i;let t=(await ai.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(i=t==null?void 0:t[15])!=null?i:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(t){if(t){let{instructions:n,instructionTypes:i}=pt(t);return this.instructions.unshift(...n),this.instructionTypes.unshift(...i),!0}return!1}addTipInstruction(t){var n;return t?(this.endInstructions.push(ri.transfer({fromPubkey:(n=t.feePayer)!=null?n:this.feePayer,toPubkey:new Fe(t.address),lamports:BigInt(t.amount.toString())})),this.endInstructionTypes.push(H.TransferTip),!0):!1}async calComputeBudget({config:t,defaultIns:n}){try{let i=t||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(i))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:t=[],endInstructions:n=[],signers:i=[],instructionTypes:a=[],endInstructionTypes:c=[],lookupTableAddress:d=[]}){return this.instructions.push(...t),this.endInstructions.push(...n),this.signers.push(...i),this.instructionTypes.push(...a),this.endInstructionTypes.push(...c),this.lookupTableAddress.push(...d.filter(p=>p!==Fe.default.toString())),this}async versionBuild({txVersion:t,extInfo:n,lookupTableAddress:i}){return t===0?await this.buildV0(V(L({},n||{}),{lookupTableAddress:i})):this.build(n)}build(t){var i;let n=new $e;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((i=this.owner)==null?void 0:i.signer)&&!this.signers.some(a=>a.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:n,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async a=>{var y;let{recentBlockHash:c,skipPreflight:d=!0,sendAndConfirm:p,notSendToRpc:g}=a||{},P=c!=null?c:await Me(this.connection,this.blockhashCommitment);if(n.recentBlockhash=P,this.signers.length&&n.sign(...this.signers),Ie([n]),(y=this.owner)!=null&&y.isKeyPair)return{txId:p?await zt(this.connection,n,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:d}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:d}),signedTx:n};if(this.signAllTransactions){let x=await this.signAllTransactions([n]);if(this.signers.length)for(let k of x)try{k.sign(...this.signers)}catch{}return{txId:g?"":await this.connection.sendRawTransaction(x[0].serialize(),{skipPreflight:d}),signedTx:x[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:t||{}}}buildMultiTx(t){var P;let{extraPreBuildData:n=[],extInfo:i}=t,{transaction:a}=this.build(i),c=n.filter(y=>y.transaction.instructions.length>0),d=[a,...c.map(y=>y.transaction)],p=[this.signers,...c.map(y=>y.signers)],g=[...this.instructionTypes,...c.map(y=>y.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&p.forEach(y=>{y.some(x=>x.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:d,signers:p,instructionTypes:g,execute:async y=>{var T;let{sequentially:x,onTxUpdate:k,skipTxCount:b=0,recentBlockHash:C,skipPreflight:I=!0}=y||{},A=C!=null?C:await Me(this.connection,this.blockhashCommitment);if((T=this.owner)!=null&&T.isKeyPair){if(x){let h=[],F=0;for(let v of d){if(++F,F<=b)continue;let w=await zt(this.connection,v,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:I});h.push(w)}return{txIds:h,signedTxs:d}}return{txIds:await await Promise.all(d.map(async h=>(h.recentBlockhash=A,await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:I})))),signedTxs:d}}if(this.signAllTransactions){let h=d.map((v,w)=>(v.recentBlockhash=A,p[w].length&&v.sign(...p[w]),v));Ie(h);let F=await this.signAllTransactions(h);if(x){let v=0,w=[],B=async()=>{if(!F[v])return;let S=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:I});w.push({txId:S,status:"sent",signedTx:F[v]}),k==null||k([...w]),v++;let R=!1,O=null,E=null,re=G=>{O!==null&&clearInterval(O),E!==null&&this.connection.removeSignatureListener(E);let q=w.findIndex(J=>J.txId===S);if(q>-1){if(w[q].status==="error"||w[q].status==="success")return;w[q].status=G.err?"error":"success"}k==null||k([...w]),G.err||B()};this.loopMultiTxStatus&&(O=setInterval(async()=>{var G;if(R){clearInterval(O);return}try{let q=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});q&&(R=!0,clearInterval(O),re({err:((G=q.meta)==null?void 0:G.err)||null}),console.log("tx status from getTransaction:",S))}catch(q){R=!0,clearInterval(O),console.error("getTransaction timeout:",q,S)}},yt)),E=this.connection.onSignature(S,G=>{if(R){this.connection.removeSignatureListener(E);return}R=!0,re(G)},"confirmed"),this.connection.getSignatureStatus(S)};return await B(),{txIds:w.map(S=>S.txId),signedTxs:F}}else{let v=[];for(let w=0;w<F.length;w+=1){let B=await this.connection.sendRawTransaction(F[w].serialize(),{skipPreflight:I});v.push(B)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async versionMultiBuild({extraPreBuildData:t,txVersion:n,extInfo:i}){return n===0?await this.buildV0MultiTx({extraPreBuildData:t,buildProps:i||{}}):this.buildMultiTx({extraPreBuildData:t,extInfo:i})}async buildV0(t){var I;let C=t||{},{lookupTableCache:n={},lookupTableAddress:i=[],forerunCreate:a,recentBlockhash:c}=C,d=de(C,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),p=L(L({},this.cluster==="devnet"?await Ut(this.connection):await qt(this.connection)),n),g=Array.from(new Set([...i,...this.lookupTableAddress])),P=[];for(let A of g)p[A]===void 0&&P.push(new Fe(A));let y=await Wt({connection:this.connection,address:P});for(let[A,T]of Object.entries(y))p[A]=T;let x=a?Fe.default.toBase58():c!=null?c:await Me(this.connection,this.blockhashCommitment),k=new Je({payerKey:this.feePayer,recentBlockhash:x,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(p));((I=this.owner)==null?void 0:I.signer)&&!this.signers.some(A=>A.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let b=new et(k);return b.sign(this.signers),{builder:this,transaction:b,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async A=>{var v;let{skipPreflight:T=!0,sendAndConfirm:h,notSendToRpc:F}=A||{};if(Ie([b]),(v=this.owner)!=null&&v.isKeyPair){let w=await this.connection.sendTransaction(b,{skipPreflight:T});return h&&await ft(this.connection,w),{txId:w,signedTx:b}}if(this.signAllTransactions){let w=await this.signAllTransactions([b]);if(this.signers.length)for(let B of w)try{B.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(w[0],{skipPreflight:T}),signedTx:w[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:d||{}}}async buildV0MultiTx(t){var P;let{extraPreBuildData:n=[],buildProps:i}=t,{transaction:a}=await this.buildV0(i),c=n.filter(y=>y.builder.instructions.length>0),d=[a,...c.map(y=>y.transaction)],p=[this.signers,...c.map(y=>y.signers)],g=[...this.instructionTypes,...c.map(y=>y.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&p.forEach(y=>{y.some(x=>x.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),d.forEach(async(y,x)=>{y.sign(p[x])}),{builder:this,transactions:d,signers:p,instructionTypes:g,buildProps:i,execute:async y=>{var I;let{sequentially:x,onTxUpdate:k,recentBlockHash:b,skipPreflight:C=!0}=y||{};if(b&&d.forEach(A=>A.message.recentBlockhash=b),Ie(d),(I=this.owner)!=null&&I.isKeyPair){if(x){let A=[];for(let T of d){let h=await this.connection.sendTransaction(T,{skipPreflight:C});await ft(this.connection,h),A.push(h)}return{txIds:A,signedTxs:d}}return{txIds:await Promise.all(d.map(async A=>await this.connection.sendTransaction(A,{skipPreflight:C}))),signedTxs:d}}if(this.signAllTransactions){let A=await this.signAllTransactions(d);if(x){let T=0,h=[],F=async()=>{if(!A[T])return;let v=await this.connection.sendTransaction(A[T],{skipPreflight:C});h.push({txId:v,status:"sent",signedTx:A[T]}),k==null||k([...h]),T++;let w=!1,B=null,S=null,R=O=>{B!==null&&clearInterval(B),S!==null&&this.connection.removeSignatureListener(S);let E=h.findIndex(re=>re.txId===v);if(E>-1){if(h[E].status==="error"||h[E].status==="success")return;h[E].status=O.err?"error":"success"}k==null||k([...h]),O.err||F()};this.loopMultiTxStatus&&(B=setInterval(async()=>{var O;if(w){clearInterval(B);return}try{let E=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});E&&(w=!0,clearInterval(B),R({err:((O=E.meta)==null?void 0:O.err)||null}),console.log("tx status from getTransaction:",v))}catch(E){w=!0,clearInterval(B),console.error("getTransaction timeout:",E,v)}},yt)),S=this.connection.onSignature(v,O=>{if(w){this.connection.removeSignatureListener(S);return}w=!0,R(O)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:A}}else{let T=[];for(let h=0;h<A.length;h+=1){let F=await this.connection.sendTransaction(A[h],{skipPreflight:C});T.push(F)}return{txIds:T,signedTxs:A}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuild(t){var k;let x=t||{},{splitIns:n=[],computeBudgetConfig:i}=x,a=de(x,["splitIns","computeBudgetConfig"]),c=i?pt(i):{instructions:[],instructionTypes:[]},d=this.signers.reduce((b,C)=>V(L({},b),{[C.publicKey.toBase58()]:C}),{}),p=[],g=[],P=[],y=0;if(this.allInstructions.forEach(b=>{let C=[...P,b],I=i?[...c.instructions,...C]:C,T=[...new Set(C.map(h=>h.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(h=>new Fe(h));if(b!==n[y]&&P.length<12&&(He({instructions:I,payer:this.feePayer,signers:T})||He({instructions:C,payer:this.feePayer,signers:T})))P.push(b);else{if(P.length===0)throw Error("item ins too big");y+=b===n[y]?1:0,He({instructions:i?[...c.instructions,...P]:[...P],payer:this.feePayer,signers:T})?p.push(new $e().add(...c.instructions,...P)):p.push(new $e().add(...P)),g.push(Array.from(new Set(P.map(h=>h.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(h=>d[h]).filter(h=>h!==void 0)),P=[b]}}),P.length>0){let C=[...new Set(P.map(I=>I.keys.filter(A=>A.isSigner).map(A=>A.pubkey.toString())).flat()).values()].map(I=>d[I]).filter(I=>I!==void 0);He({instructions:i?[...c.instructions,...P]:[...P],payer:this.feePayer,signers:C.map(I=>I.publicKey)})?p.push(new $e().add(...c.instructions,...P)):p.push(new $e().add(...P)),g.push(C)}return p.forEach(b=>b.feePayer=this.feePayer),(k=this.owner)!=null&&k.signer&&g.forEach(b=>{b.some(C=>C.publicKey.equals(this.owner.publicKey))||b.push(this.owner.signer)}),{builder:this,transactions:p,signers:g,instructionTypes:this.instructionTypes,execute:async b=>{var v;let{sequentially:C,onTxUpdate:I,skipTxCount:A=0,recentBlockHash:T,skipPreflight:h=!0}=b||{},F=T!=null?T:await Me(this.connection,this.blockhashCommitment);if(p.forEach(async(w,B)=>{w.recentBlockhash=F,g[B].length&&w.sign(...g[B])}),Ie(p),(v=this.owner)!=null&&v.isKeyPair){if(C){let w=0,B=[];for(let S of p){if(++w,w<=A){B.push("tx skipped");continue}let R=await zt(this.connection,S,this.signers.find(O=>O.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:h});B.push(R)}return{txIds:B,signedTxs:p}}return{txIds:await Promise.all(p.map(async w=>await this.connection.sendRawTransaction(w.serialize(),{skipPreflight:h}))),signedTxs:p}}if(this.signAllTransactions){let w=await this.signAllTransactions(p.slice(A,p.length)),B=[...p.slice(0,A),...w];if(C){let S=0,R=[],O=async()=>{if(!B[S])return;S<A&&(R.push({txId:"",status:"success",signedTx:B[S]}),I==null||I([...R]),S++,O());let E=await this.connection.sendRawTransaction(B[S].serialize(),{skipPreflight:h});R.push({txId:E,status:"sent",signedTx:B[S]}),I==null||I([...R]),S++;let re=!1,G=null,q=null,J=z=>{G!==null&&clearInterval(G),q!==null&&this.connection.removeSignatureListener(q);let ne=R.findIndex(be=>be.txId===E);if(ne>-1){if(R[ne].status==="error"||R[ne].status==="success")return;R[ne].status=z.err?"error":"success"}I==null||I([...R]),z.err||O()};this.loopMultiTxStatus&&(G=setInterval(async()=>{var z;if(re){clearInterval(G);return}try{let ne=await this.connection.getTransaction(E,{commitment:"confirmed",maxSupportedTransactionVersion:0});ne&&(re=!0,clearInterval(G),J({err:((z=ne.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",E))}catch(ne){re=!0,clearInterval(G),console.error("getTransaction timeout:",ne,E)}},yt)),q=this.connection.onSignature(E,z=>{if(re){this.connection.removeSignatureListener(q);return}re=!0,J(z)},"confirmed"),this.connection.getSignatureStatus(E)};return await O(),{txIds:R.map(E=>E.txId),signedTxs:B}}else{let S=[];for(let R=0;R<B.length;R+=1){let O=await this.connection.sendRawTransaction(B[R].serialize(),{skipPreflight:h});S.push(O)}return{txIds:S,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}async sizeCheckBuildV0(t){var v;let F=t||{},{computeBudgetConfig:n,splitIns:i=[],lookupTableCache:a={},lookupTableAddress:c=[],insCountLimit:d=12}=F,p=de(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),g=L(L({},this.cluster==="devnet"?await Ut(this.connection):await qt(this.connection)),a),P=Array.from(new Set([...this.lookupTableAddress,...c])),y=[];for(let w of P)g[w]===void 0&&y.push(new Fe(w));let x=await Wt({connection:this.connection,address:y});for(let[w,B]of Object.entries(x))g[w]=B;let k=n?pt(n):{instructions:[],instructionTypes:[]},b=await Me(this.connection,this.blockhashCommitment),C=this.signers.reduce((w,B)=>V(L({},w),{[B.publicKey.toBase58()]:B}),{}),I=[],A=[],T=[],h=0;if(this.allInstructions.forEach(w=>{let B=[...T,w],S=n?[...k.instructions,...B]:B;if(w!==i[h]&&T.length<d&&(je({instructions:S,payer:this.feePayer,lookupTableAddressAccount:g})||je({instructions:B,payer:this.feePayer,lookupTableAddressAccount:g})))T.push(w);else{if(T.length===0)throw Error("item ins too big");h+=w===i[h]?1:0;let R={};for(let O of[...new Set(P)])g[O]!==void 0&&(R[O]=g[O]);if(n&&je({instructions:[...k.instructions,...T],payer:this.feePayer,lookupTableAddressAccount:g,recentBlockhash:b})){let O=new Je({payerKey:this.feePayer,recentBlockhash:b,instructions:[...k.instructions,...T]}).compileToV0Message(Object.values(g));I.push(new et(O))}else{let O=new Je({payerKey:this.feePayer,recentBlockhash:b,instructions:[...T]}).compileToV0Message(Object.values(g));I.push(new et(O))}A.push(Array.from(new Set(T.map(O=>O.keys.filter(E=>E.isSigner).map(E=>E.pubkey.toString())).flat())).map(O=>C[O]).filter(O=>O!==void 0)),T=[w]}}),T.length>0){let B=[...new Set(T.map(S=>S.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(S=>C[S]).filter(S=>S!==void 0);if(n&&je({instructions:[...k.instructions,...T],payer:this.feePayer,lookupTableAddressAccount:g,recentBlockhash:b})){let S=new Je({payerKey:this.feePayer,recentBlockhash:b,instructions:[...k.instructions,...T]}).compileToV0Message(Object.values(g));I.push(new et(S))}else{let S=new Je({payerKey:this.feePayer,recentBlockhash:b,instructions:[...T]}).compileToV0Message(Object.values(g));I.push(new et(S))}A.push(B)}return(v=this.owner)!=null&&v.signer&&A.forEach(w=>{w.some(B=>B.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),I.forEach((w,B)=>{w.sign(A[B])}),{builder:this,transactions:I,buildProps:t,signers:A,instructionTypes:this.instructionTypes,execute:async w=>{var re;let{sequentially:B,onTxUpdate:S,skipTxCount:R=0,recentBlockHash:O,skipPreflight:E=!0}=w||{};if(I.map(async(G,q)=>{A[q].length&&G.sign(A[q]),O&&(G.message.recentBlockhash=O)}),Ie(I),(re=this.owner)!=null&&re.isKeyPair){if(B){let G=0,q=[];for(let J of I){if(++G,G<=R){console.log("skip tx: ",G),q.push("tx skipped");continue}let z=await this.connection.sendTransaction(J,{skipPreflight:E});await ft(this.connection,z),q.push(z)}return{txIds:q,signedTxs:I}}return{txIds:await Promise.all(I.map(async G=>await this.connection.sendTransaction(G,{skipPreflight:E}))),signedTxs:I}}if(this.signAllTransactions){let G=await this.signAllTransactions(I.slice(R,I.length)),q=[...I.slice(0,R),...G];if(B){let J=0,z=[],ne=async()=>{if(!q[J])return;if(J<R){z.push({txId:"",status:"success",signedTx:q[J]}),S==null||S([...z]),J++,ne();return}let be=await this.connection.sendTransaction(q[J],{skipPreflight:E});z.push({txId:be,status:"sent",signedTx:q[J]}),S==null||S([...z]),J++;let Ge=!1,Ce=null,rt=null,pn=Te=>{Ce!==null&&clearInterval(Ce),rt!==null&&this.connection.removeSignatureListener(rt);let ge=z.findIndex(xo=>xo.txId===be);if(ge>-1){if(z[ge].status==="error"||z[ge].status==="success")return;z[ge].status=Te.err?"error":"success"}S==null||S([...z]),Te.err||ne()};this.loopMultiTxStatus&&(Ce=setInterval(async()=>{var Te;if(Ge){clearInterval(Ce);return}try{let ge=await this.connection.getTransaction(be,{commitment:"confirmed",maxSupportedTransactionVersion:0});ge&&(Ge=!0,clearInterval(Ce),pn({err:((Te=ge.meta)==null?void 0:Te.err)||null}),console.log("tx status from getTransaction:",be))}catch(ge){Ge=!0,clearInterval(Ce),console.error("getTransaction timeout:",ge,be)}},yt)),rt=this.connection.onSignature(be,Te=>{if(Ge){this.connection.removeSignatureListener(rt);return}Ge=!0,pn(Te)},"confirmed"),this.connection.getSignatureStatus(be)};return ne(),{txIds:[],signedTxs:q}}else{let J=[];for(let z=0;z<q.length;z+=1){let ne=await this.connection.sendTransaction(q[z],{skipPreflight:E});J.push(ne)}return{txIds:J,signedTxs:q}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:p||{}}}};var Xt=(...o)=>o.map(t=>{try{return typeof t=="object"?JSON.stringify(t):t}catch{return t}}).join(", "),oe=class{constructor({scope:t,moduleName:n}){this.disabled=!1;this.scope=t,this.logger=_(n)}createTxBuilder(t){return this.scope.checkOwner(),new bt({connection:this.scope.connection,feePayer:t||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(...t){this.logger.debug(Xt(t))}logInfo(...t){this.logger.info(Xt(t))}logAndCreateError(...t){let n=Xt(t);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Kl,SystemProgram as Cl}from"@solana/web3.js";import Ol from"bn.js";import{createCloseAccountInstruction as vl,createInitializeAccountInstruction as Vl,createTransferInstruction as _l,TOKEN_PROGRAM_ID as El}from"@solana/spl-token";import{Keypair as fl,PublicKey as yl}from"@solana/web3.js";import Pl from"bn.js";import{TOKEN_PROGRAM_ID as kl}from"@solana/spl-token";import{PublicKey as Pi}from"@solana/web3.js";import vn,{isBN as Vn}from"bn.js";import{bits as si,BitStructure as Ac,blob as ui,Blob as wc,cstr as kc,f32 as Tc,f32be as hc,f64 as Ic,f64be as Bc,greedy as Sc,Layout as ci,ns64 as Kc,ns64be as xc,nu64 as Cc,nu64be as Rc,offset as li,s16 as Lc,s16be as Oc,s24 as Nc,s24be as Mc,s32 as mi,s32be as Fc,s40 as vc,s40be as Vc,s48 as _c,s48be as Ec,s8 as Dc,seq as di,struct as Wc,Structure as pi,u16 as fi,u16be as qc,u24 as Uc,u24be as Gc,u32 as yi,u32be as zc,u40 as Xc,u40be as Yc,u48 as Qc,u48be as Zc,u8 as bi,UInt as gi,union as Hc,Union as jc,unionLayoutDiscriminator as $c,utf8 as Jc}from"@solana/buffer-layout";var gt=ci,On=pi;var Yt=gi;var Nn=bi,Q=fi;var Pt=yi;var le=mi;var Mn=di;var M=ui;var Qt=si,Fn=li;var Se=class extends gt{constructor(n,i,a){super(n,a);this.blob=M(n),this.signed=i}decode(n,i=0){let a=new vn(this.blob.decode(n,i),10,"le");return this.signed?a.fromTwos(this.span*8).clone():a}encode(n,i,a=0){return typeof n=="number"&&(n=new vn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),i,a)}},At=class extends gt{constructor(n){super(8,n);this._lower=Qt(Pt(),!1),this._upper=Qt(Pt(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,i=0){let a=this._lower.decode(n,i),c=this._upper.decode(n,i+this._lower.span);return L(L({},a),c)}encode(n,i,a=0){return this._lower.encode(n,i,a)+this._upper.encode(n,i,a+this._lower.span)}};function l(o){return new Yt(1,o)}function Y(o){return new Yt(4,o)}function e(o){return new Se(8,!1,o)}function N(o){return new Se(16,!1,o)}function _n(o){return new Se(1,!0,o)}function ve(o){return new Se(8,!0,o)}function En(o){return new Se(16,!0,o)}var tt=class extends gt{constructor(n,i,a,c){super(n.span,c);this.layout=n,this.decoder=i,this.encoder=a}decode(n,i){return this.decoder(this.layout.decode(n,i))}encode(n,i,a){return this.layout.encode(this.encoder(n),i,a)}getSpan(n,i){return this.layout.getSpan(n,i)}};function r(o){return new tt(M(32),t=>new Pi(t),t=>t.toBuffer(),o)}function ue(o){return new tt(Nn(),Ai,wi,o)}function Ai(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function wi(o){return o?1:0}function Dn(o,t){let n=Pt("length"),i=m([n,f(o,Fn(n,-n.span),"values")]);return new tt(i,({values:a})=>a,a=>({values:a}),t)}var Zt=class extends On{decode(t,n){return super.decode(t,n)}};function m(o,t,n){return new Zt(o,t,n)}function f(o,t,n){let i,a=typeof t=="number"?t:Vn(t)?t.toNumber():new Proxy(t,{get(c,d){if(!i){let p=Reflect.get(c,"count");i=Vn(p)?p.toNumber():p,Reflect.set(c,"count",i)}return Reflect.get(c,d)},set(c,d,p){return d==="count"&&(i=p),Reflect.set(c,d,p)}});return Mn(o,a,n)}var Ve=m([r("mint"),r("owner"),e("amount"),Y("delegateOption"),r("delegate"),l("state"),Y("isNativeOption"),e("isNative"),e("delegatedAmount"),Y("closeAuthorityOption"),r("closeAuthority")]);import{PublicKey as Tg,SystemProgram as hg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Bg}from"@solana/spl-token";import{PublicKey as dm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fm}from"@solana/spl-token";import{PublicKey as K}from"@solana/web3.js";var qn=new K("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Un=new K("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Gn=new K("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ht=new K("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Pm=new K("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Ti=new K("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),zn=new K("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Xn=new K("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Am=new K("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),hi=new K("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Yn=new K("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ii=new K("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Bi=new K("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Qn=new K("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),wm=new K("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Si=new K("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),jt=new K("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ki=new K("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),km=new K("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),xi=new K("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ci=new K("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ri=new K("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Tm=new K("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),hm=new K("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Im=new K("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Bm=new K("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Sm=new K("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var ke={OPEN_BOOK_PROGRAM:new K("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new K("Ray1111111111111111111111111111111111111111"),AMM_V4:new K("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new K("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new K("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new K("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new K("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new K("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new K("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new K("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new K("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new K("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:K.default,Router:new K("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new K("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new K("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new K("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new K("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new K("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new K("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new K("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new K("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new K("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new K("Ray1111111111111111111111111111111111111111")};import Fg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Ry,TOKEN_2022_PROGRAM_ID as Ly,TOKEN_PROGRAM_ID as Oy}from"@solana/spl-token";import{PublicKey as My}from"@solana/web3.js";import vy from"bn.js";import _y from"decimal.js";import{TOKEN_PROGRAM_ID as Dm}from"@solana/spl-token";import{PublicKey as Gm}from"@solana/web3.js";var Li=m([Y("mintAuthorityOption"),r("mintAuthority"),e("supply"),l("decimals"),l("isInitialized"),Y("freezeAuthorityOption"),r("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as $f,TOKEN_2022_PROGRAM_ID as Jf,TOKEN_PROGRAM_ID as ey}from"@solana/spl-token";import{Keypair as oy,PublicKey as iy,SystemProgram as ay,TransactionInstruction as sy}from"@solana/web3.js";import cy from"bn.js";import D from"bn.js";var _e=new D(1).shln(64);var Oi=new D(1).shln(128),$t=new D(1).shln(64).subn(1),Ni=new D(1).shln(128).subn(1);var Ee=new D("4295048016"),De=new D("79226673521066979257578248091"),Mi=new D("59543866431248"),Fi=new D("184467440737095516"),vi=new D("15793534762490258745");var Jt=60,nd=new D("18446743708227953217"),Vi=[{bit:0,factor:new D("fffcb933bd6fb800",16)},{bit:1,factor:new D("fff97272373d4000",16)},{bit:2,factor:new D("fff2e50f5f657000",16)},{bit:3,factor:new D("ffe5caca7e10f000",16)},{bit:4,factor:new D("ffcb9843d60f7000",16)},{bit:5,factor:new D("ff973b41fa98e800",16)},{bit:6,factor:new D("ff2ea16466c9b000",16)},{bit:7,factor:new D("fe5dee046a9a3800",16)},{bit:8,factor:new D("fcbe86c7900bb000",16)},{bit:9,factor:new D("f987a7253ac65800",16)},{bit:10,factor:new D("f3392b0822bb6000",16)},{bit:11,factor:new D("e7159475a2caf000",16)},{bit:12,factor:new D("d097f3bdfd2f2000",16)},{bit:13,factor:new D("a9f746462d9f8000",16)},{bit:14,factor:new D("70d869a156f31c00",16)},{bit:15,factor:new D("31be135f97ed3200",16)},{bit:16,factor:new D("9aa508b5b85a500",16)},{bit:17,factor:new D("5d6af8dedc582c",16)},{bit:18,factor:new D("2216e584f5fa",16)}];var nt=3,Zn=100;var Hn=10,jn=100,kt=14;var j=new D(0),We=new D(1),od=new D(-1);var id=new D("18446744073700000000");var _i=m([M(8),l("bump"),Q("index"),r("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),Q("tickSpacing"),Y("fundFeeRate"),f(Y(),1),r("fundOwner"),f(e(),3)]),Ei=m([Y("blockTimestamp"),ve("tickCumulative"),f(e(),4)]),$n=m([M(8),ue("initialized"),e("recentEpoch"),Q("observationIndex"),r("poolId"),f(Ei,Zn,"observations"),f(e(),4)]),Di=m([Q("filterPeriod"),Q("decayPeriod"),Q("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),le("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),e("lastUpdateTimestamp"),f(l(),46)]),Wi=m([l("state"),e("openTime"),e("endTime"),e("lastUpdateTime"),N("emissionsPerSecondX64"),e("totalEmissioned"),e("claimed"),r("mint"),r("vault"),r("creator"),N("growthGlobalX64")]),en=m([M(8),l("bump"),r("configId"),r("creator"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("observationId"),l("mintDecimalsA"),l("mintDecimalsB"),Q("tickSpacing"),N("liquidity"),N("sqrtPriceX64"),le("tickCurrent"),Y(),N("feeGrowthGlobalX64A"),N("feeGrowthGlobalX64B"),e("protocolFeesTokenA"),e("protocolFeesTokenB"),f(N(),4),l("status"),l("feeOn"),M(6),f(Wi,nt,"rewardInfos"),M(8*16,"tickArrayBitmap"),f(e(),4),e("fundFeesTokenA"),e("fundFeesTokenB"),e("startTime"),e("recentEpoch"),Di.replicate("dynamicFeeInfo"),f(e(),46)]),qi=m([N("growthInsideLastX64"),e("rewardAmountOwed")]),Ui=m([M(8),l("bump"),r("nftMint"),r("poolId"),le("tickLower"),le("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),e("tokenFeesOwedA"),e("tokenFeesOwedB"),f(qi,nt,"rewardInfos"),e("recentEpoch"),f(e(),7)]),ud=m([M(8),l("bump"),r("poolId"),le("tickLower"),le("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),e("tokenFeesOwedA"),e("tokenFeesOwedB"),f(N(),nt,"rewardGrowthInside"),e("recentEpoch"),f(e(),7)]),Gi=m([le("tick"),En("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),f(N(),nt,"rewardGrowthsOutsideX64"),e("orderPhase"),e("ordersAmount"),e("partFilledOrdersRemaining"),N("unfilledRatioX64"),f(Y(),3)]),Jn=m([M(8),r("poolId"),le("startTickIndex"),f(Gi,Jt,"ticks"),l("initializedTickCount"),e("recentEpoch"),f(l(),107)]),zi=m([M(8),l("bump"),f(r(),Hn,"operationOwners"),f(r(),jn,"whitelistMints")]),Xi=m([M(8),r("poolId"),r("owner"),le("tick"),ue("zeroForOne"),e("orderPhase"),e("totalAmount"),e("filledAmount"),e("settleBase"),e("settleOutput"),e("openTime"),N("unfilledRatioX64"),f(e(),4)]),eo=m([M(8),r("poolId"),M(8*8*kt,"positiveTickArrayBitmap"),M(8*8*kt,"negativeTickArrayBitmap")]),cd=m([M(8),Q("index"),Q("filterPeriod"),Q("decayPeriod"),Q("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),f(e(),8)]),Yi=m([M(8),r("wallet"),l("nonceIndex"),e("orderNonce"),f(e(),4)]),ld=m([e(),l("bump"),r("owner"),r("poolId"),r("positionId"),r("nftAccount"),f(e(),8)]),Qi=m([M(8),l("bump"),r("lockOwner"),r("poolId"),r("positionId"),r("nftAccount"),r("lockNftMint"),e("recentEpoch"),f(e(),8)]);import pd from"bn.js";var Id=Buffer.from("amm_config","utf8"),Hi=Buffer.from("pool","utf8"),ji=Buffer.from("pool_vault","utf8"),Bd=Buffer.from("pool_reward_vault","utf8"),Sd=Buffer.from("position","utf8"),Kd=Buffer.from("tick_array","utf8"),xd=Buffer.from("operation","utf8"),Cd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Rd=Buffer.from("observation","utf8"),Ld=Buffer.from("support_mint","utf8"),Od=Buffer.from("dynamic_fee_config","utf8"),Nd=Buffer.from("permission","utf8");var Md=Buffer.from("locked_position","utf8");import{sha256 as dr}from"js-sha256";import $i from"bn.js";import _d from"decimal.js";var Dd=new $i(1).shln(256).subn(1);import ip from"bn.js";import Yd from"bn.js";import Zd from"decimal.js";import cp from"bn.js";import mp from"decimal.js";import{PublicKey as jp}from"@solana/web3.js";import Jp from"bn.js";import{TOKEN_2022_PROGRAM_ID as uf,TOKEN_PROGRAM_ID as cf}from"@solana/spl-token";import pf from"decimal.js";import Dp from"bn.js";import Kp from"bn.js";import If from"bn.js";function $(o){let t=`global:${o}`;return Buffer.from(dr.digest(t)).slice(0,8)}$n.span;var gy=_("Raydium_Clmm"),Py={createPool:$("create_pool"),createCustomizablePool:$("create_customizable_pool"),createPermissionedPool:$("create_permissioned_pool"),openPositionV2:$("open_position_v2"),openPositionWithToken22Nft:$("open_position_with_token22_nft"),closePosition:$("close_position"),increaseLiquidityV2:$("increase_liquidity_v2"),decreaseLiquidityV2:$("decrease_liquidity_v2"),initializeReward:$("initialize_reward"),setRewardParams:$("set_reward_params"),updateRewardInfos:$("update_reward_infos"),collectRemainingRewards:$("collect_remaining_rewards"),swapV2:$("swap_v2"),openLimitOrder:$("open_limit_order"),increaseLimitOrder:$("increase_limit_order"),decreaseLimitOrder:$("decrease_limit_order"),settleLimitOrder:$("settle_limit_order"),closeLimitOrder:$("close_limit_order")};import{PublicKey as sn}from"@solana/web3.js";var br=m([l("instruction")]),gr=m([l("instruction")]),Pr=m([e("rewardState"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardLastUpdateTime"),e("totalReward"),e("totalRewardEmissioned"),e("rewardClaimed"),e("rewardPerSecond"),N("accRewardPerShare"),r("rewardVault"),r("rewardMint"),r("rewardSender"),e("rewardType"),f(e(),15,"padding")]),Ar=m([e("state"),e("nonce"),r("lpVault"),r("rewardVault"),r(),r(),e(),e(),e("totalReward"),N("perShareReward"),e("lastSlot"),e("perSlotReward")]),wr=m([e("state"),e("nonce"),r("lpVault"),r("rewardVaultA"),e("totalRewardA"),N("perShareRewardA"),e("perSlotRewardA"),l("option"),r("rewardVaultB"),M(7),e("totalRewardB"),N("perShareRewardB"),e("perSlotRewardB"),e("lastSlot"),r()]),kr=m([e(),e("state"),e("nonce"),e("validRewardTokenNum"),N("rewardMultiplier"),e("rewardPeriodMax"),e("rewardPeriodMin"),e("rewardPeriodExtend"),r("lpMint"),r("lpVault"),f(Pr,5,"rewardInfos"),r("creator"),r(),f(e(),32,"padding")]),so=new Proxy(Ar,{get(o,t,n){return t==="decode"?(...i)=>{let a=o.decode(...i);return V(L({},a),{version:3,rewardInfos:[{rewardVault:a.rewardVault,totalReward:a.totalReward,perSlotReward:a.perSlotReward,perShareReward:a.perShareReward}]})}:Reflect.get(o,t,n)}}),uo=new Proxy(wr,{get(o,t,n){return t==="decode"?(...i)=>{let a=o.decode(...i);return V(L({},a),{version:5,rewardInfos:[{rewardVault:a.rewardVaultA,totalReward:a.totalRewardA,perSlotReward:a.perSlotRewardA,perShareReward:a.perShareRewardA},{rewardVault:a.rewardVaultB,totalReward:a.totalRewardB,perSlotReward:a.perSlotRewardB,perShareReward:a.perShareRewardB}]})}:Reflect.get(o,t,n)}}),rn=new Proxy(kr,{get(o,t,n){return t==="decode"?(...i)=>{let a=o.decode(...i);return V(L({},a),{version:6,rewardInfos:a.rewardInfos.map(c=>{var d;return V(L({},c),{rewardType:((d=Object.entries(Ue).find(p=>String(p[1])===c.rewardType.toString()))!=null?d:["Standard SPL"])[0]})})})}:Reflect.get(o,t,n)}}),Tr=m([e("isSet"),e("rewardPerSecond"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardType")]),hr=m([l("instruction"),e("nonce"),f(Tr,5,"rewardTimeInfo")]),Ir=m([l("instruction"),e("rewardReopenTime"),e("rewardEndTime"),e("rewardPerSecond")]),Br=m([l("instruction"),e("isSet"),e("rewardPerSecond"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardType")]),gb=m([e("state"),r("id"),r("owner"),e("deposited"),f(e(),1,"rewardDebts")]),an=m([e("state"),r("id"),r("owner"),e("deposited"),f(N(),1,"rewardDebts"),e(""),e("voteLockedBalance"),f(e(),15)]),Pb=m([e("state"),r("id"),r("owner"),e("deposited"),f(e(),2,"rewardDebts")]),co=m([e("state"),r("id"),r("owner"),e("deposited"),f(N(),2,"rewardDebts"),f(e(),17)]),lo=m([e(),e("state"),r("id"),r("owner"),e("deposited"),f(N(),5,"rewardDebts"),f(e(),16)]),Sr=m([l("instruction"),e("amount")]),Kr=m([r("mint"),r("grantAuthority"),e("baselineVoteWeightScaledFactor"),e("maxExtraLockupVoteWeightScaledFactor"),e("lockupSaturationSecs"),_n("digitShift"),f(l(),7,"reserved1"),f(e(),7,"reserved2")]),mo=m([M(8),r("governanceProgramId"),r("realm"),r("realmGoverningTokenMint"),r("realmAuthority"),f(l(),32,"reserved1"),f(Kr,4,"votingMints"),ve("timeOffset"),l("bump"),f(l(),7,"reserved2"),f(e(),11,"reserved3")]),xr=m([ve("startTime"),ve("endTime"),l("kind"),f(l(),15,"reserved")]),Cr=m([f(xr,1,"lockup"),e("amountDeposited_native"),e("amountInitiallyLockedNative"),ue("isUsed"),ue("allowClawback"),l("votingMintConfigIdx"),f(l(),29,"reserved")]),po=m([M(8),r("voterAuthority"),r("registrar"),f(Cr,32,"deposits"),l("voterBump"),l("voterWweightRecordBump"),f(l(),94,"reserved")]);import{NATIVE_MINT as Kb}from"@solana/spl-token";var xb=_("Raydium_farm_config"),Rr=new sn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Lr=new sn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Cb=new sn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX"),un={3:so,5:uo,6:rn},cn={3:an,5:co,6:lo};var Ue={"Standard SPL":0,"Option tokens":1},fo={[qn.toString()]:3,[Un.toString()]:4,[Gn.toString()]:5,[Ht.toString()]:6,[ke.FARM_PROGRAM_ID_V3.toString()]:3,[ke.FARM_PROGRAM_ID_V4.toString()]:4,[ke.FARM_PROGRAM_ID_V5.toString()]:5,[ke.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as Wb,SystemProgram as qb,SYSVAR_CLOCK_PUBKEY as Ub,SYSVAR_RENT_PUBKEY as Gb,TransactionInstruction as zb}from"@solana/web3.js";import Yb from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Zb,createAssociatedTokenAccountIdempotentInstruction as Hb,TOKEN_PROGRAM_ID as jb}from"@solana/spl-token";var ug=_("Raydium_farm_instruction"),cg={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 Xg from"bn.js";import{PublicKey as rw}from"@solana/web3.js";import{AccountLayout as uw,MintLayout as cw,NATIVE_MINT as lw,TOKEN_PROGRAM_ID as dw}from"@solana/spl-token";import Zg from"bn.js";import yo from"bn.js";var Wr=new yo(25),qr=new yo(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as TP,TOKEN_PROGRAM_ID as hP}from"@solana/spl-token";import{PublicKey as BP,SystemProgram as SP,SYSVAR_RENT_PUBKEY as KP,TransactionInstruction as xP}from"@solana/web3.js";import{PublicKey as Ur}from"@solana/web3.js";import Gr from"bn.js";function zr(o){return typeof o=="object"&&o!==null&&![ee,ae,Ur,W,Gr,ce,Ae].some(t=>typeof t=="object"&&o instanceof t)}function Ke(o){return typeof o=="string"?Mt(o):Array.isArray(o)?o.map(t=>Ke(t)):zr(o)?Object.fromEntries(Object.entries(o).map(([t,n])=>[t,Ke(n)])):o}import vP from"bn.js";var Xr=m([l("instruction"),e("amountIn"),e("minAmountOut")]),Yr=m([l("instruction"),e("maxAmountIn"),e("amountOut")]),PP=m([l("instruction"),l("nonce")]),Qr=m([l("instruction"),l("nonce"),e("startTime")]),bo=m([e("status"),e("nonce"),e("maxOrder"),e("depth"),e("baseDecimal"),e("quoteDecimal"),e("state"),e("resetFlag"),e("minSize"),e("volMaxCutRatio"),e("amountWaveRatio"),e("baseLotSize"),e("quoteLotSize"),e("minPriceMultiplier"),e("maxPriceMultiplier"),e("systemDecimalValue"),e("minSeparateNumerator"),e("minSeparateDenominator"),e("tradeFeeNumerator"),e("tradeFeeDenominator"),e("pnlNumerator"),e("pnlDenominator"),e("swapFeeNumerator"),e("swapFeeDenominator"),e("baseNeedTakePnl"),e("quoteNeedTakePnl"),e("quoteTotalPnl"),e("baseTotalPnl"),e("poolOpenTime"),e("punishPcAmount"),e("punishCoinAmount"),e("orderbookToInitTime"),N("swapBaseInAmount"),N("swapQuoteOutAmount"),e("swapBase2QuoteFee"),N("swapQuoteInAmount"),N("swapBaseOutAmount"),e("swapQuote2BaseFee"),r("baseVault"),r("quoteVault"),r("baseMint"),r("quoteMint"),r("lpMint"),r("openOrders"),r("marketId"),r("marketProgramId"),r("targetOrders"),r("withdrawQueue"),r("lpVault"),r("owner"),e("lpReserve"),f(e(),3,"padding")]),AP=m([e("accountType"),e("status"),e("nonce"),e("maxOrder"),e("depth"),e("baseDecimal"),e("quoteDecimal"),e("state"),e("resetFlag"),e("minSize"),e("volMaxCutRatio"),e("amountWaveRatio"),e("baseLotSize"),e("quoteLotSize"),e("minPriceMultiplier"),e("maxPriceMultiplier"),e("systemDecimalsValue"),e("abortTradeFactor"),e("priceTickMultiplier"),e("priceTick"),e("minSeparateNumerator"),e("minSeparateDenominator"),e("tradeFeeNumerator"),e("tradeFeeDenominator"),e("pnlNumerator"),e("pnlDenominator"),e("swapFeeNumerator"),e("swapFeeDenominator"),e("baseNeedTakePnl"),e("quoteNeedTakePnl"),e("quoteTotalPnl"),e("baseTotalPnl"),e("poolOpenTime"),e("punishPcAmount"),e("punishCoinAmount"),e("orderbookToInitTime"),N("swapBaseInAmount"),N("swapQuoteOutAmount"),N("swapQuoteInAmount"),N("swapBaseOutAmount"),e("swapQuote2BaseFee"),e("swapBase2QuoteFee"),r("baseVault"),r("quoteVault"),r("baseMint"),r("quoteMint"),r("lpMint"),r("modelDataAccount"),r("openOrders"),r("marketId"),r("marketProgramId"),r("targetOrders"),r("owner"),f(e(),64,"padding")]),Zr=m([l("instruction"),e("baseAmountIn"),e("quoteAmountIn"),e("fixedSide"),e("otherAmountMin")]),Hr=m([l("instruction"),e("lpAmount"),e("baseAmountMin"),e("quoteAmountMin")]);var jr=m([e("fee")]);var EP=_("Raydium_liquidity_instruction");var $r=5e4,Jr=m([e("x"),e("y"),e("price")]),UP=m([e("accountType"),e("status"),e("multiplier"),e("validDataCount"),f(Jr,$r,"DataElement")]);import{PublicKey as tA}from"@solana/web3.js";import oA from"decimal.js";import{TOKEN_PROGRAM_ID as rA}from"@solana/spl-token";import{PublicKey as YP}from"@solana/web3.js";var HP=_("Raydium_liquidity_serum");import Ow from"bn.js";import Mw from"decimal.js";import{TOKEN_PROGRAM_ID as OA}from"@solana/spl-token";import{PublicKey as MA}from"@solana/web3.js";import vA from"bn.js";import{SystemProgram as AA,SYSVAR_RENT_PUBKEY as wA,Transaction as kA,TransactionInstruction as TA}from"@solana/web3.js";import{createInitializeAccountInstruction as IA,TOKEN_PROGRAM_ID as BA}from"@solana/spl-token";function ea(o="accountFlags"){let t=new At(o);return t.addBoolean("initialized"),t.addBoolean("market"),t.addBoolean("openOrders"),t.addBoolean("requestQueue"),t.addBoolean("eventQueue"),t.addBoolean("bids"),t.addBoolean("asks"),t}var ta=m([M(5),ea("accountFlags"),r("ownAddress"),e("vaultSignerNonce"),r("baseMint"),r("quoteMint"),r("baseVault"),e("baseDepositsTotal"),e("baseFeesAccrued"),r("quoteVault"),e("quoteDepositsTotal"),e("quoteFeesAccrued"),e("quoteDustThreshold"),r("requestQueue"),r("eventQueue"),r("bids"),r("asks"),e("baseLotSize"),e("quoteLotSize"),e("feeRateBps"),e("referrerRebatesAccrued"),M(7)]);import{PublicKey as rT}from"@solana/web3.js";import{AccountLayout as sT,NATIVE_MINT as uT,TOKEN_2022_PROGRAM_ID as cT,TOKEN_PROGRAM_ID as lT,createAssociatedTokenAccountIdempotentInstruction as mT}from"@solana/spl-token";import ik from"bn.js";import ua from"bn.js";var Gw=new ua(0);import Hw from"bn.js";import ca from"bn.js";var It=new ca(1e6);import AT from"bn.js";import kT from"decimal.js";import{PublicKey as Tk,TransactionInstruction as hk,Keypair as Bk,SystemProgram as Sk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as xk,TOKEN_2022_PROGRAM_ID as Ck,TOKEN_PROGRAM_ID as Rk}from"@solana/spl-token";var ck=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),lk=Buffer.from("amm_config","utf8"),mk=Buffer.from("pool","utf8"),dk=Buffer.from("pool_lp_mint","utf8"),pk=Buffer.from("pool_vault","utf8"),fk=Buffer.from("observation","utf8"),yk=Buffer.from("permission","utf8"),bk=Buffer.from("support_mint","utf8");var gk=Buffer.from("locked_liquidity","utf8");var Vk=_("Raydium_cpmm"),_k={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 da=m([M(8),l("bump"),ue("disableCreatePool"),Q("index"),e("tradeFeeRate"),e("protocolFeeRate"),e("fundFeeRate"),e("createPoolFee"),r("protocolOwner"),r("fundOwner"),e("creatorFeeRate"),f(e(),15)]),go=m([M(8),r("configId"),r("poolCreator"),r("vaultA"),r("vaultB"),r("mintLp"),r("mintA"),r("mintB"),r("mintProgramA"),r("mintProgramB"),r("observationId"),l("bump"),l("status"),l("lpDecimals"),l("mintDecimalA"),l("mintDecimalB"),e("lpAmount"),e("protocolFeesMintA"),e("protocolFeesMintB"),e("fundFeesMintA"),e("fundFeesMintB"),e("openTime"),e("epoch"),l("feeOn"),ue("enableCreatorFee"),f(l(),6),e("creatorFeesMintA"),e("creatorFeesMintB"),f(e(),28)]),Wk=m([M(8),r("configId"),f(e(),30)]);import{PublicKey as dK,SystemProgram as pK}from"@solana/web3.js";import{createTransferInstruction as yK,TOKEN_PROGRAM_ID as bK,TOKEN_2022_PROGRAM_ID as gK,createAssociatedTokenAccountIdempotentInstruction as PK,createSyncNativeInstruction as wK,createTransferCheckedInstruction as kK}from"@solana/spl-token";import Ca from"bn.js";import IK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Lh,TOKEN_2022_PROGRAM_ID as Oh,TOKEN_PROGRAM_ID as Nh}from"@solana/spl-token";import{SystemProgram as Vh,TransactionInstruction as _h}from"@solana/web3.js";import Aa from"bn.js";var ya=m([e(),e("epoch"),l("curveType"),Q("index"),e("migrateFee"),e("tradeFeeRate"),e("maxShareFeeRate"),e("minSupplyA"),e("maxLockRate"),e("minSellRateA"),e("minMigrateRateA"),e("minFundRaisingB"),r("mintB"),r("protocolFeeOwner"),r("migrateFeeOwner"),r("migrateToAmmWallet"),r("migrateToCpmmWallet"),f(e(),16)]),ba=m([e("totalLockedAmount"),e("cliffPeriod"),e("unlockPeriod"),e("startTime"),e("totalAllocatedShare")]),ga=m([e(),e("epoch"),l("bump"),l("status"),l("mintDecimalsA"),l("mintDecimalsB"),l("migrateType"),e("supply"),e("totalSellA"),e("virtualA"),e("virtualB"),e("realA"),e("realB"),e("totalFundRaisingB"),e("protocolFee"),e("platformFee"),e("migrateFee"),ba.replicate("vestingSchedule"),r("configId"),r("platformId"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("creator"),l("mintProgramFlag"),l("cpmmCreatorFeeOn"),e("platformVestingShare"),f(l(),54)]),dh=m([e(),e("epoch"),r("poolId"),r("beneficiary"),e("claimedAmount"),e("tokenShareAmount"),f(e(),8)]),Ao=m([l("migrateType"),l("migrateCpmmFeeOn"),e("supply"),e("totalSellA"),e("totalFundRaisingB"),e("totalLockedAmount"),e("cliffPeriod"),e("unlockPeriod")]),Pa=m([e("epoch"),l("index"),r("configId"),Ao.replicate("bondingCurveParam"),f(e(),50)]),wo=m([e(),e("epoch"),r("platformClaimFeeWallet"),r("platformLockNftWallet"),e("platformScale"),e("creatorScale"),e("burnScale"),e("feeRate"),f(l(),64,"name"),f(l(),256,"web"),f(l(),256,"img"),r("cpConfigId"),e("creatorFeeRate"),r("transferFeeExtensionAuth"),r("platformVestingWallet"),e("platformVestingScale"),r("platformCpCreator"),l("restrictGlobalConfig"),f(l(),107),Dn(Pa,"platformCurve")]);var gh=Buffer.from("vault_auth_seed","utf8"),Ph=Buffer.from("global_config","utf8"),Ah=Buffer.from("pool_vesting","utf8"),wh=Buffer.from("platform_config","utf8"),kh=Buffer.from("platform_fee_vault_auth_seed","utf8"),Th=Buffer.from("creator_fee_vault_auth_seed","utf8"),hh=Buffer.from("platform_global_access","utf8"),Ih=Buffer.from("platform_allow_config","utf8");var qh={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215])};var Uh=new Aa("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as Yh,TOKEN_PROGRAM_ID as Qh}from"@solana/spl-token";import $h from"bn.js";import eI from"decimal.js";import OI from"bn.js";import MI from"decimal.js";import aI from"bn.js";import uI from"decimal.js";import PI from"bn.js";import wI from"decimal.js";import ho from"bn.js";import mn from"decimal.js";var Kt=class{static _multipler(t){return new mn(10).pow(t)}static getPrice({priceX64:t,decimalA:n,decimalB:i}){return new mn(t.toString()).div(this._Q64).mul(this._multipler(n)).div(this._multipler(i))}static getPriceX64({price:t,decimalA:n,decimalB:i}){let a=t.mul(this._multipler(i)).div(this._multipler(n));return new ho(a.mul(this._Q64).toFixed(0))}};Kt._Q64=new mn(new ho(1).shln(64).toString());import{NATIVE_MINT as qB,TOKEN_2022_PROGRAM_ID as UB,TOKEN_PROGRAM_ID as GB,createAssociatedTokenAccountIdempotentInstruction as XB,createSyncNativeInstruction as YB,getTransferFeeConfig as QB,unpackMint as ZB}from"@solana/spl-token";import Z from"bn.js";import{PublicKey as Sa,SystemProgram as $B}from"@solana/web3.js";import rS from"decimal.js";var aS={initPriceX64:new Z("515752397214619"),supply:new Z(1e15),totalSellA:new Z(7931e11),totalFundRaisingB:new Z(85e9),totalFundRaisingBUSD:new Z(125e8),totalLockedAmount:new Z("0"),cliffPeriod:new Z("0"),unlockPeriod:new Z("0"),decimals:6,virtualA:new Z("1073471847374405"),virtualB:new Z("30050573465"),realA:new Z(0),realB:new Z(0),protocolFee:new Z(0),platformId:new Sa("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new Z(0),cliffPeriod:new Z(0),unlockPeriod:new Z(0),startTime:new Z(0),totalAllocatedShare:new Z(0)}},sS=new Z(1e4);var Ka={[zn.toBase58()]:3};var xa=m([M(5),M(8),r("ownAddress"),e("vaultSignerNonce"),r("baseMint"),r("quoteMint"),r("baseVault"),e("baseDepositsTotal"),e("baseFeesAccrued"),r("quoteVault"),e("quoteDepositsTotal"),e("quoteFeesAccrued"),e("quoteDustThreshold"),r("requestQueue"),r("eventQueue"),r("bids"),r("asks"),e("baseLotSize"),e("quoteLotSize"),e("feeRateBps"),e("referrerRebatesAccrued"),M(7)]);import{PublicKey as RS}from"@solana/web3.js";var FS=_("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as GS,TOKEN_2022_PROGRAM_ID as zS,TOKEN_PROGRAM_ID as XS}from"@solana/spl-token";import{PublicKey as QS,SystemProgram as ZS,TransactionInstruction as HS}from"@solana/web3.js";import $S from"bn.js";var ex=new Ca(0);import{PublicKey as Ra,Transaction as dn,TransactionInstruction as La}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oa}from"@solana/spl-token";import Io from"bn.js";var te=class extends oe{static getPdaPoolId(t,n){return se([te.SEED_CONFIG.pool.id,n.toBuffer()],t)}static getPdaOwnerId(t,n,i,a){return se([te.SEED_CONFIG.owner.id,n.toBuffer(),i.toBuffer(),Buffer.from(new Io(a).toArray())],t)}static async getAllInfo({connection:t,programId:n,poolIds:i,wallet:a,chainTime:c}){if(i.length===0)return[];let d=i.map(y=>te.getPdaPoolId(n,y).publicKey),p=[];for(let y=0;y<te.VERSION_PROJECT.length;y++)p.push(...d.map(x=>te.getPdaOwnerId(n,x,a,y).publicKey));let g=await pe(t,[...d,...p]),P=[];for(let y=0;y<g.length;y++){let x=Math.floor(y/i.length),k=y%i.length,b=d[k],C=p[y],I=g[k],A=g[i.length+y];if(!(I&&A)||I.data.length!==te.POOL_LAYOUT.span||A.data.length!==te.OWNER_LAYOUT.span)continue;let T=te.POOL_LAYOUT.decode(I.data),h=te.OWNER_LAYOUT.decode(A.data),F=T.openTime.toNumber(),v=T.endTime.toNumber(),w=h.tokenInfo.map(R=>R.debtAmount.gt(new Io(0))).filter(R=>!R).length!==3,B=c>F&&c<v&&T.status===1,S=w&&B;P.push({programId:n,poolId:b,ammId:T.ammId,ownerAccountId:C,snapshotLpAmount:h.lpAmount,project:te.VERSION_PROJECT[x],openTime:F,endTime:v,canClaim:S,canClaimErrorType:w?B?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:T.tokenInfo.map((R,O)=>({mintAddress:R.mintAddress,mintVault:R.mintVault,mintDecimals:R.mintDecimals,perLpLoss:R.perLpLoss,debtAmount:h.tokenInfo[O].debtAmount.add(h.tokenInfo[O].claimedAmount)}))})}return P}async makeClaimTransaction({poolInfo:t,ownerInfo:n,feePayer:i}){n.wallet||this.scope.checkOwner();let a=this.createTxBuilder(i),c=n.wallet||this.scope.ownerPubKey,d=[];for(let P of t.tokenInfo){let{account:y,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:P.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:P.mintAddress.equals(ee.WSOL.mint),createInfo:{payer:c,amount:0},skipCloseAccount:!P.mintAddress.equals(ee.WSOL.mint),associatedOnly:P.mintAddress.equals(ee.WSOL.mint)?!1:n.associatedOnly});x&&a.addInstruction(x),d.push(y)}a.addInstruction({instructions:[te.makeClaimInstruction({programId:t.programId,poolInfo:t,ownerInfo:{wallet:c,ownerPda:t.ownerAccountId,claimAddress:d}})]});let{transaction:p,signers:g}=a.build();return[{transaction:p,signer:g}]}async makeClaimAllTransaction({poolInfos:t,ownerInfo:n,feePayer:i}){let a=this.createTxBuilder(i),c=n.wallet||this.scope.ownerPubKey,d={};for(let y of t){let x=[];for(let k of y.tokenInfo){let{account:b,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({mint:k.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:k.mintAddress.equals(ee.WSOL.mint),createInfo:{payer:c,amount:0},skipCloseAccount:!k.mintAddress.equals(ee.WSOL.mint),associatedOnly:k.mintAddress.equals(ee.WSOL.mint)?!1:n.associatedOnly});C&&a.addInstruction(C),b&&(d[k.mintAddress.toString()]=b,x.push(b))}a.addInstruction({instructions:[te.makeClaimInstruction({programId:y.programId,poolInfo:y,ownerInfo:{wallet:c,ownerPda:y.ownerAccountId,claimAddress:x}})]})}let{transaction:p,signers:g}=a.build(),P=a.allInstructions;return Gt(P,[c,...g.map(y=>y.publicKey)])?[{transaction:p,signer:g}]:[{transaction:new dn().add(...P.slice(0,a.AllTxData.instructions.length-1)),signer:g},{transaction:new dn().add(...P.slice(a.AllTxData.instructions.length-1)),signer:[]},{transaction:new dn().add(...a.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:t,poolInfo:n,ownerInfo:i}){let a=m([]),c=[{pubkey:i.wallet,isSigner:!0,isWritable:!0},{pubkey:n.poolId,isSigner:!1,isWritable:!0},{pubkey:i.ownerPda,isSigner:!1,isWritable:!0},...i.claimAddress.map(g=>({pubkey:g,isSigner:!1,isWritable:!0})),...n.tokenInfo.map(({mintVault:g})=>({pubkey:g,isSigner:!1,isWritable:!0})),{pubkey:Oa,isSigner:!1,isWritable:!1}],d=Buffer.alloc(a.span);a.encode({},d);let p=Buffer.from([10,66,208,184,161,6,191,98,...d]);return new La({keys:c,programId:t,data:p})}},me=te;me.CLAIMED_NUM=3,me.POOL_LAYOUT=m([M(8),l("bump"),l("status"),e("openTime"),e("endTime"),r("ammId"),f(m([l("mintDecimals"),r("mintAddress"),r("mintVault"),e("perLpLoss"),e("totalClaimedAmount")]),te.CLAIMED_NUM,"tokenInfo"),f(e(),10,"padding")]),me.OWNER_LAYOUT=m([M(8),l("bump"),l("version"),r("poolId"),r("owner"),e("lpAmount"),f(m([r("mintAddress"),e("debtAmount"),e("claimedAmount")]),te.CLAIMED_NUM,"tokenInfo"),f(e(),4,"padding")]),me.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(t=>new Ra(t)),me.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},me.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as gx}from"@solana/web3.js";import{getTransferFeeConfig as Ax,MintLayout as wx,TOKEN_2022_PROGRAM_ID as kx,TOKEN_PROGRAM_ID as Tx,unpackMint as hx}from"@solana/spl-token";var jC=new xe(2),$C=new xe(3),JC=new xe(5),Nt=new xe(10),eR=new xe(100),tR=new xe(1e3),nR=new xe(1e4);function Et(o){return Nt.pow(U(o))}var Bo=o=>typeof o=="number",Na=o=>o?new Date(o):new Date,xt=o=>Na(o).getTime();function So(o,t,n){let i=Bo(t)?t*((n==null?void 0:n.unit)==="s"?1e3:1):xt(t);return xt(o)<=i}function Ko(o,t,n){let i=Bo(t)?t*((n==null?void 0:n.unit)==="s"?1e3:1):xt(t);return xt(o)>i}function Lt(o,t=1,n=[]){let i=[...o];if(t<=0)return n;for(;i.length;)n.push(i.splice(0,t));return n}var it=_("Raydium.farm.util");function Vr({programId:o,poolId:t,mint:n,type:i}){let{publicKey:a}=se([t.toBuffer(),n.toBuffer(),Buffer.from(i==="lpVault"?"lp_vault_associated_seed":i==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],o);return a}function St({programId:o,poolId:t,owner:n,version:i}){let{publicKey:a}=se([t.toBuffer(),n.toBuffer(),Buffer.from(i===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],o);return a}var _r=({programId:o,poolId:t})=>se([t.toBuffer()],o);function Er(o){return{isSet:new ie(1),rewardPerSecond:U(o.perSecond),rewardOpenTime:U(o.openTime),rewardEndTime:U(o.endTime),rewardType:U(Ue[o.rewardType])}}function Dr(o){return U(o.endTime).sub(U(o.openTime)).mul(U(o.perSecond))}function ln(o){let t=cn[o];return t||it.logWithError("invalid version",o),t}function Ma(o){let t=un[o];return t||it.logWithError("invalid version",o),t}function Fa(o,t,n,i){if(o.version===3||o.version===5){if(o.lastSlot.gte(new ie(n)))return o;let a=new ie(n).sub(o.lastSlot);o.lastSlot=new ie(n);for(let c of o.rewardInfos){if(t.amount.eq(new ie(0)))continue;let d=c.perSlotReward.mul(a);c.perShareReward=c.perShareReward.add(d.mul(new ie(10).pow(new ie(o.version===3?9:15))).div(t.amount)),c.totalReward=c.totalReward.add(d)}}else if(o.version===6)for(let a of o.rewardInfos){if(a.rewardState.eq(new ie(0)))continue;let c=ie.min(new ie(i),a.rewardEndTime);if(a.rewardOpenTime.gte(c))continue;let p=c.sub(a.rewardLastUpdateTime).mul(a.rewardPerSecond),g=a.totalReward.sub(a.totalRewardEmissioned);g.lt(p)?(p=g,a.rewardLastUpdateTime=a.rewardLastUpdateTime.add(g.div(a.rewardPerSecond))):a.rewardLastUpdateTime=c,!t.amount.eq(new ie(0))&&(a.accRewardPerShare=a.accRewardPerShare.add(p.mul(o.rewardMultiplier).div(t.amount)),a.totalRewardEmissioned=a.totalRewardEmissioned.add(p))}return o}async function _R({connection:o,farmPools:t,owner:n,config:i,chainTime:a}){let c=!1,d=!1,p=new ie(10),g=[];for(let k of t){let b=Ke(k);b.version===6?d=!0:c=!0,g.push({pubkey:b.id,version:b.version,key:"state",poolId:b.id},{pubkey:b.lpVault,version:b.version,key:"lpVault",poolId:b.id}),n&&g.push({pubkey:St({programId:b.programId,poolId:b.id,owner:n,version:k.version}),version:b.version,key:"ledger",poolId:b.id})}let P={},y=await we(o,g,i);for(let{pubkey:k,version:b,key:C,poolId:I,accountInfo:A}of y){let T=I.toBase58();if(P[T]=L({},P[T]),C==="state"){let h=Ma(b);(!A||!A.data||A.data.length!==h.span)&&it.logWithError(`invalid farm state account info, pools.id, ${k}`),P[T].state=h.decode(A.data)}else if(C==="lpVault")(!A||!A.data||A.data.length!==Ve.span)&&it.logWithError(`invalid farm lp vault account info, pools.lpVault, ${k}`),P[T].lpVault=Ve.decode(A.data);else if(C==="ledger"){let h=ln(b);A&&A.data&&(A.data.length!==h.span&&it.logWithError(`invalid farm ledger account info, ledger, ${k}`),P[T].ledger=h.decode(A.data))}}let x=d||c?await o.getSlot():0;for(let k of Object.keys(P))P[k]!==void 0&&(P[k].state=Fa(P[k].state,P[k].lpVault,x,a));for(let[k,{state:b,ledger:C}]of Object.entries(P))if(C){let I=b.version===6?b.rewardMultiplier:b.rewardInfos.length===1?p.pow(new ie(9)):p.pow(new ie(15)),A=b.rewardInfos.map((T,h)=>{let F=C.rewardDebts[h];return C.deposited.mul(b.version===6?T.accRewardPerShare:T.perShareReward).div(I).sub(F)});P[k].wrapped=V(L({},P[k].wrapped),{pendingRewards:A})}return P}function ER(o,t=Date.now()){if(o.version===6){let n=o.state.rewardInfos;if(n.every(({rewardOpenTime:i})=>So(t,i.toNumber(),{unit:"s"})))return"upcoming pool";if(n.every(({rewardEndTime:i})=>Ko(t,i.toNumber(),{unit:"s"})))return"closed pool"}else{let n=o.state.rewardInfos.map(({perSlotReward:i})=>i);if(n.length===2){if(String(n[0])==="0"&&String(n[1])!=="0")return"normal fusion pool";if(String(n[0])!=="0"&&String(n[1])!=="0")return"dual fusion pool";if(String(n[0])==="0"&&String(n[1])==="0")return"closed pool"}else if(n.length===1&&String(n[0])==="0")return"closed pool"}}async function Or(o,t,n,i){let a=await o.getAccountInfo(t);if(a===null)throw Error("registrar info check error");let d=mo.decode(a.data).votingMints.findIndex(y=>y.mint.equals(i));if(d===-1)throw Error("find voter mint error");let p=await o.getAccountInfo(n);if(p===null)return{index:d,isInit:!1};let P=po.decode(p.data).deposits.findIndex(y=>y.isUsed&&y.votingMintConfigIdx===d);return P===-1?{index:d,isInit:!1}:{index:P,isInit:!0}}export{Dr as calFarmRewardAmount,Er as farmRewardInfoToConfig,_R as fetchMultipleFarmInfoAndUpdate,_r as getAssociatedAuthority,St as getAssociatedLedgerAccount,Vr as getAssociatedLedgerPoolAccount,Or as getDepositEntryIndex,ln as getFarmLedgerLayout,Ma as getFarmStateLayout,ER as judgeFarmType,Fa as updateFarmPoolInfo};
//# sourceMappingURL=util.mjs.map