use std::marker::PhantomData; use plonky2_field::extension::Extendable; use plonky2::gates::arithmetic_base::ArithmeticBaseGenerator; use plonky2::gates::arithmetic_extension::ArithmeticExtensionGenerator; use plonky2::gates::base_sum::BaseSplitGenerator; use plonky2::gates::coset_interpolation::InterpolationGenerator; use plonky2::gates::exponentiation::ExponentiationGenerator; use plonky2::gates::lookup::LookupGenerator; use plonky2::gates::lookup_table::LookupTableGenerator; use plonky2::gates::multiplication_extension::MulExtensionGenerator; use plonky2::gates::poseidon::PoseidonGenerator; use crate::gate::poseidon2::Poseidon2Generator; use plonky2::gates::poseidon_mds::PoseidonMdsGenerator; use plonky2::gates::random_access::RandomAccessGenerator; use plonky2::gates::reducing::ReducingGenerator; use plonky2::gates::reducing_extension::ReducingGenerator as ReducingExtensionGenerator; use plonky2::hash::hash_types::RichField; use plonky2::{impl_generator_serializer, get_generator_tag_impl, read_generator_impl}; use plonky2::util::serialization::WitnessGeneratorSerializer; use crate::poseidon2_hash::poseidon2::Poseidon2; use plonky2::gadgets::arithmetic::EqualityGenerator; use plonky2::gadgets::arithmetic_extension::QuotientGeneratorExtension; use plonky2::gadgets::range_check::LowHighGenerator; use plonky2::gadgets::split_base::BaseSumGenerator; use plonky2::gadgets::split_join::{SplitGenerator, WireSplitGenerator}; use plonky2::iop::generator::{ConstantGenerator, CopyGenerator, NonzeroTestGenerator, RandomValueGenerator}; use plonky2::plonk::config::{AlgebraicHasher, GenericConfig}; use plonky2::recursion::dummy_circuit::DummyProofGenerator; #[derive(Debug, Default)] pub struct DefaultGeneratorSerializer, const D: usize> { pub _phantom: PhantomData, } /// A generator serializer that can be used to serialize all default generators supported /// by the `plonky2` library with the added `Poseidon2Generator` impl WitnessGeneratorSerializer for DefaultGeneratorSerializer where F: RichField + Extendable + Poseidon2, C: GenericConfig + 'static, C::Hasher: AlgebraicHasher, { impl_generator_serializer! { DefaultGeneratorSerializer, ArithmeticBaseGenerator, ArithmeticExtensionGenerator, BaseSplitGenerator<2>, BaseSumGenerator<2>, ConstantGenerator, CopyGenerator, DummyProofGenerator, EqualityGenerator, ExponentiationGenerator, InterpolationGenerator, LookupGenerator, LookupTableGenerator, LowHighGenerator, MulExtensionGenerator, NonzeroTestGenerator, PoseidonGenerator, Poseidon2Generator, PoseidonMdsGenerator, QuotientGeneratorExtension, RandomAccessGenerator, RandomValueGenerator, ReducingGenerator, ReducingExtensionGenerator, SplitGenerator, WireSplitGenerator } }