import '../../../assert/js/assert.js';
import '../../../globals.js';
import Property from '../../../axon/js/Property.js';
import { SceneryEvent } from '../../../scenery/js/imports.js';
import ButtonModel, { ButtonModelOptions } from './ButtonModel.js';
export type PushButtonListener = () => void;
type SelfOptions = {
    fireOnDown?: boolean;
    listener?: PushButtonListener | null;
    interruptListener?: ((event: SceneryEvent | null) => void) | null;
    fireOnHold?: boolean;
    fireOnHoldDelay?: number;
    fireOnHoldInterval?: number;
    phetioReadOnly?: boolean;
};
export type PushButtonModelOptions = SelfOptions & ButtonModelOptions;
export default class PushButtonModel extends ButtonModel {
    readonly isFiringProperty: Property<boolean>;
    private readonly firedEmitter;
    private timer?;
    private readonly disposePushButtonModel;
    private startEvent;
    constructor(providedOptions?: PushButtonModelOptions);
    dispose(): void;
    /**
     * Adds a listener. If already a listener, this is a no-op.
     * @param listener - function called when the button is pressed, no args
     */
    addListener(listener: PushButtonListener): void;
    /**
     * Removes a listener. If not a listener, this is a no-op.
     */
    removeListener(listener: PushButtonListener): void;
    /**
     * Fires all listeners.  Public for phet-io and a11y use.
     */
    fire(): void;
}
export {};
//# sourceMappingURL=PushButtonModel.d.ts.map