use serde_json::Value;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum ZkError {
#[error("Verification failed: {0}")]
VerificationFailed(String),
#[error("Invalid proof format: {0}")]
InvalidFormat(String),
#[error("Missing public inputs: {0}")]
MissingMetadata(String),
#[error("Configuration error: {0}")]
ConfigError(String),
}
pub trait ZkVerifier: Send + Sync + std::fmt::Debug {
fn verify_stark(
&self,
commitment_hash: &str,
stark_proof_b64: &str,
public_inputs: &Value,
) -> Result<bool, ZkError>;
fn to_jcs_hash(&self) -> Result<crate::merkle::Hash, String> {
Ok(crate::merkle::Hash::digest(&[])) }
}