use halo2_base::{utils::ScalarField, AssignedValue};
use crate::rlc::types::RlcTrace;
#[derive(Clone, Debug)]
pub struct RlpFieldPrefixParsed<F: ScalarField> {
pub is_not_literal: AssignedValue<F>,
pub is_big: AssignedValue<F>,
pub next_len: AssignedValue<F>,
pub len_len: AssignedValue<F>,
}
#[derive(Clone, Debug)]
pub struct RlpArrayPrefixParsed<F: ScalarField> {
pub is_big: AssignedValue<F>,
pub next_len: AssignedValue<F>,
pub len_len: AssignedValue<F>,
}
#[derive(Clone, Debug)]
pub struct RlpPrefixParsed<F: ScalarField> {
pub is_not_literal: AssignedValue<F>,
pub is_big: AssignedValue<F>,
pub next_len: AssignedValue<F>,
pub len_len: AssignedValue<F>,
}
#[derive(Clone, Debug)]
pub struct RlpFieldWitness<F: ScalarField> {
pub prefix: AssignedValue<F>, pub prefix_len: AssignedValue<F>,
pub len_len: AssignedValue<F>,
pub len_cells: Vec<AssignedValue<F>>,
pub field_len: AssignedValue<F>,
pub field_cells: Vec<AssignedValue<F>>,
pub max_field_len: usize,
pub encoded_item: Vec<AssignedValue<F>>,
pub encoded_item_len: AssignedValue<F>,
}
#[derive(Clone, Debug)]
pub struct RlpFieldTrace<F: ScalarField> {
pub prefix: AssignedValue<F>, pub prefix_len: AssignedValue<F>,
pub len_trace: RlcTrace<F>,
pub field_trace: RlcTrace<F>,
pub rlp_trace: RlcTrace<F>,
}
#[derive(Clone, Debug)]
pub struct RlpArrayWitness<F: ScalarField> {
pub field_witness: Vec<RlpFieldWitness<F>>,
pub len_len: AssignedValue<F>,
pub len_cells: Vec<AssignedValue<F>>,
pub rlp_len: AssignedValue<F>,
pub rlp_array: Vec<AssignedValue<F>>,
pub list_len: Option<AssignedValue<F>>,
}
#[derive(Clone, Debug)]
pub struct RlpArrayTrace<F: ScalarField> {
pub len_trace: RlcTrace<F>,
pub field_trace: Vec<RlpFieldTrace<F>>,
}