import type { GeneratedFileResult } from "../typegen/write-generated-file.js";
export type DoctorTarget = "routes" | "all";
export type DoctorLevel = "error" | "warn" | "info";
export type DoctorGroup = "routing" | "docs" | "tooling";
export interface DoctorDiagnostic {
    level: DoctorLevel;
    group: DoctorGroup;
    blocking: boolean;
    code: "duplicate-route" | "missing-docs-summary" | "auto-operation-id" | "missing-tags" | "doctor-routes-ok" | "doctor-no-routes";
    message: string;
    filePath?: string;
    fileRelativePath?: string;
    method?: string;
    path?: string;
    suggestedValue?: string;
}
export interface RunDoctorOptions {
    rootDir: string;
    target?: DoctorTarget;
    writeInspect?: boolean;
    writeManifest?: boolean;
}
export interface DoctorSummary {
    errors: number;
    warnings: number;
    infos: number;
    blocking: number;
    byCode: Record<string, number>;
    byGroup: Record<string, number>;
}
export interface DoctorRouteRecord {
    filePath: string;
    fileRelativePath: string;
    method: string;
    path: string;
    prefix: string;
    docsSummary: string | null;
    operationId: string | null;
    effectiveOperationId: string;
    operationIdSource: "explicit" | "inferred";
    tags: string[];
    hidden: boolean;
}
export interface DoctorResult {
    ok: boolean;
    target: DoctorTarget;
    routeFileCount: number;
    routeCount: number;
    summary: DoctorSummary;
    diagnostics: DoctorDiagnostic[];
    routes: DoctorRouteRecord[];
    inspect?: GeneratedFileResult;
    manifest?: GeneratedFileResult;
}
export declare function runDoctor(options: RunDoctorOptions): Promise<DoctorResult>;
