import '../../../globals.js';
/**
 * base type for an object that accumulates key presses, works in conjunction with the common-code keypad
 *
 * @author John Blanco
 * @author Aadish Gupta
 */
import Property from '../../../axon/js/Property.js';
import ReadOnlyProperty from '../../../axon/js/ReadOnlyProperty.js';
import { KeyIDValue } from './KeyID.js';
declare abstract class AbstractKeyAccumulator {
    protected readonly validators: ((keys: KeyIDValue[]) => boolean)[];
    abstract readonly stringProperty: ReadOnlyProperty<string>;
    abstract readonly valueProperty: ReadOnlyProperty<number | null>;
    readonly accumulatedKeysProperty: Property<KeyIDValue[]>;
    _clearOnNextKeyPress: boolean;
    constructor(validators: ((keys: KeyIDValue[]) => boolean)[]);
    get clearOnNextKeyPress(): boolean;
    set clearOnNextKeyPress(value: boolean);
    /**
     * Clears the accumulated keys.
     */
    clear(): void;
    /**
     * Sets/clears the flag that determines whether pressing a key (except for backspace) will clear the accumulated keys.
     */
    setClearOnNextKeyPress(clearOnNextKeyPress: boolean): void;
    /**
     * Gets the value of the flag determines whether pressing a key (except for backspace) will clear the accumulated keys.
     */
    getClearOnNextKeyPress(): boolean;
    /**
     * validates a proposed set of keys and (if valid) update the property that represents the accumulated keys
     * @param proposedKeys - the proposed set of keys, to be validated
     *
     * @returns boolean
     */
    protected validateKeys(proposedKeys: KeyIDValue[]): boolean;
    /**
     * update the property that represents the accumulated keys
     * @param proposedKeys - the proposed set of keys
     */
    protected updateKeys(proposedKeys: KeyIDValue[]): void;
    /**
     * Called by the key accumulator when this key is pressed.
     */
    abstract handleKeyPressed(keyIdentifier: KeyIDValue): void;
    /**
     * creates an empty array if clearOnNextKeyPress is true, the behavior differs if Backspace key is pressed
     */
    protected handleClearOnNextKeyPress(keyIdentifier: KeyIDValue): KeyIDValue[];
    dispose(): void;
}
export default AbstractKeyAccumulator;
//# sourceMappingURL=AbstractKeyAccumulator.d.ts.map