import '../../../../globals.js';
/**
 * Supertype for layout Nodes
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import TProperty from '../../../../axon/js/TProperty.js';
import Vector2 from '../../../../dot/js/Vector2.js';
import { Node, NodeLayoutConstraint, NodeOptions, SizableOptions } from '../../imports.js';
type SelfOptions = {
    resize?: boolean;
    layoutOrigin?: Vector2;
};
export declare const LAYOUT_NODE_OPTION_KEYS: readonly ["resize", "layoutOrigin"];
type ParentOptions = NodeOptions & SizableOptions;
export type LayoutNodeOptions = SelfOptions & ParentOptions;
declare const LayoutNode_base: typeof Node & import("../../../../phet-core/js/types/Constructor.js").default<import("../WidthSizable.js").TWidthSizable & import("../HeightSizable.js").THeightSizable & {
    validateLocalPreferredSize(): void;
}>;
export default abstract class LayoutNode<Constraint extends NodeLayoutConstraint> extends LayoutNode_base {
    protected _constraint: Constraint;
    readonly layoutOriginProperty: TProperty<Vector2>;
    protected constructor(providedOptions?: LayoutNodeOptions);
    protected linkLayoutBounds(): void;
    setExcludeInvisibleChildrenFromBounds(excludeInvisibleChildrenFromBounds: boolean): void;
    setChildren(children: Node[]): this;
    /**
     * Manually run the layout (for instance, if resize:false is currently set, or if there is other hackery going on).
     */
    updateLayout(): void;
    get resize(): boolean;
    set resize(value: boolean);
    get layoutOrigin(): Vector2;
    set layoutOrigin(value: Vector2);
    /**
     * Manual access to the constraint. This is needed by subtypes to lock/unlock or force layout updates, but may also
     * be needed to read layout information out (for overlays, GridBackgroundNode, etc.)
     */
    get constraint(): Constraint;
    /**
     * Releases references
     */
    dispose(): void;
}
export {};
//# sourceMappingURL=LayoutNode.d.ts.map