import '../../chipper/js/browser/initialize-globals.js';
import '../../assert/js/assert.js';
import '../../globals.js';
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 { Font, Node, NodeOptions, SceneryEvent, TColor } from '../../scenery/js/imports.js';
import { AccessibleNumberSpinnerOptions } from '../../sun/js/accessibility/AccessibleNumberSpinner.js';
import TSoundPlayer from '../../tambo/js/TSoundPlayer.js';
type Align = 'center' | 'left' | 'right';
type SelfOptions = {
    color?: TColor;
    pressedColor?: TColor;
    backgroundColor?: TColor;
    cornerRadius?: number;
    xMargin?: number;
    yMargin?: number;
    decimalPlaces?: number;
    font?: Font;
    incrementFunction?: (value: number) => number;
    decrementFunction?: (value: number) => number;
    timerDelay?: number;
    timerInterval?: number;
    noValueString?: string;
    align?: Align;
    touchAreaXDilation?: number;
    touchAreaYDilation?: number;
    mouseAreaXDilation?: number;
    mouseAreaYDilation?: number;
    backgroundStroke?: TColor;
    backgroundLineWidth?: number;
    backgroundDisabledOpacity?: number;
    arrowHeight?: number;
    arrowYSpacing?: number;
    arrowStroke?: TColor;
    arrowLineWidth?: number;
    arrowDisabledOpacity?: number;
    valueMaxWidth?: number | null;
    /**
     * Converts a value to a string to be displayed in a Text node. NOTE: If this function can give different strings
     * to the same value depending on external state, it is recommended to rebuild the NumberPicker when that state
     * changes (as it uses formatValue over the initial range to determine the bounds that labels can take).
     */
    formatValue?: (value: number) => string;
    onInput?: () => void;
    incrementEnabledFunction?: (value: number, range: Range) => boolean;
    decrementEnabledFunction?: (value: number, range: Range) => boolean;
    disabledOpacity?: number;
    valueChangedSoundPlayer?: TSoundPlayer;
    boundarySoundPlayer?: TSoundPlayer;
};
type ParentOptions = AccessibleNumberSpinnerOptions & NodeOptions;
export type NumberPickerOptions = SelfOptions & StrictOmit<ParentOptions, 'valueProperty' | 'enabledRangeProperty' | 'pdomTimerDelay' | 'pdomTimerInterval'>;
type CreateIconOptions = {
    highlightIncrement?: boolean;
    highlightDecrement?: false;
    range?: Range;
    numberPickerOptions?: NumberPickerOptions;
};
declare const NumberPicker_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 NumberPicker extends NumberPicker_base {
    private readonly incrementArrow;
    private readonly decrementArrow;
    private readonly incrementInputListener;
    private readonly decrementInputListener;
    private readonly disposeNumberPicker;
    /**
     * @param valueProperty
     * @param rangeProperty - If the range is anticipated to change, it's best to have the range Property contain the
     * (maximum) union of all potential changes, so that NumberPicker can iterate through all possible values and compute
     * the bounds of the labels.
     * @param [providedOptions]
     */
    constructor(valueProperty: Property<number>, rangeProperty: TReadOnlyProperty<Range>, providedOptions?: NumberPickerOptions);
    static createIcon(value: number, providedOptions?: CreateIconOptions): Node;
    dispose(): void;
    /**
     * Sets visibility of the arrows.
     */
    setArrowsVisible(visible: boolean): void;
}
export {};
//# sourceMappingURL=NumberPicker.d.ts.map