use std::collections::HashMap;
use {
super::{Indexing, Service},
anchor_lang::prelude::*,
hpl_utils::Default,
};
#[account]
pub struct Project {
pub bump: u8,
pub authority: Pubkey, pub key: Pubkey, pub driver: Pubkey, pub name: String, pub mint_indexing: Indexing, pub services: Vec<Service>, pub collections: Vec<Pubkey>, pub creators: Vec<Pubkey>, pub allowed_programs: Vec<Pubkey>,
pub profile_data_config: HashMap<String, ProfileDataType>,
}
impl Default for Project {
const LEN: usize = 256 + 8; fn set_defaults(&mut self) {
self.bump = 0;
self.key = Pubkey::default();
self.driver = Pubkey::default();
self.name = "".to_string();
self.mint_indexing = Indexing::default();
self.services = vec![];
self.collections = vec![];
self.creators = vec![];
self.allowed_programs = vec![];
self.profile_data_config = HashMap::new();
}
}
#[derive(AnchorSerialize, AnchorDeserialize, Clone, Debug, PartialEq)]
pub enum ProfileDataType {
SingleValue,
MultiValue,
Entity {
merkle_tree_max_depth: u32,
merkle_tree_max_buffer_size: u32,
},
}
impl ProfileDataType {
pub const LEN: usize = 12 + 4;
}