/// <reference types="react" />
import { IMessageBarProps } from '@fluentui/react';
/**
 * Props for {@link ErrorBar}.
 *
 * In addition to the following, {@link ErrorBar} forwards all
 * {@link @fluentui/react#IMessageBarProps} to the underlying {@link @fluentui/react#MessageBar}.
 *
 * @public
 */
export interface ErrorBarProps extends IMessageBarProps {
    /**
     * Strings shown on the UI on errors.
     */
    strings?: ErrorBarStrings;
    /**
     * Currently active errors.
     */
    activeErrorMessages: ActiveErrorMessage[];
    /**
     * If set, errors with {@link ActiveErrorMessage.timestamp} older than the time this component is mounted
     * are not shown.
     *
     * This is useful when using the {@link ErrorBar} with a stateful client that handles more than one call
     * or chat thread. Set this prop to ignore errors from previous call or chat.
     *
     * @defaultValue false
     */
    ignorePremountErrors?: boolean;
    /**
     * Callback called when the dismiss button is triggered.
     * Use this to control errors shown when they dismissed by the user.
     */
    onDismissError?: (dismissedError: ActiveErrorMessage) => void;
}
/**
 * All strings that may be shown on the UI in the {@link ErrorBar}.
 *
 * @public
 */
export interface ErrorBarStrings {
    /**
     * Unable to reach Chat service.
     *
     * This can mean:
     *   - Incorrect Azure Communication Services endpoint was provided.
     *   - User's network connection is down.
     */
    unableToReachChatService: string;
    /**
     * User does not have access to the Chat service.
     * This usually means that either the Azure Communication Services endpiont or the token provided are incorrect.
     */
    accessDenied: string;
    /**
     * User is no longer on the thread.
     *
     * See also: {@link ErrorBarStrings.sendMessageNotInChatThread} for a more specific error.
     */
    userNotInChatThread: string;
    /**
     * Sending message failed because user is no longer on the thread.
     */
    sendMessageNotInChatThread: string;
    /**
     * A generic message when sending message fails.
     * Prefer more specific error strings when possible.
     */
    sendMessageGeneric: string;
    /**
     * A generic message when starting video fails.
     */
    startVideoGeneric: string;
    /**
     * A generic message when starting video fails.
     */
    stopVideoGeneric: string;
    /**
     * A generic message when muting microphone fails.
     */
    muteGeneric: string;
    /**
     * A generic message when unmuting microphone fails.
     */
    unmuteGeneric: string;
    /**
     * A generic message when starting screenshare fails.
     */
    startScreenShareGeneric: string;
    /**
     * A generic message when stopping screenshare fails.
     */
    stopScreenShareGeneric: string;
    /**
     * Message shown when poor network quality is detected during a call.
     */
    callNetworkQualityLow: string;
    /**
     * Message shown when poor network quality is detected during a call.
     */
    teamsMeetingCallNetworkQualityLow: string;
    /**
     * Message shown on failure to detect audio output devices.
     */
    callNoSpeakerFound: string;
    /**
     * Message shown on failure to detect audio input devices.
     */
    callNoMicrophoneFound: string;
    /**
     * Message shown when microphone can be enumerated but access is blocked by the system.
     */
    callMicrophoneAccessDenied: string;
    /**
     * Message shown when microphone can be enumerated but access is blocked by the system, for safari browsers
     */
    callMicrophoneAccessDeniedSafari: string;
    /**
     * Message shown when microphone is muted by the system (not by local or remote participants)
     */
    callMicrophoneMutedBySystem: string;
    /**
     * Message shown when microphone is unmuted by the system (not by local or remote participants).
     * This typically occurs if the system recovers from an unexpected mute.
     */
    callMicrophoneUnmutedBySystem: string;
    /**
     * Mac OS specific message shown when microphone can be enumerated but access is
     * blocked by the system.
     */
    callMacOsMicrophoneAccessDenied: string;
    /**
     * Message shown when poor network causes local video stream to be frozen.
     */
    callLocalVideoFreeze: string;
    /**
     * Message shown when camera can be enumerated but access is blocked by the system.
     */
    callCameraAccessDenied: string;
    /**
     * Message shown when camera can be enumerated but access is blocked by the system, for safari browsers
     */
    callCameraAccessDeniedSafari: string;
    /**
     * Message shown when local video fails to start because camera is already in use by
     * another applciation.
     */
    callCameraAlreadyInUse: string;
    /**
     * Message shown when local video is stopped by the system (not by local or remote participants)
     */
    callVideoStoppedBySystem: string;
    /**
     * Message shown when local video was recovered by the system (not by the local participant)
     */
    callVideoRecoveredBySystem: string;
    /**
     * Mac OS specific message shown when system denies access to camera.
     */
    callMacOsCameraAccessDenied: string;
    /**
     * Mac OS specific message shown when system denies sharing local screen on a call.
     */
    callMacOsScreenShareAccessDenied: string;
    /**
     * Dimiss errorbar button aria label read by screen reader accessibility tools
     */
    dismissButtonAriaLabel?: string;
    /**
     * An error message when joining a call fails.
     */
    failedToJoinCallGeneric?: string;
    /**
     * An error message when joining a call fails specifically due to an invalid meeting link.
     */
    failedToJoinCallInvalidMeetingLink?: string;
    /**
     * Error bar string letting you know remote participants see a frozen stream for you.
     */
    cameraFrozenForRemoteParticipants?: string;
    /**
     * Unable to start effect
     */
    unableToStartVideoEffect?: string;
    /**
     * An error message when starting spotlight while max participants are spotlighted
     */
    startSpotlightWhileMaxParticipantsAreSpotlighted: string;
    /**
     * An error message when local user is muted by a remote participant
     */
    mutedByRemoteParticipant: string;
}
/**
 * All errors that can be shown in the {@link ErrorBar}.
 *
 * @public
 */
export type ErrorType = keyof ErrorBarStrings;
/**
 * Active error messages to be shown via {@link ErrorBar}.
 *
 * @public
 */
export interface ActiveErrorMessage {
    /**
     * Type of error that is active.
     */
    type: ErrorType;
    /**
     * The latest timestamp when this error was observed.
     *
     * When available, this is used to track errors that have already been seen and dismissed
     * by the user.
     */
    timestamp?: Date;
}
/**
 * A component to show error messages on the UI.
 * All strings that can be shown are accepted as the {@link ErrorBarProps.strings} so that they can be localized.
 * Active errors are selected by {@link ErrorBarProps.activeErrorMessages}.
 *
 * This component internally tracks dismissed by the user.
 *   * Errors that have an associated timestamp: The error is shown on the UI again if it occurs after being dismissed.
 *   * Errors that do not have a timestamp: The error is dismissed until it disappears from the props.
 *         If the error recurs, it is shown in the UI.
 *
 * Uses {@link @fluentui/react#MessageBar} UI element.
 *
 * @public
 */
export declare const ErrorBar: (props: ErrorBarProps) => JSX.Element;
//# sourceMappingURL=ErrorBar.d.ts.map