import '../../../assert/js/assert.js';
import '../../../globals.js';
import TProperty from '../../../axon/js/TProperty.js';
import { EmptySelfOptions } from '../../../phet-core/js/optionize.js';
import ButtonModel, { ButtonModelOptions } from './ButtonModel.js';
type SelfOptions = EmptySelfOptions;
export type StickyToggleButtonModelOptions = SelfOptions & ButtonModelOptions;
export default class StickyToggleButtonModel<T> extends ButtonModel {
    readonly valueProperty: TProperty<T>;
    readonly valueUp: T;
    readonly valueDown: T;
    private readonly toggledEmitter;
    private readonly pressedWhileDownProperty;
    private readonly disposeToggleButtonModel;
    /**
     * @param valueUp - value when the toggle is in the 'up' position
     * @param valueDown - value when the toggle is in the 'down' position
     * @param valueProperty - axon Property that can be either valueUp or valueDown.
     *   Would have preferred to call this `property` but it would clash with the Property function name.
     * @param providedOptions
     */
    constructor(valueUp: T, valueDown: T, valueProperty: TProperty<T>, providedOptions?: StickyToggleButtonModelOptions);
    dispose(): void;
    private toggle;
}
export {};
//# sourceMappingURL=StickyToggleButtonModel.d.ts.map