precolator-program 1.0.0

Core Rust library for the Precolator perpetual futures trading protocol on Solana — oracle management, position handling, risk engine, and liquidation system.
Documentation
// Program constants and configuration

pub const PROGRAM_VERSION: &str = "1.0.0";
pub const PROGRAM_NAME: &str = "Precolator";

// Position scaling factor (1 million for precision)
pub const POS_SCALE: i128 = 1_000_000;

// Trading parameters
pub const MIN_COLLATERAL: u64 = 1_000_000; // 0.01 SOL
pub const MAX_LEVERAGE: u8 = 50;
pub const MIN_LEVERAGE: u8 = 1;

// Fee configuration (in basis points)
pub const TRADING_FEE_BPS: u16 = 50; // 0.5%
pub const MAINTENANCE_FEE_BPS: u16 = 10; // 0.1%
pub const LIQUIDATION_FEE_BPS: u16 = 50; // 0.5%

// Risk thresholds
pub const MAINTENANCE_MARGIN_BPS: u16 = 500; // 5%
pub const INITIAL_MARGIN_BPS: u16 = 1000; // 10%

// Insurance fund parameters
pub const MIN_INSURANCE_RATIO_BPS: u16 = 1000; // 10% minimum
pub const MAX_INSURANCE_WITHDRAWAL_BPS: u16 = 1000; // 10% max per withdrawal

// Risk multipliers (for different utilization levels)
pub const RISK_LOW_MULTIPLIER: u8 = 100; // 1.0x
pub const RISK_MEDIUM_MULTIPLIER: u8 = 75; // 0.75x
pub const RISK_HIGH_MULTIPLIER: u8 = 50; // 0.5x

// Risk level thresholds (utilization percentage)
pub const RISK_LOW_THRESHOLD: u8 = 40;
pub const RISK_MEDIUM_THRESHOLD: u8 = 75;
pub const RISK_HIGH_THRESHOLD: u8 = 95;

// Oracle configuration
pub const MAX_ORACLE_STALENESS_SLOTS: i64 = 300; // 5 minutes
pub const PRICE_CONFIDENCE_BPS: u16 = 100; // 1% max confidence band

// Liquidation parameters
pub const LIQUIDATION_PRICE_OFFSET_BPS: u16 = 50; // 0.5% safety margin
pub const LIQUIDATION_COOLDOWN_SLOTS: u64 = 10; // Minimum slots between liquidations

// Account limits
pub const MAX_POSITIONS_PER_USER: u64 = 100;
pub const MAX_MARKETS: u64 = 10_000;

// Nonce for request binding
pub const MAX_REQUEST_NONCE: u64 = u64::MAX;

// Slab account size (fixed)
pub const SLAB_LEN: usize = 1024 * 1024; // 1 MB