import '../../chipper/js/initialize-globals.js';
import '../../assert/js/assert.js';
import '../../tandem/js/PhetioIDUtils.js';
import '../../globals.js';
import Property from '../../axon/js/Property.js';
import TEmitter from '../../axon/js/TEmitter.js';
import { HBox, HBoxOptions, Node, TrimParallelDOMOptions } from '../../scenery/js/imports.js';
import { ToggleSwitchOptions } from './ToggleSwitch.js';
type SelfOptions = {
    toggleSwitchOptions?: ToggleSwitchOptions;
    setLabelEnabled?: (labelNode: Node, enabled: boolean) => void;
    centerOnSwitch?: boolean;
};
export type ABSwitchOptions = SelfOptions & TrimParallelDOMOptions<HBoxOptions>;
export default class ABSwitch<T> extends HBox {
    private readonly property;
    private readonly valueA;
    private readonly valueB;
    private readonly labelA;
    private readonly labelB;
    private readonly toggleSwitch;
    private readonly setLabelEnabled;
    private readonly disposeABSwitch;
    readonly onInputEmitter: TEmitter;
    /**
     * @param property - value of the current choice
     * @param valueA - value for choice 'A'
     * @param labelA - label for choice 'A'
     * @param valueB - value for choice 'B'
     * @param labelB - label for choice 'B'
     * @param providedOptions
     */
    constructor(property: Property<T>, valueA: T, labelA: Node, valueB: T, labelB: Node, providedOptions?: ABSwitchOptions);
    dispose(): void;
    /**
     * Provide a custom look for when this switch is disabled. We are overriding the default implementation so that
     * the unselected label does not appear to be doubly disabled when the ABSwitch is disabled.
     * See https://github.com/phetsims/sun/issues/853
     */
    protected onEnabledPropertyChange(enabled: boolean): void;
    /**
     * Updates the enabled state of the labels based on the current value of the associated Property.
     * The selected label will appear to be enabled, while the unselected label will appear to be disabled.
     * If the ABSwitch itself is disabled, both labels will appear to be disabled.
     */
    private updateLabelsEnabled;
}
export {};
//# sourceMappingURL=ABSwitch.d.ts.map