sol_cerberus/state/
rule.rs1use anchor_lang::prelude::*;
2
3#[derive(AnchorSerialize, AnchorDeserialize, Default, Debug)]
4pub struct RuleData {
5 pub namespace: u8,
6 pub role: String,
7 pub resource: String,
8 pub permission: String,
9 pub expires_at: Option<i64>,
10}
11
12#[repr(u8)]
21pub enum Namespaces {
22 Rule = 0,
23 AssignRole = 1,
24 DeleteAssignRole = 2,
25 AddRuleNSRole = 3,
26 AddRuleResourcePerm = 4,
27 DeleteRuleNSRole = 5,
28 DeleteRuleResourcePerm = 6,
29}
30
31#[account]
32pub struct Rule {
33 pub app_id: Pubkey,
34 pub namespace: u8,
35 pub role: String,
36 pub resource: String,
37 pub permission: String,
38 pub expires_at: Option<i64>,
39 pub bump: u8,
40}
41
42#[event]
43pub struct RulesChanged {
44 pub time: i64,
45 #[index]
46 pub app_id: Pubkey,
47}