/**
 * Base class for button models, which describe the behavior of buttons when users interact with them.  Property values
 * are set by an associated listener, see PressListener for details.
 *
 * @author John Blanco (PhET Interactive Simulations)
 */
import '../../../globals.js';
import EnabledComponent, { type EnabledComponentOptions } from '../../../axon/js/EnabledComponent.js';
import type Property from '../../../axon/js/Property.js';
import type TEmitter from '../../../axon/js/TEmitter.js';
import PressListener, { type PressListenerOptions } from '../../../scenery/js/listeners/PressListener.js';
type SelfOptions = {
    startCallback?: () => void;
    endCallback?: (over: boolean) => void;
    phetioState?: boolean;
    phetioReadOnly?: boolean;
    phetioFeatured?: boolean;
};
export type ButtonModelOptions = SelfOptions & EnabledComponentOptions;
export default class ButtonModel extends EnabledComponent {
    readonly overProperty: Property<boolean>;
    readonly downProperty: Property<boolean>;
    readonly focusedProperty: Property<boolean>;
    readonly looksPressedProperty: Property<boolean>;
    readonly isOverOrFocusedProperty: Property<boolean>;
    readonly pdomClickingProperty: Property<boolean>;
    readonly produceSoundEmitter: TEmitter;
    interrupted: boolean;
    private listeners;
    private looksPressedMultilink;
    private overOrFocusedMultilink;
    private readonly disposeButtonModel;
    constructor(providedOptions?: ButtonModelOptions);
    dispose(): void;
    /**
     * Creates a PressListener that will handle changes to ButtonModel when the associated button Node is pressed.
     * The client is responsible for adding this PressListener to the associated button Node.
     */
    createPressListener(options?: PressListenerOptions): PressListener;
}
export {};
//# sourceMappingURL=ButtonModel.d.ts.map