import '../../assert/js/assert.js';
import '../../globals.js';
import Property from '../../axon/js/Property.js';
import TEmitter from '../../axon/js/TEmitter.js';
import Dimension2 from '../../dot/js/Dimension2.js';
import { Node, NodeOptions, TPaint, TrimParallelDOMOptions, VoicingOptions } from '../../scenery/js/imports.js';
import TSoundPlayer from '../../tambo/js/TSoundPlayer.js';
import { TAlertable } from '../../utterance-queue/js/Utterance.js';
type SelfOptions = {
    size?: Dimension2;
    toggleWhileDragging?: null | boolean;
    dragThreshold?: number;
    toggleThreshold?: number;
    thumbFill?: TPaint;
    thumbStroke?: TPaint;
    thumbTouchAreaXDilation?: number;
    thumbTouchAreaYDilation?: number;
    thumbMouseAreaXDilation?: number;
    thumbMouseAreaYDilation?: number;
    trackFillLeft?: TPaint;
    trackFillRight?: TPaint;
    trackStroke?: TPaint;
    switchToLeftSoundPlayer?: TSoundPlayer;
    switchToRightSoundPlayer?: TSoundPlayer;
    leftValueContextResponse?: TAlertable;
    rightValueContextResponse?: TAlertable;
    accessibleSwitch?: boolean;
};
type ParentOptions = VoicingOptions & NodeOptions;
export type ToggleSwitchOptions = SelfOptions & TrimParallelDOMOptions<ParentOptions>;
declare const ToggleSwitch_base: typeof Node & import("../../phet-core/js/types/Constructor.js").default<import("../../scenery/js/imports.js").TVoicing<Node>>;
export default class ToggleSwitch<T> extends ToggleSwitch_base {
    private readonly disposeToggleSwitch;
    readonly switchToLeftSoundPlayer: TSoundPlayer;
    readonly switchToRightSoundPlayer: TSoundPlayer;
    readonly onInputEmitter: TEmitter;
    /**
     * @param property
     * @param leftValue - value when the switch is in the left position
     * @param rightValue - value when the switch is in the right position
     * @param providedOptions
     */
    constructor(property: Property<T>, leftValue: T, rightValue: T, providedOptions?: ToggleSwitchOptions);
    dispose(): void;
}
export {};
//# sourceMappingURL=ToggleSwitch.d.ts.map