use crate::Primitives;
pub trait LinearFiber<P: Primitives>: crate::bridge::partition::FiberCoordinate<P> {}
pub trait LinearEffect<P: Primitives>: crate::kernel::effect::PinningEffect<P> {
type LinearFiber: LinearFiber<P>;
fn linear_target(&self) -> &Self::LinearFiber;
}
pub trait LinearTrace<P: Primitives>: crate::bridge::trace::ComputationTrace<P> {}
pub trait LinearBudget<P: Primitives> {
type LinearFiber: LinearFiber<P>;
fn budget_fibers(&self) -> &[Self::LinearFiber];
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 LinearFiber: LinearFiber<P>;
fn lease_target(&self) -> &[Self::LinearFiber];
type ContextLease: crate::user::state::ContextLease<P>;
fn lease_source(&self) -> &Self::ContextLease;
fn lease_cardinality(&self) -> P::PositiveInteger;
}
pub trait AffineFiber<P: Primitives>: crate::bridge::partition::FiberCoordinate<P> {}