pub trait ParameterSource<E: Engine>: Send + Sync {
type G1Builder: SourceBuilder<E::G1Affine>;
type G2Builder: SourceBuilder<E::G2Affine>;
fn get_vk(&self, num_ic: usize) -> Result<&VerifyingKey<E>, SynthesisError>;
fn get_h(&self, num_h: usize) -> Result<Self::G1Builder, SynthesisError>;
fn get_l(&self, num_l: usize) -> Result<Self::G1Builder, SynthesisError>;
fn get_a(
&self,
num_inputs: usize,
num_aux: usize
) -> Result<(Self::G1Builder, Self::G1Builder), SynthesisError>;
fn get_b_g1(
&self,
num_inputs: usize,
num_aux: usize
) -> Result<(Self::G1Builder, Self::G1Builder), SynthesisError>;
fn get_b_g2(
&self,
num_inputs: usize,
num_aux: usize
) -> Result<(Self::G2Builder, Self::G2Builder), SynthesisError>;
}