"""Typed CLI boundary for NutriCoach candidate sealing."""

from __future__ import annotations

import argparse
from pathlib import Path

def candidate_parser() -> argparse.ArgumentParser:
    parser = argparse.ArgumentParser(description=__doc__)
    _ = parser.add_argument("--base", required=True, type=Path)
    _ = parser.add_argument("--v17-evidence", required=True, type=Path)
    _ = parser.add_argument("--successor", required=True, type=Path)
    _ = parser.add_argument("--build-1-hermes", required=True, type=Path)
    _ = parser.add_argument("--build-1-profile", required=True, type=Path)
    _ = parser.add_argument("--build-2-hermes", required=True, type=Path)
    _ = parser.add_argument("--build-2-profile", required=True, type=Path)
    _ = parser.add_argument("--receipts-root", required=True, type=Path)
    _ = parser.add_argument("--successor-overlay", required=True, type=Path)
    _ = parser.add_argument("--r70-error-evidence", required=True, type=Path)
    _ = parser.add_argument("--observer-evidence", required=True, type=Path)
    _ = parser.add_argument("--fixed-collector-evidence", required=True, type=Path)
    return parser


class CliNamespace(argparse.Namespace):
    """Mutable argparse destination with statically known path fields."""

    def __init__(self) -> None:
        super().__init__()
        self.base: Path = Path()
        self.v17_evidence: Path = Path()
        self.successor: Path = Path()
        self.build_1_hermes: Path = Path()
        self.build_1_profile: Path = Path()
        self.build_2_hermes: Path = Path()
        self.build_2_profile: Path = Path()
        self.receipts_root: Path = Path()
        self.successor_overlay: Path = Path()
        self.r70_error_evidence: Path = Path()
        self.observer_evidence: Path = Path()
        self.fixed_collector_evidence: Path = Path()
