from __future__ import annotations

import argparse
import json
from pathlib import Path
from typing import Iterable

from src.config.hyperliquid_env import diagnose_hyperliquid_env


def build_diagnosis_payload(*, env: str, search_dirs: Iterable[str | Path] | None = None) -> dict:
    if search_dirs is None:
        return diagnose_hyperliquid_env(env)
    return diagnose_hyperliquid_env(env, search_dirs=search_dirs)


def main(argv: list[str] | None = None) -> int:
    parser = argparse.ArgumentParser(description="Diagnose Hyperliquid env-specific credential files without printing secrets.")
    parser.add_argument("--env", choices=["mainnet", "testnet"], required=True)
    parser.add_argument("--json", action="store_true")
    args = parser.parse_args(argv)
    payload = build_diagnosis_payload(env=args.env)
    print(json.dumps(payload, indent=2, sort_keys=True) if args.json else payload)
    return 0 if not payload.get("errors") else 2


if __name__ == "__main__":
    raise SystemExit(main())
