Skip to main content

precolator/
constants.rs

1// Program constants and configuration
2
3pub const PROGRAM_VERSION: &str = "1.0.0";
4pub const PROGRAM_NAME: &str = "Precolator";
5
6// Position scaling factor (1 million for precision)
7pub const POS_SCALE: i128 = 1_000_000;
8
9// Trading parameters
10pub const MIN_COLLATERAL: u64 = 1_000_000; // 0.01 SOL
11pub const MAX_LEVERAGE: u8 = 50;
12pub const MIN_LEVERAGE: u8 = 1;
13
14// Fee configuration (in basis points)
15pub const TRADING_FEE_BPS: u16 = 50; // 0.5%
16pub const MAINTENANCE_FEE_BPS: u16 = 10; // 0.1%
17pub const LIQUIDATION_FEE_BPS: u16 = 50; // 0.5%
18
19// Risk thresholds
20pub const MAINTENANCE_MARGIN_BPS: u16 = 500; // 5%
21pub const INITIAL_MARGIN_BPS: u16 = 1000; // 10%
22
23// Insurance fund parameters
24pub const MIN_INSURANCE_RATIO_BPS: u16 = 1000; // 10% minimum
25pub const MAX_INSURANCE_WITHDRAWAL_BPS: u16 = 1000; // 10% max per withdrawal
26
27// Risk multipliers (for different utilization levels)
28pub const RISK_LOW_MULTIPLIER: u8 = 100; // 1.0x
29pub const RISK_MEDIUM_MULTIPLIER: u8 = 75; // 0.75x
30pub const RISK_HIGH_MULTIPLIER: u8 = 50; // 0.5x
31
32// Risk level thresholds (utilization percentage)
33pub const RISK_LOW_THRESHOLD: u8 = 40;
34pub const RISK_MEDIUM_THRESHOLD: u8 = 75;
35pub const RISK_HIGH_THRESHOLD: u8 = 95;
36
37// Oracle configuration
38pub const MAX_ORACLE_STALENESS_SLOTS: i64 = 300; // 5 minutes
39pub const PRICE_CONFIDENCE_BPS: u16 = 100; // 1% max confidence band
40
41// Liquidation parameters
42pub const LIQUIDATION_PRICE_OFFSET_BPS: u16 = 50; // 0.5% safety margin
43pub const LIQUIDATION_COOLDOWN_SLOTS: u64 = 10; // Minimum slots between liquidations
44
45// Account limits
46pub const MAX_POSITIONS_PER_USER: u64 = 100;
47pub const MAX_MARKETS: u64 = 10_000;
48
49// Nonce for request binding
50pub const MAX_REQUEST_NONCE: u64 = u64::MAX;
51
52// Slab account size (fixed)
53pub const SLAB_LEN: usize = 1024 * 1024; // 1 MB