use p3_binary_field::TowerLevel;
use p3_commit::Mmcs;
use p3_field::Field;
use p3_sumcheck::ring_switch::bits::BitRingSwitchClaimsProof;
use p3_whir::PcsProof;
use serde::{Deserialize, Serialize};
#[derive(Clone, Serialize, Deserialize)]
#[serde(bound(
serialize = "EF: TowerLevel, MT::Commitment: Serialize, MT::MultiProof: Serialize",
deserialize = "EF: TowerLevel, MT::Commitment: Deserialize<'de>, MT::MultiProof: Deserialize<'de>"
))]
pub struct BooleanWhirProof<EF: Field + Send + Sync, MT: Mmcs<EF>> {
pub reduction: BitRingSwitchClaimsProof<EF>,
pub opening: PcsProof<EF, EF, MT>,
}