1use solana_address::Address;
2
3pub use crate::dex::generated::programs::SEND_DEX_ID as DEX_PROGRAM_ID;
4pub use crate::launchpad::generated::programs::SEND_LAUNCHPAD_ID as LAUNCHPAD_PROGRAM_ID;
5pub use crate::nexus::generated::programs::SEND_NEXUS_ID as NEXUS_PROGRAM_ID;
6
7pub const TOKEN_DECIMALS: u8 = 6;
8
9pub const SYSTEM_PROGRAM_ID: Address = Address::new_from_array([0u8; 32]);
10
11pub const WSOL_MINT: Address =
12 solana_address::address!("So11111111111111111111111111111111111111112");
13
14pub const USDC_MINT: Address =
15 solana_address::address!("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
16
17pub const TOKEN_PROGRAM_ID: Address =
18 solana_address::address!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");
19
20pub const TOKEN_2022_PROGRAM_ID: Address =
21 solana_address::address!("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");
22
23pub const ATA_PROGRAM_ID: Address =
24 solana_address::address!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");
25
26pub const DEFAULT_PARTNER: Address = SYSTEM_PROGRAM_ID;
27
28pub const PYTH_SOL_USD_PRICE_ACCOUNT: Address =
29 solana_address::address!("7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE");
30
31pub const STAKING_WSOL_VAULT_ADDRESS: Address =
32 solana_address::address!("AyisZJxXz9ywXhMwR3sb3oePxBB6UBvixXycAQCdSgrz");
33
34#[cfg(test)]
35mod tests {
36 use super::*;
37
38 #[test]
39 fn staking_wsol_vault_matches_derivation() {
40 let (derived, _) = crate::utils::find_associated_token_pda(
41 &crate::nexus::pda::STAKING_CONFIG_ADDRESS,
42 &WSOL_MINT,
43 &TOKEN_PROGRAM_ID,
44 );
45 assert_eq!(derived, STAKING_WSOL_VAULT_ADDRESS);
46 }
47}
48
49pub const PLATFORM_SEED: &[u8] = b"platform";
51
52#[must_use]
53pub fn find_platform_address(name: &[u8]) -> (Address, u8) {
54 Address::find_program_address(&[PLATFORM_SEED, name], &NEXUS_PROGRAM_ID)
55}
56
57#[cfg(test)]
58mod platform_tests {
59 use super::*;
60
61 #[test]
62 fn platform_addresses_are_distinct_per_name() {
63 assert_ne!(
64 find_platform_address(b"sendfun").0,
65 find_platform_address(b"acme").0,
66 );
67 }
68}