prover-config 1.0.0

prover-config exposes the config structs for the prover-engine.
Documentation
use pretty_assertions::assert_eq;
use prover_config::{CpuProverConfig, MockProverConfig, NetworkProverConfig, ProverType};
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
struct TestConfig {
    primary_prover: ProverType,
    fallback_prover: Option<ProverType>,
}

#[test]
fn network_prover() {
    let input = "./tests/fixtures/validate_config/prover_config_network_prover.toml";
    let config: TestConfig = toml::from_str(&std::fs::read_to_string(input).unwrap()).unwrap();

    assert_eq!(
        config.primary_prover,
        ProverType::NetworkProver(NetworkProverConfig {
            proving_request_timeout: Some(std::time::Duration::from_secs(300)),
            proving_timeout: std::time::Duration::from_secs(600),
            sp1_cluster_endpoint: url::Url::parse("https://rpc.production.succinct.xyz/").unwrap(),
        })
    );
}

#[test]
fn cpu_prover() {
    let input = "./tests/fixtures/validate_config/prover_config_cpu_prover.toml";
    let config: TestConfig = toml::from_str(&std::fs::read_to_string(input).unwrap()).unwrap();

    assert_eq!(
        config.primary_prover,
        ProverType::CpuProver(CpuProverConfig {
            max_concurrency_limit: 10,
            proving_request_timeout: Some(std::time::Duration::from_secs(300)),
            proving_timeout: std::time::Duration::from_secs(600),
        })
    );
}

#[test]
fn network_and_cpu_prover() {
    let input = "./tests/fixtures/validate_config/prover_config_primary_fallback_prover.toml";
    let config: TestConfig = toml::from_str(&std::fs::read_to_string(input).unwrap()).unwrap();

    assert_eq!(
        config.primary_prover,
        ProverType::NetworkProver(NetworkProverConfig {
            proving_request_timeout: Some(std::time::Duration::from_secs(300)),
            proving_timeout: std::time::Duration::from_secs(600),
            sp1_cluster_endpoint: url::Url::parse("https://rpc.production.succinct.xyz/").unwrap(),
        })
    );

    assert_eq!(
        config.fallback_prover,
        Some(ProverType::CpuProver(CpuProverConfig {
            max_concurrency_limit: 10,
            proving_request_timeout: Some(std::time::Duration::from_secs(300)),
            proving_timeout: std::time::Duration::from_secs(600),
        }))
    );
}

#[test]
fn mock_prover() {
    let input = "./tests/fixtures/validate_config/prover_config_mock_prover.toml";
    let config: TestConfig = toml::from_str(&std::fs::read_to_string(input).unwrap()).unwrap();

    assert_eq!(
        config.primary_prover,
        ProverType::MockProver(MockProverConfig {
            max_concurrency_limit: 10,
            proving_request_timeout: Some(std::time::Duration::from_secs(300)),
            proving_timeout: std::time::Duration::from_secs(600),
        })
    );
}