import '../../../assert/js/assert.js';
import '../../../globals.js';
/**
 * A flexible keypad that looks somewhat like a calculator or keyboard keypad.
 *
 * @author Aadish Gupta
 * @author John Blanco
 */
import ReadOnlyProperty from '../../../axon/js/ReadOnlyProperty.js';
import { Font, Node, NodeOptions, TPaint } from '../../../scenery/js/imports.js';
import AbstractKeyAccumulator from './AbstractKeyAccumulator.js';
import Key from './Key.js';
import { KeyIDValue } from './KeyID.js';
import { NumberAccumulatorOptions } from './NumberAccumulator.js';
export type KeypadLayout = (Key | null)[][];
type SelfOptions = {
    buttonWidth?: number;
    buttonHeight?: number;
    xSpacing?: number;
    ySpacing?: number;
    touchAreaXDilation?: number;
    touchAreaYDilation?: number;
    buttonColor?: TPaint;
    buttonFont?: Font;
    accumulator?: AbstractKeyAccumulator | null;
    accumulatorOptions?: NumberAccumulatorOptions | null;
    useGlobalKeyboardListener?: boolean;
};
export type KeypadOptions = SelfOptions & NodeOptions;
declare class Keypad extends Node {
    private readonly keyAccumulator;
    readonly accumulatedKeysProperty: ReadOnlyProperty<KeyIDValue[]>;
    readonly stringProperty: ReadOnlyProperty<string>;
    readonly valueProperty: ReadOnlyProperty<number | null>;
    private readonly buttonNodes;
    /**
     * @param layout - an array that specifies the keys and the layout, see static instance below for example usage
     * @param [providedOptions]
     */
    constructor(layout: (Key | null)[][], providedOptions?: KeypadOptions);
    /**
     * Calls the clear function for the given accumulator
     */
    clear(): void;
    /**
     * Determines whether pressing a key (except for backspace) will clear the existing value.
     */
    setClearOnNextKeyPress(clearOnNextKeyPress: boolean): void;
    /**
     * Will pressing a key (except for backspace) clear the existing value?
     */
    getClearOnNextKeyPress(): boolean;
    dispose(): void;
    static readonly PositiveIntegerLayout: KeypadLayout;
    static readonly PositiveDecimalLayout: KeypadLayout;
    static readonly PositiveAndNegativeIntegerLayout: KeypadLayout;
    static readonly PositiveFloatingPointLayout: KeypadLayout;
    static readonly PositiveAndNegativeFloatingPointLayout: KeypadLayout;
    static readonly WeirdLayout: KeypadLayout;
    static readonly KEY_0: Key;
    static readonly KEY_1: Key;
    static readonly KEY_2: Key;
    static readonly KEY_3: Key;
    static readonly KEY_4: Key;
    static readonly KEY_5: Key;
    static readonly KEY_6: Key;
    static readonly KEY_7: Key;
    static readonly KEY_8: Key;
    static readonly KEY_9: Key;
    static readonly KEY_WIDE_ZERO: Key;
    static readonly KEY_DECIMAL: Key;
    static readonly KEY_BACKSPACE: Key;
    static readonly KEY_PLUS_MINUS: Key;
}
export default Keypad;
//# sourceMappingURL=Keypad.d.ts.map