import { CharStyle, Terminal, TileSize } from '../Terminal';
import { Widget, WidgetConstructor, WidgetOptions } from '../Widget';
import { BidirectionalIterator, WidgetContainer } from '../WidgetContainer';
export interface GridOptions extends WidgetOptions {
    rows: number;
    columns: number;
    fullSize?: boolean;
    borders?: boolean;
    borderStyle?: GridBorderOptions;
    calculateGridSpace?(available: number, cells: number, isRow: boolean, terminal: Terminal): number[];
}
export interface GridBorderOptions extends CharStyle {
    top?: string;
    right?: string;
    bottom?: string;
    left?: string;
    topLeft?: string;
    topRight?: string;
    bottomRight?: string;
    bottomLeft?: string;
    noTop?: string;
    noRight?: string;
    noBottom?: string;
    noLeft?: string;
    cross?: string;
}
export declare class Grid extends Widget<GridOptions> implements WidgetContainer {
    static defaultOptions: GridOptions;
    private readonly attachedWidgets;
    private columnStarts;
    private rowStarts;
    private borderTiles;
    constructor(terminal: Terminal, options: GridOptions, parent?: WidgetContainer);
    destruct(): void;
    render(): void;
    align(): void;
    attachWidget<WidgetType>(col: number, line: number, width: number, height: number, WidgetClass: WidgetConstructor<WidgetType>, options: any): WidgetType;
    dettachWidget(widget: Widget): boolean;
    getWidgetAt(column: number, line: number): Widget;
    [Symbol.iterator](startWidget?: Widget | number): BidirectionalIterator<Widget>;
    getWidgetGrid(column: number, line: number): Widget;
    getCellSize(column: number, line: number): TileSize;
    protected updateOptions(changes: GridOptions): void;
    private calculateBorders;
    private renderBorders;
    private alignWidgets;
    private recalculateCellSizes;
    private resizedEventHandler;
}
