raydium-launchlab-sdk 0.1.5

Rust SDK for Raydium LaunchLab program
Documentation
//! Type definitions for Raydium LaunchLab

// =============================================================================
// Enums (Simple types - manual implementation)
// =============================================================================

/// Pool status enum
#[derive(Clone, Copy, Debug, PartialEq, Eq, Default)]
#[repr(u8)]
pub enum PoolStatus {
    /// Pool is funding
    #[default]
    Fund = 0,
    /// Pool funding is end, waiting for migration
    Migrate = 1,
    /// Pool migration is done
    Trade = 2,
}

impl PoolStatus {
    pub fn from_u8(value: u8) -> Self {
        match value {
            0 => PoolStatus::Fund,
            1 => PoolStatus::Migrate,
            2 => PoolStatus::Trade,
            _ => PoolStatus::Fund,
        }
    }
}

/// Trade direction enum
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[repr(u8)]
pub enum TradeDirection {
    Buy = 0,
    Sell = 1,
}

impl TradeDirection {
    pub fn from_u8(value: u8) -> Self {
        match value {
            0 => TradeDirection::Buy,
            _ => TradeDirection::Sell,
        }
    }
}

/// AMM creator fee on enum
#[derive(Clone, Copy, Debug, PartialEq, Eq, Default)]
#[repr(u8)]
pub enum AmmCreatorFeeOn {
    /// No creator fee
    #[default]
    Off = 0,
    /// Creator fee on quote token only
    Quote = 1,
    /// Creator fee on both tokens
    Both = 2,
}

impl AmmCreatorFeeOn {
    pub fn from_u8(value: u8) -> Self {
        match value {
            0 => AmmCreatorFeeOn::Off,
            1 => AmmCreatorFeeOn::Quote,
            2 => AmmCreatorFeeOn::Both,
            _ => AmmCreatorFeeOn::Off,
        }
    }
}

/// Curve type enum
#[derive(Clone, Copy, Debug, PartialEq, Eq, Default)]
#[repr(u8)]
pub enum CurveType {
    #[default]
    ConstantProduct = 0,
    FixedPrice = 1,
    LinearPrice = 2,
}

/// Migrate type enum
#[derive(Clone, Copy, Debug, PartialEq, Eq, Default)]
#[repr(u8)]
pub enum MigrateType {
    #[default]
    Amm = 0,
    CpSwap = 1,
}

// =============================================================================
// Structs - Using Default implementations
// =============================================================================

/// Vesting schedule stored in pool state
#[derive(Clone, Debug, Default)]
pub struct VestingSchedule {
    pub total_locked_amount: u64,
    pub cliff_period: u64,
    pub unlock_period: u64,
    pub start_time: u64,
    pub allocated_share_amount: u64,
}

// =============================================================================
// Discriminators (8-byte instruction prefixes)
// =============================================================================

pub mod discriminators {
    pub const BUY_EXACT_IN: [u8; 8] = [250, 234, 13, 123, 213, 156, 19, 236];
    pub const BUY_EXACT_OUT: [u8; 8] = [24, 211, 116, 40, 105, 3, 153, 56];
    pub const SELL_EXACT_IN: [u8; 8] = [149, 39, 222, 155, 211, 124, 152, 26];
    pub const SELL_EXACT_OUT: [u8; 8] = [95, 200, 71, 34, 8, 9, 11, 166];
    pub const INITIALIZE: [u8; 8] = [175, 175, 109, 31, 13, 152, 155, 237];
}

pub mod account_discriminators {
    pub const GLOBAL_CONFIG: [u8; 8] = [149, 8, 156, 202, 160, 252, 176, 217];
    pub const PLATFORM_CONFIG: [u8; 8] = [160, 78, 128, 0, 248, 83, 230, 160];
    pub const POOL_STATE: [u8; 8] = [247, 237, 227, 245, 215, 195, 222, 70];
    pub const VESTING_RECORD: [u8; 8] = [106, 243, 221, 205, 230, 126, 85, 83];
}