12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- import { Commitment, Connection, PublicKey } from '@solana/web3.js';
- import {
- Liquidity,
- LiquidityPoolKeys,
- Market,
- TokenAccount,
- SPL_ACCOUNT_LAYOUT,
- publicKey,
- struct,
- MAINNET_PROGRAM_ID,
- LiquidityStateV4,
- } from '@raydium-io/raydium-sdk';
- import { TOKEN_PROGRAM_ID } from '@solana/spl-token';
- import { MinimalMarketLayoutV3 } from '../market';
- export const RAYDIUM_LIQUIDITY_PROGRAM_ID_V4 = MAINNET_PROGRAM_ID.AmmV4;
- export const OPENBOOK_PROGRAM_ID = MAINNET_PROGRAM_ID.OPENBOOK_MARKET;
- export const MINIMAL_MARKET_STATE_LAYOUT_V3 = struct([
- publicKey('eventQueue'),
- publicKey('bids'),
- publicKey('asks'),
- ]);
- export function createPoolKeys(
- id: PublicKey,
- accountData: LiquidityStateV4,
- minimalMarketLayoutV3: MinimalMarketLayoutV3,
- ): LiquidityPoolKeys {
- return {
- id,
- baseMint: accountData.baseMint,
- quoteMint: accountData.quoteMint,
- lpMint: accountData.lpMint,
- baseDecimals: accountData.baseDecimal.toNumber(),
- quoteDecimals: accountData.quoteDecimal.toNumber(),
- lpDecimals: 5,
- version: 4,
- programId: RAYDIUM_LIQUIDITY_PROGRAM_ID_V4,
- authority: Liquidity.getAssociatedAuthority({
- programId: RAYDIUM_LIQUIDITY_PROGRAM_ID_V4,
- }).publicKey,
- openOrders: accountData.openOrders,
- targetOrders: accountData.targetOrders,
- baseVault: accountData.baseVault,
- quoteVault: accountData.quoteVault,
- marketVersion: 3,
- marketProgramId: accountData.marketProgramId,
- marketId: accountData.marketId,
- marketAuthority: Market.getAssociatedAuthority({
- programId: accountData.marketProgramId,
- marketId: accountData.marketId,
- }).publicKey,
- marketBaseVault: accountData.baseVault,
- marketQuoteVault: accountData.quoteVault,
- marketBids: minimalMarketLayoutV3.bids,
- marketAsks: minimalMarketLayoutV3.asks,
- marketEventQueue: minimalMarketLayoutV3.eventQueue,
- withdrawQueue: accountData.withdrawQueue,
- lpVault: accountData.lpVault,
- lookupTableAccount: PublicKey.default,
- };
- }
- export async function getTokenAccounts(
- connection: Connection,
- owner: PublicKey,
- commitment?: Commitment,
- ) {
- const tokenResp = await connection.getTokenAccountsByOwner(
- owner,
- {
- programId: TOKEN_PROGRAM_ID,
- },
- commitment,
- );
- const accounts: TokenAccount[] = [];
- for (const { pubkey, account } of tokenResp.value) {
- accounts.push({
- pubkey,
- programId: account.owner,
- accountInfo: SPL_ACCOUNT_LAYOUT.decode(account.data),
- });
- }
- return accounts;
- }
|