Skip to main content

dlp_api/state/
program_config.rs

1use std::collections::BTreeSet;
2
3use borsh::{BorshDeserialize, BorshSerialize};
4use solana_program::pubkey::Pubkey;
5
6use super::discriminator::{AccountDiscriminator, AccountWithDiscriminator};
7use crate::{
8    impl_to_bytes_with_discriminator_borsh,
9    impl_try_from_bytes_with_discriminator_borsh,
10};
11
12#[derive(BorshSerialize, BorshDeserialize, Default, Debug)]
13pub struct ProgramConfig {
14    pub approved_validators: BTreeSet<Pubkey>,
15}
16
17impl AccountWithDiscriminator for ProgramConfig {
18    fn discriminator() -> AccountDiscriminator {
19        AccountDiscriminator::ProgramConfig
20    }
21}
22
23impl ProgramConfig {
24    pub fn size_with_discriminator(&self) -> usize {
25        8 + 4 + 32 * self.approved_validators.len()
26    }
27}
28
29impl_to_bytes_with_discriminator_borsh!(ProgramConfig);
30impl_try_from_bytes_with_discriminator_borsh!(ProgramConfig);