import { MatrixActorHtmlElement } from '../../framework/MatrixActorHtmlElement';
/**
 * JSON-compatible value type for table cells.
 */
type JsonValue = string | number | boolean | null | JsonValue[] | {
    [key: string]: JsonValue;
};
/**
 * Table row type - an object with string keys and JSON values.
 */
type TableRow = Record<string, JsonValue>;
/**
 * TableViewer - Displays array data as an interactive table.
 *
 * Accepts:
 *   - setData: { data: any[], label?: string, columns?: string[] }
 *   - sortBy: { column: string, direction?: 'asc' | 'desc' }
 *   - selectRow: { index: number }
 *
 * Emits:
 *   - rowSelected: { index: number, data: any }
 *   - sorted: { column: string, direction: string }
 */
export declare class TableViewer extends MatrixActorHtmlElement {
    static accepts: {
        setData: {
            data: string;
            label: string;
            columns: string;
        };
        sortBy: {
            column: string;
            direction: string;
        };
        selectRow: {
            index: string;
        };
    };
    static emits: {
        rowSelected: {
            index: string;
            data: string;
        };
        sorted: {
            column: string;
            direction: string;
        };
    };
    static template: string;
    private _data;
    private _label;
    private _columns;
    private _sortColumn;
    private _sortDirection;
    private _selectedIndex;
    get data(): TableRow[];
    get label(): string;
    get columns(): string[];
    get sortColumn(): string | null;
    get sortDirection(): 'asc' | 'desc';
    get selectedIndex(): number | null;
    onBootstrap(): Promise<void>;
    onSetData(params: {
        data: TableRow[] | TableRow;
        label?: string;
        columns?: string[];
    }): void;
    onSortBy(params: {
        column: string;
        direction?: 'asc' | 'desc';
    }): void;
    onSelectRow(params: {
        index: number;
    }): void;
    /**
     * Get sorted data for rendering
     */
    getSortedData(): TableRow[];
    /**
     * Format cell value for display
     */
    formatCellValue(value: JsonValue): {
        html: string;
        className: string;
    };
    private _escapeHtml;
    /**
     * Render the table
     */
    render(): void;
}
export declare const TableViewerShell: typeof TableViewer;
export {};
//# sourceMappingURL=TableViewer.d.ts.map