use async_trait::async_trait;
use crate::types::{Approval, ApprovalKind, Issued, Person};
#[async_trait]
pub trait Directory: Send + Sync {
async fn person(&self, login_hint: &str, tenant: &str) -> Option<Person>;
async fn approver(&self, _kind: ApprovalKind, _person: &Person) -> Option<Person> {
None
}
}
#[async_trait]
pub trait Hooks: Send + Sync {
async fn on_approval(&self, _approval: &Approval) {}
async fn on_decision(&self, _approval: &Approval) {}
async fn on_issued(&self, _issued: &Issued) {}
}
pub struct NoHooks;
impl Hooks for NoHooks {}