use std::fmt::Debug;
use midnight_proofs::{
circuit::{Chip, Layouter},
plonk::{ConstraintSystem, Error},
};
use crate::CircuitField;
pub trait ComposableChip<F>: Chip<F> + Clone + Debug
where
F: CircuitField,
{
type SharedResources;
type InstructionDeps;
fn new(config: &Self::Config, sub_chips: &Self::InstructionDeps) -> Self;
fn configure(
meta: &mut ConstraintSystem<F>,
shared_resources: &Self::SharedResources,
) -> Self::Config;
fn load(&self, layouter: &mut impl Layouter<F>) -> Result<(), Error>;
}