/**
 * CLI Output Formatter
 *
 * Handles formatting output for different modes (human, JSON, quiet).
 */
import type { OutputMode, CommandResult } from './types.js';
/**
 * Output formatter interface
 */
export interface OutputFormatter {
    /** Format a successful result */
    success(result: CommandResult): string;
    /** Format an error result */
    error(result: CommandResult): string;
    /** Format a table of data */
    table(headers: string[], rows: unknown[][]): string;
    /** Format a single element */
    element(data: Record<string, unknown>): string;
    /** Format a list of elements */
    list(items: Record<string, unknown>[]): string;
    /** Format a tree structure */
    tree(data: TreeNode): string;
}
/**
 * Tree node for hierarchical display
 */
export interface TreeNode {
    label: string;
    children?: TreeNode[];
}
/**
 * Gets the appropriate formatter for the output mode
 */
export declare function getFormatter(mode: OutputMode): OutputFormatter;
/**
 * Determines output mode from global options
 */
export declare function getOutputMode(options: {
    json?: boolean;
    quiet?: boolean;
    verbose?: boolean;
}): OutputMode;
/**
 * Status display characters (can be extended with colors)
 */
export declare const STATUS_ICONS: Record<string, string>;
/**
 * Gets the status icon for a status value
 */
export declare function getStatusIcon(status: string): string;
/**
 * Event type display names
 */
export declare const EVENT_TYPE_DISPLAY: Record<string, string>;
/**
 * Event type icons
 */
export declare const EVENT_TYPE_ICONS: Record<string, string>;
/**
 * Event data for formatting
 */
export interface EventData {
    id: number;
    elementId: string;
    eventType: string;
    actor: string;
    createdAt: string;
    oldValue?: Record<string, unknown> | null;
    newValue?: Record<string, unknown> | null;
}
/**
 * Formats a single event for human display
 */
export declare function formatEvent(event: EventData): string;
/**
 * Formats a timestamp for display
 */
export declare function formatTimestamp(timestamp: string): string;
/**
 * Formats events as a timeline
 */
export declare function formatTimeline(events: EventData[]): string;
/**
 * Formats events as a detailed table
 */
export declare function formatEventsTable(events: EventData[]): string;
//# sourceMappingURL=formatter.d.ts.map