use anyhow::Result;
use risc0_circuit_recursion_sys::{RawPreflightTrace, StepMode};
use risc0_zkp::hal::Hal;
pub(crate) mod cpu;
#[cfg(feature = "cuda")]
pub(crate) mod cuda;
pub(crate) trait CircuitWitnessGenerator<H: Hal> {
fn generate_witness(
&self,
mode: StepMode,
total_cycles: u32,
preflight: &RawPreflightTrace,
ctrl: &H::Buffer<H::Elem>,
data: &H::Buffer<H::Elem>,
global: &H::Buffer<H::Elem>,
) -> Result<()>;
}
pub(crate) trait CircuitAccumulator<H: Hal> {
#[allow(clippy::too_many_arguments)]
fn accumulate(
&self,
work_cycles: u32,
total_cycles: u32,
ctrl: &H::Buffer<H::Elem>,
global: &H::Buffer<H::Elem>,
data: &H::Buffer<H::Elem>,
mix: &H::Buffer<H::Elem>,
accum: &H::Buffer<H::Elem>,
) -> Result<()>;
}