diff --git a/programs/Cargo.lock b/programs/Cargo.lock index 976e271..f60a746 100644 --- a/programs/Cargo.lock +++ b/programs/Cargo.lock @@ -1537,6 +1537,7 @@ dependencies = [ "anchor-spl", "num_enum", "rwa_utils", + "serde", "sha256", ] diff --git a/programs/policy_engine/Cargo.toml b/programs/policy_engine/Cargo.toml index 06a7b82..bdbe923 100644 --- a/programs/policy_engine/Cargo.toml +++ b/programs/policy_engine/Cargo.toml @@ -20,5 +20,6 @@ idl-build = ["anchor-lang/idl-build", "anchor-spl/idl-build"] anchor-lang = { version = "0.30.1" } anchor-spl = { version = "0.30.1" } rwa_utils = { path = "../rwa_utils" } +serde = "1.0" num_enum = "0.7.2" sha256 = "1.5.0" diff --git a/programs/policy_engine/src/state/account.rs b/programs/policy_engine/src/state/account.rs index edd1fdf..f6c4809 100644 --- a/programs/policy_engine/src/state/account.rs +++ b/programs/policy_engine/src/state/account.rs @@ -1,16 +1,29 @@ use anchor_lang::prelude::*; use num_enum::IntoPrimitive; +use serde::{Deserialize, Serialize}; use crate::PolicyEngineErrors; -#[derive(AnchorDeserialize, AnchorSerialize, Clone, InitSpace, Copy, Debug)] +#[derive( + AnchorDeserialize, AnchorSerialize, Clone, InitSpace, Copy, Debug, Serialize, Deserialize, +)] pub struct IdentityFilter { pub identity_levels: [u8; 10], // 10 pub comparision_type: ComparisionType, // 2 } #[repr(u8)] -#[derive(IntoPrimitive, AnchorDeserialize, AnchorSerialize, Clone, InitSpace, Copy, Debug)] +#[derive( + IntoPrimitive, + AnchorDeserialize, + AnchorSerialize, + Clone, + InitSpace, + Copy, + Debug, + Serialize, + Deserialize, +)] pub enum ComparisionType { Or, And, @@ -36,7 +49,17 @@ pub struct Policy { pub policy_type: PolicyType, } -#[derive(AnchorSerialize, AnchorDeserialize, Clone, InitSpace, PartialEq, Copy, Debug)] +#[derive( + AnchorSerialize, + AnchorDeserialize, + Clone, + InitSpace, + PartialEq, + Copy, + Debug, + Serialize, + Deserialize, +)] pub enum PolicyType { IdentityApproval, TransactionAmountLimit { limit: u64 },