use solana_pubkey::Pubkey;
pub const BASE_VAULT_AUTHORITY_SEED: &[u8] = b"authority";
pub const TOKEN_VAULT_SEED: &[u8] = b"token_vault";
pub const SHARES_SEED: &[u8] = b"shares";
pub const CTOKEN_VAULT_SEED: &[u8] = b"ctoken_vault";
pub const GLOBAL_CONFIG_SEED: &[u8] = b"global_config";
pub const WHITELISTED_RESERVES_SEED: &[u8] = b"whitelisted_reserves";
pub const EVENT_AUTHORITY: &[u8] = b"__event_authority";
pub fn base_vault_authority(program_id: &Pubkey, vault_state: &Pubkey) -> (Pubkey, u8) {
Pubkey::find_program_address(
&[BASE_VAULT_AUTHORITY_SEED, vault_state.as_ref()],
program_id,
)
}
pub fn token_vault(program_id: &Pubkey, vault_state: &Pubkey) -> (Pubkey, u8) {
Pubkey::find_program_address(&[TOKEN_VAULT_SEED, vault_state.as_ref()], program_id)
}
pub fn shares_mint(program_id: &Pubkey, vault_state: &Pubkey) -> (Pubkey, u8) {
Pubkey::find_program_address(&[SHARES_SEED, vault_state.as_ref()], program_id)
}
pub fn ctoken_vault(program_id: &Pubkey, vault_state: &Pubkey, reserve: &Pubkey) -> (Pubkey, u8) {
Pubkey::find_program_address(
&[CTOKEN_VAULT_SEED, vault_state.as_ref(), reserve.as_ref()],
program_id,
)
}
pub fn global_config(program_id: &Pubkey) -> (Pubkey, u8) {
Pubkey::find_program_address(&[GLOBAL_CONFIG_SEED], program_id)
}
pub fn whitelisted_reserve(program_id: &Pubkey, reserve: &Pubkey) -> (Pubkey, u8) {
Pubkey::find_program_address(&[WHITELISTED_RESERVES_SEED, reserve.as_ref()], program_id)
}
pub fn event_authority(program_id: &Pubkey) -> (Pubkey, u8) {
Pubkey::find_program_address(&[EVENT_AUTHORITY], program_id)
}