pub use harmos_domain::inventory::contracts::Required;
use super::{CallContext, Contract, Definition, OperationGeneration};
use crate::{Identifier, Result};
pub struct Provider<'a> {
pub owner: &'a Identifier,
pub plugin: bool,
pub generation: OperationGeneration,
pub definition: &'a Definition,
pub contract: &'a Contract,
}
#[derive(Clone, Debug)]
pub enum Authorization {
Full(Contract),
Restricted(Required),
}
pub trait Authorizer: Send + Sync + 'static {
fn authorize(&self, context: &CallContext, provider: Provider<'_>) -> Result<Option<Authorization>>;
}