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