1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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>>,
}