use sp1_recursion_derive::DslVariable;
use super::{Ext, Felt, Var};
use crate::ir::{Array, Builder, Config, MemIndex, MemVariable, Ptr, Variable};
#[derive(DslVariable, Debug, Clone)]
pub struct FriFoldInput<C: Config> {
    pub z: Ext<C::F, C::EF>,
    pub alpha: Ext<C::F, C::EF>,
    pub x: Felt<C::F>,
    pub log_height: Var<C::N>,
    pub mat_opening: Array<C, Ext<C::F, C::EF>>,
    pub ps_at_z: Array<C, Ext<C::F, C::EF>>,
    pub alpha_pow: Array<C, Ext<C::F, C::EF>>,
    pub ro: Array<C, Ext<C::F, C::EF>>,
}
#[derive(Debug, Clone)]
pub struct CircuitV2FriFoldInput<C: Config> {
    pub z: Ext<C::F, C::EF>,
    pub alpha: Ext<C::F, C::EF>,
    pub x: Felt<C::F>,
    pub mat_opening: Vec<Ext<C::F, C::EF>>,
    pub ps_at_z: Vec<Ext<C::F, C::EF>>,
    pub alpha_pow_input: Vec<Ext<C::F, C::EF>>,
    pub ro_input: Vec<Ext<C::F, C::EF>>,
}
#[derive(Debug, Clone)]
pub struct CircuitV2FriFoldOutput<C: Config> {
    pub alpha_pow_output: Vec<Ext<C::F, C::EF>>,
    pub ro_output: Vec<Ext<C::F, C::EF>>,
}