import '../../../../assert/js/assert.js';
import '../../../../globals.js';
/**
 * Mixin for storing options that can affect each cell.
 *
 * Handles a lot of conversion from internal Enumeration values (for performance) and external string representations.
 * This is done primarily for performance and that style of internal enumeration pattern. If string comparisons are
 * faster, that could be used instead.
 *
 * NOTE: This is mixed into both the constraint AND the cell, since we have two layers of options. The `null` meaning
 * "inherit from the default" is mainly used for the cells, so that if it's not specified in the cell, it will be
 * specified in the constraint (as non-null).
 *
 * NOTE: This is a mixin meant to be used internally only by Scenery (for the constraint and cell), and should not be
 * used by outside code.
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import Constructor from '../../../../phet-core/js/types/Constructor.js';
import { HorizontalLayoutAlign, LayoutAlign, MarginLayoutConfigurableOptions, VerticalLayoutAlign } from '../../imports.js';
import WithoutNull from '../../../../phet-core/js/types/WithoutNull.js';
import IntentionalAny from '../../../../phet-core/js/types/IntentionalAny.js';
declare const GRID_CONFIGURABLE_OPTION_KEYS: string[];
type SelfOptions = {
    xAlign?: HorizontalLayoutAlign | null;
    yAlign?: VerticalLayoutAlign | null;
    stretch?: boolean;
    xStretch?: boolean | null;
    yStretch?: boolean | null;
    grow?: number | null;
    xGrow?: number | null;
    yGrow?: number | null;
};
export type GridConfigurableOptions = SelfOptions & MarginLayoutConfigurableOptions;
export type ExternalGridConfigurableOptions = WithoutNull<GridConfigurableOptions, Exclude<keyof GridConfigurableOptions, 'minContentWidth' | 'minContentHeight' | 'maxContentWidth' | 'maxContentHeight'>>;
declare const GridConfigurable: <SuperType extends Constructor>(k: SuperType) => {
    new (...args: IntentionalAny[]): {
        _xAlign: LayoutAlign | null;
        _yAlign: LayoutAlign | null;
        _xStretch: boolean | null;
        _yStretch: boolean | null;
        _xGrow: number | null;
        _yGrow: number | null;
        /**
         * (scenery-internal)
         */
        mutateConfigurable(options?: GridConfigurableOptions): void;
        /**
         * Resets values to the "base" state.
         *
         * This is the fallback state for a constraint where every value is defined and valid. If a cell does not have a
         * specific "overridden" value, or a constraint doesn't have an "overridden" value, then it will take the value
         * defined here.
         *
         * These should be the default values for constraints.
         *
         * (scenery-internal)
         */
        setConfigToBaseDefault(): void;
        /**
         * Resets values to the "don't override anything, only inherit from the constraint" state
         *
         * These should be the default values for cells (e.g. "take all the behavior from the constraint, nothing is
         * overridden").
         *
         * (scenery-internal)
         */
        setConfigToInherit(ignoreOptions?: GridConfigurableOptions): void;
        /**
         * (scenery-internal)
         */
        xAlign: "left" | "right" | "center" | "origin" | null;
        /**
         * (scenery-internal)
         */
        yAlign: "top" | "bottom" | "center" | "origin" | null;
        /**
         * (scenery-internal)
         */
        grow: number | null;
        /**
         * (scenery-internal)
         */
        xGrow: number | null;
        /**
         * (scenery-internal)
         */
        yGrow: number | null;
        /**
         * (scenery-internal)
         */
        stretch: boolean | null;
        /**
         * (scenery-internal)
         */
        xStretch: boolean | null;
        /**
         * (scenery-internal)
         */
        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;
    };
} & SuperType;
export default GridConfigurable;
export { GRID_CONFIGURABLE_OPTION_KEYS };
//# sourceMappingURL=GridConfigurable.d.ts.map