import '../../../../assert/js/assert.js';
import '../../../../globals.js';
import StrictOmit from '../../../../phet-core/js/types/StrictOmit.js';
import { FlowCell, FlowConstraint, FlowConstraintOptions, HorizontalLayoutAlign, HorizontalLayoutJustification, LayoutNode, LayoutNodeOptions, LayoutOrientation, Node, VerticalLayoutAlign, VerticalLayoutJustification } from '../../imports.js';
type ExcludeFlowConstraintOptions = 'excludeInvisible' | 'preferredWidthProperty' | 'preferredHeightProperty' | 'minimumWidthProperty' | 'minimumHeightProperty' | 'layoutOriginProperty';
type SelfOptions = {
    resize?: boolean;
} & StrictOmit<FlowConstraintOptions, ExcludeFlowConstraintOptions>;
export type FlowBoxOptions = SelfOptions & LayoutNodeOptions;
export default class FlowBox extends LayoutNode<FlowConstraint> {
    private readonly _cellMap;
    private readonly onChildInserted;
    private readonly onChildRemoved;
    private readonly onChildrenReordered;
    private readonly onChildrenChanged;
    constructor(providedOptions?: FlowBoxOptions);
    /**
     * Called when a child is inserted.
     */
    protected onFlowBoxChildInserted(node: Node, index: number): void;
    /**
     * Called when a child is removed.
     */
    private onFlowBoxChildRemoved;
    /**
     * Called when children are rearranged
     */
    private onFlowBoxChildrenReordered;
    /**
     * Called on change of children (child added, removed, order changed, etc.)
     */
    private onFlowBoxChildrenChanged;
    getCell(node: Node): FlowCell;
    get orientation(): LayoutOrientation;
    set orientation(value: LayoutOrientation);
    get spacing(): number;
    set spacing(value: number);
    get lineSpacing(): number;
    set lineSpacing(value: number);
    get justify(): HorizontalLayoutJustification | VerticalLayoutJustification;
    set justify(value: HorizontalLayoutJustification | VerticalLayoutJustification);
    get justifyLines(): HorizontalLayoutJustification | VerticalLayoutJustification | null;
    set justifyLines(value: HorizontalLayoutJustification | VerticalLayoutJustification | null);
    get wrap(): boolean;
    set wrap(value: boolean);
    get align(): HorizontalLayoutAlign | VerticalLayoutAlign;
    set align(value: HorizontalLayoutAlign | VerticalLayoutAlign);
    get stretch(): boolean;
    set stretch(value: boolean);
    get grow(): number;
    set grow(value: number);
    get margin(): number;
    set margin(value: number);
    get xMargin(): number;
    set xMargin(value: number);
    get yMargin(): number;
    set yMargin(value: number);
    get leftMargin(): number;
    set leftMargin(value: number);
    get rightMargin(): number;
    set rightMargin(value: number);
    get topMargin(): number;
    set topMargin(value: number);
    get bottomMargin(): number;
    set bottomMargin(value: number);
    get minContentWidth(): number | null;
    set minContentWidth(value: number | null);
    get minContentHeight(): number | null;
    set minContentHeight(value: number | null);
    get maxContentWidth(): number | null;
    set maxContentWidth(value: number | null);
    get maxContentHeight(): number | null;
    set maxContentHeight(value: number | null);
    /**
     * Releases references
     */
    dispose(): void;
    setOrientation(orientation: LayoutOrientation): this;
    getOrientation(): LayoutOrientation;
    setSpacing(spacing: number): this;
    getSpacing(): number;
    setAlign(align: HorizontalLayoutAlign | VerticalLayoutAlign): this;
    getAlign(): HorizontalLayoutAlign | VerticalLayoutAlign;
    setResize(resize: boolean): this;
    isResize(): boolean;
    getHelperNode(): Node;
    mutate(options?: FlowBoxOptions): this;
    static readonly DEFAULT_FLOW_BOX_OPTIONS: {
        readonly orientation: "horizontal";
        readonly spacing: 0;
        readonly align: "center";
        readonly stretch: false;
    };
}
export {};
//# sourceMappingURL=FlowBox.d.ts.map