use crate::Primitives;
pub trait LinearSite<P: Primitives>: crate::bridge::partition::SiteIndex<P> {}
pub trait LinearEffect<P: Primitives>: crate::kernel::effect::PinningEffect<P> {
type LinearSite: LinearSite<P>;
fn linear_target(&self) -> &Self::LinearSite;
}
pub trait LinearTrace<P: Primitives>: crate::bridge::trace::ComputationTrace<P> {}
pub trait LinearBudget<P: Primitives> {
type LinearSite: LinearSite<P>;
fn budget_sites(&self) -> &[Self::LinearSite];
type Context: crate::user::state::Context<P>;
fn budget_context(&self) -> &Self::Context;
fn remaining_count(&self) -> P::NonNegativeInteger;
}
pub trait LeaseAllocation<P: Primitives> {
type LinearSite: LinearSite<P>;
fn lease_target(&self) -> &[Self::LinearSite];
type ContextLease: crate::user::state::ContextLease<P>;
fn lease_source(&self) -> &Self::ContextLease;
fn lease_cardinality(&self) -> P::PositiveInteger;
}
pub trait AffineSite<P: Primitives>: crate::bridge::partition::SiteIndex<P> {}