import type { CodeGraph } from "../types.js";
export interface VizFile {
    id: string;
    label: string;
    language: string;
    deps: number;
    dependents: number;
    symbolCount: number;
}
export interface VizFileEdge {
    source: string;
    target: string;
    type: "import" | "re-export" | "dynamic-import";
    cyclic: boolean;
}
export interface VizSymbol {
    id: string;
    file: string;
    name: string;
    qualifiedName: string;
    kind: string;
    line: number;
}
export interface VizSymbolEdge {
    source: string;
    target: string;
    confidence: "unique" | "multiple-candidates" | "local" | "unresolved" | "engine";
}
export interface VizData {
    project: {
        name: string;
        files: number;
        edges: number;
        symbols: number | null;
        callEdges: number | null;
        builtAt: string | null;
    };
    files: VizFile[];
    fileEdges: VizFileEdge[];
    symbols: VizSymbol[];
    symbolEdges: VizSymbolEdge[];
    /** Per-file symbol list for the sidebar; capped to MAX_SYMS_PER_FILE */
    symbolsByFile: Record<string, VizSymbol[]>;
    symbolMode: "full" | "omitted" | "capped";
    symbolOmitReason?: string;
}
/** Reset the asset cache (for tests / hot-reload). */
export declare function resetVisualizeAssetCache(): void;
export interface InteractiveHtmlOptions {
    projectPath: string;
    projectName: string;
    projectId: string;
    graph: CodeGraph;
}
/**
 * Build the interactive HTML viewer for a project as a single
 * self-contained string. Includes the file-import graph unconditionally
 * and the symbol-level call graph when it fits within the embed caps.
 */
export declare function buildInteractiveGraphHtml(opts: InteractiveHtmlOptions): Promise<{
    html: string;
    stats: {
        files: number;
        fileEdges: number;
        symbolMode: string;
        symbols: number;
        symbolEdges: number;
    };
}>;
//# sourceMappingURL=graph-visualize-html.d.ts.map