// ProverProvider provides a common interface to interact with zero-knowledge circuits
type ZKCircuitProvider interface {
Compile(argv ...interface{}) (interface{}, error)
ComputeWitness(artifacts map[string]interface{}, argv ...interface{}) (interface{}, error)
ExportVerifier(verifyingKey string) (interface{}, error)
Prove(prover, provingKey []byte, witness string) (interface{}, error)
Setup(prover interface{}) (interface{}, interface{})
Verify(proof, verifyingKey []byte, witness string) error