use std::hash::Hash;
use crate::delegate::priorities::AbstractPriorities;
use crate::handler::handler::AbstractProcessHandler;
use crate::manager::verdict::AbstractGlobalVerdict;
pub trait AbstractProcessConfiguration : Sized {
type Context;
type Parameterization : AbstractProcessParameterization;
type NodeKind : AbstractNodeKind;
type StepKind;
type Priorities : AbstractPriorities<Self::StepKind>;
type FilterCriterion : std::string::ToString;
type FilterEliminationKind : std::string::ToString;
type LocalVerdict : std::string::ToString;
type GlobalVerdict : AbstractGlobalVerdict<Self::LocalVerdict>;
type ProcessHandler : AbstractProcessHandler<Self>;
}
pub trait AbstractNodeKind : Sized + Clone + PartialEq + Eq + Hash {
fn is_included_for_memoization(&self, memoized_node : &Self) -> bool;
}
pub trait AbstractProcessParameterization {
fn get_param_as_strings(&self) -> Vec<String>;
}