use {anchor_lang::prelude::*, hpl_utils::Default};
#[derive(AnchorSerialize, AnchorDeserialize, Clone, Debug, PartialEq)]
pub enum AddressContainerRole {
ProjectMints,
}
#[account]
pub struct AddressContainer {
pub bump: u8,
pub associated_with: Pubkey,
pub role: AddressContainerRole,
pub addresses: Vec<Pubkey>,
}
impl Default for AddressContainer {
const LEN: usize = 64 + 8; fn set_defaults(&mut self) {
self.bump = 0;
self.associated_with = Pubkey::default();
self.role = AddressContainerRole::ProjectMints;
self.addresses = vec![];
}
}
#[derive(AnchorSerialize, AnchorDeserialize, Clone, Debug, PartialEq)]
pub struct Indexing {
pub containers: u8, pub expected: u64,
pub indexed: u64,
}
impl Indexing {
pub const LEN: usize = 24;
pub fn default() -> Self {
Self {
containers: 0,
expected: 0,
indexed: 0,
}
}
}
#[derive(AnchorSerialize, AnchorDeserialize, Clone, PartialEq, Debug, Default)]
pub struct IndexedReference {
pub address_container_index: u8,
pub index_in_container: u8,
}