import { type RenderableOptions, Renderable } from "../Renderable.js";
import type { OptimizedBuffer } from "../buffer.js";
import { type BorderStyle } from "../lib/border.js";
import { type Selection } from "../lib/selection.js";
import { RGBA, type ColorInput } from "../lib/RGBA.js";
import { type TextChunk } from "../text-buffer.js";
import type { RenderContext } from "../types.js";
export type TextTableCellContent = TextChunk[] | null | undefined;
export type TextTableContent = TextTableCellContent[][];
export type TextTableColumnWidthMode = "content" | "full";
export type TextTableColumnFitter = "proportional" | "balanced";
export interface TextTableOptions extends RenderableOptions<TextTableRenderable> {
    content?: TextTableContent;
    wrapMode?: "none" | "char" | "word";
    columnWidthMode?: TextTableColumnWidthMode;
    columnFitter?: TextTableColumnFitter;
    cellPadding?: number;
    cellPaddingX?: number;
    cellPaddingY?: number;
    columnGap?: number;
    showBorders?: boolean;
    border?: boolean;
    outerBorder?: boolean;
    selectable?: boolean;
    selectionBg?: ColorInput;
    selectionFg?: ColorInput;
    borderStyle?: BorderStyle;
    borderColor?: ColorInput;
    borderBackgroundColor?: ColorInput;
    backgroundColor?: ColorInput;
    fg?: ColorInput;
    bg?: ColorInput;
    attributes?: number;
}
export declare class TextTableRenderable extends Renderable {
    private _content;
    private _wrapMode;
    private _columnWidthMode;
    private _columnFitter;
    private _cellPaddingX;
    private _cellPaddingY;
    private _columnGap;
    private _showBorders;
    private _border;
    private _outerBorder;
    private _hasExplicitOuterBorder;
    private _borderStyle;
    private _borderColor;
    private _borderBackgroundColor;
    private _backgroundColor;
    private _defaultFg;
    private _defaultBg;
    private _defaultAttributes;
    private _selectionBg;
    private _selectionFg;
    private _lastLocalSelection;
    private _lastSelectionMode;
    private _cells;
    private _prevCellContent;
    private _rowCount;
    private _columnCount;
    private _layout;
    private _layoutDirty;
    private _rasterDirty;
    private _cachedMeasureLayout;
    private _cachedMeasureWidth;
    private readonly _defaultOptions;
    constructor(ctx: RenderContext, options?: TextTableOptions);
    get content(): TextTableContent;
    set content(value: TextTableContent);
    get wrapMode(): "none" | "char" | "word";
    set wrapMode(value: "none" | "char" | "word");
    get columnWidthMode(): TextTableColumnWidthMode;
    set columnWidthMode(value: TextTableColumnWidthMode);
    get columnFitter(): TextTableColumnFitter;
    set columnFitter(value: TextTableColumnFitter);
    get cellPadding(): number;
    set cellPadding(value: number);
    get cellPaddingX(): number;
    set cellPaddingX(value: number);
    get cellPaddingY(): number;
    set cellPaddingY(value: number);
    get columnGap(): number;
    set columnGap(value: number);
    get showBorders(): boolean;
    set showBorders(value: boolean);
    get outerBorder(): boolean;
    set outerBorder(value: boolean);
    get border(): boolean;
    set border(value: boolean);
    get borderStyle(): BorderStyle;
    set borderStyle(value: BorderStyle);
    get borderColor(): RGBA;
    set borderColor(value: ColorInput);
    shouldStartSelection(x: number, y: number): boolean;
    onSelectionChanged(selection: Selection | null): boolean;
    hasSelection(): boolean;
    getSelection(): {
        start: number;
        end: number;
    } | null;
    getSelectedText(): string;
    protected onResize(width: number, height: number): void;
    protected renderSelf(buffer: OptimizedBuffer): void;
    protected destroySelf(): void;
    private setupMeasureFunc;
    private rebuildCells;
    private updateCellsDiff;
    private createCell;
    private toStyledText;
    private destroyCells;
    private rebuildLayoutForCurrentWidth;
    private computeLayout;
    private isFullWidthMode;
    private computeColumnWidths;
    private expandColumnWidths;
    private fitColumnWidths;
    private fitColumnWidthsProportional;
    private fitColumnWidthsBalanced;
    private allocateShrinkByWeight;
    private computeRowHeights;
    private computeOffsets;
    private getInterColumnGap;
    private getTotalInterColumnGap;
    private applyLayoutToViews;
    private resolveBorderLayout;
    private getVerticalBorderCount;
    private getHorizontalBorderCount;
    private drawBorders;
    private drawCells;
    private drawCellRange;
    private redrawSelectionRows;
    private clearCellRange;
    private ensureLayoutReady;
    private getCellAtLocalPosition;
    private applySelectionToCells;
    private resolveSelectionResolution;
    private getColumnAtLocalX;
    private getFullCellSelectionCoords;
    private findRowForLocalY;
    private getSelectionRowRange;
    private getDirtySelectionRowRange;
    private resetRowSelection;
    private resetCellSelections;
    private createEmptyLayout;
    private resolveLayoutWidthConstraint;
    private getHorizontalCellPadding;
    private getVerticalCellPadding;
    private resolveColumnFitter;
    private resolveCellPadding;
    private resolveColumnGap;
    private invalidateLayoutAndRaster;
    private invalidateRasterOnly;
}
