import '../../../../assert/js/assert.js';
import '../../../../globals.js';
import TProperty from '../../../../axon/js/TProperty.js';
import Bounds2 from '../../../../dot/js/Bounds2.js';
import Vector2 from '../../../../dot/js/Vector2.js';
import Orientation from '../../../../phet-core/js/Orientation.js';
import { LayoutConstraint, LayoutProxy, MarginLayoutCell, Node } from '../../imports.js';
type SelfOptions = {
    excludeInvisible?: boolean;
    preferredWidthProperty?: TProperty<number | null>;
    preferredHeightProperty?: TProperty<number | null>;
    minimumWidthProperty?: TProperty<number | null>;
    minimumHeightProperty?: TProperty<number | null>;
    layoutOriginProperty?: TProperty<Vector2>;
};
export type NodeLayoutConstraintOptions = SelfOptions;
export type NodeLayoutAvailableConstraintOptions = Pick<NodeLayoutConstraintOptions, 'excludeInvisible' | 'layoutOriginProperty'>;
export default class NodeLayoutConstraint extends LayoutConstraint {
    private _excludeInvisible;
    readonly layoutBoundsProperty: TProperty<Bounds2>;
    readonly preferredWidthProperty: TProperty<number | null>;
    readonly preferredHeightProperty: TProperty<number | null>;
    readonly minimumWidthProperty: TProperty<number | null>;
    readonly minimumHeightProperty: TProperty<number | null>;
    readonly layoutOriginProperty: TProperty<Vector2>;
    /**
     * Recommended for ancestorNode to be the layout container, and that the layout container extends LayoutNode.
     * (scenery-internal)
     */
    constructor(ancestorNode: Node, providedOptions?: NodeLayoutConstraintOptions);
    /**
     * Filters out cells to only those that will be involved in layout
     */
    protected filterLayoutCells<Cell extends MarginLayoutCell>(cells: Cell[]): Cell[];
    get excludeInvisible(): boolean;
    set excludeInvisible(value: boolean);
    /**
     * Sets preferred size of content in a central location (so we could hook in animation in the future)
     * (scenery-internal)
     */
    setProxyPreferredSize(orientation: Orientation, proxy: LayoutProxy, preferredSize: number | null): void;
    /**
     * Sets position of content in a central location (so we could hook in animation in the future)
     * (scenery-internal)
     */
    setProxyMinSide(orientation: Orientation, proxy: LayoutProxy, minSide: number): void;
    /**
     * Sets origin-based position of content in a central location (so we could hook in animation in the future)
     * (scenery-internal)
     */
    setProxyOrigin(orientation: Orientation, proxy: LayoutProxy, origin: number): void;
    /**
     * Releases references
     */
    dispose(): void;
}
export {};
//# sourceMappingURL=NodeLayoutConstraint.d.ts.map