This refactoring migrates protocol-related type definitions from solana-streamer-sdk to local modules: - Add local type files: bonk_types.rs, pumpswap_types.rs, raydium_amm_v4_types.rs, raydium_cpmm_types.rs - Add BorshDeserialize support for all types - Refactor BondingCurveAccount to support Borsh deserialization - Update import paths across all protocol utility modules (bonk, pumpfun, pumpswap, raydium) - Refactor trade parameter construction methods from event objects to individual parameters for better flexibility - Fix nonce_cache import path to use local SolanaRpcClient
43 lines
1.4 KiB
Rust
43 lines
1.4 KiB
Rust
use crate::{
|
|
common::SolanaRpcClient,
|
|
instruction::utils::raydium_amm_v4_types::{amm_info_decode, AmmInfo},
|
|
};
|
|
use anyhow::anyhow;
|
|
use solana_sdk::pubkey::Pubkey;
|
|
|
|
/// Constants used as seeds for deriving PDAs (Program Derived Addresses)
|
|
pub mod seeds {
|
|
pub const POOL_SEED: &[u8] = b"pool";
|
|
}
|
|
|
|
/// Constants related to program accounts and authorities
|
|
pub mod accounts {
|
|
use solana_sdk::{pubkey, pubkey::Pubkey};
|
|
pub const AUTHORITY: Pubkey = pubkey!("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1");
|
|
pub const RAYDIUM_AMM_V4: Pubkey = pubkey!("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8");
|
|
|
|
pub const TRADE_FEE_NUMERATOR: u64 = 25;
|
|
pub const TRADE_FEE_DENOMINATOR: u64 = 10000;
|
|
pub const SWAP_FEE_NUMERATOR: u64 = 25;
|
|
pub const SWAP_FEE_DENOMINATOR: u64 = 10000;
|
|
|
|
// META
|
|
|
|
pub const AUTHORITY_META: solana_sdk::instruction::AccountMeta =
|
|
solana_sdk::instruction::AccountMeta {
|
|
pubkey: AUTHORITY,
|
|
is_signer: false,
|
|
is_writable: false,
|
|
};
|
|
}
|
|
|
|
pub const SWAP_BASE_IN_DISCRIMINATOR: &[u8] = &[9];
|
|
pub const SWAP_BASE_OUT_DISCRIMINATOR: &[u8] = &[11];
|
|
|
|
pub async fn fetch_amm_info(rpc: &SolanaRpcClient, amm: Pubkey) -> Result<AmmInfo, anyhow::Error> {
|
|
let amm_info = rpc.get_account_data(&amm).await?;
|
|
let amm_info =
|
|
amm_info_decode(&amm_info).ok_or_else(|| anyhow!("Failed to decode amm info"))?;
|
|
Ok(amm_info)
|
|
}
|