liquidity.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { PublicKey } from '@solana/web3.js';
  2. import { Liquidity, LiquidityPoolKeys, LiquidityStateV4, MAINNET_PROGRAM_ID, Market } from '@raydium-io/raydium-sdk';
  3. import { MinimalMarketLayoutV3 } from './market';
  4. export function createPoolKeys(
  5. id: PublicKey,
  6. accountData: LiquidityStateV4,
  7. minimalMarketLayoutV3: MinimalMarketLayoutV3,
  8. ): LiquidityPoolKeys {
  9. return {
  10. id,
  11. baseMint: accountData.baseMint,
  12. quoteMint: accountData.quoteMint,
  13. lpMint: accountData.lpMint,
  14. baseDecimals: accountData.baseDecimal.toNumber(),
  15. quoteDecimals: accountData.quoteDecimal.toNumber(),
  16. lpDecimals: 5,
  17. version: 4,
  18. programId: MAINNET_PROGRAM_ID.AmmV4,
  19. authority: Liquidity.getAssociatedAuthority({
  20. programId: MAINNET_PROGRAM_ID.AmmV4,
  21. }).publicKey,
  22. openOrders: accountData.openOrders,
  23. targetOrders: accountData.targetOrders,
  24. baseVault: accountData.baseVault,
  25. quoteVault: accountData.quoteVault,
  26. marketVersion: 3,
  27. marketProgramId: accountData.marketProgramId,
  28. marketId: accountData.marketId,
  29. marketAuthority: Market.getAssociatedAuthority({
  30. programId: accountData.marketProgramId,
  31. marketId: accountData.marketId,
  32. }).publicKey,
  33. marketBaseVault: accountData.baseVault,
  34. marketQuoteVault: accountData.quoteVault,
  35. marketBids: minimalMarketLayoutV3.bids,
  36. marketAsks: minimalMarketLayoutV3.asks,
  37. marketEventQueue: minimalMarketLayoutV3.eventQueue,
  38. withdrawQueue: accountData.withdrawQueue,
  39. lpVault: accountData.lpVault,
  40. lookupTableAccount: PublicKey.default,
  41. };
  42. }