1use const_crypto::ed25519;
2use solana_program::{pubkey, pubkey::Pubkey};
3
4pub const ADMIN_ADDRESS: Pubkey = pubkey!("HBUh9g46wk2X89CvaNN15UmsznP59rh6od1h8JwYAopk");
6
7pub const MINT: &[u8] = b"mint";
9
10pub const STABLE: &[u8] = b"stable";
12
13pub const VAULT: &[u8] = b"vault";
15
16pub const PROTOCOL: &[u8] = b"protocol";
18
19pub const POSITION: &[u8] = b"position";
21
22pub const VAULT_ADDRESS: Pubkey = pubkey!("9znvhq6ae8nTsSW2VU49pQnq1or3Ne12q7ehRYXf8YTw");
24
25pub const USDC_ADDRESS: Pubkey = pubkey!("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
27
28pub const TOKEN_DECIMALS: u8 = 6;
30
31pub const DEFAULT_PLATFORM_FEE_BPS: u16 = 1000;
33
34pub const DENOMINATOR_BPS: u64 = 10_000;
36
37pub const SHARES_PER_USDC: u64 = 1000;
39
40pub const EXCHANGE_RATE_PRECISION: u64 = 1_000_000_000;
42
43pub const PROTOCOL_KAMINO: u8 = 0;
49
50pub const PROTOCOL_PERENA: u8 = 1;
52
53pub const LENDING_MARKET_ADDRESS: Pubkey = pubkey!("DxXdAyU3kCjnyggvHmY5nAwg5cRbbmdyX3npfDMjjMek");
58
59pub const LENDING_MARKET_AUTHORITY_ADDRESS: Pubkey =
60 pubkey!("B9spsrMK6pJicYtukaZzDyzsUQLgc3jbx5gHVwdDxb6y");
61
62pub const RESERVE_ADDRESS: Pubkey = pubkey!("Ga4rZytCpq1unD4DbEJ5bkHeUz9g3oh9AAFEi6vSauXp");
63
64pub const RESERVE_LIQUIDITY_SUPPLY_ADDRESS: Pubkey =
65 pubkey!("GENey8es3EgGiNTM8H8gzA3vf98haQF8LHiYFyErjgrv");
66
67pub const RESERVE_CTOKEN_ADDRESS: Pubkey = pubkey!("6WnymZBTAekuHf9DgsaDKJ397oEZ3qMApNMHg9qjqhgm");
69
70pub const RESERVE_FARM_STATE_ADDRESS: Pubkey =
72 pubkey!("EGDhupegCXLtonYDSY67c4dzw86S9eMxsntQ1yxWSoHv");
73
74pub const SCOPE_PRICES_ADDRESS: Pubkey = pubkey!("3t4JZcueEzTbVP6kLxXrL3VpWx45jDer4eqysweBchNH");
76
77pub const CTOKEN_ADDRESS: Pubkey = pubkey!("32XLsweyeQwWgLKRVAzS72nxHGU1JmmNQQZ3C3q6fBjJ");
79
80pub const KLEND_PROGRAM_ID: Pubkey = pubkey!("KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD");
82
83pub const KFARMS_PROGRAM_ID: Pubkey = pubkey!("FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr");
85
86pub const OBLIGATION_ADDRESS: Pubkey = Pubkey::new_from_array(
88 ed25519::derive_program_address(
89 &[
90 &2u8.to_le_bytes(),
91 &0u8.to_le_bytes(),
92 unsafe { &*(&VAULT_ADDRESS as *const Pubkey as *const [u8; 32]) },
93 unsafe { &*(&LENDING_MARKET_ADDRESS as *const Pubkey as *const [u8; 32]) },
94 unsafe { &*(&USDC_ADDRESS as *const Pubkey as *const [u8; 32]) },
95 unsafe { &*(&USDC_ADDRESS as *const Pubkey as *const [u8; 32]) },
96 ],
97 unsafe { &*(&KLEND_PROGRAM_ID as *const Pubkey as *const [u8; 32]) },
98 )
99 .0,
100);
101
102pub const RESERVE_FARM_USER_STATE_ADDRESS: Pubkey = Pubkey::new_from_array(
104 ed25519::derive_program_address(
105 &[
106 b"user",
107 unsafe { &*(&RESERVE_FARM_STATE_ADDRESS as *const Pubkey as *const [u8; 32]) },
108 unsafe { &*(&OBLIGATION_ADDRESS as *const Pubkey as *const [u8; 32]) },
109 ],
110 unsafe { &*(&KFARMS_PROGRAM_ID as *const Pubkey as *const [u8; 32]) },
111 )
112 .0,
113);
114
115pub const PERENA_PROGRAM_ID: Pubkey = pubkey!("save8RQVPMWNTzU18t3GBvBkN9hT7jsGjiCQ28FpD9H");
121
122pub const USD_STAR_MINT: Pubkey = pubkey!("star9agSpjiFe3M49B3RniVU4CMBBEK3Qnaqn3RGiFM");
124
125pub const PERENA_BANK_STATE: Pubkey = pubkey!("sM6P4mh53CnG4faN4Fo3seY7wMSAiHdy8o6gKjwQF7A");
127
128pub const PERENA_VAULT_STATE: Pubkey = pubkey!("3bZ1qY6wfzyDH7QMPiRKLr6k8p1asdtyjvJyJsJBdv23");
130
131pub const PERENA_ORACLE_STATE: Pubkey = pubkey!("CmKFP4YJg5QpAryUm9xk5QD611bccYMzZvpvQDJkMwt6");
133
134pub const PERENA_TEAM_STATE: Pubkey = pubkey!("6tqLkhbqJSx4KG616VhNCvsaFqcDPok7wdbzU2DmEAub");
136
137pub const PERENA_YIELDING_VAULT: Pubkey = pubkey!("HvG7HSrNHVAcjzgwt3UVtnY9srkrY7qnMG4zS1SnPQT2");
139
140pub const PERENA_FEE_TEAM_ATA: Pubkey = pubkey!("3msJbxNbSeosztbNEB1eFPitMFnP8ogCszegPUswipdL");
142
143pub const LUT_ADDRESS: Pubkey = pubkey!("4JhHm4zoyoUZdyVqx2ogA2VstnebQVjWDNfNS7uXzd8Y");