import { z } from 'zod';
import type { WizardSession } from './wizard-session.js';
/** Bump when the schema changes in a way downstream consumers care about. */
export declare const DIAGNOSTICS_SCHEMA_VERSION: 1;
export declare const DiagnosticsSchema: z.ZodObject<{
    schema_version: z.ZodLiteral<1>;
    collected_at: z.ZodString;
    system: z.ZodObject<{
        os: z.ZodString;
        os_release: z.ZodNullable<z.ZodString>;
        arch: z.ZodString;
        node_version: z.ZodString;
        shell: z.ZodNullable<z.ZodString>;
        term_program: z.ZodNullable<z.ZodString>;
        locale: z.ZodNullable<z.ZodString>;
        wizard_version: z.ZodString;
    }, z.core.$strip>;
    codebase: z.ZodObject<{
        detected_frameworks: z.ZodArray<z.ZodString>;
        package_managers: z.ZodArray<z.ZodString>;
        has_typescript: z.ZodBoolean;
        has_package_json: z.ZodBoolean;
        amplitude_sdk_packages: z.ZodArray<z.ZodObject<{
            name: z.ZodString;
            version: z.ZodString;
        }, z.core.$strip>>;
        dependency_counts: z.ZodObject<{
            dependencies: z.ZodNumber;
            dev_dependencies: z.ZodNumber;
        }, z.core.$strip>;
        monorepo: z.ZodBoolean;
        repo_size_bucket: z.ZodString;
    }, z.core.$strip>;
    session: z.ZodObject<{
        run_phase: z.ZodString;
        integration: z.ZodNullable<z.ZodString>;
        region: z.ZodNullable<z.ZodEnum<{
            us: "us";
            eu: "eu";
        }>>;
        intro_concluded: z.ZodBoolean;
        setup_confirmed: z.ZodBoolean;
        detection_complete: z.ZodBoolean;
        has_credentials: z.ZodBoolean;
    }, z.core.$strip>;
    collection_errors: z.ZodArray<z.ZodString>;
}, z.core.$strip>;
export type Diagnostics = z.infer<typeof DiagnosticsSchema>;
/**
 * Replace the user's home directory (and /Users/<name> style paths) with
 * a tilde so the payload doesn't leak usernames.
 */
export declare function redactHomePath(input: string): string;
export interface CollectDiagnosticsOptions {
    session: Pick<WizardSession, 'installDir' | 'integration' | 'region' | 'runPhase' | 'introConcluded' | 'setupConfirmed' | 'detectionComplete' | 'credentials'>;
    /** Wizard version string — usually from package.json via bin.ts. */
    wizardVersion: string;
    /** Pre-computed framework detection results (already run during the wizard). */
    detectedFrameworks?: Array<{
        integration: string;
        detected: boolean;
    }>;
    /** Budget for the collection. Defaults to 3s. */
    timeoutMs?: number;
}
/**
 * Gather a validated diagnostics payload. Never throws — on any failure
 * the offending field is set to its safe default and the error message
 * is pushed onto `collection_errors`.
 */
export declare function collectDiagnostics(opts: CollectDiagnosticsOptions): Promise<Diagnostics>;
