export interface BarSegment {
    value: number;
    color: (text: string) => string;
    label?: string;
}
export interface TableColumn {
    key: string;
    header: string;
    width?: number;
    align?: 'left' | 'right' | 'center';
    color?: (text: string) => string;
}
export interface TreeNode {
    label: string;
    children?: TreeNode[];
    status?: string;
    meta?: string;
}
export declare function progressBar(current: number, total: number, width?: number, options?: {
    filled?: (text: string) => string;
    empty?: (text: string) => string;
    showPercent?: boolean;
    showCount?: boolean;
    label?: string;
}): string;
export declare function stackedBar(segments: BarSegment[], total: number, width?: number): string;
export declare function stackedBarLegend(segments: BarSegment[]): string;
export declare function horizontalBarChart(data: Array<{
    label: string;
    value: number;
    color?: (text: string) => string;
}>, options?: {
    maxWidth?: number;
    maxLabelWidth?: number;
}): string[];
export declare function table(rows: Record<string, unknown>[], columns: TableColumn[]): string[];
/**
 * Calculate the visual width of a string in terminal columns.
 * Wide characters (emoji, CJK) occupy 2 columns; most others occupy 1.
 * Exported for use in tests.
 */
export declare function getVisualWidth(str: string): number;
export declare function tree(node: TreeNode, prefix?: string, isLast?: boolean): string[];
export declare function box(title: string, content: string[], options?: {
    width?: number;
    borderColor?: (text: string) => string;
}): string[];
export declare function sectionHeader(title: string, width?: number): string;
export declare function keyValue(pairs: Array<[string, string | number]>, options?: {
    keyWidth?: number;
    indent?: number;
}): string[];
export declare function miniGauge(value: number, max: number, width?: number): string;
export declare function statusBadge(status: string): string;
export declare function divider(width?: number, char?: string): string;
export declare function bulletList(items: Array<{
    text: string;
    status?: 'ok' | 'warn' | 'error' | 'info';
}>, indent?: number): string[];
export declare function columns(left: string[], right: string[], options?: {
    gap?: number;
    leftWidth?: number;
}): string[];
export declare function inlineProgressSummary(stats: {
    total: number;
    byStatus: Record<string, number>;
    blocked: number;
    ready: number;
}): string[];
//# sourceMappingURL=visualize.d.ts.map