Skip to content

Instantly share code, notes, and snippets.

@p69
Created February 25, 2024 22:21
Show Gist options
  • Save p69/d74374b2e918d81d77ed43879b96651a to your computer and use it in GitHub Desktop.
Save p69/d74374b2e918d81d77ed43879b96651a to your computer and use it in GitHub Desktop.
Raydium - get all pool info by pool id
async function getPoolInfo(connection: Connection, poolId: PublicKey): Promise<ApiPoolInfoV4> {
const info = await connection.getAccountInfo(poolId);
if (!info) {
throw error('No Pool Info')
}
let amAccountData = { id: poolId, programId: info.owner, ...LIQUIDITY_STATE_LAYOUT_V4.decode(info.data) }
const marketProgramId = amAccountData.marketProgramId
const allMarketInfo = await connection.getAccountInfo(marketProgramId)
if (!allMarketInfo) {
throw error('No Pool Info')
}
const itemMarketInfo = MARKET_STATE_LAYOUT_V3.decode(allMarketInfo.data)
const marketInfo = {
marketProgramId: allMarketInfo.owner.toString(),
marketAuthority: Market.getAssociatedAuthority({ programId: allMarketInfo.owner, marketId: marketProgramId }).publicKey.toString(),
marketBaseVault: itemMarketInfo.baseVault.toString(),
marketQuoteVault: itemMarketInfo.quoteVault.toString(),
marketBids: itemMarketInfo.bids.toString(),
marketAsks: itemMarketInfo.asks.toString(),
marketEventQueue: itemMarketInfo.eventQueue.toString()
}
const format: ApiPoolInfoV4 = {
id: amAccountData.id.toString(),
baseMint: amAccountData.baseMint.toString(),
quoteMint: amAccountData.quoteMint.toString(),
lpMint: amAccountData.lpMint.toString(),
baseDecimals: amAccountData.baseDecimal.toNumber(),
quoteDecimals: amAccountData.quoteDecimal.toNumber(),
lpDecimals: amAccountData.baseDecimal.toNumber(),
version: 4,
programId: amAccountData.programId.toString(),
authority: Liquidity.getAssociatedAuthority({ programId: amAccountData.programId }).publicKey.toString(),
openOrders: amAccountData.openOrders.toString(),
targetOrders: amAccountData.targetOrders.toString(),
baseVault: amAccountData.baseVault.toString(),
quoteVault: amAccountData.quoteVault.toString(),
withdrawQueue: amAccountData.withdrawQueue.toString(),
lpVault: amAccountData.lpVault.toString(),
marketVersion: 3,
marketId: amAccountData.marketId.toString(),
...marketInfo,
lookupTableAccount: PublicKey.default.toString()
}
return format
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment