import { type SystemInfo } from "./system.js";
import { type ToolResult } from "./tools.js";
import { type ContainerInfo } from "./envvars.js";
import { type InstallData } from "./install.js";
import { type CacheStatus } from "./cache.js";
import { type NetworkConfig } from "./network.js";
import { type Provenance } from "./provenance.js";
import { type AppiumDiagnostics } from "./appium.js";
import { type Finding } from "./findings.js";
export interface PrintDebugOptions {
    config: any;
    configPath?: string | null;
    configError?: Error | null;
    /**
     * When `true`, dump every `process.env` entry (redacted by name and
     * by value-shape). When falsy (the default), only env vars actually
     * referenced via `$VAR` in config / input files are listed.
     *
     * Wired from the `--include-env` flag on the `debug` subcommand.
     * Intentionally separate from container detection so users in
     * containers (the common case for env-leak risk) do NOT get an
     * implicit full env dump unless they explicitly ask for it.
     */
    includeEnv?: boolean;
    /**
     * When set, the dump is written into this directory as two timestamped
     * files — `debug-<timestamp>.txt` and `debug-<timestamp>.json` — using
     * the same timestamp printed at the top of the dump. Parent directories
     * are created. Production callers pass `defaultDebugDir()`; unit tests
     * omit it so calling `printDebug` never writes a file as a side effect.
     */
    outDir?: string;
    /**
     * The raw parsed CLI args (yargs argv). Used only by the Config provenance
     * section to report which flags overrode the validated config. Optional so
     * unit tests can call `printDebug` without synthesizing argv.
     */
    args?: any;
    print?: (line: string) => void;
}
export declare function defaultDebugDir(): string;
interface BrowserComponent {
    label: string;
    installed: boolean;
    detail?: string;
}
interface BrowserDiagnostic {
    name: string;
    supported: boolean;
    available: boolean;
    components: BrowserComponent[];
    note?: string;
}
interface BrowsersData {
    timedOut?: boolean;
    error?: string;
    detectionFailed?: boolean;
    browsers?: BrowserDiagnostic[];
}
interface DocDetectiveData {
    version: string;
    executionMethod?: string;
    loadedFrom: string;
    entryPoint: string;
    nodeVersion?: string;
    platform?: string;
    timestamp?: string;
    dependencies: Record<string, string>;
    lockstepWarning?: string;
    error?: string;
}
interface EnvData {
    mode: "referenced" | "full";
    scannedFileCount?: number;
    variables: Array<{
        name: string;
        value: string;
    }>;
}
interface ConfigData {
    configPath: string | null;
    configError?: string;
    redacted: unknown;
}
export interface DebugData {
    generatedAt: string;
    system: SystemInfo;
    docDetective: DocDetectiveData;
    tools: ToolResult[];
    browsers: BrowsersData;
    install: InstallData;
    appium: AppiumDiagnostics;
    cache: CacheStatus;
    container: ContainerInfo;
    network: NetworkConfig;
    environment: EnvData;
    provenance: Provenance;
    config: ConfigData;
    findings: Finding[];
}
export declare function printDebug(opts: PrintDebugOptions): Promise<void>;
export {};
//# sourceMappingURL=index.d.ts.map