import { COMMUNITY_COLORS, DEFAULT_NODE_COLORS, DEFAULT_ROLE_COLORS } from './colors.js';
export { COMMUNITY_COLORS, DEFAULT_NODE_COLORS, DEFAULT_ROLE_COLORS };
export interface PlotConfig {
    layout?: {
        algorithm?: string;
        direction?: string;
    };
    physics?: {
        enabled?: boolean;
        nodeDistance?: number;
    };
    nodeColors?: Record<string, string>;
    roleColors?: Record<string, string>;
    colorBy?: string;
    edgeStyle?: {
        color?: string;
        smooth?: boolean;
    };
    filter?: {
        kinds?: string[] | null;
        roles?: string[] | null;
        files?: string[] | null;
    };
    title?: string;
    seedStrategy?: string;
    seedCount?: number;
    clusterBy?: string;
    sizeBy?: string;
    overlays?: {
        complexity?: boolean;
        risk?: boolean;
    };
    riskThresholds?: {
        highBlastRadius?: number;
        lowMI?: number;
    };
}
export declare const DEFAULT_CONFIG: PlotConfig;
export declare function loadPlotConfig(dir: string): PlotConfig;
export declare function escapeHtml(s: string): string;
interface LayoutOptions {
    nodes: {
        shape: string;
        font: {
            face: string;
            size: number;
        };
    };
    edges: {
        arrows: string;
        color: string;
        smooth: boolean;
    };
    physics: {
        enabled: boolean;
        barnesHut: {
            gravitationalConstant: number;
            springLength: number;
        };
    };
    interaction: {
        tooltipDelay: number;
        hover: boolean;
    };
    layout?: {
        hierarchical: {
            enabled: boolean;
            direction: string;
            sortMethod: string;
            nodeSpacing: number;
        };
    };
}
export declare function buildLayoutOptions(cfg: PlotConfig): LayoutOptions;
export interface ViewerNode {
    id: number | string;
    label: string;
    kind: string;
    file: string;
    line: number;
    role: string | null;
    fanIn: number;
    fanOut: number;
    cognitive: number | null;
    cyclomatic: number | null;
    maintainabilityIndex: number | null;
    community: number | null;
    directory: string | null;
    risk: string[];
}
export interface ViewerEdge {
    id: number | string;
    from: number | string;
    to: number | string;
}
export interface ViewerData {
    nodes: ViewerNode[];
    edges: ViewerEdge[];
    seedNodeIds: (number | string)[];
}
export declare function renderPlotHTML(data: ViewerData, cfg: PlotConfig): string;
//# sourceMappingURL=viewer.d.ts.map