/// <reference types="react" />
import { NotificationStrings } from './Notification';
/**
 * Props for {@link NotificationStack}.
 * @public
 */
export interface NotificationStackProps {
    /**
     * Strings shown on the UI on errors.
     */
    strings?: NotificationStackStrings;
    /**
     * Currently active notifications.
     */
    activeNotifications: ActiveNotification[];
    /**
     * Max notifications to show at a time.
     * @defaultValue 2
     */
    maxNotificationsToShow?: number;
    /**
     * Callback called when the dismiss button is triggered.
     * Use this to control notifications shown when they dismissed by the user.
     * Note this onDismiss function will affect all notifications in the same stack
     */
    onDismissNotification?: (dismissedNotification: ActiveNotification) => void;
    /**
     * If set, notifications with {@link ActiveNotification.timestamp} older than the time this component is mounted
     * are not shown.
     *
     * This is useful when using the {@link NotificationStack} with a stateful client that handles more than one call
     * or chat thread. Set this prop to ignore notifications from previous call or chat.
     *
     * @defaultValue false
     */
    ignorePremountNotifications?: boolean;
}
/**
 * All strings that may be shown on the UI in the {@link NotificationStack}.
 *
 * @public
 */
export interface NotificationStackStrings {
    /**
     * A generic message when starting video fails.
     */
    startVideoGeneric?: NotificationStrings;
    /**
     * A generic message when starting video fails.
     */
    stopVideoGeneric?: NotificationStrings;
    /**
     * A generic message when muting microphone fails.
     */
    muteGeneric?: NotificationStrings;
    /**
     * A generic message when unmuting microphone fails.
     */
    unmuteGeneric?: NotificationStrings;
    /**
     * A generic message when starting screenshare fails.
     */
    startScreenShareGeneric?: NotificationStrings;
    /**
     * A generic message when stopping screenshare fails.
     */
    stopScreenShareGeneric?: NotificationStrings;
    /**
     * Message shown when poor network quality is detected during a call.
     */
    callNetworkQualityLow?: NotificationStrings;
    /**
     * Message shown when poor network quality is detected during a teams meetings.
     * Contains actions to open phone info modal.
     */
    teamsMeetingCallNetworkQualityLow?: NotificationStrings;
    /**
     * Message shown on failure to detect audio output devices.
     */
    callNoSpeakerFound?: NotificationStrings;
    /**
     * Message shown on failure to detect audio input devices.
     */
    callNoMicrophoneFound?: NotificationStrings;
    /**
     * Message shown when microphone can be enumerated but access is blocked by the system.
     */
    callMicrophoneAccessDenied?: NotificationStrings;
    /**
     * Message shown when microphone can be enumerated but access is blocked by the system, for safari browsers
     */
    callMicrophoneAccessDeniedSafari?: NotificationStrings;
    /**
     * Message shown when microphone is muted by the system (not by local or remote participants)
     */
    callMicrophoneMutedBySystem?: NotificationStrings;
    /**
     * 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?: NotificationStrings;
    /**
     * Mac OS specific message shown when microphone can be enumerated but access is
     * blocked by the system.
     */
    callMacOsMicrophoneAccessDenied?: NotificationStrings;
    /**
     * Message shown when poor network causes local video stream to be frozen.
     */
    callLocalVideoFreeze?: NotificationStrings;
    /**
     * Message shown when camera can be enumerated but access is blocked by the system.
     */
    callCameraAccessDenied?: NotificationStrings;
    /**
     * Message shown when camera can be enumerated but access is blocked by the system, for safari browsers
     */
    callCameraAccessDeniedSafari?: NotificationStrings;
    /**
     * Message shown when local video fails to start because camera is already in use by
     * another applciation.
     */
    callCameraAlreadyInUse?: NotificationStrings;
    /**
     * Message shown when local video is stopped by the system (not by local or remote participants)
     */
    callVideoStoppedBySystem?: NotificationStrings;
    /**
     * Message shown when local video was recovered by the system (not by the local participant)
     */
    callVideoRecoveredBySystem?: NotificationStrings;
    /**
     * Mac OS specific message shown when system denies access to camera.
     */
    callMacOsCameraAccessDenied?: NotificationStrings;
    /**
     * Mac OS specific message shown when system denies sharing local screen on a call.
     */
    callMacOsScreenShareAccessDenied?: NotificationStrings;
    /**
     * Dimiss Notifications button aria label read by screen reader accessibility tools
     */
    dismissButtonAriaLabel?: NotificationStrings;
    /**
     * An error message when joining a call fails.
     */
    failedToJoinCallGeneric?: NotificationStrings;
    /**
     * An error message when joining a call fails specifically due to an invalid meeting link.
     */
    failedToJoinCallInvalidMeetingLink?: NotificationStrings;
    /**
     * Error string letting you know remote participants see a frozen stream for you.
     */
    cameraFrozenForRemoteParticipants?: NotificationStrings;
    /**
     * Unable to start effect
     */
    unableToStartVideoEffect?: NotificationStrings;
    /**
     * An error message when starting spotlight while max participants are spotlighted
     */
    startSpotlightWhileMaxParticipantsAreSpotlighted?: NotificationStrings;
    /**
     * Muted by a remote participant message
     */
    mutedByRemoteParticipant?: NotificationStrings;
    /**
     * Speaking while muted message
     */
    speakingWhileMuted?: NotificationStrings;
    /**
     * Recording started message
     */
    recordingStarted?: NotificationStrings;
    /**
     * Transcription started message
     */
    transcriptionStarted?: NotificationStrings;
    /**
     * Recording stopped message
     */
    recordingStopped?: NotificationStrings;
    /**
     * Transcription stopped message
     */
    transcriptionStopped?: NotificationStrings;
    /**
     * Recording and transcription both started message
     */
    recordingAndTranscriptionStarted?: NotificationStrings;
    /**
     * Recording and transcription both stopped message
     */
    recordingAndTranscriptionStopped?: NotificationStrings;
    /**
     * Recording stopped but transcription still going on message
     */
    recordingStoppedStillTranscribing?: NotificationStrings;
    /**
     * Transcription stopped but recording still going on message
     */
    transcriptionStoppedStillRecording?: NotificationStrings;
    /**
     * Message shown in notification when the user will be automatically to their assigned breakout room that is opened
     */
    assignedBreakoutRoomOpened?: NotificationStrings;
    /**
     * Message shown in notification when the user is prompted to join their assigned breakout room that is opened
     */
    assignedBreakoutRoomOpenedPromptJoin?: NotificationStrings;
    /**
     * Message shown in notification when the user's assigned breakout room is changed
     */
    assignedBreakoutRoomChanged?: NotificationStrings;
    /**
     * Message shown in notification when the user's assigned breakout room is closed
     */
    assignedBreakoutRoomClosed?: NotificationStrings;
    /**
     * Message shown in notification when breakout room is joined
     */
    breakoutRoomJoined?: NotificationStrings;
    /**
     * Message shown in notification when breakout room is closing soon
     */
    breakoutRoomClosingSoon?: NotificationStrings;
    /**
     * Message shown in notification when capability turnVideoOn is present
     */
    capabilityTurnVideoOnPresent?: NotificationStrings;
    /**
     * Message shown in notification when capability turnVideoOn is absent
     */
    capabilityTurnVideoOnAbsent?: NotificationStrings;
    /**
     * Message shown in notification when capability unMuteMic is present
     */
    capabilityUnmuteMicPresent?: NotificationStrings;
    /**
     * Message shown in notification when capability unMuteMic is absent
     */
    capabilityUnmuteMicAbsent?: NotificationStrings;
}
/**
 * All notifications that can be shown in the {@link NotificationStack}.
 *
 * @public
 */
