import '../../../../assert/js/assert.js';
import '../../../../globals.js';
/**
 * This combines the margin-cell related options common to FlowConfigurable and GridConfigurable
 * Parent mixin for flow/grid configurables (mixins for storing options that can affect each cell).
 * `null` for values usually means "inherit from the default".
 *
 * 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 TEmitter from '../../../../axon/js/TEmitter.js';
import Constructor from '../../../../phet-core/js/types/Constructor.js';
import WithoutNull from '../../../../phet-core/js/types/WithoutNull.js';
declare const MARGIN_LAYOUT_CONFIGURABLE_OPTION_KEYS: string[];
export type MarginLayoutConfigurableOptions = {
    margin?: number | null;
    xMargin?: number | null;
    yMargin?: number | 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;
};
export type ExternalMarginLayoutConfigurableOptions = WithoutNull<MarginLayoutConfigurableOptions, Exclude<keyof MarginLayoutConfigurableOptions, 'minContentWidth' | 'minContentHeight' | 'maxContentWidth' | 'maxContentHeight'>>;
export type TMarginLayoutConfigurable = {
    _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: TEmitter;
    mutateConfigurable(options?: MarginLayoutConfigurableOptions): void;
    setConfigToBaseDefault(): void;
    setConfigToInherit(ignoreOptions?: MarginLayoutConfigurableOptions): void;
    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;
};
declare const MarginLayoutConfigurable: <SuperType extends Constructor>(k: SuperType) => SuperType & Constructor<TMarginLayoutConfigurable>;
export default MarginLayoutConfigurable;
export { MARGIN_LAYOUT_CONFIGURABLE_OPTION_KEYS };
//# sourceMappingURL=MarginLayoutConfigurable.d.ts.map