import '../../../../assert/js/assert.js';
import '../../../../globals.js';
import Orientation from '../../../../phet-core/js/Orientation.js';
import OrientationPair from '../../../../phet-core/js/OrientationPair.js';
import { ExternalGridConfigurableOptions, GridCell, GridLine, LayoutAlign, Node, NodeLayoutAvailableConstraintOptions, NodeLayoutConstraint } from '../../imports.js';
import TProperty from '../../../../axon/js/TProperty.js';
declare const GRID_CONSTRAINT_OPTION_KEYS: string[];
type SelfOptions = {
    spacing?: number | number[];
    xSpacing?: number | number[];
    ySpacing?: number | number[];
    preferredWidthProperty?: TProperty<number | null>;
    preferredHeightProperty?: TProperty<number | null>;
    minimumWidthProperty?: TProperty<number | null>;
    minimumHeightProperty?: TProperty<number | null>;
};
type ParentOptions = ExternalGridConfigurableOptions & NodeLayoutAvailableConstraintOptions;
export type GridConstraintOptions = SelfOptions & ParentOptions;
declare const GridConstraint_base: {
    new (...args: import("../../../../phet-core/js/types/IntentionalAny.js").default[]): {
        _xAlign: LayoutAlign | null;
        _yAlign: LayoutAlign | null;
        _xStretch: boolean | null;
        _yStretch: boolean | null;
        _xGrow: number | null;
        _yGrow: number | null;
        mutateConfigurable(options?: import("./GridConfigurable.js").GridConfigurableOptions): void;
        setConfigToBaseDefault(): void;
        setConfigToInherit(ignoreOptions?: import("./GridConfigurable.js").GridConfigurableOptions): void;
        xAlign: "left" | "right" | "center" | "origin" | null;
        yAlign: "top" | "bottom" | "center" | "origin" | null;
        grow: number | null;
        xGrow: number | null;
        yGrow: number | null;
        stretch: boolean | null;
        xStretch: boolean | null;
        yStretch: boolean | null;
        _leftMargin: number | null;
        _rightMargin: number | null;
        _topMargin: number | null;
        _bottomMargin: number | null;
        _minContentWidth: number | null;
        _minContentHeight: number | null;
        _maxContentWidth: number | null;
        _maxContentHeight: number | null;
        readonly changedEmitter: import("../../../../axon.js").TEmitter;
        leftMargin: number | null;
        rightMargin: number | null;
        topMargin: number | null;
        bottomMargin: number | null;
        xMargin: number | null;
        yMargin: number | null;
        margin: number | null;
        minContentWidth: number | null;
        minContentHeight: number | null;
        maxContentWidth: number | null;
        maxContentHeight: number | null;
    };
} & typeof NodeLayoutConstraint;
export default class GridConstraint extends GridConstraint_base {
    private readonly cells;
    displayedCells: GridCell[];
    displayedLines: OrientationPair<Map<number, GridLine>>;
    private _spacing;
    constructor(ancestorNode: Node, providedOptions?: GridConstraintOptions);
    protected layout(): void;
    get spacing(): number | number[];
    set spacing(value: number | number[]);
    get xSpacing(): number | number[];
    set xSpacing(value: number | number[]);
    get ySpacing(): number | number[];
    set ySpacing(value: number | number[]);
    addCell(cell: GridCell): void;
    removeCell(cell: GridCell): void;
    /**
     * Releases references
     */
    dispose(): void;
    getIndices(orientation: Orientation): number[];
    getCell(row: number, column: number): GridCell | null;
    getCellFromNode(node: Node): GridCell | null;
    getCells(orientation: Orientation, index: number): GridCell[];
    static create(ancestorNode: Node, options?: GridConstraintOptions): GridConstraint;
}
export { GRID_CONSTRAINT_OPTION_KEYS };
//# sourceMappingURL=GridConstraint.d.ts.map