pub trait Poseidon2CircuitBuilder<C: Config> {
// Required methods
fn p2_permute_mut(&mut self, state: [Var<C::N>; 3]);
fn p2_hash(&mut self, input: &[Felt<C::F>]) -> OuterDigestVariable<C>;
fn p2_compress(
&mut self,
input: [OuterDigestVariable<C>; 2],
) -> OuterDigestVariable<C>;
fn p2_babybear_permute_mut(&mut self, state: [Felt<C::F>; 16]);
fn p2_babybear_hash(&mut self, input: &[Felt<C::F>]) -> [Felt<C::F>; 8];
}