export type NotificationType = keyof NotificationStackStrings;
/**
 * Active notifications to be shown via {@link NotificationStack}.
 *
 * @public
 */
export interface ActiveNotification {
    /**
     * Type of error that is active.
     */
    type: NotificationType;
    /**
     * Callback called when the primary button inside notification bar is clicked.
     */
    onClickPrimaryButton?: () => void;
    /**
     * Callback called when the primary button inside notification bar is clicked.
     */
    onClickSecondaryButton?: () => void;
    /**
     * Callback called when the notification is dismissed.
     */
    onDismiss?: () => void;
    /**
     * If set, notification will automatically dismiss after 5 seconds
     */
    autoDismiss?: boolean;
    /**
     * The latest timestamp when this notification was observed.
     *
     * When available, this is used to track notifications that have already been seen and dismissed
     * by the user.
     */
    timestamp?: Date;
    /**
     * Aria-live property for the notification.
     * @defaultValue polite
     */
    ariaLive?: 'assertive' | 'off' | 'polite';
}
/**
 * A component to show notifications on the UI.
 * All strings that can be shown are accepted as the {@link NotificationStackProps.strings} so that they can be localized.
 * Active notifications are selected by {@link NotificationStackProps.activeNotifications}.
 *
 * This component internally tracks dismissed by the user.
 *   * Notifications that have an associated timestamp: The notification is shown on the UI again if it occurs after being dismissed.
 *   * Notifications that do not have a timestamp: The notification is dismissed until it disappears from the props.
 *         If the notification recurs, it is shown in the UI.
 *
 *
 * @public
 */
export declare const NotificationStack: (props: NotificationStackProps) => JSX.Element;
//# sourceMappingURL=NotificationStack.d.ts.map