diff --git a/contracts/guardian/src/lib.rs b/contracts/guardian/src/lib.rs index 0efa0cc..e7969d1 100644 --- a/contracts/guardian/src/lib.rs +++ b/contracts/guardian/src/lib.rs @@ -1,5 +1,6 @@ #![no_std] pub mod error; +pub mod types; use soroban_sdk::{contract, contractimpl, Env}; /// Enforces guardian-controlled spending policies for child wallet accounts on the Stellar network. diff --git a/contracts/guardian/src/types.rs b/contracts/guardian/src/types.rs new file mode 100644 index 0000000..6ec8ae4 --- /dev/null +++ b/contracts/guardian/src/types.rs @@ -0,0 +1,25 @@ +use soroban_sdk::{contracttype, Address}; + +/// Opaque identifier for a child wallet account managed by a guardian. +pub type ChildId = Address; + +/// Maximum amount (in stroops) a child may spend in a single transaction. +pub type SpendLimit = u64; + +/// Period over which the spend limit resets. +#[contracttype] +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum LimitPeriod { + Daily, + Weekly, + Monthly, +} + +/// Full spending policy attached to a child account. +#[contracttype] +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct SpendPolicy { + pub child: ChildId, + pub limit: SpendLimit, + pub period: LimitPeriod, +}