pub struct Policy {
pub policy_id: String,
pub version: u32,
pub profile_id: String,
pub predicates: Vec<Predicate>,
pub outputs: Vec<OutputSpec>,
pub context_digest_rule: ContextDigestRule,
pub nullifier: Option<NullifierSpec>, // scope + fields
pub expiry_secs: u64,
pub holder_binding: bool,
}
pub enum Predicate {
Equals { field: String, value: Value },
Range { field: String, min: Value, max: Value },
Sum { fields: Vec<String>, min: Value, max: Value },
Average { fields: Vec<String>, min: Value, max: Value },
Bucket { field: String, edges: Vec<Value> },
Prefix { field: String, prefix: String },
}