Skip to content

Latest commit

 

History

History
4984 lines (4451 loc) · 171 KB

communication-react.api.md

File metadata and controls

4984 lines (4451 loc) · 171 KB

API Report File for "@azure/communication-react"

Do not edit this file. It is a report generated by API Extractor.

/// <reference types="react" />

import { AddPhoneNumberOptions } from '@azure/communication-calling';
import { AudioDeviceInfo } from '@azure/communication-calling';
import { AudioEffectsStartConfig } from '@azure/communication-calling';
import { BackgroundBlurConfig } from '@azure/communication-calling';
import { BackgroundBlurEffect } from '@azure/communication-calling';
import { BackgroundReplacementConfig } from '@azure/communication-calling';
import { BackgroundReplacementEffect } from '@azure/communication-calling';
import { BreakoutRoom } from '@azure/communication-calling';
import { BreakoutRoomsSettings } from '@azure/communication-calling';
import { BreakoutRoomsUpdatedListener } from '@azure/communication-calling';
import { Call } from '@azure/communication-calling';
import { CallAgent } from '@azure/communication-calling';
import { CallClient } from '@azure/communication-calling';
import { CallClientOptions } from '@azure/communication-calling';
import { CallDirection } from '@azure/communication-calling';
import { CallEndReason } from '@azure/communication-calling';
import { CallerInfo } from '@azure/communication-calling';
import { CallKind } from '@azure/communication-calling';
import { CallState as CallState_2 } from '@azure/communication-calling';
import { CallSurvey } from '@azure/communication-calling';
import { CallSurveyResponse } from '@azure/communication-calling';
import { CapabilitiesChangeInfo } from '@azure/communication-calling';
import { CaptionsKind } from '@azure/communication-calling';
import { CaptionsResultType } from '@azure/communication-calling';
import { ChatClient } from '@azure/communication-chat';
import { ChatClientOptions } from '@azure/communication-chat';
import { ChatMessage as ChatMessage_2 } from '@azure/communication-chat';
import { ChatMessageReadReceipt } from '@azure/communication-chat';
import { ChatParticipant } from '@azure/communication-chat';
import { ChatThreadClient } from '@azure/communication-chat';
import { CommunicationIdentifier } from '@azure/communication-common';
import { CommunicationIdentifierKind } from '@azure/communication-common';
import { CommunicationTokenCredential } from '@azure/communication-common';
import { CommunicationUserIdentifier } from '@azure/communication-common';
import type { CommunicationUserKind } from '@azure/communication-common';
import { CreateViewOptions } from '@azure/communication-calling';
import { DeviceAccess } from '@azure/communication-calling';
import { DeviceManager } from '@azure/communication-calling';
import { DominantSpeakersInfo } from '@azure/communication-calling';
import { DtmfTone as DtmfTone_2 } from '@azure/communication-calling';
import { EnvironmentInfo } from '@azure/communication-calling';
import { GroupCallLocator } from '@azure/communication-calling';
import { IButtonProps } from '@fluentui/react';
import { IButtonStyles } from '@fluentui/react';
import { IContextualMenuItem } from '@fluentui/react';
import { IContextualMenuItemStyles } from '@fluentui/react';
import { IContextualMenuProps } from '@fluentui/react';
import { IContextualMenuStyles } from '@fluentui/react';
import { IIconProps } from '@fluentui/react';
import { IIconStyles } from '@fluentui/react';
import { IMessageBarProps } from '@fluentui/react';
import { IncomingCall } from '@azure/communication-calling';
import { IncomingCallKind } from '@azure/communication-calling';
import { IPersonaStyleProps } from '@fluentui/react';
import { IPersonaStyles } from '@fluentui/react';
import { IRawStyle } from '@fluentui/react';
import { IRenderFunction } from '@fluentui/react';
import { IStackStyles } from '@fluentui/react';
import { IStyle } from '@fluentui/react';
import { IStyleFunctionOrObject } from '@fluentui/react';
import { ITextFieldStyles } from '@fluentui/react';
import { LatestMediaDiagnostics } from '@azure/communication-calling';
import { LatestNetworkDiagnostics } from '@azure/communication-calling';
import { LocalVideoStream } from '@azure/communication-calling';
import type { MediaDiagnosticChangedEventArgs } from '@azure/communication-calling';
import { MediaStreamType } from '@azure/communication-calling';
import { MicrosoftTeamsAppIdentifier } from '@azure/communication-common';
import { MicrosoftTeamsUserIdentifier } from '@azure/communication-common';
import type { NetworkDiagnosticChangedEventArgs } from '@azure/communication-calling';
import { PartialTheme } from '@fluentui/react';
import { ParticipantCapabilities } from '@azure/communication-calling';
import { ParticipantRole } from '@azure/communication-calling';
import { PermissionConstraints } from '@azure/communication-calling';
import { PersonaInitialsColor } from '@fluentui/react';
import { PersonaPresence } from '@fluentui/react';
import { PersonaSize } from '@fluentui/react';
import { PhoneNumberIdentifier } from '@azure/communication-common';
import { PropertyChangedEvent } from '@azure/communication-calling';
import { default as React_2 } from 'react';
import { Reaction as Reaction_2 } from '@azure/communication-calling';
import { ReactionMessage } from '@azure/communication-calling';
import type { RemoteParticipant } from '@azure/communication-calling';
import { RemoteParticipantState as RemoteParticipantState_2 } from '@azure/communication-calling';
import { RoomCallLocator } from '@azure/communication-calling';
import { ScalingMode } from '@azure/communication-calling';
import { SendMessageOptions } from '@azure/communication-chat';
import { SpotlightedParticipant } from '@azure/communication-calling';
import { StartCallOptions } from '@azure/communication-calling';
import { StartCaptionsOptions } from '@azure/communication-calling';
import { TeamsCall } from '@azure/communication-calling';
import { TeamsCallAgent } from '@azure/communication-calling';
import { TeamsCallInfo } from '@azure/communication-calling';
import { TeamsIncomingCall } from '@azure/communication-calling';
import { TeamsMeetingIdLocator } from '@azure/communication-calling';
import { TeamsMeetingLinkLocator } from '@azure/communication-calling';
import { Theme } from '@fluentui/react';
import { TransferEventArgs } from '@azure/communication-calling';
import { TypingIndicatorReceivedEvent } from '@azure/communication-chat';
import { UnknownIdentifier } from '@azure/communication-common';
import { VideoDeviceInfo } from '@azure/communication-calling';
import { VideoEffectName } from '@azure/communication-calling';
import { VideoStreamRenderer } from '@azure/communication-calling';
import { VideoStreamRendererView } from '@azure/communication-calling';

// @public
export interface AcceptedTransfer {
    callId: string;
    timestamp: Date;
}

// @public
export interface ActiveErrorMessage {
    timestamp?: Date;
    type: ErrorType;
}

// @public
export interface ActiveNotification {
    ariaLive?: 'assertive' | 'off' | 'polite';
    autoDismiss?: boolean;
    onClickPrimaryButton?: () => void;
    onClickSecondaryButton?: () => void;
    onDismiss?: () => void;
    timestamp?: Date;
    type: NotificationType;
}

// @public
export interface AdapterError extends Error {
    innerError: Error;
    target: string;
    timestamp: Date;
}

// @public
export type AdapterErrors = {
    [target: string]: AdapterError;
};

// @public
export interface AdapterNotification {
    target: string;
    timestamp: Date;
}

// @public
export type AdapterNotifications = {
    [target: string]: AdapterNotification;
};

// @public
export interface AdapterState<TState> {
    getState(): TState;
    offStateChange(handler: (state: TState) => void): void;
    onStateChange(handler: (state: TState) => void): void;
}

// @public
export type AreEqual<A extends (props: any) => JSX.Element | undefined, B extends (props: any) => JSX.Element | undefined> = true extends AreTypeEqual<A, B> & AreParamEqual<A, B> ? true : false;

// @public
export type AreParamEqual<A extends (props: any) => JSX.Element | undefined, B extends (props: any) => JSX.Element | undefined> = AreTypeEqual<Required<Parameters<A>[0]>, Required<Parameters<B>[0]>>;

// @public
export type AreTypeEqual<A, B> = A extends B ? (B extends A ? true : false) : false;

// @public
export interface AttachmentMetadata {
    id: string;
    name: string;
    url: string;
}

// @public
export type AvatarPersonaData = {
    text?: string;
    imageUrl?: string;
    imageInitials?: string;
    initialsColor?: PersonaInitialsColor | string;
    initialsTextColor?: string;
    showUnknownPersonaCoin?: boolean;
};

// @public
export type AvatarPersonaDataCallback = (userId: string) => Promise<AvatarPersonaData>;

// @public
export type AzureCommunicationCallAdapterArgs = {
    userId: CommunicationUserIdentifier;
    displayName: string;
    credential: CommunicationTokenCredential;
    locator: CallAdapterLocator;
    options?: AzureCommunicationCallAdapterOptions;
};

// @public
export type AzureCommunicationCallAdapterOptions = CommonCallAdapterOptions;

// @public
export type AzureCommunicationCallWithChatAdapterArgs = {
    endpoint: string;
    userId: CommunicationUserIdentifier;
    displayName: string;
    credential: CommunicationTokenCredential;
    locator: CallAndChatLocator | TeamsMeetingLinkLocator | TeamsMeetingIdLocator;
    alternateCallerId?: string;
    callAdapterOptions?: AzureCommunicationCallAdapterOptions;
};

// @public
export type AzureCommunicationCallWithChatAdapterFromClientArgs = {
    callLocator: CallAdapterLocator | TeamsMeetingLinkLocator;
    callAgent: CallAgent;
    callClient: StatefulCallClient;
    chatClient: StatefulChatClient;
    chatThreadClient: ChatThreadClient;
    callAdapterOptions?: AzureCommunicationCallAdapterOptions;
};

// @public
export type AzureCommunicationChatAdapterArgs = {
    endpoint: string;
    userId: CommunicationUserIdentifier;
    displayName: string;
    credential: CommunicationTokenCredential;
    threadId: string;
};

// @public
export type AzureCommunicationOutboundCallAdapterArgs = {
    userId: CommunicationUserIdentifier;
    displayName: string;
    credential: CommunicationTokenCredential;
    targetCallees: StartCallIdentifier[];
    alternateCallerId?: string;
    options?: AzureCommunicationCallAdapterOptions;
};

// @public
export interface BaseCompositeProps<TIcons extends Record<string, JSX.Element>> {
    fluentTheme?: PartialTheme | Theme;
    icons?: TIcons;
    locale?: CompositeLocale;
    onFetchAvatarPersonaData?: AvatarPersonaDataCallback;
    onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;
    rtl?: boolean;
}

// @public
export interface BaseCustomStyles {
    root?: IStyle;
}

// @public
export interface BreakoutRoomsState {
    assignedBreakoutRoom?: BreakoutRoom;
    breakoutRoomDisplayName?: string;
    breakoutRoomSettings?: BreakoutRoomsSettings;
}

// @public
export interface CallAdapter extends CommonCallAdapter {
    // @deprecated
    joinCall(microphoneOn?: boolean): Call | undefined;
    joinCall(options?: JoinCallOptions): Call | undefined;
    startCall(participants: string[], options?: StartCallOptions): Call | undefined;
    startCall(participants: StartCallIdentifier[], options?: StartCallOptions): Call | undefined;
}

// @public
export type CallAdapterCallEndedEvent = {
    callId: string;
    code?: number;
    subCode?: number;
};

// @public @deprecated
export interface CallAdapterCallManagement extends CallAdapterCallOperations {
    // @deprecated
    joinCall(microphoneOn?: boolean): Call | undefined;
    joinCall(options?: JoinCallOptions): Call | undefined;
    startCall(participants: string[], options?: StartCallOptions): Call | undefined;
    startCall(participants: StartCallIdentifier[], options?: StartCallOptions): Call | undefined;
}

// @public
export interface CallAdapterCallOperations {
    addParticipant(participant: PhoneNumberIdentifier, options?: AddPhoneNumberOptions): Promise<void>;
    // (undocumented)
    addParticipant(participant: CommunicationUserIdentifier): Promise<void>;
    createStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void | CreateVideoStreamViewResult>;
    disposeLocalVideoStreamView(): Promise<void>;
    disposeRemoteVideoStreamView(remoteUserId: string): Promise<void>;
    disposeScreenShareStreamView(remoteUserId: string): Promise<void>;
    // @deprecated
    disposeStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void>;
    forbidAudio(userIds: string[]): Promise<void>;
    forbidOthersAudio(): Promise<void>;
    forbidOthersVideo(): Promise<void>;
    forbidVideo(userIds: string[]): Promise<void>;
    holdCall(): Promise<void>;
    leaveCall(forEveryone?: boolean): Promise<void>;
    lowerHand(): Promise<void>;
    mute(): Promise<void>;
    muteAllRemoteParticipants(): Promise<void>;
    muteParticipant(userId: string): Promise<void>;
    onReactionClick(reaction: Reaction_2): Promise<void>;
    permitAudio(userIds: string[]): Promise<void>;
    permitOthersAudio(): Promise<void>;
    permitOthersVideo(): Promise<void>;
    permitVideo(userIds: string[]): Promise<void>;
    raiseHand(): Promise<void>;
    removeParticipant(userId: string): Promise<void>;
    removeParticipant(participant: CommunicationIdentifier): Promise<void>;
    resumeCall(): Promise<void>;
    returnFromBreakoutRoom(): Promise<void>;
    sendDtmfTone(dtmfTone: DtmfTone_2): Promise<void>;
    setCaptionLanguage(language: string): Promise<void>;
    setSpokenLanguage(language: string): Promise<void>;
    startCamera(options?: VideoStreamOptions): Promise<void>;
    startCaptions(options?: StartCaptionsAdapterOptions): Promise<void>;
    startNoiseSuppressionEffect(): Promise<void>;
    startScreenShare(): Promise<void>;
    startSpotlight(userIds?: string[]): Promise<void>;
    startVideoBackgroundEffect(videoBackgroundEffect: VideoBackgroundEffect): Promise<void>;
    stopAllSpotlight(): Promise<void>;
    stopCamera(): Promise<void>;
    stopCaptions(options?: StopCaptionsAdapterOptions): Promise<void>;
    stopNoiseSuppressionEffect(): Promise<void>;
    stopScreenShare(): Promise<void>;
    stopSpotlight(userIds?: string[]): Promise<void>;
    stopVideoBackgroundEffects(): Promise<void>;
    submitSurvey(survey: CallSurvey): Promise<CallSurveyResponse | undefined>;
    unmute(): Promise<void>;
    updateBackgroundPickerImages(backgroundImages: VideoBackgroundImage[]): void;
    updateSelectedVideoBackgroundEffect(selectedVideoBackground: VideoBackgroundEffect): void;
}

// @public
export type CallAdapterClientState = {
    userId: CommunicationIdentifierKind;
    displayName?: string;
    call?: CallState;
    targetCallees?: CommunicationIdentifier[];
    devices: DeviceManagerState;
    endedCall?: CallState;
    isTeamsCall: boolean;
    isTeamsMeeting: boolean;
    isRoomsCall: boolean;
    latestErrors: AdapterErrors;
    latestNotifications: AdapterNotifications;
    alternateCallerId?: string;
    environmentInfo?: EnvironmentInfo;
    cameraStatus?: 'On' | 'Off';
    videoBackgroundImages?: VideoBackgroundImage[];
    onResolveVideoEffectDependency?: () => Promise<VideoBackgroundEffectsDependency>;
    onResolveDeepNoiseSuppressionDependency?: () => Promise<DeepNoiseSuppressionEffectDependency>;
    deepNoiseSuppressionOnByDefault?: boolean;
    hideDeepNoiseSuppressionButton?: boolean;
    selectedVideoBackgroundEffect?: VideoBackgroundEffect;
    acceptedTransferCallState?: CallState;
    hideAttendeeNames?: boolean;
    sounds?: CallingSounds;
    reactions?: ReactionResources;
};

// @public
export interface CallAdapterDeviceManagement {
    askDevicePermission(constrain: PermissionConstraints): Promise<DeviceAccess>;
    queryCameras(): Promise<VideoDeviceInfo[]>;
    queryMicrophones(): Promise<AudioDeviceInfo[]>;
    querySpeakers(): Promise<AudioDeviceInfo[]>;
    setCamera(sourceInfo: VideoDeviceInfo, options?: VideoStreamOptions): Promise<void>;
    setMicrophone(sourceInfo: AudioDeviceInfo): Promise<void>;
    setSpeaker(sourceInfo: AudioDeviceInfo): Promise<void>;
}

// @public
export type CallAdapterLocator = TeamsMeetingLinkLocator | GroupCallLocator | RoomCallLocator | TeamsMeetingIdLocator;

// @public
export type CallAdapterState = CallAdapterUiState & CallAdapterClientState;

