use crate::enums::TriadProjection;
use crate::HostTypes;
pub trait Query<H: HostTypes> {
fn input_type(&self) -> &H::HostString;
fn output_type(&self) -> &H::HostString;
}
pub trait CoordinateQuery<H: HostTypes>: Query<H> {
fn has_triad_projection(&self) -> TriadProjection;
}
pub trait MetricQuery<H: HostTypes>: Query<H> {}
pub trait RepresentationQuery<H: HostTypes>: Query<H> {}
pub trait RelationQuery<H: HostTypes>: Query<H> {
type Element: crate::kernel::address::Element<H>;
fn source_address(&self) -> &Self::Element;
type Constraint: crate::user::type_::Constraint<H>;
fn relation_type(&self) -> &Self::Constraint;
type FreeRank: crate::bridge::partition::FreeRank<H>;
fn target_site(&self) -> &Self::FreeRank;
type GroundingMap: crate::user::morphism::GroundingMap<H>;
fn grounding_map(&self) -> &Self::GroundingMap;
type ProjectionMap: crate::user::morphism::ProjectionMap<H>;
fn projection_map(&self) -> &Self::ProjectionMap;
type Context: crate::user::state::Context<H>;
fn session_context(&self) -> &Self::Context;
}
pub trait SessionQuery<H: HostTypes>: RelationQuery<H> {
type Session: crate::user::state::Session<H>;
fn session_membership(&self) -> &Self::Session;
}
pub mod two_adic_valuation {}
pub mod walsh_hadamard_image {}
pub mod address {}