use crate::plonk::CircuitView;
use crate::witness::{Cell, CellOrUnconstrained, WitnessView};
use anyhow::Result;
pub trait Chip<const I: usize, const O: usize> {
fn width(&self) -> usize;
fn build(
&self,
view: &mut impl CircuitView,
inputs: [Option<Cell>; I],
) -> Result<[Option<Cell>; O]>;
fn witness(
&self,
view: &mut impl WitnessView,
inputs: [CellOrUnconstrained; I],
) -> Result<[CellOrUnconstrained; O]>;
}