/// <reference types="react" />
import { ControlBarButtonProps } from './ControlBarButton';
import { IContextualMenuItemStyles, IContextualMenuStyles } from '@fluentui/react';
import { ControlBarButtonStyles } from './ControlBarButton';
import { OptionsDevice } from './DevicesButton';
/**
 * Strings of {@link MicrophoneButton} that can be overridden.
 *
 * @public
 */
export interface MicrophoneButtonStrings {
    /** Label when button is on. */
    onLabel: string;
    /** Label when button is off. */
    offLabel: string;
    /** * Tooltip content when the button is disabled. */
    tooltipDisabledContent?: string;
    /** Tooltip content when the button is on. */
    tooltipOnContent?: string;
    /** Tooltip content when the button is off. */
    tooltipOffContent?: string;
    /**
     * Title of microphone menu
     */
    microphoneMenuTitle?: string;
    /**
     * Title of speaker menu
     */
    speakerMenuTitle?: string;
    /**
     * Tooltip of microphone menu
     */
    microphoneMenuTooltip?: string;
    /**
     * Tooltip of speaker menu
     */
    speakerMenuTooltip?: string;
    /**
     * Description of microphone button split button role
     */
    microphoneButtonSplitRoleDescription?: string;
    /**
     * Microphone split button aria label when mic is enabled.
     */
    onSplitButtonAriaLabel?: string;
    /**
     * Microphone split button aria label when mic is disabled.
     */
    offSplitButtonAriaLabel?: string;
    /**
     * Microphone action turned on string for announcer
     */
    microphoneActionTurnedOnAnnouncement?: string;
    /**
     * Microphone action turned off string for announcer
     */
    microphoneActionTurnedOffAnnouncement?: string;
    /**
     * Primary action for the microphone when microphone is live.
     */
    onSplitButtonMicrophonePrimaryAction?: string;
    /**
     * Primary action for the microphone when the microphone is muted.
     */
    offSplitButtonMicrophonePrimaryAction?: string;
    /**
     * Title for primary action section of split button
     */
    microphonePrimaryActionSplitButtonTitle?: string;
    /**
     * Aria description for the microphone button
     */
    microphoneAriaDescription?: string;
    /**
     * Title for deep noise suppression button
     */
    deepNoiseSuppressionTitle?: string;
    /**
     * Noise Suppression turned on string for announcer
     */
    deepNoiseSuppressionOnAnnouncement?: string;
    /**
     * Noise Suppression turned off string for announcer
     */
    deepNoiseSuppressionOffAnnouncement?: string;
}
/**
 * Styles for {@link MicrophoneButton}
 *
 * @public
 */
export interface MicrophoneButtonStyles extends ControlBarButtonStyles {
    /**
     * Styles for the {@link MicrophoneButton} menu.
     */
    menuStyles?: Partial<MicrophoneButtonContextualMenuStyles>;
}
/**
 * Styles for the {@link MicrophoneButton} menu.
 *
 * @public
 */
export interface MicrophoneButtonContextualMenuStyles extends IContextualMenuStyles {
    /**
     * Styles for the items inside the {@link MicrophoneButton} button menu.
     */
    menuItemStyles?: IContextualMenuItemStyles;
}
/**
 * Props for {@link MicrophoneButton}.
 *
 * @public
 */
export interface MicrophoneButtonProps extends ControlBarButtonProps {
    /**
     * Utility property for using this component with `communication react eventHandlers`.
     * Maps directly to the `onClick` property.
     */
    onToggleMicrophone?: () => Promise<void>;
    /**
     * Available microphones for selection
     */
    microphones?: OptionsDevice[];
    /**
     * Available speakers for selection
     */
    speakers?: OptionsDevice[];
    /**
     * Microphone that is shown as currently selected
     */
    selectedMicrophone?: OptionsDevice;
    /**
     * Speaker that is shown as currently selected
     */
    selectedSpeaker?: OptionsDevice;
    /**
     * Callback when a microphone is selected
     */
    onSelectMicrophone?: (device: OptionsDevice) => Promise<void>;
    /**
     * Speaker when a speaker is selected
     */
    onSelectSpeaker?: (device: OptionsDevice) => Promise<void>;
    /**
     * Whether to use a {@link SplitButton} with a {@link IContextualMenu} for device selection.
     *
     * default: false
     */
    enableDeviceSelectionMenu?: boolean;
    /**
     * Optional strings to override in component
     */
    strings?: Partial<MicrophoneButtonStrings>;
    /**
     * Styles for {@link MicrophoneButton} and the device selection flyout.
     */
    styles?: Partial<MicrophoneButtonStyles>;
    /**
     * Whether the deep noise suppression is on or off
     */
    isDeepNoiseSuppressionOn?: boolean;
    /**
     * Callback when noise suppression is clicked
     */
    onClickNoiseSuppression?: () => void;
    /**
     * Show/Hide the deep noise suppression button
     */
    showNoiseSuppressionButton?: boolean;
}
/**
 * A button to turn microphone on / off.
 *
 * Can be used with {@link ControlBar}.
 *
 * @public
 */
export declare const MicrophoneButton: (props: MicrophoneButtonProps) => JSX.Element;
//# sourceMappingURL=MicrophoneButton.d.ts.map