import { Box } from "./Box";
import { PiEditor } from "../PiEditor";
import { PiElement } from "../../language/PiModel";
declare enum Direction {
    HORIZONTAL = "Horizontal",
    VERTICAL = "Vertical"
}
export declare abstract class ListBox extends Box {
    protected direction: Direction;
    protected _children: Box[];
    constructor(element: PiElement, role: string, children?: Box[], initializer?: Partial<HorizontalListBox>);
    get children(): ReadonlyArray<Box>;
    addChild(child: Box | null): ListBox;
    insertChild(child: Box | null): ListBox;
    addChildren(children?: Box[]): ListBox;
    nextSibling(box: Box): Box | null;
    previousSibling(box: Box): Box | null;
    toString(): string;
}
export declare class HorizontalListBox extends ListBox {
    kind: string;
    constructor(element: PiElement, role: string, children?: (Box | null)[], initializer?: Partial<HorizontalListBox>);
}
export declare class VerticalListBox extends ListBox {
    kind: string;
    constructor(element: PiElement, role: string, children?: Box[], initializer?: Partial<HorizontalListBox>);
}
export declare class VerticalPiElementListBox extends VerticalListBox {
    kind: string;
    insertElement: () => PiElement;
    listPropertyName: string;
    list: PiElement[];
    editor: PiEditor;
    roleToSelectAfterCreation: string;
    constructor(element: PiElement, role: string, list: PiElement[], listPropertyName: string, builder: () => PiElement, editor: PiEditor, initializer?: Partial<VerticalPiElementListBox>);
    init(): void;
}
export declare function isHorizontalBox(b: Box): b is HorizontalListBox;
export declare function isVerticalBox(b: Box): b is VerticalListBox;
export {};
//# sourceMappingURL=ListBox.d.ts.map