use crate::circuit::configuration::AutoConfigure;
pub mod configuration;
pub mod injected;
pub trait ChipArgs {
type Args: Default;
fn chip_args(&self) -> Self::Args {
Default::default()
}
}
pub trait NoChipArgs {}
impl<T> ChipArgs for T
where
T: NoChipArgs,
{
type Args = ();
}
pub trait CircuitInitialization<L> {
type Config: Clone + std::fmt::Debug;
type Args: Default;
type ConfigCols: Clone + std::fmt::Debug + AutoConfigure<Self::CS>;
type CS;
type Error;
fn new_chip(config: &Self::Config, args: Self::Args) -> Self;
fn configure_circuit(meta: &mut Self::CS, columns: &Self::ConfigCols) -> Self::Config;
fn load_chip(&self, layouter: &mut L, config: &Self::Config) -> Result<(), Self::Error>;
}