sol_cerberus/state/
role.rs1use anchor_lang::prelude::*;
2
3#[derive(AnchorSerialize, AnchorDeserialize, Clone, Debug)]
4pub enum AddressType {
5 Wallet,
6 Nft,
7 Collection,
8}
9
10impl AddressType {
11 pub fn to_string(&self) -> String {
12 match self {
13 AddressType::Wallet => "Wallet",
14 AddressType::Nft => "Nft",
15 AddressType::Collection => "Collection",
16 }
17 .to_string()
18 }
19}
20
21#[derive(AnchorSerialize, AnchorDeserialize, Debug)]
22pub struct AssignRoleData {
23 pub address: Option<Pubkey>,
24 pub role: String,
25 pub address_type: AddressType,
26 pub expires_at: Option<i64>,
27}
28
29#[account]
30pub struct Role {
31 pub app_id: Pubkey,
32 pub address: Option<Pubkey>,
33 pub role: String,
34 pub address_type: AddressType,
35 pub expires_at: Option<i64>,
36 pub bump: u8,
37}
38
39#[event]
40pub struct RolesChanged {
41 pub time: i64,
42 #[index]
43 pub app_id: Pubkey,
44}