use std::path::PathBuf;
use clap::Parser;
use super::{InputFormat, version_string};
#[derive(Parser)]
#[command(
name = "holos verify-collapse",
version = version_string(),
about = "Verify a collapse artifact against its input"
)]
pub(crate) struct VerifyCli {
pub(crate) input: PathBuf,
pub(crate) artifact: PathBuf,
#[arg(long, value_enum)]
pub(crate) format: Option<InputFormat>,
#[arg(long, value_name = "T")]
pub(crate) threshold: Option<f64>,
#[arg(long, value_name = "N", default_value_t = 1)]
pub(crate) threads: usize,
#[arg(long, value_name = "BYTES", default_value_t = 1usize << 30)]
pub(crate) max_artifact_bytes: usize,
}
#[derive(Parser)]
#[command(
name = "holos verify-atlas",
version = version_string(),
about = "Verify a proof-carrying H0 and H1 atlas against its input"
)]
pub(crate) struct VerifyAtlasCli {
pub(crate) input: PathBuf,
pub(crate) artifact: PathBuf,
#[arg(long, value_enum)]
pub(crate) format: Option<InputFormat>,
#[arg(long, value_name = "N", default_value_t = 1)]
pub(crate) threads: usize,
#[arg(long, value_name = "BYTES", default_value_t = 1usize << 30)]
pub(crate) max_artifact_bytes: usize,
}
#[derive(Parser)]
#[command(
name = "holos verify-trajectory",
version = version_string(),
about = "Verify a self-contained persistence trajectory"
)]
pub(crate) struct VerifyTrajectoryCli {
pub(crate) artifact: PathBuf,
#[arg(long, value_name = "BYTES", default_value_t = 1usize << 30)]
pub(crate) max_artifact_bytes: usize,
}
#[derive(Parser)]
#[command(
name = "holos verify-program",
version = version_string(),
about = "Verify a compositional H0 and H1 program against its input"
)]
pub(crate) struct VerifyProgramCli {
pub(crate) input: PathBuf,
pub(crate) artifact: PathBuf,
#[arg(long, value_enum)]
pub(crate) format: Option<InputFormat>,
#[arg(long, value_name = "N", default_value_t = 1)]
pub(crate) threads: usize,
#[arg(long, value_name = "BYTES", default_value_t = 1usize << 30)]
pub(crate) max_artifact_bytes: usize,
}
#[derive(Parser)]
#[command(
name = "holos verify-program-trace",
version = version_string(),
about = "Verify a self-contained compositional persistence trace"
)]
pub(crate) struct VerifyProgramTraceCli {
pub(crate) artifact: PathBuf,
#[arg(long, value_name = "BYTES", default_value_t = 1usize << 30)]
pub(crate) max_artifact_bytes: usize,
}
#[derive(Parser)]
#[command(
name = "holos verify-intervention",
version = version_string(),
about = "Verify a self-contained finite H1 intervention"
)]
pub(crate) struct VerifyInterventionCli {
pub(crate) artifact: PathBuf,
#[arg(long, value_name = "BYTES", default_value_t = 1usize << 30)]
pub(crate) max_artifact_bytes: usize,
}