1use solana_pubkey::Pubkey;
7
8pub const BASE_VAULT_AUTHORITY_SEED: &[u8] = b"authority";
10pub const TOKEN_VAULT_SEED: &[u8] = b"token_vault";
12pub const SHARES_SEED: &[u8] = b"shares";
14pub const CTOKEN_VAULT_SEED: &[u8] = b"ctoken_vault";
16pub const GLOBAL_CONFIG_SEED: &[u8] = b"global_config";
18pub const WHITELISTED_RESERVES_SEED: &[u8] = b"whitelisted_reserves";
20pub const EVENT_AUTHORITY: &[u8] = b"__event_authority";
22
23pub fn base_vault_authority(program_id: &Pubkey, vault_state: &Pubkey) -> (Pubkey, u8) {
27 Pubkey::find_program_address(
28 &[BASE_VAULT_AUTHORITY_SEED, vault_state.as_ref()],
29 program_id,
30 )
31}
32
33pub fn token_vault(program_id: &Pubkey, vault_state: &Pubkey) -> (Pubkey, u8) {
37 Pubkey::find_program_address(&[TOKEN_VAULT_SEED, vault_state.as_ref()], program_id)
38}
39
40pub fn shares_mint(program_id: &Pubkey, vault_state: &Pubkey) -> (Pubkey, u8) {
44 Pubkey::find_program_address(&[SHARES_SEED, vault_state.as_ref()], program_id)
45}
46
47pub fn ctoken_vault(program_id: &Pubkey, vault_state: &Pubkey, reserve: &Pubkey) -> (Pubkey, u8) {
51 Pubkey::find_program_address(
52 &[CTOKEN_VAULT_SEED, vault_state.as_ref(), reserve.as_ref()],
53 program_id,
54 )
55}
56
57pub fn global_config(program_id: &Pubkey) -> (Pubkey, u8) {
61 Pubkey::find_program_address(&[GLOBAL_CONFIG_SEED], program_id)
62}
63
64pub fn whitelisted_reserve(program_id: &Pubkey, reserve: &Pubkey) -> (Pubkey, u8) {
68 Pubkey::find_program_address(&[WHITELISTED_RESERVES_SEED, reserve.as_ref()], program_id)
69}
70
71pub fn event_authority(program_id: &Pubkey) -> (Pubkey, u8) {
75 Pubkey::find_program_address(&[EVENT_AUTHORITY], program_id)
76}