import '../../chipper/js/initialize-globals.js';
import '../../assert/js/assert.js';
import '../../tandem/js/PhetioIDUtils.js';
import '../../globals.js';
/**
 * Spinner for numbers.
 *
 * @author Chris Malley (PixelZoom, Inc.)
 * @author Andrea Lin (PhET Interactive Simulations)
 */
import Property from '../../axon/js/Property.js';
import TReadOnlyProperty from '../../axon/js/TReadOnlyProperty.js';
import Range from '../../dot/js/Range.js';
import StrictOmit from '../../phet-core/js/types/StrictOmit.js';
import { NumberDisplayOptions } from '../../scenery-phet/js/NumberDisplay.js';
import { Node, NodeOptions, SceneryEvent, TColor } from '../../scenery/js/imports.js';
import TSoundPlayer from '../../tambo/js/TSoundPlayer.js';
import { AccessibleNumberSpinnerOptions } from './accessibility/AccessibleNumberSpinner.js';
type NumberSpinnerArrowsPosition = 'leftRight' | // arrow buttons on left and right of value
'topBottom' | // arrow buttons on top and bottom of value
'bothRight' | // both arrow buttons to the right of the value
'bothBottom';
type SelfOptions = {
    arrowsPosition?: NumberSpinnerArrowsPosition;
    arrowsScale?: number | null;
    arrowButtonFill?: TColor;
    arrowButtonStroke?: TColor;
    arrowButtonLineWidth?: number;
    arrowsSoundPlayer?: TSoundPlayer;
    incrementFunction?: ((value: number) => number);
    decrementFunction?: ((value: number) => number);
    deltaValue?: number;
    xSpacing?: number;
    ySpacing?: number;
    numberDisplayOptions?: NumberDisplayOptions;
    touchAreaXDilation?: number;
    touchAreaYDilation?: number;
    mouseAreaXDilation?: number;
    mouseAreaYDilation?: number;
};
type ParentOptions = AccessibleNumberSpinnerOptions & NodeOptions;
export type NumberSpinnerOptions = SelfOptions & StrictOmit<ParentOptions, 'children' | 'valueProperty' | 'enabledRangeProperty' | 'keyboardStep' | 'shiftKeyboardStep' | 'pageKeyboardStep' | 'onInput'>;
declare const NumberSpinner_base: typeof Node & import("../../phet-core/js/types/Constructor.js").default<{
    readonly pdomIncrementDownEmitter: import("../../axon.js").TEmitter<[boolean]>;
    readonly pdomDecrementDownEmitter: import("../../axon.js").TEmitter<[boolean]>;
    pdomTimerDelay: number;
    pdomTimerInterval: number;
} & {
    startInput: import("../../scenery/js/imports.js").SceneryListenerFunction;
    onInput: (event: SceneryEvent, oldValue: number) => void;
    endInput: (event: SceneryEvent | null) => void;
    constrainValue: ((value: number) => number);
    panTargetNode: Node | null;
    roundToStepSize: boolean;
    pdomMapPDOMValue: ((value: number) => number);
    pdomMapValue: ((newValue: number, previousValue: number) => number);
    pdomRepeatEqualValueText: boolean;
    pdomCreateAriaValueText: {
        (pdomMappedValue: number, newValue: number, valueOnStart: number | null): import("../../scenery/js/imports.js").PDOMValueType | null;
        reset?: () => void;
    };
    pdomCreateContextResponseAlert: {
        (pdomMappedValue: number, newValue: number, valueOnStart: number | null): import("../../scenery/js/imports.js").PDOMValueType | null;
        reset?: () => void;
    } | null;
    contextResponsePerValueChangeDelay: number;
    contextResponseMaxDelay: number;
    voicingOnEndResponseOptions: import("./accessibility/AccessibleValueHandler.js").VoicingOnEndResponseOptions;
    setPDOMDependencies(dependencies: TReadOnlyProperty<import("../../phet-core/js/types/IntentionalAny.js").default>[]): void;
    getPDOMDependencies(): TReadOnlyProperty<import("../../phet-core/js/types/IntentionalAny.js").default>[];
    pdomDependencies: TReadOnlyProperty<import("../../phet-core/js/types/IntentionalAny.js").default>[];
    alertContextResponse(): void;
    reset(): void;
    getAccessibleValueHandlerInputListener(): import("../../scenery/js/imports.js").TInputListener;
    handleKeyDown(event: SceneryEvent<KeyboardEvent>): void;
    handleKeyUp(event: SceneryEvent<KeyboardEvent>): void;
    handleChange(event: SceneryEvent): void;
    handleInput(event: SceneryEvent): void;
    handleBlur(event: SceneryEvent<FocusEvent>): void;
    setKeyboardStep(keyboardStep: number): void;
    keyboardStep: number;
    getKeyboardStep(): number;
    setShiftKeyboardStep(shiftKeyboardStep: number): void;
    shiftKeyboardStep: number;
    getShiftKeyboardStep(): number;
    getShiftKeyDown(): boolean;
    readonly shiftKeyDown: boolean;
    setPageKeyboardStep(pageKeyboardStep: number): void;
    pageKeyboardStep: number;
    getPageKeyboardStep(): number;
    setAriaOrientation(orientation: import("../../phet-core.js").Orientation): void;
    ariaOrientation: import("../../phet-core.js").Orientation;
    getAriaOrientation(): import("../../phet-core.js").Orientation;
    voicingOnEndResponse(valueOnStart: number, providedOptions?: import("./accessibility/AccessibleValueHandler.js").VoicingOnEndResponseOptions): void;
} & import("../../scenery/js/imports.js").TVoicing<Node>>;
export default class NumberSpinner extends NumberSpinner_base {
    private readonly numberDisplay;
    private readonly disposeNumberSpinner;
    /**
     * @param numberProperty - value, must be an integer
     * @param rangeProperty - dynamic range of values, min and max must be integers
     * @param [providedOptions]
     */
    constructor(numberProperty: Property<number>, rangeProperty: TReadOnlyProperty<Range>, providedOptions?: NumberSpinnerOptions);
    dispose(): void;
}
export {};
//# sourceMappingURL=NumberSpinner.d.ts.map