use const_crypto::ed25519;
use solana_program::{pubkey, pubkey::Pubkey};
pub const PROOF: &[u8] = b"proof";
pub const SHARE: &[u8] = b"share";
pub const CONFIG: &[u8] = b"config";
pub const MEMBER: &[u8] = b"member";
pub const BOOST: &[u8] = b"boost";
pub const STAKE: &[u8] = b"stake";
pub const POOL_PROGRAM_ID: Pubkey = pubkey!("poo1sKMYsZtDDS7og73L68etJQYyn6KXhXTLz1hizJc");
pub const ORE_V2_PROGRAM_ID: Pubkey = pubkey!("oreV2ZymfyeXgNgBdqMkumTqqAprVqgBWQfoYkrtKWQ");
pub const BOOST_V1_PROGRAM_ID: Pubkey = pubkey!("boostmPwypNUQu8qZ8RoWt5DXyYSVYxnBXqbbrGjecc");
pub const BOOST_V2_PROGRAM_ID: Pubkey = pubkey!("BoostzzkNfCA9D1qNuN5xZxB5ErbK4zQuBeTHGDpXT1");
pub const MINT_ADDRESS: Pubkey = pubkey!("oreoU2P8bN6jkk3jbaiVxYnG1dCXcYxwhwyK9jSybcp");
pub const TREASURY: &[u8] = b"treasury";
pub const ORE_V2_TREASURY_ADDRESS: Pubkey = Pubkey::new_from_array(
ed25519::derive_program_address(&[TREASURY], &ORE_V2_PROGRAM_ID.to_bytes()).0,
);
pub const ORE_V2_TREASURY_BUMP: u8 =
ed25519::derive_program_address(&[TREASURY], &ORE_V2_PROGRAM_ID.to_bytes()).1;
pub const ORE_V2_TREASURY_TOKENS_ADDRESS: Pubkey = Pubkey::new_from_array(
ed25519::derive_program_address(
&[
unsafe { &*(&ORE_V2_TREASURY_ADDRESS as *const Pubkey as *const [u8; 32]) },
unsafe { &*(&spl_token::id() as *const Pubkey as *const [u8; 32]) },
unsafe { &*(&MINT_ADDRESS as *const Pubkey as *const [u8; 32]) },
],
unsafe { &*(&spl_associated_token_account::id() as *const Pubkey as *const [u8; 32]) },
)
.0,
);