import { CharStyle, Terminal } from '../Terminal';
import { Widget, WidgetConstructor, WidgetOptions } from '../Widget';
import { BidirectionalIterator, WidgetContainer } from '../WidgetContainer';
export interface BoxBorderOptions extends CharStyle {
    topLeft?: string;
    top?: string;
    topRight?: string;
    left?: string;
    center?: string;
    right?: string;
    bottomLeft?: string;
    bottom?: string;
    bottomRight?: string;
}
export interface BoxTitleOptions extends CharStyle {
    marginLeft?: number;
    marginRight?: number;
    ellipsis?: string;
}
export interface BoxPaddingOptions {
    top?: number;
    right?: number;
    bottom?: number;
    left?: number;
}
export interface BoxAspectOptions {
    boxTitle?: BoxTitleOptions;
    boxBorders?: BoxBorderOptions;
}
export interface BoxOptions extends WidgetOptions {
    title?: string;
    padding?: BoxPaddingOptions;
    base?: BoxAspectOptions;
    focus?: BoxAspectOptions;
    disabled?: BoxAspectOptions;
}
export declare class Box extends Widget<BoxOptions> implements WidgetContainer {
    static defaultOptions: BoxOptions;
    private static readonly boxTilesPool;
    private optionsFocus;
    private optionsDisabled;
    private attachedWidget;
    constructor(terminal: Terminal, options?: BoxOptions, parent?: WidgetContainer);
    render(): void;
    attachWidget<WidgetType extends Widget>(WidgetClass: WidgetConstructor<WidgetType>, options: any): WidgetType;
    dettachWidget(widget: Widget): boolean;
    getWidgetAt(column: number, line: number): Widget;
    [Symbol.iterator](startWidget?: Widget | number): BidirectionalIterator<Widget>;
    protected updateOptions(changes: BoxOptions): void;
    private setBorderPool;
    private getBoxTiles;
    private getAspectOptions;
    private getAvailableSpace;
}
