import '../../../assert/js/assert.js';
import '../../../globals.js';
/**
 * HeightSizable is a trait that provides a minimum and preferred height. The minimum height is set by the component,
 * so that layout containers could know how "small" the component can be made. The preferred height is set by the
 * layout container, and the component should adjust its size so that it takes up that height.
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import TinyProperty from '../../../axon/js/TinyProperty.js';
import { Node } from '../imports.js';
import Constructor from '../../../phet-core/js/types/Constructor.js';
export declare const HEIGHT_SIZABLE_OPTION_KEYS: string[];
export type HeightSizableOptions = {
    preferredHeight?: number | null;
    minimumHeight?: number | null;
    localPreferredHeight?: number | null;
    localMinimumHeight?: number | null;
    heightSizable?: boolean;
};
export type THeightSizable = {
    readonly preferredHeightProperty: TinyProperty<number | null>;
    readonly minimumHeightProperty: TinyProperty<number | null>;
    readonly localPreferredHeightProperty: TinyProperty<number | null>;
    readonly localMinimumHeightProperty: TinyProperty<number | null>;
    readonly isHeightResizableProperty: TinyProperty<boolean>;
    preferredHeight: number | null;
    localPreferredHeight: number | null;
    minimumHeight: number | null;
    localMinimumHeight: number | null;
    heightSizable: boolean;
    validateLocalPreferredHeight(): void;
    _preferredSizeChanging: boolean;
    _minimumSizeChanging: boolean;
    _preferredSizeChangeAttemptDuringLock: boolean;
    _minimumSizeChangeAttemptDuringLock: boolean;
    _updatePreferredHeightListener: () => void;
    _updateLocalPreferredHeightListener: () => void;
    _updateMinimumHeightListener: () => void;
    _updateLocalMinimumHeightListener: () => void;
    _calculateLocalPreferredHeight(): number | null;
    _onReentrantPreferredHeight(): void;
    _calculatePreferredHeight(): number | null;
    _calculateLocalMinimumHeight(): number | null;
    _onReentrantLocalMinimumHeight(): void;
    _calculateMinimumHeight(): number | null;
};
declare const HeightSizable: <SuperType extends Constructor<Node>>(k: SuperType) => SuperType & Constructor<THeightSizable>;
export type HeightSizableNode = Node & THeightSizable;
declare const isHeightSizable: (node: Node) => node is HeightSizableNode;
declare const extendsHeightSizable: (node: Node) => node is HeightSizableNode;
export default HeightSizable;
export { isHeightSizable, extendsHeightSizable };
//# sourceMappingURL=HeightSizable.d.ts.map