// @public
export interface CallAdapterSubscribers {
    off(event: 'participantsJoined', listener: ParticipantsJoinedListener): void;
    off(event: 'participantsLeft', listener: ParticipantsLeftListener): void;
    off(event: 'isMutedChanged', listener: IsMutedChangedListener): void;
    off(event: 'callIdChanged', listener: CallIdChangedListener): void;
    off(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;
    off(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;
    off(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;
    off(event: 'callEnded', listener: CallEndedListener): void;
    off(event: 'diagnosticChanged', listener: DiagnosticChangedEventListner): void;
    off(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;
    off(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;
    off(event: 'error', listener: (e: AdapterError) => void): void;
    off(event: 'captionsReceived', listener: CaptionsReceivedListener): void;
    off(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;
    off(event: 'isCaptionLanguageChanged', listener: IsCaptionLanguageChangedListener): void;
    off(event: 'isSpokenLanguageChanged', listener: IsSpokenLanguageChangedListener): void;
    off(event: 'transferAccepted', listener: TransferAcceptedListener): void;
    off(event: 'capabilitiesChanged', listener: CapabilitiesChangedListener): void;
    off(event: 'roleChanged', listener: PropertyChangedEvent): void;
    off(event: 'spotlightChanged', listener: SpotlightChangedListener): void;
    off(event: 'mutedByOthers', listener: PropertyChangedEvent): void;
    off(event: 'breakoutRoomsUpdated', listener: BreakoutRoomsUpdatedListener): void;
    on(event: 'participantsJoined', listener: ParticipantsJoinedListener): void;
    on(event: 'participantsLeft', listener: ParticipantsLeftListener): void;
    on(event: 'isMutedChanged', listener: IsMutedChangedListener): void;
    on(event: 'callIdChanged', listener: CallIdChangedListener): void;
    on(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;
    on(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;
    on(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;
    on(event: 'callEnded', listener: CallEndedListener): void;
    on(event: 'diagnosticChanged', listener: DiagnosticChangedEventListner): void;
    on(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;
    on(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;
    on(event: 'error', listener: (e: AdapterError) => void): void;
    on(event: 'captionsReceived', listener: CaptionsReceivedListener): void;
    on(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;
    on(event: 'isCaptionLanguageChanged', listener: IsCaptionLanguageChangedListener): void;
    on(event: 'isSpokenLanguageChanged', listener: IsSpokenLanguageChangedListener): void;
    on(event: 'transferAccepted', listener: TransferAcceptedListener): void;
    on(event: 'capabilitiesChanged', listener: CapabilitiesChangedListener): void;
    on(event: 'roleChanged', listener: PropertyChangedEvent): void;
    on(event: 'spotlightChanged', listener: SpotlightChangedListener): void;
    on(event: 'mutedByOthers', listener: PropertyChangedEvent): void;
    on(event: 'breakoutRoomsUpdated', listener: BreakoutRoomsUpdatedListener): void;
}

// @public
export type CallAdapterUiState = {
    isLocalPreviewMicrophoneEnabled: boolean;
    page: CallCompositePage;
};

// @public
export const CallAgentProvider: (props: CallAgentProviderProps) => JSX.Element;

// @public
export interface CallAgentProviderProps {
    // (undocumented)
    callAgent?: CallAgent | TeamsCallAgent;
    // (undocumented)
    children: React_2.ReactNode;
}

// @public
export interface CallAgentState {
    displayName?: string;
}

// @public
export interface CallAndChatLocator {
    callLocator: GroupCallLocator;
    chatThreadId: string;
}

// @public
export const CallClientProvider: (props: CallClientProviderProps) => JSX.Element;

// @public
export interface CallClientProviderProps {
    // (undocumented)
    callClient: StatefulCallClient;
    // (undocumented)
    children: React_2.ReactNode;
}

// @public
export interface CallClientState {
    alternateCallerId?: string;
    callAgent?: CallAgentState;
    calls: {
        [key: string]: CallState;
    };
    callsEnded: {
        [key: string]: CallState;
    };
    deviceManager: DeviceManagerState;
    environmentInfo?: EnvironmentInfo;
    incomingCalls: {
        [key: string]: IncomingCallState | TeamsIncomingCallState;
    };
    incomingCallsEnded: {
        [key: string]: IncomingCallState | TeamsIncomingCallState;
    };
    latestErrors: CallErrors;
    latestNotifications: CallNotifications;
    userId: CommunicationIdentifierKind;
}

// @public
export const CallComposite: (props: CallCompositeProps) => JSX.Element;

// @public
export type CallCompositeIcons = {
    ControlBarPeopleButton?: JSX.Element;
    ControlButtonCameraOff?: JSX.Element;
    ControlButtonCameraOn?: JSX.Element;
    ControlButtonEndCall?: JSX.Element;
    ControlButtonMicOff?: JSX.Element;
    ControlButtonMicOn?: JSX.Element;
    ControlButtonOptions?: JSX.Element;
    ControlButtonParticipants?: JSX.Element;
    ControlButtonScreenShareStart?: JSX.Element;
    ControlButtonScreenShareStop?: JSX.Element;
    ControlButtonCameraProhibited?: JSX.Element;
    ControlButtonCameraProhibitedSmall?: JSX.Element;
    ControlButtonMicProhibited?: JSX.Element;
    ControlButtonMicProhibitedSmall?: JSX.Element;
    ControlButtonRaiseHand?: JSX.Element;
    ControlButtonLowerHand?: JSX.Element;
    ControlButtonExitSpotlight?: JSX.Element;
    RaiseHandContextualMenuItem?: JSX.Element;
    ReactionContextualMenuItem?: JSX.Element;
    LowerHandContextualMenuItem?: JSX.Element;
    ReactionButtonIcon?: JSX.Element;
    ErrorBarCallCameraAccessDenied?: JSX.Element;
    ErrorBarCallCameraAlreadyInUse?: JSX.Element;
    ErrorBarCallLocalVideoFreeze?: JSX.Element;
    ErrorBarCallMacOsCameraAccessDenied?: JSX.Element;
    ErrorBarCallMacOsMicrophoneAccessDenied?: JSX.Element;
    ErrorBarCallMicrophoneAccessDenied?: JSX.Element;
    ErrorBarCallMicrophoneMutedBySystem?: JSX.Element;
    ErrorBarCallMicrophoneUnmutedBySystem?: JSX.Element;
    ErrorBarCallNetworkQualityLow?: JSX.Element;
    ErrorBarCallNoMicrophoneFound?: JSX.Element;
    ErrorBarCallNoSpeakerFound?: JSX.Element;
    ErrorBarClear?: JSX.Element;
    HorizontalGalleryLeftButton?: JSX.Element;
    HorizontalGalleryRightButton?: JSX.Element;
    LobbyScreenConnectingToCall?: JSX.Element;
    LobbyScreenWaitingToBeAdmitted?: JSX.Element;
    LocalDeviceSettingsCamera?: JSX.Element;
    LocalDeviceSettingsMic?: JSX.Element;
    LocalDeviceSettingsSpeaker?: JSX.Element;
    LocalPreviewPlaceholder?: JSX.Element;
    Muted?: JSX.Element;
    NetworkReconnectIcon?: JSX.Element;
    NoticePageAccessDeniedTeamsMeeting?: JSX.Element;
    NoticePageJoinCallFailedDueToNoNetwork?: JSX.Element;
    NoticePageLeftCall?: JSX.Element;
    NoticePageRemovedFromCall?: JSX.Element;
    NoticePageCallRejected?: JSX.Element;
    NoticePageNotInvitedToRoom?: JSX.Element;
    NoticePageRoomNotFound?: JSX.Element;
    NoticePageRoomNotValid?: JSX.Element;
    NoticePageCallTimeout?: JSX.Element;
    OptionsCamera?: JSX.Element;
    OptionsMic?: JSX.Element;
    OptionsSpeaker?: JSX.Element;
    ParticipantItemMicOff?: JSX.Element;
    ParticipantItemOptions?: JSX.Element;
    ParticipantItemOptionsHovered?: JSX.Element;
    ParticipantItemScreenShareStart?: JSX.Element;
    VideoTileMicOff?: JSX.Element;
    LocalCameraSwitch?: JSX.Element;
    PeoplePaneAddPerson?: JSX.Element;
    PeoplePaneOpenDialpad?: JSX.Element;
    DialpadStartCall?: JSX.Element;
    NoticePageInviteToRoomRemoved?: JSX.Element;
    BlurVideoBackground?: JSX.Element;
    RemoveVideoBackgroundEffect?: JSX.Element;
    GalleryOptions?: JSX.Element;
    SpeakerGalleryLayout?: JSX.Element;
    FloatingLocalVideoGalleryLayout?: JSX.Element;
    DefaultGalleryLayout?: JSX.Element;
    FocusedContentGalleryLayout?: JSX.Element;
    OverflowGalleryTop?: JSX.Element;
    LargeGalleryLayout?: JSX.Element;
    DefaultCustomButton?: JSX.Element;
    DtmfDialpadButton?: JSX.Element;
    PhoneNumberButton?: JSX.Element;
    JoinByPhoneDialStepIcon?: JSX.Element;
    JoinByPhoneConferenceIdIcon?: JSX.Element;
    JoinByPhoneWaitToBeAdmittedIcon?: JSX.Element;
    PeoplePaneMoreButton?: JSX.Element;
    StopAllSpotlightMenuButton?: JSX.Element;
};

// @public
export type CallCompositeLoaderProps = {
    userId: CommunicationUserIdentifier;
    credential: CommunicationTokenCredential;
    displayName: string;
    locator: CallAdapterLocator;
    callAdapterOptions?: AzureCommunicationCallAdapterOptions;
    callCompositeOptions?: CallCompositeOptions;
};

// @public
export type CallCompositeOptions = {
    captionsBanner?: {
        height: 'full' | 'default';
    };
    errorBar?: boolean;
    callControls?: boolean | CallControlOptions;
    remoteVideoTileMenuOptions?: RemoteVideoTileMenuOptions;
    localVideoTile?: boolean | LocalVideoTileOptions;
    videoTilesOptions?: VideoTilesOptions;
    disableAutoShowDtmfDialer?: boolean | DtmfDialPadOptions;
    galleryOptions?: {
        layout?: VideoGalleryLayout;
    };
    surveyOptions?: {
        disableSurvey?: boolean;
        onSurveyClosed?: (surveyState: 'sent' | 'skipped' | 'error', surveyError?: string) => void;
        onSurveySubmitted?: (callId: string, surveyId: string,
        submittedSurvey: CallSurvey,
        improvementSuggestions: CallSurveyImprovementSuggestions) => Promise<void>;
    };
    branding?: {
        logo?: {
            url: string;
            alt?: string;
            shape?: 'unset' | 'circle';
        };
        backgroundImage?: {
            url: string;
        };
    };
    spotlight?: {
        hideSpotlightButtons?: boolean;
    };
};

// @public
export type CallCompositePage = 'accessDeniedTeamsMeeting' | 'call' | 'configuration' | 'hold' | 'joinCallFailedDueToNoNetwork' | 'leftCall' | 'leaving' | 'lobby' | 'removedFromCall' | 'transferring' | 'badRequest' | 'returningFromBreakoutRoom';

// @public
export interface CallCompositeProps extends BaseCompositeProps<CallCompositeIcons> {
    adapter: CommonCallAdapter;
    callInvitationUrl?: string;
    formFactor?: 'desktop' | 'mobile';
    options?: CallCompositeOptions;
}

// @public
export interface CallCompositeStrings {
    addSpotlightMenuLabel: string;
    blurBackgroundEffectButtonLabel?: string;
    blurBackgroundTooltip?: string;
    breakoutRoomJoinedNotificationTitle: string;
    callRejectedMoreDetails?: string;
    callRejectedTitle?: string;
    callTimeoutBotDetails?: string;
    callTimeoutBotTitle?: string;
    callTimeoutDetails?: string;
    callTimeoutTitle?: string;
    cameraLabel: string;
    cameraOffBackgroundEffectWarningText?: string;
    cameraPermissionDenied: string;
    cameraTurnedOff: string;
    capabilityChangedNotification?: CapabilityChangedNotificationStrings;
    captionLanguageStrings?: CaptionLanguageStrings;
    captionsBannerMoreButtonCallingLabel?: string;
    captionsBannerMoreButtonTooltip?: string;
    captionsBannerSpinnerText?: string;
    captionsSettingsCancelButtonLabel?: string;
    captionsSettingsCaptionLanguageDropdownInfoText?: string;
    captionsSettingsCaptionLanguageDropdownLabel?: string;
    captionsSettingsCloseModalButtonAriaLabel?: string;
    captionsSettingsConfirmButtonLabel?: string;
    captionsSettingsLabel?: string;
    captionsSettingsModalAriaLabel?: string;
    captionsSettingsModalTitle?: string;
    captionsSettingsSpokenLanguageDropdownInfoText?: string;
    captionsSettingsSpokenLanguageDropdownLabel?: string;
    chatButtonLabel: string;
    close: string;
    complianceBannerNowOnlyRecording: string;
    complianceBannerNowOnlyTranscription: string;
    complianceBannerRecordingAndTranscriptionSaved: string;
    complianceBannerRecordingAndTranscriptionStarted: string;
    complianceBannerRecordingAndTranscriptionStopped: string;
    complianceBannerRecordingSaving: string;
    complianceBannerRecordingStarted: string;
    complianceBannerRecordingStopped: string;
    complianceBannerTranscriptionConsent: string;
    complianceBannerTranscriptionSaving: string;
    complianceBannerTranscriptionStarted: string;
    complianceBannerTranscriptionStopped: string;
    configurationPageCallDetails?: string;
    configurationPageCameraIsLoadingLabel?: string;
    configurationPageTitle: string;
    configurationPageVideoEffectsButtonLabel?: string;
    copyInviteLinkActionedAriaLabel: string;
    copyInviteLinkButtonActionedLabel?: string;
    copyInviteLinkButtonLabel?: string;
    defaultPlaceHolder: string;
    dialpadCloseModalButtonAriaLabel?: string;
    dialpadModalAriaLabel?: string;
    dialpadModalTitle?: string;
    dialpadStartCallButtonLabel?: string;
    dismissModalAriaLabel?: string;
    dismissSidePaneButtonLabel?: string;
    dtmfDialerButtonLabel?: string;
    dtmfDialerButtonTooltipOff?: string;
    dtmfDialerButtonTooltipOn?: string;
    dtmfDialerMoreButtonLabelOff?: string;
    dtmfDialerMoreButtonLabelOn?: string;
    dtmfDialpadPlaceholderText?: string;
    endCallConfirmButtonLabel?: string;
    endCallConfirmDialogContent?: string;
    endCallConfirmDialogTitle?: string;
    endOfSurveyText: string;
    exitSpotlightButtonLabel: string;
    exitSpotlightButtonTooltip: string;
    failedToJoinCallDueToNoNetworkMoreDetails?: string;
    failedToJoinCallDueToNoNetworkTitle: string;
    failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails?: string;
    failedToJoinTeamsMeetingReasonAccessDeniedTitle: string;
    forbidAudioMenuLabel: string;
    forbidOthersAudioCancelButtonLabel: string;
    forbidOthersAudioConfirmButtonLabel: string;
    forbidOthersAudioDialogContent: string;
    forbidOthersAudioDialogTitle: string;
    forbidOthersAudioMenuLabel: string;
    forbidOthersVideoCancelButtonLabel: string;
    forbidOthersVideoConfirmButtonLabel: string;
    forbidOthersVideoDialogContent: string;
    forbidOthersVideoDialogTitle: string;
    forbidOthersVideoMenuLabel: string;
    forbidVideoMenuLabel: string;
    hangUpCancelButtonLabel?: string;
    holdScreenLabel?: string;
    invalidMeetingIdentifier: string;
    inviteToRoomRemovedDetails?: string;
    inviteToRoomRemovedTitle: string;
    joinBreakoutRoomBannerButtonLabel: string;
    joinBreakoutRoomBannerTitle: string;
    joinBreakoutRoomButtonLabel: string;
    learnMore: string;
    leaveBreakoutRoomAndMeetingButtonLabel: string;
    leaveConfirmButtonLabel?: string;
    leaveConfirmDialogContent?: string;
    leaveConfirmDialogTitle?: string;
    leavingCallTitle?: string;
    leftCallMoreDetails?: string;
    leftCallTitle: string;
    liveCaptionsLabel?: string;
    lobbyScreenConnectingToCallMoreDetails?: string;
    lobbyScreenConnectingToCallTitle: string;
    lobbyScreenWaitingToBeAdmittedMoreDetails?: string;
    lobbyScreenWaitingToBeAdmittedTitle: string;
    manyParticipantsJoined: string;
    manyParticipantsLeft: string;
    manyUnnamedParticipantsJoined: string;
    manyUnnamedParticipantsLeft: string;
    microphonePermissionDenied: string;
    microphoneToggleInLobbyNotAllowed: string;
    moreButtonCallingLabel: string;
    moreButtonGalleryControlLabel?: string;
    moreButtonGalleryDefaultLayoutLabel?: string;
    moreButtonGalleryFloatingLocalLayoutLabel?: string;
    moreButtonGalleryFocusedContentLayoutLabel?: string;
    moreButtonGalleryPositionToggleLabel?: string;
    moreButtonGallerySpeakerLayoutLabel?: string;
    moreButtonLargeGalleryDefaultLayoutLabel?: string;
    moreButtonTogetherModeLayoutLabel?: string;
    muteAllCancelButtonLabel: string;
    muteAllConfirmButtonLabel: string;
    muteAllDialogContent: string;
    muteAllDialogTitle: string;
    muteAllMenuLabel: string;
    mutedMessage: string;
    networkReconnectMoreDetails: string;
    networkReconnectTitle: string;
    noCamerasLabel: string;
    noMicrophonesLabel: string;
    noSpeakersLabel: string;
    notInvitedToRoomDetails?: string;
    notInvitedToRoomTitle: string;
    openDialpadButtonLabel?: string;
    openDtmfDialpadLabel?: string;
    outboundCallingNoticeString?: string;
    participantCouldNotBeReachedMoreDetails?: string;
    participantCouldNotBeReachedTitle?: string;
    participantIdIsMalformedMoreDetails?: string;
    participantIdIsMalformedTitle?: string;
    participantJoinedNoticeString: string;
    participantLeftNoticeString: string;
    peopleButtonLabel: string;
    peopleButtonTooltipClose: string;
    peopleButtonTooltipOpen: string;
    peoplePaneAddPeopleButtonLabel?: string;
    peoplePaneMoreButtonAriaLabel: string;
    peoplePaneSubTitle?: string;
    peoplePaneTitle: string;
    permissionToReachTargetParticipantNotAllowedMoreDetails?: string;
    permissionToReachTargetParticipantNotAllowedTitle?: string;
    permitAudioMenuLabel: string;
    permitOthersAudioCancelButtonLabel: string;
    permitOthersAudioConfirmButtonLabel: string;
    permitOthersAudioDialogContent: string;
    permitOthersAudioDialogTitle: string;
    permitOthersAudioMenuLabel: string;
    permitOthersVideoCancelButtonLabel: string;
    permitOthersVideoConfirmButtonLabel: string;
    permitOthersVideoDialogContent: string;
    permitOthersVideoDialogTitle: string;
    permitOthersVideoMenuLabel: string;
    permitVideoMenuLabel: string;
    phoneCallMoreButtonLabel: string;
    pinParticipantLimitReachedMenuLabel: string;
    pinParticipantMenuItemAriaLabel: string;
    pinParticipantMenuLabel: string;
    privacyPolicy: string;
    rejoinCallButtonLabel: string;
    removeBackgroundEffectButtonLabel?: string;
    removeBackgroundTooltip?: string;
    removedFromCallMoreDetails?: string;
    removedFromCallTitle: string;
    removeMenuLabel?: string;
    resumeCallButtonAriaLabel?: string;
    resumeCallButtonLabel?: string;
    resumingCallButtonAriaLabel?: string;
    resumingCallButtonLabel?: string;
    returnFromBreakoutRoomBannerButtonLabel: string;
    returnFromBreakoutRoomBannerTitle: string;
    returnFromBreakoutRoomButtonLabel: string;
    returnToCallButtonAriaDescription?: string;
    returnToCallButtonAriaLabel?: string;
    roomNotFoundDetails?: string;
    roomNotFoundTitle: string;
    roomNotValidDetails?: string;
    roomNotValidTitle: string;
    selectedPeopleButtonLabel: string;
    soundLabel: string;
    spokenLanguageStrings?: SpokenLanguageStrings;
    spotlightLimitReachedMenuTitle: string;
    spotlightPrompt: SpotlightPromptStrings;
    starRatingAriaLabel: string;
    starSurveyFiveStarText: string;
    starSurveyFourStarText: string;
    starSurveyHelperText: string;
    starSurveyOneStarText: string;
    starSurveyThreeStarText: string;
    starSurveyTwoStarText: string;
    startCallButtonLabel: string;
    startCaptionsButtonOffLabel?: string;
    startCaptionsButtonOnLabel?: string;
    startCaptionsButtonTooltipOffContent?: string;
    startCaptionsButtonTooltipOnContent?: string;
    startSpotlightMenuLabel: string;
    stopAllSpotlightMenuLabel: string;
    stopSpotlightMenuLabel: string;
    stopSpotlightOnSelfMenuLabel: string;
    surveyConfirmButtonLabel: string;
    surveyIssues: SurveyIssues;
    surveyIssuesHeadingStrings: SurveyIssuesHeadingStrings;
    surveySkipButtonLabel: string;
    surveyTitle: string;
    tagsSurveyHelperText: string;
    tagsSurveyQuestion: string;
    tagsSurveyTextFieldDefaultText: string;
    threeParticipantJoinedNoticeString: string;
    threeParticipantLeftNoticeString: string;
    transferPageNoticeString: string;
    transferPageTransferorText: string;
    transferPageTransferTargetText: string;
    transferPageUnknownTransferorDisplayName: string;
    transferPageUnknownTransferTargetDisplayName: string;
    twoParticipantJoinedNoticeString: string;
    twoParticipantLeftNoticeString: string;
    unableToResolveTenantMoreDetails?: string;
    unableToResolveTenantTitle?: string;
    unableToStartVideoEffect?: string;
    unnamedParticipantString: string;
    unpinParticipantMenuItemAriaLabel: string;
    unpinParticipantMenuLabel: string;
    videoEffectsPaneAriaLabel: string;
    videoEffectsPaneBackgroundSelectionTitle: string;
    videoEffectsPaneTitle: string;
}

// @public
export type CallControlDisplayType = 'default' | 'compact';

// @public
export type CallControlOptions = CommonCallControlOptions & {
    participantsButton?: boolean | {
        disabled: boolean;
    };
    legacyControlBarExperience?: boolean;
};

// @public
export type CallEndedListener = (event: CallAdapterCallEndedEvent) => void;

// @public
export class CallError extends Error {
    constructor(target: CallErrorTarget, innerError: Error, timestamp?: Date);
    code?: number;
    innerError: Error;
    subCode?: number;
    target: CallErrorTarget;
    timestamp: Date;
}

// @public
export type CallErrorBarSelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    activeErrorMessages: ActiveErrorMessage[];
};

// @public
export type CallErrors = {
    [target in CallErrorTarget]: CallError;
};

// @public
export type CallErrorTarget = 'Call.addParticipant' | 'Call.dispose' | 'Call.feature' | 'Call.hangUp' | 'Call.hold' | 'Call.mute' | 'Call.muteIncomingAudio' | 'Call.off' | 'Call.on' | 'Call.removeParticipant' | 'Call.resume' | 'Call.sendDtmf' | 'Call.startAudio' | 'Call.startScreenSharing' | 'Call.startVideo' | 'Call.stopScreenSharing' | 'Call.stopAudio' | 'Call.stopVideo' | 'Call.unmute' | 'Call.unmuteIncomingAudio' | 'CallAgent.dispose' | 'CallAgent.feature' | 'CallAgent.join' | 'CallAgent.off' | 'CallAgent.on' | 'CallAgent.startCall' | 'CallClient.createCallAgent' | 'CallClient.createTeamsCallAgent' | 'CallClient.feature' | 'CallClient.getDeviceManager' | 'CallClient.getEnvironmentInfo' | 'DeviceManager.askDevicePermission' | 'DeviceManager.getCameras' | 'DeviceManager.getMicrophones' | 'DeviceManager.getSpeakers' | 'DeviceManager.off' | 'DeviceManager.on' | 'DeviceManager.selectMicrophone' | 'DeviceManager.selectSpeaker' | 'IncomingCall.accept' | 'IncomingCall.reject' | 'TeamsCall.addParticipant' | 'VideoEffectsFeature.startEffects' | 'Call.mutedByOthers' | 'Call.muteAllRemoteParticipants' | 'Call.setConstraints';

// @public
export type CallIdChangedListener = (event: {
    callId: string;
}) => void;

// @public
export interface CallInfoState {
    groupId?: string;
    kind: IncomingCallKind;
    participantId: string;
    threadId?: string;
}

// @public
export type CallingBaseSelectorProps = {
    callId: string;
};

// @public
export interface CallingHandlers extends CommonCallingHandlers {
    // (undocumented)
    onStartCall: (participants: CommunicationIdentifier[], options?: StartCallOptions) => Call | undefined;
}

// @public
export type CallingHandlersOptions = {
    onResolveVideoBackgroundEffectsDependency?: () => Promise<VideoBackgroundEffectsDependency>;
    onResolveDeepNoiseSuppressionDependency?: () => Promise<DeepNoiseSuppressionEffectDependency>;
};

// @public
export type CallingReturnProps<Component extends (props: any) => JSX.Element> = GetCallingSelector<Component> extends (state: CallClientState, props: any) => any ? ReturnType<GetCallingSelector<Component>> & Common<CallingHandlers, Parameters<Component>[0]> : never;

// @public
export type CallingSounds = {
    callEnded?: SoundEffect;
    callRinging?: SoundEffect;
    callBusy?: SoundEffect;
};

// @public
export interface CallingTheme {
    // (undocumented)
    callingPalette: {
        callRed: string;
        callRedDark: string;
        callRedDarker: string;
        iconWhite: string;
        raiseHandGold: string;
        videoTileLabelBackgroundLight: string;
    };
}

// @public (undocumented)
export interface CallNotification {
    // (undocumented)
    target: NotificationTarget;
    // (undocumented)
    timestamp: Date;
}

// @public (undocumented)
export type CallNotifications = {
    [target in NotificationTarget]: CallNotification;
};

// @public
export type CallParticipantListParticipant = ParticipantListParticipant & {
    state: ParticipantState;
    isScreenSharing?: boolean;
    isMuted?: boolean;
    isSpeaking?: boolean;
    raisedHand?: RaisedHand;
    reaction?: Reaction;
    spotlight?: Spotlight;
    mediaAccess?: MediaAccess;
};

// @public
export const CallProvider: (props: CallProviderProps) => JSX.Element;

// @public
export interface CallProviderProps {
    // (undocumented)
    call?: Call | TeamsCall;
    // (undocumented)
    children: React_2.ReactNode;
}

// @public
export interface CallState {
    breakoutRooms?: BreakoutRoomsState;
    callEndReason?: CallEndReason;
    callerInfo: CallerInfo;
    capabilitiesFeature?: CapabilitiesFeatureState;
    captionsFeature: CaptionsCallFeatureState;
    contentSharingRemoteParticipant?: string;
    diagnostics: DiagnosticsCallFeatureState;
    direction: CallDirection;
    dominantSpeakers?: DominantSpeakersInfo;
    endTime: Date | undefined;
    hideAttendeeNames?: boolean;
    id: string;
    info?: TeamsCallInfo;
    isMuted: boolean;
    isScreenSharingOn: boolean;
    kind: CallKind;
    localParticipantReaction?: ReactionState;
    localVideoStreams: LocalVideoStreamState[];
    meetingConference?: {
        conferencePhones: ConferencePhoneInfo[];
    };
    meetingMediaAccess?: MediaAccessState;
    optimalVideoCount: OptimalVideoCountFeatureState;
    pptLive: PPTLiveCallFeatureState;
    raiseHand: RaiseHandCallFeature;
    recording: RecordingCallFeature;
    remoteParticipants: {
        [keys: string]: RemoteParticipantState;
    };
    remoteParticipantsEnded: {
        [keys: string]: RemoteParticipantState;
    };
    role?: ParticipantRole;
    screenShareRemoteParticipant?: string;
    spotlight?: SpotlightCallFeatureState;
    startTime: Date;
    state: CallState_2;
    transcription: TranscriptionCallFeature;
    transfer: TransferFeature;
}

// @public
export interface CallSurveyImprovementSuggestions {
    audioRating?: string;
    overallRating?: string;
    screenshareRating?: string;
    videoRating?: string;
}

// @public
export interface CallWithChatAdapter extends CallWithChatAdapterManagement, AdapterState<CallWithChatAdapterState>, Disposable_2, CallWithChatAdapterSubscriptions {
}

// @public
export interface CallWithChatAdapterManagement {
    addParticipant(participant: PhoneNumberIdentifier, options?: AddPhoneNumberOptions): Promise<void>;
    // (undocumented)
    addParticipant(participant: CommunicationUserIdentifier): Promise<void>;
    askDevicePermission(constrain: PermissionConstraints): Promise<DeviceAccess>;
    createStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void | CreateVideoStreamViewResult>;
    deleteMessage(messageId: string): Promise<void>;
    disposeLocalVideoStreamView(): Promise<void>;
    disposeRemoteVideoStreamView(remoteUserId: string): Promise<void>;
    disposeScreenShareStreamView(remoteUserId: string): Promise<void>;
    disposeStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void>;
    // (undocumented)
    downloadResourceToCache(resourceDetails: ResourceDetails): Promise<void>;
    fetchInitialData(): Promise<void>;
    forbidAudio: (userIds: string[]) => Promise<void>;
    forbidOthersAudio: () => Promise<void>;
    forbidOthersVideo: () => Promise<void>;
    forbidVideo: (userIds: string[]) => Promise<void>;
    holdCall(): Promise<void>;
    // @deprecated
    joinCall(microphoneOn?: boolean): Call | undefined;
    joinCall(options?: JoinCallOptions): Call | undefined;
    leaveCall(forEveryone?: boolean): Promise<void>;
    loadPreviousChatMessages(messagesToLoad: number): Promise<boolean>;
    lowerHand(): Promise<void>;
    mute(): Promise<void>;
    muteAllRemoteParticipants(): Promise<void>;
    muteParticipant(userId: string): Promise<void>;
    onReactionClick(reaction: Reaction_2): Promise<void>;
    permitAudio: (userIds: string[]) => Promise<void>;
    permitOthersAudio: () => Promise<void>;
    permitOthersVideo: () => Promise<void>;
    permitVideo: (userIds: string[]) => Promise<void>;
    queryCameras(): Promise<VideoDeviceInfo[]>;
    queryMicrophones(): Promise<AudioDeviceInfo[]>;
    querySpeakers(): Promise<AudioDeviceInfo[]>;
    raiseHand(): Promise<void>;
    removeParticipant(userId: string): Promise<void>;
    removeParticipant(participant: CommunicationIdentifier): Promise<void>;
    // (undocumented)
    removeResourceFromCache(resourceDetails: ResourceDetails): void;
    resumeCall(): Promise<void>;
    returnFromBreakoutRoom(): Promise<void>;
    sendDtmfTone: (dtmfTone: DtmfTone_2) => Promise<void>;
    sendMessage(content: string, options?: SendMessageOptions): Promise<void>;
    sendReadReceipt(chatMessageId: string): Promise<void>;
    sendTypingIndicator(): Promise<void>;
    setCamera(sourceInfo: VideoDeviceInfo, options?: VideoStreamOptions): Promise<void>;
    setCaptionLanguage(language: string): Promise<void>;
    setMicrophone(sourceInfo: AudioDeviceInfo): Promise<void>;
    setSpeaker(sourceInfo: AudioDeviceInfo): Promise<void>;
    setSpokenLanguage(language: string): Promise<void>;
    startCall(participants: string[], options?: StartCallOptions): Call | undefined;
    startCall(participants: (MicrosoftTeamsAppIdentifier | PhoneNumberIdentifier | CommunicationUserIdentifier | MicrosoftTeamsUserIdentifier | UnknownIdentifier)[], options?: StartCallOptions): Call | undefined;
    startCamera(options?: VideoStreamOptions): Promise<void>;
    startCaptions(options?: StartCaptionsAdapterOptions): Promise<void>;
    startNoiseSuppressionEffect(): Promise<void>;
    startScreenShare(): Promise<void>;
    startSpotlight(userIds?: string[]): Promise<void>;
    startVideoBackgroundEffect(videoBackgroundEffect: VideoBackgroundEffect): Promise<void>;
    stopAllSpotlight(): Promise<void>;
    stopCamera(): Promise<void>;
    stopCaptions(options?: StopCaptionsAdapterOptions): Promise<void>;
    stopNoiseSuppressionEffect(): Promise<void>;
    stopScreenShare(): Promise<void>;
    stopSpotlight(userIds?: string[]): Promise<void>;
    stopVideoBackgroundEffects(): Promise<void>;
    submitSurvey(survey: CallSurvey): Promise<CallSurveyResponse | undefined>;
    unmute(): Promise<void>;
    updateBackgroundPickerImages(backgroundImages: VideoBackgroundImage[]): void;
    updateMessage(messageId: string, content: string, options?: Record<string, string>): Promise<void>;
    updateSelectedVideoBackgroundEffect(selectedVideoBackground: VideoBackgroundEffect): void;
}

// @public
export interface CallWithChatAdapterState extends CallWithChatAdapterUiState, CallWithChatClientState {
}

// @public
export interface CallWithChatAdapterSubscriptions {
    // (undocumented)
    off(event: 'callEnded', listener: CallEndedListener): void;
    // (undocumented)
    off(event: 'isMutedChanged', listener: IsMutedChangedListener): void;
    // (undocumented)
    off(event: 'callIdChanged', listener: CallIdChangedListener): void;
    // (undocumented)
    off(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;
    // (undocumented)
    off(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;
    // (undocumented)
    off(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;
    // (undocumented)
    off(event: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void;
    // (undocumented)
    off(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void;
    // (undocumented)
    off(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;
    // (undocumented)
    off(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;
    // (undocumented)
    off(event: 'callError', listener: (e: AdapterError) => void): void;
    // (undocumented)
    off(event: 'captionsReceived', listener: CaptionsReceivedListener): void;
    // (undocumented)
    off(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;
    // (undocumented)
    off(event: 'isCaptionLanguageChanged', listener: IsCaptionLanguageChangedListener): void;
    // (undocumented)
    off(event: 'isSpokenLanguageChanged', listener: IsSpokenLanguageChangedListener): void;
    // (undocumented)
    off(event: 'capabilitiesChanged', listener: CapabilitiesChangedListener): void;
    // (undocumented)
    off(event: 'spotlightChanged', listener: SpotlightChangedListener): void;
    // (undocumented)
    off(event: 'breakoutRoomsUpdated', listener: BreakoutRoomsUpdatedListener): void;
    // (undocumented)
    off(event: 'messageReceived', listener: MessageReceivedListener): void;
    // (undocumented)
    off(event: 'messageEdited', listener: MessageEditedListener): void;
    // (undocumented)
    off(event: 'messageDeleted', listener: MessageDeletedListener): void;
    // (undocumented)
    off(event: 'messageSent', listener: MessageSentListener): void;
    // (undocumented)
    off(event: 'messageRead', listener: MessageReadListener): void;
    // (undocumented)
    off(event: 'chatParticipantsAdded', listener: ParticipantsAddedListener): void;
    // (undocumented)
    off(event: 'chatParticipantsRemoved', listener: ParticipantsRemovedListener): void;
    // (undocumented)
    off(event: 'chatError', listener: (e: AdapterError) => void): void;
    // (undocumented)
    off(event: 'chatInitialized', listener: ChatInitializedListener): void;
    // (undocumented)
    on(event: 'callEnded', listener: CallEndedListener): void;
    // (undocumented)
    on(event: 'isMutedChanged', listener: IsMutedChangedListener): void;
    // (undocumented)
    on(event: 'callIdChanged', listener: CallIdChangedListener): void;
    // (undocumented)
    on(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;
    // (undocumented)
    on(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;
    // (undocumented)
    on(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;
    // (undocumented)
    on(event: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void;
    // (undocumented)
    on(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void;
    // (undocumented)
    on(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void;
    // (undocumented)
    on(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void;
    // (undocumented)
    on(event: 'callError', listener: (e: AdapterError) => void): void;
    // (undocumented)
    on(event: 'captionsReceived', listener: CaptionsReceivedListener): void;
    // (undocumented)
    on(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void;
    // (undocumented)
    on(event: 'isCaptionLanguageChanged', listener: IsCaptionLanguageChangedListener): void;
    // (undocumented)
    on(event: 'isSpokenLanguageChanged', listener: IsSpokenLanguageChangedListener): void;
    // (undocumented)
    on(event: 'capabilitiesChanged', listener: CapabilitiesChangedListener): void;
    // (undocumented)
    on(event: 'spotlightChanged', listener: SpotlightChangedListener): void;
    // (undocumented)
    on(event: 'breakoutRoomsUpdated', listener: BreakoutRoomsUpdatedListener): void;
    // (undocumented)
    on(event: 'messageReceived', listener: MessageReceivedListener): void;
    // (undocumented)
    on(event: 'messageEdited', listener: MessageEditedListener): void;
    // (undocumented)
    on(event: 'messageDeleted', listener: MessageDeletedListener): void;
    // (undocumented)
    on(event: 'messageSent', listener: MessageSentListener): void;
    // (undocumented)
    on(event: 'messageRead', listener: MessageReadListener): void;
    // (undocumented)
    on(event: 'chatParticipantsAdded', listener: ParticipantsAddedListener): void;
    // (undocumented)
    on(event: 'chatParticipantsRemoved', listener: ParticipantsRemovedListener): void;
    // (undocumented)
    on(event: 'chatError', listener: (e: AdapterError) => void): void;
    // (undocumented)
    on(event: 'chatInitialized', listener: ChatInitializedListener): void;
}

// @public
export interface CallWithChatAdapterUiState {
    isLocalPreviewMicrophoneEnabled: boolean;
    page: CallCompositePage;
}

// @public
export interface CallWithChatClientState {
    alternateCallerId?: string;
    call?: CallState;
    chat?: ChatThreadClientState;
    deepNoiseSuppressionOnByDefault?: boolean;
    devices: DeviceManagerState;
    displayName: string | undefined;
    environmentInfo?: EnvironmentInfo;
    hideAttendeeNames?: boolean;
    hideDeepNoiseSuppressionButton?: boolean;
    isTeamsCall: boolean;
    isTeamsMeeting: boolean;
    latestCallErrors: AdapterErrors;
    latestCallNotifications: AdapterNotifications;
    latestChatErrors: AdapterErrors;
    onResolveDeepNoiseSuppressionDependency?: () => Promise<DeepNoiseSuppressionEffectDependency>;
    onResolveVideoEffectDependency?: () => Promise<VideoBackgroundEffectsDependency>;
    reactions?: ReactionResources;
    selectedVideoBackgroundEffect?: VideoBackgroundEffect;
    userId: CommunicationIdentifierKind;
    videoBackgroundImages?: VideoBackgroundImage[];
}

// @public
export const CallWithChatComposite: (props: CallWithChatCompositeProps) => JSX.Element;

// @public
export type CallWithChatCompositeIcons = {
    ChevronLeft?: JSX.Element;
    ControlBarChatButtonActive?: JSX.Element;
    ControlBarChatButtonInactive?: JSX.Element;
    ControlBarPeopleButton?: JSX.Element;
    Link?: JSX.Element;
    MoreDrawerMicrophones?: JSX.Element;
    MoreDrawerPeople?: JSX.Element;
    MoreDrawerSelectedMicrophone?: JSX.Element;
    MoreDrawerSelectedSpeaker?: JSX.Element;
    MoreDrawerSpeakers?: JSX.Element;
    ControlButtonCameraOff?: JSX.Element;
    ControlButtonCameraOn?: JSX.Element;
    ControlButtonEndCall?: JSX.Element;
    ControlButtonMicOff?: JSX.Element;
    ControlButtonMicOn?: JSX.Element;
    ControlButtonOptions?: JSX.Element;
    ControlButtonScreenShareStart?: JSX.Element;
    ControlButtonScreenShareStop?: JSX.Element;
    ControlButtonCameraProhibited?: JSX.Element;
    ControlButtonCameraProhibitedSmall?: JSX.Element;
    ControlButtonMicProhibited?: JSX.Element;
    ControlButtonMicProhibitedSmall?: JSX.Element;
    ErrorBarCallCameraAccessDenied?: JSX.Element;
    ErrorBarCallCameraAlreadyInUse?: JSX.Element;
    ErrorBarCallLocalVideoFreeze?: JSX.Element;
    ErrorBarCallMacOsCameraAccessDenied?: JSX.Element;
    ErrorBarCallMacOsMicrophoneAccessDenied?: JSX.Element;
    ErrorBarCallMicrophoneAccessDenied?: JSX.Element;
    ErrorBarCallMicrophoneMutedBySystem?: JSX.Element;
    ErrorBarCallMicrophoneUnmutedBySystem?: JSX.Element;
    ErrorBarCallNetworkQualityLow?: JSX.Element;
    ErrorBarCallNoMicrophoneFound?: JSX.Element;
    ErrorBarCallNoSpeakerFound?: JSX.Element;
    ErrorBarClear?: JSX.Element;
    HorizontalGalleryLeftButton?: JSX.Element;
    HorizontalGalleryRightButton?: JSX.Element;
    LobbyScreenConnectingToCall?: JSX.Element;
    LobbyScreenWaitingToBeAdmitted?: JSX.Element;
    LocalDeviceSettingsCamera?: JSX.Element;
    LocalDeviceSettingsMic?: JSX.Element;
    LocalDeviceSettingsSpeaker?: JSX.Element;
    LocalPreviewPlaceholder?: JSX.Element;
    Muted?: JSX.Element;
    NetworkReconnectIcon?: JSX.Element;
    NoticePageAccessDeniedTeamsMeeting?: JSX.Element;
    NoticePageJoinCallFailedDueToNoNetwork?: JSX.Element;
    NoticePageLeftCall?: JSX.Element;
    NoticePageRemovedFromCall?: JSX.Element;
    OptionsCamera?: JSX.Element;
    OptionsMic?: JSX.Element;
    OptionsSpeaker?: JSX.Element;
    ParticipantItemMicOff?: JSX.Element;
    ParticipantItemScreenShareStart?: JSX.Element;
    VideoTileMicOff?: JSX.Element;
    LocalCameraSwitch?: JSX.Element;
    PeoplePaneAddPerson?: JSX.Element;
    PeoplePaneOpenDialpad?: JSX.Element;
    DialpadStartCall?: JSX.Element;
    DefaultCustomButton?: JSX.Element;
    DtmfDialpadButton?: JSX.Element;
    EditBoxCancel?: JSX.Element;
    EditBoxSubmit?: JSX.Element;
    MessageDelivered?: JSX.Element;
    MessageEdit?: JSX.Element;
    MessageFailed?: JSX.Element;
    MessageRemove?: JSX.Element;
    MessageSeen?: JSX.Element;
    MessageSending?: JSX.Element;
    SendBoxSend?: JSX.Element;
    SendBoxSendHovered?: JSX.Element;
    SendBoxAttachFile?: JSX.Element;
    ParticipantItemOptions?: JSX.Element;
    ParticipantItemOptionsHovered?: JSX.Element;
    PeoplePaneMoreButton?: JSX.Element;
    StopAllSpotlightMenuButton?: JSX.Element;
};

// @public
export type CallWithChatCompositeLoaderProps = {
    userId: CommunicationUserIdentifier;
    credential: CommunicationTokenCredential;
    displayName: string;
    endpoint: string;
    locator: CallAndChatLocator;
    callAdapterOptions?: AzureCommunicationCallAdapterOptions;
    callWithChatCompositeOptions?: CallWithChatCompositeOptions;
};

// @public
export type CallWithChatCompositeOptions = {
    callControls?: boolean | CallWithChatControlOptions;
    remoteVideoTileMenuOptions?: RemoteVideoTileMenuOptions;
    localVideoTile?: boolean | LocalVideoTileOptions;
    galleryOptions?: {
        layout?: VideoGalleryLayout;
    };
    surveyOptions?: {
        disableSurvey?: boolean;
        onSurveyClosed?: (surveyState: 'sent' | 'skipped' | 'error', surveyError?: string) => void;
        onSurveySubmitted?: (callId: string, surveyId: string,
        submittedSurvey: CallSurvey,
        improvementSuggestions: CallSurveyImprovementSuggestions) => Promise<void>;
    };
    branding?: {
        logo?: {
            url: string;
            alt?: string;
            shape?: 'unset' | 'circle';
        };
        backgroundImage?: {
            url: string;
        };
    };
    spotlight?: {
        hideSpotlightButtons?: boolean;
    };
};

// @public
export interface CallWithChatCompositeProps extends BaseCompositeProps<CallWithChatCompositeIcons> {
    // (undocumented)
    adapter: CallWithChatAdapter;
    fluentTheme?: PartialTheme | Theme;
    formFactor?: 'desktop' | 'mobile';
    joinInvitationURL?: string;
    options?: CallWithChatCompositeOptions;
}

// @public
export interface CallWithChatCompositeStrings {
    breakoutRoomChatPaneTitle: string;
    chatButtonLabel: string;
    chatButtonNewMessageNotificationLabel: string;
    chatButtonTooltipClose: string;
    chatButtonTooltipClosedWithMessageCount: string;
    chatButtonTooltipOpen: string;
    chatContentSpinnerLabel: string;
    chatPaneTitle: string;
    copyInviteLinkActionedAriaLabel: string;
    copyInviteLinkButtonActionedLabel: string;
    copyInviteLinkButtonLabel: string;
    dialpadCloseModalButtonAriaLabel: string;
    dialpadModalAriaLabel: string;
    dialpadModalTitle: string;
    dialpadStartCallButtonLabel: string;
    dismissSidePaneButtonLabel?: string;
    dtmfDialpadPlaceholderText: string;
    moreDrawerAudioDeviceMenuTitle?: string;
    moreDrawerButtonLabel: string;
    moreDrawerButtonTooltip: string;
    moreDrawerCaptionLanguageMenuTitle: string;
    moreDrawerCaptionsMenuTitle: string;
    moreDrawerGalleryOptionsMenuTitle: string;
    moreDrawerMicrophoneMenuTitle: string;
    moreDrawerSpeakerMenuTitle: string;
    moreDrawerSpokenLanguageMenuTitle: string;
    openDialpadButtonLabel: string;
    openDtmfDialpadLabel: string;
    peopleButtonLabel: string;
    peopleButtonTooltipClose: string;
    peopleButtonTooltipCloseAriaLabel: string;
    peopleButtonTooltipOpen: string;
    peopleButtonTooltipOpenAriaLabel: string;
    peoplePaneAddPeopleButtonLabel: string;
    peoplePaneSubTitle: string;
    peoplePaneTitle: string;
    pictureInPictureTileAriaLabel: string;
    removeMenuLabel: string;
    returnToCallButtonAriaDescription?: string;
    returnToCallButtonAriaLabel?: string;
    selectedPeopleButtonLabel: string;
}

// @public
export interface CallWithChatControlOptions extends CommonCallControlOptions {
    chatButton?: boolean | {
        disabled: boolean;
    };
}

// @public
export type CallWithChatEvent = 'callError' | 'chatError' | 'callEnded' | 'isMutedChanged' | 'callIdChanged' | 'isLocalScreenSharingActiveChanged' | 'displayNameChanged' | 'isSpeakingChanged' | 'callParticipantsJoined' | 'callParticipantsLeft' | 'selectedMicrophoneChanged' | 'selectedSpeakerChanged' | 'isCaptionsActiveChanged' | 'captionsReceived' | 'isCaptionLanguageChanged' | 'isSpokenLanguageChanged' | 'capabilitiesChanged' | 'spotlightChanged' | 'breakoutRoomsUpdated' | 'messageReceived' | 'messageEdited' | 'messageDeleted' | 'messageSent' | 'messageRead' | 'chatParticipantsAdded' | 'chatParticipantsRemoved' | 'chatInitialized';

// @public
export const CameraButton: (props: CameraButtonProps) => JSX.Element;

// @public
export interface CameraButtonContextualMenuStyles extends IContextualMenuStyles {
    menuItemStyles?: IContextualMenuItemStyles;
}

// @public
export interface CameraButtonProps extends ControlBarButtonProps {
    cameras?: OptionsDevice[];
    enableDeviceSelectionMenu?: boolean;
    localVideoViewOptions?: VideoStreamOptions;
    onClickVideoEffects?: (showVideoEffects: boolean) => void;
    onSelectCamera?: (device: OptionsDevice) => Promise<void>;
    onToggleCamera?: (options?: VideoStreamOptions) => Promise<void>;
    selectedCamera?: OptionsDevice;
    strings?: Partial<CameraButtonStrings>;
    styles?: Partial<CameraButtonStyles>;
}

// @public
export type CameraButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    disabled: boolean;
    checked: boolean;
    cameras: VideoDeviceInfo[];
    selectedCamera?: VideoDeviceInfo;
};

// @public
export interface CameraButtonStrings {
    cameraActionTurnedOffAnnouncement?: string;
    cameraActionTurnedOnAnnouncement?: string;
    cameraButtonAriaDescription?: string;
    cameraButtonSplitRoleDescription?: string;
    cameraMenuTitle: string;
    cameraMenuTooltip: string;
    cameraPrimaryActionSplitButtonTitle?: string;
    offLabel: string;
    offSplitButtonAriaLabel?: string;
    offSplitButtonPrimaryActionCamera?: string;
    onLabel: string;
    onSplitButtonAriaLabel?: string;
    onSplitButtonPrimaryActionCamera?: string;
    tooltipDisabledContent?: string;
    tooltipOffContent?: string;
    tooltipOnContent?: string;
    tooltipVideoLoadingContent?: string;
    videoEffectsMenuItemTitle?: string;
}

// @public
export interface CameraButtonStyles extends ControlBarButtonStyles {
    menuStyles?: Partial<CameraButtonContextualMenuStyles>;
}

// @public
export type CancelEditCallback = (messageId: string) => void;

// @public
export type CapabilitiesChangedListener = (data: CapabilitiesChangeInfo) => void;

// @public
export interface CapabilitiesFeatureState {
    capabilities: ParticipantCapabilities;
    latestCapabilitiesChangeInfo: CapabilitiesChangeInfo;
}

// @public
export interface CapabilityChangedNotificationStrings {
    hideAttendeeNames?: {
        hideAttendeeNameAttendee?: string;
        hideAttendeeNamePresenter?: string;
    };
    shareScreen?: {
        lostDueToRoleChangeToAttendee?: string;
        grantedDueToRoleChangeToPresenter?: string;
    };
    turnVideoOn?: {
        lostDueToMeetingOption?: string;
        grantedDueToMeetingOption?: string;
    };
    unmuteMic?: {
        lostDueToMeetingOption?: string;
        grantedDueToMeetingOption?: string;
    };
}

// @public
export interface CaptionLanguageStrings {
    // (undocumented)
    'fr-ca': string;
    // (undocumented)
    'pt-pt': string;
    // (undocumented)
    'zh-Hans': string;
    // (undocumented)
    'zh-Hant': string;
    // (undocumented)
    ar: string;
    // (undocumented)
    cs: string;
    // (undocumented)
    cy: string;
    // (undocumented)
    da: string;
    // (undocumented)
    de: string;
    // (undocumented)
    el: string;
    // (undocumented)
    en: string;
    // (undocumented)
    es: string;
    // (undocumented)
    fi: string;
    // (undocumented)
    fr: string;
    // (undocumented)
    he: string;
    // (undocumented)
    hi: string;
    // (undocumented)
    hu: string;
    // (undocumented)
    it: string;
    // (undocumented)
    ja: string;
    // (undocumented)
    ko: string;
    // (undocumented)
    nb: string;
    // (undocumented)
    nl: string;
    // (undocumented)
    pl: string;
    // (undocumented)
    pt: string;
    // (undocumented)
    ro: string;
    // (undocumented)
    ru: string;
    // (undocumented)
    sk: string;
    // (undocumented)
    sv: string;
    // (undocumented)
    th: string;
    // (undocumented)
    tr: string;
    // (undocumented)
    uk: string;
    // (undocumented)
    vi: string;
}

// @public
export const CaptionsBanner: (props: CaptionsBannerProps) => JSX.Element;

// @public
export interface CaptionsBannerProps {
    captions: CaptionsInformation[];
    captionsOptions?: {
        height: 'full' | 'default';
    };
    formFactor?: 'default' | 'compact';
    isCaptionsOn?: boolean;
    onRenderAvatar?: OnRenderAvatarCallback;
    startCaptionsInProgress?: boolean;
    strings?: CaptionsBannerStrings;
}

// @public
export type CaptionsBannerSelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    captions: CaptionsInformation[];
    isCaptionsOn: boolean;
    startCaptionsInProgress: boolean;
};

// @public
export interface CaptionsBannerStrings {
    captionsBannerSpinnerText?: string;
}

// @public (undocumented)
export interface CaptionsCallFeatureState {
    captions: CaptionsInfo[];
    captionsKind: CaptionsKind;
    currentCaptionLanguage: string;
    currentSpokenLanguage: string;
    isCaptionsFeatureActive: boolean;
    startCaptionsInProgress: boolean;
    supportedCaptionLanguages: string[];
    supportedSpokenLanguages: string[];
}

// @public
export type CaptionSettingsSelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    supportedCaptionLanguages: SupportedCaptionLanguage[];
    currentCaptionLanguage: SupportedCaptionLanguage;
    supportedSpokenLanguages: SupportedSpokenLanguage[];
    currentSpokenLanguage: SupportedSpokenLanguage;
    isCaptionsFeatureActive: boolean;
};

// @public (undocumented)
export interface CaptionsInfo {
    captionLanguage?: string;
    captionText: string;
    lastUpdatedTimestamp?: Date;
    resultType: CaptionsResultType;
    speaker: CallerInfo;
    spokenLanguage: string;
    spokenText?: string;
    timestamp: Date;
}

// @public
export type CaptionsInformation = {
    id: string;
    displayName: string;
    captionText: string;
    userId?: string;
};

// @public
export type CaptionsOptions = {
    spokenLanguage: string;
};

// @public
export type CaptionsReceivedListener = (event: {
    captionsInfo: CaptionsInfo;
}) => void;

// @public
export const CaptionsSettingsModal: (props: CaptionsSettingsModalProps) => JSX.Element;

// @public
export interface CaptionsSettingsModalProps {
    captionLanguageStrings?: CaptionLanguageStrings;
    changeCaptionLanguage?: boolean;
    currentCaptionLanguage?: SupportedCaptionLanguage;
    currentSpokenLanguage: SupportedSpokenLanguage;
    isCaptionsFeatureActive?: boolean;
    onDismissCaptionsSettings?: () => void;
    onSetCaptionLanguage?: (language: SupportedCaptionLanguage) => Promise<void>;
    onSetSpokenLanguage: (language: SupportedSpokenLanguage) => Promise<void>;
    onStartCaptions: (options?: CaptionsOptions) => Promise<void>;
    showModal?: boolean;
    spokenLanguageStrings?: SpokenLanguageStrings;
    strings?: CaptionsSettingsModalStrings;
    supportedCaptionLanguages?: SupportedCaptionLanguage[];
    supportedSpokenLanguages: SupportedSpokenLanguage[];
}

// @public
export interface CaptionsSettingsModalStrings {
    captionsSettingsCancelButtonLabel?: string;
    captionsSettingsCaptionLanguageDropdownInfoText?: string;
    captionsSettingsCaptionLanguageDropdownLabel?: string;
    captionsSettingsCloseModalButtonAriaLabel?: string;
    captionsSettingsConfirmButtonLabel?: string;
    captionsSettingsModalAriaLabel?: string;
    captionsSettingsModalTitle?: string;
    captionsSettingsSpokenLanguageDropdownInfoText?: string;
    captionsSettingsSpokenLanguageDropdownLabel?: string;
}

// @public
export type ChatAdapter = ChatAdapterThreadManagement & AdapterState<ChatAdapterState> & Disposable_2 & ChatAdapterSubscribers;

// @public
export type ChatAdapterState = ChatAdapterUiState & ChatCompositeClientState;

// @public
export interface ChatAdapterSubscribers {
    off(event: 'messageReceived', listener: MessageReceivedListener): void;
    off(event: 'messageEdited', listener: MessageEditedListener): void;
    off(event: 'messageDeleted', listener: MessageDeletedListener): void;
    off(event: 'messageSent', listener: MessageSentListener): void;
    off(event: 'messageRead', listener: MessageReadListener): void;
    off(event: 'participantsAdded', listener: ParticipantsAddedListener): void;
    off(event: 'participantsRemoved', listener: ParticipantsRemovedListener): void;
    off(event: 'topicChanged', listener: TopicChangedListener): void;
    off(event: 'error', listener: (e: AdapterError) => void): void;
    on(event: 'messageReceived', listener: MessageReceivedListener): void;
    on(event: 'messageEdited', listener: MessageEditedListener): void;
    on(event: 'messageDeleted', listener: MessageDeletedListener): void;
    on(event: 'messageSent', listener: MessageSentListener): void;
    on(event: 'messageRead', listener: MessageReadListener): void;
    on(event: 'participantsAdded', listener: ParticipantsAddedListener): void;
    on(event: 'participantsRemoved', listener: ParticipantsRemovedListener): void;
    on(event: 'topicChanged', listener: TopicChangedListener): void;
    on(event: 'error', listener: (e: AdapterError) => void): void;
}

// @public
export interface ChatAdapterThreadManagement {
    deleteMessage(messageId: string): Promise<void>;
    downloadResourceToCache(resourceDetails: ResourceDetails): Promise<void>;
    fetchInitialData(): Promise<void>;
    loadPreviousChatMessages(messagesToLoad: number): Promise<boolean>;
    removeParticipant(userId: string): Promise<void>;
    removeResourceFromCache(resourceDetails: ResourceDetails): void;
    sendMessage(content: string, options?: SendMessageOptions): Promise<void>;
    sendReadReceipt(chatMessageId: string): Promise<void>;
    sendTypingIndicator(): Promise<void>;
    setTopic(topicName: string): Promise<void>;
    updateMessage(messageId: string, content: string, options?: Record<string, string>): Promise<void>;
}

// @public
export type ChatAdapterUiState = {
    error?: Error;
};

// @public
export type ChatAttachmentType = 'unknown' | 'image' | 'file';

// @public
export type ChatBaseSelectorProps = {
    threadId: string;
};

// @public
export const ChatClientProvider: (props: ChatClientProviderProps) => JSX.Element;

// @public
export type ChatClientProviderProps = {
    children: React_2.ReactNode;
    chatClient: StatefulChatClient;
};

// @public
export type ChatClientState = {
    userId: CommunicationIdentifierKind;
    displayName: string;
    threads: {
        [key: string]: ChatThreadClientState;
    };
    latestErrors: ChatErrors;
};

// @public
export const ChatComposite: (props: ChatCompositeProps) => JSX.Element;

// @public
export type ChatCompositeClientState = {
    userId: CommunicationIdentifierKind;
    displayName: string;
    thread: ChatThreadClientState;
    latestErrors: AdapterErrors;
};

// @public
export type ChatCompositeIcons = {
    EditBoxCancel?: JSX.Element;
    EditBoxSubmit?: JSX.Element;
    MessageDelivered?: JSX.Element;
    MessageEdit?: JSX.Element;
    MessageFailed?: JSX.Element;
    MessageRemove?: JSX.Element;
    MessageSeen?: JSX.Element;
    MessageSending?: JSX.Element;
    ParticipantItemOptions?: JSX.Element;
    ParticipantItemOptionsHovered?: JSX.Element;
    SendBoxSend?: JSX.Element;
    SendBoxSendHovered?: JSX.Element;
};

// @public
export type ChatCompositeLoaderProps = {
    userId: CommunicationUserIdentifier;
    credential: CommunicationTokenCredential;
    displayName?: string;
    endpoint: string;
    threadId: string;
    chatCompositeOptions?: ChatCompositeOptions;
};

// @public
export type ChatCompositeOptions = {
    errorBar?: boolean;
    topic?: boolean;
    autoFocus?: 'sendBoxTextField';
};

// @public
export interface ChatCompositeProps extends BaseCompositeProps<ChatCompositeIcons> {
    adapter: ChatAdapter;
    onRenderMessage?: (messageProps: MessageProps, defaultOnRender?: MessageRenderer) => JSX.Element;
    onRenderTypingIndicator?: (typingUsers: CommunicationParticipant[]) => JSX.Element;
    options?: ChatCompositeOptions;
}

// @public
export interface ChatCompositeStrings {
    chatListHeader: string;
}

// @public
export class ChatError extends Error {
    constructor(target: ChatErrorTarget, innerError: Error, timestamp?: Date);
    innerError: Error;
    target: ChatErrorTarget;
    timestamp: Date;
}

// @public
export type ChatErrorBarSelector = (state: ChatClientState, props: ChatBaseSelectorProps) => {
    activeErrorMessages: ActiveErrorMessage[];
};

// @public
export type ChatErrors = {
    [target in ChatErrorTarget]: ChatError;
};

// @public
export type ChatErrorTarget = 'ChatClient.createChatThread' | 'ChatClient.deleteChatThread' | 'ChatClient.getChatThreadClient' | 'ChatClient.listChatThreads' | 'ChatClient.off' | 'ChatClient.on' | 'ChatClient.startRealtimeNotifications' | 'ChatClient.stopRealtimeNotifications' | 'ChatThreadClient.addParticipants' | 'ChatThreadClient.deleteMessage' | 'ChatThreadClient.getMessage' | 'ChatThreadClient.getProperties' | 'ChatThreadClient.listMessages' | 'ChatThreadClient.listParticipants' | 'ChatThreadClient.listReadReceipts' | 'ChatThreadClient.removeParticipant' | 'ChatThreadClient.sendMessage' | 'ChatThreadClient.sendReadReceipt' | 'ChatThreadClient.sendTypingNotification' | 'ChatThreadClient.updateMessage' | 'ChatThreadClient.updateTopic';

// @public
export type ChatHandlers = {
    onSendMessage: (content: string, options?: SendMessageOptions) => Promise<void>;
    onMessageSeen: (chatMessageId: string) => Promise<void>;
    onTyping: () => Promise<void>;
    onRemoveParticipant: (userId: string) => Promise<void>;
    updateThreadTopicName: (topicName: string) => Promise<void>;
    onLoadPreviousChatMessages: (messagesToLoad: number) => Promise<boolean>;
    onUpdateMessage: (messageId: string, content: string) => Promise<void>;
    onDeleteMessage: (messageId: string) => Promise<void>;
};

// @public
export type ChatInitializedListener = (event: {
    adapter: CallWithChatAdapter;
}) => void;

// @public
export interface ChatMessage extends MessageCommon {
    // (undocumented)
    attached?: MessageAttachedStatus;
    attachments?: AttachmentMetadata[];
    // (undocumented)
    clientMessageId?: string;
    // (undocumented)
    content?: string;
    // (undocumented)
    contentType: MessageContentType;
    // (undocumented)
    deletedOn?: Date;
    // (undocumented)
    editedOn?: Date;
    // (undocumented)
    failureReason?: string;
    // (undocumented)
    messageType: 'chat';
    metadata?: Record<string, string>;
    // (undocumented)
    mine?: boolean;
    // (undocumented)
    senderDisplayName?: string;
    // (undocumented)
    senderId?: string;
    // (undocumented)
    status?: MessageStatus;
}

// @public
export type ChatMessageWithStatus = ChatMessage_2 & {
    clientMessageId?: string;
    status: MessageStatus;
    resourceCache?: Record<string, ResourceFetchResult>;
};

// @public
export type ChatParticipantListSelector = (state: ChatClientState, props: ChatBaseSelectorProps) => {
    myUserId: string;
    participants: ParticipantListParticipant[];
};

// @public
export type ChatReturnProps<Component extends (props: any) => JSX.Element> = GetChatSelector<Component> extends (state: ChatClientState, props: any) => any ? ReturnType<GetChatSelector<Component>> & Common<ChatHandlers, Parameters<Component>[0]> : never;

// @public
export const ChatThreadClientProvider: (props: ChatThreadClientProviderProps) => JSX.Element;

// @public
export type ChatThreadClientProviderProps = {
    children: React_2.ReactNode;
    chatThreadClient: ChatThreadClient;
};

// @public
export type ChatThreadClientState = {
    chatMessages: {
        [key: string]: ChatMessageWithStatus;
    };
    participants: {
        [key: string]: ChatParticipant;
    };
    threadId: string;
    properties?: ChatThreadProperties;
    readReceipts: ChatMessageReadReceipt[];
    typingIndicators: TypingIndicatorReceivedEvent[];
    latestReadTime: Date;
};

// @public
export type ChatThreadProperties = {
    topic?: string;
};

// @public
export type ClientState = CallClientState & ChatClientState;

// @public
export type Common<A, B> = Pick<A, CommonProperties<A, B>>;

// @public
export interface CommonCallAdapter extends AdapterState<CallAdapterState>, Disposable_2, CallAdapterCallOperations, CallAdapterDeviceManagement, CallAdapterSubscribers {
    // @deprecated
    joinCall(microphoneOn?: boolean): void;
    joinCall(options?: JoinCallOptions): void;
    startCall(participants: string[], options?: StartCallOptions): void;
    startCall(participants: StartCallIdentifier[], options?: StartCallOptions): void;
}

// @public
export type CommonCallAdapterOptions = {
    videoBackgroundOptions?: {
        videoBackgroundImages?: VideoBackgroundImage[];
        onResolveDependency?: () => Promise<VideoBackgroundEffectsDependency>;
    };
    deepNoiseSuppressionOptions?: {
        onResolveDependency?: () => Promise<DeepNoiseSuppressionEffectDependency>;
        deepNoiseSuppressionOnByDefault?: boolean;
        hideDeepNoiseSuppressionButton?: boolean;
    };
    onFetchProfile?: OnFetchProfileCallback;
    callingSounds?: CallingSounds;
    reactionResources?: ReactionResources;
    alternateCallerId?: string;
};

// @public
export type CommonCallControlOptions = {
    displayType?: CallControlDisplayType;
    cameraButton?: boolean | {
        disabled: boolean;
    };
    endCallButton?: boolean | {
        hangUpForEveryone?: false | 'endCallOptions';
        disableEndCallModal?: boolean;
    };
    microphoneButton?: boolean | {
        disabled: boolean;
    };
    devicesButton?: boolean | {
        disabled: boolean;
    };
    participantsButton?: boolean | {
        disabled: boolean;
    };
    screenShareButton?: boolean | {
        disabled: boolean;
    };
    moreButton?: boolean;
    raiseHandButton?: boolean | {
        disabled: boolean;
    };
    reactionButton?: boolean | {
        disabled: boolean;
    };
    onFetchCustomButtonProps?: CustomCallControlButtonCallback[];
    holdButton?: boolean | {
        disabled: boolean;
    };
    peopleButton?: boolean | {
        disabled: boolean;
    };
    dtmfDialerButton?: boolean | {
        disabled: boolean;
    };
    exitSpotlightButton?: boolean;
    captionsButton?: boolean;
    galleryControlsButton?: boolean;
    teamsMeetingPhoneCallButton?: boolean;
};

// @public
export interface CommonCallingHandlers {
    // (undocumented)
    onAcceptCall: (incomingCallId: string, useVideo?: boolean) => Promise<void>;
    // (undocumented)
    onAddParticipant(participant: CommunicationUserIdentifier): Promise<void>;
    // (undocumented)
    onAddParticipant(participant: PhoneNumberIdentifier, options: AddPhoneNumberOptions): Promise<void>;
    // (undocumented)
    onBlurVideoBackground: (backgroundBlurConfig?: BackgroundBlurConfig) => Promise<void>;
    // (undocumented)
    onCreateLocalStreamView: (options?: VideoStreamOptions) => Promise<void | CreateVideoStreamViewResult>;
    // (undocumented)
    onCreateRemoteStreamView: (userId: string, options?: VideoStreamOptions) => Promise<void | CreateVideoStreamViewResult>;
    // (undocumented)
    onDisposeLocalScreenShareStreamView: () => Promise<void>;
    // (undocumented)
    onDisposeLocalStreamView: () => Promise<void>;
    // (undocumented)
    onDisposeRemoteScreenShareStreamView: (userId: string) => Promise<void>;
    // @deprecated (undocumented)
    onDisposeRemoteStreamView: (userId: string) => Promise<void>;
    // (undocumented)
    onDisposeRemoteVideoStreamView: (userId: string) => Promise<void>;
    onForbidAudio?: (userIds: string[]) => Promise<void>;
    onForbidOthersAudio?: () => Promise<void>;
    onForbidOthersVideo?: () => Promise<void>;
    onForbidVideo?: (userIds: string[]) => Promise<void>;
    // (undocumented)
    onHangUp: (forEveryone?: boolean) => Promise<void>;
    // (undocumented)
    onLowerHand: () => Promise<void>;
    // (undocumented)
    onMuteAllRemoteParticipants: () => Promise<void>;
    // (undocumented)
    onMuteParticipant: (userId: string) => Promise<void>;
    onPermitAudio?: (userIds: string[]) => Promise<void>;
    onPermitOthersAudio?: () => Promise<void>;
    onPermitOthersVideo?: () => Promise<void>;
    onPermitVideo?: (userIds: string[]) => Promise<void>;
    // (undocumented)
    onRaiseHand: () => Promise<void>;
    // (undocumented)
    onReactionClick: (reaction: Reaction_2) => Promise<void>;
    // (undocumented)
    onRejectCall: (incomingCallId: string) => Promise<void>;
    // (undocumented)
    onRemoveParticipant(userId: string): Promise<void>;
    // (undocumented)
    onRemoveParticipant(participant: CommunicationIdentifier): Promise<void>;
    // (undocumented)
    onRemoveVideoBackgroundEffects: () => Promise<void>;
    // (undocumented)
    onReplaceVideoBackground: (backgroundReplacementConfig: BackgroundReplacementConfig) => Promise<void>;
    // (undocumented)
    onSelectCamera: (device: VideoDeviceInfo, options?: VideoStreamOptions) => Promise<void>;
    // (undocumented)
    onSelectMicrophone: (device: AudioDeviceInfo) => Promise<void>;
    // (undocumented)
    onSelectSpeaker: (device: AudioDeviceInfo) => Promise<void>;
    // (undocumented)
    onSendDtmfTone: (dtmfTone: DtmfTone_2) => Promise<void>;
    // (undocumented)
    onSetCaptionLanguage: (language: string) => Promise<void>;
    // (undocumented)
    onSetSpokenLanguage: (language: string) => Promise<void>;
    // (undocumented)
    onStartCall: (participants: CommunicationIdentifier[], options?: StartCallOptions) => void;
    // (undocumented)
    onStartCaptions: (options?: CaptionsOptions) => Promise<void>;
    // (undocumented)
    onStartLocalVideo: () => Promise<void>;
    // (undocumented)
    onStartNoiseSuppressionEffect: () => Promise<void>;
    // (undocumented)
    onStartScreenShare: () => Promise<void>;
    // (undocumented)
    onStartSpotlight: (userIds?: string[]) => Promise<void>;
    // (undocumented)
    onStopAllSpotlight: () => Promise<void>;
    // (undocumented)
    onStopCaptions: () => Promise<void>;
    // (undocumented)
    onStopNoiseSuppressionEffect: () => Promise<void>;
    // (undocumented)
    onStopScreenShare: () => Promise<void>;
    // (undocumented)
    onStopSpotlight: (userIds?: string[]) => Promise<void>;
    // (undocumented)
    onSubmitSurvey(survey: CallSurvey): Promise<CallSurveyResponse | undefined>;
    // (undocumented)
    onToggleCamera: (options?: VideoStreamOptions) => Promise<void>;
    // (undocumented)
    onToggleHold: () => Promise<void>;
    // (undocumented)
    onToggleMicrophone: () => Promise<void>;
    // (undocumented)
    onToggleRaiseHand: () => Promise<void>;
    // (undocumented)
    onToggleScreenShare: () => Promise<void>;
}

// @public
export type CommonProperties<A, B> = {
    [P in keyof A & keyof B]: A[P] extends B[P] ? P : never;
}[keyof A & keyof B];

// @public
export type CommunicationParticipant = {
    userId: string;
    displayName?: string;
};

// @public
export const COMPONENT_LOCALE_AR_SA: ComponentLocale;

// @public
export const COMPONENT_LOCALE_CS_CZ: ComponentLocale;

// @public
export const COMPONENT_LOCALE_CY_GB: ComponentLocale;

// @public
export const COMPONENT_LOCALE_DE_DE: ComponentLocale;

// @public
export const COMPONENT_LOCALE_EN_GB: ComponentLocale;

// @public
export const COMPONENT_LOCALE_EN_US: ComponentLocale;

// @public
export const COMPONENT_LOCALE_ES_ES: ComponentLocale;

// @public
export const COMPONENT_LOCALE_ES_MX: ComponentLocale;

// @public
export const COMPONENT_LOCALE_FI_FI: ComponentLocale;

// @public
export const COMPONENT_LOCALE_FR_CA: ComponentLocale;

// @public
export const COMPONENT_LOCALE_FR_FR: ComponentLocale;

// @public
export const COMPONENT_LOCALE_HE_IL: ComponentLocale;

// @public
export const COMPONENT_LOCALE_IT_IT: ComponentLocale;

// @public
export const COMPONENT_LOCALE_JA_JP: ComponentLocale;

// @public
export const COMPONENT_LOCALE_KO_KR: ComponentLocale;

// @public
export const COMPONENT_LOCALE_NB_NO: ComponentLocale;

// @public
export const COMPONENT_LOCALE_NL_NL: ComponentLocale;

// @public
export const COMPONENT_LOCALE_PL_PL: ComponentLocale;

// @public
export const COMPONENT_LOCALE_PT_BR: ComponentLocale;

// @public
export const COMPONENT_LOCALE_RU_RU: ComponentLocale;

// @public
export const COMPONENT_LOCALE_SV_SE: ComponentLocale;

// @public
export const COMPONENT_LOCALE_TR_TR: ComponentLocale;

// @public
export const COMPONENT_LOCALE_ZH_CN: ComponentLocale;

// @public
export const COMPONENT_LOCALE_ZH_TW: ComponentLocale;

// @public
export type ComponentIcons = Record<keyof typeof DEFAULT_COMPONENT_ICONS, JSX.Element>;

// @public
export interface ComponentLocale {
    strings: ComponentStrings;
}

// @public
export type ComponentProps<Component extends (props: any) => JSX.Element> = ChatReturnProps<Component> extends never ? CallingReturnProps<Component> extends never ? undefined : CallingReturnProps<Component> : ChatReturnProps<Component>;

// @public
export type ComponentSlotStyle = Omit<IRawStyle, 'animation'>;

// @public
export interface ComponentStrings {
    cameraButton: CameraButtonStrings;
    captionLanguages: CaptionLanguageStrings;
    captionsBanner: CaptionsBannerStrings;
    captionsSettingsModal: CaptionsSettingsModalStrings;
    devicesButton: DevicesButtonStrings;
    dialpad: DialpadStrings;
    endCallButton: EndCallButtonStrings;
    errorBar: ErrorBarStrings;
    holdButton: HoldButtonStrings;
    imageOverlay: ImageOverlayStrings;
    // (undocumented)
    IncomingCallNotification: IncomingCallNotificationStrings;
    meetingConferencePhoneInfo: MeetingConferencePhoneInfoModalStrings;
    messageStatusIndicator: MessageStatusIndicatorStrings;
    messageThread: MessageThreadStrings;
    microphoneButton: MicrophoneButtonStrings;
    notificationStack: NotificationStackStrings;
    participantItem: ParticipantItemStrings;
    participantsButton: ParticipantsButtonStrings;
    raiseHandButton: RaiseHandButtonStrings;
    reactionButton: ReactionButtonStrings;
    screenShareButton: ScreenShareButtonStrings;
    sendBox: SendBoxStrings;
    spokenLanguages: SpokenLanguageStrings;
    startCaptionsButton: StartCaptionsButtonStrings;
    typingIndicator: TypingIndicatorStrings;
    verticalGallery: VerticalGalleryStrings;
    videoGallery: VideoGalleryStrings;
    videoTile: VideoTileStrings;
}

// @public
export const COMPOSITE_LOCALE_AR_SA: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_CS_CZ: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_CY_GB: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_DE_DE: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_EN_GB: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_EN_US: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_ES_ES: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_ES_MX: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_FI_FI: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_FR_CA: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_FR_FR: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_HE_IL: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_IT_IT: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_JA_JP: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_KO_KR: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_NB_NO: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_NL_NL: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_PL_PL: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_PT_BR: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_RU_RU: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_SV_SE: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_TR_TR: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_ZH_CN: CompositeLocale;

// @public
export const COMPOSITE_LOCALE_ZH_TW: CompositeLocale;

// @public
export const COMPOSITE_ONLY_ICONS: CompositeIcons;

// @public
export type CompositeIcons = ChatCompositeIcons & CallCompositeIcons & CallWithChatCompositeIcons;

// @public
export interface CompositeLocale {
    component: ComponentLocale;
    strings: CompositeStrings;
}

// @public
export interface CompositeStrings {
    call: CallCompositeStrings;
    callWithChat: CallWithChatCompositeStrings;
    chat: ChatCompositeStrings;
}

// @public
export interface ConferencePhoneInfo {
    city?: string;
    conferenceId: string;
    country?: string;
    isTollFree: boolean;
    phoneNumber: string;
}

// @public
export interface ContentSystemMessage extends SystemMessageCommon {
    // (undocumented)
    content: string;
    // (undocumented)
    systemMessageType: 'content';
}

// @public
export const ControlBar: (props: ControlBarProps) => JSX.Element;

// @public
export const ControlBarButton: (props: ControlBarButtonProps) => JSX.Element;

// @public
export interface ControlBarButtonProps extends IButtonProps {
    disableTooltip?: boolean;
    labelKey?: string;
    onRenderOffIcon?: IRenderFunction<IButtonProps>;
    onRenderOnIcon?: IRenderFunction<IButtonProps>;
    showLabel?: boolean;
    strings?: ControlBarButtonStrings;
    styles?: ControlBarButtonStyles;
    tooltipId?: string;
}

// @public
export interface ControlBarButtonStrings {
    label?: string;
    offLabel?: string;
    onLabel?: string;
    tooltipContent?: string;
    tooltipDisabledContent?: string;
    tooltipOffContent?: string;
    tooltipOnContent?: string;
}

// @public
export type ControlBarButtonStyles = IButtonStyles;

// @public
export type ControlBarLayout = 'horizontal' | 'vertical' | 'dockedTop' | 'dockedBottom' | 'dockedLeft' | 'dockedRight' | 'floatingTop' | 'floatingBottom' | 'floatingLeft' | 'floatingRight';

// @public
export interface ControlBarProps {
    children?: React_2.ReactNode;
    layout?: ControlBarLayout;
    styles?: BaseCustomStyles;
}

// @public
export function createAzureCommunicationCallAdapter(args: AzureCommunicationCallAdapterArgs): Promise<CallAdapter>;

// @public
export function createAzureCommunicationCallAdapter(args: AzureCommunicationOutboundCallAdapterArgs): Promise<CallAdapter>;

// @public
export function createAzureCommunicationCallAdapterFromClient(callClient: StatefulCallClient, callAgent: CallAgent, targetCallees: StartCallIdentifier[], options?: AzureCommunicationCallAdapterOptions): Promise<CallAdapter>;

// @public
export function createAzureCommunicationCallAdapterFromClient(callClient: StatefulCallClient, callAgent: CallAgent, locator: CallAdapterLocator, options?: AzureCommunicationCallAdapterOptions): Promise<CallAdapter>;

// @public
export const createAzureCommunicationCallWithChatAdapter: ({ userId, displayName, credential, endpoint, locator, alternateCallerId, callAdapterOptions }: AzureCommunicationCallWithChatAdapterArgs) => Promise<CallWithChatAdapter>;

// @public
export const createAzureCommunicationCallWithChatAdapterFromClients: ({ callClient, callAgent, callLocator, chatClient, chatThreadClient, callAdapterOptions }: AzureCommunicationCallWithChatAdapterFromClientArgs) => Promise<CallWithChatAdapter>;

// @public
export const createAzureCommunicationChatAdapter: ({ endpoint: endpointUrl, userId, displayName, credential, threadId }: AzureCommunicationChatAdapterArgs) => Promise<ChatAdapter>;

// @public
export function createAzureCommunicationChatAdapterFromClient(chatClient: StatefulChatClient, chatThreadClient: ChatThreadClient): Promise<ChatAdapter>;

// @public
export type CreateDefaultCallingHandlers = (callClient: StatefulCallClient, callAgent: CallAgent | undefined, deviceManager: StatefulDeviceManager | undefined, call: Call | undefined, options?: CallingHandlersOptions) => CallingHandlers;

// @public
export const createDefaultCallingHandlers: CreateDefaultCallingHandlers;

// @public
export const createDefaultChatHandlers: (chatClient: StatefulChatClient, chatThreadClient: ChatThreadClient) => ChatHandlers;

// @public
export const createDefaultTeamsCallingHandlers: (callClient: StatefulCallClient, callAgent?: TeamsCallAgent, deviceManager?: StatefulDeviceManager, call?: TeamsCall, options?: {
    onResolveVideoBackgroundEffectsDependency?: () => Promise<VideoBackgroundEffectsDependency>;
    onResolveDeepNoiseSuppressionDependency?: () => Promise<DeepNoiseSuppressionEffectDependency>;
}) => TeamsCallingHandlers;

// @public
export const createStatefulCallClient: (args: StatefulCallClientArgs, options?: StatefulCallClientOptions) => StatefulCallClient;

// @public
export const createStatefulChatClient: (args: StatefulChatClientArgs, options?: StatefulChatClientOptions) => StatefulChatClient;

// @public (undocumented)
export const createTeamsCallAdapter: (args: TeamsCallAdapterArgs) => Promise<TeamsCallAdapter>;

// @public
export const createTeamsCallAdapterFromClient: (callClient: StatefulCallClient, callAgent: TeamsCallAgent, locator: CallAdapterLocator, options?: TeamsAdapterOptions) => Promise<TeamsCallAdapter>;

// @public
export interface CreateVideoStreamViewResult {
    view: {
        updateScalingMode: (scalingMode: ViewScalingMode) => Promise<void>;
    };
}

// @public
export type CreateViewResult = {
    renderer: VideoStreamRenderer;
    view: VideoStreamRendererView;
};

// @public
export type CustomAvatarOptions = {
    coinSize?: number;
    hidePersonaDetails?: boolean;
    initialsTextColor?: string;
    noVideoAvailableAriaLabel?: string;
    presence?: PersonaPresence;
    size?: PersonaSize;
    styles?: IStyleFunctionOrObject<IPersonaStyleProps, IPersonaStyles>;
    text?: string;
    participantState?: ParticipantState;
    showUnknownPersonaCoin?: boolean;
};

// @public
export type CustomCallControlButtonCallback = (args: CustomCallControlButtonCallbackArgs) => CustomCallControlButtonProps;

// @public
export interface CustomCallControlButtonCallbackArgs {
    displayType?: CallControlDisplayType;
}

// @public
export type CustomCallControlButtonPlacement = 'primary' | 'overflow' | 'secondary';

// @public
export interface CustomCallControlButtonProps {
    disabled?: boolean;
    iconName?: string;
    id?: string;
    onItemClick?: () => void;
    placement: CustomCallControlButtonPlacement;
    showLabel?: boolean;
    strings?: CustomCallControlButtonStrings;
}

// @public
export interface CustomCallControlButtonStrings {
    ariaDescription?: string;
    ariaLabel?: string;
    label?: string;
    tooltipContent?: string;
}

// @public
export interface CustomMessage extends MessageCommon {
    // (undocumented)
    content: string;
    // (undocumented)
    messageType: 'custom';
}

// @public
export const darkTheme: PartialTheme & CallingTheme;

// @public
export type DeclarativeCallAgent = CallAgent & IncomingCallManagement;

// @public
export type DeclarativeTeamsCallAgent = TeamsCallAgent & TeamsIncomingCallManagement;

// @public
export type DeepNoiseSuppressionEffectDependency = {
    deepNoiseSuppressionEffect: AudioEffectsStartConfig;
};

// @public
export const DEFAULT_COMPONENT_ICONS: {
    ChatMessageOptions: React_2.JSX.Element;
    ControlButtonCameraOff: React_2.JSX.Element;
    ControlButtonCameraOn: React_2.JSX.Element;
    ControlButtonEndCall: React_2.JSX.Element;
    ControlButtonMicOff: React_2.JSX.Element;
    ControlButtonMicOn: React_2.JSX.Element;
    ControlButtonOptions: React_2.JSX.Element;
    ControlButtonParticipants: React_2.JSX.Element;
    ControlButtonParticipantsContextualMenuItem: React_2.JSX.Element;
    ControlButtonScreenShareStart: React_2.JSX.Element;
    ControlButtonScreenShareStop: React_2.JSX.Element;
    ControlButtonRaiseHand: React_2.JSX.Element;
    ControlButtonLowerHand: React_2.JSX.Element;
    ControlButtonMicProhibited: React_2.JSX.Element;
    ControlButtonMicProhibitedSmall: React_2.JSX.Element;
    ControlButtonCameraProhibited: React_2.JSX.Element;
    ControlButtonCameraProhibitedSmall: React_2.JSX.Element;
    RaiseHandContextualMenuItem: React_2.JSX.Element;
    LowerHandContextualMenuItem: React_2.JSX.Element;
    ReactionButtonIcon: React_2.JSX.Element;
    OpenAttachment: React_2.JSX.Element;
    EditBoxCancel: React_2.JSX.Element;
    EditBoxSubmit: React_2.JSX.Element;
    ErrorBarCallCameraAccessDenied: React_2.JSX.Element;
    ErrorBarCallCameraAlreadyInUse: React_2.JSX.Element;
    ErrorBarCallLocalVideoFreeze: React_2.JSX.Element;
    ErrorBarCallMacOsCameraAccessDenied: React_2.JSX.Element;
    ErrorBarCallMacOsMicrophoneAccessDenied: React_2.JSX.Element;
    ErrorBarCallMicrophoneAccessDenied: React_2.JSX.Element;
    ErrorBarCallMicrophoneMutedBySystem: React_2.JSX.Element;
    ErrorBarCallMicrophoneUnmutedBySystem: React_2.JSX.Element;
    ErrorBarCallNetworkQualityLow: React_2.JSX.Element;
    ErrorBarCallNoMicrophoneFound: React_2.JSX.Element;
    ErrorBarCallNoSpeakerFound: React_2.JSX.Element;
    ErrorBarClear: React_2.JSX.Element;
    ErrorBarCallVideoRecoveredBySystem: React_2.JSX.Element;
    ErrorBarCallVideoStoppedBySystem: React_2.JSX.Element;
    ErrorBarMutedByRemoteParticipant: React_2.JSX.Element;
    NotificationBarRecording: React_2.JSX.Element;
    NotificationBarBreakoutRoomOpened: React_2.JSX.Element;
    NotificationBarBreakoutRoomPromptJoin: React_2.JSX.Element;
    NotificationBarBreakoutRoomChanged: React_2.JSX.Element;
    NotificationBarBreakoutRoomJoined: React_2.JSX.Element;
    NotificationBarBreakoutRoomClosingSoon: React_2.JSX.Element;
    NotificationBarBreakoutRoomClosed: React_2.JSX.Element;
    HorizontalGalleryLeftButton: React_2.JSX.Element;
    HorizontalGalleryRightButton: React_2.JSX.Element;
    MessageDelivered: React_2.JSX.Element;
    MessageEdit: React_2.JSX.Element;
    MessageFailed: React_2.JSX.Element;
    MessageRemove: React_2.JSX.Element;
    MessageResend: React_2.JSX.Element;
    MessageSeen: React_2.JSX.Element;
    MessageSending: React_2.JSX.Element;
    OptionsCamera: React_2.JSX.Element;
    OptionsMic: React_2.JSX.Element;
    OptionsSpeaker: React_2.JSX.Element;
    ParticipantItemMicOff: React_2.JSX.Element;
    ParticipantItemOptions: React_2.JSX.Element;
    ParticipantItemOptionsHovered: React_2.JSX.Element;
    ParticipantItemScreenShareStart: React_2.JSX.Element;
    ParticipantItemSpotlighted: React_2.JSX.Element;
    HoldCallContextualMenuItem: React_2.JSX.Element;
    HoldCallButton: React_2.JSX.Element;
    ResumeCall: React_2.JSX.Element;
    SendBoxSend: React_2.JSX.Element;
    SendBoxSendHovered: React_2.JSX.Element;
    VideoTileMicOff: React_2.JSX.Element;
    VideoTileCameraOff: React_2.JSX.Element;
    DialpadBackspace: React_2.JSX.Element;
    VideoTilePinned: React_2.JSX.Element;
    ParticipantItemPinned: React_2.JSX.Element;
    VideoTileMoreOptions: React_2.JSX.Element;
    VideoTileScaleFit: React_2.JSX.Element;
    VideoTileScaleFill: React_2.JSX.Element;
    PinParticipant: React_2.JSX.Element;
    UnpinParticipant: React_2.JSX.Element;
    SplitButtonPrimaryActionCameraOn: React_2.JSX.Element;
    SplitButtonPrimaryActionCameraOff: React_2.JSX.Element;
    SplitButtonPrimaryActionMicUnmuted: React_2.JSX.Element;
    SplitButtonPrimaryActionMicMuted: React_2.JSX.Element;
    VerticalGalleryLeftButton: React_2.JSX.Element;
    VerticalGalleryRightButton: React_2.JSX.Element;
    ControlButtonVideoEffectsOption: React_2.JSX.Element;
    ConfigurationScreenVideoEffectsButton: React_2.JSX.Element;
    CaptionsIcon: React_2.JSX.Element;
    CaptionsOffIcon: React_2.JSX.Element;
    CaptionsSettingsIcon: React_2.JSX.Element;
    ChangeSpokenLanguageIcon: React_2.JSX.Element;
    ChangeCaptionLanguageIcon: React_2.JSX.Element;
    ContextMenuCameraIcon: React_2.JSX.Element;
    ContextMenuMicIcon: React_2.JSX.Element;
    ContextMenuSpeakerIcon: React_2.JSX.Element;
    ContextMenuRemoveParticipant: React_2.JSX.Element;
    SurveyStarIcon: React_2.JSX.Element;
    SurveyStarIconFilled: React_2.JSX.Element;
    StartSpotlightContextualMenuItem: React_2.JSX.Element;
    StopSpotlightContextualMenuItem: React_2.JSX.Element;
    VideoTileSpotlighted: React_2.JSX.Element;
    ContextualMenuMicMutedIcon: React_2.JSX.Element;
    IncomingCallNotificationRejectIcon: React_2.JSX.Element;
    IncomingCallNotificationAcceptIcon: React_2.JSX.Element;
    IncomingCallNotificationAcceptWithVideoIcon: React_2.JSX.Element;
};

// @public
export const DEFAULT_COMPOSITE_ICONS: {
    EditBoxCancel: JSX.Element;
    EditBoxSubmit: JSX.Element;
    MessageDelivered: JSX.Element;
    MessageEdit: JSX.Element;
    MessageFailed: JSX.Element;
    MessageRemove: JSX.Element;
    MessageSeen: JSX.Element;
    MessageSending: JSX.Element;
    ParticipantItemOptions: JSX.Element;
    ParticipantItemOptionsHovered: JSX.Element;
    SendBoxSend: JSX.Element;
    SendBoxSendHovered: JSX.Element;
    ControlBarPeopleButton?: JSX.Element | undefined;
    ControlButtonCameraOff: JSX.Element;
    ControlButtonCameraOn: JSX.Element;
    ControlButtonEndCall: JSX.Element;
    ControlButtonMicOff: JSX.Element;
    ControlButtonMicOn: JSX.Element;
    ControlButtonOptions: JSX.Element;
    ControlButtonParticipants: JSX.Element;
    ControlButtonScreenShareStart: JSX.Element;
    ControlButtonScreenShareStop: JSX.Element;
    ControlButtonCameraProhibited: JSX.Element;
    ControlButtonCameraProhibitedSmall: JSX.Element;
    ControlButtonMicProhibited: JSX.Element;
    ControlButtonMicProhibitedSmall: JSX.Element;
    ControlButtonRaiseHand: JSX.Element;
    ControlButtonLowerHand: JSX.Element;
    ControlButtonExitSpotlight?: JSX.Element | undefined;
    RaiseHandContextualMenuItem: JSX.Element;
    ReactionContextualMenuItem?: JSX.Element | undefined;
    LowerHandContextualMenuItem: JSX.Element;
    ReactionButtonIcon: JSX.Element;
    ErrorBarCallCameraAccessDenied: JSX.Element;
    ErrorBarCallCameraAlreadyInUse: JSX.Element;
    ErrorBarCallLocalVideoFreeze: JSX.Element;
    ErrorBarCallMacOsCameraAccessDenied: JSX.Element;
    ErrorBarCallMacOsMicrophoneAccessDenied: JSX.Element;
    ErrorBarCallMicrophoneAccessDenied: JSX.Element;
    ErrorBarCallMicrophoneMutedBySystem: JSX.Element;
    ErrorBarCallMicrophoneUnmutedBySystem: JSX.Element;
    ErrorBarCallNetworkQualityLow: JSX.Element;
    ErrorBarCallNoMicrophoneFound: JSX.Element;
    ErrorBarCallNoSpeakerFound: JSX.Element;
    ErrorBarClear: JSX.Element;
    HorizontalGalleryLeftButton: JSX.Element;
    HorizontalGalleryRightButton: JSX.Element;
    LobbyScreenConnectingToCall?: JSX.Element | undefined;
    LobbyScreenWaitingToBeAdmitted?: JSX.Element | undefined;
    LocalDeviceSettingsCamera?: JSX.Element | undefined;
    LocalDeviceSettingsMic?: JSX.Element | undefined;
    LocalDeviceSettingsSpeaker?: JSX.Element | undefined;
    LocalPreviewPlaceholder?: JSX.Element | undefined;
    Muted?: JSX.Element | undefined;
    NetworkReconnectIcon?: JSX.Element | undefined;
    NoticePageAccessDeniedTeamsMeeting?: JSX.Element | undefined;
    NoticePageJoinCallFailedDueToNoNetwork?: JSX.Element | undefined;
    NoticePageLeftCall?: JSX.Element | undefined;
    NoticePageRemovedFromCall?: JSX.Element | undefined;
    NoticePageCallRejected?: JSX.Element | undefined;
    NoticePageNotInvitedToRoom?: JSX.Element | undefined;
    NoticePageRoomNotFound?: JSX.Element | undefined;
    NoticePageRoomNotValid?: JSX.Element | undefined;
    NoticePageCallTimeout?: JSX.Element | undefined;
    OptionsCamera: JSX.Element;
    OptionsMic: JSX.Element;
    OptionsSpeaker: JSX.Element;
    ParticipantItemMicOff: JSX.Element;
    ParticipantItemScreenShareStart: JSX.Element;
    VideoTileMicOff: JSX.Element;
    LocalCameraSwitch?: JSX.Element | undefined;
    PeoplePaneAddPerson?: JSX.Element | undefined;
    PeoplePaneOpenDialpad?: JSX.Element | undefined;
    DialpadStartCall?: JSX.Element | undefined;
    NoticePageInviteToRoomRemoved?: JSX.Element | undefined;
    BlurVideoBackground?: JSX.Element | undefined;
    RemoveVideoBackgroundEffect?: JSX.Element | undefined;
    GalleryOptions?: JSX.Element | undefined;
    SpeakerGalleryLayout?: JSX.Element | undefined;
    FloatingLocalVideoGalleryLayout?: JSX.Element | undefined;
    DefaultGalleryLayout?: JSX.Element | undefined;
    FocusedContentGalleryLayout?: JSX.Element | undefined;
    OverflowGalleryTop?: JSX.Element | undefined;
    LargeGalleryLayout?: JSX.Element | undefined;
    DefaultCustomButton?: JSX.Element | undefined;
    DtmfDialpadButton?: JSX.Element | undefined;
    PhoneNumberButton?: JSX.Element | undefined;
    JoinByPhoneDialStepIcon?: JSX.Element | undefined;
    JoinByPhoneConferenceIdIcon?: JSX.Element | undefined;
    JoinByPhoneWaitToBeAdmittedIcon?: JSX.Element | undefined;
    PeoplePaneMoreButton?: JSX.Element | undefined;
    StopAllSpotlightMenuButton?: JSX.Element | undefined;
    ChevronLeft?: JSX.Element | undefined;
    ControlBarChatButtonActive?: JSX.Element | undefined;
    ControlBarChatButtonInactive?: JSX.Element | undefined;
    Link?: JSX.Element | undefined;
    MoreDrawerMicrophones?: JSX.Element | undefined;
    MoreDrawerPeople?: JSX.Element | undefined;
    MoreDrawerSelectedMicrophone?: JSX.Element | undefined;
    MoreDrawerSelectedSpeaker?: JSX.Element | undefined;
    MoreDrawerSpeakers?: JSX.Element | undefined;
    SendBoxAttachFile?: JSX.Element | undefined;
    ChatMessageOptions: React_2.JSX.Element;
    ControlButtonParticipantsContextualMenuItem: React_2.JSX.Element;
    OpenAttachment: React_2.JSX.Element;
    ErrorBarCallVideoRecoveredBySystem: React_2.JSX.Element;
    ErrorBarCallVideoStoppedBySystem: React_2.JSX.Element;
    ErrorBarMutedByRemoteParticipant: React_2.JSX.Element;
    NotificationBarRecording: React_2.JSX.Element;
    NotificationBarBreakoutRoomOpened: React_2.JSX.Element;
    NotificationBarBreakoutRoomPromptJoin: React_2.JSX.Element;
    NotificationBarBreakoutRoomChanged: React_2.JSX.Element;
    NotificationBarBreakoutRoomJoined: React_2.JSX.Element;
    NotificationBarBreakoutRoomClosingSoon: React_2.JSX.Element;
    NotificationBarBreakoutRoomClosed: React_2.JSX.Element;
    MessageResend: React_2.JSX.Element;
    ParticipantItemSpotlighted: React_2.JSX.Element;
    HoldCallContextualMenuItem: React_2.JSX.Element;
    HoldCallButton: React_2.JSX.Element;
    ResumeCall: React_2.JSX.Element;
    VideoTileCameraOff: React_2.JSX.Element;
    DialpadBackspace: React_2.JSX.Element;
    VideoTilePinned: React_2.JSX.Element;
    ParticipantItemPinned: React_2.JSX.Element;
    VideoTileMoreOptions: React_2.JSX.Element;
    VideoTileScaleFit: React_2.JSX.Element;
    VideoTileScaleFill: React_2.JSX.Element;
    PinParticipant: React_2.JSX.Element;
    UnpinParticipant: React_2.JSX.Element;
    SplitButtonPrimaryActionCameraOn: React_2.JSX.Element;
    SplitButtonPrimaryActionCameraOff: React_2.JSX.Element;
    SplitButtonPrimaryActionMicUnmuted: React_2.JSX.Element;
    SplitButtonPrimaryActionMicMuted: React_2.JSX.Element;
    VerticalGalleryLeftButton: React_2.JSX.Element;
    VerticalGalleryRightButton: React_2.JSX.Element;
    ControlButtonVideoEffectsOption: React_2.JSX.Element;
    ConfigurationScreenVideoEffectsButton: React_2.JSX.Element;
    CaptionsIcon: React_2.JSX.Element;
    CaptionsOffIcon: React_2.JSX.Element;
    CaptionsSettingsIcon: React_2.JSX.Element;
    ChangeSpokenLanguageIcon: React_2.JSX.Element;
    ChangeCaptionLanguageIcon: React_2.JSX.Element;
    ContextMenuCameraIcon: React_2.JSX.Element;
    ContextMenuMicIcon: React_2.JSX.Element;
    ContextMenuSpeakerIcon: React_2.JSX.Element;
    ContextMenuRemoveParticipant: React_2.JSX.Element;
    SurveyStarIcon: React_2.JSX.Element;
    SurveyStarIconFilled: React_2.JSX.Element;
    StartSpotlightContextualMenuItem: React_2.JSX.Element;
    StopSpotlightContextualMenuItem: React_2.JSX.Element;
    VideoTileSpotlighted: React_2.JSX.Element;
    ContextualMenuMicMutedIcon: React_2.JSX.Element;
    IncomingCallNotificationRejectIcon: React_2.JSX.Element;
    IncomingCallNotificationAcceptIcon: React_2.JSX.Element;
    IncomingCallNotificationAcceptWithVideoIcon: React_2.JSX.Element;
};

// @public
export type DeviceManagerState = {
    isSpeakerSelectionAvailable: boolean;
    selectedMicrophone?: AudioDeviceInfo;
    selectedSpeaker?: AudioDeviceInfo;
    selectedCamera?: VideoDeviceInfo;
    cameras: VideoDeviceInfo[];
    microphones: AudioDeviceInfo[];
    speakers: AudioDeviceInfo[];
    deviceAccess?: DeviceAccess;
    unparentedViews: LocalVideoStreamState[];
};

// @public
export const DevicesButton: (props: DevicesButtonProps) => JSX.Element;

// @public
export interface DevicesButtonContextualMenuStyles extends IContextualMenuStyles {
    menuItemStyles?: IContextualMenuItemStyles;
}

// @public
export interface DevicesButtonProps extends ControlBarButtonProps {
    cameras?: OptionsDevice[];
    microphones?: OptionsDevice[];
    onSelectCamera?: (device: OptionsDevice) => Promise<void>;
    onSelectMicrophone?: (device: OptionsDevice) => Promise<void>;
    onSelectSpeaker?: (device: OptionsDevice) => Promise<void>;
    selectedCamera?: OptionsDevice;
    selectedMicrophone?: OptionsDevice;
    selectedSpeaker?: OptionsDevice;
    speakers?: OptionsDevice[];
    strings?: Partial<DevicesButtonStrings>;
    styles?: DevicesButtonStyles;
}

// @public
export type DevicesButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    microphones: AudioDeviceInfo[];
    speakers: AudioDeviceInfo[];
    cameras: VideoDeviceInfo[];
    selectedMicrophone?: AudioDeviceInfo;
    selectedSpeaker?: AudioDeviceInfo;
    selectedCamera?: VideoDeviceInfo;
};

// @public
export interface DevicesButtonStrings {
    cameraMenuTitle: string;
    cameraMenuTooltip: string;
    label: string;
    microphoneMenuTitle: string;
    microphoneMenuTooltip: string;
    speakerMenuTitle: string;
    speakerMenuTooltip: string;
    tooltipContent?: string;
}

// @public
export interface DevicesButtonStyles extends ControlBarButtonStyles {
    menuStyles?: Partial<DevicesButtonContextualMenuStyles>;
}

// @public
export type DiagnosticChangedEventListner = (event: MediaDiagnosticChangedEvent | NetworkDiagnosticChangedEvent) => void;

// @public
export interface DiagnosticsCallFeatureState {
    media: MediaDiagnosticsState;
    network: NetworkDiagnosticsState;
}

// @public
export const Dialpad: (props: DialpadProps) => JSX.Element;

// @public
export type DialpadMode = 'dtmf' | 'dialer';

// @public
export interface DialpadProps {
    dialpadMode?: DialpadMode;
    disableDtmfPlayback?: boolean;
    dtmfAudioContext?: AudioContext;
    longPressTrigger?: LongPressTrigger;
    onChange?: (input: string) => void;
    onClickDialpadButton?: (buttonValue: string, buttonIndex: number) => void;
    onSendDtmfTone?: (dtmfTone: DtmfTone) => Promise<void>;
    showDeleteButton?: boolean;
    // (undocumented)
    strings?: DialpadStrings;
    styles?: DialpadStyles;
    textFieldValue?: string;
}

// @public
export interface DialpadStrings {
    // (undocumented)
    deleteButtonAriaLabel?: string;
    // (undocumented)
    placeholderText: string;
}

// @public
export interface DialpadStyles {
    // (undocumented)
    button?: IButtonStyles;
    // (undocumented)
    deleteIcon?: IButtonStyles;
    // (undocumented)
    digit?: IStyle;
    // (undocumented)
    letter?: IStyle;
    // (undocumented)
    root?: IStyle;
    // (undocumented)
    textField?: Partial<ITextFieldStyles>;
}

// @public
export type DisplayNameChangedListener = (event: {
    participantId: CommunicationIdentifierKind;
    displayName: string;
}) => void;

// @public
interface Disposable_2 {
    dispose(): void;
}
export { Disposable_2 as Disposable }

// @public
export interface DtmfDialPadOptions {
    // (undocumented)
    dialerBehavior?: 'autoShow' | 'alwaysShow' | 'alwaysHide';
}

// @public
export type DtmfTone = 'A' | 'B' | 'C' | 'D' | 'Flash' | 'Num0' | 'Num1' | 'Num2' | 'Num3' | 'Num4' | 'Num5' | 'Num6' | 'Num7' | 'Num8' | 'Num9' | 'Pound' | 'Star';

// @public
export type EmptySelector = () => Record<string, never>;

// @public
export const EndCallButton: (props: EndCallButtonProps) => JSX.Element;

// @public
export interface EndCallButtonProps extends ControlBarButtonProps {
    enableEndCallMenu?: boolean;
    onHangUp?: (forEveryone?: boolean) => Promise<void>;
    strings?: EndCallButtonStrings;
}

// @public
export interface EndCallButtonStrings {
    endCallOption?: string;
    label: string;
    leaveOption?: string;
    tooltipContent?: string;
}

// @public
export const ErrorBar: (props: ErrorBarProps) => JSX.Element;

// @public
export interface ErrorBarProps extends IMessageBarProps {
    activeErrorMessages: ActiveErrorMessage[];
    ignorePremountErrors?: boolean;
    onDismissError?: (dismissedError: ActiveErrorMessage) => void;
    strings?: ErrorBarStrings;
}

// @public
export interface ErrorBarStrings {
    accessDenied: string;
    callCameraAccessDenied: string;
    callCameraAccessDeniedSafari: string;
    callCameraAlreadyInUse: string;
    callLocalVideoFreeze: string;
    callMacOsCameraAccessDenied: string;
    callMacOsMicrophoneAccessDenied: string;
    callMacOsScreenShareAccessDenied: string;
    callMicrophoneAccessDenied: string;
    callMicrophoneAccessDeniedSafari: string;
    callMicrophoneMutedBySystem: string;
    callMicrophoneUnmutedBySystem: string;
    callNetworkQualityLow: string;
    callNoMicrophoneFound: string;
    callNoSpeakerFound: string;
    callVideoRecoveredBySystem: string;
    callVideoStoppedBySystem: string;
    cameraFrozenForRemoteParticipants?: string;
    dismissButtonAriaLabel?: string;
    failedToJoinCallGeneric?: string;
    failedToJoinCallInvalidMeetingLink?: string;
    mutedByRemoteParticipant: string;
    muteGeneric: string;
    sendMessageGeneric: string;
    sendMessageNotInChatThread: string;
    startScreenShareGeneric: string;
    startSpotlightWhileMaxParticipantsAreSpotlighted: string;
    startVideoGeneric: string;
    stopScreenShareGeneric: string;
    stopVideoGeneric: string;
    teamsMeetingCallNetworkQualityLow: string;
    unableToReachChatService: string;
    unableToStartVideoEffect?: string;
    unmuteGeneric: string;
    userNotInChatThread: string;
}

// @public
export type ErrorType = keyof ErrorBarStrings;

// @public
export const FluentThemeProvider: (props: FluentThemeProviderProps) => JSX.Element;

// @public
export interface FluentThemeProviderProps {
    children: React_2.ReactNode;
    fluentTheme?: PartialTheme | Theme;
    rootStyle?: React_2.CSSProperties | undefined;
    rtl?: boolean;
}

// @public
export const fromFlatCommunicationIdentifier: (id: string) => CommunicationIdentifier;

// @public
export type GetCallingSelector<Component extends (props: any) => JSX.Element | undefined> = AreEqual<Component, typeof VideoGallery> extends true ? VideoGallerySelector : AreEqual<Component, typeof DevicesButton> extends true ? DevicesButtonSelector : AreEqual<Component, typeof MicrophoneButton> extends true ? MicrophoneButtonSelector : AreEqual<Component, typeof CameraButton> extends true ? CameraButtonSelector : AreEqual<Component, typeof ScreenShareButton> extends true ? ScreenShareButtonSelector : AreEqual<Component, typeof ParticipantList> extends true ? ParticipantListSelector : AreEqual<Component, typeof ParticipantsButton> extends true ? ParticipantsButtonSelector : AreEqual<Component, typeof EndCallButton> extends true ? EmptySelector : AreEqual<Component, typeof ErrorBar> extends true ? CallErrorBarSelector : AreEqual<Component, typeof Dialpad> extends true ? EmptySelector : AreEqual<Component, typeof HoldButton> extends true ? HoldButtonSelector : AreEqual<Component, typeof NotificationStack> extends true ? NotificationStackSelector : AreEqual<Component, typeof IncomingCallStack> extends true ? IncomingCallStackSelector : AreEqual<Component, typeof ReactionButton> extends true ? RaiseHandButtonSelector : AreEqual<Component, typeof CaptionsSettingsModal> extends true ? CaptionSettingsSelector : AreEqual<Component, typeof CaptionsBanner> extends true ? CaptionsBannerSelector : AreEqual<Component, typeof StartCaptionsButton> extends true ? StartCaptionsButtonSelector : AreEqual<Component, typeof RaiseHandButton> extends true ? EmptySelector : undefined;

// @public
export const getCallingSelector: <Component extends (props: any) => JSX.Element | undefined>(component: Component) => GetCallingSelector<Component>;

// @public
export type GetChatSelector<Component extends (props: any) => JSX.Element | undefined> = AreEqual<Component, typeof SendBox> extends true ? SendBoxSelector : AreEqual<Component, typeof MessageThread> extends true ? MessageThreadSelector : AreEqual<Component, typeof TypingIndicator> extends true ? TypingIndicatorSelector : AreEqual<Component, typeof ParticipantList> extends true ? ChatParticipantListSelector : AreEqual<Component, typeof ErrorBar> extends true ? ChatErrorBarSelector : undefined;

// @public
export const getChatSelector: <Component extends (props: any) => JSX.Element | undefined>(component: Component) => GetChatSelector<Component>;

// @public
export const GridLayout: (props: GridLayoutProps) => JSX.Element;

// @public
export interface GridLayoutProps {
    // (undocumented)
    children: React_2.ReactNode;
    styles?: BaseCustomStyles;
}

// @public
export interface GridLayoutStyles extends BaseCustomStyles {
    children?: IStyle;
}

// @public
export const HoldButton: (props: HoldButtonProps) => JSX.Element;

// @public (undocumented)
export interface HoldButtonProps extends ControlBarButtonProps {
    onToggleHold: () => Promise<void>;
    strings?: HoldButtonStrings;
}

// @public
export type HoldButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    checked: boolean;
};

// @public
export interface HoldButtonStrings {
    offLabel?: string;
    onLabel?: string;
    tooltipOffContent?: string;
    tooltipOnContent?: string;
}

// @public
export interface HorizontalGalleryStyles extends BaseCustomStyles {
    children?: IStyle;
    nextButton?: IStyle;
    previousButton?: IStyle;
}

// @internal
export const _IdentifierProvider: (props: _IdentifierProviderProps) => JSX.Element;

// @internal
export interface _IdentifierProviderProps {
    // (undocumented)
    children: React_2.ReactNode;
    // (undocumented)
    identifiers?: _Identifiers;
}

// @internal
export interface _Identifiers {
    horizontalGalleryVideoTile: string;
    messageContent: string;
    messageTimestamp: string;
    overflowGalleryLeftNavButton: string;
    overflowGalleryRightNavButton: string;
    participantButtonPeopleMenuItem: string;
    participantItemMenuButton: string;
    participantList: string;
    participantListPeopleButton: string;
    participantListRemoveParticipantButton: string;
    sendboxTextField: string;
    typingIndicator: string;
    verticalGalleryPageCounter: string;
    verticalGalleryVideoTile: string;
    videoGallery: string;
    videoTile: string;
}

// @public
export const ImageOverlay: (props: ImageOverlayProps) => JSX.Element;

// @public
export interface ImageOverlayProps {
    altText?: string;
    imageSrc: string;
    isOpen: boolean;
    onDismiss: () => void;
    onDownloadButtonClicked?: (imageSrc: string) => void;
    title?: string;
    titleIcon?: JSX.Element;
}

// @public
export interface ImageOverlayStrings {
    dismissButtonAriaLabel: string;
    downloadButtonLabel: string;
    overlayVisibleMessage: string;
}

// @public
export type IncomingCallManagement = {
    incomingCalls: ReadonlyArray<IncomingCall>;
};

// @public
export const IncomingCallNotification: (props: IncomingCallNotificationProps) => JSX.Element;

// @public
export interface IncomingCallNotificationProps {
    acceptOptions: {
        showAcceptWithVideo: boolean;
    };
    alertText?: string;
    avatarImage?: string;
    callerName?: string;
    onAcceptWithAudio: () => void;
    onAcceptWithVideo: () => void;
    onDismiss?: () => void;
    onReject: () => void;
    onRenderAvatar?: () => JSX.Element;
    personaSize?: number;
    strings?: IncomingCallNotificationStrings;
    styles?: IncomingCallNotificationStyles;
}

// @public
export interface IncomingCallNotificationStrings {
    incomingCallNoticicationAcceptWithAudioAriaLabel?: string;
    incomingCallNoticicationAcceptWithVideoAriaLabel?: string;
    incomingCallNoticicationRejectAriaLabel?: string;
    incomingCallNotificationAccceptWithVideoButtonLabel?: string;
    incomingCallNotificationAcceptButtonLabel?: string;
    incomingCallNotificationDismissButtonAriaLabel?: string;
    incomingCallNotificationPlaceholderAlert?: string;
    incomingCallNotificationPlaceholderId?: string;
    incomingCallNotificationRejectButtonLabel?: string;
}

// @public
export interface IncomingCallNotificationStyles {
    acceptButton?: IButtonStyles;
    avatarContainer?: IStackStyles;
    rejectButton?: IButtonStyles;
    root?: IStackStyles;
}

// @public
export const IncomingCallStack: (props: IncomingCallStackProps) => JSX.Element;

// @public
export interface IncomingCallStackCall {
    callerInfo: {
        displayName?: string;
    };
    id: string;
    videoAvailable: boolean;
}

// @public
export interface IncomingCallStackProps {
    activeIncomingCalls: IncomingCallStackCall[];
    onAcceptCall: (incomingCallId: string, useVideo?: boolean) => void;
    onRejectCall: (incomingCallId: string) => void;
    removedIncomingCalls: IncomingCallStackCall[];
    strings?: IncomingCallNotificationStrings;
    styles?: IncomingCallNotificationStyles;
    tabIndex?: number;
}

// @public
export type IncomingCallStackSelector = (state: CallClientState) => {
    activeIncomingCalls: IncomingCallStackCall[];
    removedIncomingCalls: IncomingCallStackCall[];
};

// @public
export interface IncomingCallState {
    callEndReason?: CallEndReason;
    callerInfo: CallerInfo;
    endTime?: Date;
    id: string;
    info: CallInfoState;
    startTime: Date;
}

// @public
export interface InlineImage {
    imageAttributes: React_2.ImgHTMLAttributes<HTMLImageElement>;
    messageId: string;
}

// @public
export interface InlineImageOptions {
    onRenderInlineImage?: (inlineImage: InlineImage, defaultOnRender: (inlineImage: InlineImage) => JSX.Element) => JSX.Element;
}

// @public
export type IsCaptionLanguageChangedListener = (event: {
    activeCaptionLanguage: string;
}) => void;

// @public
export type IsCaptionsActiveChangedListener = (event: {
    isActive: boolean;
}) => void;

// @public
export type IsLocalScreenSharingActiveChangedListener = (event: {
    isScreenSharingOn: boolean;
}) => void;

// @public
export type IsMutedChangedListener = (event: {
    identifier: CommunicationIdentifierKind;
    isMuted: boolean;
}) => void;

// @public
export type IsSpeakingChangedListener = (event: {
    identifier: CommunicationIdentifierKind;
    isSpeaking: boolean;
}) => void;

// @public
export type IsSpokenLanguageChangedListener = (event: {
    activeSpokenLanguage: string;
}) => void;

// @public
export interface JoinCallOptions {
    cameraOn?: boolean | 'keep';
    microphoneOn?: boolean | 'keep';
}

// @public
export interface JumpToNewMessageButtonProps {
    onClick: () => void;
    text: string;
}

// @public
export const lightTheme: PartialTheme & CallingTheme;

// @public
export const loadCallComposite: (loaderArgs: CallCompositeLoaderProps, htmlElement: HTMLElement) => Promise<CallAdapter | undefined>;

// @public
export const loadCallWithChatComposite: (loaderArgs: CallWithChatCompositeLoaderProps, htmlElement: HTMLElement) => Promise<CallWithChatAdapter | undefined>;

// @public
export const loadChatComposite: (loaderArgs: ChatCompositeLoaderProps, htmlElement: HTMLElement) => Promise<ChatAdapter | undefined>;

// @public
export type LoadingState = 'loading' | 'none' | 'reconnecting';

// @public
export const loadOutboundCallComposite: (loaderArgs: OutboundCallCompositeLoaderProps, htmlElement: HTMLElement) => Promise<CallAdapter | undefined>;

// @public
export const LocalizationProvider: (props: LocalizationProviderProps) => JSX.Element;

// @public
export type LocalizationProviderProps = {
    locale: ComponentLocale;
    children: React_2.ReactNode;
};

// @public (undocumented)
export interface LocalVideoCameraCycleButtonProps {
    ariaDescription?: string;
    cameras?: OptionsDevice[];
    label?: string;
    onSelectCamera?: (device: OptionsDevice) => Promise<void>;
    selectedCamera?: OptionsDevice;
    size?: 'small' | 'large';
}

// @public
export interface LocalVideoStreamState {
    mediaStreamType: MediaStreamType;
    source: VideoDeviceInfo;
    videoEffects?: LocalVideoStreamVideoEffectsState;
    view?: VideoStreamRendererViewState;
}

// @public
export interface LocalVideoStreamVideoEffectsState {
    activeEffects?: VideoEffectName[];
}

// @public
export interface LocalVideoTileOptions {
    position?: 'grid' | 'floating';
}

// @public
export type LocalVideoTileSize = '9:16' | '16:9' | 'hidden' | 'followDeviceOrientation';

// @public
export type LongPressTrigger = 'mouseAndTouch' | 'touch';

// @public
export type MediaAccess = {
    isAudioPermitted: boolean;
    isVideoPermitted: boolean;
};

// @public
export interface MediaAccessState {
    isAudioPermitted: boolean;
    isVideoPermitted: boolean;
}

// @public
export type MediaDiagnosticChangedEvent = MediaDiagnosticChangedEventArgs & {
    type: 'media';
};

// @public
export interface MediaDiagnosticsState {
    // (undocumented)
    latest: LatestMediaDiagnostics;
}

// @public
export interface MeetingConferencePhoneInfoModalStrings {
    meetingConferencePhoneInfoModalDialIn: string;
    meetingConferencePhoneInfoModalMeetingId: string;
    meetingConferencePhoneInfoModalNoPhoneAvailable: string;
    meetingConferencePhoneInfoModalTitle: string;
    meetingConferencePhoneInfoModalToll: string;
    meetingConferencePhoneInfoModalTollFree: string;
    meetingConferencePhoneInfoModalTollGeoData: string;
    meetingConferencePhoneInfoModalWait: string;
}

// @public
export type Message = ChatMessage | SystemMessage | CustomMessage;

// @public
export type MessageAttachedStatus = 'bottom' | 'top' | boolean;

// @public
export interface MessageCommon {
    // (undocumented)
    createdOn: Date;
    // (undocumented)
    messageId: string;
}

// @public
export type MessageContentType = 'text' | 'html' | 'richtext/html' | 'unknown';

// @public
export type MessageDeletedListener = MessageReceivedListener;

// @public
export type MessageEditedListener = MessageReceivedListener;

// @public
export type MessageProps = {
    message: Message;
    strings: MessageThreadStrings;
    messageContainerStyle?: ComponentSlotStyle;
    showDate?: boolean;
    disableEditing?: boolean;
    onUpdateMessage?: UpdateMessageCallback;
    onCancelEditMessage?: CancelEditCallback;
    onDeleteMessage?: (messageId: string) => Promise<void>;
    onSendMessage?: (content: string) => Promise<void>;
};

// @public
export type MessageReadListener = (event: {
    message: ChatMessage_2;
    readBy: CommunicationUserKind;
}) => void;

// @public
export type MessageReceivedListener = (event: {
    message: ChatMessage_2;
}) => void;

// @public
export type MessageRenderer = (props: MessageProps) => JSX.Element;

// @public
export type MessageSentListener = MessageReceivedListener;

// @public
export type MessageStatus = 'delivered' | 'sending' | 'seen' | 'failed';

// @public
export const MessageStatusIndicator: (props: MessageStatusIndicatorProps) => JSX.Element;

// @public
export interface MessageStatusIndicatorProps {
    // (undocumented)
    onToggleToolTip?: (isToggled: boolean) => void;
    // (undocumented)
    readCount?: number;
    remoteParticipantsCount?: number;
    status?: MessageStatus;
    strings?: MessageStatusIndicatorStrings;
    styles?: BaseCustomStyles;
}

// @public
export interface MessageStatusIndicatorStrings {
    deliveredAriaLabel?: string;
    deliveredTooltipText: string;
    failedToSendAriaLabel?: string;
    failedToSendTooltipText: string;
    readByTooltipText?: string;
    seenAriaLabel?: string;
    seenTooltipText: string;
    sendingAriaLabel?: string;
    sendingTooltipText: string;
}

// @public
export const MessageThread: (props: MessageThreadProps) => JSX.Element;

// @public
export type MessageThreadProps = {
    userId: string;
    messages: (ChatMessage | SystemMessage | CustomMessage)[];
    participantCount?: number;
    readReceiptsBySenderId?: ReadReceiptsBySenderId;
    styles?: MessageThreadStyles;
    disableJumpToNewMessageButton?: boolean;
    showMessageDate?: boolean;
    showMessageStatus?: boolean;
    numberOfChatMessagesToReload?: number;
    onMessageSeen?: (messageId: string) => Promise<void>;
    onRenderMessageStatus?: (messageStatusIndicatorProps: MessageStatusIndicatorProps) => JSX.Element | null;
    onRenderAvatar?: OnRenderAvatarCallback;
    onRenderJumpToNewMessageButton?: (newMessageButtonProps: JumpToNewMessageButtonProps) => JSX.Element;
    onLoadPreviousChatMessages?: (messagesToLoad: number) => Promise<boolean>;
    onRenderMessage?: (messageProps: MessageProps, messageRenderer?: MessageRenderer) => JSX.Element;
    onUpdateMessage?: UpdateMessageCallback;
    onCancelEditMessage?: CancelEditCallback;
    onDeleteMessage?: (messageId: string) => Promise<void>;
    onSendMessage?: (content: string) => Promise<void>;
    disableEditing?: boolean;
    strings?: Partial<MessageThreadStrings>;
    inlineImageOptions?: InlineImageOptions;
};

// @public
export type MessageThreadSelector = (state: ChatClientState, props: ChatBaseSelectorProps) => {
    userId: string;
    showMessageStatus: boolean;
    messages: Message[];
};

// @public
export interface MessageThreadStrings {
    actionMenuMoreOptions?: string;
    attachmentCardGroupMessage: string;
    editBoxCancelButton: string;
    editBoxPlaceholderText: string;
    editBoxSubmitButton: string;
    editBoxTextLimit: string;
    editedMessageLiveAuthorIntro: string;
    editedMessageLocalUserLiveAuthorIntro: string;
    editedTag: string;
    editMessage: string;
    failToSendTag?: string;
    friday: string;
    liveAuthorIntro: string;
    messageContentAriaText: string;
    messageContentMineAriaText: string;
    messageDeletedAnnouncementAriaLabel: string;
    messageReadCount?: string;
    monday: string;
    newMessagesIndicator: string;
    noDisplayNameSub: string;
    openAttachment: string;
    participantJoined: string;
    participantLeft: string;
    removeMessage: string;
    resendMessage?: string;
    saturday: string;
    sunday: string;
    thursday: string;
    tuesday: string;
    wednesday: string;
    yesterday: string;
}

// @public
export interface MessageThreadStyles extends BaseCustomStyles {
    chatContainer?: ComponentSlotStyle;
    chatItemMessageContainer?: ComponentSlotStyle;
    chatMessageContainer?: ComponentSlotStyle;
    failedMyChatMessageContainer?: ComponentSlotStyle;
    loadPreviousMessagesButtonContainer?: IStyle;
    messageStatusContainer?: (mine: boolean) => IStyle;
    myChatItemMessageContainer?: ComponentSlotStyle;
    myChatMessageContainer?: ComponentSlotStyle;
    newMessageButtonContainer?: IStyle;
    systemMessageContainer?: ComponentSlotStyle;
}

// @public
export const MicrophoneButton: (props: MicrophoneButtonProps) => JSX.Element;

// @public
export interface MicrophoneButtonContextualMenuStyles extends IContextualMenuStyles {
    menuItemStyles?: IContextualMenuItemStyles;
}

// @public
export interface MicrophoneButtonProps extends ControlBarButtonProps {
    enableDeviceSelectionMenu?: boolean;
    isDeepNoiseSuppressionOn?: boolean;
    microphones?: OptionsDevice[];
    onClickNoiseSuppression?: () => void;
    onSelectMicrophone?: (device: OptionsDevice) => Promise<void>;
    onSelectSpeaker?: (device: OptionsDevice) => Promise<void>;
    onToggleMicrophone?: () => Promise<void>;
    selectedMicrophone?: OptionsDevice;
    selectedSpeaker?: OptionsDevice;
    showNoiseSuppressionButton?: boolean;
    speakers?: OptionsDevice[];
    strings?: Partial<MicrophoneButtonStrings>;
    styles?: Partial<MicrophoneButtonStyles>;
}

// @public
export type MicrophoneButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    disabled: boolean;
    checked: boolean;
    microphones: AudioDeviceInfo[];
    speakers: AudioDeviceInfo[];
    selectedMicrophone?: AudioDeviceInfo;
    selectedSpeaker?: AudioDeviceInfo;
};

// @public
export interface MicrophoneButtonStrings {
    deepNoiseSuppressionOffAnnouncement?: string;
    deepNoiseSuppressionOnAnnouncement?: string;
    deepNoiseSuppressionTitle?: string;
    microphoneActionTurnedOffAnnouncement?: string;
    microphoneActionTurnedOnAnnouncement?: string;
    microphoneAriaDescription?: string;
    microphoneButtonSplitRoleDescription?: string;
    microphoneMenuTitle?: string;
    microphoneMenuTooltip?: string;
    microphonePrimaryActionSplitButtonTitle?: string;
    offLabel: string;
    offSplitButtonAriaLabel?: string;
    offSplitButtonMicrophonePrimaryAction?: string;
    onLabel: string;
    onSplitButtonAriaLabel?: string;
    onSplitButtonMicrophonePrimaryAction?: string;
    speakerMenuTitle?: string;
    speakerMenuTooltip?: string;
    tooltipDisabledContent?: string;
    tooltipOffContent?: string;
    tooltipOnContent?: string;
}

// @public
export interface MicrophoneButtonStyles extends ControlBarButtonStyles {
    menuStyles?: Partial<MicrophoneButtonContextualMenuStyles>;
}

// @public
export type NetworkDiagnosticChangedEvent = NetworkDiagnosticChangedEventArgs & {
    type: 'network';
};

// @public
export interface NetworkDiagnosticsState {
    // (undocumented)
    latest: LatestNetworkDiagnostics;
}

// @public
const Notification_2: (props: NotificationProps) => JSX.Element;
export { Notification_2 as Notification }

// @public
export interface NotificationProps {
    ariaLive?: 'assertive' | 'off' | 'polite';
    autoDismiss?: boolean;
    notificationIconProps?: IIconProps;
    notificationStrings?: NotificationStrings;
    onClickLink?: () => void;
    onClickPrimaryButton?: () => void;
    onClickSecondaryButton?: () => void;
    onDismiss?: () => void;
    role?: 'alert' | 'status' | 'presentation' | 'none';
    showStackedEffect?: boolean;
    styles?: NotificationStyles;
}

// @public
export const NotificationStack: (props: NotificationStackProps) => JSX.Element;

// @public
export interface NotificationStackProps {
    activeNotifications: ActiveNotification[];
    ignorePremountNotifications?: boolean;
    maxNotificationsToShow?: number;
    onDismissNotification?: (dismissedNotification: ActiveNotification) => void;
    strings?: NotificationStackStrings;
}

// @public
export type NotificationStackSelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    activeErrorMessages: ActiveNotification[];
    activeNotifications: ActiveNotification[];
};

// @public
export interface NotificationStackStrings {
    assignedBreakoutRoomChanged?: NotificationStrings;
    assignedBreakoutRoomClosed?: NotificationStrings;
    assignedBreakoutRoomOpened?: NotificationStrings;
    assignedBreakoutRoomOpenedPromptJoin?: NotificationStrings;
    breakoutRoomClosingSoon?: NotificationStrings;
    breakoutRoomJoined?: NotificationStrings;
    callCameraAccessDenied?: NotificationStrings;
    callCameraAccessDeniedSafari?: NotificationStrings;
    callCameraAlreadyInUse?: NotificationStrings;
    callLocalVideoFreeze?: NotificationStrings;
    callMacOsCameraAccessDenied?: NotificationStrings;
    callMacOsMicrophoneAccessDenied?: NotificationStrings;
    callMacOsScreenShareAccessDenied?: NotificationStrings;
    callMicrophoneAccessDenied?: NotificationStrings;
    callMicrophoneAccessDeniedSafari?: NotificationStrings;
    callMicrophoneMutedBySystem?: NotificationStrings;
    callMicrophoneUnmutedBySystem?: NotificationStrings;
    callNetworkQualityLow?: NotificationStrings;
    callNoMicrophoneFound?: NotificationStrings;
    callNoSpeakerFound?: NotificationStrings;
    callVideoRecoveredBySystem?: NotificationStrings;
    callVideoStoppedBySystem?: NotificationStrings;
    cameraFrozenForRemoteParticipants?: NotificationStrings;
    capabilityTurnVideoOnAbsent?: NotificationStrings;
    capabilityTurnVideoOnPresent?: NotificationStrings;
    capabilityUnmuteMicAbsent?: NotificationStrings;
    capabilityUnmuteMicPresent?: NotificationStrings;
    dismissButtonAriaLabel?: NotificationStrings;
    failedToJoinCallGeneric?: NotificationStrings;
    failedToJoinCallInvalidMeetingLink?: NotificationStrings;
    mutedByRemoteParticipant?: NotificationStrings;
    muteGeneric?: NotificationStrings;
    recordingAndTranscriptionStarted?: NotificationStrings;
    recordingAndTranscriptionStopped?: NotificationStrings;
    recordingStarted?: NotificationStrings;
    recordingStopped?: NotificationStrings;
    recordingStoppedStillTranscribing?: NotificationStrings;
    speakingWhileMuted?: NotificationStrings;
    startScreenShareGeneric?: NotificationStrings;
    startSpotlightWhileMaxParticipantsAreSpotlighted?: NotificationStrings;
    startVideoGeneric?: NotificationStrings;
    stopScreenShareGeneric?: NotificationStrings;
    stopVideoGeneric?: NotificationStrings;
    teamsMeetingCallNetworkQualityLow?: NotificationStrings;
    transcriptionStarted?: NotificationStrings;
    transcriptionStopped?: NotificationStrings;
    transcriptionStoppedStillRecording?: NotificationStrings;
    unableToStartVideoEffect?: NotificationStrings;
    unmuteGeneric?: NotificationStrings;
}

// @public
export interface NotificationStrings {
    dismissButtonAriaLabel?: string;
    linkLabel?: string;
    message?: string;
    primaryButtonLabel?: string;
    secondaryButtonLabel?: string;
    title: string;
}

// @public
export interface NotificationStyles {
    content?: IStackStyles;
    icon?: IIconStyles;
    link?: IStackStyles;
    primaryButton?: IButtonStyles;
    root?: IStackStyles;
    secondaryButton?: IButtonStyles;
    title?: IStackStyles;
}

// @public (undocumented)
export type NotificationTarget = 'assignedBreakoutRoomOpened' | 'assignedBreakoutRoomOpenedPromptJoin' | 'assignedBreakoutRoomChanged' | 'assignedBreakoutRoomClosed' | 'breakoutRoomJoined' | 'breakoutRoomClosingSoon' | 'capabilityTurnVideoOnPresent' | 'capabilityTurnVideoOnAbsent' | 'capabilityUnmuteMicPresent' | 'capabilityUnmuteMicAbsent';

// @public
export type NotificationType = keyof NotificationStackStrings;

// @public
export type OnFetchProfileCallback = (userId: string, defaultProfile?: Profile) => Promise<Profile | undefined>;

// @public
export type OnRenderAvatarCallback = (
userId?: string, options?: CustomAvatarOptions,
defaultOnRender?: (props: CustomAvatarOptions) => JSX.Element) => JSX.Element | undefined;

// @public
export const onResolveDeepNoiseSuppressionDependency: () => Promise<DeepNoiseSuppressionEffectDependency>;

// @public
export const onResolveDeepNoiseSuppressionDependencyLazy: () => Promise<DeepNoiseSuppressionEffectDependency>;

// @public
export const onResolveVideoEffectDependency: () => Promise<VideoBackgroundEffectsDependency>;

// @public
export const onResolveVideoEffectDependencyLazy: () => Promise<VideoBackgroundEffectsDependency>;

// @public
export interface OptimalVideoCountFeatureState {
    maxRemoteVideoStreams: number;
}

// @public
export interface OptionsDevice {
    id: string;
    name: string;
}

// @public
export type OutboundCallCompositeLoaderProps = {
    userId: CommunicationUserIdentifier;
    credential: CommunicationTokenCredential;
    displayName: string;
    targetCallees: string[] | StartCallIdentifier[];
    callAdapterOptions?: AzureCommunicationCallAdapterOptions;
    callCompositeOptions?: CallCompositeOptions;
};

// @public
export type OverflowGalleryPosition = 'horizontalBottom' | 'verticalRight' | 'horizontalTop';

// @public
export interface ParticipantAddedSystemMessage extends SystemMessageCommon {
    // (undocumented)
    participants: CommunicationParticipant[];
    // (undocumented)
    systemMessageType: 'participantAdded';
}

// @public
export const ParticipantItem: (props: ParticipantItemProps) => JSX.Element;

// @public
export interface ParticipantItemProps {
    ariaLabelledBy?: string;
    displayName?: string;
    me?: boolean;
    menuItems?: IContextualMenuItem[];
    onClick?: (props?: ParticipantItemProps) => void;
    onRenderAvatar?: OnRenderAvatarCallback;
    onRenderIcon?: (props?: ParticipantItemProps) => JSX.Element | null;
    participantState?: ParticipantState;
    presence?: PersonaPresence;
    showParticipantOverflowTooltip?: boolean;
    strings?: Partial<ParticipantItemStrings>;
    styles?: ParticipantItemStyles;
    userId?: string;
}

// @public
export interface ParticipantItemStrings {
    attendeeRole: string;
    cameraDisabledIconLabel: string;
    displayNamePlaceholder?: string;
    handRaisedIconLabel?: string;
    isMeText: string;
    menuTitle: string;
    micDisabledIconLabel: string;
    mutedIconLabel: string;
    participantItemAriaLabel?: string;
    participantItemWithMoreOptionsAriaLabel?: string;
    participantStateHold?: string;
    participantStateRinging?: string;
    removeButtonLabel: string;
    sharingIconLabel: string;
}

// @public
export interface ParticipantItemStyles extends BaseCustomStyles {
    avatar?: IStyle;
    iconContainer?: IStyle;
    me?: IStyle;
    menu?: IStyle;
}

// @public
export const ParticipantList: (props: ParticipantListProps) => JSX.Element;

// @public
export interface ParticipantListItemStyles extends ParticipantItemStyles {
    participantSubMenuItemsStyles?: IContextualMenuItemStyles;
}

// @public
export type ParticipantListParticipant = CommunicationParticipant & {
    isRemovable: boolean;
};

// @public
export type ParticipantListProps = {
    participants: ParticipantListParticipant[];
    myUserId?: string;
    excludeMe?: boolean;
    onRenderParticipant?: (participant: ParticipantListParticipant) => JSX.Element | null;
    onRenderAvatar?: OnRenderAvatarCallback;
    onRemoveParticipant?: (userId: string) => void;
    onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;
    onParticipantClick?: (participant?: ParticipantListParticipant) => void;
    onMuteParticipant?: (userId: string) => Promise<void>;
    styles?: ParticipantListStyles;
    showParticipantOverflowTooltip?: boolean;
    participantAriaLabelledBy?: string;
    pinnedParticipants?: string[];
};

// @public
export type ParticipantListSelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    participants: CallParticipantListParticipant[];
    myUserId: string;
};

// @public
export interface ParticipantListStyles extends BaseCustomStyles {
    participantItemStyles?: ParticipantListItemStyles;
}

// @public
export type ParticipantMenuItemsCallback = (participantUserId: string, userId?: string, defaultMenuItems?: IContextualMenuItem[]) => IContextualMenuItem[];

// @public
export interface ParticipantRemovedSystemMessage extends SystemMessageCommon {
    // (undocumented)
    participants: CommunicationParticipant[];
    // (undocumented)
    systemMessageType: 'participantRemoved';
}

// @public
export type ParticipantsAddedListener = (event: {
    participantsAdded: ChatParticipant[];
    addedBy: ChatParticipant;
}) => void;

// @public
export const ParticipantsButton: (props: ParticipantsButtonProps) => JSX.Element;

// @public
export interface ParticipantsButtonContextualMenuStyles extends IContextualMenuStyles {
    menuItemStyles?: IContextualMenuItemStyles;
    participantListStyles?: ParticipantListStyles;
}

// @public
export interface ParticipantsButtonProps extends ControlBarButtonProps {
    callInvitationURL?: string;
    excludeMe?: boolean;
    myUserId?: string;
    onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;
    onMuteAll?: () => void;
    onRemoveParticipant?: (userId: string) => void;
    onRenderAvatar?: OnRenderAvatarCallback;
    onRenderParticipant?: (participant: CommunicationParticipant) => JSX.Element | null;
    onRenderParticipantList?: (props: ParticipantListProps) => JSX.Element | null;
    participants: ParticipantListParticipant[];
    showParticipantOverflowTooltip?: boolean;
    strings?: Partial<ParticipantsButtonStrings>;
    styles?: ParticipantsButtonStyles;
}

// @public
export type ParticipantsButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    participants: CallParticipantListParticipant[];
    myUserId: string;
};

// @public
export interface ParticipantsButtonStrings {
    ariaLabel?: string;
    copyInviteLinkActionedAriaLabel: string;
    copyInviteLinkButtonLabel: string;
    label: string;
    menuHeader: string;
    muteAllButtonLabel: string;
    participantsListButtonLabel: string;
    tooltipContent?: string;
}

// @public
export interface ParticipantsButtonStyles extends ControlBarButtonStyles {
    menuStyles?: Partial<ParticipantsButtonContextualMenuStyles>;
}

// @public
export type ParticipantsJoinedListener = (event: {
    joined: RemoteParticipant[];
}) => void;

// @public
export type ParticipantsLeftListener = (event: {
    removed: RemoteParticipant[];
}) => void;

// @public
export type ParticipantsRemovedListener = (event: {
    participantsRemoved: ChatParticipant[];
    removedBy: ChatParticipant;
}) => void;

// @public
export type ParticipantState = 'Idle' | 'Connecting' | 'Ringing' | 'Connected' | 'Hold' | 'InLobby' | 'EarlyMedia' | 'Disconnected' | 'Reconnecting';

// @public
export interface PPTLiveCallFeatureState {
    isActive: boolean;
}

// @public
export type Profile = {
    displayName?: string;
};

// @public
export type RaisedHand = {
    raisedHandOrderPosition: number;
};

// @public
export type RaisedHandState = {
    raisedHandOrderPosition: number;
};

// @public
export const RaiseHandButton: (props: RaiseHandButtonProps) => JSX.Element;

// @public
export interface RaiseHandButtonProps extends ControlBarButtonProps {
    onToggleRaiseHand?: () => Promise<void>;
    strings?: Partial<RaiseHandButtonStrings>;
}

// @public
export type RaiseHandButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    checked?: boolean;
    disabled?: boolean;
};

// @public
export interface RaiseHandButtonStrings {
    offLabel: string;
    onLabel: string;
    tooltipDisabledContent?: string;
    tooltipOffContent?: string;
    tooltipOnContent?: string;
}

// @public
export interface RaiseHandCallFeature {
    localParticipantRaisedHand?: RaisedHandState;
    raisedHands: RaisedHandState[];
}

// @public
export type Reaction = {
    reactionType: string;
    receivedOn: Date;
};

// @public
export const ReactionButton: (props: ReactionButtonProps) => JSX.Element;

// @public
export interface ReactionButtonProps extends ControlBarButtonProps {
    onReactionClick: (reaction: ReactionButtonReaction) => Promise<void>;
    reactionResources: ReactionResources;
    strings?: Partial<ReactionButtonStrings>;
}

// @public
export type ReactionButtonReaction = 'like' | 'heart' | 'applause' | 'laugh' | 'surprised';

// @public
export interface ReactionButtonStrings {
    applauseReactionTooltipContent?: string;
    ariaLabel: string;
    heartReactionTooltipContent?: string;
    label: string;
    laughReactionTooltipContent?: string;
    likeReactionTooltipContent?: string;
    surprisedReactionTooltipContent?: string;
    tooltipContent?: string;
    tooltipDisabledContent?: string;
}

// @public
export interface ReactionResources {
    applauseReaction?: ReactionSprite;
    heartReaction?: ReactionSprite;
    laughReaction?: ReactionSprite;
    likeReaction?: ReactionSprite;
    surprisedReaction?: ReactionSprite;
}

// @public
export type ReactionSprite = {
    url: string;
    frameCount: number;
};

// @public
export type ReactionState = {
    reactionMessage: ReactionMessage;
    receivedOn: Date;
};

// @public
export type ReadReceiptsBySenderId = {
    [key: string]: {
        lastReadMessage: string;
        displayName: string;
    };
};

// @public
export interface RecordingCallFeature {
    isRecordingActive: boolean;
}

// @public
export interface RemoteParticipantState {
    callEndReason?: CallEndReason;
    contentSharingStream?: HTMLElement;
    displayName?: string;
    identifier: CommunicationIdentifierKind;
    isMuted: boolean;
    isSpeaking: boolean;
    mediaAccess?: MediaAccessState;
    raisedHand?: RaisedHandState;
    reactionState?: ReactionState;
    role?: ParticipantRole;
    spotlight?: SpotlightState;
    state: RemoteParticipantState_2;
    videoStreams: {
        [key: number]: RemoteVideoStreamState;
    };
}

// @public
export interface RemoteVideoStreamState {
    id: number;
    isAvailable: boolean;
    isReceiving: boolean;
    mediaStreamType: MediaStreamType;
    streamSize?: {
        width: number;
        height: number;
    };
    view?: VideoStreamRendererViewState;
}

// @public
export interface RemoteVideoTileMenuOptions {
    isHidden?: boolean;
}

// @public
export type ResourceDetails = {
    threadId: string;
    messageId: string;
    resourceUrl: string;
};

// @public
export type ResourceFetchResult = {
    sourceUrl?: string;
    error?: Error;
};

// @public
export const ScreenShareButton: (props: ScreenShareButtonProps) => JSX.Element;

// @public
export interface ScreenShareButtonProps extends ControlBarButtonProps {
    onToggleScreenShare?: () => Promise<void>;
    strings?: Partial<ScreenShareButtonStrings>;
}

// @public
export type ScreenShareButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    checked?: boolean;
    disabled?: boolean;
};

// @public
export interface ScreenShareButtonStrings {
    offLabel: string;
    onLabel: string;
    tooltipDisabledContent?: string;
    tooltipOffContent?: string;
    tooltipOnContent?: string;
}

// @public
export type Selector = (state: ClientState, props: any) => any;

// @public
export const SendBox: (props: SendBoxProps) => JSX.Element;

// @public
export interface SendBoxProps {
    autoFocus?: 'sendBoxTextField';
    disabled?: boolean;
    onRenderIcon?: (isHover: boolean) => JSX.Element;
    onRenderSystemMessage?: (systemMessage: string | undefined) => React_2.ReactElement;
    onSendMessage?: (content: string) => Promise<void>;
    onTyping?: () => Promise<void>;
    strings?: Partial<SendBoxStrings>;
    styles?: SendBoxStylesProps;
    supportNewline?: boolean;
    systemMessage?: string;
}

// @public
export type SendBoxSelector = (state: ChatClientState, props: ChatBaseSelectorProps) => {
    displayName: string;
    userId: string;
};

// @public
export interface SendBoxStrings {
    placeholderText: string;
    sendButtonAriaLabel: string;
    textTooLong: string;
}

// @public
export interface SendBoxStylesProps extends BaseCustomStyles {
    sendMessageIcon?: IStyle;
    sendMessageIconContainer?: IStyle;
    systemMessage?: IStyle;
    textField?: IStyle;
    textFieldContainer?: IStyle;
}

// @public
export type SoundEffect = {
    url: string;
};

// @public
export interface SpokenLanguageStrings {
    // (undocumented)
    'ar-ae': string;
    // (undocumented)
    'ar-sa': string;
    // (undocumented)
    'cs-cz': string;
    // (undocumented)
    'cy-gb': string;
    // (undocumented)
    'da-dk': string;
    // (undocumented)
    'de-de': string;
    // (undocumented)
    'el-gr': string;
    // (undocumented)
    'en-au': string;
    // (undocumented)
    'en-ca': string;
    // (undocumented)
    'en-gb': string;
    // (undocumented)
    'en-in': string;
    // (undocumented)
    'en-nz': string;
    // (undocumented)
    'en-us': string;
    // (undocumented)
    'es-es': string;
    // (undocumented)
    'es-mx': string;
    // (undocumented)
    'fi-fi': string;
    // (undocumented)
    'fr-ca': string;
    // (undocumented)
    'fr-fr': string;
    // (undocumented)
    'he-il': string;
    // (undocumented)
    'hi-in': string;
    // (undocumented)
    'hu-hu': string;
    // (undocumented)
    'it-it': string;
    // (undocumented)
    'ja-jp': string;
    // (undocumented)
    'ko-kr': string;
    // (undocumented)
    'nb-no': string;
    // (undocumented)
    'nl-be': string;
    // (undocumented)
    'nl-nl': string;
    // (undocumented)
    'pl-pl': string;
    // (undocumented)
    'pt-br': string;
    // (undocumented)
    'pt-pt': string;
    // (undocumented)
    'ro-ro': string;
    // (undocumented)
    'ru-ru': string;
    // (undocumented)
    'sk-sk': string;
    // (undocumented)
    'sv-se': string;
    // (undocumented)
    'th-th': string;
    // (undocumented)
    'tr-tr': string;
    // (undocumented)
    'uk-ua': string;
    // (undocumented)
    'vi-vn': string;
    // (undocumented)
    'zh-cn': string;
    // (undocumented)
    'zh-hk': string;
    // (undocumented)
    'zh-tw': string;
}

// @public
export type Spotlight = {
    spotlightedOrderPosition?: number;
};

// @public
export interface SpotlightCallFeatureState {
    localParticipantSpotlight?: SpotlightState;
    maxParticipantsToSpotlight: number;
    spotlightedParticipants: SpotlightedParticipant[];
}

// @public
export type SpotlightChangedListener = (args: {
    added: SpotlightedParticipant[];
    removed: SpotlightedParticipant[];
}) => void;

// @public
export interface SpotlightPromptStrings {
    closeSpotlightPromptButtonLabel: string;
    startSpotlightCancelButtonLabel: string;
    startSpotlightConfirmButtonLabel: string;
    startSpotlightHeading: string;
    startSpotlightOnSelfText: string;
    startSpotlightText: string;
    stopAllSpotlightHeading: string;
    stopAllSpotlightText: string;
    stopSpotlightCancelButtonLabel: string;
    stopSpotlightConfirmButtonLabel: string;
    stopSpotlightHeading: string;
    stopSpotlightOnSelfConfirmButtonLabel: string;
    stopSpotlightOnSelfHeading: string;
    stopSpotlightOnSelfText: string;
    stopSpotlightText: string;
}

// @public
export interface SpotlightState {
    spotlightedOrderPosition?: number;
}

// @public
export type StartCallIdentifier = CommunicationIdentifier;

// @public
export interface StartCaptionsAdapterOptions extends StartCaptionsOptions {
    startInBackground?: boolean;
}

// @public
export const StartCaptionsButton: (props: StartCaptionsButtonProps) => JSX.Element;

// @public (undocumented)
export interface StartCaptionsButtonProps extends ControlBarButtonProps {
    currentSpokenLanguage: string;
    onSetSpokenLanguage: (language: string) => Promise<void>;
    onStartCaptions: (options?: CaptionsOptions) => Promise<void>;
    onStopCaptions: () => Promise<void>;
    strings?: StartCaptionsButtonStrings;
}

// @public
export type StartCaptionsButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    checked: boolean;
    currentCaptionLanguage: string;
    currentSpokenLanguage: string;
};

// @public
export interface StartCaptionsButtonStrings {
    offLabel: string;
    onLabel: string;
    tooltipOffContent: string;
    tooltipOnContent: string;
}

// @public
export interface StatefulCallClient extends CallClient {
    createCallAgent(...args: Parameters<CallClient['createCallAgent']>): Promise<DeclarativeCallAgent>;
    createTeamsCallAgent(...args: Parameters<CallClient['createTeamsCallAgent']>): Promise<DeclarativeTeamsCallAgent>;
    createView(callId: string | undefined, participantId: CommunicationIdentifier | undefined, stream: LocalVideoStreamState | RemoteVideoStreamState, options?: CreateViewOptions): Promise<CreateViewResult | undefined>;
    disposeView(callId: string | undefined, participantId: CommunicationIdentifier | undefined, stream: LocalVideoStreamState | RemoteVideoStreamState): void;
    getState(): CallClientState;
    offStateChange(handler: (state: CallClientState) => void): void;
    onStateChange(handler: (state: CallClientState) => void): void;
}

// @public
export type StatefulCallClientArgs = {
    userId: CommunicationUserIdentifier | MicrosoftTeamsUserIdentifier;
};

// @public
export type StatefulCallClientOptions = {
    callClientOptions: CallClientOptions;
    maxStateChangeListeners?: number;
};

// @public
export interface StatefulChatClient extends ChatClient {
    dispose(): void;
    downloadResourceToCache(threadId: string, messageId: string, resourceUrl: string): void;
    getState(): ChatClientState;
    offStateChange(handler: (state: ChatClientState) => void): void;
    onStateChange(handler: (state: ChatClientState) => void): void;
    removeResourceFromCache(threadId: string, messageId: string, resourceUrl: string): void;
}

// @public
export type StatefulChatClientArgs = {
    userId: CommunicationUserIdentifier;
    displayName: string;
    endpoint: string;
    credential: CommunicationTokenCredential;
};

// @public
export type StatefulChatClientOptions = {
    chatClientOptions: ChatClientOptions;
    maxStateChangeListeners?: number;
};

// @public
export interface StatefulDeviceManager extends DeviceManager {
    getUnparentedVideoStreams: () => LocalVideoStream[];
    selectCamera: (device: VideoDeviceInfo) => void;
}

// @public
export interface StopCaptionsAdapterOptions {
    stopInBackground?: boolean;
}

// @public
export const StreamMedia: (props: StreamMediaProps) => JSX.Element;

// @public
export interface StreamMediaProps {
    isMirrored?: boolean;
    loadingState?: LoadingState;
    styles?: BaseCustomStyles;
    videoStreamElement: HTMLElement | null;
}

// @public (undocumented)
export type SupportedCaptionLanguage = keyof CaptionLanguageStrings;

// @public (undocumented)
export type SupportedSpokenLanguage = keyof SpokenLanguageStrings;

// @public
export interface SurveyIssues {
    // (undocumented)
    audioRating: {
        noLocalAudio: string;
        noRemoteAudio: string;
        echo: string;
        audioNoise: string;
        lowVolume: string;
        audioStoppedUnexpectedly: string;
        distortedSpeech: string;
        audioInterruption: string;
        otherIssues: string;
    };
    // (undocumented)
    overallRating: {
        callCannotJoin: string;
        callCannotInvite: string;
        hadToRejoin: string;
        callEndedUnexpectedly: string;
        otherIssues: string;
    };
    // (undocumented)
    screenshareRating: {
        noContentLocal: string;
        noContentRemote: string;
        cannotPresent: string;
        lowQuality: string;
        freezes: string;
        stoppedUnexpectedly: string;
        largeDelay: string;
        otherIssues: string;
    };
    // (undocumented)
    videoRating: {
        noVideoReceived: string;
        noVideoSent: string;
        lowQuality: string;
        freezes: string;
        stoppedUnexpectedly: string;
        darkVideoReceived: string;
        audioVideoOutOfSync: string;
        otherIssues: string;
    };
}

// @public
export interface SurveyIssuesHeadingStrings {
    // (undocumented)
    audioRating: string;
    // (undocumented)
    overallRating: string;
    // (undocumented)
    screenshareRating: string;
    // (undocumented)
    videoRating: string;
}

// @public
export type SystemMessage = ParticipantAddedSystemMessage | ParticipantRemovedSystemMessage | TopicUpdatedSystemMessage | ContentSystemMessage;

// @public
export interface SystemMessageCommon extends MessageCommon {
    // (undocumented)
    iconName: string;
    // (undocumented)
    messageType: 'system';
}

// @public
export type TeamsAdapterOptions = CommonCallAdapterOptions;

// @public
export interface TeamsCallAdapter extends CommonCallAdapter {
    // @deprecated
    joinCall(microphoneOn?: boolean): TeamsCall | undefined;
    joinCall(options?: JoinCallOptions): TeamsCall | undefined;
    startCall(participants: string[], options?: StartCallOptions): TeamsCall | undefined;
    startCall(participants: StartCallIdentifier[], options?: StartCallOptions): TeamsCall | undefined;
}

// @public
export type TeamsCallAdapterArgs = TeamsCallAdapterArgsCommon & {
    locator: TeamsMeetingLinkLocator | TeamsMeetingIdLocator;
};

// @public
export type TeamsCallAdapterArgsCommon = {
    userId: MicrosoftTeamsUserIdentifier;
    credential: CommunicationTokenCredential;
    options?: TeamsAdapterOptions;
};

// @public
export interface TeamsCallingHandlers extends CommonCallingHandlers {
    // (undocumented)
    onStartCall: (participants: CommunicationIdentifier[], options?: StartCallOptions) => undefined | TeamsCall;
}

// @public
export type TeamsIncomingCallManagement = {
    incomingCalls: ReadonlyArray<TeamsIncomingCall>;
};

// @public
export interface TeamsIncomingCallState {
    callEndReason?: CallEndReason;
    callerInfo: CallerInfo;
    endTime?: Date;
    id: string;
    info: CallInfoState;
    startTime: Date;
}

// @public
export const toFlatCommunicationIdentifier: (identifier: CommunicationIdentifier) => string;

// @public
export type TopicChangedListener = (event: {
    topic: string;
}) => void;

// @public
export interface TopicUpdatedSystemMessage extends SystemMessageCommon {
    // (undocumented)
    systemMessageType: 'topicUpdated';
    // (undocumented)
    topic: string;
}

// @public
export interface TranscriptionCallFeature {
    isTranscriptionActive: boolean;
}

// @public
export type TransferAcceptedListener = (event: TransferEventArgs) => void;

// @public
export interface TransferFeature {
    acceptedTransfers: {
        [key: string]: AcceptedTransfer;
    };
}

// @public
export const TypingIndicator: (props: TypingIndicatorProps) => JSX.Element;

// @public
export interface TypingIndicatorProps {
    onRenderUser?: (users: CommunicationParticipant) => JSX.Element;
    strings?: Partial<TypingIndicatorStrings>;
    styles?: TypingIndicatorStylesProps;
    typingUsers: CommunicationParticipant[];
}

// @public
export type TypingIndicatorSelector = (state: ChatClientState, props: ChatBaseSelectorProps) => {
    typingUsers: CommunicationParticipant[];
};

// @public
export interface TypingIndicatorStrings {
    delimiter: string;
    multipleUsers: string;
    multipleUsersAbbreviateMany: string;
    multipleUsersAbbreviateOne: string;
    singleUser: string;
}

// @public
export interface TypingIndicatorStylesProps extends BaseCustomStyles {
    typingString?: IStyle;
    typingUserDisplayName?: IStyle;
}

// @public
export type UpdateMessageCallback = (messageId: string, content: string) => Promise<void>;

// @public
export const useAzureCommunicationCallAdapter: (args: Partial<AzureCommunicationCallAdapterArgs | AzureCommunicationOutboundCallAdapterArgs>, afterCreate?: (adapter: CallAdapter) => Promise<CallAdapter>, beforeDispose?: (adapter: CallAdapter) => Promise<void>) => CallAdapter | undefined;

// @public
export const useAzureCommunicationCallWithChatAdapter: (args: Partial<AzureCommunicationCallWithChatAdapterArgs>, afterCreate?: (adapter: CallWithChatAdapter) => Promise<CallWithChatAdapter>, beforeDispose?: (adapter: CallWithChatAdapter) => Promise<void>) => CallWithChatAdapter | undefined;

// @public
export const useAzureCommunicationChatAdapter: (args: Partial<AzureCommunicationChatAdapterArgs>, afterCreate?: (adapter: ChatAdapter) => Promise<ChatAdapter>, beforeDispose?: (adapter: ChatAdapter) => Promise<void>) => ChatAdapter | undefined;

// @public
export const useCall: () => Call | undefined;

// @public
export const useCallAgent: () => CallAgent | undefined;

// @public
export const useCallClient: () => StatefulCallClient;

// @public
export const useChatClient: () => StatefulChatClient;

// @public
export const useChatThreadClient: () => ChatThreadClient;

// @public
export const useDeviceManager: () => StatefulDeviceManager | undefined;

// @public
export const usePropsFor: <Component extends (props: any) => JSX.Element>(component: Component, type?: 'calling' | 'chat') => ComponentProps<Component>;

// @public
export const useSelector: <ParamT extends Selector | undefined>(selector: ParamT, selectorProps?: ParamT extends Selector ? Parameters<ParamT>[1] : undefined, type?: 'calling' | 'chat') => ParamT extends Selector ? ReturnType<ParamT> : undefined;

// @public
export const useTeamsCall: () => undefined | TeamsCall;

// @public
export const useTeamsCallAdapter: (args: Partial<TeamsCallAdapterArgs>, afterCreate?: (adapter: TeamsCallAdapter) => Promise<TeamsCallAdapter>, beforeDispose?: (adapter: TeamsCallAdapter) => Promise<void>) => TeamsCallAdapter | undefined;

// @public
export const useTeamsCallAgent: () => undefined | TeamsCallAgent;

// @public
export const useTheme: () => Theme;

// @public
export interface VerticalGalleryControlBarStyles extends BaseCustomStyles {
    counter?: IStyle;
    nextButton?: IStyle;
    previousButton?: IStyle;
}

// @public
export interface VerticalGalleryStrings {
    leftNavButtonAriaLabel?: string;
    rightNavButtonAriaLabel?: string;
}

// @public
export interface VerticalGalleryStyles extends BaseCustomStyles {
    children?: IStyle;
    controlBar?: VerticalGalleryControlBarStyles;
}

// @public
export interface VideoBackgroundBlurEffect extends BackgroundBlurConfig {
    effectName: 'blur';
}

// @public
export type VideoBackgroundEffect = VideoBackgroundNoEffect | VideoBackgroundBlurEffect | VideoBackgroundReplacementEffect;

// @public
export type VideoBackgroundEffectsDependency = {
    createBackgroundBlurEffect: (config?: BackgroundBlurConfig) => BackgroundBlurEffect;
    createBackgroundReplacementEffect: (config: BackgroundReplacementConfig) => BackgroundReplacementEffect;
};

// @public
export interface VideoBackgroundImage {
    key: string;
    tooltipText?: string;
    url: string;
}

// @public
export interface VideoBackgroundNoEffect {
    effectName: 'none';
}

// @public
export interface VideoBackgroundReplacementEffect extends BackgroundReplacementConfig {
    effectName: 'replacement';
    key?: string;
}

// @public
export const VideoGallery: (props: VideoGalleryProps) => JSX.Element;

// @public (undocumented)
export type VideoGalleryLayout = 'default' | 'floatingLocalVideo' | 'speaker' | 'focusedContent';

// @public
export interface VideoGalleryLocalParticipant extends VideoGalleryParticipant {
    raisedHand?: RaisedHand;
    reaction?: Reaction;
    screenShareStream?: VideoGalleryStream;
}

// @public
export type VideoGalleryParticipant = {
    userId: string;
    isMuted?: boolean;
    displayName?: string;
    videoStream?: VideoGalleryStream;
    isScreenSharingOn?: boolean;
    spotlight?: Spotlight;
    mediaAccess?: MediaAccess;
    canAudioBeForbidden?: boolean;
    canVideoBeForbidden?: boolean;
};

// @public
export interface VideoGalleryProps {
    dominantSpeakers?: string[];
    layout?: VideoGalleryLayout;
    localParticipant: VideoGalleryLocalParticipant;
    localVideoCameraCycleButtonProps?: LocalVideoCameraCycleButtonProps;
    localVideoTileSize?: LocalVideoTileSize;
    localVideoViewOptions?: VideoStreamOptions;
    maxParticipantsToSpotlight?: number;
    maxRemoteVideoStreams?: number;
    onCreateLocalStreamView?: (options?: VideoStreamOptions) => Promise<void | CreateVideoStreamViewResult>;
    onCreateRemoteStreamView?: (userId: string, options?: VideoStreamOptions) => Promise<void | CreateVideoStreamViewResult>;
    onDisposeLocalScreenShareStreamView?: () => Promise<void>;
    onDisposeLocalStreamView?: () => void;
    onDisposeRemoteScreenShareStreamView?: (userId: string) => Promise<void>;
    // @deprecated (undocumented)
    onDisposeRemoteStreamView?: (userId: string) => Promise<void>;
    onDisposeRemoteVideoStreamView?: (userId: string) => Promise<void>;
    onForbidAudio?: (userIds: string[]) => Promise<void>;
    onForbidVideo?: (userIds: string[]) => Promise<void>;
    onMuteParticipant?: (userId: string) => Promise<void>;
    onPermitAudio?: (userIds: string[]) => Promise<void>;
    onPermitVideo?: (userIds: string[]) => Promise<void>;
    onPinParticipant?: (userId: string) => void;
    onRenderAvatar?: OnRenderAvatarCallback;
    onRenderLocalVideoTile?: (localParticipant: VideoGalleryLocalParticipant) => JSX.Element;
    onRenderRemoteVideoTile?: (remoteParticipant: VideoGalleryRemoteParticipant) => JSX.Element;
    onStartLocalSpotlight?: () => Promise<void>;
    onStartRemoteSpotlight?: (userIds: string[]) => Promise<void>;
    onStopLocalSpotlight?: () => Promise<void>;
    onStopRemoteSpotlight?: (userIds: string[]) => Promise<void>;
    onUnpinParticipant?: (userId: string) => void;
    overflowGalleryPosition?: OverflowGalleryPosition;
    pinnedParticipants?: string[];
    reactionResources?: ReactionResources;
    remoteParticipants?: VideoGalleryRemoteParticipant[];
    remoteVideoTileMenu?: false | VideoTileContextualMenuProps | VideoTileDrawerMenuProps;
    remoteVideoViewOptions?: VideoStreamOptions;
    showCameraSwitcherInLocalPreview?: boolean;
    showMuteIndicator?: boolean;
    spotlightedParticipants?: string[];
    strings?: Partial<VideoGalleryStrings>;
    styles?: VideoGalleryStyles;
    videoTilesOptions?: VideoTilesOptions;
}

// @public
export interface VideoGalleryRemoteParticipant extends VideoGalleryParticipant {
    isSpeaking?: boolean;
    mediaAccess?: MediaAccess;
    raisedHand?: RaisedHand;
    reaction?: Reaction;
    screenShareStream?: VideoGalleryStream;
    state?: ParticipantState;
}

// @public
export type VideoGallerySelector = (state: CallClientState, props: CallingBaseSelectorProps) => {
    screenShareParticipant?: VideoGalleryRemoteParticipant;
    localParticipant: VideoGalleryLocalParticipant;
    remoteParticipants: VideoGalleryRemoteParticipant[];
    dominantSpeakers?: string[];
    optimalVideoCount?: number;
    spotlightedParticipants?: string[];
    maxParticipantsToSpotlight?: number;
};

// @public
export interface VideoGalleryStream {
    id?: number;
    isAvailable?: boolean;
    isMirrored?: boolean;
    isReceiving?: boolean;
    renderElement?: HTMLElement;
    scalingMode?: ViewScalingMode;
    streamSize?: {
        width: number;
        height: number;
    };
}

// @public
export interface VideoGalleryStrings {
    addSpotlightVideoTileMenuLabel: string;
    attendeeRole: string;
    displayNamePlaceholder: string;
    fillRemoteParticipantFrame: string;
    fitRemoteParticipantToFrame: string;
    localScreenShareLoadingMessage: string;
    localVideoCameraSwitcherLabel: string;
    localVideoLabel: string;
    localVideoMovementAriaLabel: string;
    localVideoMovementLabel: string;
    localVideoSelectedDescription: string;
    muteParticipantMenuItemLabel: string;
    pinnedParticipantAnnouncementAriaLabel: string;
    pinParticipantForMe: string;
    pinParticipantMenuItemAriaLabel: string;
    screenIsBeingSharedMessage: string;
    screenShareLoadingMessage: string;
    spotlightLimitReachedMenuTitle: string;
    startSpotlightVideoTileMenuLabel: string;
    stopSpotlightOnSelfVideoTileMenuLabel: string;
    stopSpotlightVideoTileMenuLabel: string;
    unpinnedParticipantAnnouncementAriaLabel: string;
    unpinParticipantForMe: string;
    unpinParticipantMenuItemAriaLabel: string;
    waitingScreenText: string;
}

// @public
export interface VideoGalleryStyles extends BaseCustomStyles {
    gridLayout?: GridLayoutStyles;
    horizontalGallery?: HorizontalGalleryStyles;
    localVideo?: IStyle;
    verticalGallery?: VerticalGalleryStyles;
}

// @public
export interface VideoStreamOptions {
    isMirrored?: boolean;
    scalingMode?: ViewScalingMode;
}

// @public
export interface VideoStreamRendererViewState {
    isMirrored: boolean;
    scalingMode: ScalingMode;
    target: HTMLElement;
}

// @public
export const VideoTile: (props: VideoTileProps) => JSX.Element;

// @public
export interface VideoTileContextualMenuProps {
    kind: 'contextual';
}

// @public
export interface VideoTileDrawerMenuProps {
    hostId?: string;
    kind: 'drawer';
}

// @public
export interface VideoTileProps {
    alwaysShowLabelBackground?: boolean;
    children?: React_2.ReactNode;
    contextualMenu?: IContextualMenuProps;
    displayName?: string;
    initialsName?: string;
    isMirrored?: boolean;
    isMuted?: boolean;
    isPinned?: boolean;
    isSpeaking?: boolean;
    isSpotlighted?: boolean;
    mediaAccess?: MediaAccess;
    noVideoAvailableAriaLabel?: string;
    onLongTouch?: () => void;
    onRenderPlaceholder?: OnRenderAvatarCallback;
    overlay?: JSX.Element | null;
    participantState?: ParticipantState;
    personaMaxSize?: number;
    personaMinSize?: number;
    raisedHand?: RaisedHand;
    reactionResources?: ReactionResources;
    renderElement?: JSX.Element | null;
    showLabel?: boolean;
    showMuteIndicator?: boolean;
    strings?: VideoTileStrings;
    styles?: VideoTileStylesProps;
    userId?: string;
}

// @public
export interface VideoTilesOptions {
    alwaysShowLabelBackground?: boolean;
}

// @public
export interface VideoTileStrings {
    moreOptionsButtonAriaLabel: string;
    moreOptionsParticipantCameraDisabledAriaLabel: string;
    moreOptionsParticipantHandRaisedAriaLabel: string;
    moreOptionsParticipantIsSpeakingAriaLabel: string;
    moreOptionsParticipantMicDisabledAriaLabel: string;
    moreOptionsParticipantMutedStateMutedAriaLabel: string;
    moreOptionsParticipantMutedStateUnmutedAriaLabel: string;
    participantStateHold: string;
    participantStateRinging: string;
}

// @public
export interface VideoTileStylesProps extends BaseCustomStyles {
    displayNameContainer?: IStyle;
    overlayContainer?: IStyle;
    videoContainer?: IStyle;
}

// @public
export type ViewScalingMode = 'Stretch' | 'Crop' | 'Fit';

// (No @packageDocumentation comment for this package)