/// 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 { ParticipantInfo } 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 { RealTimeTextInfo as RealTimeTextInfo_2 } from '@azure/communication-calling'; import { RealTimeTextResultType } 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'; /** * Transfer feature state * * @public */ export declare interface AcceptedTransfer { /** * Stores call id of accepted transfer */ callId: string; /** * Stores timestamp when transfer was accepted */ timestamp: Date; } /** * Active error messages to be shown via {@link ErrorBar}. * * @public */ export declare interface ActiveErrorMessage { /** * Type of error that is active. */ type: ErrorType; /** * The latest timestamp when this error was observed. * * When available, this is used to track errors that have already been seen and dismissed * by the user. */ timestamp?: Date; } /** * Active notifications to be shown via {@link NotificationStack}. * * @public */ export declare interface ActiveNotification { /** * Type of error that is active. */ type: NotificationType; /** * Callback called when the primary button inside notification bar is clicked. */ onClickPrimaryButton?: () => void; /** * Callback called when the primary button inside notification bar is clicked. */ onClickSecondaryButton?: () => void; /** * Callback called when the notification is dismissed. */ onDismiss?: () => void; /** * If set, notification will automatically dismiss after 5 seconds */ autoDismiss?: boolean; /** * The latest timestamp when this notification was observed. * * When available, this is used to track notifications that have already been seen and dismissed * by the user. */ timestamp?: Date; /** * Aria-live property for the notification. * @defaultValue polite */ ariaLive?: 'assertive' | 'off' | 'polite'; } /** * Error reported via error events and stored in adapter state. * * @public */ export declare interface AdapterError extends Error { /** * The operation that failed. */ target: string; /** * Error thrown by the failed operation. */ innerError: Error; /** * Timestamp added to the error in the adapter implementation. */ timestamp: Date; } /** * Adapters stores the latest error for each operation in the state. * * `target` is an adapter defined string for each unique operation performed by the adapter. * * @public */ export declare type AdapterErrors = { [target: string]: AdapterError; }; /** * Notification from call client state stored in adapter state. * * @public */ export declare interface AdapterNotification { /** * Target of notification. There should only one notification per target. */ target: string; /** * Timestamp added to the notification in the adapter implementation. */ timestamp: Date; } /** * Adapters stores the latest notification for each target. * * @public */ export declare type AdapterNotifications = { [target: string]: AdapterNotification; }; /** * Functionality for interfacing with Composite adapter state. * * @public */ export declare interface AdapterState { /** Subscribes the handler to stateChanged events. */ onStateChange(handler: (state: TState) => void): void; /** Unsubscribes the handler to stateChanged events. */ offStateChange(handler: (state: TState) => void): void; /** Get the current State */ getState(): TState; } /** * Compare if 2 react components are exact equal, result type will be true/false * * @public */ export declare type AreEqual JSX.Element | undefined, B extends (props: any) => JSX.Element | undefined> = true extends AreTypeEqual & AreParamEqual ? true : false; /** * Compare if props of 2 react components are equal, result type will be true/false * * @public */ export declare type AreParamEqual JSX.Element | undefined, B extends (props: any) => JSX.Element | undefined> = AreTypeEqual[0]>, Required[0]>>; /** * Compare if two types are equal, result type will be true/false * * @public */ export declare type AreTypeEqual = A extends B ? (B extends A ? true : false) : false; /** * Data model that represents a chat message attachment * where it contains an ID to uniquely identify the attachment, * a name that represents the name of file, and * a URL to download the attachment. * * @public */ export declare interface AttachmentMetadata { /** * Unique ID of the attachment. */ id: string; /** * Attachment name to be displayed. */ name: string; /** * Download URL for the attachment. */ url: string; } /** * Custom data attributes for displaying avatar for a user. * * @public */ export declare type AvatarPersonaData = { /** * Primary text to display, usually the name of the person. */ text?: string; /** * Image URL to use, should be a square aspect ratio and big enough to fit in the image area. */ imageUrl?: string; /** * The user's initials to display in the image area when there is no image. * @defaultvalue Derived from `text` */ imageInitials?: string; /** * The background color when the user's initials are displayed. * @defaultvalue Derived from `text` */ initialsColor?: PersonaInitialsColor | string; /** * The text color when the user's initials are displayed * @defaultvalue `white` */ initialsTextColor?: string; /** * If true, show the special coin for unknown persona. * It has '?' in place of initials, with static font and background colors */ showUnknownPersonaCoin?: boolean; }; /** * Callback function used to provide custom data to build an avatar for a user. * * @public */ export declare type AvatarPersonaDataCallback = (userId: string) => Promise; /** * Arguments for creating the Azure Communication Services implementation of {@link CallAdapter}. * * Note: `displayName` can be a maximum of 256 characters. * * @public */ export declare type AzureCommunicationCallAdapterArgs = { userId: CommunicationUserIdentifier; displayName: string; credential: CommunicationTokenCredential; locator: CallAdapterLocator; /** * Optional parameters for the {@link AzureCommunicationCallAdapter} created */ options?: AzureCommunicationCallAdapterOptions; }; /** * Optional parameters to create {@link AzureCommunicationCallAdapter} * * @public */ export declare type AzureCommunicationCallAdapterOptions = CommonCallAdapterOptions; /** * Arguments for {@link createAzureCommunicationCallWithChatAdapter} * * @public */ export declare type AzureCommunicationCallWithChatAdapterArgs = { endpoint: string; userId: CommunicationUserIdentifier; displayName: string; credential: CommunicationTokenCredential; locator: CallAndChatLocator | TeamsMeetingLinkLocator | TeamsMeetingIdLocator; alternateCallerId?: string; callAdapterOptions?: AzureCommunicationCallAdapterOptions; }; /** * Arguments for {@link createAzureCommunicationCallWithChatAdapterFromClient} * * @public */ export declare type AzureCommunicationCallWithChatAdapterFromClientArgs = { callLocator: CallAdapterLocator | TeamsMeetingLinkLocator; callAgent: CallAgent; callClient: StatefulCallClient; chatClient: StatefulChatClient; chatThreadClient: ChatThreadClient; callAdapterOptions?: AzureCommunicationCallAdapterOptions; }; /** * Arguments for creating the Azure Communication Services implementation of {@link ChatAdapter}. * * @public */ export declare type AzureCommunicationChatAdapterArgs = { endpoint: string; userId: CommunicationUserIdentifier; displayName: string; credential: CommunicationTokenCredential; threadId: string; chatAdapterOptions?: ChatAdapterOptions; }; /** * Arguments for creating the Azure Communication Services implementation of {@link CallAdapter}. * * These arguments are used to create an outbound call scenarios. * * Note: `displayName` can be a maximum of 256 characters. * * @public */ export declare type AzureCommunicationOutboundCallAdapterArgs = { userId: CommunicationUserIdentifier; displayName: string; credential: CommunicationTokenCredential; targetCallees: StartCallIdentifier[]; /** * A phone number in E.164 format procured using Azure Communication Services that will be used to represent callers identity. * E.164 numbers are formatted as [+] [country code] [phone number including area code]. For example, +14255550123 for a US phone number. */ alternateCallerId?: string; /** * Optional parameters for the {@link AzureCommunicationCallAdapter} created */ options?: AzureCommunicationCallAdapterOptions; }; /** * Properties common to all composites exported from this library. * * @public */ export declare interface BaseCompositeProps> { /** * Fluent theme for the composite. * * @defaultValue light theme */ fluentTheme?: PartialTheme | Theme; /** * Custom Icon override for the composite. * A JSX element can be provided to override the default icon. */ icons?: TIcons; /** * Locale for the composite. * * @defaultValue English (US) */ locale?: CompositeLocale; /** * Whether composite is displayed right-to-left. * * @defaultValue false */ rtl?: boolean; /** * A callback function that can be used to provide custom data to Avatars rendered * in Composite. * * This will not affect the displayName shown in the composite. * The displayName throughout the composite will be what is provided to the adapter when the adapter is created. * will be what is provided to the adapter when the adapter is created. */ onFetchAvatarPersonaData?: AvatarPersonaDataCallback; /** * A callback function that can be used to provide custom menu items for a participant in * participant list. */ onFetchParticipantMenuItems?: ParticipantMenuItemsCallback; } /** * Basic fluent styles props for all components exported from this libray. * * @public */ export declare interface BaseCustomStyles { /** Styles for the root container. */ root?: IStyle; } /** * Breakout rooms state * * @public */ export declare interface BreakoutRoomsState { /** Breakout room assigned to local user in call */ assignedBreakoutRoom?: BreakoutRoom; /** Breakout room settings of call. This is defined when call is a breakout room. */ breakoutRoomSettings?: BreakoutRoomsSettings; /** Display name of breakout room. This is defined when call is a breakout room. */ breakoutRoomDisplayName?: string; } /** * An Adapter interface specific for Azure Communication identity which extends {@link CommonCallAdapter}. * * @public */ export declare interface CallAdapter extends CommonCallAdapter { /** * Join the call with microphone initially on/off. * @deprecated Use joinCall(options?:JoinCallOptions) instead. * @param microphoneOn - Whether microphone is initially enabled * * @public */ joinCall(microphoneOn?: boolean): Call | undefined; /** * Join the call with options bag to set microphone/camera initial state when joining call * true = turn on the device when joining call * false = turn off the device when joining call * 'keep'/undefined = retain devices' precall state * * @param options - param to set microphone/camera initially on/off/use precall state. * * @public */ joinCall(options?: JoinCallOptions): Call | undefined; /** * Start the call. * * @param participants - An array of participant ids to join * * @public */ startCall(participants: string[], options?: StartCallOptions): Call | undefined; /** * Start the call. * @param participants - An array of {@link @azure/communication-common#CommunicationIdentifier} to be called * @public */ startCall(participants: StartCallIdentifier[], options?: StartCallOptions): Call | undefined; } /** * Payload for {@link CallEndedListener} containing details on the ended call. * * @public */ export declare type CallAdapterCallEndedEvent = { callId: string; code?: number; subCode?: number; }; /** * Functionality for managing the current call or start a new call * @deprecated CallAdapter interface will be flatten, consider using CallAdapter directly * @public */ export declare interface CallAdapterCallManagement extends CallAdapterCallOperations { /** * Join the call with microphone initially on/off. * @deprecated Use joinCall(options?:JoinCallOptions) instead. * @param microphoneOn - Whether microphone is initially enabled * * @public */ joinCall(microphoneOn?: boolean): Call | undefined; /** * Join the call with options bag to set microphone/camera initial state when joining call * true = turn on the device when joining call * false = turn off the device when joining call * 'keep'/undefined = retain devices' precall state * * @param options - param to set microphone/camera initially on/off/use precall state. * * @public */ joinCall(options?: JoinCallOptions): Call | undefined; /** * Start the call. * * @param participants - An array of participant ids to join * * @public */ startCall(participants: string[], options?: StartCallOptions): Call | undefined; /** * Start the call. * @param participants - An array of {@link @azure/communication-common#CommunicationIdentifier} to be called * @public */ startCall(participants: StartCallIdentifier[], options?: StartCallOptions): Call | undefined; } /** * Functionality for managing the current call. * * @public */ export declare interface CallAdapterCallOperations { /** * Leave the call * * @param forEveryone - Whether to remove all participants when leaving * * @public */ leaveCall(forEveryone?: boolean): Promise; /** * Start the camera * This method will start rendering a local camera view when the call is not active * * @param options - Options to control how video streams are rendered {@link @azure/communication-calling#VideoStreamOptions } * * @public */ startCamera(options?: VideoStreamOptions): Promise; /** * Stop the camera * This method will stop rendering a local camera view when the call is not active * * @public */ stopCamera(): Promise; /** * Mute the current user during the call or disable microphone locally * * @public */ mute(): Promise; /** * Unmute the current user during the call or enable microphone locally * * @public */ unmute(): Promise; /** * Start sharing the screen during a call. * * @public */ startScreenShare(): Promise; /** * Raise hand for current user * * @public */ raiseHand(): Promise; /** * lower hand for current user * * @public */ lowerHand(): Promise; /** * Send reaction emoji * * @public */ onReactionClick(reaction: Reaction_2): Promise; /** * Stop sharing the screen * * @public */ stopScreenShare(): Promise; /** * Remove a participant from the call. * * @param userId - Id of the participant to be removed * * @public */ removeParticipant(userId: string): Promise; /** * Remove a participant from the call. * @param participant - {@link @azure/communication-common#CommunicationIdentifier} of the participant to be removed * @public */ removeParticipant(participant: CommunicationIdentifier): Promise; /** * Create the html view for a stream. * * @remarks * This method is implemented for composite * * @param remoteUserId - Id of the participant to render, leave it undefined to create the local camera view * @param options - Options to control how video streams are rendered {@link @azure/communication-calling#VideoStreamOptions } * * @public */ createStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise; /** * Dispose the html view for a stream. * * @remarks * This method is implemented for composite * * @deprecated Use {@link disposeRemoteVideoStreamView}, {@link disposeLocalVideoStreamView} and {@link disposeRemoteVideoStreamView} instead. * * @param remoteUserId - Id of the participant to render, leave it undefined to dispose the local camera view * @param options - Options to control how video streams are rendered {@link @azure/communication-calling#VideoStreamOptions } * * @public */ disposeStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise; /** * Create the html view for a stream. * * @remarks * This method is implemented for composite * * @param options - Options to control how video streams are rendered {@link @azure/communication-calling#VideoStreamOptions } * * @public */ createTogetherModeStreamView(options?: TogetherModeStreamOptions): Promise; /** * Start Together mode. * * @public */ startTogetherMode(): Promise; /** * Recalculate the seating positions for together mode. * * @remarks * This method is implemented for composite * * @param width - Width of the container * @param height - Height of the container * * @public */ setTogetherModeSceneSize(width: number, height: number): void; /** * Dispose the html view for a stream. * * @remarks * This method is implemented for composite * * * @public */ disposeTogetherModeStreamView(): Promise; /** * Dispose the html view for a screen share stream * * @remarks * this method is implemented for composite * * @param remoteUserId - Id of the participant to dispose the screen share stream view for. * * @public */ disposeScreenShareStreamView(remoteUserId: string): Promise; /** * Dispose the html view for a remote video stream * * @param remoteUserId - Id of the participant to dispose * * @public */ disposeRemoteVideoStreamView(remoteUserId: string): Promise; /** * Dispose the html view for a local video stream * * @public */ disposeLocalVideoStreamView(): Promise; /** * Holds the call. * * @public */ holdCall(): Promise; /** * Resumes the call from a `LocalHold` state. * * @public */ resumeCall(): Promise; /** * Add a participant to the call. * * @public */ addParticipant(participant: PhoneNumberIdentifier, options?: AddPhoneNumberOptions): Promise; addParticipant(participant: CommunicationUserIdentifier): Promise; /** * send dtmf tone to another participant in a 1:1 PSTN call * * @public */ sendDtmfTone(dtmfTone: DtmfTone_2): Promise; /** * Function to Start captions * @param options - options for start captions */ startCaptions(options?: StartCaptionsAdapterOptions): Promise; /** * Function to set caption language * @param language - language set for caption */ setCaptionLanguage(language: string): Promise; /** * Function to set spoken language * @param language - spoken language */ setSpokenLanguage(language: string): Promise; /** * Funtion to stop captions */ stopCaptions(options?: StopCaptionsAdapterOptions): Promise; /** * Start the video background effect. * * @public */ startVideoBackgroundEffect(videoBackgroundEffect: VideoBackgroundEffect): Promise; /** * Stop the video background effect. * * @public */ stopVideoBackgroundEffects(): Promise; /** * Override the background picker images for background replacement effect. * * @param backgroundImages - Array of custom background images. * * @public */ updateBackgroundPickerImages(backgroundImages: VideoBackgroundImage[]): void; /** * Update the selected video background effect. * * @public */ updateSelectedVideoBackgroundEffect(selectedVideoBackground: VideoBackgroundEffect): void; /** * Start the noise suppression effect. * */ startNoiseSuppressionEffect(): Promise; /** * Stop the noise suppression effect. * */ stopNoiseSuppressionEffect(): Promise; /** * Send the end of call survey result * * @public */ submitSurvey(survey: CallSurvey): Promise; /** * Start spotlight for local and remote participants by their user ids. * If no array of user ids is passed then action is performed on local participant. */ startSpotlight(userIds?: string[]): Promise; /** * Stop spotlight for local and remote participants by their user ids. * If no array of user ids is passed then action is performed on local participant. */ stopSpotlight(userIds?: string[]): Promise; /** * Stop all spotlights */ stopAllSpotlight(): Promise; /** * Mute a participant * * @param userId - Id of the participant to mute */ muteParticipant(userId: string): Promise; /** * Mute All participants */ muteAllRemoteParticipants(): Promise; /** * Return to origin call of breakout room */ returnFromBreakoutRoom(): Promise; /** * Forbid Teams meeting attendees audio by their user ids. */ forbidAudio(userIds: string[]): Promise; /** * Permit Teams meeting attendees audio by their user ids. */ permitAudio(userIds: string[]): Promise; /** * Forbid Teams meeting audio. */ forbidOthersAudio(): Promise; /** * Permit Teams meeting audio. */ permitOthersAudio(): Promise; /** * Forbid Teams meeting attendees video by their user ids. */ forbidVideo(userIds: string[]): Promise; /** * Permit Teams meeting attendees audio by their user ids. */ permitVideo(userIds: string[]): Promise; /** * Forbid Teams meeting video. */ forbidOthersVideo(): Promise; /** * Permit Teams meeting video. */ permitOthersVideo(): Promise; /** * Send real time text * @param text - real time text content * @param finalized - Boolean to indicate if the real time text is final */ sendRealTimeText: (text: string, isFinalized: boolean) => Promise; } /** * {@link CommonCallAdapter} state inferred from Azure Communication Services backend. * * @public */ export declare type CallAdapterClientState = { userId: CommunicationIdentifierKind; displayName?: string; call?: CallState; /** * State to track who the original call went out to. will be undefined the call is not a outbound * modality. This includes, groupCalls, Rooms calls, and Teams InteropMeetings. */ targetCallees?: CommunicationIdentifier[]; devices: DeviceManagerState; endedCall?: CallState; /** * State to track whether the call is a teams call. */ isTeamsCall: boolean; /** * State to track whether the call is a teams meeting. */ isTeamsMeeting: boolean; /** * State to track whether the call is a rooms call. */ isRoomsCall: boolean; /** * Latest error encountered for each operation performed via the adapter. */ latestErrors: AdapterErrors; /** * Latest notifications from call client state. */ latestNotifications: AdapterNotifications; /** * Azure communications Phone number to make PSTN calls with. */ alternateCallerId?: string; /** * Environment information about system the adapter is made on */ environmentInfo?: EnvironmentInfo; /** * State to track whether the local participant's camera is on. To be used when creating a custom * control bar with the CallComposite. */ cameraStatus?: 'On' | 'Off'; /** * Default set of background images for background replacement effect. */ videoBackgroundImages?: VideoBackgroundImage[]; /** * Dependency to be injected for video background effect. */ onResolveVideoEffectDependency?: () => Promise; /** * Dependency to be injected for deep noise suppression effect. */ onResolveDeepNoiseSuppressionDependency?: () => Promise; /** * State to track whether the noise suppression should be on by default. * @default true */ deepNoiseSuppressionOnByDefault?: boolean; /** * State to track whether to hide the noise suppression button. * @default false */ hideDeepNoiseSuppressionButton?: boolean; /** * State to track the selected video background effect. */ selectedVideoBackgroundEffect?: VideoBackgroundEffect; /** * Call from transfer request accepted by local user */ acceptedTransferCallState?: CallState; /** * Hide attendee names in teams meeting */ hideAttendeeNames?: boolean; /** * State to track the sounds to be used in the call. */ sounds?: CallingSounds; /** * State to track the reactions to be used. * @public */ reactions?: ReactionResources; }; /** * Functionality for managing devices within a call. * * @public */ export declare interface CallAdapterDeviceManagement { /** * Ask for permissions of devices. * * @remarks * Browser permission window will pop up if permissions are not granted yet * * @param constrain - Define constraints for accessing local devices {@link @azure/communication-calling#PermissionConstraints } * * @public */ askDevicePermission(constrain: PermissionConstraints): Promise; /** * Query for available camera devices. * * @remarks * This method should be called after askDevicePermission() * * @return An array of video device information entities {@link @azure/communication-calling#VideoDeviceInfo } * * @public */ queryCameras(): Promise; /** * Query for available microphone devices. * * @remarks * This method should be called after askDevicePermission() * * @return An array of audio device information entities {@link @azure/communication-calling#AudioDeviceInfo } * * @public */ queryMicrophones(): Promise; /** * Query for available speaker devices. * * @remarks * This method should be called after askDevicePermission() * * @return An array of audio device information entities {@link @azure/communication-calling#AudioDeviceInfo } * * @public */ querySpeakers(): Promise; /** * Set the camera to use in the call. * * @param sourceInfo - Camera device to choose, pick one returned by {@link CallAdapterDeviceManagement#queryCameras } * @param options - Options to control how the camera stream is rendered {@link @azure/communication-calling#VideoStreamOptions } * * @public */ setCamera(sourceInfo: VideoDeviceInfo, options?: VideoStreamOptions): Promise; /** * Set the microphone to use in the call. * * @param sourceInfo - Microphone device to choose, pick one returned by {@link CallAdapterDeviceManagement#queryMicrophones } * * @public */ setMicrophone(sourceInfo: AudioDeviceInfo): Promise; /** * Set the speaker to use in the call. * * @param sourceInfo - Speaker device to choose, pick one returned by {@link CallAdapterDeviceManagement#querySpeakers } * * @public */ setSpeaker(sourceInfo: AudioDeviceInfo): Promise; } /** * Locator used by {@link createAzureCommunicationCallAdapter} to locate the call to join * * @public */ export declare type CallAdapterLocator = TeamsMeetingLinkLocator | GroupCallLocator | RoomCallLocator | TeamsMeetingIdLocator; /** * {@link CommonCallAdapter} state. * * @public */ export declare type CallAdapterState = CallAdapterUiState & CallAdapterClientState; /** * Call composite events that can be subscribed to. * * @public */ export declare interface CallAdapterSubscribers { /** * Subscribe function for 'participantsJoined' event. */ on(event: 'participantsJoined', listener: ParticipantsJoinedListener): void; /** * Subscribe function for 'participantsLeft' event. */ on(event: 'participantsLeft', listener: ParticipantsLeftListener): void; /** * Subscribe function for 'isMutedChanged' event. * * @remarks * The event will be triggered whenever current user or remote user mute state changed * */ on(event: 'isMutedChanged', listener: IsMutedChangedListener): void; /** * Subscribe function for 'callIdChanged' event. * * @remarks * The event will be triggered when callId of current user changed. * */ on(event: 'callIdChanged', listener: CallIdChangedListener): void; /** * Subscribe function for 'isLocalScreenSharingActiveChanged' event. */ on(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void; /** * Subscribe function for 'displayNameChanged' event. */ on(event: 'displayNameChanged', listener: DisplayNameChangedListener): void; /** * Subscribe function for 'isSpeakingChanged' event. */ on(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void; /** * Subscribe function for 'callEnded' event. */ on(event: 'callEnded', listener: CallEndedListener): void; /** * Subscribe function for 'diagnosticChanged' event. * * This event fires whenever there is a change in user facing diagnostics about the ongoing call. */ on(event: 'diagnosticChanged', listener: DiagnosticChangedEventListner): void; /** * Subscribe function for 'selectedMicrophoneChanged' event. * * This event fires whenever the user selects a new microphone device. */ on(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void; /** * Subscribe function for 'selectedSpeakerChanged' event. * * This event fires whenever the user selects a new speaker device. */ on(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void; /** * Subscribe function for 'error' event. */ on(event: 'error', listener: (e: AdapterError) => void): void; /** * Subscribe function for 'captionsReceived' event. */ on(event: 'captionsReceived', listener: CaptionsReceivedListener): void; /** * Subscribe function for 'isCaptionsActiveChanged' event. */ on(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void; /** * Subscribe function for 'isCaptionLanguageChanged' event. */ on(event: 'isCaptionLanguageChanged', listener: IsCaptionLanguageChangedListener): void; /** * Subscribe function for 'isSpokenLanguageChanged' event. */ on(event: 'isSpokenLanguageChanged', listener: IsSpokenLanguageChangedListener): void; /** * Subscribe function for 'realTimeTextReceived' event. */ on(event: 'realTimeTextReceived', listener: RealTimeTextReceivedListener): void; /** * Subscribe function for 'transferRequested' event. */ on(event: 'transferAccepted', listener: TransferAcceptedListener): void; /** * Subscribe function for 'capabilitiesChanged' event. */ on(event: 'capabilitiesChanged', listener: CapabilitiesChangedListener): void; /** * Subscribe function for 'roleChanged' event. */ on(event: 'roleChanged', listener: PropertyChangedEvent): void; /** * Subscribe function for 'spotlightChanged' event. */ on(event: 'spotlightChanged', listener: SpotlightChangedListener): void; /** * Subscribe function for 'mutedByOthers' event. */ on(event: 'mutedByOthers', listener: PropertyChangedEvent): void; /** * Subscribe function for 'breakoutRoomsUpdated' event. */ on(event: 'breakoutRoomsUpdated', listener: BreakoutRoomsUpdatedListener): void; /** * Unsubscribe function for 'participantsJoined' event. */ off(event: 'participantsJoined', listener: ParticipantsJoinedListener): void; /** * Unsubscribe function for 'participantsLeft' event. */ off(event: 'participantsLeft', listener: ParticipantsLeftListener): void; /** * Unsubscribe function for 'isMutedChanged' event. */ off(event: 'isMutedChanged', listener: IsMutedChangedListener): void; /** * Unsubscribe function for 'callIdChanged' event. */ off(event: 'callIdChanged', listener: CallIdChangedListener): void; /** * Unsubscribe function for 'isLocalScreenSharingActiveChanged' event. */ off(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void; /** * Unsubscribe function for 'displayNameChanged' event. */ off(event: 'displayNameChanged', listener: DisplayNameChangedListener): void; /** * Unsubscribe function for 'isSpeakingChanged' event. */ off(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void; /** * Unsubscribe function for 'callEnded' event. */ off(event: 'callEnded', listener: CallEndedListener): void; /** * Unsubscribe function for 'diagnosticChanged' event. */ off(event: 'diagnosticChanged', listener: DiagnosticChangedEventListner): void; /** * Unsubscribe function for 'selectedMicrophoneChanged' event. */ off(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void; /** * Unsubscribe function for 'selectedSpeakerChanged' event. */ off(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void; /** * Unsubscribe function for 'error' event. */ off(event: 'error', listener: (e: AdapterError) => void): void; /** * Unsubscribe function for 'captionsReceived' event. */ off(event: 'captionsReceived', listener: CaptionsReceivedListener): void; /** * Unsubscribe function for 'isCaptionsActiveChanged' event. */ off(event: 'isCaptionsActiveChanged', listener: IsCaptionsActiveChangedListener): void; /** * Unsubscribe function for 'isCaptionLanguageChanged' event. */ off(event: 'isCaptionLanguageChanged', listener: IsCaptionLanguageChangedListener): void; /** * Unsubscribe function for 'isSpokenLanguageChanged' event. */ off(event: 'isSpokenLanguageChanged', listener: IsSpokenLanguageChangedListener): void; /** * Unsubscribe function for 'realTimeTextReceived' event. */ off(event: 'realTimeTextReceived', listener: RealTimeTextReceivedListener): void; /** * Unsubscribe function for 'transferRequested' event. */ off(event: 'transferAccepted', listener: TransferAcceptedListener): void; /** * Unsubscribe function for 'capabilitiesChanged' event. */ off(event: 'capabilitiesChanged', listener: CapabilitiesChangedListener): void; /** * Unsubscribe function for 'roleChanged' event. */ off(event: 'roleChanged', listener: PropertyChangedEvent): void; /** * Unsubscribe function for 'spotlightChanged' event. */ off(event: 'spotlightChanged', listener: SpotlightChangedListener): void; /** * Unsubscribe function for 'mutedByOthers' event. */ off(event: 'mutedByOthers', listener: PropertyChangedEvent): void; /** * Unsubscribe function for 'breakoutRoomsUpdated' event. */ off(event: 'breakoutRoomsUpdated', listener: BreakoutRoomsUpdatedListener): void; } /** * {@link CommonCallAdapter} state for pure UI purposes. * * @public */ export declare type CallAdapterUiState = { isLocalPreviewMicrophoneEnabled: boolean; page: CallCompositePage; }; /** * A {@link React.Context} that stores a {@link @azure/communication-calling#CallAgent}. * * Calling components from this package must be wrapped with a {@link CallAgentProvider}. * * @public */ export declare const CallAgentProvider: (props: CallAgentProviderProps) => JSX.Element; /** * Arguments to initialize a {@link CallAgentProvider}. * * @public */ export declare interface CallAgentProviderProps { children: React_2.ReactNode; callAgent?: CallAgent | TeamsCallAgent; } /** * State only version of {@link @azure/communication-calling#CallAgent} except calls is moved to be a child directly of * {@link CallClientState} and not included here. The reason to have CallAgent's state proxied is to provide access to * displayName. We don't flatten CallAgent.displayName and put it in CallClientState because it would be ambiguious that * displayName is actually reliant on the creation/existence of CallAgent to be available. * * @public */ export declare interface CallAgentState { /** * Proxy of {@link @azure/communication-calling#CallAgent.displayName}. */ displayName?: string; } /** * Arguments for use in {@link createAzureCommunicationCallWithChatAdapter} to join a Call with an associated Chat thread. * * @public */ export declare interface CallAndChatLocator { /** Locator used by {@link createAzureCommunicationCallWithChatAdapter} to locate the call to join */ callLocator: GroupCallLocator; /** Chat thread ID used by {@link createAzureCommunicationCallWithChatAdapter} to locate the chat thread to join */ chatThreadId: string; } /** * A {@link React.Context} that stores a {@link StatefulCallClient}. * * Calling components from this package must be wrapped with a {@link CallClientProvider}. * * @public */ export declare const CallClientProvider: (props: CallClientProviderProps) => JSX.Element; /** * Arguments to initialize a {@link CallClientProvider}. * * @public */ export declare interface CallClientProviderProps { children: React_2.ReactNode; callClient: StatefulCallClient; } /** * Container for all of the state data proxied by {@link StatefulCallClient}. The calls, callsEnded, incomingCalls, and * incomingCallsEnded states will be automatically provided if a callAgent has been created. The deviceManager will be * empty initially until populated see {@link DeviceManagerState}. The userId state is provided as a convenience for the * developer and is completely controled and set by the developer. * * @public */ export declare interface CallClientState { /** * Proxy of {@link @azure/communication-calling#CallAgent.calls} as an object with CallState {@link CallState} fields. * It is keyed by {@link @azure/communication-calling#Call.id}. Please note that * {@link @azure/communication-calling#Call.id} could change. You should not cache the id itself but the entire * {@link @azure/communication-calling#Call} and then use the id contained to look up data in this map. */ calls: { [key: string]: CallState; }; /** * Calls that have ended are stored here so the callEndReason could be checked. * It is an object with {@link @azure/communication-calling#Call.id} keys and {@link CallState} values. * * Only {@link MAX_CALL_HISTORY_LENGTH} Calls are kept in the history. Oldest calls are evicted if required. */ callsEnded: { [key: string]: CallState; }; /** * Proxy of {@link @azure/communication-calling#IncomingCall} as an object with {@link IncomingCall} fields. * It is keyed by {@link @azure/communication-calling#IncomingCall.id}. */ incomingCalls: { [key: string]: IncomingCallState | TeamsIncomingCallState; }; /** * Incoming Calls that have ended are stored here so the callEndReason could be checked. * It is an as an object with {@link @azure/communication-calling#Call.id} keys and {@link IncomingCall} values. * * Only {@link MAX_CALL_HISTORY_LENGTH} Calls are kept in the history. Oldest calls are evicted if required. */ incomingCallsEnded: { [key: string]: IncomingCallState | TeamsIncomingCallState; }; /** * Proxy of {@link @azure/communication-calling#DeviceManager}. Please review {@link DeviceManagerState}. */ deviceManager: DeviceManagerState; /** * Proxy of {@link @azure/communication-calling#CallAgent}. Please review {@link CallAgentState}. */ callAgent?: CallAgentState; /** * Stores a userId. This is not used by the {@link StatefulCallClient} and is provided here as a convenience for the * developer for easier access to userId. Must be passed in at initialization of the {@link StatefulCallClient}. * Completely controlled by the developer. */ userId: CommunicationIdentifierKind; /** * Stores the latest error for each API method. * * See documentation of {@Link CallErrors} for details. */ latestErrors: CallErrors; /** * Stores the latest notifications. * * See documentation of {@Link CallNotifications} for details. */ latestNotifications: CallNotifications; /** * A phone number in E.164 format that will be used to represent callers identity. * For example, using the alternateCallerId to add a participant using PSTN, this number will * be used as the caller id in the PSTN call. */ alternateCallerId?: string; /** * state to track the environment that the stateful client was made in is supported */ environmentInfo?: EnvironmentInfo; } /** * A customizable UI composite for calling experience. * * @remarks Call composite min width/height are as follow: * - mobile: 17.5rem x 21rem (280px x 336px, with default rem at 16px) * - desktop: 30rem x 22rem (480px x 352px, with default rem at 16px) * * @public */ export declare const CallComposite: (props: CallCompositeProps) => JSX.Element; /** * Icons that can be overridden for {@link CallComposite}. * * @public */ export declare 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; TogetherModeLayout?: JSX.Element; }; /** * Props for the OutboundCallComposite that you can use in your application. * * Contains two options bags: * - adapterOptions: Options for the {@link AzureCommunicationCallAdapter} * - callCompositeOptions: Options for the {@link CallComposite} {@link CallCompositeOptions} * * @public */ export declare interface CallCompositeLoaderProps extends Partial> { /** * UserId for the local user. */ userId: CommunicationUserIdentifier; /** * CommunicationTokenCredential for the local user. */ credential: CommunicationTokenCredential; /** * Display name for the local user. */ displayName: string; /** * locator for the call */ locator: CallAdapterLocator; /** * Options for the {@link AzureCommunicationCallAdapter} * This is used to configure the call adapter. */ callAdapterOptions?: AzureCommunicationCallAdapterOptions; /** * Options for the {@link CallComposite} {@link CallCompositeOptions} * This is used to configure the call composite. */ callCompositeOptions?: CallCompositeOptions; /** * Device form factor for the composite. */ formFactor?: 'mobile' | 'desktop'; } /** * Optional features of the {@link CallComposite}. * * @public */ export declare type CallCompositeOptions = { captionsBanner?: { height: 'full' | 'default'; }; /** * Surface Azure Communication Services backend errors in the UI with {@link @azure/communication-react#ErrorBar}. * Hide or show the error bar. * @defaultValue true */ errorBar?: boolean; /** * Hide or Customize the control bar element. * Can be customized by providing an object of type {@link @azure/communication-react#CallControlOptions}. * @defaultValue true */ callControls?: boolean | CallControlOptions; /** * Remote participant video tile menu options */ remoteVideoTileMenuOptions?: RemoteVideoTileMenuOptions; /** * Options for controlling the local video tile. * * @remarks if 'false' the local video tile will not be rendered. */ localVideoTile?: boolean | LocalVideoTileOptions; /** * Options for controlling video tile. */ videoTilesOptions?: VideoTilesOptions; /** * Options for controlling the notifications in the composite. */ notificationOptions?: NotificationOptions_2; /** * Whether to auto show the DTMF Dialer when the call starts in supported scenarios. * - Teams Voice Application like Call queue or Auto Attendant * - PSTN Calls * @defaultValue false */ disableAutoShowDtmfDialer?: boolean | DtmfDialPadOptions; /** * Options for controlling the starting layout of the composite's video gallery */ galleryOptions?: { /** * Layout for the gallery when the call starts */ layout?: VideoGalleryLayout; /** * Controls the view of the local screenshare stream in the gallery */ localScreenShareView?: LocalScreenShareView; }; /** * Options for end of call survey */ surveyOptions?: { /** * Disable call survey at the end of a call. * @defaultValue false */ disableSurvey?: boolean; /** * Optional callback to redirect users to custom screens when survey is done, note that default end call screen will be shown if this callback is not provided * This callback can be used to redirect users to different screens depending on survey state, whether it is submitted, skipped or has a problem when submitting the survey */ onSurveyClosed?: (surveyState: 'sent' | 'skipped' | 'error', surveyError?: string) => void; /** * Optional callback to handle survey data including free form text response * Note that free form text response survey option is only going to be enabled when this callback is provided * User will need to handle all free form text response on their own */ onSurveySubmitted?: (callId: string, surveyId: string, /** * This is the survey results containing star survey data and API tag survey data. * This part of the result will always be sent to the calling sdk * This callback provides user with the ability to gain access to survey data */ submittedSurvey: CallSurvey, /** * This is the survey results containing free form text * This part of the result will not be handled by composites * User will need to collect and handle this information 100% on their own * Free form text survey is not going to show in the UI if onSurveySubmitted is not populated */ improvementSuggestions: CallSurveyImprovementSuggestions) => Promise; }; /** * Options for setting additional customizations related to personalized branding. */ branding?: { /** * Logo displayed on the configuration page. */ logo?: { /** * URL for the logo image. * * @remarks * Recommended size is 80x80 pixels. */ url: string; /** * Alt text for the logo image. */ alt?: string; /** * The logo can be displayed as a circle. * * @defaultValue 'unset' */ shape?: 'unset' | 'circle'; }; /** * Background image displayed on the configuration page. */ backgroundImage?: { /** * URL for the background image. * * @remarks * Background image should be larger than 576x567 pixels and smaller than 2048x2048 pixels pixels. */ url: string; }; }; /** * Options for settings related to spotlight. */ spotlight?: { /** * Flag to hide the menu buttons to start and stop spotlight for remote participants and the local participant. * @defaultValue false */ hideSpotlightButtons?: boolean; }; /** * Options for settings related to joining a call. */ joinCallOptions?: { /** * options for checking microphone permissions when joining a call. * block on access will block the user from joining the call if the microphone permission is not granted. * skip will allow the user to join the call without granting the microphone permission. * @defaultValue 'requireMicrophoneAvailable' */ microphoneCheck?: 'requireMicrophoneAvailable' | 'skip'; }; }; /** * Major UI screens shown in the {@link CallComposite}. * * @public */ export declare type CallCompositePage = 'accessDeniedTeamsMeeting' | 'call' | 'configuration' | 'hold' | 'joinCallFailedDueToNoNetwork' | 'leftCall' | 'leaving' | 'lobby' | 'removedFromCall' | 'transferring' | 'badRequest' | 'returningFromBreakoutRoom'; /** * Props for {@link CallComposite}. * * @public */ export declare interface CallCompositeProps extends BaseCompositeProps { /** * An adapter provides logic and data to the composite. * Composite can also be controlled using the adapter. */ adapter: CommonCallAdapter; /** * Optimizes the composite form factor for either desktop or mobile. * @remarks `mobile` is currently only optimized for Portrait mode on mobile devices and does not support landscape. * @defaultValue 'desktop' */ formFactor?: 'desktop' | 'mobile'; /** * URL to invite new participants to the current call. If this is supplied, a button appears in the Participants * Button flyout menu. */ callInvitationUrl?: string; /** * Flags to enable/disable or customize UI elements of the {@link CallComposite}. */ options?: CallCompositeOptions; } /** * Strings used by the {@link CallComposite} directly. * * This strings are in addition to those used by the components from the component library. * * @public */ export declare interface CallCompositeStrings { /** * Title of configuration page. */ configurationPageTitle: string; /** * Optional 1-2 lines on the call details used on the configuration page. */ configurationPageCallDetails?: string; /** * Text in button to start call in configuration page. */ startCallButtonLabel: string; /** * Text in button to rejoin an ended call. */ rejoinCallButtonLabel: string; /** * Placeholder text for local device settings dropdowns. */ defaultPlaceHolder: string; /** * Label for camera dropdown. */ cameraLabel: string; /** * Label for when there are no cameras present on configuration screen. */ noCamerasLabel: string; /** * Label for sound dropdown. */ soundLabel: string; /** * Label for when no microphones were found on the configuration screen */ noMicrophonesLabel: string; /** * Label for when no speakers were found on the configuration screen. */ noSpeakersLabel: string; /** * Error shown when camera access is blocked by the browser. */ cameraPermissionDenied: string; /** * Error shown when the camera is turned off. */ cameraTurnedOff: string; /** * Error shown when microphone access is blocked by the browser. */ microphonePermissionDenied: string; /** * Title text of the page shown to the user when joining a Teams meeting fails because meeting owner denied access. */ failedToJoinTeamsMeetingReasonAccessDeniedTitle: string; /** * More details text of the page shown to the user when joining a Teams meeting fails because meeting owner denied access. */ failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails?: string; /** * Title text of the page shown to the user when joining a call fails due to a network problem. */ failedToJoinCallDueToNoNetworkTitle: string; /** * More details text of the page shown to the user when joining a call fails due to a network problem. */ failedToJoinCallDueToNoNetworkMoreDetails?: string; /** * Text to display on a leaving page. */ leavingCallTitle?: string; /** * Title text of the page shown to the user when they leave a call in the call composite. */ leftCallTitle: string; /** * More details text of the page shown to the user when they leave a call in the call composite. */ leftCallMoreDetails?: string; /** * Title text of the page shown to the user when they are removed from a call in the call composite. */ removedFromCallTitle: string; /** * More details text of the page shown to the user when they are removed from a call in the call composite. */ removedFromCallMoreDetails?: string; /** * Text shown to the user on the lobby screen when connecting to a call. */ lobbyScreenConnectingToCallTitle: string; /** * Optional addition details shown to the user on the lobby screen when connection to a call. */ lobbyScreenConnectingToCallMoreDetails?: string; /** * Text shown to the user on the lobby screen when waiting to be admitted to a call. */ lobbyScreenWaitingToBeAdmittedTitle: string; /** * Optional additional details shown to the user on the lobby screen when waiting to be admitted to a call. */ lobbyScreenWaitingToBeAdmittedMoreDetails?: string; /** * Message shown to the user when they are speaking while muted. */ mutedMessage: string; /** * Text for link to MS privacy policy in Compliance Banner. */ privacyPolicy: string; /** * Text for link to learn more about a specific subject. */ learnMore: string; /** * Message to let user know the meeting is only being recorded (no transcription) in ComplianceBanner. */ complianceBannerNowOnlyRecording: string; /** * Message to let user know the meeting is only being transcripted (no recording) in ComplianceBanner. */ complianceBannerNowOnlyTranscription: string; /** * Message to let user know recording and transcription of the meeting are saved in ComplianceBanner. */ complianceBannerRecordingAndTranscriptionSaved: string; /** * Message to let user know recording and transcription of the meeting have started in ComplianceBanner. */ complianceBannerRecordingAndTranscriptionStarted: string; /** * Message to let user know recording and transcription of the meeting have stopped in ComplianceBanner. */ complianceBannerRecordingAndTranscriptionStopped: string; /** * Message to let user know recording of the meeting is being saved in ComplianceBanner. */ complianceBannerRecordingSaving: string; /** * Message to let user know recording of the meeting has started in ComplianceBanner. */ complianceBannerRecordingStarted: string; /** * Message to let user know recording of the meeting has stopped in ComplianceBanner. */ complianceBannerRecordingStopped: string; /** * Message to let user know they are giving consent to meeting being transcripted in ComplianceBanner. */ complianceBannerTranscriptionConsent: string; /** * Message to let user know transcription of the meeting is being saved in ComplianceBanner. */ complianceBannerTranscriptionSaving: string; /** * Message to let user know transcription of the meeting has started in ComplianceBanner. */ complianceBannerTranscriptionStarted: string; /** * Message to let user know the transcription of the meeting has stopped in ComplianceBanner. */ complianceBannerTranscriptionStopped: string; /** * Text for close button. */ close: string; /** * Title text of the page shown to the user when there is intermittent network failure during a call. */ networkReconnectTitle: string; /** * More details text of the page shown to the user when there is intermittent network failure during a call. */ networkReconnectMoreDetails: string; /** * Tooltip text used to inform a user that toggling microphone in lobby is not supported. */ microphoneToggleInLobbyNotAllowed: string; /** * Side pane People section Title. */ peoplePaneTitle: string; /** * Aria label of more button in people pane */ peoplePaneMoreButtonAriaLabel: string; /** * Aria label string for return to call back button */ returnToCallButtonAriaLabel?: string; /** * Aria Description string for return to call button */ returnToCallButtonAriaDescription?: string; /** * control bar People button label */ peopleButtonLabel: string; /** * control bar People button label when checked */ selectedPeopleButtonLabel: string; /** * control bar Chat button label. */ chatButtonLabel: string; /** * Label for SidePaneHeader dismiss button */ dismissSidePaneButtonLabel?: string; /** * Side pane People section subheader. */ peoplePaneSubTitle?: string; /** * Label for button to copy invite link */ copyInviteLinkButtonLabel?: string; /** * Label for button to copy invite link when it has been actioned */ copyInviteLinkButtonActionedLabel?: string; /** * Label for button to open dialpad */ openDialpadButtonLabel?: string; /** * Label for menu item to remove participant */ removeMenuLabel?: string; /** * Label for menu item to start spotlight on participant */ startSpotlightMenuLabel: string; /** * Label for menu item to add spotlight on participant */ addSpotlightMenuLabel: string; /** * Label for menu item to stop spotlight on participant */ stopSpotlightMenuLabel: string; /** * Label for menu item to stop spotlight on local user */ stopSpotlightOnSelfMenuLabel: string; /** * Label for menu item to stop spotlight on local user */ spotlightLimitReachedMenuTitle: string; /** * Label for menu item to stop all spotlight */ stopAllSpotlightMenuLabel: string; /** * Label for add people dropdown */ peoplePaneAddPeopleButtonLabel?: string; /** * Label for button to start a call */ dialpadStartCallButtonLabel?: string; /** * Title for dialpad Modal */ dialpadModalTitle?: string; /** * Aria Label for dialpad Modal */ dialpadModalAriaLabel?: string; /** * Aria Label for dialpad Modal close button */ dialpadCloseModalButtonAriaLabel?: string; /** * label for more button in the Calling composite */ moreButtonCallingLabel: string; /** * Label for the resume call button on the hold pane */ resumeCallButtonLabel?: string; /** * Label for the resume call button on the hold pane when call is resuming */ resumingCallButtonLabel?: string; /** * Aria label for the resume call button on the hold pane */ resumeCallButtonAriaLabel?: string; /** * Aria label for the resume call button on the hold pane when call is resuming */ resumingCallButtonAriaLabel?: string; /** * Label for the hold pane */ holdScreenLabel?: string; /** * Placeholder text for dtmf dialpad */ dtmfDialpadPlaceholderText?: string; /** * Label for the button to open dtmf dialpad */ openDtmfDialpadLabel?: string; /** * aria label for when the invite link has been actioned */ copyInviteLinkActionedAriaLabel: string; /** * Title text of the page shown to the user when the user attempts to join a room that cannot be found. */ roomNotFoundTitle: string; /** * More details text of the page shown to the user when the user attempts to join a room that cannot be found. */ roomNotFoundDetails?: string; /** * Title text of the page shown to the user when the user attempts to join a room that is not valid. */ roomNotValidTitle: string; /** * More details text of the page shown to the user when the user attempts to join a room that is not valid. */ roomNotValidDetails?: string; /** * Title text of the page shown to the user when the user's permission to join the room is removed. */ inviteToRoomRemovedTitle: string; /** * More details text of the page shown to the user when the user's permission to join the room is removed. */ inviteToRoomRemovedDetails?: string; /** * Video Effects pane title. */ videoEffectsPaneTitle: string; /** * Video Effects pane sub section title for choosing background. */ videoEffectsPaneBackgroundSelectionTitle: string; /** * Aria label for video effects pane */ videoEffectsPaneAriaLabel: string; /** * Label for the button to open effects */ configurationPageCameraIsLoadingLabel?: string; /** * Label for the button to open effects */ configurationPageVideoEffectsButtonLabel?: string; /** * Error message for video effect failure */ unableToStartVideoEffect?: string; /** * Label for the blur video background effect item */ blurBackgroundEffectButtonLabel?: string; /** * Tooltip text for the blur video background effect item */ blurBackgroundTooltip?: string; /** * Label for the remove video background effect item */ removeBackgroundEffectButtonLabel?: string; /** * Tooltip text for the blur video background effect item */ removeBackgroundTooltip?: string; /** * Text to show when warning the user the camera is off and inform the user to turn the camera on to see the selected video background effect. */ cameraOffBackgroundEffectWarningText?: string; /** * Title text of the page shown to the user when the user attempts to join a room they are not invited to. */ notInvitedToRoomTitle: string; /** * More details text of the page shown to the user when the user attempts to join a room they are not invited to. */ notInvitedToRoomDetails?: string; /** * Control bar People button ToolTipContent */ peopleButtonTooltipOpen: string; /** * Control bar People button ToolTipContent */ peopleButtonTooltipClose: string; /** * Label disaplayed on the lobby screen during a 1:1 outbound call. */ outboundCallingNoticeString?: string; /** * Notice to be announced by narrator when a participant joins a call */ participantJoinedNoticeString: string; /** * Notice to be announced by narrator when a participant joins a call */ twoParticipantJoinedNoticeString: string; /** * Notice to be announced by narrator when a participant joins a call */ threeParticipantJoinedNoticeString: string; /** * Notice to be announced by narrator when a participant leaves a call */ participantLeftNoticeString: string; /** * Notice to be announced by narrator when 2 participants leave a call */ twoParticipantLeftNoticeString: string; /** * Notice to be announced by narrator when 3 participants leave a call */ threeParticipantLeftNoticeString: string; /** * string to be used to announce a change in participant if they have no displayName */ unnamedParticipantString: string; /** * string to be used to announce when more than 3 participants have joined at the same time. */ manyParticipantsJoined: string; /** * string to be used to announce when more than 3 participants have left at the same time. */ manyParticipantsLeft: string; /** * string to be used to announce when multiple unnamed participants have joined at the same time. */ manyUnnamedParticipantsJoined: string; /** * string to be used to announce when multiple unnamed participants have left at the same time. */ manyUnnamedParticipantsLeft: string; /** * string to be used to open live captions contextual menu */ liveCaptionsLabel?: string; /** * label for opening captions setting modal */ captionsSettingsLabel?: string; /** * string to be used to start captions */ startCaptionsButtonOnLabel?: string; /** * string to be used to open real time text contextual menu */ realTimeTextLabel?: string; /** * string to be used to start real time text */ startRealTimeTextLabel?: string; /** * string to be used to when start real time text button is disabled */ disabledStartRealTimeTextLabel?: string; /** * string to be used to stop captions */ startCaptionsButtonOffLabel?: string; /** * tooltip string to be used to show captions is on */ startCaptionsButtonTooltipOnContent?: string; /** *tooltip string to be used to show captions is off */ startCaptionsButtonTooltipOffContent?: string; /** * captions setting modal title */ captionsSettingsModalTitle?: string; /** * label for spoken language dropdown inside captions setting modal */ captionsSettingsSpokenLanguageDropdownLabel?: string; /** * label for captions language inside captions setting modal */ captionsSettingsCaptionLanguageDropdownLabel?: string; /** * text under captions setting dropdown indicating what the dropdown is for */ captionsSettingsSpokenLanguageDropdownInfoText?: string; /** * text under captions setting dropdown indicating what the dropdown is for */ captionsSettingsCaptionLanguageDropdownInfoText?: string; /** * confirm button label in captions setting modal */ captionsSettingsConfirmButtonLabel?: string; /** * cancel button label in captions setting modal */ captionsSettingsCancelButtonLabel?: string; /** * arial label for captions setting modal */ captionsSettingsModalAriaLabel?: string; /** * arial label for captions setting modal close button */ captionsSettingsCloseModalButtonAriaLabel?: string; /** * label for more button inside captions banner */ captionsBannerMoreButtonCallingLabel?: string; /** * arial label for more button inside captions banner */ captionsBannerMoreButtonTooltip?: string; /** * list of key value pairs that pairs spoken language code to language names */ spokenLanguageStrings?: SpokenLanguageStrings; /** * list of key value pairs that pairs caption language code to language names */ captionLanguageStrings?: CaptionLanguageStrings; /** * captions banner loading spinner label */ captionsBannerSpinnerText?: string; /** * Default text for RTT input text box */ realTimeTextInputBoxDefaultText?: string; /** * Error message for RTT input text box when the size exceeds the limit 2000 */ realTimeTextInputErrorMessage?: string; /** * Text to show in the real time text disclosure banner */ realTimeTextBannerContent?: string; /** * Title text of the real time text disclosure banner */ realTimeTextBannerTitle?: string; /** * Label for the link in the real time text disclosure banner */ realTimeTextBannerLinkLabel?: string; /** * Title for the container when only captions is enabled */ captionsOnlyContainerTitle?: string; /** * Title for the container when only real time text is enabled */ realTimeTextOnlyContainerTitle?: string; /** * Title for the container when both captions and real time text is enabled */ captionsAndRealTimeTextContainerTitle?: string; /** * Expand button aria label */ expandButtonAriaLabel?: string; /** * Minimize button aria label */ minimizeButtonAriaLabel?: string; /** * transfer page text when showing the transferor who initiated the transfer */ transferPageTransferorText: string; /** * transfer page text when showing the transfer target */ transferPageTransferTargetText: string; /** * transfer page display name for unknown participant */ transferPageUnknownTransferorDisplayName: string; /** * transfer page display name for unknown participant */ transferPageUnknownTransferTargetDisplayName: string; /** * notice to be announced by narrator the transfer page is showing */ transferPageNoticeString: string; /** * Title text of the page shown to the user when target participant could not be reached */ participantCouldNotBeReachedTitle?: string; /** * More details text of the page shown to the user when target participant could not be reached */ participantCouldNotBeReachedMoreDetails?: string; /** * Title text of the page shown to the user when permission to reach participant is not allowed */ permissionToReachTargetParticipantNotAllowedTitle?: string; /** * More details text of the page shown to the user when permission to reach participant is not allowed */ permissionToReachTargetParticipantNotAllowedMoreDetails?: string; /** * Title text of the page shown to the user when tenant id for the target participant could not be resolved */ unableToResolveTenantTitle?: string; /** * More details text of the page shown to the user when tenant id for the target participant could not be resolved */ unableToResolveTenantMoreDetails?: string; /** * Title text of the page shown to the user when target participant id is malformed */ participantIdIsMalformedTitle?: string; /** * More details text of the page shown to the user when target participant id is malformed */ participantIdIsMalformedMoreDetails?: string; /** * Controls label to move the overflow gallery around */ moreButtonGalleryControlLabel?: string; /** * Label for the toggle to move the overflow gallery to the top */ moreButtonGalleryPositionToggleLabel?: string; /** * Label for the selection of the speaker layout */ moreButtonGallerySpeakerLayoutLabel?: string; /** * Label for the selection of the default (Gallery) layout */ moreButtonGalleryDefaultLayoutLabel?: string; /** * Label for the selection of the default (Gallery) layout */ moreButtonLargeGalleryDefaultLayoutLabel?: string; /** * Label for the selection of the Together Mode (Gallery) layout */ moreButtonTogetherModeLayoutLabel?: string; /** * Label for the selection of the floatingLocalVideo (Dynamic) layout */ moreButtonGalleryFloatingLocalLayoutLabel?: string; /** * Label for the selection of the focusedContentLayout (Focused content) layout */ moreButtonGalleryFocusedContentLayoutLabel?: string; /** * All strings for capability changed notification */ capabilityChangedNotification?: CapabilityChangedNotificationStrings; /** * Title for the survey */ surveyTitle: string; /** * Helper text to explain what the survey is for */ starSurveyHelperText: string; /** * Helper text displayed below survey question after user select one star */ starSurveyOneStarText: string; /** * Helper text displayed below survey question after user select two star */ starSurveyTwoStarText: string; /** * Helper text displayed below survey question after user select three star */ starSurveyThreeStarText: string; /** * Helper text displayed below survey question after user select four star */ starSurveyFourStarText: string; /** * Helper text displayed below survey question after user select five star */ starSurveyFiveStarText: string; /** * Aria Label for each individual star rating */ starRatingAriaLabel: string; /** * Tags Survey Question */ tagsSurveyQuestion: string; /** * Default text for free form text field inside tags survey */ tagsSurveyTextFieldDefaultText: string; /** * Tags Survey helper text */ tagsSurveyHelperText: string; /** * Confirm button label for survey */ surveyConfirmButtonLabel: string; /** * Cancel button label for survey */ surveySkipButtonLabel: string; /** * Thank you text appeared on screen after survey is submitted */ endOfSurveyText: string; /** * Corresponding texts to each call issue */ surveyIssues: SurveyIssues; /** * Corresponding texts to each call category */ surveyIssuesHeadingStrings: SurveyIssuesHeadingStrings; /** * String for the dismiss control on the local and remote PIP on mobile */ dismissModalAriaLabel?: string; /** * String for title when the call is rejected by the callee */ callRejectedTitle?: string; /** * String for more details when the call is rejected by the callee */ callRejectedMoreDetails?: string; /** * String for title when the call times out because the remote user does not answer */ callTimeoutTitle?: string; /** * String for title when the call times out when calling a bot. */ callTimeoutBotTitle?: string; /** * String for more details when the call times out because the remote user does not answer */ callTimeoutDetails?: string; /** * String for more details when the call times out when calling a bot */ callTimeoutBotDetails?: string; /** * Label for the control bar button to show the dtmf dialer when the more button is disabled */ dtmfDialerButtonLabel?: string; /** * Tooltip for the control bar button to show the dtmf dialer when the more button is disabled */ dtmfDialerButtonTooltipOn?: string; /** * Tooltip for the control bar button to hide the dtmf dialer when the more button is disabled */ dtmfDialerButtonTooltipOff?: string; /** * Label to show the dtmf dialer in the more button menu */ dtmfDialerMoreButtonLabelOn?: string; /** * Label to hide the dtmf dialer in the more button menu */ dtmfDialerMoreButtonLabelOff?: string; /** * Strings for spotlight prompt */ spotlightPrompt: SpotlightPromptStrings; /** * Label for button to exit spotlight */ exitSpotlightButtonLabel: string; /** * Tooltip for button to exit spotlight */ exitSpotlightButtonTooltip: string; /** * Label for confirm button of hang up for everyone dialog */ leaveConfirmButtonLabel?: string; /** * Label for confirm button of leave confim dialog */ endCallConfirmButtonLabel?: string; /** * Label for cancel button in hang up confirm dialog */ hangUpCancelButtonLabel?: string; /** * Title of confirm dialog when leaving */ leaveConfirmDialogTitle?: string; /** * Content of confirm dialog when leaving */ leaveConfirmDialogContent?: string; /** * Title of confirm dialog when leaving */ endCallConfirmDialogTitle?: string; /** * Content of confirm dialog when leaving */ endCallConfirmDialogContent?: string; /** * Error message when the meeting identifier or passcode is invalid */ invalidMeetingIdentifier: string; /** * Menu text shown in Participant Item contextual menu for pinning a remote participant's video tile * */ pinParticipantMenuLabel: string; /** * Menu text shown in Participant Item contextual menu when pinning limit is reached * */ pinParticipantLimitReachedMenuLabel: string; /** * Menu text shown in Participant Item contextual menu for unpinning a remote participant's video tile * */ unpinParticipantMenuLabel: string; /** * Aria label for unpin participant menu item of remote participant */ unpinParticipantMenuItemAriaLabel: string; /** * Aria label to announce when remote participant is pinned */ pinParticipantMenuItemAriaLabel: string; /** * Error message when the meeting identifier or passcode is invalid */ phoneCallMoreButtonLabel: string; /** * Label for mute all remote participants menu item in People Pane */ muteAllMenuLabel: string; /** * Label for mute all prompt title */ muteAllDialogTitle: string; /** * Label for mute all prompt content */ muteAllDialogContent: string; /** * Label for mute all confirm button */ muteAllConfirmButtonLabel: string; /** * Label for mute all cancel button */ muteAllCancelButtonLabel: string; /** * Label for join breakout room button */ joinBreakoutRoomButtonLabel: string; /** * Label for button to return from breakout room */ returnFromBreakoutRoomButtonLabel: string; /** * Label for button to leave breakout room and meeting */ leaveBreakoutRoomAndMeetingButtonLabel: string; /** * Notification title for when a user joins a breakout room */ breakoutRoomJoinedNotificationTitle: string; /** * Title for banner to join the assigned breakout room. The banner is shown in mobile view instead of the * notification. */ joinBreakoutRoomBannerTitle: string; /** * Label for button in banner to join breakout room. The banner is shown in mobile view instead of the notification. */ joinBreakoutRoomBannerButtonLabel: string; /** * Title for banner to return from breakout room. The banner is shown in mobile view instead of the notification. */ returnFromBreakoutRoomBannerTitle: string; /** * Label for button in banner to return from breakout room. The banner is shown in mobile view instead of the * notification. */ returnFromBreakoutRoomBannerButtonLabel: string; /** * Label for menu item to forbid audio media access */ forbidAudioMenuLabel: string; /** * Label for menu item to permit audio media access */ permitAudioMenuLabel: string; /** * Dialog title to confirm forbid Teams meeting audio media access */ forbidOthersAudioDialogTitle: string; /** * Dialog content to confirm forbid Teams meeting audio media access */ forbidOthersAudioDialogContent: string; /** * Dialog button to confirm forbid Teams meeting audio media access */ forbidOthersAudioConfirmButtonLabel: string; /** * Dialog cancel button for forbid Teams meeting audio media access */ forbidOthersAudioCancelButtonLabel: string; /** * Dialog title to confirm permit Teams meeting audio media access */ permitOthersAudioDialogTitle: string; /** * Dialog content to confirm permit Teams meeting audio media access */ permitOthersAudioDialogContent: string; /** * Dialog button to confirm permit Teams meeting audio media access */ permitOthersAudioConfirmButtonLabel: string; /** * Dialog cancel button for permit Teams meeting audio media access */ permitOthersAudioCancelButtonLabel: string; /** * Label for menu item to forbid video media access */ forbidOthersAudioMenuLabel: string; /** Label for menu item to permit video media access */ permitOthersAudioMenuLabel: string; /** Label for menu item to forbid video media access */ forbidVideoMenuLabel: string; /** Label for menu item to permit video media access */ permitVideoMenuLabel: string; /** Dialog title to confirm forbid Teams meeting video media access */ forbidOthersVideoDialogTitle: string; /** Dialog content to confirm forbid Teams meeting video media access */ forbidOthersVideoDialogContent: string; /** Dialog button to confirm forbid Teams meeting video media access */ forbidOthersVideoConfirmButtonLabel: string; /** Dialog cancel button for forbid Teams meeting video media access */ forbidOthersVideoCancelButtonLabel: string; /** Dialog title to confirm permit Teams meeting video media access */ permitOthersVideoDialogTitle: string; /** Dialog content to confirm permit Teams meeting video media access */ permitOthersVideoDialogContent: string; /** Dialog button to confirm permit Teams meeting video media access */ permitOthersVideoConfirmButtonLabel: string; /** Dialog cancel button for permit Teams meeting video media access */ permitOthersVideoCancelButtonLabel: string; /** Label for menu item to forbid audio media access */ forbidOthersVideoMenuLabel: string; /** Label for menu item to permit audio media access */ permitOthersVideoMenuLabel: string; /** The title of the RealTimeText modal */ realTimeTextModalTitle: string; /** The text of the RealTimeText modal */ realTimeTextModalText: string; /** The label for the confirm button */ realTimeTextConfirmButtonLabel: string; /** The label for the cancel button */ realTimeTextCancelButtonLabel: string; /** The aria label for the modal */ realTimeTextModalAriaLabel: string; /** The aria label for the close button */ realTimeTextCloseModalButtonAriaLabel: string; } /** * Control bar display type for {@link CallComposite}. * * @public */ export declare type CallControlDisplayType = 'default' | 'compact'; /** * Customization options for the control bar in calling experience. * * @public */ export declare type CallControlOptions = CommonCallControlOptions & { /** * Show, Hide or Disable participants button during a call. This is the option only work for legacyControl bar. * @defaultValue true */ participantsButton?: boolean | { disabled: boolean; }; legacyControlBarExperience?: boolean; }; /** * Callback for {@link CallAdapterSubscribers} 'callEnded' event. * * @public */ export declare type CallEndedListener = (event: CallAdapterCallEndedEvent) => void; /** * Error thrown from failed stateful API methods. * * @public */ export declare class CallError extends Error { /** * The API method target that failed. */ target: CallErrorTarget; /** * Error thrown by the failed SDK method. */ innerError: Error; /** * Timestamp added to the error by the stateful layer. */ timestamp: Date; /** * Primary code for the calling error */ code?: number; /** * Sub code for the calling error */ subCode?: number; /** needs to be a (innerError as CommunicationServicesError) */ constructor(target: CallErrorTarget, innerError: Error, timestamp?: Date); } /** * Selector type for {@link ErrorBar} component. * * @public */ export declare type CallErrorBarSelector = (state: CallClientState, props: CallingBaseSelectorProps) => { activeErrorMessages: ActiveErrorMessage[]; }; /** * Errors teed from API calls to the Calling SDK. * * Each property in the object stores the latest error for a particular SDK API method. * * Errors from this object can be cleared using the {@link newClearCallErrorsModifier}. * Additionally, errors are automatically cleared when: * - The state is cleared. * - Subsequent calls to related API methods succeed. * See documentation of individual stateful client methods for details on when errors may be automatically cleared. * * @public */ export declare type CallErrors = { [target in CallErrorTarget]: CallError; }; /** * String literal type for all permissible keys in {@Link CallErrors}. * * @public */ export declare 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' | 'DeviceManager.startPreheatDevices' | 'DeviceManager.stopPreheatDevices' | 'IncomingCall.accept' | 'IncomingCall.reject' | 'TeamsCall.addParticipant' | 'VideoEffectsFeature.startEffects' | 'CallAgent.handlePushNotification' | 'Call.mutedByOthers' | 'Call.muteAllRemoteParticipants' | 'Call.setConstraints'; /** * Represents the name of the call feature stream * @public */ export declare type CallFeatureStreamName = 'togetherMode'; /** * State only version of {@link @azure/communication-calling#CallFeatureStream}. * Represents call feature stream state. * @public */ export declare interface CallFeatureStreamState extends RemoteVideoStreamState { /** * The name of the call feature stream. */ feature?: CallFeatureStreamName; } /** * Callback for {@link CallAdapterSubscribers} 'callIdChanged' event. * * @public */ export declare type CallIdChangedListener = (event: { callId: string; }) => void; /** * State to track the types {@link CallInfo} and {@link TeamsCallInfo} * @public */ export declare interface CallInfoState { /** * GroupId of the call that you joined */ groupId?: string; /** * The teams meeting thread id */ threadId?: string; /** * participant id of the local user */ participantId: string; /** * Differentiator between the Call and TeamsCall types */ kind: IncomingCallKind; } /** * Common props used to reference calling declarative client state. * * @public */ export declare type CallingBaseSelectorProps = { callId: string; }; /** * Object containing all the handlers required for calling components. * * Calling related components from this package are able to pick out relevant handlers from this object. * See {@link useHandlers} and {@link usePropsFor}. * * @public */ export declare interface CallingHandlers extends CommonCallingHandlers { onStartCall: (participants: CommunicationIdentifier[], options?: StartCallOptions) => Call | undefined; } /** * Configuration options to include video effect background dependency. * @public */ export declare type CallingHandlersOptions = { onResolveVideoBackgroundEffectsDependency?: () => Promise; /** * Dependency resolver for deep noise suppression effect. * @beta */ onResolveDeepNoiseSuppressionDependency?: () => Promise; }; /** * Helper type for {@link usePropsFor}. * * @public */ export declare type CallingReturnProps JSX.Element> = GetCallingSelector extends ((state: CallClientState, props: any) => any) ? ReturnType> & Common[0]> : never; /** * @public * Type for representing a set of sounds to use for different calling events */ export declare type CallingSounds = { /** * Sound to be played when the call ends */ callEnded?: SoundEffect; /** * Sound to be played when the call is ringing */ callRinging?: SoundEffect; /** * Sound to be played when the call is rejected by the user being callede */ callBusy?: SoundEffect; }; /** * Custom Fluent theme palette used by calling related components in this library. * * @public */ export declare interface CallingTheme { callingPalette: { callRed: string; callRedDark: string; callRedDarker: string; iconWhite: string; raiseHandGold: string; videoTileLabelBackgroundLight: string; }; } /** * @public */ export declare interface CallNotification { target: NotificationTarget; timestamp: Date; } /** * @public */ export declare type CallNotifications = { [target in NotificationTarget]: CallNotification; }; /** * Calling participant's state, as reflected in the UI components. * * @public */ export declare type CallParticipantListParticipant = ParticipantListParticipant & { /** State of calling participant */ state: ParticipantState; /** Whether calling participant is screen sharing */ isScreenSharing?: boolean; /** Whether calling participant is muted */ isMuted?: boolean; /** Whether calling participant is speaking */ isSpeaking?: boolean; /** Whether calling participant is raised hand */ raisedHand?: RaisedHand; /** * Whether calling participant has reacted * * @beta * */ reaction?: Reaction; /** Whether calling participant is spotlighted **/ spotlight?: Spotlight; /** Whether calling participant has audio/video media access blocked **/ mediaAccess?: MediaAccess; }; /** * A {@link React.Context} that stores a {@link @azure/communication-calling#Call}. * * Calling components from this package must be wrapped with a {@link CallProvider}. * * @public */ export declare const CallProvider: (props: CallProviderProps) => JSX.Element; /** * Arguments to initialize a {@link CallProvider}. * * @public */ export declare interface CallProviderProps { children: React_2.ReactNode; call?: Call | TeamsCall; } /** * State only version of {@link @azure/communication-calling#Call}. {@link StatefulCallClient} will automatically * retrieve Call's state and add it to the state exposed by {@link StatefulCallClient}. * * @public */ export declare interface CallState { /** * Proxy of {@link @azure/communication-calling#Call.id}. */ id: string; /** * Type of the call. */ kind: CallKind; /** * Proxy of {@link @azure/communication-calling#Call.callerInfo}. */ callerInfo: CallerInfo; /** * Proxy of {@link @azure/communication-calling#Call.state}. */ state: CallState_2; /** * Proxy of {@link @azure/communication-calling#Call.callEndReason}. */ callEndReason?: CallEndReason; /** * Proxy of {@link @azure/communication-calling#Call.direction}. */ direction: CallDirection; /** * Proxy of {@link @azure/communication-calling#Call.isMuted}. */ isMuted: boolean; /** * Proxy of {@link @azure/communication-calling#Call.isScreenSharingOn}. */ isScreenSharingOn: boolean; /** * Proxy of {@link @azure/communication-calling#DominantSpeakersInfo }. */ dominantSpeakers?: DominantSpeakersInfo; /** * Proxy of {@link @azure/communication-calling#Call.localVideoStreams}. */ localVideoStreams: LocalVideoStreamState[]; /** * Proxy of {@link @azure/communication-calling#Call.remoteParticipants}. * Object with {@link RemoteParticipant} fields keyed by flattened {@link RemoteParticipantState.identifier}. * To obtain a flattened {@link RemoteParticipantState.identifier}, use * {@link @azure/communication-react#toFlatCommunicationIdentifier}. */ remoteParticipants: { [keys: string]: RemoteParticipantState; }; /** * Stores remote participants that have left the call so that the callEndReason could be retrieved. * Object with {@link RemoteParticipant} fields keyed by flattened {@link RemoteParticipantState.identifier}. * To obtain a flattened {@link RemoteParticipantState.identifier}, use * {@link @azure/communication-react#toFlatCommunicationIdentifier}. */ remoteParticipantsEnded: { [keys: string]: RemoteParticipantState; }; /** * Proxy of {@link @azure/communication-calling#TranscriptionCallFeature}. */ transcription: TranscriptionCallFeature; /** * Proxy of {@link @azure/communication-calling#CaptionsCallFeature}. */ captionsFeature: CaptionsCallFeatureState; /** * Proxy of {@link @azure/communication-calling#RealTimeTextCallFeature}. */ realTimeTextFeature: RealTimeTextCallFeatureState; /** * Proxy of {@link @azure/communication-calling#OptimalVideoCountCallFeature}. */ optimalVideoCount: OptimalVideoCountFeatureState; /** * Proxy of {@link @azure/communication-calling#RecordingCallFeature}. */ recording: RecordingCallFeature; /** * Proxy of {@link @azure/communication-calling#PPTLiveCallFeature}. * *@public */ pptLive: PPTLiveCallFeatureState; /** * Proxy of {@link @azure/communication-calling#RaiseHandCallFeature}. */ raiseHand: RaiseHandCallFeature; /** * Proxy of {@link @azure/communication-calling#TogetherModeCallFeature}. */ togetherMode: TogetherModeCallFeatureState; /** * Proxy of {@link @azure/communication-calling#Call.ReactionMessage} with * UI helper props receivedOn which indicates the timestamp when the message was received. * * @public */ localParticipantReaction?: ReactionState; /** * Stores the currently active screenshare participant's key. If there is no screenshare active, then this will be * undefined. You can use this key to access the remoteParticipant data in {@link CallState.remoteParticipants} object. * * Note this only applies to ScreenShare in RemoteParticipant. A local ScreenShare being active will not affect this * property. * * This property is added by the stateful layer and is not a proxy of SDK state */ screenShareRemoteParticipant?: string; /** * Stores the currently active pptlive participant's key. Will be reused by White board etc. If there is no screenshare active, then this will be * undefined. You can use this key to access the remoteParticipant data in {@link CallState.remoteParticipants} object. * * Note this only applies to PPTLive in RemoteParticipant. * * This property is added by the stateful layer and is not a proxy of SDK state * * @public */ contentSharingRemoteParticipant?: string; /** * Stores the local date when the call started on the client. This property is added by the stateful layer and is not * a proxy of SDK state. */ startTime: Date; /** * Stores the local date when the call ended on the client. This property is added by the stateful layer and is not * a proxy of SDK state. */ endTime: Date | undefined; /** * Stores the latest call diagnostics. */ diagnostics: DiagnosticsCallFeatureState; /** * Proxy of {@link @azure/communication-calling#Call.role}. */ role?: ParticipantRole; /** * Transfer state of call */ transfer: TransferFeature; /** * Proxy of {@link @azure/communication-calling#CapabilitiesFeature}. */ capabilitiesFeature?: CapabilitiesFeatureState; /** * Hide attendee names in teams meeting */ hideAttendeeNames?: boolean; /** * Proxy of {@link @azure/communication-calling#SpotlightCallFeature}. */ spotlight?: SpotlightCallFeatureState; /** * Proxy of {@link @azure/communication-calling#Call.info}. */ info?: TeamsCallInfo; /** * Proxy of {@link @azure/communication-calling#TeamsMeetingAudioConferencingCallFeature}. */ meetingConference?: { conferencePhones: ConferencePhoneInfo[]; }; /** * Proxy of {@link @azure/communication-calling#BreakoutRoomsFeature}. */ breakoutRooms?: BreakoutRoomsState; /** * Proxy of {@link @azure/communication-calling#MediaAccessFeature}. */ meetingMediaAccess?: MediaAccessState; } /** * Represents the improvement suggestion part of call survey * @public */ export declare interface CallSurveyImprovementSuggestions { /** * Improvement suggestions for overall call */ overallRating?: string; /** * Improvement suggestions for audio experience */ audioRating?: string; /** * Improvement suggestions for video experience */ videoRating?: string; /** * Improvement suggestions for screenshare experience */ screenshareRating?: string; } /** * {@link CallWithChatComposite} Adapter interface. * * @public */ export declare interface CallWithChatAdapter extends CallWithChatAdapterManagement, AdapterState, Disposable_2, CallWithChatAdapterSubscriptions { } /** * Functionality for managing the current call with chat. * @public */ export declare interface CallWithChatAdapterManagement { /** * Remove a participant from a Call. * * @param userId - UserId of the participant to remove. * * @public */ removeParticipant(userId: string): Promise; /** * Remove a participant from the call. * @param participant - {@link @azure/communication-common#CommunicationIdentifier} of the participant to be removed * @public */ removeParticipant(participant: CommunicationIdentifier): Promise; /** * Join the call with microphone initially on/off. * @deprecated Use joinCall(options?:JoinCallOptions) instead. * @param microphoneOn - Whether microphone is initially enabled * * @public */ joinCall(microphoneOn?: boolean): Call | undefined; /** * Join the call with options bag to set microphone/camera initial state when joining call * true = turn on the device when joining call * false = turn off the device when joining call * 'keep'/undefined = retain devices' precall state * * @param options - param to set microphone/camera initially on/off/use precall state. * * @public */ joinCall(options?: JoinCallOptions): Call | undefined; /** * Leave the call. * * @param forEveryone - Whether to remove all participants when leaving * * @public */ leaveCall(forEveryone?: boolean): Promise; /** * Start the camera. * * This method will start rendering a local camera view when the call is not active. * * @param options - Options to control how video streams are rendered {@link @azure/communication-calling#VideoStreamOptions } * * @public */ startCamera(options?: VideoStreamOptions): Promise; /** * Stop the camera. * * This method will stop rendering a local camera view when the call is not active. * * @public */ stopCamera(): Promise; /** * Mute the current user during the call or disable microphone locally. * * @public */ mute(): Promise; /** * Unmute the current user during the call or enable microphone locally. * * @public */ unmute(): Promise; /** * Start the call. * * @param participants - An array of participant ids to join * * @public */ startCall(participants: string[], options?: StartCallOptions): Call | undefined; /** * Start the call. * @param participants - An array of {@link @azure/communication-common#CommunicationIdentifier} to be called * @public */ startCall(participants: (MicrosoftTeamsAppIdentifier | PhoneNumberIdentifier | CommunicationUserIdentifier | MicrosoftTeamsUserIdentifier | UnknownIdentifier)[], options?: StartCallOptions): Call | undefined; /** * Start sharing the screen during a call. * * @public */ startScreenShare(): Promise; /** * Stop sharing the screen. * * @public */ stopScreenShare(): Promise; /** * Raise hand for local user. * * @public */ raiseHand(): Promise; /** * Lower hand for local user. * * @public */ lowerHand(): Promise; /** * Send Reaction to ongoing meeting. * @param reaction - A value of type {@link @azure/communication-calling#Reaction} * * @public */ onReactionClick(reaction: Reaction_2): Promise; /** * Create the html view for a stream. * * @remarks * This method is implemented for composite. * * @param remoteUserId - Id of the participant to render, leave it undefined to create the local camera view * @param options - Options to control how video streams are rendered {@link @azure/communication-calling#VideoStreamOptions } * * @public */ createStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise; /** * Dispose the html view for a stream. * * @remarks * This method is implemented for composite. * * @param remoteUserId - Id of the participant to render, leave it undefined to dispose the local camera view * @param options - Options to control how video streams are rendered {@link @azure/communication-calling#VideoStreamOptions } * * @public */ disposeStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise; /** * Create the html view for a togethermode stream. * * @remarks * This method is implemented for composite * * @param options - Options to control how video streams are rendered {@link @azure/communication-calling#VideoStreamOptions } * * @public */ createTogetherModeStreamView(options?: TogetherModeStreamOptions): Promise; /** * Start together mode. * * @remarks * This method is implemented for composite * * * @public */ startTogetherMode(): Promise; /** * Recalculate the seating positions for together mode. * * @remarks * This method is implemented for composite * * @param width - Width of the container * @param height - Height of the container * * @public */ setTogetherModeSceneSize(width: number, height: number): void; /** * Dispose the html view for a togethermode stream. * * @remarks * This method is implemented for composite * * @public */ disposeTogetherModeStreamView(): Promise; /** * Dispose the html view for a screen share stream * * @remarks * this method is implemented for composite * * @param remoteUserId - Id of the participant to dispose the screen share stream view for. * * @public */ disposeScreenShareStreamView(remoteUserId: string): Promise; /** * Dispose the html view for a remote video stream * * @param remoteUserId - Id of the participant to dispose * * @public */ disposeRemoteVideoStreamView(remoteUserId: string): Promise; /** * Dispose the html view for a local video stream * * @public */ disposeLocalVideoStreamView(): Promise; /** * Ask for permissions of devices. * * @remarks * Browser permission window will pop up if permissions are not granted yet. * * @param constrain - Define constraints for accessing local devices {@link @azure/communication-calling#PermissionConstraints } * * @public */ askDevicePermission(constrain: PermissionConstraints): Promise; /** * Query for available camera devices. * * @remarks * This method should be called after askDevicePermission() * * @return An array of video device information entities {@link @azure/communication-calling#VideoDeviceInfo } * * @public */ queryCameras(): Promise; /** * Query for available microphone devices. * * @remarks * This method should be called after askDevicePermission() * * @return An array of audio device information entities {@link @azure/communication-calling#AudioDeviceInfo } * * @public */ queryMicrophones(): Promise; /** * Query for available microphone devices. * * @remarks * This method should be called after askDevicePermission() * * @return An array of audio device information entities {@link @azure/communication-calling#AudioDeviceInfo } * * @public */ querySpeakers(): Promise; /** * Set the camera to use in the call. * * @param sourceInfo - Camera device to choose, pick one returned by {@link CallAdapterDeviceManagement#queryCameras } * @param options - Options to control how the camera stream is rendered {@link @azure/communication-calling#VideoStreamOptions } * * @public */ setCamera(sourceInfo: VideoDeviceInfo, options?: VideoStreamOptions): Promise; /** * Set the microphone to use in the call. * * @param sourceInfo - Microphone device to choose, pick one returned by {@link CallAdapterDeviceManagement#queryMicrophones } * * @public */ setMicrophone(sourceInfo: AudioDeviceInfo): Promise; /** * Set the speaker to use in the call. * * @param sourceInfo - Speaker device to choose, pick one returned by {@link CallAdapterDeviceManagement#querySpeakers } * * @public */ setSpeaker(sourceInfo: AudioDeviceInfo): Promise; /** * Fetch initial state for the Chat adapter. * * Performs the minimal fetch necessary for ChatComposite and API methods. * * @public */ fetchInitialData(): Promise; /** * Send a message in the thread. * * @public */ sendMessage(content: string, options?: SendMessageOptions): Promise; /** * Send a read receipt for a message. * * @public */ sendReadReceipt(chatMessageId: string): Promise; /** * Send typing indicator in the thread. * * @public */ sendTypingIndicator(): Promise; /** * Update a message content. * * @public */ updateMessage(messageId: string, content: string, options?: Record): Promise; /** * Delete a message in the thread. * * @public */ deleteMessage(messageId: string): Promise; /** * Load more previous messages in the chat thread history. * * @remarks * This method is usually used to control incremental fetch/infinite scroll. * * @public */ loadPreviousChatMessages(messagesToLoad: number): Promise; /** @public */ downloadResourceToCache(resourceDetails: ResourceDetails): Promise; /** @public */ removeResourceFromCache(resourceDetails: ResourceDetails): void; /** * Puts the Call in a Localhold. * * @public */ holdCall(): Promise; /** * Resumes the call from a LocalHold state. * * @public */ resumeCall(): Promise; /** * Adds a new Participant to the call. * * @public */ addParticipant(participant: PhoneNumberIdentifier, options?: AddPhoneNumberOptions): Promise; addParticipant(participant: CommunicationUserIdentifier): Promise; /** * send dtmf tone to another participant in the call in 1:1 calls * * @public */ sendDtmfTone: (dtmfTone: DtmfTone_2) => Promise; /** * Function to Start captions * @param options - options for start captions */ startCaptions(options?: StartCaptionsAdapterOptions): Promise; /** * Function to set caption language * @param language - language set for caption */ setCaptionLanguage(language: string): Promise; /** * Function to set spoken language * @param language - spoken language */ setSpokenLanguage(language: string): Promise; /** * Funtion to stop captions */ stopCaptions(options?: StopCaptionsAdapterOptions): Promise; /** * Start the video background effect. * * @public */ startVideoBackgroundEffect(videoBackgroundEffect: VideoBackgroundEffect): Promise; /** * Stop the video background effect. * * @public */ stopVideoBackgroundEffects(): Promise; /** * Override the background picker images for background replacement effect. * * @param backgroundImages - Array of custom background images. * * @public */ updateBackgroundPickerImages(backgroundImages: VideoBackgroundImage[]): void; /** * Update the selected video background effect * * @public */ updateSelectedVideoBackgroundEffect(selectedVideoBackground: VideoBackgroundEffect): void; /** * Start the noise suppression effect. */ startNoiseSuppressionEffect(): Promise; /** * Start the noise suppression effect. */ stopNoiseSuppressionEffect(): Promise; /** * Send the end of call survey result * * @public */ submitSurvey(survey: CallSurvey): Promise; /** * Start spotlight */ startSpotlight(userIds?: string[]): Promise; /** * Stop spotlight */ stopSpotlight(userIds?: string[]): Promise; /** * Stop all spotlights */ stopAllSpotlight(): Promise; /** * Mute a participant */ muteParticipant(userId: string): Promise; /** * Mute a participant */ muteAllRemoteParticipants(): Promise; /** * Return to origin call of breakout room */ returnFromBreakoutRoom(): Promise; /** * forbids audio for the specified user ids. */ forbidAudio: (userIds: string[]) => Promise; /** permits audio for the specified user ids. */ permitAudio: (userIds: string[]) => Promise; /** forbids audio for Teams meeting attendees except the local user. */ forbidOthersAudio: () => Promise; /** permits audio for Teams meeting attendees except the local user. */ permitOthersAudio: () => Promise; /** forbids video for the specified user ids. */ forbidVideo: (userIds: string[]) => Promise; /** permits video for the specified user ids. */ permitVideo: (userIds: string[]) => Promise; /** forbids video for Teams meeting attendees except the local user. */ forbidOthersVideo: () => Promise; /** permits video for Teams meeting attendees except the local user. */ permitOthersVideo: () => Promise; /** * Send real time text * @param text - real time text content * @param finalized - Boolean to indicate if the real time text is final */ sendRealTimeText: (text: string, isFinalized: boolean) => Promise; } /** * CallWithChat State is a combination of Stateful Chat and Stateful Calling clients with some * state specific to the CallWithChat Composite only. * * @public */ export declare interface CallWithChatAdapterState extends CallWithChatAdapterUiState, CallWithChatClientState { } /** * Call and Chat events that can be subscribed to in the {@link CallWithChatAdapter}. * @public */ export declare interface CallWithChatAdapterSubscriptions { on(event: 'callEnded', listener: CallEndedListener): 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: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void; on(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void; on(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void; on(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void; on(event: 'callError', 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: 'realTimeTextReceived', listener: RealTimeTextReceivedListener): void; on(event: 'capabilitiesChanged', listener: CapabilitiesChangedListener): void; on(event: 'spotlightChanged', listener: SpotlightChangedListener): void; on(event: 'breakoutRoomsUpdated', listener: BreakoutRoomsUpdatedListener): void; off(event: 'callEnded', listener: CallEndedListener): 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: 'callParticipantsJoined', listener: ParticipantsJoinedListener): void; off(event: 'callParticipantsLeft', listener: ParticipantsLeftListener): void; off(event: 'selectedMicrophoneChanged', listener: PropertyChangedEvent): void; off(event: 'selectedSpeakerChanged', listener: PropertyChangedEvent): void; off(event: 'callError', 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: 'realTimeTextReceived', listener: RealTimeTextReceivedListener): void; off(event: 'capabilitiesChanged', listener: CapabilitiesChangedListener): void; off(event: 'spotlightChanged', listener: SpotlightChangedListener): void; off(event: 'breakoutRoomsUpdated', listener: BreakoutRoomsUpdatedListener): 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: 'chatParticipantsAdded', listener: ParticipantsAddedListener): void; on(event: 'chatParticipantsRemoved', listener: ParticipantsRemovedListener): void; on(event: 'chatError', listener: (e: AdapterError) => void): void; 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: 'chatParticipantsAdded', listener: ParticipantsAddedListener): void; off(event: 'chatParticipantsRemoved', listener: ParticipantsRemovedListener): void; off(event: 'chatError', listener: (e: AdapterError) => void): void; on(event: 'chatInitialized', listener: ChatInitializedListener): void; off(event: 'chatInitialized', listener: ChatInitializedListener): void; } /** * UI state pertaining to the {@link CallWithChatComposite}. * * @public */ export declare interface CallWithChatAdapterUiState { /** * Microphone state before a call has joined. * * @public */ isLocalPreviewMicrophoneEnabled: boolean; /** * Current page of the Composite. * * @public */ page: CallCompositePage; } /** * State from the backend services that drives {@link CallWithChatComposite}. * * @public */ export declare interface CallWithChatClientState { /** ID of the call participant using this CallWithChatAdapter. */ userId: CommunicationIdentifierKind; /** Display name of the participant using this CallWithChatAdapter. */ displayName: string | undefined; /** State of the current call. */ call?: CallState; /** State of the current chat. */ chat?: ChatThreadClientState; /** Latest call error encountered for each operation performed via the adapter. */ latestCallErrors: AdapterErrors; /** Latest call notifications encountered in the call client state via the adapter. */ latestCallNotifications: AdapterNotifications; /** Latest chat error encountered for each operation performed via the adapter. */ latestChatErrors: AdapterErrors; /** State of available and currently selected devices */ devices: DeviceManagerState; /** State of whether the active call is a Teams interop call */ isTeamsCall: boolean; /** State of whether the active call is a Teams interop meeting */ isTeamsMeeting: boolean; /** alternateCallerId for PSTN call */ alternateCallerId?: string; /** Environment information for system adapter is made on */ environmentInfo?: EnvironmentInfo; /** Default set of background images for background replacement effect */ videoBackgroundImages?: VideoBackgroundImage[]; /** Dependency to be injected for video background effects */ onResolveVideoEffectDependency?: () => Promise; /** * Dependency to be injected for deep noise suppression effect. */ onResolveDeepNoiseSuppressionDependency?: () => Promise; /** State to track whether the noise suppression should be on by default. */ deepNoiseSuppressionOnByDefault?: boolean; /** State to track whether to hide the noise suppression button. */ hideDeepNoiseSuppressionButton?: boolean; /** State to track the selected video background effect */ selectedVideoBackgroundEffect?: VideoBackgroundEffect; /** Hide attendee names in teams meeting */ hideAttendeeNames?: boolean; /** * Reaction resources to render in meetings * */ reactions?: ReactionResources; } /** * CallWithChatComposite brings together key components to provide a full call with chat experience out of the box. * * @public */ export declare const CallWithChatComposite: (props: CallWithChatCompositeProps) => JSX.Element; /** * Icons that can be overridden for {@link CallWithChatComposite}. * * @public */ export declare 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; }; /** * Props for the CallWithChatComposite that you can use in your application. * * Contains two options bags: * - adapterOptions: Options for the {@link AzureCommunicationCallAdapterOptions} * - callCompositeOptions: Options for the {@link CallWithChatComposite} {@link CallWithChatCompositeOptions} * @public */ export declare interface CallWithChatCompositeLoaderProps extends Partial> { /** * UserId for the local user. */ userId: CommunicationUserIdentifier; /** * CommunicationTokenCredential for the local user. */ credential: CommunicationTokenCredential; /** * Display name for the local user. */ displayName: string; /** * Azure communication service endpoint. This used for the token and joining the chat thread. */ endpoint: string; /** * Locator for the call and the chat thread. * This is used to join the call and the chat thread. */ locator: CallAndChatLocator; /** * Options for the {@link AzureCommunicationCallAdapterOptions} * This is used to configure the call adapter. */ callAdapterOptions?: AzureCommunicationCallAdapterOptions; /** * Options for the {@link CallWithChatComposite} {@link CallWithChatCompositeOptions} * This is used to configure the call composite. */ callWithChatCompositeOptions?: CallWithChatCompositeOptions; /** * Device form factor for the composite. */ formFactor?: 'mobile' | 'desktop'; } /** * Optional features of the {@link CallWithChatComposite}. * * @public */ export declare type CallWithChatCompositeOptions = { /** * Call control options to change what buttons show on the call-with-chat composite control bar. * If using the boolean values, true will cause default behavior across the whole control bar. False hides the whole control bar. */ callControls?: boolean | CallWithChatControlOptions; /** * Remote participant video tile menu options */ remoteVideoTileMenuOptions?: RemoteVideoTileMenuOptions; /** * Options for controlling the local video tile. * * @remarks if 'false' the local video tile will not be rendered. */ localVideoTile?: boolean | LocalVideoTileOptions; /** * Options for controlling the starting layout of the composite's video gallery */ galleryOptions?: { /** * Layout for the gallery when the call starts */ layout?: VideoGalleryLayout; /** * Controls the view of the local screenshare stream in the gallery */ localScreenShareView?: LocalScreenShareView; }; /** * Options for end of call survey */ surveyOptions?: { /** * Disable call survey at the end of a call. * @defaultValue false */ disableSurvey?: boolean; /** * Optional callback to redirect users to custom screens when survey is done, note that default end call screen will be shown if this callback is not provided * This callback can be used to redirect users to different screens depending on survey state, whether it is submitted, skipped or has a problem when submitting the survey */ onSurveyClosed?: (surveyState: 'sent' | 'skipped' | 'error', surveyError?: string) => void; /** * Optional callback to handle survey data including free form text response * Note that free form text response survey option is only going to be enabled when this callback is provided * User will need to handle all free form text response on their own */ onSurveySubmitted?: (callId: string, surveyId: string, /** * This is the survey results containing star survey data and API tag survey data. * This part of the result will always be sent to the calling sdk * This callback provides user with the ability to gain access to survey data */ submittedSurvey: CallSurvey, /** * This is the survey results containing free form text * This part of the result will not be handled by composites * User will need to collect and handle this information 100% on their own * Free form text survey is not going to show in the UI if onSurveySubmitted is not populated */ improvementSuggestions: CallSurveyImprovementSuggestions) => Promise; }; /** * Options for setting additional customizations related to personalized branding. */ branding?: { /** * Logo displayed on the configuration page. */ logo?: { /** * URL for the logo image. * * @remarks * Recommended size is 80x80 pixels. */ url: string; /** * Alt text for the logo image. */ alt?: string; /** * The logo can be displayed as a circle. * * @defaultValue 'unset' */ shape?: 'unset' | 'circle'; }; /** * Background image displayed on the configuration page. */ backgroundImage?: { /** * URL for the background image. * * @remarks * Background image should be larger than 576x567 pixels and smaller than 2048x2048 pixels pixels. */ url: string; }; }; /** * Options for settings related to spotlight. */ spotlight?: { /** * Flag to hide the menu buttons to start and stop spotlight for remote participants and the local participant. * @defaultValue false */ hideSpotlightButtons?: boolean; }; /** * Options for settings related to joining a call. */ joinCallOptions?: { /** * options for checking microphone permissions when joining a call. * block on access will block the user from joining the call if the microphone permission is not granted. * skip will allow the user to join the call without granting the microphone permission. * @defaultValue 'requireMicrophoneAvailable' */ microphoneCheck?: 'requireMicrophoneAvailable' | 'skip'; }; }; /** * Props required for the {@link CallWithChatComposite} * * @public */ export declare interface CallWithChatCompositeProps extends BaseCompositeProps { adapter: CallWithChatAdapter; /** * Fluent theme for the composite. * * Defaults to a light theme if undefined. */ fluentTheme?: PartialTheme | Theme; /** * Optimizes the composite form factor for either desktop or mobile. * @remarks `mobile` is currently only optimized for Portrait mode on mobile devices and does not support landscape. * @defaultValue 'desktop' */ formFactor?: 'desktop' | 'mobile'; /** * URL that can be used to copy a call-with-chat invite to the Users clipboard. */ joinInvitationURL?: string; /** * Flags to enable/disable or customize UI elements of the {@link CallWithChatComposite} */ options?: CallWithChatCompositeOptions; } /** * Strings used by the {@link CallWithChatComposite} directly. * * This strings are in addition to those used by the components from the component library. * * @public */ export declare interface CallWithChatCompositeStrings { /** * {@link CallWithChatComposite} control bar People button label */ peopleButtonLabel: string; /** * {@link CallWithChatComposite} control bar People button label when checked */ selectedPeopleButtonLabel: string; /** * {@link CallWithChatComposite} aria label for control bar People button when unchecked */ peopleButtonTooltipOpenAriaLabel: string; /** * {@link CallWithChatComposite} aria label for control bar People button when checked */ peopleButtonTooltipCloseAriaLabel: string; /** * {@link CallWithChatComposite} control bar People button ToolTipContent */ peopleButtonTooltipOpen: string; /** * {@link CallWithChatComposite} control bar People button ToolTipContent */ peopleButtonTooltipClose: string; /** * {@link CallWithChatComposite} control bar Chat button label. */ chatButtonLabel: string; /** * {@Link CallWithChatComposite} control bar Chat button ToolTipContent. */ chatButtonTooltipOpen: string; /** * {@Link CallWithChatComposite} control bar Chat button ToolTipContent. */ chatButtonTooltipClose: string; /** * {@link CallWithChatComposite} control bar Chat button enhanced tooltip string. */ chatButtonTooltipClosedWithMessageCount: string; /** * Title for the audio device selection sub-menu in more button drawer. * * Only used with `mobileView` set to `true` and when no speakers are available. */ moreDrawerAudioDeviceMenuTitle?: string; /** * Title for the microphone selection sub-menu in more button drawer. * * Only used with `mobileView` set to `true` and when speakers are available. */ moreDrawerMicrophoneMenuTitle: string; /** * Title for the speaker selection sub-menu in more button drawer. * * Only used with `mobileView` set to `true`. */ moreDrawerSpeakerMenuTitle: string; /** * Title for the captions sub-menu in more button drawer. * * Only used with `mobileView` set to `true`. */ moreDrawerCaptionsMenuTitle: string; /** * Title for the spoken language sub-menu in more button drawer. * * Only used with `mobileView` set to `true`. */ moreDrawerSpokenLanguageMenuTitle: string; /** * Title for the caption language sub-menu in more button drawer. * * Only used with `mobileView` set to `true`. */ moreDrawerCaptionLanguageMenuTitle: string; /** * Title for the gallery options sub-menu in the more button drawer. */ moreDrawerGalleryOptionsMenuTitle: string; /** * {@Link CallWithChatComposite} control bar More button label */ moreDrawerButtonLabel: string; /** * {@Link CallWithChatComposite} control bar More button tooltip content */ moreDrawerButtonTooltip: string; /** * Side pane People section Title. */ peoplePaneTitle: string; /** * Side pane People section subheader. */ peoplePaneSubTitle: string; /** * Side pane Chat screen title. */ chatPaneTitle: string; /** * Side pane Chat screen title in a breakout room. */ breakoutRoomChatPaneTitle: string; /** * Label for spinner when chat content is loading. */ chatContentSpinnerLabel: string; /** * New Message label for chat button with notification icon component. */ chatButtonNewMessageNotificationLabel: string; /** * Aria label for the picture in picture in picture tile that. * This feature currently only shows on mobileView when the chat or people pane is expanded. * @remarks * This component displays the local and most-dominant remote participant and when clicked * returns the user to the call screen. */ pictureInPictureTileAriaLabel: string; /** * Label for menu item to remove participant */ removeMenuLabel: string; /** * Label for button to copy invite link */ copyInviteLinkButtonLabel: string; /** * Label for button to copy invite link when it has been actioned */ copyInviteLinkButtonActionedLabel: string; /** * Label for button to open dialpad */ openDialpadButtonLabel: string; /** * Label for SidePaneHeader dismiss button */ dismissSidePaneButtonLabel?: string; /** * Aria Description string for return to call button */ returnToCallButtonAriaDescription?: string; /** * Aria label string for return to call back button */ returnToCallButtonAriaLabel?: string; /** * Label for add people dropdown */ peoplePaneAddPeopleButtonLabel: string; /** * Label for button to start a call */ dialpadStartCallButtonLabel: string; /** * Title for dialpad Modal */ dialpadModalTitle: string; /** * Aria Label for dialpad Modal */ dialpadModalAriaLabel: string; /** * Aria Label for dialpad Modal close button */ dialpadCloseModalButtonAriaLabel: string; /** * Placeholder text for dtmf dialpad */ dtmfDialpadPlaceholderText: string; /** * Label for the button to open dtmf dialpad */ openDtmfDialpadLabel: string; /** * aria label for when the invite link has been actioned */ copyInviteLinkActionedAriaLabel: string; } /** * Customization options for the control bar in calling with chat experience. * * @public */ export declare interface CallWithChatControlOptions extends CommonCallControlOptions { /** * Show or hide the chat button in the call-with-chat composite control bar. * @defaultValue true */ chatButton?: boolean | { disabled: boolean; }; } /** * Events fired off by the {@link CallWithChatAdapter}. * * @public */ export declare type CallWithChatEvent = 'callError' | 'chatError' | 'callEnded' | 'isMutedChanged' | 'callIdChanged' | 'isLocalScreenSharingActiveChanged' | 'displayNameChanged' | 'isSpeakingChanged' | 'callParticipantsJoined' | 'callParticipantsLeft' | 'selectedMicrophoneChanged' | 'selectedSpeakerChanged' | 'isCaptionsActiveChanged' | 'captionsReceived' | 'isCaptionLanguageChanged' | 'isSpokenLanguageChanged' | 'realTimeTextReceived' | 'capabilitiesChanged' | 'spotlightChanged' | 'breakoutRoomsUpdated' | 'messageReceived' | 'messageEdited' | 'messageDeleted' | 'messageSent' | 'messageRead' | 'chatParticipantsAdded' | 'chatParticipantsRemoved' | 'chatInitialized'; /** * A button to turn camera on / off. * * Can be used with {@link ControlBar}. * * @public */ export declare const CameraButton: (props: CameraButtonProps) => JSX.Element; /** * Styles for the {@link CameraButton} menu. * * @public */ export declare interface CameraButtonContextualMenuStyles extends IContextualMenuStyles { /** * Styles for the items inside the {@link CameraButton} button menu. */ menuItemStyles?: IContextualMenuItemStyles; } /** * Props for {@link CameraButton} component. * * @public */ export declare interface CameraButtonProps extends ControlBarButtonProps { /** * Utility property for using this component with `communication react eventHandlers`. * Maps directly to the `onClick` property. */ onToggleCamera?: (options?: VideoStreamOptions) => Promise; /** * Options for rendering local video view. */ localVideoViewOptions?: VideoStreamOptions; /** * Available cameras for selection */ cameras?: OptionsDevice[]; /** * Camera that is shown as currently selected */ selectedCamera?: OptionsDevice; /** * Callback when a camera is selected */ onSelectCamera?: (device: OptionsDevice) => Promise; /** * Whether to use a {@link SplitButton} with a {@link IContextualMenu} for device selection. * * default: false */ enableDeviceSelectionMenu?: boolean; /** * Optional strings to override in component */ strings?: Partial; /** * Styles for {@link CameraButton} and the device selection flyout. */ styles?: Partial; /** * Callback when a effects is clicked */ onClickVideoEffects?: (showVideoEffects: boolean) => void; } /** * Selector type for {@link CameraButton} component. * * @public */ export declare type CameraButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => { disabled: boolean; checked: boolean; cameras: VideoDeviceInfo[]; selectedCamera?: VideoDeviceInfo; }; /** * Strings of CameraButton that can be overridden. * * @public */ export declare interface CameraButtonStrings { /** Label when button is on. */ onLabel: string; /** Label when button is off. */ offLabel: string; /** Tooltip content when the button is disabled. */ tooltipDisabledContent?: string; /** Tooltip content when the button is on. */ tooltipOnContent?: string; /** Tooltip content when the button is off. */ tooltipOffContent?: string; /** Tooltip content when the button is disabled due to video loading. */ tooltipVideoLoadingContent?: string; /** * Title of camera menu */ cameraMenuTitle: string; /** * Tooltip of camera menu */ cameraMenuTooltip: string; /** * description of camera button split button role */ cameraButtonSplitRoleDescription?: string; /** * Camera split button aria label for when button is enabled. */ onSplitButtonAriaLabel?: string; /** * Camera split button aria label for when button is disabled. */ offSplitButtonAriaLabel?: string; /** * Camera action turned on string for announcer */ cameraActionTurnedOnAnnouncement?: string; /** * Camera action turned off string for announcer */ cameraActionTurnedOffAnnouncement?: string; /** * Primary action for when the camera is turned off */ offSplitButtonPrimaryActionCamera?: string; /** * Primary action for when the camera is on */ onSplitButtonPrimaryActionCamera?: string; /** * Title for primary action section of split button */ cameraPrimaryActionSplitButtonTitle?: string; /** * Title for video effects menu item */ videoEffectsMenuItemTitle?: string; /** * Aria description for camera button */ cameraButtonAriaDescription?: string; } /** * Styles for {@link CameraButton} * * @public */ export declare interface CameraButtonStyles extends ControlBarButtonStyles { /** * Styles for the {@link CameraButton} menu. */ menuStyles?: Partial; } /** * @public * Callback function run when a message edit is cancelled. */ export declare type CancelEditCallback = (messageId: string) => void; /** * Callback for {@link CallAdapterSubscribers} 'capabilitiesChanged' event. * * @public */ export declare type CapabilitiesChangedListener = (data: CapabilitiesChangeInfo) => void; /** * State only version of {@link @azure/communication-calling#CapabilitiesFeature} * * @public */ export declare interface CapabilitiesFeatureState { /** * Proxy of {@link @azure/communication-calling#CapabilitiesFeature.capabilities}. */ capabilities: ParticipantCapabilities; /** * Proxy of the latest {@link @azure/communication-calling#CapabilitiesChangeInfo} */ latestCapabilitiesChangeInfo: CapabilitiesChangeInfo; } /** * Strings for capability changed notification * @public */ export declare interface CapabilityChangedNotificationStrings { /** * Strings for 'turnVideoOn' capability */ turnVideoOn?: { /** * Notification message shown to the user when capability to turn video on is lost due to a meeting option change */ lostDueToMeetingOption?: string; /** * Notification message shown to the user when capability to turn video on is granted due to a meeting option change */ grantedDueToMeetingOption?: string; }; /** * Strings for 'unmuteMic' capability */ unmuteMic?: { /** * Notification message shown to the user when capability to unmute mic is lost due to a meeting option change */ lostDueToMeetingOption?: string; /** * Notification message shown to the user when capability to unmute mic is granted due to a meeting option change */ grantedDueToMeetingOption?: string; }; /** * Strings for 'shareScreen' capability */ shareScreen?: { /** * Notification message shown to the user when capability to share screen is lost due to a role change to Attendeee */ lostDueToRoleChangeToAttendee?: string; /** * Notification message shown to the user when capability to share screen is granted due to a role change to Presenter */ grantedDueToRoleChangeToPresenter?: string; }; /** * Strings for hidden attendee names capability */ hideAttendeeNames?: { /** * Notification message shown to the user when capability to view attendee names is lost due to a meeting option change for Attendee */ hideAttendeeNameAttendee?: string; /** * Notification message shown to the user when capability to view attendee names is lost due to a meeting option change for Presenter */ hideAttendeeNamePresenter?: string; }; } /** * @public * caption language strings for captions setting modal */ export declare interface CaptionLanguageStrings { ar: string; da: string; de: string; en: string; es: string; fi: string; fr: string; 'fr-ca': string; hi: string; it: string; ja: string; ko: string; nb: string; nl: string; pl: string; pt: string; ru: string; sv: string; 'zh-Hans': string; 'zh-Hant': string; cs: string; 'pt-pt': string; tr: string; vi: string; th: string; he: string; cy: string; uk: string; el: string; hu: string; ro: string; sk: string; } /** * @public * A component for displaying a CaptionsBanner with user icon, displayName and captions text. */ export declare const CaptionsBanner: (props: CaptionsBannerProps) => JSX.Element; /** * @public * CaptionsBanner Component Props. */ export declare interface CaptionsBannerProps { /** * Array of captions to be displayed */ captions: CaptionsInformation[]; /** * Array of finalized and partial real time text messages */ realTimeTexts?: { completedMessages?: RealTimeTextInformation[]; currentInProgress?: RealTimeTextInformation[]; myInProgress?: RealTimeTextInformation; }; /** * Flag to indicate if captions are on */ isCaptionsOn?: boolean; /** * Flag to indicate if real time text is on */ isRealTimeTextOn?: boolean; /** * Flag to indicate if captions are being started * This is used to show spinner while captions are being started */ startCaptionsInProgress?: boolean; /** * Optional callback to override render of the avatar. * * @param userId - user Id */ onRenderAvatar?: OnRenderAvatarCallback; /** * Optional strings for the component */ strings?: CaptionsBannerStrings; /** * Optional form factor for the component. * @defaultValue 'default' */ formFactor?: 'default' | 'compact'; /** * Optional options for the component. */ captionsOptions?: { height: 'full' | 'default'; }; /** * Optional callback to send real time text. */ onSendRealTimeText?: (text: string, isFinalized: boolean) => Promise; /** * Latest local real time text */ latestLocalRealTimeText?: RealTimeTextInformation; } /** * Selector type for the {@link CaptionsBanner} component. * @public */ export declare type CaptionsBannerSelector = (state: CallClientState, props: CallingBaseSelectorProps) => { captions: CaptionsInformation[]; realTimeTexts: { completedMessages?: RealTimeTextInformation[]; currentInProgress?: RealTimeTextInformation[]; myInProgress?: RealTimeTextInformation; }; isCaptionsOn: boolean; startCaptionsInProgress: boolean; isRealTimeTextOn: boolean; latestLocalRealTimeText: RealTimeTextInformation; }; /** * @public * strings for captions banner */ export declare interface CaptionsBannerStrings { /** * Spinner text for captions banner */ captionsBannerSpinnerText?: string; /** * Default text for RTT input text box */ realTimeTextInputBoxDefaultText?: string; /** * Error message for RTT input text box when the size exceeds the limit 2000 */ realTimeTextInputErrorMessage?: string; /** * Real time text disclosure banner title */ realTimeTextBannerTitle?: string; /** * Real time text disclosure banner content */ realTimeTextBannerContent?: string; /** * Real time text disclosure banner link label */ realTimeTextBannerLinkLabel?: string; /** * Title for the container when only captions is enabled */ captionsOnlyContainerTitle?: string; /** * Title for the container when only real time text is enabled */ realTimeTextOnlyContainerTitle?: string; /** * Title for the container when both captions and real time text is enabled */ captionsAndRealTimeTextContainerTitle?: string; /** * Expand button aria label */ expandButtonAriaLabel?: string; /** * Minimize button aria label */ minimizeButtonAriaLabel?: string; } /** * @public */ export declare interface CaptionsCallFeatureState { /** * supported spoken languages */ supportedSpokenLanguages: string[]; /** * array of received captions */ captions: CaptionsInfo[]; /** * whether captions is on/off */ isCaptionsFeatureActive: boolean; /** * whether start captions button is clicked or now */ startCaptionsInProgress: boolean; /** * supported caption languages */ supportedCaptionLanguages: string[]; /** * current spoken language */ currentSpokenLanguage: string; /** * current caption language */ currentCaptionLanguage: string; /** * current caption kind: teams or acs captions */ captionsKind: CaptionsKind; } /** * Selector type for components for Changing caption language and spoken language * @public */ export declare type CaptionSettingsSelector = (state: CallClientState, props: CallingBaseSelectorProps) => { supportedCaptionLanguages: SupportedCaptionLanguage[]; currentCaptionLanguage: SupportedCaptionLanguage; supportedSpokenLanguages: SupportedSpokenLanguage[]; currentSpokenLanguage: SupportedSpokenLanguage; isCaptionsFeatureActive: boolean; }; /** * @public */ export declare interface CaptionsInfo { /** * The state in which this caption data can be classified. */ resultType: CaptionsResultType; /** * The information of the call participant who spoke the captioned text. */ speaker: CallerInfo; /** * The language that the spoken words were interpretted as. Corresponds to the language specified in startCaptions / setSpokenLanguage. */ spokenLanguage: string; /** * The caption text. */ captionText: string; /** * Timestamp of when the captioned words were initially spoken. */ timestamp: Date; /** * Timestamp of when the captions were last updated. */ lastUpdatedTimestamp?: Date; /** * The language that the captions are presented in. Corresponds to the captionLanguage specified in startCaptions / setCaptionLanguage. */ captionLanguage?: string; /** * The original spoken caption text prior to translating to subtitle language */ spokenText?: string; } /** * @public * information required for each line of caption */ export declare type CaptionsInformation = { /** * unique id for each caption */ id: string; /** * speaker's display name */ displayName: string; /** * content of the caption */ captionText: string; /** * id of the speaker */ userId?: string; /** * timestamp when the caption was created * Please note that this value is essential for determining the order of captions and real time text messages * If you are using both captions and real time text, please ensure that the createdTimeStamp is populated */ createdTimeStamp?: Date; /** * If caption is finalized */ isFinalized?: boolean; }; /** * options bag to start captions * * @public */ export declare type CaptionsOptions = { spokenLanguage: string; }; /** * Callback for {@link CallAdapterSubscribers} 'captionsReceived' event. * * @public */ export declare type CaptionsReceivedListener = (event: { captionsInfo: CaptionsInfo; }) => void; /** * @public * a component for setting spoken languages */ export declare const CaptionsSettingsModal: (props: CaptionsSettingsModalProps) => JSX.Element; /** * @public * CaptionsSettingsModal Component Props. */ export declare interface CaptionsSettingsModalProps { /** * List of supported spoken languages */ supportedSpokenLanguages: SupportedSpokenLanguage[]; /** * List of supported caption languages */ supportedCaptionLanguages?: SupportedCaptionLanguage[]; /** * Callback to set spoken language */ onSetSpokenLanguage: (language: SupportedSpokenLanguage) => Promise; /** * Callback to set caption language */ onSetCaptionLanguage?: (language: SupportedCaptionLanguage) => Promise; /** * Callback to start captions */ onStartCaptions: (options?: CaptionsOptions) => Promise; /** * Current spoken language */ currentSpokenLanguage: SupportedSpokenLanguage; /** * Current caption language */ currentCaptionLanguage?: SupportedCaptionLanguage; /** * 1 to 1 mapping between language code and language string for spoken languages */ spokenLanguageStrings?: SpokenLanguageStrings; /** * 1 to 1 mapping between language code and language string for caption languages */ captionLanguageStrings?: CaptionLanguageStrings; /** * Flag to indicate if captions feature is active */ isCaptionsFeatureActive?: boolean; /** * Strings for the captions settings modal */ strings?: CaptionsSettingsModalStrings; /** * Flag to show the modal */ showModal?: boolean; /** * Callback that is triggered when the modal is dismissed */ onDismissCaptionsSettings?: () => void; /** * Flag to show the caption language dropdown */ changeCaptionLanguage?: boolean; } /** * @public * strings for captions setting modal */ export declare interface CaptionsSettingsModalStrings { /** * Title for the modal */ captionsSettingsModalTitle?: string; /** * Label for the spoken language dropdown menu */ captionsSettingsSpokenLanguageDropdownLabel?: string; /** * Label for the caption language dropdown menu */ captionsSettingsCaptionLanguageDropdownLabel?: string; /** * Disclaimer for the spoken language dropdown menu */ captionsSettingsSpokenLanguageDropdownInfoText?: string; /** * Disclaimer for the caption language dropdown menu */ captionsSettingsCaptionLanguageDropdownInfoText?: string; /** * Label for the confirm button */ captionsSettingsConfirmButtonLabel?: string; /** * Label for the cancel button */ captionsSettingsCancelButtonLabel?: string; /** * Aria label for the modal */ captionsSettingsModalAriaLabel?: string; /** * Aria label for the close modal button */ captionsSettingsCloseModalButtonAriaLabel?: string; } /** * {@link ChatComposite} Adapter interface. * * @public */ export declare type ChatAdapter = ChatAdapterThreadManagement & AdapterState & Disposable_2 & ChatAdapterSubscribers; /** * Options for configuring the ChatAdapter. * * @public */ export declare type ChatAdapterOptions = { /** * Optional callback to fetch a chat profile */ onFetchProfile?: OnFetchChatProfileCallback; }; /** * {@link ChatAdapter} state. * * @public */ export declare type ChatAdapterState = ChatAdapterUiState & ChatCompositeClientState; /** * Chat composite events that can be subscribed to. * * @public */ export declare interface ChatAdapterSubscribers { /** * Subscribe function for 'messageReceived' event. */ on(event: 'messageReceived', listener: MessageReceivedListener): void; /** * Subscribe function for 'messageEdited' event. */ on(event: 'messageEdited', listener: MessageEditedListener): void; /** * Subscribe function for 'messageDeleted' event. */ on(event: 'messageDeleted', listener: MessageDeletedListener): void; /** * Subscribe function for 'messageSent' event. */ on(event: 'messageSent', listener: MessageSentListener): void; /** * Subscribe function for 'messageRead' event. */ on(event: 'messageRead', listener: MessageReadListener): void; /** * Subscribe function for 'participantsAdded' event. */ on(event: 'participantsAdded', listener: ParticipantsAddedListener): void; /** * Subscribe function for 'participantsRemoved' event. */ on(event: 'participantsRemoved', listener: ParticipantsRemovedListener): void; /** * Subscribe function for 'topicChanged' event. */ on(event: 'topicChanged', listener: TopicChangedListener): void; /** * Subscribe function for 'error' event. */ on(event: 'error', listener: (e: AdapterError) => void): void; /** * Unsubscribe function for 'messageReceived' event. */ off(event: 'messageReceived', listener: MessageReceivedListener): void; /** * Unsubscribe function for 'messageEdited' event. */ off(event: 'messageEdited', listener: MessageEditedListener): void; /** * Unsubscribe function for 'messageDeleted' event. */ off(event: 'messageDeleted', listener: MessageDeletedListener): void; /** * Unsubscribe function for 'messageSent' event. */ off(event: 'messageSent', listener: MessageSentListener): void; /** * Unsubscribe function for 'messageRead' event. */ off(event: 'messageRead', listener: MessageReadListener): void; /** * Unsubscribe function for 'participantsAdded' event. */ off(event: 'participantsAdded', listener: ParticipantsAddedListener): void; /** * Unsubscribe function for 'participantsRemoved' event. */ off(event: 'participantsRemoved', listener: ParticipantsRemovedListener): void; /** * Unsubscribe function for 'topicChanged' event. */ off(event: 'topicChanged', listener: TopicChangedListener): void; /** * Unsubscribe function for 'error' event. */ off(event: 'error', listener: (e: AdapterError) => void): void; } /** * Functionality for managing the current chat thread. * * @public */ export declare interface ChatAdapterThreadManagement { /** * Fetch initial state for the Chat adapter. * * Performs the minimal fetch necessary for ChatComposite and API methods. */ fetchInitialData(): Promise; /** * Send a message in the thread. * Please note that SendMessageOptions is being deprecated, please use MessageOptions instead. */ sendMessage(content: string, options?: SendMessageOptions): Promise; /** * Send a read receipt for a message. */ sendReadReceipt(chatMessageId: string): Promise; /** * Send typing indicator in the thread. */ sendTypingIndicator(): Promise; /** * Remove a participant in the thread. */ removeParticipant(userId: string): Promise; /** * Set the topic for the thread. */ setTopic(topicName: string): Promise; /** * Update a message content. * Please note that metadata is being deprecated, please use MessageOptions.metadata instead. */ updateMessage(messageId: string, content: string, options?: Record): Promise; /** * Delete a message in the thread. */ deleteMessage(messageId: string): Promise; /** * Load more previous messages in the chat thread history. * * @remarks * This method is usually used to control incremental fetch/infinite scroll * */ loadPreviousChatMessages(messagesToLoad: number): Promise; /** * Downloads a resource into the cache for the given message. */ downloadResourceToCache(resourceDetails: ResourceDetails): Promise; /** * Removes a resource from the cache for the given message. */ removeResourceFromCache(resourceDetails: ResourceDetails): void; } /** * {@link ChatAdapter} state for pure UI purposes. * * @public */ export declare type ChatAdapterUiState = { error?: Error; }; /** * Represents the type of attachment * @public */ export declare type ChatAttachmentType = 'unknown' | 'image' | 'file'; /** * Common props for selectors for {@link ChatClientState}. * * @public */ export declare type ChatBaseSelectorProps = { threadId: string; }; /** * A {@link React.Context} that stores a {@link StatefulChatClient}. * * Chat components from this package must be wrapped with a {@link ChatClientProvider}. * * @public */ export declare const ChatClientProvider: (props: ChatClientProviderProps) => JSX.Element; /** * Arguments to initialize a {@link ChatClientProvider}. * * @public */ export declare type ChatClientProviderProps = { children: React_2.ReactNode; chatClient: StatefulChatClient; }; /** * Centralized state for {@link @azure/communication-chat#ChatClient}. * * @public */ export declare type ChatClientState = { /** * Identifier of the current user. */ userId: CommunicationIdentifierKind; /** * DisplayName of the current user. * The same value as what others see in {@link @azure/communication-chat#ChatParticipant.displayName} */ displayName: string; /** * Chat threads joined by the current user. * Object with {@link ChatThreadClientState} fields, keyed by {@link ChatThreadClientState.threadId}. */ threads: { [key: string]: ChatThreadClientState; }; /** * Stores the latest error for each API method. * * See documentation of {@link ChatErrors} for details. */ latestErrors: ChatErrors; }; /** * A customizable UI composite for the chat experience. * * @remarks Chat composite min width and height are respectively 17.5rem and 20rem (280px and 320px, with default rem at 16px) * * @public */ export declare const ChatComposite: (props: ChatCompositeProps) => JSX.Element; /** * {@link ChatAdapter} state inferred from Azure Communication Services backend. * * @public */ export declare type ChatCompositeClientState = { userId: CommunicationIdentifierKind; displayName: string; thread: ChatThreadClientState; /** * Latest error encountered for each operation performed via the adapter. */ latestErrors: AdapterErrors; }; /** * Icons that can be overridden for {@link ChatComposite}. * * @public */ export declare 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; }; /** * Props for the ChatComposite that you can use in your application. Contains the * options for the {@link ChatComposite} {@link ChatCompositeOptions}. * @public */ export declare interface ChatCompositeLoaderProps extends Partial> { /** * UserId for the local user. */ userId: CommunicationUserIdentifier; /** * CommunicationTokenCredential for the local user. */ credential: CommunicationTokenCredential; /** * Display name for the local user. */ displayName?: string; /** * Communication service endpoint. This is used for the token and joining the chat thread. */ endpoint: string; /** * Communication threadId for the chat thread. */ threadId: string; /** * Options for the {@link AzureCommunicationChatAdapter} * This is used to configure the chat adapter. */ chatCompositeOptions?: ChatCompositeOptions; } /** * Optional features of the {@link ChatComposite}. * * @public */ export declare type ChatCompositeOptions = { /** * Surface Azure Communication Services backend errors in the UI with {@link @azure/communication-react#ErrorBar}. * Hide or show the error bar. * @defaultValue true */ errorBar?: boolean; /** * Show or hide the topic at the top of the chat. Hidden if set to `false` * @defaultValue true */ topic?: boolean; /** * enumerable to determine if the input box has focus on render or not. * When undefined nothing has focus on render */ autoFocus?: 'sendBoxTextField'; }; /** * Props for {@link ChatComposite}. * * @public */ export declare interface ChatCompositeProps extends BaseCompositeProps { /** * An adapter provides logic and data to the composite. * Composite can also be controlled using the adapter. */ adapter: ChatAdapter; /** * `(messageProps: MessageProps, defaultOnRender?: MessageRenderer) => JSX.Element` * A callback for customizing the message renderer. */ onRenderMessage?: (messageProps: MessageProps, defaultOnRender?: MessageRenderer) => JSX.Element; /** * `(typingUsers: CommunicationParticipant[]) => JSX.Element` * A callback for customizing the typing indicator renderer. */ onRenderTypingIndicator?: (typingUsers: CommunicationParticipant[]) => JSX.Element; /** * Flags to enable/disable visual elements of the {@link ChatComposite}. */ options?: ChatCompositeOptions; } /** * Strings used by the {@link ChatComposite} directly. * * This strings are in addition to those used by the components from the component library. * * @public */ export declare interface ChatCompositeStrings { /** * Chat list header text */ chatListHeader: string; } /** * Error thrown from failed {@link StatefulChatClient} methods. * * @public */ export declare class ChatError extends Error { /** * The API method target that failed. */ target: ChatErrorTarget; /** * Error thrown by the failed SDK method. */ innerError: Error; /** * Timestamp added to the error by the stateful layer. */ timestamp: Date; constructor(target: ChatErrorTarget, innerError: Error, timestamp?: Date); } /** * Selector type for {@link ErrorBar} component. * * @public */ export declare type ChatErrorBarSelector = (state: ChatClientState, props: ChatBaseSelectorProps) => { activeErrorMessages: ActiveErrorMessage[]; }; /** * Errors teed from API calls to the Chat SDK. * * Each property in the object stores the latest error for a particular SDK API method. * * @public */ export declare type ChatErrors = { [target in ChatErrorTarget]: ChatError; }; /** * String literal type for all permissible keys in {@link ChatErrors}. * * @public */ export declare 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'; /** * Object containing all the handlers required for chat components. * * Chat related components from this package are able to pick out relevant handlers from this object. * See {@link useHandlers} and {@link usePropsFor}. * * @public */ export declare type ChatHandlers = { onSendMessage: (content: string, options?: SendMessageOptions) => Promise; onMessageSeen: (chatMessageId: string) => Promise; onTyping: () => Promise; onRemoveParticipant: (userId: string) => Promise; updateThreadTopicName: (topicName: string) => Promise; onLoadPreviousChatMessages: (messagesToLoad: number) => Promise; onUpdateMessage: (messageId: string, content: string) => Promise; onDeleteMessage: (messageId: string) => Promise; }; /** * Callback for {@link CallWithChatAdapterSubscribers} 'chatInitialized' event. * * @public */ export declare type ChatInitializedListener = (event: { adapter: CallWithChatAdapter; }) => void; /** * A chat message. * * @public */ export declare interface ChatMessage extends MessageCommon { messageType: 'chat'; content?: string; editedOn?: Date; deletedOn?: Date; senderId?: string; senderDisplayName?: string; status?: MessageStatus; failureReason?: string; attached?: MessageAttachedStatus; mine?: boolean; clientMessageId?: string; contentType: MessageContentType; /** * A metadata field for the message. * {@link @azure/communication-chat#ChatMessage.metadata} */ metadata?: Record; /** * A list of attachments in the message. * {@link AttachmentMetadata} */ attachments?: AttachmentMetadata[]; } /** * An extension to {@link @azure/communication-chat#ChatMessage} that stores * client-side only metadata for chat messages. * * TODO: The name has bitrotted. Rename me. * * @public */ export declare type ChatMessageWithStatus = ChatMessage_2 & { clientMessageId?: string; status: MessageStatus; resourceCache?: Record; }; /** * Selector type for {@link ParticipantList} component. * * @public */ export declare type ChatParticipantListSelector = (state: ChatClientState, props: ChatBaseSelectorProps) => { myUserId: string; participants: ParticipantListParticipant[]; }; /** * The profile of a user or bot. * * @public */ export declare type ChatProfile = { /** * Primary text to display, usually the name of the person. */ displayName?: string; }; /** * Helper type for {@link usePropsFor}. * * @public */ export declare type ChatReturnProps JSX.Element> = GetChatSelector extends ((state: ChatClientState, props: any) => any) ? ReturnType> & Common[0]> : never; /** * A {@link React.Context} that stores a {@link @azure/communication-chat#ChatThreadClient}. * * Chat components from this package must be wrapped with a {@link ChatThreadClientProvider}. * * @public */ export declare const ChatThreadClientProvider: (props: ChatThreadClientProviderProps) => JSX.Element; /** * Arguments to initialize a {@link ChatThreadClientProvider}. * * @public */ export declare type ChatThreadClientProviderProps = { children: React_2.ReactNode; chatThreadClient: ChatThreadClient; }; /** * Centralized state for {@link @azure/communication-chat#ChatThreadClient}. * * @public */ export declare type ChatThreadClientState = { /** * Messages in this thread. * Object with {@link ChatMessageWithStatus} entries * Local messages are keyed by keyed by {@link ChatMessageWithStatus.clientMessageId}. * Remote messages are keyed by {@link @azure/communication-chat#ChatMessage.id}. */ chatMessages: { [key: string]: ChatMessageWithStatus; }; /** * Participants of this chat thread. * * Object with {@link @azure/communication-chat#ChatParticipant} fields, * keyed by {@link @azure/communication-chat#ChatParticipant.id}. */ participants: { [key: string]: ChatParticipant; }; /** * Id of this chat thread. Returned from {@link @azure/communication-chat#ChatThreadClient.threadId} */ threadId: string; /** * An object containing properties of this chat thread. */ properties?: ChatThreadProperties; /** * An array of ReadReceipts of this chat thread. Returned from {@link @azure/communication-chat#ChatThreadClient.listReadReceipts} */ readReceipts: ChatMessageReadReceipt[]; /** * An array of typingIndicators of this chat thread. Captured from event listener of {@link @azure/communication-chat#ChatClient} * Stateful client only stores recent 8000ms real-time typing indicators data. */ typingIndicators: TypingIndicatorReceivedEvent[]; /** * Latest timestamp when other users read messages sent by current user. */ latestReadTime: Date; }; /** * Properties of a chat thread. * * We define a minimal one that helps us hide the different types used by underlying API. * * @public */ export declare type ChatThreadProperties = { topic?: string; }; /** * Centralized state for {@link @azure/communication-calling#CallClient} or {@link @azure/communication-chat#ChatClient}. * * See also: {@link CallClientState}, {@link ChatClientState}. * @public */ export declare type ClientState = CallClientState & ChatClientState; /** * Return intersect type of 2 types * * @public */ export declare type Common = Pick>; /** * {@link CallComposite} Adapter interface. * * @public */ export declare interface CommonCallAdapter extends AdapterState, Disposable_2, CallAdapterCallOperations, CallAdapterDeviceManagement, CallAdapterSubscribers { /** * Join the call with microphone initially on/off. * @deprecated Use joinCall(options?:JoinCallOptions) instead. * @param microphoneOn - Whether microphone is initially enabled * * @public */ joinCall(microphoneOn?: boolean): void; /** * Join the call with options bag to set microphone/camera initial state when joining call * true = turn on the device when joining call * false = turn off the device when joining call * 'keep'/undefined = retain devices' precall state * * @param options - param to set microphone/camera initially on/off/use precall state. * * @public */ joinCall(options?: JoinCallOptions): void; /** * Start the call. * * @param participants - An array of participant ids to join * * @public */ startCall(participants: string[], options?: StartCallOptions): void; /** * Start the call. * @param participants - An array of {@link @azure/communication-common#CommunicationIdentifier} to be called * @public */ startCall(participants: StartCallIdentifier[], options?: StartCallOptions): void; } /** * Common optional parameters to create {@link AzureCommunicationCallAdapter} or {@link TeamsCallAdapter} * * @public */ export declare type CommonCallAdapterOptions = { /** * Default set of background images for background image picker. */ videoBackgroundOptions?: { videoBackgroundImages?: VideoBackgroundImage[]; onResolveDependency?: () => Promise; }; /** * `DeepNoiseSuppressionEffect` options to be used for noise suppression. */ deepNoiseSuppressionOptions?: { onResolveDependency?: () => Promise; deepNoiseSuppressionOnByDefault?: boolean; hideDeepNoiseSuppressionButton?: boolean; }; /** * Use this to fetch profile information which will override data in {@link CallAdapterState} like display name * The onFetchProfile is fetch-and-forget one time action for each user, once a user profile is updated, the value will be cached * and would not be updated again within the lifecycle of adapter. */ onFetchProfile?: OnFetchProfileCallback; /** * Sounds to use for calling events */ callingSounds?: CallingSounds; /** * Reaction resource for reaction resources * @beta */ reactionResources?: ReactionResources; /** * A phone number in E.164 format procured using Azure Communication Services that will be used to represent callers identity. * E.164 numbers are formatted as [+] [country code] [phone number including area code]. For example, +14255550123 for a US phone number. */ alternateCallerId?: string; }; /** * Customization options for the control bar in calling experience. * * @public */ export declare type CommonCallControlOptions = { /** * {@link CallControlDisplayType} to change how the call controls are displayed. * `'compact'` display type will decreases the size of buttons and hide the labels. * * @remarks * If the composite `formFactor` is set to `'mobile'`, the control bar will always use compact view. * * @defaultValue 'default' */ displayType?: CallControlDisplayType; /** * Show or Hide Camera Button during a call * @defaultValue true */ cameraButton?: boolean | { disabled: boolean; }; /** * Show or Hide EndCall button during a call. * @defaultValue true */ endCallButton?: boolean | { /** * whether to make end call button to trigger a menu, which will enable end call for everybody functionality. * @defaultValue false */ hangUpForEveryone?: false | 'endCallOptions'; /** * Wether to disable the end call confirmation modal. */ disableEndCallModal?: boolean; }; /** * Show or Hide Microphone button during a call. * @defaultValue true */ microphoneButton?: boolean | { disabled: boolean; }; /** * Show or Hide Devices button during a call. * @defaultValue true */ devicesButton?: boolean | { disabled: boolean; }; /** * Show, Hide or Disable participants button during a call. * @defaultValue true */ participantsButton?: boolean | { disabled: boolean; }; /** * Show, Hide or Disable the screen share button during a call. * @defaultValue true */ screenShareButton?: boolean | { disabled: boolean; }; /** * Show, Hide or disable the more button during a call. * @defaultValue true */ moreButton?: boolean; /** * Show, Hide or Disable the screen share button during a call. * @defaultValue true */ raiseHandButton?: boolean | { disabled: boolean; }; /** * Show, Hide or Disable the reaction button during a call. * @defaultValue true */ reactionButton?: boolean | { disabled: boolean; }; /** * Inject custom buttons in the call controls. */ onFetchCustomButtonProps?: CustomCallControlButtonCallback[]; holdButton?: boolean | { disabled: boolean; }; /** * Show or hide the people button in the composite control bar. * @defaultValue true */ peopleButton?: boolean | { disabled: boolean; }; /** * Show or hide the dialpad button in the composite control bar. */ dtmfDialerButton?: boolean | { disabled: boolean; }; /** * Show or hide the exit spotlight button in the composite control bar when local participant is spotlighted. */ exitSpotlightButton?: boolean; /** * Show, Hide or Disable captions during a call. * @defaultValue true */ captionsButton?: boolean; /** * Show, Hide or Disable real time text during a call. * @defaultValue true */ realTimeTextButton?: boolean; /** * Show, Hide or Disable gallery controls button during a call. * @defaultValue true */ galleryControlsButton?: boolean; /** * Show, meeting conference phone information. * @defaultValue true */ teamsMeetingPhoneCallButton?: boolean; }; /** * Object containing all the handlers required for calling components. * * Calling related components from this package are able to pick out relevant handlers from this object. * See {@link useHandlers} and {@link usePropsFor}. * * @public */ export declare interface CommonCallingHandlers { onStartLocalVideo: () => Promise; onToggleCamera: (options?: VideoStreamOptions) => Promise; onSelectMicrophone: (device: AudioDeviceInfo) => Promise; onSelectSpeaker: (device: AudioDeviceInfo) => Promise; onSelectCamera: (device: VideoDeviceInfo, options?: VideoStreamOptions) => Promise; onToggleMicrophone: () => Promise; onStartScreenShare: () => Promise; onStopScreenShare: () => Promise; onToggleScreenShare: () => Promise; onHangUp: (forEveryone?: boolean) => Promise; onRaiseHand: () => Promise; onLowerHand: () => Promise; onToggleRaiseHand: () => Promise; onReactionClick: (reaction: Reaction_2) => Promise; onToggleHold: () => Promise; onAddParticipant(participant: CommunicationUserIdentifier): Promise; onAddParticipant(participant: PhoneNumberIdentifier, options: AddPhoneNumberOptions): Promise; onCreateLocalStreamView: (options?: VideoStreamOptions) => Promise; onCreateRemoteStreamView: (userId: string, options?: VideoStreamOptions) => Promise; /** * @deprecated use {@link onDisposeRemoteVideoStreamView} and {@link onDisposeRemoteScreenShareStreamView} instead. */ onDisposeRemoteStreamView: (userId: string) => Promise; onDisposeLocalStreamView: () => Promise; onDisposeRemoteVideoStreamView: (userId: string) => Promise; onDisposeRemoteScreenShareStreamView: (userId: string) => Promise; onDisposeLocalScreenShareStreamView: () => Promise; onSendDtmfTone: (dtmfTone: DtmfTone_2) => Promise; onRemoveParticipant(userId: string): Promise; onRemoveParticipant(participant: CommunicationIdentifier): Promise; onStartCall: (participants: CommunicationIdentifier[], options?: StartCallOptions) => void; onAcceptCall: (incomingCallId: string, useVideo?: boolean) => Promise; onRejectCall: (incomingCallId: string) => Promise; onRemoveVideoBackgroundEffects: () => Promise; onBlurVideoBackground: (backgroundBlurConfig?: BackgroundBlurConfig) => Promise; onReplaceVideoBackground: (backgroundReplacementConfig: BackgroundReplacementConfig) => Promise; onStartNoiseSuppressionEffect: () => Promise; onStopNoiseSuppressionEffect: () => Promise; onStartCaptions: (options?: CaptionsOptions) => Promise; onStopCaptions: () => Promise; onSendRealTimeText: (text: string, isFinalized: boolean) => Promise; onSetSpokenLanguage: (language: string) => Promise; onSetCaptionLanguage: (language: string) => Promise; onSubmitSurvey(survey: CallSurvey): Promise; onStartSpotlight: (userIds?: string[]) => Promise; onStopSpotlight: (userIds?: string[]) => Promise; onStopAllSpotlight: () => Promise; onMuteParticipant: (userId: string) => Promise; onMuteAllRemoteParticipants: () => Promise; /** * Call back to create a view for together mode */ onCreateTogetherModeStreamView: (options?: TogetherModeStreamOptions) => Promise; /** * Call back to create a view for together mode */ onStartTogetherMode: () => Promise; /** * Call set together mode scene size */ onSetTogetherModeSceneSize: (width: number, height: number) => void; /** * Call back to dispose together mode views */ onDisposeTogetherModeStreamView: () => Promise; /** * Forbid remote participants from sending audio * */ onForbidAudio?: (userIds: string[]) => Promise; /** * Permit remote participants to send audio * */ onPermitAudio?: (userIds: string[]) => Promise; /** * Change meeting option forbid remote participants from sending audio * */ onForbidOthersAudio?: () => Promise; /** * Change meeting option permit remote participants to send audio * */ onPermitOthersAudio?: () => Promise; /** * Forbid remote participants from sending video * */ onForbidVideo?: (userIds: string[]) => Promise; /** * Permit remote participants to send video * */ onPermitVideo?: (userIds: string[]) => Promise; /** * Change meeting option forbid remote participants from sending video * */ onForbidOthersVideo?: () => Promise; /** * Change meeting option permit remote participants to send video * */ onPermitOthersVideo?: () => Promise; } /** * Return intersect properties of 2 types * * @public */ export declare type CommonProperties = { [P in keyof A & keyof B]: A[P] extends B[P] ? P : never; }[keyof A & keyof B]; /** * A Chat or Calling participant's state, as reflected in the UI. * * @public */ export declare type CommunicationParticipant = { /** User ID of participant */ userId: string; /** Display name of participant */ displayName?: string; }; /** * Locale for Arabic (Saudi Arabia). * * @public */ export declare const COMPONENT_LOCALE_AR_SA: ComponentLocale; /** * Locale for Czech (Czech Republic). * * @public */ export declare const COMPONENT_LOCALE_CS_CZ: ComponentLocale; /** * Locale for Welsh (GB). * * @public */ export declare const COMPONENT_LOCALE_CY_GB: ComponentLocale; /** * Locale for German (Germany). * * @public */ export declare const COMPONENT_LOCALE_DE_DE: ComponentLocale; /** * Locale for English (GB). * * @public */ export declare const COMPONENT_LOCALE_EN_GB: ComponentLocale; /** * Locale for English (US). * * @public */ export declare const COMPONENT_LOCALE_EN_US: ComponentLocale; /** * Locale for Spanish (Spain). * * @public */ export declare const COMPONENT_LOCALE_ES_ES: ComponentLocale; /** * Locale for Spanish (Mexico). * * @public */ export declare const COMPONENT_LOCALE_ES_MX: ComponentLocale; /** * Locale for Finnish (Finland). * * @public */ export declare const COMPONENT_LOCALE_FI_FI: ComponentLocale; /** * Locale for French (Canada). * * @public */ export declare const COMPONENT_LOCALE_FR_CA: ComponentLocale; /** * Locale for French (France). * * @public */ export declare const COMPONENT_LOCALE_FR_FR: ComponentLocale; /** * Locale for Hebrew (Israel). * * @public */ export declare const COMPONENT_LOCALE_HE_IL: ComponentLocale; /** * Locale for Italian (Italy). * * @public */ export declare const COMPONENT_LOCALE_IT_IT: ComponentLocale; /** * Locale for Japanese (Japan). * * @public */ export declare const COMPONENT_LOCALE_JA_JP: ComponentLocale; /** * Locale for Korean (South Korea). * * @public */ export declare const COMPONENT_LOCALE_KO_KR: ComponentLocale; /** * Locale for Norwegian Bokmål (Norway) . * * @public */ export declare const COMPONENT_LOCALE_NB_NO: ComponentLocale; /** * Locale for Dutch (Netherlands). * * @public */ export declare const COMPONENT_LOCALE_NL_NL: ComponentLocale; /** * Locale for Polish (Poland). * * @public */ export declare const COMPONENT_LOCALE_PL_PL: ComponentLocale; /** * Locale for Portuguese (Brazil). * * @public */ export declare const COMPONENT_LOCALE_PT_BR: ComponentLocale; /** * Locale for Russian (Russia). * * @public */ export declare const COMPONENT_LOCALE_RU_RU: ComponentLocale; /** * Locale for Swedish (Sweden) . * * @public */ export declare const COMPONENT_LOCALE_SV_SE: ComponentLocale; /** * Locale for Turkish (Turkey). * * @public */ export declare const COMPONENT_LOCALE_TR_TR: ComponentLocale; /** * Locale for Chinese (Mainland China). * * @public */ export declare const COMPONENT_LOCALE_ZH_CN: ComponentLocale; /** * Locale for Chinese (Taiwan). * * @public */ export declare const COMPONENT_LOCALE_ZH_TW: ComponentLocale; /** * Icons used by the React components exported from this library. * * @remark See {@link CompositeIcons} for icons used by composites only. * * @public */ export declare type ComponentIcons = Record; /** * Locale information for all components exported from this library. * * @public */ export declare interface ComponentLocale { /** Strings for components */ strings: ComponentStrings; } /** * Helper type for {@link usePropsFor}. * * @public */ export declare type ComponentProps JSX.Element> = ChatReturnProps extends never ? CallingReturnProps extends never ? undefined : CallingReturnProps : ChatReturnProps; /** * ComponentSlotStyle is a \@fluentui/react-northstar type. * As we have moved away from this package we have used the more generic IRawStyle type from fluent for interoperability. * * @public */ export declare type ComponentSlotStyle = Omit; /** * Strings used by all components exported from this library. * * @public */ export declare interface ComponentStrings { /** Strings for MessageThread */ messageThread: MessageThreadStrings; /** Strings for ParticipantItem */ participantItem: ParticipantItemStrings; /** Strings for CameraButton */ cameraButton: CameraButtonStrings; /** Strings for MicrophoneButton */ microphoneButton: MicrophoneButtonStrings; /** Strings for EndCallButton */ endCallButton: EndCallButtonStrings; /** Strings for DevicesButton */ devicesButton: DevicesButtonStrings; /** Strings for ParticipantsButton */ participantsButton: ParticipantsButtonStrings; /** Strings for ScreenShareButton */ screenShareButton: ScreenShareButtonStrings; /** Strings for RaiseHandButton */ raiseHandButton: RaiseHandButtonStrings; /** * Strings for ReactionButton * */ reactionButton: ReactionButtonStrings; /** Strings for TypingIndicator */ typingIndicator: TypingIndicatorStrings; /** Strings for SendBox */ sendBox: SendBoxStrings; /** Strings for ImageOverlay */ imageOverlay: ImageOverlayStrings; /** Strings for MessageStatusIndicator */ messageStatusIndicator: MessageStatusIndicatorStrings; /** Strings for ErrorBar */ errorBar: ErrorBarStrings; /** Strings for NotificationStack */ notificationStack: NotificationStackStrings; /** Strings for VideoGallery */ videoGallery: VideoGalleryStrings; /** Strings for Dialpad */ dialpad: DialpadStrings; /** Strings for VideoTile */ videoTile: VideoTileStrings; /** Strings for HoldButton */ holdButton: HoldButtonStrings; /** * Strings for the VerticalGallery. */ verticalGallery: VerticalGalleryStrings; /** Strings for the MeetingConferencePhoneInfoModal */ meetingConferencePhoneInfo: MeetingConferencePhoneInfoModalStrings; IncomingCallNotification: IncomingCallNotificationStrings; /** Strings for the RealTimeTextModal */ realTimeTextModal: RealTimeTextModalStrings; /** Strings for RealTimeText */ realTimeText: RealTimeTextStrings; /** Strings for Captions Setting Modal */ captionsSettingsModal: CaptionsSettingsModalStrings; /** * 1 to 1 mapping between language code and language string for spoken languages */ spokenLanguages: SpokenLanguageStrings; /** * 1 to 1 mapping between language code and language string for caption languages */ captionLanguages: CaptionLanguageStrings; /** Strings for CaptionsBanner */ captionsBanner: CaptionsBannerStrings; /** Strings for Start Captions Button */ startCaptionsButton: StartCaptionsButtonStrings; /** Strings for Start RealTimeText Button */ startRealTimeTextButton: StartRealTimeTextButtonStrings; } /** * Locale for Arabic (Saudi Arabia) * * @public */ export declare const COMPOSITE_LOCALE_AR_SA: CompositeLocale; /** * Locale for Czech (Czech Republic) * * @public */ export declare const COMPOSITE_LOCALE_CS_CZ: CompositeLocale; /** * Locale for Welsh (GB) * * @public */ export declare const COMPOSITE_LOCALE_CY_GB: CompositeLocale; /** * Locale for German (Germany) * * @public */ export declare const COMPOSITE_LOCALE_DE_DE: CompositeLocale; /** * Locale for English (British) * * @public */ export declare const COMPOSITE_LOCALE_EN_GB: CompositeLocale; /** * Locale for English (US) * * @public */ export declare const COMPOSITE_LOCALE_EN_US: CompositeLocale; /** * Locale for Spanish (Spain) * * @public */ export declare const COMPOSITE_LOCALE_ES_ES: CompositeLocale; /** * Locale for Spanish (Mexico) * * @public */ export declare const COMPOSITE_LOCALE_ES_MX: CompositeLocale; /** * Locale for Finnish (Finland) * * @public */ export declare const COMPOSITE_LOCALE_FI_FI: CompositeLocale; /** * Locale for French (Canada) * * @public */ export declare const COMPOSITE_LOCALE_FR_CA: CompositeLocale; /** * Locale for French (France) * * @public */ export declare const COMPOSITE_LOCALE_FR_FR: CompositeLocale; /** * Locale for Hebrew (Israel) * * @public */ export declare const COMPOSITE_LOCALE_HE_IL: CompositeLocale; /** * Locale for Italian (Italy) * * @public */ export declare const COMPOSITE_LOCALE_IT_IT: CompositeLocale; /** * Locale for Japanese (Japan) * * @public */ export declare const COMPOSITE_LOCALE_JA_JP: CompositeLocale; /** * Locale for Korean (South Korea) * * @public */ export declare const COMPOSITE_LOCALE_KO_KR: CompositeLocale; /** * Locale for Norwegian Bokmål (Norway) * * @public */ export declare const COMPOSITE_LOCALE_NB_NO: CompositeLocale; /** * Locale for Dutch (Netherlands) * * @public */ export declare const COMPOSITE_LOCALE_NL_NL: CompositeLocale; /** * Locale for Polish (Poland) * * @public */ export declare const COMPOSITE_LOCALE_PL_PL: CompositeLocale; /** * Locale for Portuguese (Brazil) * * @public */ export declare const COMPOSITE_LOCALE_PT_BR: CompositeLocale; /** * Locale for Russian (Russia) * * @public */ export declare const COMPOSITE_LOCALE_RU_RU: CompositeLocale; /** * Locale for Swedish (Sweden) * * @public */ export declare const COMPOSITE_LOCALE_SV_SE: CompositeLocale; /** * Locale for Turkish (Turkey) * * @public */ export declare const COMPOSITE_LOCALE_TR_TR: CompositeLocale; /** * Locale for Chinese (Mainland China) * * @public */ export declare const COMPOSITE_LOCALE_ZH_CN: CompositeLocale; /** * Locale for Chinese (Taiwan) * * @public */ export declare const COMPOSITE_LOCALE_ZH_TW: CompositeLocale; /** * The default set of icons used by the composites directly (i.e. not via the components defined in this library). * * @public */ export declare const COMPOSITE_ONLY_ICONS: CompositeIcons; /** * Icons that can be overridden in one of the composites exported by this library. * * See {@link ChatCompositeIcons}, {@link CallCompositeIcons} and {@link CallWithChatCompositeIcons} for more targeted types. * * @public */ export declare type CompositeIcons = ChatCompositeIcons & CallCompositeIcons & CallWithChatCompositeIcons; /** * Locale information for all composites exported from this library. * * @public */ export declare interface CompositeLocale { /** Strings used in composites directly * * Contrast with {@link CompositeLocale.component}, which contains strings used via the component library. */ strings: CompositeStrings; /** Locale information for the pure Components used by Composites. See {@link communication-react#ComponentLocale}. */ component: ComponentLocale; } /** * Strings used in the composites directly. * * These strings are used by the composites directly, instead of by the contained components. * * @public */ export declare interface CompositeStrings { /** * Strings used by {@link CallComposite}. */ call: CallCompositeStrings; /** * Strings used by {@link ChatComposite}. */ chat: ChatCompositeStrings; /** * Strings used by {@link CallWithChatComposite}. */ callWithChat: CallWithChatCompositeStrings; } /** * @public * Information for conference phone info */ export declare interface ConferencePhoneInfo { /** * Phone number for the conference */ phoneNumber: string; /** * Conference id for the conference */ conferenceId: string; /** * Is toll free phone number */ isTollFree: boolean; /** * phone number country */ country?: string; /** * phone number city */ city?: string; } /** * A system message with arbitary content. * * @public */ export declare interface ContentSystemMessage extends SystemMessageCommon { systemMessageType: 'content'; content: string; } /** * A container for various buttons for call controls. * * Use with various call control buttons in this library, e.g., {@link CameraButton}, or your own instances of * {@link ControlBarButton} directly. * * @public */ export declare const ControlBar: (props: ControlBarProps) => JSX.Element; /** * Default button styled for the {@link ControlBar}. * * Use this component create custom buttons that are styled the same as other buttons provided by the UI Library. * * @public */ export declare const ControlBarButton: (props: ControlBarButtonProps) => JSX.Element; /** * Props for {@link ControlBarButton}. * * @public */ export declare interface ControlBarButtonProps extends IButtonProps { /** * Whether the label is displayed or not. * * @defaultValue `false` */ showLabel?: boolean; /** * Key to use for the Label component */ labelKey?: string; /** * Disable tooltip. * * @defaultValue 'false' */ disableTooltip?: boolean; /** * Id to use for the tooltip host. * * @defaultValue This uses the labelKey and appends -tooltip by default */ tooltipId?: string; /** * Optional strings to override in component. */ strings?: ControlBarButtonStrings; /** * Icon to render when the button is checked. */ onRenderOnIcon?: IRenderFunction; /** * Icon to render when the button is not checked. */ onRenderOffIcon?: IRenderFunction; /** * Fluent styles, including extensions common to all {@link ControlBarButton}s. */ styles?: ControlBarButtonStyles; } /** * Strings of {@link ControlBarButton} that can be overridden. * * @public */ export declare interface ControlBarButtonStrings { /** * Label of the button. This supersedes onLabel or offLabel if used. */ label?: string; /** * Label of the button shown when the button is checked. */ onLabel?: string; /** * Label of the button shown when the button is not checked. */ offLabel?: string; /** * Tooltip content of the button. This supersedes tooltipDisabledContent, tooltipOnContent and tooltipOffContent if used. */ tooltipContent?: string; /** * Tooltip content when the button is disabled. */ tooltipDisabledContent?: string; /** * Tooltip content when the button is in the checked state. */ tooltipOnContent?: string; /** * Tooltip content when the button is in the unchecked state. */ tooltipOffContent?: string; } /** * Styles for all {@link ControlBarButton} implementations. * * @public */ export declare type ControlBarButtonStyles = IButtonStyles; /** * Present layouts for the {@link ControlBar}. * * @public */ export declare type ControlBarLayout = 'horizontal' | 'vertical' | 'dockedTop' | 'dockedBottom' | 'dockedLeft' | 'dockedRight' | 'floatingTop' | 'floatingBottom' | 'floatingLeft' | 'floatingRight'; /** * Props for {@link ControlBar}. * * @public */ export declare interface ControlBarProps { /** React Child components. */ children?: React_2.ReactNode; /** * Allows users to pass an object containing custom CSS styles. * @Example * ``` * * ``` */ styles?: BaseCustomStyles; /** * Changes the layout of the control bar. * Available layouts are `horizontal`, `vertical`, `dockedTop`, `dockedBottom`, * `dockedLeft`, `dockedRight`, `floatingTop`, `floatingBottom`, `floatingLeft`, * `floatingRight` * Defaults to a `horizontal` layout. */ layout?: ControlBarLayout; } /** * Create a {@link CallAdapter} backed by Azure Communication Services. * * This is the default implementation of {@link CallAdapter} provided by this library. * * Note: `displayName` can be a maximum of 256 characters. * * @public */ export declare function createAzureCommunicationCallAdapter(args: AzureCommunicationCallAdapterArgs): Promise; /** * Create a {@link CallAdapter} backed by Azure Communication Services. * * This is the default implementation of {@link CallAdapter} provided by this library. * * Note: `displayName` can be a maximum of 256 characters. * * @public */ export declare function createAzureCommunicationCallAdapter(args: AzureCommunicationOutboundCallAdapterArgs): Promise; /** * Create a {@link CallAdapter} using the provided {@link StatefulCallClient}. * * Useful if you want to keep a reference to {@link StatefulCallClient}. * Consider using {@link createAzureCommunicationCallAdapter} for a simpler API. * * @public */ export declare function createAzureCommunicationCallAdapterFromClient(callClient: StatefulCallClient, callAgent: CallAgent, targetCallees: StartCallIdentifier[], options?: AzureCommunicationCallAdapterOptions): Promise; /** * Create a {@link CallAdapter} using the provided {@link StatefulCallClient}. * * Useful if you want to keep a reference to {@link StatefulCallClient}. * Consider using {@link createAzureCommunicationCallAdapter} for a simpler API. * * @public */ export declare function createAzureCommunicationCallAdapterFromClient(callClient: StatefulCallClient, callAgent: CallAgent, locator: CallAdapterLocator, options?: AzureCommunicationCallAdapterOptions): Promise; /** * Create a CallWithChatAdapter backed by Azure Communication services * to plug into the {@link CallWithChatComposite}. * * @public */ export declare const createAzureCommunicationCallWithChatAdapter: ({ userId, displayName, credential, endpoint, locator, alternateCallerId, callAdapterOptions }: AzureCommunicationCallWithChatAdapterArgs) => Promise; /** * Create a {@link CallWithChatAdapter} using the provided {@link StatefulChatClient} and {@link StatefulCallClient}. * * Useful if you want to keep a reference to {@link StatefulChatClient} and {@link StatefulCallClient}. * Please note that chatThreadClient has to be created by StatefulChatClient via chatClient.getChatThreadClient(chatThreadId) API. * Consider using {@link createAzureCommunicationCallWithChatAdapter} for a simpler API. * * @public */ export declare const createAzureCommunicationCallWithChatAdapterFromClients: ({ callClient, callAgent, callLocator, chatClient, chatThreadClient, callAdapterOptions }: AzureCommunicationCallWithChatAdapterFromClientArgs) => Promise; /** * Create a {@link ChatAdapter} backed by Azure Communication Services. * * This is the default implementation of {@link ChatAdapter} provided by this library. * * @public */ export declare const createAzureCommunicationChatAdapter: ({ endpoint: endpointUrl, userId, displayName, credential, threadId, chatAdapterOptions }: AzureCommunicationChatAdapterArgs) => Promise; /** * Create a {@link ChatAdapter} using the provided {@link StatefulChatClient}. * * Useful if you want to keep a reference to {@link StatefulChatClient}. * Consider using {@link createAzureCommunicationChatAdapter} for a simpler API. * * @public */ export declare function createAzureCommunicationChatAdapterFromClient(chatClient: StatefulChatClient, chatThreadClient: ChatThreadClient, chatAdapterOptions?: ChatAdapterOptions): Promise; /** * Type of {@link createDefaultCallingHandlers}. * * @public */ export declare type CreateDefaultCallingHandlers = (callClient: StatefulCallClient, callAgent: CallAgent | undefined, deviceManager: StatefulDeviceManager | undefined, call: Call | undefined, options?: CallingHandlersOptions) => CallingHandlers; /** * Create the default implementation of {@link CallingHandlers} for teams call. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * @public */ export declare const createDefaultCallingHandlers: CreateDefaultCallingHandlers; /** * Create the default implementation of {@link ChatHandlers}. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * Returned object is memoized to avoid rerenders when used as props for React Components. * * @public */ export declare const createDefaultChatHandlers: (chatClient: StatefulChatClient, chatThreadClient: ChatThreadClient) => ChatHandlers; /** * Create the default implementation of {@link TeamsCallingHandlers} for teams call. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * @public */ export declare const createDefaultTeamsCallingHandlers: (callClient: StatefulCallClient, callAgent?: TeamsCallAgent, deviceManager?: StatefulDeviceManager, call?: TeamsCall, options?: { onResolveVideoBackgroundEffectsDependency?: () => Promise; onResolveDeepNoiseSuppressionDependency?: () => Promise; }) => TeamsCallingHandlers; /** * Creates a StatefulCallClient {@link StatefulCallClient} by proxying CallClient * {@link @azure/communication-calling#CallClient} with ProxyCallClient {@link ProxyCallClient} which then allows access * to state in a declarative way. * * It is important to use the {@link @azure/communication-calling#DeviceManager} and * {@link @azure/communication-calling#CallAgent} and {@link @azure/communication-calling#Call} (and etc.) that are * obtained from the StatefulCallClient in order for their state changes to be proxied properly. * * @param args - {@link StatefulCallClientArgs} * @param options - {@link StatefulCallClientOptions} * * @public */ export declare const createStatefulCallClient: (args: StatefulCallClientArgs, options?: StatefulCallClientOptions) => StatefulCallClient; /** * Creates a stateful ChatClient {@link StatefulChatClient} by proxying ChatClient * {@link @azure/communication-chat#ChatClient} with ProxyChatClient {@link ProxyChatClient} which then allows access * to state in a declarative way. * * @public */ export declare const createStatefulChatClient: (args: StatefulChatClientArgs, options?: StatefulChatClientOptions) => StatefulChatClient; /** * @public */ export declare const createTeamsCallAdapter: (args: TeamsCallAdapterArgs) => Promise; /** * Create a {@link TeamsCallAdapter} using the provided {@link StatefulCallClient}. * * Useful if you want to keep a reference to {@link StatefulCallClient}. * Consider using {@link createAzureCommunicationCallAdapter} for a simpler API. * * @public */ export declare const createTeamsCallAdapterFromClient: (callClient: StatefulCallClient, callAgent: TeamsCallAgent, locator: CallAdapterLocator, options?: TeamsAdapterOptions) => Promise; /** * Object returned after creating a local or remote VideoStream. * This contains helper functions to manipulate the render of the stream. * * @public */ export declare interface CreateVideoStreamViewResult { /** View handle of the rendered video stream */ view: { /** * Update the scale mode for this view. * @param scalingMode - The new scale mode. */ updateScalingMode: (scalingMode: ViewScalingMode) => Promise; }; } /** * Return result from {@link StatefulCallClient.createView}. * * @public */ export declare type CreateViewResult = { renderer: VideoStreamRenderer; view: VideoStreamRendererView; }; /** * Options that can be injected into the `onRender` function for customizing an * Avatar (`Persona`) component. * * @public */ export declare type CustomAvatarOptions = { /** Persona coin size in pixels */ coinSize?: number; /** Only show Coin and Initials */ hidePersonaDetails?: boolean; /** Text color of initials inside the coin */ initialsTextColor?: string; /** Optional property to set the aria label of the video tile if there is no available stream. */ noVideoAvailableAriaLabel?: string; /** User status */ presence?: PersonaPresence; /** Preset Persona Size number */ size?: PersonaSize; /** Custom style for the Avatar */ styles?: IStyleFunctionOrObject; /** Display name to be used in Persona */ text?: string; /** State for the participant to be displayed in the defaultPlaceHolder */ participantState?: ParticipantState; /** * If true, show the special coin for unknown persona. * It has '?' in place of initials, with static font and background colors */ showUnknownPersonaCoin?: boolean; }; /** * A callback that returns the props to render a custom {@link ControlBarButton} and {@link DrawerMenuItem}. * * The response indicates where the custom button should be placed. * * Performance tip: This callback is only called when either the callback or its arguments change. * @public */ export declare type CustomCallControlButtonCallback = (args: CustomCallControlButtonCallbackArgs) => CustomCallControlButtonProps; /** * Arguments for {@link CustomCallControlButtonCallback}. * * @public */ export declare interface CustomCallControlButtonCallbackArgs { /** * Buttons should reduce the size to fit a smaller viewport when `displayType` is `'compact'`. * * @defaultValue `'default'` */ displayType?: CallControlDisplayType; } /** * Placement for a custom button injected in the {@link CommonCallControlBar}. * * 'primary': Place the button(s) on the right end of the center control bar but before the EndCallButton (left end in rtl mode). * 'overflow': Place the buttons(s) on the end of the overflow Menu. * 'secondary': Place the button(s) on the left end of the side control bar (right in rtl mode). * * Multiple buttons assigned the same placement are appended in order. * E.g., if two buttons are placed in 'secondary', they'll both appear on the left end (right end in rtl mode) * in the order provided. * * Only 'primary' placement works when legacy call control is enabled in call composite * * @public */ export declare type CustomCallControlButtonPlacement = 'primary' | 'overflow' | 'secondary'; /** * Response from {@link CustomCallControlButtonCallback}. * Includes the base props necessary to render a {@link ControlBarButton} or {@link DrawerMenuItem}. * * @public */ export declare interface CustomCallControlButtonProps { /** * Where to place the custom button relative to other buttons. */ placement: CustomCallControlButtonPlacement; /** * Icon to render. Icon is a non-default icon name that needs to be registered as a * custom icon using registerIcons through fluentui. Examples include icons from the fluentui library */ iconName?: string; /** * Calback for when button is clicked */ onItemClick?: () => void; /** * Whether the buttons is disabled * * @defaultValue true */ disabled?: boolean; /** * Whether the label is displayed or not. * If no value is set, showLabel will follow composite rules */ showLabel?: boolean; /** * A unique id set for the standard HTML id attibute */ id?: string; /** * Optional strings to override in component */ strings?: CustomCallControlButtonStrings; /** * Dismiss the drawer menu when the button is clicked * * @defaultValue true */ dismissDrawer?: boolean; } /** * Strings for CustomCallControlButtons * * @public */ export declare interface CustomCallControlButtonStrings { /** * Optional label for the button */ label?: string; /** * Text that is shown in Tooltip content */ tooltipContent?: string; /** * The aria label of the button for the benefit of screen readers. */ ariaLabel?: string; /** * Detailed description of the button for the benefit of screen readers. */ ariaDescription?: string; } /** * A custom message type. * * Custom messages are not rendered by default, but applications can provide custom renderers for them. * * @public */ export declare interface CustomMessage extends MessageCommon { messageType: 'custom'; content: string; } /** * Preset dark theme for components exported from this library. * * @public */ export declare const darkTheme: PartialTheme & CallingTheme; /** * @public * `DeclarativeCallAgent` extends and proxies the {@link @azure/communication-calling#CallAgent} */ export declare type DeclarativeCallAgent = CallAgent & IncomingCallManagement; /** * @public * `DeclarativeTeamsCallAgent` extends and proxies the {@link @azure/communication-calling#TeamsCallAgent} */ export declare type DeclarativeTeamsCallAgent = TeamsCallAgent & TeamsIncomingCallManagement; /** * Dependency type to be injected for deep noise suppression * * @public */ export declare type DeepNoiseSuppressionEffectDependency = { deepNoiseSuppressionEffect: AudioEffectsStartConfig; }; /** * The default set of icons that are available to use in the UI components. * * @remark Icons used only in the composites are available in {@link DEFAULT_COMPOSITE_ICONS}. * * @public */ export declare 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; NotificationBarTranscriptionError: React_2.JSX.Element; NotificationBarTranscriptionStartedByYou: 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; NotificationBarTogetherModeIcon: React_2.JSX.Element; RealTimeTextIcon: React_2.JSX.Element; ExpandIcon: React_2.JSX.Element; MinimizeIcon: React_2.JSX.Element; }; /** * The default set of icons that are available to used in the Composites. * * @public */ export declare 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; TogetherModeLayout?: 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; NotificationBarTranscriptionError: React_2.JSX.Element; NotificationBarTranscriptionStartedByYou: 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; NotificationBarTogetherModeIcon: React_2.JSX.Element; RealTimeTextIcon: React_2.JSX.Element; ExpandIcon: React_2.JSX.Element; MinimizeIcon: React_2.JSX.Element; }; /** * This type is meant to encapsulate all the state inside {@link @azure/communication-calling#DeviceManager}. For * optional parameters they may not be available until permission is granted by the user. The cameras, microphones, * speakers, and deviceAccess states will be empty until the corresponding * {@link @azure/communication-calling#DeviceManager}'s getCameras, getMicrophones, getSpeakers, and askDevicePermission * APIs are called and completed. * * @public */ export declare type DeviceManagerState = { /** * Proxy of {@link @azure/communication-calling#DeviceManager.isSpeakerSelectionAvailable}. */ isSpeakerSelectionAvailable: boolean; /** * Proxy of {@link @azure/communication-calling#DeviceManager.selectedMicrophone}. */ selectedMicrophone?: AudioDeviceInfo; /** * Proxy of {@link @azure/communication-calling#DeviceManager.selectedSpeaker}. */ selectedSpeaker?: AudioDeviceInfo; /** * Stores the selected camera device info. This is added by the stateful layer and does not exist in the Calling SDK. * It is meant as a convenience to the developer. It must be explicitly set before it has any value and does not * persist across instances of the {@link StatefulCallClient}. The developer controls entirely what this value holds * at any time. */ selectedCamera?: VideoDeviceInfo; /** * Stores any cameras data returned from {@link @azure/communication-calling#DeviceManager.getCameras}. */ cameras: VideoDeviceInfo[]; /** * Stores any microphones data returned from {@link @azure/communication-calling#DeviceManager.getMicrophones}. */ microphones: AudioDeviceInfo[]; /** * Stores any speakers data returned from {@link @azure/communication-calling#DeviceManager.getSpeakers}. */ speakers: AudioDeviceInfo[]; /** * Stores deviceAccess data returned from {@link @azure/communication-calling#DeviceManager.askDevicePermission}. */ deviceAccess?: DeviceAccess; /** * Stores created views that are not associated with any CallState (when {@link StatefulCallClient.createView} is * called with undefined callId, undefined participantId, and defined LocalVideoStream). * * The values in this array are generated internally when {@link StatefulCallClient.createView} is called and are * considered immutable. */ unparentedViews: LocalVideoStreamState[]; }; /** * A button to open a menu that controls device options. * * Can be used with {@link ControlBar}. * * @public */ export declare const DevicesButton: (props: DevicesButtonProps) => JSX.Element; /** * Styles for the {@link DevicesButton} menu. * * @public */ export declare interface DevicesButtonContextualMenuStyles extends IContextualMenuStyles { /** * Styles for the items inside the {@link DevicesButton} button menu. */ menuItemStyles?: IContextualMenuItemStyles; } /** * Props for {@link DevicesButton}. * * @public */ export declare interface DevicesButtonProps extends ControlBarButtonProps { /** * Available microphones for selection */ microphones?: OptionsDevice[]; /** * Available speakers for selection */ speakers?: OptionsDevice[]; /** * Available cameras for selection */ cameras?: OptionsDevice[]; /** * Microphone that is shown as currently selected */ selectedMicrophone?: OptionsDevice; /** * Speaker that is shown as currently selected */ selectedSpeaker?: OptionsDevice; /** * Camera that is shown as currently selected */ selectedCamera?: OptionsDevice; /** * Callback when a camera is selected */ onSelectCamera?: (device: OptionsDevice) => Promise; /** * Callback when a microphone is selected */ onSelectMicrophone?: (device: OptionsDevice) => Promise; /** * Speaker when a speaker is selected */ onSelectSpeaker?: (device: OptionsDevice) => Promise; /** * Optional strings to override in component */ strings?: Partial; /** * Option to increase the touch targets of the button flyout menu items from 36px to 48px. * Recommended for mobile devices. */ styles?: DevicesButtonStyles; } /** * Selector type for {@link DevicesButton} component. * * @public */ export declare type DevicesButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => { microphones: AudioDeviceInfo[]; speakers: AudioDeviceInfo[]; cameras: VideoDeviceInfo[]; selectedMicrophone?: AudioDeviceInfo; selectedSpeaker?: AudioDeviceInfo; selectedCamera?: VideoDeviceInfo; }; /** * Strings of {@link DevicesButton} that can be overridden. * * @public */ export declare interface DevicesButtonStrings { /** * Label of button */ label: string; /** * Button tooltip content. */ tooltipContent?: string; /** * Title of camera menu */ cameraMenuTitle: string; /** * Title of microphone menu */ microphoneMenuTitle: string; /** * Title of speaker menu */ speakerMenuTitle: string; /** * Tooltip of camera menu */ cameraMenuTooltip: string; /** * Tooltip of microphone menu */ microphoneMenuTooltip: string; /** * Tooltip of speaker menu */ speakerMenuTooltip: string; } /** * Styles for the Devices button menu items. * * @public */ export declare interface DevicesButtonStyles extends ControlBarButtonStyles { /** * Styles for the {@link DevicesButton} menu. */ menuStyles?: Partial; } /** * Callback for {@link CallAdapterSubscribers} 'diagnosticChanged' event. * * @public */ export declare type DiagnosticChangedEventListner = (event: MediaDiagnosticChangedEvent | NetworkDiagnosticChangedEvent) => void; /** * State only proxy for {@link @azure/communication-calling#DiagnosticsCallFeature}. * * @public */ export declare interface DiagnosticsCallFeatureState { /** * Stores diagnostics related to network conditions. */ network: NetworkDiagnosticsState; /** * Stores diagnostics related to media quality. */ media: MediaDiagnosticsState; } /** * A component to allow users to enter phone number through clicking on dialpad/using keyboard * It will return empty component for stable builds * * @public */ export declare const Dialpad: (props: DialpadProps) => JSX.Element; /** * Modes of the dialpad component. * @public */ export declare type DialpadMode = 'dtmf' | 'dialer'; /** * Props for {@link Dialpad} component. * * @public */ export declare interface DialpadProps { strings?: DialpadStrings; /** * function to send dtmf tones on button click */ onSendDtmfTone?: (dtmfTone: DtmfTone) => Promise; /** * Callback for dialpad button behavior */ onClickDialpadButton?: (buttonValue: string, buttonIndex: number) => void; /** * set dialpad textfield content */ textFieldValue?: string; /** * on change function for text field, provides an unformatted plain text */ onChange?: (input: string) => void; /** * flag to determine when to show/hide delete button, default true */ showDeleteButton?: boolean; /** * Determines what kind of device that the user is on and should respect that based on interaction * interfaces available to the user */ longPressTrigger?: LongPressTrigger; /** * Styles for customizing the dialpad component */ styles?: DialpadStyles; /** * Disables DTMF sounds when dialpad buttons are pressed. the actual * tones are still sent to the call. */ disableDtmfPlayback?: boolean; /** * Dialer mode for the dialpad. The dtmf mode is for sending dtmf tones and the appearence of * the dialpad is changed like hiding the input box. When using dialer mode the input box is there * and can be edited to change the number being dialed. */ dialpadMode?: DialpadMode; /** * Audio context for generating DTMF tones. If this if not provided the dialpad will create one iteslf. */ dtmfAudioContext?: AudioContext; } /** * Strings of {@link Dialpad} that can be overridden. * * @public */ export declare interface DialpadStrings { placeholderText: string; deleteButtonAriaLabel?: string; } /** * Styles for {@link Dialpad} component. * * @public */ export declare interface DialpadStyles { root?: IStyle; button?: IButtonStyles; textField?: Partial; digit?: IStyle; letter?: IStyle; deleteIcon?: IButtonStyles; } /** * Callback for {@link CallAdapterSubscribers} 'displayNameChanged' event. * * @public */ export declare type DisplayNameChangedListener = (event: { participantId: CommunicationIdentifierKind; displayName: string; }) => void; /** * Functionality for correctly disposing a Composite. * * @public */ declare interface Disposable_2 { /** Dispose of the Composite */ dispose(): void; } export { Disposable_2 as Disposable } /** * Options to determine the rendering behavior of the dtmfDialer in the CallComposite * @public */ export declare interface DtmfDialPadOptions { dialerBehavior?: 'autoShow' | 'alwaysShow' | 'alwaysHide'; } /** * DTMF tone for PSTN calls. * * @public */ export declare type DtmfTone = 'A' | 'B' | 'C' | 'D' | 'Flash' | 'Num0' | 'Num1' | 'Num2' | 'Num3' | 'Num4' | 'Num5' | 'Num6' | 'Num7' | 'Num8' | 'Num9' | 'Pound' | 'Star'; /** * A type for trivial selectors that return no data. * * Used as a default return value if {@link usePropsFor} is called for a component that requires no data. * * @public */ export declare type EmptySelector = () => Record; /** * A button to end an ongoing call. * * Can be used with {@link ControlBar}. * * @public */ export declare const EndCallButton: (props: EndCallButtonProps) => JSX.Element; /** * Props for {@link EndCallButton}. * * @public */ export declare interface EndCallButtonProps extends ControlBarButtonProps { /** * Utility property for using this component with `communication react eventHandlers`. * Maps directly to the `onClick` property. */ onHangUp?: (forEveryone?: boolean) => Promise; /** * Set this to true to make it a split button. * The split arrow will trigger a contextual menu to allow end for everyone or just for the user. */ enableEndCallMenu?: boolean; /** * Optional strings to override in component */ strings?: EndCallButtonStrings; } /** * Strings of {@link EndCallButton} that can be overridden. * * @public */ export declare interface EndCallButtonStrings { /** * Label of button */ label: string; /** Tooltip content. */ tooltipContent?: string; /** Label for leave option when ending call */ leaveOption?: string; /** Label for end the whole call option when ending call */ endCallOption?: string; } /** * A component to show error messages on the UI. * All strings that can be shown are accepted as the {@link ErrorBarProps.strings} so that they can be localized. * Active errors are selected by {@link ErrorBarProps.activeErrorMessages}. * * This component internally tracks dismissed by the user. * * Errors that have an associated timestamp: The error is shown on the UI again if it occurs after being dismissed. * * Errors that do not have a timestamp: The error is dismissed until it disappears from the props. * If the error recurs, it is shown in the UI. * * Uses {@link @fluentui/react#MessageBar} UI element. * * @public */ export declare const ErrorBar: (props: ErrorBarProps) => JSX.Element; /** * Props for {@link ErrorBar}. * * In addition to the following, {@link ErrorBar} forwards all * {@link @fluentui/react#IMessageBarProps} to the underlying {@link @fluentui/react#MessageBar}. * * @public */ export declare interface ErrorBarProps extends IMessageBarProps { /** * Strings shown on the UI on errors. */ strings?: ErrorBarStrings; /** * Currently active errors. */ activeErrorMessages: ActiveErrorMessage[]; /** * If set, errors with {@link ActiveErrorMessage.timestamp} older than the time this component is mounted * are not shown. * * This is useful when using the {@link ErrorBar} with a stateful client that handles more than one call * or chat thread. Set this prop to ignore errors from previous call or chat. * * @defaultValue false */ ignorePremountErrors?: boolean; /** * Callback called when the dismiss button is triggered. * Use this to control errors shown when they dismissed by the user. */ onDismissError?: (dismissedError: ActiveErrorMessage) => void; } /** * All strings that may be shown on the UI in the {@link ErrorBar}. * * @public */ export declare interface ErrorBarStrings { /** * Unable to reach Chat service. * * This can mean: * - Incorrect Azure Communication Services endpoint was provided. * - User's network connection is down. */ unableToReachChatService: string; /** * User does not have access to the Chat service. * This usually means that either the Azure Communication Services endpiont or the token provided are incorrect. */ accessDenied: string; /** * User is no longer on the thread. * * See also: {@link ErrorBarStrings.sendMessageNotInChatThread} for a more specific error. */ userNotInChatThread: string; /** * Sending message failed because user is no longer on the thread. */ sendMessageNotInChatThread: string; /** * A generic message when sending message fails. * Prefer more specific error strings when possible. */ sendMessageGeneric: string; /** * A generic message when starting video fails. */ startVideoGeneric: string; /** * A generic message when starting video fails. */ stopVideoGeneric: string; /** * A generic message when muting microphone fails. */ muteGeneric: string; /** * A generic message when unmuting microphone fails. */ unmuteGeneric: string; /** * A generic message when starting screenshare fails. */ startScreenShareGeneric: string; /** * A generic message when stopping screenshare fails. */ stopScreenShareGeneric: string; /** * Message shown when poor network quality is detected during a call. */ callNetworkQualityLow: string; /** * Message shown when poor network quality is detected during a call. */ teamsMeetingCallNetworkQualityLow: string; /** * Message shown on failure to detect audio output devices. */ callNoSpeakerFound: string; /** * Message shown on failure to detect audio input devices. */ callNoMicrophoneFound: string; /** * Message shown when microphone can be enumerated but access is blocked by the system. */ callMicrophoneAccessDenied: string; /** * Message shown when microphone can be enumerated but access is blocked by the system, for safari browsers */ callMicrophoneAccessDeniedSafari: string; /** * Message shown when microphone is muted by the system (not by local or remote participants) */ callMicrophoneMutedBySystem: string; /** * Message shown when microphone is unmuted by the system (not by local or remote participants). * This typically occurs if the system recovers from an unexpected mute. */ callMicrophoneUnmutedBySystem: string; /** * Mac OS specific message shown when microphone can be enumerated but access is * blocked by the system. */ callMacOsMicrophoneAccessDenied: string; /** * Message shown when poor network causes local video stream to be frozen. */ callLocalVideoFreeze: string; /** * Message shown when camera can be enumerated but access is blocked by the system. */ callCameraAccessDenied: string; /** * Message shown when camera can be enumerated but access is blocked by the system, for safari browsers */ callCameraAccessDeniedSafari: string; /** * Message shown when local video fails to start because camera is already in use by * another applciation. */ callCameraAlreadyInUse: string; /** * Message shown when local video is stopped by the system (not by local or remote participants) */ callVideoStoppedBySystem: string; /** * Message shown when local video was recovered by the system (not by the local participant) */ callVideoRecoveredBySystem: string; /** * Mac OS specific message shown when system denies access to camera. */ callMacOsCameraAccessDenied: string; /** * Mac OS specific message shown when system denies sharing local screen on a call. */ callMacOsScreenShareAccessDenied: string; /** * Dimiss errorbar button aria label read by screen reader accessibility tools */ dismissButtonAriaLabel?: string; /** * An error message when joining a call fails. */ failedToJoinCallGeneric?: string; /** * An error message when joining a call fails specifically due to an invalid meeting link. */ failedToJoinCallInvalidMeetingLink?: string; /** * Error bar string letting you know remote participants see a frozen stream for you. */ cameraFrozenForRemoteParticipants?: string; /** * Unable to start effect */ unableToStartVideoEffect?: string; /** * An error message when starting spotlight while max participants are spotlighted */ startSpotlightWhileMaxParticipantsAreSpotlighted: string; /** * An error message when local user is muted by a remote participant */ mutedByRemoteParticipant: string; } /** * All errors that can be shown in the {@link ErrorBar}. * * @public */ export declare type ErrorType = keyof ErrorBarStrings; /** * Provider to apply a Fluent theme across this library's react components. * * @remarks Components in this library are composed primarily from [Fluent UI](https://developer.microsoft.com/fluentui#/controls/web), * controls, mixing v8 and v9 controls. * This provider handles applying any theme provided to the underlying Fluent UI controls. * * @public */ export declare const FluentThemeProvider: (props: FluentThemeProviderProps) => JSX.Element; /** * Props for {@link FluentThemeProvider}. * * @public */ export declare interface FluentThemeProviderProps { /** Children to be themed. */ children: React_2.ReactNode; /** Theme for components. Defaults to a light theme if not provided. */ fluentTheme?: PartialTheme | Theme; /** * Whether components are displayed right-to-left * @defaultValue `false` */ rtl?: boolean; /** Optional style to change the root style of the ThemeProvider */ rootStyle?: React_2.CSSProperties | undefined; } /** * Reverse operation of {@link toFlatCommunicationIdentifier}. * * @public */ export declare const fromFlatCommunicationIdentifier: (id: string) => CommunicationIdentifier; /** * Specific type of the selector applicable to a given Component. * * @public */ export declare type GetCallingSelector JSX.Element | undefined> = AreEqual extends true ? VideoGallerySelector : AreEqual extends true ? DevicesButtonSelector : AreEqual extends true ? MicrophoneButtonSelector : AreEqual extends true ? CameraButtonSelector : AreEqual extends true ? ScreenShareButtonSelector : AreEqual extends true ? ParticipantListSelector : AreEqual extends true ? ParticipantsButtonSelector : AreEqual extends true ? EmptySelector : AreEqual extends true ? CallErrorBarSelector : AreEqual extends true ? EmptySelector : AreEqual extends true ? HoldButtonSelector : AreEqual extends true ? NotificationStackSelector : AreEqual extends true ? IncomingCallStackSelector : AreEqual extends true ? RaiseHandButtonSelector : AreEqual extends true ? CaptionSettingsSelector : AreEqual extends true ? CaptionsBannerSelector : AreEqual extends true ? StartCaptionsButtonSelector : AreEqual extends true ? EmptySelector : undefined; /** * Get the selector for a specified component. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * @public */ export declare const getCallingSelector: JSX.Element | undefined>(component: Component) => GetCallingSelector; /** * Specific type of the selector applicable to a given Component. * * @public */ export declare type GetChatSelector JSX.Element | undefined> = AreEqual extends true ? SendBoxSelector : AreEqual extends true ? MessageThreadSelector : AreEqual extends true ? TypingIndicatorSelector : AreEqual extends true ? ChatParticipantListSelector : AreEqual extends true ? ChatErrorBarSelector : undefined; /** * Get the selector for a specified component. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * @public */ export declare const getChatSelector: JSX.Element | undefined>(component: Component) => GetChatSelector; /** * A component to lay out audio / video participants tiles in a call. * * @public */ export declare const GridLayout: (props: GridLayoutProps) => JSX.Element; /** * Props for {@link GridLayout}. * * @public */ export declare interface GridLayoutProps { children: React_2.ReactNode; /** * Allows users to pass in an object contains custom CSS styles. * @Example * ``` * * ``` */ styles?: BaseCustomStyles; } /** * {@link GridLayout} Component Styles. * @public */ export declare interface GridLayoutStyles extends BaseCustomStyles { /** Styles for each child of {@link GridLayout} */ children?: IStyle; } /** * a button to hold or resume a ongoing call. * * Can be used with {@link ControlBar} * * @param props - properties for the hold button. * @returns * @public */ export declare const HoldButton: (props: HoldButtonProps) => JSX.Element; /** *@public */ export declare interface HoldButtonProps extends ControlBarButtonProps { /** * Utility property for using this component with communication react handlers * Holds the call or resumes it based on call state. */ onToggleHold: () => Promise; /** * Optional strings to override in component */ strings?: HoldButtonStrings; } /** * Selector type for the {@link HoldButton} component. * @public */ export declare type HoldButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => { checked: boolean; }; /** * Strings for the hold button labels * @public */ export declare interface HoldButtonStrings { /** * Label for when action is to resume call. */ onLabel?: string; /** * Label for when action is to hold call. */ offLabel?: string; /** * Content for when button is checked */ tooltipOnContent?: string; /** * Content for when button is unchecked */ tooltipOffContent?: string; } /** * {@link HorizontalGallery} Component Styles. * @public */ export declare interface HorizontalGalleryStyles extends BaseCustomStyles { /** Styles for each child of {@link HorizontalGallery} */ children?: IStyle; /** Styles for navigation button to go to previous page */ previousButton?: IStyle; /** Styles for navigation button to go to next page */ nextButton?: IStyle; } /** * React Context provider for {@link _Identifiers}. * * @experimental * * See documentation for {@link _Identifiers}. * * @internal */ export declare const _IdentifierProvider: (props: _IdentifierProviderProps) => JSX.Element; /** * Arguments to Context Provider for {@link _Identifiers}. * * @experimental * * See documentation for {@link _Identifiers}. * * @internal */ export declare interface _IdentifierProviderProps { identifiers?: _Identifiers; children: React_2.ReactNode; } /** * Identifiers that can be used to target specific components in a composite. * * @experimental * * These identifiers are assigned as `data-ui-id` HTML attribute of the root element of the targeted component. * * This API is intended for end to end test automation. As such, they are not covered by the API * guarantee of the public API. This will remain perenially experimental and compatibility breaking changes * may be made at any point. * * @internal */ export declare interface _Identifiers { /** `data-ui-id` value for `SendBox` Component */ sendboxTextField: string; /** `data-ui-id` value for `ParticipantButton` Component's People menu item */ participantButtonPeopleMenuItem: string; /** `data-ui-id` value for `ParticipantItem` Component's Menu button */ participantItemMenuButton: string; /** `data-ui-id` value for `ParticipantList` Component */ participantList: string; /** `data-ui-id` value for `ParticipantList` Component's People Button */ participantListPeopleButton: string; /** `data-ui-id` value for `ParticipantList` Component's Remove Participant Button */ participantListRemoveParticipantButton: string; /** `data-ui-id` value for `MessageThread` components message content */ messageContent: string; /** `data-ui-id` value for `MessageThread` components message timestamp */ messageTimestamp: string; /** `data-ui-id` value for `TypingIndicator` Component */ typingIndicator: string; /** `data-ui-id` value for `VideoGallery` Component */ videoGallery: string; /** `data-ui-id` value for `VideoTile` Component */ videoTile: string; /** `data-ui-id` value for overflow gallery component's left navigation button */ overflowGalleryLeftNavButton: string; /** `data-ui-id` value for overflow gallery component's right navigation button */ overflowGalleryRightNavButton: string; /** `data-ui-id` value for the video tiles in the horizontal gallery */ horizontalGalleryVideoTile: string; /** `data-ui-id` value for `VerticalGallery` Component's children video tiles */ verticalGalleryVideoTile: string; /** `data-ui-id` value for `VerticalGallery` Component's page counter */ verticalGalleryPageCounter: string; } /** * Component to render a fullscreen modal for a selected image. * * @public */ export declare const ImageOverlay: (props: ImageOverlayProps) => JSX.Element; /** * Props for {@link ImageOverlay}. * * @public */ export declare interface ImageOverlayProps { /** * Boolean that controls whether the modal is displayed. */ isOpen: boolean; /** * Image source used to display the image in a large scale. */ imageSrc: string; /** * Optional string used as a alt text for the image. @default 'image' */ altText?: string; /** * Optional string used as the title of the image and displayed on the top left corner of the ImageOverlay. */ title?: string; /** * Optional JSX element used as a title icon and displayed to the left of the title element. */ titleIcon?: JSX.Element; /** * Callback to invoke when the ImageOverlay modal is dismissed */ onDismiss: () => void; /** * Optional callback called when the download button is clicked. If not provided, the download button will not be rendered. */ onDownloadButtonClicked?: (imageSrc: string) => void; } /** * Strings of {@link ImageOverlay} that can be overridden. * * @public */ export declare interface ImageOverlayStrings { /** * Download button label for ImageOverlay */ downloadButtonLabel: string; /** * Dismiss button aria label for ImageOverlay */ dismissButtonAriaLabel: string; /** * Announcer message for when ImageOverlay becomes active */ overlayVisibleMessage: string; } /** * @public * This contains a readonly array that returns all the active `incomingCalls`. * An active incoming call is a call that has not been answered, declined or disconnected. */ export declare type IncomingCallManagement = { /** * @beta * @Remark This attribute doesn't exist on the {@link @azure/communication-calling#CallAgent} interface. * @returns readonly array of {@link IncomingCall} */ incomingCalls: ReadonlyArray; }; /** * A Notification component that is to be used to represent incoming calls to the end user. * Allows the user to accept or reject the incoming call. * @public */ export declare const IncomingCallNotification: (props: IncomingCallNotificationProps) => JSX.Element; /** * Properties for the incoming call notification component. * * @public */ export declare interface IncomingCallNotificationProps { /** * Caller's Name */ callerName?: string; /** * Alert Text" */ alertText?: string; /** * URL to the avatar image for the user */ avatarImage?: string; /** * Size of the persona coin */ personaSize?: number; /** * Callback to render the avatar */ onRenderAvatar?: () => JSX.Element; /** * Callback to accept the call with audio */ onAcceptWithAudio: () => void; /** * Callback to accept the call with Video */ onAcceptWithVideo: () => void; /** * Callback to reject the call */ onReject: () => void; /** * Callback when the notification is dismissed */ onDismiss?: () => void; /** * Styles for the incoming call notification component. */ styles?: IncomingCallNotificationStyles; /** * Strings for the incoming call notification component. */ strings?: IncomingCallNotificationStrings; /** * Options for whether to show the accept with video button */ acceptOptions: { showAcceptWithVideo: boolean; }; } /** * Strings for the incoming call notification component. * * @public */ export declare interface IncomingCallNotificationStrings { /** * Placeholder CallerID for the incoming call notification. */ incomingCallNotificationPlaceholderId?: string; /** * Placeholder Alert for the incoming call notification. */ incomingCallNotificationPlaceholderAlert?: string; /** * Aria label for the accept with audio button in the incoming call notification. */ incomingCallNoticicationAcceptWithAudioAriaLabel?: string; /** * Aria label for the accept with video button in the incoming call notification. */ incomingCallNoticicationAcceptWithVideoAriaLabel?: string; /** * Aria label for the reject button in the incoming call notification. */ incomingCallNoticicationRejectAriaLabel?: string; /** * Label for the accept button in the incoming call notification. */ incomingCallNotificationAcceptButtonLabel?: string; /** * Label for the accept with video button in the incoming call notification. */ incomingCallNotificationAccceptWithVideoButtonLabel?: string; /** * label for the reject button in the incoming call notification. */ incomingCallNotificationRejectButtonLabel?: string; /** * Aria label for the incoming call dismiss button */ incomingCallNotificationDismissButtonAriaLabel?: string; } /** * Styles for the incoming call notification component. * * @public */ export declare interface IncomingCallNotificationStyles { /** * Styles for the accept buttons. */ acceptButton?: IButtonStyles; /** * Styles for the reject button. */ rejectButton?: IButtonStyles; /** * Styles for the root container. */ root?: IStackStyles; /** * Styles for the avatar container. */ avatarContainer?: IStackStyles; } /** * Wrapper to manage multiple incoming calls * @param props - {@link IncomingCallManagerProps} * @returns * @public */ export declare const IncomingCallStack: (props: IncomingCallStackProps) => JSX.Element; /** * Represents an active incoming call. * @public */ export declare interface IncomingCallStackCall { /** * Unique identifier for the incoming call. */ id: string; /** * Information about the caller. */ callerInfo: { /** * Display name of the caller. */ displayName?: string; }; /** * Whether or not the call is a voip capable call. */ videoAvailable: boolean; } /** * Props for the IncomingCallManager component. * @public */ export declare interface IncomingCallStackProps { /** * List of incoming calls. */ activeIncomingCalls: IncomingCallStackCall[]; /** * List of incoming calls that have ended. */ removedIncomingCalls: IncomingCallStackCall[]; /** * Handler to accept the incoming call. * @param incomingCallId - Id of the incoming call to accept. * @param useVideo - Whether to accept with video. * @returns void */ onAcceptCall: (incomingCallId: string, useVideo?: boolean) => void; /** * Handler to reject the incoming call. * @param incomingCallId - id of the incoming call to reject * @returns - void */ onRejectCall: (incomingCallId: string) => void; /** * Styles for the incoming call notifications. */ styles?: IncomingCallNotificationStyles; /** * Strings for the incoming call notifications. */ strings?: IncomingCallNotificationStrings; /** * Tab index for the incoming Call stack, this will set the tab order of the * incoming call notifications in your application. */ tabIndex?: number; } /** * Selector to get the active and removed incoming calls. * @public */ export declare type IncomingCallStackSelector = (state: CallClientState) => { activeIncomingCalls: IncomingCallStackCall[]; removedIncomingCalls: IncomingCallStackCall[]; }; /** * State only version of {@link @azure/communication-calling#IncomingCall}. {@link StatefulCallClient} will * automatically detect incoming calls and add their state to the state exposed by {@link StatefulCallClient}. * * @public */ export declare interface IncomingCallState { /** * Proxy of {@link @azure/communication-calling#IncomingCall.id}. */ id: string; /** * Proxy of {@link @azure/communication-calling#IncomingCall.callInfo}. */ info: CallInfoState; /** * Proxy of {@link @azure/communication-calling#IncomingCall.callerInfo}. */ callerInfo: CallerInfo; /** * Set to the state returned by 'callEnded' event on {@link @azure/communication-calling#IncomingCall} when received. * This property is added by the stateful layer and is not a proxy of SDK state. */ callEndReason?: CallEndReason; /** * Stores the local date when the call started on the client. This property is added by the stateful layer and is not * a proxy of SDK state. */ startTime: Date; /** * Stores the local date when the call ended on the client. This property is added by the stateful layer and is not a * proxy of SDK state. It is undefined if the call is not ended yet. */ endTime?: Date; } /** * InlineImage's state, as reflected in the UI. * * @public */ export declare interface InlineImage { /** ID of the message that the inline image is belonged to */ messageId: string; /** Attributes of the inline image */ imageAttributes: React_2.ImgHTMLAttributes; } /** * Options to display inline image in the inline image scenario. * * @public */ export declare interface InlineImageOptions { /** * Optional callback to render an inline image of in a message. */ onRenderInlineImage?: (inlineImage: InlineImage, defaultOnRender: (inlineImage: InlineImage) => JSX.Element) => JSX.Element; } /** * Callback for {@link CallAdapterSubscribers} 'isCaptionLanguageChanged' event. * * @public */ export declare type IsCaptionLanguageChangedListener = (event: { activeCaptionLanguage: string; }) => void; /** * Callback for {@link CallAdapterSubscribers} 'isCaptionsActiveChanged' event. * * @public */ export declare type IsCaptionsActiveChangedListener = (event: { isActive: boolean; }) => void; /** * Callback for {@link CallAdapterSubscribers} 'isLocalScreenSharingActiveChanged' event. * * @public */ export declare type IsLocalScreenSharingActiveChangedListener = (event: { isScreenSharingOn: boolean; }) => void; /** * Callback for {@link CallAdapterSubscribers} 'isMuted' event. * * @public */ export declare type IsMutedChangedListener = (event: { identifier: CommunicationIdentifierKind; isMuted: boolean; }) => void; /** * Callback for {@link CallAdapterSubscribers} 'isSpeakingChanged' event. * * @public */ export declare type IsSpeakingChangedListener = (event: { identifier: CommunicationIdentifierKind; isSpeaking: boolean; }) => void; /** * Callback for {@link CallAdapterSubscribers} 'isSpokenLanguageChanged' event. * * @public */ export declare type IsSpokenLanguageChangedListener = (event: { activeSpokenLanguage: string; }) => void; /** * Options for setting microphone and camera state when joining a call * true = turn on the device when joining call * false = turn off the device when joining call * 'keep'/undefined = retain devices' precall state * * @public */ export declare interface JoinCallOptions { /** * microphone state when joining call * true: turn on * false: turn off * 'keep': maintain precall state */ microphoneOn?: boolean | 'keep'; /** * camera state when joining call * true: turn on * false: turn off * 'keep': maintain precall state */ cameraOn?: boolean | 'keep'; } /** * Arguments for {@link MessageThreadProps.onRenderJumpToNewMessageButton}. * * @public */ export declare interface JumpToNewMessageButtonProps { /** String for button text */ text: string; /** Callback for when button is clicked */ onClick: () => void; } /** * Preset light theme for components exported from this library. * * @public */ export declare const lightTheme: PartialTheme & CallingTheme; /** * Loader function for the CallComposite that you can use in your application. This * function will load the CallComposite into the provided HTML element. The best use case for this * is in a Node ui framework that is not React based. * * @public */ export declare const loadCallComposite: (loaderArgs: CallCompositeLoaderProps, htmlElement: HTMLElement) => Promise; /** * Props for the CallWithChatComposite that you can use in your application. This * function will load the CallWithChatComposite into the provided HTML element. * The best use case for this is in a Node UI framework that is not React based. * * @public */ export declare const loadCallWithChatComposite: (loaderArgs: CallWithChatCompositeLoaderProps, htmlElement: HTMLElement) => Promise; /** * Loader function for the ChatComposite that you can use in your application. This * function will load the ChatComposite into the provided HTML element. * The best use case for this is in a Node UI framework that is not React based. * * @public */ export declare const loadChatComposite: (loaderArgs: ChatCompositeLoaderProps, htmlElement: HTMLElement) => Promise; /** * Whether the stream is loading or not. * @public */ export declare type LoadingState = 'loading' | 'none' | 'reconnecting'; /** * Loader function for the OutboundCallComposite that you can use in your application. This * function will load the CallComposite into the provided HTML element to make outbound calls. * The best use case for this is in a Node UI framework that is not React based. * * @public */ export declare const loadOutboundCallComposite: (loaderArgs: OutboundCallCompositeLoaderProps, htmlElement: HTMLElement) => Promise; /** * Provider to provide localized strings for this library's react components. * * @remarks Components will be provided localized strings in English (US) by default if this * provider is not used. * * @public */ export declare const LocalizationProvider: (props: LocalizationProviderProps) => JSX.Element; /** * Props for {@link LocalizationProvider}. * * @public */ export declare type LocalizationProviderProps = { /** Locale context to provide components */ locale: ComponentLocale; /** Children to provide locale context. */ children: React_2.ReactNode; }; /** * @public */ export declare type LocalScreenShareView = 'stream' | 'placeholderMessage'; /** * @public */ export declare interface LocalVideoCameraCycleButtonProps { /** Array of cameras available to the user. */ cameras?: OptionsDevice[]; /** Currently selected camera in the local video stream. */ selectedCamera?: OptionsDevice; /** callback function to change video feed. */ onSelectCamera?: (device: OptionsDevice) => Promise; /** label for local video camera switcher */ label?: string; /** description for local video camera switcher */ ariaDescription?: string; /** control to enable large button mode */ size?: 'small' | 'large'; } /** * State only version of {@link @azure/communication-calling#LocalVideoStream}. * * @public */ export declare interface LocalVideoStreamState { /** * Proxy of {@link @azure/communication-calling#LocalVideoStream.source}. */ source: VideoDeviceInfo; /** * Proxy of {@link @azure/communication-calling#LocalVideoStream.mediaStreamType}. */ mediaStreamType: MediaStreamType; /** * {@link VideoStreamRendererView} that is managed by createView/disposeView in {@link StatefulCallClient} * API. This can be undefined if the stream has not yet been rendered and defined after createView creates the view. */ view?: VideoStreamRendererViewState; /** * Stores the state of the video effects. * @public */ videoEffects?: LocalVideoStreamVideoEffectsState; } /** * State only version of a LocalVideoStream's {@link @azure/communication-calling#VideoEffectsFeature}. * * @public */ export declare interface LocalVideoStreamVideoEffectsState { /** * List of effects if any are active. */ activeEffects?: VideoEffectName[]; } /** * Options for the local video tile in the Call composite. * * @public */ export declare interface LocalVideoTileOptions { /** * Position of the local video tile. If unset will render the local tile in the floating local position. * * @defaultValue 'floating' * @remarks 'grid' - local video tile will be rendered in the grid view of the videoGallery. * 'floating' - local video tile will be rendered in the floating position and will observe overflow gallery * local video tile rules and be docked in the bottom corner. * This does not affect the Configuration screen or the side pane Picture in Picture in Picture view. */ position?: 'grid' | 'floating'; } /** * different modes of the local video tile * * @public */ export declare type LocalVideoTileSize = '9:16' | '16:9' | 'hidden' | 'followDeviceOrientation'; /** * Modes of how the longpress handlers can be tiggered. * @public */ export declare type LongPressTrigger = 'mouseAndTouch' | 'touch'; /** * Audio/Video Media access state * * @public */ export declare type MediaAccess = { isAudioPermitted: boolean; isVideoPermitted: boolean; }; /** * Media access state * @public */ export declare interface MediaAccessState { /** * Whether the audio is forcibly muted */ isAudioPermitted: boolean; /** * Whether the video is forcibly muted */ isVideoPermitted: boolean; } /** * Payload for {@link DiagnosticChangedEventListner} where there is a change in a media diagnostic. * * @public */ export declare type MediaDiagnosticChangedEvent = MediaDiagnosticChangedEventArgs & { type: 'media'; }; /** * State only proxy for {@link @azure/communication-calling#MediaDiagnostics}. * * @public */ export declare interface MediaDiagnosticsState { latest: LatestMediaDiagnostics; } /** * strings for phone info modal * @public */ export declare interface MeetingConferencePhoneInfoModalStrings { /** * Header for the phone info modal */ meetingConferencePhoneInfoModalTitle: string; /** * Phone number instruction */ meetingConferencePhoneInfoModalDialIn: string; /** * Meeting ID instruction */ meetingConferencePhoneInfoModalMeetingId: string; /** * Wait for phone connection */ meetingConferencePhoneInfoModalWait: string; /** * Toll Free Phone Label */ meetingConferencePhoneInfoModalTollFree: string; /** * Toll Phone Label */ meetingConferencePhoneInfoModalToll: string; /** * Toll Phone Label without geo data */ meetingConferencePhoneInfoModalTollGeoData: string; /** * No phone number available message */ meetingConferencePhoneInfoModalNoPhoneAvailable: string; } /** * Discriminated union of all messages. * * The `messageType` field specializes into union variants. * * @public */ export declare type Message = ChatMessage | SystemMessage | CustomMessage; /** * Indicate whether a chat message should be displayed merged with the message before / after it. * If `true`, the message will be appear grouped with the message before it. * 'top' and 'bottom' are used to indicate that the message is the start or end of a group. * * @public */ export declare type MessageAttachedStatus = 'bottom' | 'top' | boolean; /** * Common properties of all message types. * * @public */ export declare interface MessageCommon { messageId: string; createdOn: Date; } /** * Supported types of chat message content. * * @public */ export declare type MessageContentType = 'text' | 'html' | 'richtext/html' | 'unknown'; /** * Callback for {@link ChatAdapterSubscribers} 'messageDeleted' event. * * @public */ export declare type MessageDeletedListener = MessageReceivedListener; /** * Callback for {@link ChatAdapterSubscribers} 'messageEdited' event. * * @public */ export declare type MessageEditedListener = MessageReceivedListener; /** * Props to render a single message. * * See {@link MessageRenderer}. * * @public */ export declare type MessageProps = { /** * Message to render. It can type `ChatMessage` or `SystemMessage`, `BlockedMessage` or `CustomMessage`. */ message: Message; /** * Strings from parent MessageThread component */ strings: MessageThreadStrings; /** * Custom CSS styles for chat message container. */ messageContainerStyle?: ComponentSlotStyle; /** * Whether the date of a message is displayed or not. * * @defaultValue `false` */ showDate?: boolean; /** * Disable editing messages. * * @remarks This removes the action menu on messages. * * @defaultValue `false` */ disableEditing?: boolean; /** * Optional callback to edit a message. * * @param messageId - message id from chatClient * @param content - new content of the message */ onUpdateMessage?: UpdateMessageCallback; /** * Optional callback for when a message edit is cancelled. * * @param messageId - message id from chatClient */ onCancelEditMessage?: CancelEditCallback; /** * Optional callback to delete a message. * * @param messageId - message id from chatClient * */ onDeleteMessage?: (messageId: string) => Promise; /** * Optional callback to send a message. * * @param content - message content from chatClient * @param options - message options to be included in the message * */ onSendMessage?: (content: string) => Promise; }; /** * Callback for {@link ChatAdapterSubscribers} 'messageRead' event. * * @public */ export declare type MessageReadListener = (event: { message: ChatMessage_2; readBy: CommunicationUserKind; }) => void; /** * Callback for {@link ChatAdapterSubscribers} 'messageReceived' event. * * @public */ export declare type MessageReceivedListener = (event: { message: ChatMessage_2; }) => void; /** * A component to render a single message. * * @public */ export declare type MessageRenderer = (props: MessageProps) => JSX.Element; /** * Callback for {@link ChatAdapterSubscribers} 'messageSent' event. * * @public */ export declare type MessageSentListener = MessageReceivedListener; /** * Client-side state of a sent message. * * Includes transitional states that occur before message delivery is confirmed from the backend. * * @public */ export declare type MessageStatus = 'delivered' | 'sending' | 'seen' | 'failed'; /** * Component to display the status of a sent message. * * Adds an icon and tooltip corresponding to the message status. * * @public */ export declare const MessageStatusIndicator: (props: MessageStatusIndicatorProps) => JSX.Element; /** * Props for {@link MessageStatusIndicator}. * * @public */ export declare interface MessageStatusIndicatorProps { /** Message status that determines the icon to display. */ status?: MessageStatus; readCount?: number; onToggleToolTip?: (isToggled: boolean) => void; /** number of participants not including myself */ remoteParticipantsCount?: number; /** * Allows users to pass an object containing custom CSS styles. * @Example * ``` * * ``` */ styles?: BaseCustomStyles; /** * Optional strings to override in component */ strings?: MessageStatusIndicatorStrings; } /** * Strings of {@link MessageStatusIndicator} that can be overridden. * * @public */ export declare interface MessageStatusIndicatorStrings { /** Aria label to notify user when their message has been delivered. */ deliveredAriaLabel?: string; /** Text to display in the delivered message icon tooltip. */ deliveredTooltipText: string; /** Aria label to notify user when their message has been seen by others. */ seenAriaLabel?: string; /** Text to display in the seen message icon tooltip if read number/ participant number is 1 */ seenTooltipText: string; /** Text to display in the seen message icon tooltip if read number logic is working correctly (more than 1 read number and more than 1 particiants)*/ readByTooltipText?: string; /** Aria label to notify user when their message is being sent. */ sendingAriaLabel?: string; /** Text to display in the sending message icon tooltip. */ sendingTooltipText: string; /** Aria label to notify user when their message has failed to be sent. */ failedToSendAriaLabel?: string; /** Text to display in the failed message icon tooltip. */ failedToSendTooltipText: string; } /** * `MessageThread` allows you to easily create a component for rendering chat messages, handling scrolling behavior of new/old messages and customizing icons & controls inside the chat thread. * @param props - of type MessageThreadProps * * Users will need to provide at least chat messages and userId to render the `MessageThread` component. * Users can also customize `MessageThread` by passing in their own Avatar, `MessageStatusIndicator` icon, `JumpToNewMessageButton`, `LoadPreviousMessagesButton` and the behavior of these controls. * * `MessageThread` internally uses the `Chat` component from `@fluentui-contrib/chat`. You can checkout the details about these components [here](https://microsoft.github.io/fluentui-contrib/react-chat/). * * @public */ export declare const MessageThread: (props: MessageThreadProps) => JSX.Element; /** * Props for {@link MessageThread}. * * @public */ export declare type MessageThreadProps = { /** * UserId of the current user. */ userId: string; /** * Messages to render in message thread. A message can be of type `ChatMessage`, `SystemMessage`, `BlockedMessage` or `CustomMessage`. */ messages: (ChatMessage | SystemMessage | CustomMessage)[]; /** * number of participants in the thread */ participantCount?: number; /** * read receipts for each sender in the chat */ readReceiptsBySenderId?: ReadReceiptsBySenderId; /** * Allows users to pass an object containing custom CSS styles. * @Example * ``` * * ``` */ styles?: MessageThreadStyles; /** * Whether the new message button is disabled or not. * * @defaultValue `false` */ disableJumpToNewMessageButton?: boolean; /** * Whether the date of each message is displayed or not. * It is ignored when onDisplayDateTimeString is supplied. * * @defaultValue `false` */ showMessageDate?: boolean; /** * Whether the status indicator for each message is displayed or not. * * @defaultValue `false` */ showMessageStatus?: boolean; /** * Number of chat messages to reload each time onLoadPreviousChatMessages is called. * * @defaultValue 0 */ numberOfChatMessagesToReload?: number; /** * Optional callback to override actions on message being seen. * * @param messageId - message Id */ onMessageSeen?: (messageId: string) => Promise; /** * Optional callback to override render of the message status indicator. * * @param messageStatusIndicatorProps - props of type MessageStatusIndicatorProps */ onRenderMessageStatus?: (messageStatusIndicatorProps: MessageStatusIndicatorProps) => JSX.Element | null; /** * Optional callback to override render of the avatar. * * @param userId - user Id */ onRenderAvatar?: OnRenderAvatarCallback; /** * Optional callback to override render of the button for jumping to the new message. * * @param newMessageButtonProps - button props of type JumpToNewMessageButtonProps 0 */ onRenderJumpToNewMessageButton?: (newMessageButtonProps: JumpToNewMessageButtonProps) => JSX.Element; /** * Optional callback to override loading of previous messages. * It accepts the number of history chat messages that we want to load and return a boolean Promise indicating if we have got all the history messages. * If the promise resolves to `true`, we have load all chat messages into the message thread and `loadPreviousMessagesButton` will not be rendered anymore. */ onLoadPreviousChatMessages?: (messagesToLoad: number) => Promise; /** * Optional callback to override render of a message. * * @param messageProps - props of type {@link communication-react#MessageProps} * @param defaultOnRender - default render of type {@link communication-react#MessageRenderer} * * @remarks * `messageRenderer` is not provided for `CustomMessage` and thus only available for `ChatMessage` and `SystemMessage`. */ onRenderMessage?: (messageProps: MessageProps, messageRenderer?: MessageRenderer) => JSX.Element; /** * Optional callback to edit a message. * * @param messageId - message id from chatClient * @param content - new content of the message * */ onUpdateMessage?: UpdateMessageCallback; /** * Optional callback for when a message edit is cancelled. * * @param messageId - message id from chatClient */ onCancelEditMessage?: CancelEditCallback; /** * Optional callback to delete a message. * * @param messageId - message id from chatClient * */ onDeleteMessage?: (messageId: string) => Promise; /** * Optional callback to send a message. * * @param content - message body to send * @param options - message options to be included in the message * */ onSendMessage?: (content: string) => Promise; /** /** * Disable editing messages. * * @remarks This removes the action menu on messages. * * @defaultValue `false` */ disableEditing?: boolean; /** * Optional strings to override in component */ strings?: Partial; /** * Optional callback called when an inline image is clicked. * @beta */ inlineImageOptions?: InlineImageOptions; }; /** * Selector type for {@link MessageThread} component. * * @public */ export declare type MessageThreadSelector = (state: ChatClientState, props: ChatBaseSelectorProps) => { userId: string; showMessageStatus: boolean; messages: Message[]; }; /** * Strings of {@link MessageThread} that can be overridden. * * @public */ export declare interface MessageThreadStrings { /** String for Sunday */ sunday: string; /** String for Monday */ monday: string; /** String for Tuesday */ tuesday: string; /** String for Wednesday */ wednesday: string; /** String for Thursday */ thursday: string; /** String for Friday */ friday: string; /** String for Saturday */ saturday: string; /** String for Yesterday */ yesterday: string; /** String for participants joined */ participantJoined: string; /** String for participants left */ participantLeft: string; /** Tag shown on a message that has been edited */ editedTag: string; /** String for editing message in floating menu */ editMessage: string; /** String for removing message in floating menu */ removeMessage: string; /** String for resending failed message in floating menu */ resendMessage?: string; /** String for indicating failed to send messages */ failToSendTag?: string; /** String for LiveMessage introduction for the Chat Message */ liveAuthorIntro: string; /** String for LiveMessage introduction for the edited Chat Message by remote user */ editedMessageLiveAuthorIntro: string; /** String for LiveMessage introduction for the edited Chat Message sent by local user */ editedMessageLocalUserLiveAuthorIntro: string; /** String for aria text of remote user's message content */ messageContentAriaText: string; /** String for aria text of local user's message content */ messageContentMineAriaText: string; /** String for warning on text limit exceeded in EditBox*/ editBoxTextLimit: string; /** String for placeholder text in EditBox when there is no user input*/ editBoxPlaceholderText: string; /** String for new messages indicator*/ newMessagesIndicator: string; /** String for showing message read status in floating menu */ messageReadCount?: string; /** String for replacing display name when there is none*/ noDisplayNameSub: string; /** String for Cancel button in EditBox*/ editBoxCancelButton: string; /** String for Submit in EditBox when there is no user input*/ editBoxSubmitButton: string; /** String for action menu indicating there are more options */ actionMenuMoreOptions?: string; /** Aria label to announce when a message is deleted */ messageDeletedAnnouncementAriaLabel: string; /** String for open attachment button in attachment card */ openAttachment: string; /** String for aria text in attachment card group*/ attachmentCardGroupMessage: string; } /** * Fluent styles for {@link MessageThread}. * * @public */ export declare interface MessageThreadStyles extends BaseCustomStyles { /** Styles for load previous messages container. */ loadPreviousMessagesButtonContainer?: IStyle; /** Styles for new message container. */ newMessageButtonContainer?: IStyle; /** Styles for chat container. */ chatContainer?: ComponentSlotStyle; /** styles for my chat items. */ myChatItemMessageContainer?: ComponentSlotStyle; /** styles for chat items. */ chatItemMessageContainer?: ComponentSlotStyle; /** Styles for my chat message container. */ myChatMessageContainer?: ComponentSlotStyle; /** Styles for my chat message container in case of failure. */ failedMyChatMessageContainer?: ComponentSlotStyle; /** Styles for chat message container. */ chatMessageContainer?: ComponentSlotStyle; /** Styles for system message container. */ systemMessageContainer?: ComponentSlotStyle; /** Styles for blocked message container. */ /** Styles for message status indicator container. */ messageStatusContainer?: (mine: boolean) => IStyle; } /** * A button to turn microphone on / off. * * Can be used with {@link ControlBar}. * * @public */ export declare const MicrophoneButton: (props: MicrophoneButtonProps) => JSX.Element; /** * Styles for the {@link MicrophoneButton} menu. * * @public */ export declare interface MicrophoneButtonContextualMenuStyles extends IContextualMenuStyles { /** * Styles for the items inside the {@link MicrophoneButton} button menu. */ menuItemStyles?: IContextualMenuItemStyles; } /** * Props for {@link MicrophoneButton}. * * @public */ export declare interface MicrophoneButtonProps extends ControlBarButtonProps { /** * Utility property for using this component with `communication react eventHandlers`. * Maps directly to the `onClick` property. */ onToggleMicrophone?: () => Promise; /** * Available microphones for selection */ microphones?: OptionsDevice[]; /** * Available speakers for selection */ speakers?: OptionsDevice[]; /** * Microphone that is shown as currently selected */ selectedMicrophone?: OptionsDevice; /** * Speaker that is shown as currently selected */ selectedSpeaker?: OptionsDevice; /** * Callback when a microphone is selected */ onSelectMicrophone?: (device: OptionsDevice) => Promise; /** * Speaker when a speaker is selected */ onSelectSpeaker?: (device: OptionsDevice) => Promise; /** * Whether to use a {@link SplitButton} with a {@link IContextualMenu} for device selection. * * default: false */ enableDeviceSelectionMenu?: boolean; /** * Optional strings to override in component */ strings?: Partial; /** * Styles for {@link MicrophoneButton} and the device selection flyout. */ styles?: Partial; /** * Whether the deep noise suppression is on or off */ isDeepNoiseSuppressionOn?: boolean; /** * Callback when noise suppression is clicked */ onClickNoiseSuppression?: () => void; /** * Show/Hide the deep noise suppression button */ showNoiseSuppressionButton?: boolean; } /** * Selector type for {@link MicrophoneButton} component. * * @public */ export declare type MicrophoneButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => { disabled: boolean; checked: boolean; microphones: AudioDeviceInfo[]; speakers: AudioDeviceInfo[]; selectedMicrophone?: AudioDeviceInfo; selectedSpeaker?: AudioDeviceInfo; }; /** * Strings of {@link MicrophoneButton} that can be overridden. * * @public */ export declare interface MicrophoneButtonStrings { /** Label when button is on. */ onLabel: string; /** Label when button is off. */ offLabel: string; /** * Tooltip content when the button is disabled. */ tooltipDisabledContent?: string; /** Tooltip content when the button is on. */ tooltipOnContent?: string; /** Tooltip content when the button is off. */ tooltipOffContent?: string; /** * Title of microphone menu */ microphoneMenuTitle?: string; /** * Title of speaker menu */ speakerMenuTitle?: string; /** * Tooltip of microphone menu */ microphoneMenuTooltip?: string; /** * Tooltip of speaker menu */ speakerMenuTooltip?: string; /** * Description of microphone button split button role */ microphoneButtonSplitRoleDescription?: string; /** * Microphone split button aria label when mic is enabled. */ onSplitButtonAriaLabel?: string; /** * Microphone split button aria label when mic is disabled. */ offSplitButtonAriaLabel?: string; /** * Microphone action turned on string for announcer */ microphoneActionTurnedOnAnnouncement?: string; /** * Microphone action turned off string for announcer */ microphoneActionTurnedOffAnnouncement?: string; /** * Primary action for the microphone when microphone is live. */ onSplitButtonMicrophonePrimaryAction?: string; /** * Primary action for the microphone when the microphone is muted. */ offSplitButtonMicrophonePrimaryAction?: string; /** * Title for primary action section of split button */ microphonePrimaryActionSplitButtonTitle?: string; /** * Aria description for the microphone button */ microphoneAriaDescription?: string; /** * Title for deep noise suppression button */ deepNoiseSuppressionTitle?: string; /** * Noise Suppression turned on string for announcer */ deepNoiseSuppressionOnAnnouncement?: string; /** * Noise Suppression turned off string for announcer */ deepNoiseSuppressionOffAnnouncement?: string; } /** * Styles for {@link MicrophoneButton} * * @public */ export declare interface MicrophoneButtonStyles extends ControlBarButtonStyles { /** * Styles for the {@link MicrophoneButton} menu. */ menuStyles?: Partial; } /** * Payload for {@link DiagnosticChangedEventListner} where there is a change in a network diagnostic. * * @public */ export declare type NetworkDiagnosticChangedEvent = NetworkDiagnosticChangedEventArgs & { type: 'network'; }; /** * State only proxy for {@link @azure/communication-calling#NetworkDiagnostics}. * * @public */ export declare interface NetworkDiagnosticsState { latest: LatestNetworkDiagnostics; } /** * A component to show notification messages on the UI. * * @public */ declare const Notification_2: (props: NotificationProps) => JSX.Element; export { Notification_2 as Notification } /** * Options for controlling the notifications in the composite. * @public */ declare interface NotificationOptions_2 { /** * Whether to show the notifications in the composite. useful * for hiding the notifications in the composite to replace with your own custom notifications. */ hideAllNotifications?: boolean; } export { NotificationOptions_2 as NotificationOptions } /** * Props for {@link Notification}. * * @public */ export declare interface NotificationProps { /** * Notification bar strings; */ notificationStrings?: NotificationStrings; /** * Notification bar icon; */ notificationIconProps?: IIconProps; /** * If set, notifications will automatically dismiss after 5 seconds * @defaultValue false */ autoDismiss?: boolean; /** * If set, notifications will be shown in a stacked effect * @defaultValue false */ showStackedEffect?: boolean; /** * Role html property for the notification bar. * @defaultValue alert */ role?: 'alert' | 'status' | 'presentation' | 'none'; /** * Aria-live property for the notification bar. * @defaultValue assertive */ ariaLive?: 'assertive' | 'off' | 'polite'; /** * Callback called when the primary button inside notification bar is clicked. */ onClickPrimaryButton?: () => void; /** * Callback called when the secondary button inside notification bar is clicked. */ onClickSecondaryButton?: () => void; /** * Callback called when the notification is dismissed. */ onDismiss?: () => void; /** * Optional callback to supply users with further troubleshooting steps or more information for the notification. */ onClickLink?: () => void; /** * Styles for the incoming call notifications. */ styles?: NotificationStyles; } /** * A component to show notifications on the UI. * All strings that can be shown are accepted as the {@link NotificationStackProps.strings} so that they can be localized. * Active notifications are selected by {@link NotificationStackProps.activeNotifications}. * * This component internally tracks dismissed by the user. * * Notifications that have an associated timestamp: The notification is shown on the UI again if it occurs after being dismissed. * * Notifications that do not have a timestamp: The notification is dismissed until it disappears from the props. * If the notification recurs, it is shown in the UI. * * * @public */ export declare const NotificationStack: (props: NotificationStackProps) => JSX.Element; /** * Props for {@link NotificationStack}. * @public */ export declare interface NotificationStackProps { /** * Strings shown on the UI on errors. */ strings?: NotificationStackStrings; /** * Currently active notifications. */ activeNotifications: ActiveNotification[]; /** * Max notifications to show at a time. * @defaultValue 2 */ maxNotificationsToShow?: number; /** * Callback called when the dismiss button is triggered. * Use this to control notifications shown when they dismissed by the user. * Note this onDismiss function will affect all notifications in the same stack */ onDismissNotification?: (dismissedNotification: ActiveNotification) => void; /** * If set, notifications with {@link ActiveNotification.timestamp} older than the time this component is mounted * are not shown. * * This is useful when using the {@link NotificationStack} with a stateful client that handles more than one call * or chat thread. Set this prop to ignore notifications from previous call or chat. * * @defaultValue false */ ignorePremountNotifications?: boolean; } /** * Selector type for {@link Notification} component. * * @public */ export declare type NotificationStackSelector = (state: CallClientState, props: CallingBaseSelectorProps) => { activeErrorMessages: ActiveNotification[]; activeNotifications: ActiveNotification[]; }; /** * All strings that may be shown on the UI in the {@link NotificationStack}. * * @public */ export declare interface NotificationStackStrings { /** * A generic message when starting video fails. */ startVideoGeneric?: NotificationStrings; /** * A generic message when starting video fails. */ stopVideoGeneric?: NotificationStrings; /** * A generic message when muting microphone fails. */ muteGeneric?: NotificationStrings; /** * A generic message when unmuting microphone fails. */ unmuteGeneric?: NotificationStrings; /** * A generic message when starting screenshare fails. */ startScreenShareGeneric?: NotificationStrings; /** * A generic message when stopping screenshare fails. */ stopScreenShareGeneric?: NotificationStrings; /** * Message shown when poor network quality is detected during a call. */ callNetworkQualityLow?: NotificationStrings; /** * Message shown when poor network quality is detected during a teams meetings. * Contains actions to open phone info modal. */ teamsMeetingCallNetworkQualityLow?: NotificationStrings; /** * Message shown on failure to detect audio output devices. */ callNoSpeakerFound?: NotificationStrings; /** * Message shown on failure to detect audio input devices. */ callNoMicrophoneFound?: NotificationStrings; /** * Message shown when microphone can be enumerated but access is blocked by the system. */ callMicrophoneAccessDenied?: NotificationStrings; /** * Message shown when microphone can be enumerated but access is blocked by the system, for safari browsers */ callMicrophoneAccessDeniedSafari?: NotificationStrings; /** * Message shown when microphone is muted by the system (not by local or remote participants) */ callMicrophoneMutedBySystem?: NotificationStrings; /** * Message shown when microphone is unmuted by the system (not by local or remote participants). * This typically occurs if the system recovers from an unexpected mute. */ callMicrophoneUnmutedBySystem?: NotificationStrings; /** * Mac OS specific message shown when microphone can be enumerated but access is * blocked by the system. */ callMacOsMicrophoneAccessDenied?: NotificationStrings; /** * Message shown when poor network causes local video stream to be frozen. */ callLocalVideoFreeze?: NotificationStrings; /** * Message shown when camera can be enumerated but access is blocked by the system. */ callCameraAccessDenied?: NotificationStrings; /** * Message shown when camera can be enumerated but access is blocked by the system, for safari browsers */ callCameraAccessDeniedSafari?: NotificationStrings; /** * Message shown when local video fails to start because camera is already in use by * another applciation. */ callCameraAlreadyInUse?: NotificationStrings; /** * Message shown when local video is stopped by the system (not by local or remote participants) */ callVideoStoppedBySystem?: NotificationStrings; /** * Message shown when local video was recovered by the system (not by the local participant) */ callVideoRecoveredBySystem?: NotificationStrings; /** * Mac OS specific message shown when system denies access to camera. */ callMacOsCameraAccessDenied?: NotificationStrings; /** * Mac OS specific message shown when system denies sharing local screen on a call. */ callMacOsScreenShareAccessDenied?: NotificationStrings; /** * Dimiss Notifications button aria label read by screen reader accessibility tools */ dismissButtonAriaLabel?: NotificationStrings; /** * An error message when joining a call fails. */ failedToJoinCallGeneric?: NotificationStrings; /** * An error message when joining a call fails specifically due to an invalid meeting link. */ failedToJoinCallInvalidMeetingLink?: NotificationStrings; /** * Error string letting you know remote participants see a frozen stream for you. */ cameraFrozenForRemoteParticipants?: NotificationStrings; /** * Unable to start effect */ unableToStartVideoEffect?: NotificationStrings; /** * An error message when starting spotlight while max participants are spotlighted */ startSpotlightWhileMaxParticipantsAreSpotlighted?: NotificationStrings; /** * Muted by a remote participant message */ mutedByRemoteParticipant?: NotificationStrings; /** * Speaking while muted message */ speakingWhileMuted?: NotificationStrings; /** * Recording started message */ recordingStarted?: NotificationStrings; /** * Transcription started message */ transcriptionStarted?: NotificationStrings; /** * Recording stopped message */ recordingStopped?: NotificationStrings; /** * Transcription stopped message */ transcriptionStopped?: NotificationStrings; /** * Recording and transcription both started message */ recordingAndTranscriptionStarted?: NotificationStrings; /** * Recording and transcription both stopped message */ recordingAndTranscriptionStopped?: NotificationStrings; /** * Recording stopped but transcription still going on message */ recordingStoppedStillTranscribing?: NotificationStrings; /** * Transcription stopped but recording still going on message */ transcriptionStoppedStillRecording?: NotificationStrings; /** * Message shown in notification when the user will be automatically to their assigned breakout room that is opened */ assignedBreakoutRoomOpened?: NotificationStrings; /** * Message shown in notification when the user is prompted to join their assigned breakout room that is opened */ assignedBreakoutRoomOpenedPromptJoin?: NotificationStrings; /** * Message shown in notification when the user's assigned breakout room is changed */ assignedBreakoutRoomChanged?: NotificationStrings; /** * Message shown in notification when the user's assigned breakout room is closed */ assignedBreakoutRoomClosed?: NotificationStrings; /** * Message shown in notification when breakout room is joined */ breakoutRoomJoined?: NotificationStrings; /** * Message shown in notification when breakout room is closing soon */ breakoutRoomClosingSoon?: NotificationStrings; /** * Message shown in notification when capability turnVideoOn is present */ capabilityTurnVideoOnPresent?: NotificationStrings; /** * Message shown in notification when capability turnVideoOn is absent */ capabilityTurnVideoOnAbsent?: NotificationStrings; /** * Message shown in notification when capability unMuteMic is present */ capabilityUnmuteMicPresent?: NotificationStrings; /** * Message shown in notification when capability unMuteMic is absent */ capabilityUnmuteMicAbsent?: NotificationStrings; /** * Message shown in notification when together mode is started */ togetherModeStarted?: NotificationStrings; /** * Message shown in notification when together mode ends */ togetherModeEnded?: NotificationStrings; /** * Message shown in notification when there was an error with transcription. */ transcriptionError?: NotificationStrings; /** * Message shown when the local user starts transcription */ transcriptionStartedByYou?: NotificationStrings; } /** * All strings that may be shown on the UI in the {@link Notification}. * * @public */ export declare interface NotificationStrings { /** * Notification bar title. */ title: string; /** * Notification bar dismiss button aria label */ dismissButtonAriaLabel?: string; /** * Notification bar message. */ message?: string; /** * Notification bar primary button label */ primaryButtonLabel?: string; /** * Notification bar secondary button label */ secondaryButtonLabel?: string; /** * Notification bar link label */ linkLabel?: string; } /** * Styles for the notification component. * * @public */ export declare interface NotificationStyles { /** * Styles for the primary button. */ primaryButton?: IButtonStyles; /** * Styles for the secondary button. */ secondaryButton?: IButtonStyles; /** * Styles for the root container. */ root?: IStackStyles; /** * Styles for the notification title. */ title?: IStackStyles; /** * Styles for the notification icon. */ icon?: IIconStyles; /** * Styles for the notification content. */ content?: IStackStyles; /** * Styles for the notification hyperlink. */ link?: IStackStyles; } /** @public */ export declare type NotificationTarget = 'assignedBreakoutRoomOpened' | 'assignedBreakoutRoomOpenedPromptJoin' | 'assignedBreakoutRoomChanged' | 'assignedBreakoutRoomClosed' | 'breakoutRoomJoined' | 'breakoutRoomClosingSoon' | 'capabilityTurnVideoOnPresent' | 'capabilityTurnVideoOnAbsent' | 'capabilityUnmuteMicPresent' | 'capabilityUnmuteMicAbsent' | 'togetherModeStarted' | 'togetherModeEnded'; /** * All notifications that can be shown in the {@link NotificationStack}. * * @public */ export declare type NotificationType = keyof NotificationStackStrings; /** * Callback function used to provide custom data to build profile for a user or bot. * * @public */ export declare type OnFetchChatProfileCallback = (userId: string, defaultProfile?: ChatProfile) => Promise; /** * Callback function used to provide custom data to build profile for a user or bot. * * @public */ export declare type OnFetchProfileCallback = (userId: string, defaultProfile?: Profile) => Promise; /** * A custom rendered callback that allows users to customize the rendering of a Persona Component. * * @public */ export declare type OnRenderAvatarCallback = ( /** * An Communication user ID. */ userId?: string, options?: CustomAvatarOptions, /** * A default `onRender` component that can be used to render the default avatar. * Pass the `options` to the `onRender` component for default rendering. */ defaultOnRender?: (props: CustomAvatarOptions) => JSX.Element) => JSX.Element | undefined; /** * * Dependency resolution for video background effects using lazy loading. * @public */ export declare const onResolveDeepNoiseSuppressionDependency: () => Promise; /** * * Dependency resolution for video background effects using lazy loading. * @public */ export declare const onResolveDeepNoiseSuppressionDependencyLazy: () => Promise; /** * Dependency resolution for video background effects. * * @public */ export declare const onResolveVideoEffectDependency: () => Promise; /** * * Dependency resolution for video background effects using lazy loading. * @public */ export declare const onResolveVideoEffectDependencyLazy: () => Promise; /** * State only version of Optimal Video Count Feature {@link @azure/communication-calling#OptimalVideoCountCallFeature}. * * @public */ export declare interface OptimalVideoCountFeatureState { /** * State of the current optimal video count. */ maxRemoteVideoStreams: number; } /** * A device, e.g. camera, microphone, or speaker, in the {@link DevicesButton} flyout. * * @public */ export declare interface OptionsDevice { /** * Device unique identifier */ id: string; /** * Device name */ name: string; } /** * Props for the OutboundCallComposite that you can use in your application. * * Contains two options bags: * - adapterOptions: Options for the {@link AzureCommunicationCallAdapter} * - callCompositeOptions: Options for the {@link CallComposite} {@link CallCompositeOptions} * * @public */ export declare interface OutboundCallCompositeLoaderProps extends Partial> { /** * UserId for the local user. */ userId: CommunicationUserIdentifier; /** * CommunicationTokenCredential for the local user. */ credential: CommunicationTokenCredential; /** * Display name for the local user. */ displayName: string; /** * Participants that will be called. * This can be a list of either {@link CommunicationUserIdentifier} or string identifiers. */ targetCallees: string[] | StartCallIdentifier[]; /** * Options for the {@link AzureCommunicationCallAdapter} * This is used to configure the call adapter. */ callAdapterOptions?: AzureCommunicationCallAdapterOptions; /** * Options for the {@link CallComposite} {@link CallCompositeOptions} * This is used to configure the call composite. */ callCompositeOptions?: CallCompositeOptions; /** * Device form factor for the composite. * This is used to configure the call composite. */ formFactor?: 'mobile' | 'desktop'; } /** * Different modes and positions of the overflow gallery in the VideoGallery * * @public */ export declare type OverflowGalleryPosition = 'horizontalBottom' | 'verticalRight' | 'horizontalTop'; /** * A system message notifying that a participant was added to the chat thread. * * @public */ export declare interface ParticipantAddedSystemMessage extends SystemMessageCommon { systemMessageType: 'participantAdded'; participants: CommunicationParticipant[]; } /** * Component to render a calling or chat participant. * * Displays the participant's avatar, displayName and status as well as optional icons and context menu. * * @public */ export declare const ParticipantItem: (props: ParticipantItemProps) => JSX.Element; /** * Props for {@link ParticipantItem}. * * @public */ export declare interface ParticipantItemProps { /** Unique User ID of the participant. This `userId` is available in the `onRenderAvatar` callback function */ userId?: string; /** Name of participant. */ displayName?: string; /** Optional indicator to show participant is the user. */ me?: boolean; /** Optional callback returning a JSX element to override avatar. */ onRenderAvatar?: OnRenderAvatarCallback; /** Optional array of IContextualMenuItem for contextual menu. */ menuItems?: IContextualMenuItem[]; /** Optional callback returning a JSX element rendered on the right portion of the ParticipantItem. Intended for adding icons. */ onRenderIcon?: (props?: ParticipantItemProps) => JSX.Element | null; /** Optional PersonaPresence to show participant presence. This will not have an effect if property avatar is assigned. */ presence?: PersonaPresence; /** * Allows users to pass in an object contains custom CSS styles. * @Example * ``` * * ``` */ styles?: ParticipantItemStyles; /** * Optional strings to override in component */ strings?: Partial; /** * Optional callback when component is clicked */ onClick?: (props?: ParticipantItemProps) => void; /** Optional value to determine if the tooltip should be shown for participants or not */ showParticipantOverflowTooltip?: boolean; /** * Optional value to determine and display a participants connection status. * For example, `Connecting`, `Ringing` etc. * The actual text that is displayed is determined by the localized string * corresponding to the provided participant state. * For example, `strings.participantStateConnecting` will be used if `participantState` is `Connecting`. */ participantState?: ParticipantState; /** * Optional aria property that prefixes the ParticipantItems aria content * Takes in a unique id value of the element you would like to be read before the ParticipantItem. */ ariaLabelledBy?: string; } /** * Strings of {@link ParticipantItem} that can be overridden. * * @public */ export declare interface ParticipantItemStrings { /** String shown when participant is me */ isMeText: string; /** String shown when hovering over menu button */ menuTitle: string; /** Label for the remove button in participant menu */ removeButtonLabel: string; /** Label for the sharing icon in participant state stack */ sharingIconLabel: string; /** Label for the muted icon in participant state stack */ mutedIconLabel: string; /** Label for the raised hand icon in participant state stack */ handRaisedIconLabel?: string; /** placeholder text for participants who does not have a display name*/ displayNamePlaceholder?: string; /** String shown when `participantState` is `Ringing` */ participantStateRinging?: string; /** String shown when `participantState` is `Hold` */ participantStateHold?: string; /** Aria Label applied to the base element of the `participantItem` */ participantItemAriaLabel?: string; /** Aria Label applied to the base element of the `participantItem` when there are more options present */ participantItemWithMoreOptionsAriaLabel?: string; /** String for the attendee role */ attendeeRole: string; /** Label for the disabled microphone icon in participant state stack */ micDisabledIconLabel: string; /** Label for the disabled camera icon in participant state stack */ cameraDisabledIconLabel: string; } /** * Fluent styles for {@link ParticipantItem}. * * @public */ export declare interface ParticipantItemStyles extends BaseCustomStyles { /** Styles for the avatar. */ avatar?: IStyle; /** Styles for the (You) string. */ me?: IStyle; /** Styles for the container of the icon. */ iconContainer?: IStyle; /** Styles for the menu. */ menu?: IStyle; } /** * Component to render all calling or chat participants. * * By default, each participant is rendered with {@link ParticipantItem}. See {@link ParticipantListProps.onRenderParticipant} to override. * * @public */ export declare const ParticipantList: (props: ParticipantListProps) => JSX.Element; /** * Styles for the {@link ParticipantList} {@link ParticipantItem}. * * @public */ export declare interface ParticipantListItemStyles extends ParticipantItemStyles { /** Styles applied to the sub-menu of the {@link ParticipantList} {@link ParticipantItem}. */ participantSubMenuItemsStyles?: IContextualMenuItemStyles; } /** * Participants displayed in a {@link ParticipantList}. * * @public */ export declare type ParticipantListParticipant = CommunicationParticipant & { /** * If true, local participant can remove this participant from the roster. */ isRemovable: boolean; }; /** * Props for {@link ParticipantList}. * * @public */ export declare type ParticipantListProps = { /** Participants in user call or chat */ participants: ParticipantListParticipant[]; /** User ID of user */ myUserId?: string; /** * If set to `true`, excludes the local participant from the participant list with use of `myUserId` props (required in this case). * * @defaultValue `false` */ excludeMe?: boolean; /** Optional callback to render each participant. If no callback is provided, each participant will be rendered with `ParticipantItem` */ onRenderParticipant?: (participant: ParticipantListParticipant) => JSX.Element | null; /** Optional callback to render the avatar for each participant. This property will have no effect if `onRenderParticipant` is assigned. */ onRenderAvatar?: OnRenderAvatarCallback; /** Optional callback to render the context menu for each participant */ onRemoveParticipant?: (userId: string) => void; /** Optional callback to render custom menu items for each participant. */ onFetchParticipantMenuItems?: ParticipantMenuItemsCallback; /** Optional callback when rendered ParticipantItem is clicked */ onParticipantClick?: (participant?: ParticipantListParticipant) => void; /** Optional callback to render a context menu to mute a participant */ onMuteParticipant?: (userId: string) => Promise; styles?: ParticipantListStyles; /** Optional value to determine if the tooltip should be shown for participants or not */ showParticipantOverflowTooltip?: boolean; /** Optional aria-labelledby prop that prefixes each ParticipantItem aria-label */ participantAriaLabelledBy?: string; /** List of pinned participants */ pinnedParticipants?: string[]; }; /** * Selector type for {@link ParticipantList} component. * * @public */ export declare type ParticipantListSelector = (state: CallClientState, props: CallingBaseSelectorProps) => { participants: CallParticipantListParticipant[]; myUserId: string; }; /** * Styles for the {@link ParticipantList}. * * @public */ export declare interface ParticipantListStyles extends BaseCustomStyles { /** Styles for the {@link ParticipantList} {@link ParticipantItem}. */ participantItemStyles?: ParticipantListItemStyles; } /** * A callback for providing custom menu items for each participant in {@link ParticipantList}. * * @public */ export declare type ParticipantMenuItemsCallback = (participantUserId: string, userId?: string, defaultMenuItems?: IContextualMenuItem[]) => IContextualMenuItem[]; /** * A system message notifying that a participant was removed from the chat thread. * * @public */ export declare interface ParticipantRemovedSystemMessage extends SystemMessageCommon { systemMessageType: 'participantRemoved'; participants: CommunicationParticipant[]; } /** * Callback for {@link ChatAdapterSubscribers} 'participantsAdded' event. * * @public */ export declare type ParticipantsAddedListener = (event: { participantsAdded: ChatParticipant[]; addedBy: ChatParticipant; }) => void; /** * A button to show a menu with calling or chat participants. * * Can be used with {@link ControlBar}. * * This button contains dropdown menu items defined through its property `menuProps`. By default, it can display the number of remote participants with the full list * as sub-menu and an option to mute all participants, as well as a copy-to-clipboard button to copy the call invitation URL. * This `menuProps` can be fully redefined and its property is of type [IContextualMenuProps](https://developer.microsoft.com/fluentui#/controls/web/contextualmenu#IContextualMenuProps). * * @public */ export declare const ParticipantsButton: (props: ParticipantsButtonProps) => JSX.Element; /** * Styles for the {@link ParticipantsButton} menu. * * @public */ export declare interface ParticipantsButtonContextualMenuStyles extends IContextualMenuStyles { /** Styles for the {@link ParticipantsButton} menu items. */ menuItemStyles?: IContextualMenuItemStyles; /** Styles for the {@link ParticipantList} menu item inside the {@link ParticipantsButton} menu. */ participantListStyles?: ParticipantListStyles; } /** * Props for {@link ParticipantsButton}. * * @public */ export declare interface ParticipantsButtonProps extends ControlBarButtonProps { /** * Participants in user call or chat */ participants: ParticipantListParticipant[]; /** * User ID of user */ myUserId?: string; /** * If set to `true`, excludes the local participant from the participant list with use of `myUserId` props (required in this case). * * @defaultValue `false` */ excludeMe?: boolean; /** * Callback to render each participant. If no callback is provided, each participant will be rendered with `ParticipantItem` */ onRenderParticipant?: (participant: CommunicationParticipant) => JSX.Element | null; /** * Callback to render the avatar for each participant. This property will have no effect if `onRenderParticipant` is assigned. */ onRenderAvatar?: OnRenderAvatarCallback; /** * Callback to render the context menu for each participant */ onRemoveParticipant?: (userId: string) => void; /** * Callback to render custom menu items for each participant. */ onFetchParticipantMenuItems?: ParticipantMenuItemsCallback; /** * Optional callback to render a custom participant list. */ onRenderParticipantList?: (props: ParticipantListProps) => JSX.Element | null; /** * Allows users to pass an object containing custom CSS styles. * @Example * ``` * * ``` */ styles?: ParticipantsButtonStyles; /** * URL to invite new participants to the current call */ callInvitationURL?: string; /** * CallBack to mute all remote participants */ onMuteAll?: () => void; /** * Optional strings to override in component */ strings?: Partial; /** Optional value to determine if the tooltip should be shown for participants or not */ showParticipantOverflowTooltip?: boolean; } /** * Selector type for {@link ParticipantsButton} component. * * @public */ export declare type ParticipantsButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => { participants: CallParticipantListParticipant[]; myUserId: string; }; /** * Strings of {@link ParticipantsButton} that can be overridden. * * @public */ export declare interface ParticipantsButtonStrings { /** * Label of button */ label: string; /** * Button tooltip content. */ tooltipContent?: string; /** * Aria label for button accessibility announcement */ ariaLabel?: string; /** * Header of menu pop up */ menuHeader: string; /** * Label of menu button to show list of participants. Placeholders: [numParticipants] */ participantsListButtonLabel: string; /** * Label of menu button to copy invite link */ copyInviteLinkButtonLabel: string; /** * Label of menu button to mute all participants */ muteAllButtonLabel: string; /** * Narrator announcement for when the invite link has been copied by the user to the clipboard */ copyInviteLinkActionedAriaLabel: string; } /** * Styles Props for {@link ParticipantsButton}. * * @public */ export declare interface ParticipantsButtonStyles extends ControlBarButtonStyles { /** Styles of the {@link ParticipantsButton} menu flyout */ menuStyles?: Partial; } /** * Callback for {@link CallAdapterSubscribers} 'participantsJoined' event. * * @public */ export declare type ParticipantsJoinedListener = (event: { joined: RemoteParticipant[]; }) => void; /** * Callback for {@link CallAdapterSubscribers} 'participantsLeft' event. * * @public */ export declare type ParticipantsLeftListener = (event: { removed: RemoteParticipant[]; }) => void; /** * Callback for {@link ChatAdapterSubscribers} 'participantsRemoved' event. * * @public */ export declare type ParticipantsRemovedListener = (event: { participantsRemoved: ChatParticipant[]; removedBy: ChatParticipant; }) => void; /** * @public * The connection state of a call participant. */ export declare type ParticipantState = 'Idle' | 'Connecting' | 'Ringing' | 'Connected' | 'Hold' | 'InLobby' | 'EarlyMedia' | 'Disconnected' | 'Reconnecting'; /** * State only version of {@link @azure/communication-calling#PPTLiveCallFeature}. {@link StatefulCallClient} will * automatically listen for pptLive on the call and update the state exposed by {@link StatefulCallClient} accordingly. * * @public */ export declare interface PPTLiveCallFeatureState { /** * Proxy of {@link @azure/communication-calling#PPTLiveCallFeature.isActive}. */ isActive: boolean; } /** * The profile of a user or bot. * * @public */ export declare type Profile = { /** * Primary text to display, usually the name of the person. */ displayName?: string; }; /** * Raised hand state with order * * @public */ export declare type RaisedHand = { raisedHandOrderPosition: number; }; /** * Raised hand state with order * * @public */ export declare type RaisedHandState = { raisedHandOrderPosition: number; }; /** * A button to start / stop screen sharing. * * Can be used with {@link ControlBar}. * * @public */ export declare const RaiseHandButton: (props: RaiseHandButtonProps) => JSX.Element; /** * Props for {@link RaiseHandButton}. * * @public */ export declare interface RaiseHandButtonProps extends ControlBarButtonProps { /** * Utility property for using this component with `communication react eventHandlers`. * Maps directly to the `onClick` property. */ onToggleRaiseHand?: () => Promise; /** * Optional strings to override in component */ strings?: Partial; } /** * Selector type for {@link RaiseHandButton} component. * * @public */ export declare type RaiseHandButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => { checked?: boolean; disabled?: boolean; }; /** * Strings of {@link RaiseHandButton} that can be overridden. * * @public */ export declare interface RaiseHandButtonStrings { /** Label when button is on. */ onLabel: string; /** Label when button is off. */ offLabel: string; /** * Tooltip content when the button is disabled. */ tooltipDisabledContent?: string; /** Tooltip content when the button is on. */ tooltipOnContent?: string; /** Tooltip content when the button is off. */ tooltipOffContent?: string; } /** * State only version of {@link @azure/communication-calling#RaiseHandCallFeature}. {@link StatefulCallClient} will * automatically listen for raised hands on the call and update the state exposed by {@link StatefulCallClient} accordingly. * * @public */ export declare interface RaiseHandCallFeature { /** * Proxy of {@link @azure/communication-calling#RaiseHandCallFeature.raisedHands}. */ raisedHands: RaisedHandState[]; /** * Contains information for local participant from list {@link @azure/communication-calling#RaiseHandCallFeature.raisedHands}. */ localParticipantRaisedHand?: RaisedHandState; } /** * Reaction state with reaction type to render * * @public */ export declare type Reaction = { /** * Specifies the type of reaction videoTile should render i.e. like, heart etc. */ reactionType: string; /** * Received timestamp for the message as default Date format. */ receivedOn: Date; }; /** * A button to send reactions. * * Can be used with {@link ControlBar}. * * @public */ export declare const ReactionButton: (props: ReactionButtonProps) => JSX.Element; /** * Props for {@link ReactionButton}. * * @public */ export declare interface ReactionButtonProps extends ControlBarButtonProps { /** * Optional strings to override in component */ strings?: Partial; /** * Click event to send reaction to meeting */ onReactionClick: (reaction: ReactionButtonReaction) => Promise; /** * Reaction resource locator and parameters */ reactionResources: ReactionResources; } /** * Reactions types for the Reaction button * @public */ export declare type ReactionButtonReaction = 'like' | 'heart' | 'applause' | 'laugh' | 'surprised'; /** * Strings of {@link ReactionButton} that can be overridden. * * @public */ export declare interface ReactionButtonStrings { /** Label of the button. */ label: string; /** Aria label for reaction button accessibility announcement */ ariaLabel: string; /** Tooltip content when the button is disabled. */ tooltipDisabledContent?: string; /** Tooltip content when the button is enabled. */ tooltipContent?: string; /** Tooltip content of like reaction button. */ likeReactionTooltipContent?: string; /** Tooltip content of heart reaction button. */ heartReactionTooltipContent?: string; /** Tooltip content of clap reaction button. */ applauseReactionTooltipContent?: string; /** Tooltip content of laugh reaction button. */ laughReactionTooltipContent?: string; /** Tooltip content of surprised reaction button. */ surprisedReactionTooltipContent?: string; } /** * Interface for animation sprite image and related metadata * @public */ export declare interface ReactionResources { /** * Like reaction animation resource. */ likeReaction?: ReactionSprite; /** * Heart reaction animation resource. */ heartReaction?: ReactionSprite; /** * Laugh reaction animation resource. */ laughReaction?: ReactionSprite; /** * Applause reaction animation resource. */ applauseReaction?: ReactionSprite; /** * Surprised reaction animation resource. */ surprisedReaction?: ReactionSprite; } /** * Type for animation sprite image and related metadata * @public */ export declare type ReactionSprite = { /** * Path to animation sprite image for reaction. */ url: string; /** * The frame count of the resource reaction in the sprite image */ frameCount: number; }; /** * State only version of {@link @azure/communication-calling#Call.ReactionMessage} with UI helper props receivedOn. * Reaction state with a timestamp which helps UI to decide to render the reaction accordingly. * * @public */ export declare type ReactionState = { /** * Reaction message from the meeting {@link @azure/communication-calling#Call.ReactionMessage} */ reactionMessage: ReactionMessage; /** * Received timestamp of the reaction message in a meeting. */ receivedOn: Date; }; /** * An array of key value pairs that stores each sender's display name and last read message * * @public */ export declare type ReadReceiptsBySenderId = { [key: string]: { lastReadMessage: string; displayName: string; }; }; /** * @public * A component for displaying a single line of RealTimeText */ export declare const RealTimeText: (props: RealTimeTextProps) => JSX.Element; /** * @public */ export declare interface RealTimeTextCallFeatureState { /** * array of received captions */ realTimeTexts: { completedMessages?: RealTimeTextInfo[]; currentInProgress?: RealTimeTextInfo[]; myInProgress?: RealTimeTextInfo; }; /** * whether real time text is on/off */ isRealTimeTextFeatureActive?: boolean; } /** * @public */ export declare interface RealTimeTextInfo { /** * The sequence id of the real time text. */ sequenceId: number; /** * The sender of the real time text. */ sender: ParticipantInfo; /** * The real time text message. */ message: string; /** * The result type of the real time text message. */ resultType: RealTimeTextResultType; /** * The timestamp when the real time text message was created. */ receivedTimestamp?: Date; /** * The timestamp when the real time text message was last updated. */ updatedTimestamp?: Date; /** * If message originated from the local participant * default is false */ isMe?: boolean; } /** * @public * information required for each line of real time text */ export declare type RealTimeTextInformation = { /** * The id of the real time text. */ id: number; /** * sender's display name */ displayName: string; /** * id of the sender */ userId?: string; /** * The real time text message. */ message: string; /** * if the real time text received is partial */ isTyping: boolean; /** * timestamp when the real time text was finalized */ finalizedTimeStamp: Date; /** * If message originated from the local participant * default value is false */ isMe?: boolean; }; /** * @public * a component for realTimeText modal */ export declare const RealTimeTextModal: (props: RealTimeTextModalProps) => JSX.Element; /** * @public * RealTimeTextModal Component Props. */ export declare interface RealTimeTextModalProps { /** The strings for the RealTimeText modal */ strings?: RealTimeTextModalStrings; /** The flag to show the modal */ showModal?: boolean; /** The function to dismiss the modal */ onDismissModal?: () => void; /** * Use this function to show RealTimeText UI in the calling experience. * Note that real time text should not be started for everyone in the call until the first real time text is received. */ onStartRealTimeText?: () => void; } /** * @public * strings for realTimeText modal */ export declare interface RealTimeTextModalStrings { /** The title of the RealTimeText modal */ realTimeTextModalTitle?: string; /** The text of the RealTimeText modal */ realTimeTextModalText?: string; /** The label for the confirm button */ realTimeTextConfirmButtonLabel?: string; /** The label for the cancel button */ realTimeTextCancelButtonLabel?: string; /** The aria label for the modal */ realTimeTextModalAriaLabel?: string; /** The aria label for the close button */ realTimeTextCloseModalButtonAriaLabel?: string; } /** * @public * Props for a single line of RealTimeText. */ export declare interface RealTimeTextProps { /** * RealTimeText id */ id: number; /** * Display name of the user */ displayName: string; /** * RealTimeText content */ message: string; /** * user id of the user */ userId?: string; /** * Optional callback to override render of the avatar. * * @param userId - user Id */ onRenderAvatar?: OnRenderAvatarCallback; /** * Boolean indicating whether the RealTimeText is still in progress */ isTyping?: boolean; /** * Boolean indicating whether the RealTimeText is from the local user */ isMe?: boolean; /** * Strings for RealTimeText */ strings?: RealTimeTextStrings; } /** * Callback for {@link CallAdapterSubscribers} 'realTimeTextReceived' event. * @public */ export declare type RealTimeTextReceivedListener = (event: { realTimeText: RealTimeTextInfo_2; }) => void; /** * @public * strings for rtt */ export declare interface RealTimeTextStrings { /** * String indicating that the user is typing */ isTypingText?: string; } /** * State only version of {@link @azure/communication-calling#RecordingCallFeature}. {@link StatefulCallClient} will * automatically listen for recording state of the call and update the state exposed by {@link StatefulCallClient} accordingly. * * @public */ export declare interface RecordingCallFeature { /** * Proxy of {@link @azure/communication-calling#RecordingCallFeature.isRecordingActive}. */ isRecordingActive: boolean; } /** * State only version of {@link @azure/communication-calling#RemoteParticipant}. {@link StatefulCallClient} will * automatically retrieve RemoteParticipants and add their state to the state exposed by {@link StatefulCallClient}. * * @public */ export declare interface RemoteParticipantState { /** * Proxy of {@link @azure/communication-calling#RemoteParticipant.identifier}. */ identifier: CommunicationIdentifierKind; /** * Proxy of {@link @azure/communication-calling#RemoteParticipant.displayName}. */ displayName?: string; /** * Proxy of {@link @azure/communication-calling#RemoteParticipant.state}. */ state: RemoteParticipantState_2; /** * Proxy of {@link @azure/communication-calling#RemoteParticipant.callEndReason}. */ callEndReason?: CallEndReason; /** * Proxy of {@link @azure/communication-calling#RemoteParticipant.videoStreams} as an object with * {@link RemoteVideoStream} fields keyed by {@link @azure/communication-calling#RemoteVideoStream.id}. */ videoStreams: { [key: number]: RemoteVideoStreamState; }; /** * Proxy of {@link @azure/communication-calling#RemoteParticipant.isMuted}. */ isMuted: boolean; /** * Proxy of {@link @azure/communication-calling#RemoteParticipant.isSpeaking}. */ isSpeaking: boolean; /** * Proxy of {@link @azure/communication-calling#RemoteParticipant.role}. */ role?: ParticipantRole; /** * Proxy of {@link @azure/communication-calling#Call.RaisedHand.raisedHands}. */ raisedHand?: RaisedHandState; /** * Proxy of {@link @azure/communication-calling#Call.PPTLive.target}. * * @public */ contentSharingStream?: HTMLElement; /** * Proxy of {@link @azure/communication-calling#Call.ReactionMessage} with * UI helper props receivedOn which indicates the timestamp when the message was received. * * @public */ reactionState?: ReactionState; /** * Proxy of {@link @azure/communication-calling#SpotlightCallFeature.spotlightedParticipants}. */ spotlight?: SpotlightState; /** * Proxy of {@link @azure/communication-calling#Call.MediaAccessCallFeature.MediaAccess}. */ mediaAccess?: MediaAccessState; } /** * State only version of {@link @azure/communication-calling#RemoteVideoStream}. * * @public */ export declare interface RemoteVideoStreamState { /** * Proxy of {@link @azure/communication-calling#RemoteVideoStream.id}. */ id: number; /** * Proxy of {@link @azure/communication-calling#RemoteVideoStream.mediaStreamType}. */ mediaStreamType: MediaStreamType; /** * Proxy of {@link @azure/communication-calling#RemoteVideoStream.isAvailable}. */ isAvailable: boolean; /** * Proxy of {@link @azure/communication-calling#RemoteVideoStream.isReceiving}. * @public */ isReceiving: boolean; /** * {@link VideoStreamRendererView} that is managed by createView/disposeView in {@link StatefulCallClient} * API. This can be undefined if the stream has not yet been rendered and defined after createView creates the view. */ view?: VideoStreamRendererViewState; /** * Proxy of {@link @azure/communication-calling#RemoteVideoStream.size}. */ streamSize?: { width: number; height: number; }; } /** * Menu options for remote video tiles in {@link VideoGallery}. * * @public */ export declare interface RemoteVideoTileMenuOptions { /** * If set to true, remote video tiles in the VideoGallery will not have menu options * * @defaultValue false */ isHidden?: boolean; } /** * Details required for download a resource to cache. * * @public */ export declare type ResourceDetails = { threadId: string; messageId: string; resourceUrl: string; }; /** * Result of the Resource downloaded from stateful client * @public */ export declare type ResourceFetchResult = { sourceUrl?: string; error?: Error; }; /** * A button to start / stop screen sharing. * * Can be used with {@link ControlBar}. * * @public */ export declare const ScreenShareButton: (props: ScreenShareButtonProps) => JSX.Element; /** * Props for {@link ScreenShareButton}. * * @public */ export declare interface ScreenShareButtonProps extends ControlBarButtonProps { /** * Utility property for using this component with `communication react eventHandlers`. * Maps directly to the `onClick` property. */ onToggleScreenShare?: () => Promise; /** * Optional strings to override in component */ strings?: Partial; } /** * Selector type for {@link ScreenShareButton} component. * * @public */ export declare type ScreenShareButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => { checked?: boolean; disabled?: boolean; }; /** * Strings of {@link ScreenShareButton} that can be overridden. * * @public */ export declare interface ScreenShareButtonStrings { /** Label when button is on. */ onLabel: string; /** Label when button is off. */ offLabel: string; /** * Tooltip content when the button is disabled. */ tooltipDisabledContent?: string; /** Tooltip content when the button is on. */ tooltipOnContent?: string; /** Tooltip content when the button is off. */ tooltipOffContent?: string; } /** * An optimized selector that refines {@link ClientState} updates into props for React Components in this library. * * @public */ export declare type Selector = (state: ClientState, props: any) => any; /** * Component for typing and sending messages. * * Supports sending typing notification when user starts entering text. * Supports an optional message below the text input field. * * @public */ export declare const SendBox: (props: SendBoxProps) => JSX.Element; /** * Props for {@link SendBox}. * * @public */ export declare interface SendBoxProps { /** * Optional boolean to disable text box * @defaultValue false */ disabled?: boolean; /** * Optional text for system message below text box */ systemMessage?: string; /** * Optional override behavior on send button click */ onSendMessage?: (content: string) => Promise; /** * Optional callback called when user is typing */ onTyping?: () => Promise; /** * Optional callback to render system message below the SendBox. * @defaultValue MessageBar */ onRenderSystemMessage?: (systemMessage: string | undefined) => React_2.ReactElement; /** * Optional boolean to support new line in SendBox. * @defaultValue false */ supportNewline?: boolean; /** * Optional callback to render send button icon to the right of the SendBox. * @defaultValue SendBoxSendHovered icon when mouse over icon and SendBoxSend icon otherwise */ onRenderIcon?: (isHover: boolean) => JSX.Element; /** * Allows users to pass in an object contains custom CSS styles. * @Example * ``` * * ``` */ styles?: SendBoxStylesProps; /** * Optional strings to override in component */ strings?: Partial; /** * enumerable to determine if the input box has focus on render or not. * When undefined nothing has focus on render */ autoFocus?: 'sendBoxTextField'; } /** * Selector type for {@link SendBox} component. * * @public */ export declare type SendBoxSelector = (state: ChatClientState, props: ChatBaseSelectorProps) => { displayName: string; userId: string; }; /** * Strings of {@link SendBox} that can be overridden. * * @public */ export declare interface SendBoxStrings { /** * Placeholder text in SendBox when there is no user input */ placeholderText: string; /** * The warning message when send box text length is more than max limit */ textTooLong: string; /** * Aria label for send message button */ sendButtonAriaLabel: string; } /** * Fluent styles for {@link Sendbox}. * * @public */ export declare interface SendBoxStylesProps extends BaseCustomStyles { /** Styles for the text field. */ textField?: IStyle; /** styles for the text field container */ textFieldContainer?: IStyle; /** Styles for the container of the send message icon. */ sendMessageIconContainer?: IStyle; /** Styles for the send message icon; These styles will be ignored when a custom send message icon is provided. */ sendMessageIcon?: IStyle; /** Styles for the system message; These styles will be ignored when a custom system message component is provided. */ systemMessage?: IStyle; } /** * @public * Type for representing a custom sound to use for a calling event */ export declare type SoundEffect = { /** * Path to sound effect */ url: string; }; /** * @public * spoken language strings for captions setting modal */ export declare interface SpokenLanguageStrings { 'ar-ae': string; 'ar-sa': string; 'da-dk': string; 'de-de': string; 'en-au': string; 'en-ca': string; 'en-gb': string; 'en-in': string; 'en-nz': string; 'en-us': string; 'es-es': string; 'es-mx': string; 'fi-fi': string; 'fr-ca': string; 'fr-fr': string; 'hi-in': string; 'it-it': string; 'ja-jp': string; 'ko-kr': string; 'nb-no': string; 'nl-be': string; 'nl-nl': string; 'pl-pl': string; 'pt-br': string; 'ru-ru': string; 'sv-se': string; 'zh-cn': string; 'zh-hk': string; 'cs-cz': string; 'pt-pt': string; 'tr-tr': string; 'vi-vn': string; 'th-th': string; 'he-il': string; 'cy-gb': string; 'uk-ua': string; 'el-gr': string; 'hu-hu': string; 'ro-ro': string; 'sk-sk': string; 'zh-tw': string; } /** * Spotlight state with order * * @public */ export declare type Spotlight = { /** * Specifies the order position of the spotlight */ spotlightedOrderPosition?: number; }; /** * State only version of {@link @azure/communication-calling#SpotlightCallFeature} * * @public */ export declare interface SpotlightCallFeatureState { /** * Ordered array of spotlighted participants in call */ spotlightedParticipants: SpotlightedParticipant[]; /** * Local participant spotlight */ localParticipantSpotlight?: SpotlightState; /** * Proxy of {@link @azure/communication-calling#SpotlightCallFeature.maxParticipantsToSpotlight}. */ maxParticipantsToSpotlight: number; } /** * Callback for {@link CallAdapterSubscribers} 'spotlightChanged' event. * * @public */ export declare type SpotlightChangedListener = (args: { added: SpotlightedParticipant[]; removed: SpotlightedParticipant[]; }) => void; /** * Strings used in prompt related to spotlight * @public */ export declare interface SpotlightPromptStrings { /** * Heading for prompt when starting spotlight on participant */ startSpotlightHeading: string; /** * Text for prompt when starting spotlight on participant */ startSpotlightText: string; /** * Label for button to confirm starting spotlight on local user in prompt */ startSpotlightOnSelfText: string; /** * Label for button to confirm starting spotlight on participant in prompt */ startSpotlightConfirmButtonLabel: string; /** * Label for button to cancel starting spotlight on participant in prompt */ startSpotlightCancelButtonLabel: string; /** * Heading for prompt when stopping spotlight on participant */ stopSpotlightHeading: string; /** * Heading for prompt when stopping spotlight on local user */ stopSpotlightOnSelfHeading: string; /** * Heading for prompt when stopping all spotlight */ stopAllSpotlightHeading: string; /** * Text for prompt when stopping spotlight on participant */ stopSpotlightText: string; /** * Text for prompt when stopping spotlight on local user */ stopSpotlightOnSelfText: string; /** * Text for prompt when stopping all spotlight */ stopAllSpotlightText: string; /** * Label for button to confirm stopping spotlight on participant(s) in prompt */ stopSpotlightConfirmButtonLabel: string; /** * Label for button to confirm stopping spotlight on local user in prompt */ stopSpotlightOnSelfConfirmButtonLabel: string; /** * Label for button to cancel stopping spotlight on participant(s) in prompt */ stopSpotlightCancelButtonLabel: string; /** * Label for button to close prompt */ closeSpotlightPromptButtonLabel: string; } /** * Spotlight state with order * * @public */ export declare interface SpotlightState { /** * Order position of spotlight in call */ spotlightedOrderPosition?: number; } /** * Identifier types for initiating a call using the CallAdapter * @public */ export declare type StartCallIdentifier = CommunicationIdentifier; /** * Options passed to adapter.startCaptions * * @public */ export declare interface StartCaptionsAdapterOptions extends StartCaptionsOptions { /** * Start captions in the background without showing the captions UI to the Composite user. * * @defaultValue false */ startInBackground?: boolean; } /** * a button to start or stop captions * * Can be used with {@link ControlBar} * * @param props - properties for the start captions button. * @public */ export declare const StartCaptionsButton: (props: StartCaptionsButtonProps) => JSX.Element; /** * @public */ export declare interface StartCaptionsButtonProps extends ControlBarButtonProps { /** * Utility property for using this component with communication react handlers * Start captions based on captions state */ onStartCaptions: (options?: CaptionsOptions) => Promise; /** * Utility property for using this component with communication react handlers * Stop captions based on captions state */ onStopCaptions: () => Promise; /** * Utility property for using this component with communication react handlers * set captions spoken language */ onSetSpokenLanguage: (language: string) => Promise; /** * Spoken language set for starting captions */ currentSpokenLanguage: string; /** * Optional strings to override in component */ strings?: StartCaptionsButtonStrings; } /** * Selector type for the {@link StartCaptionsButton} component. * @public */ export declare type StartCaptionsButtonSelector = (state: CallClientState, props: CallingBaseSelectorProps) => { checked: boolean; currentCaptionLanguage: string; currentSpokenLanguage: string; }; /** * Strings for the hold button labels * @public */ export declare interface StartCaptionsButtonStrings { /** * Label for when action is to start Captions */ onLabel: string; /** * Label for when action is to stop Captions */ offLabel: string; /** * Content for when button is checked, captions is on */ tooltipOnContent: string; /** * Content for when button is unchecked, captions is off */ tooltipOffContent: string; } /** * a button to start RealTimeText * based on accessibility requirement, real time text cannot be turned off once it is on * * Can be used with {@link ControlBar} * * @param props - properties for the start RealTimeText button. * @public */ export declare const StartRealTimeTextButton: (props: StartRealTimeTextButtonProps) => JSX.Element; /** * Props for the StartRealTimeTextButton component * @public */ export declare interface StartRealTimeTextButtonProps extends ControlBarButtonProps { /** * Use this function to show RealTimeText UI in the calling experience. * Note that real time text should not be started for everyone in the call until the first real time text is received. */ onStartRealTimeText: () => void; /** * If RealTimeText is on */ isRealTimeTextOn: boolean; /** * Optional strings to override in component */ strings?: StartRealTimeTextButtonStrings; } /** * Strings for the hold button labels * @public */ export declare interface StartRealTimeTextButtonStrings { /** * Label for the start Real Time Text button */ label: string; /** * Content for when button is not checked, Real-Time Text is off. * We don't need to supply a tooltip string when RealTimeText is on, because the button will be disabled when Real-Time Text is on. */ tooltipOffContent: string; } /** * Defines the methods that allow CallClient {@link @azure/communication-calling#CallClient} to be used statefully. * The interface provides access to proxied state and also allows registering a handler for state change events. For * state definition see {@link CallClientState}. * * State change events are driven by: * - Returned data from {@link @azure/communication-calling#DeviceManager} APIs. * - Returned data from {@link @azure/communication-calling#CallAgent} APIs. * - Listeners automatically attached to various azure communication-calling objects: * - CallAgent 'incomingCall' * - CallAgent 'callsUpdated' * - DeviceManager 'videoDevicesUpdated' * - DeviceManager 'audioDevicesUpdated * - DeviceManager 'selectedMicrophoneChanged' * - DeviceManager 'selectedSpeakerChanged' * - Call 'stateChanged' * - Call 'idChanged' * - Call 'isMutedChanged' * - Call 'isScreenSharingOnChanged' * - Call 'remoteParticipantsUpdated' * - Call 'localVideoStreamsUpdated' * - IncomingCall 'callEnded' * - RemoteParticipant 'stateChanged' * - RemoteParticipant 'isMutedChanged' * - RemoteParticipant 'displayNameChanged' * - RemoteParticipant 'isSpeakingChanged' * - RemoteParticipant 'videoStreamsUpdated' * - RemoteVideoStream 'isAvailableChanged' * - TranscriptionCallFeature 'isTranscriptionActiveChanged' * - RecordingCallFeature 'isRecordingActiveChanged' * - LocalRecordingCallFeature 'isLocalRecordingActiveChanged' * - RaiseHandCallFeature 'raisedHandEvent' * - RaiseHandCallFeature 'loweredHandEvent' * - PPTLiveCallFeature 'isAciveChanged' * - ReactionCallFeature 'reaction' * * @public */ export declare interface StatefulCallClient extends CallClient { /** * Holds all the state that we could proxy from CallClient {@link @azure/communication-calling#CallClient} as * CallClientState {@link CallClientState}. */ getState(): CallClientState; /** * Allows a handler to be registered for 'stateChanged' events. * * @param handler - Callback to receive the state. */ onStateChange(handler: (state: CallClientState) => void): void; /** * Allows unregistering for 'stateChanged' events. * * @param handler - Original callback to be unsubscribed. */ offStateChange(handler: (state: CallClientState) => void): void; /** * Renders a {@link RemoteVideoStreamState} or {@link LocalVideoStreamState} and stores the resulting * {@link VideoStreamRendererViewState} under the relevant {@link RemoteVideoStreamState} or * {@link LocalVideoStreamState} or as unparented view in the state. Under the hood calls * {@link @azure/communication-calling#VideoStreamRenderer.createView}. * * Scenario 1: Render RemoteVideoStreamState * - CallId is required, participantId is required, and stream of type RemoteVideoStreamState is required * - Resulting {@link VideoStreamRendererViewState} is stored in the given callId and participantId in * {@link CallClientState} * * Scenario 2: Render LocalVideoStreamState for a call * - CallId is required, participantId must be undefined, and stream of type LocalVideoStreamState is required. * - The {@link @azure/communication-calling#Call.localVideoStreams} must already be started using * {@link @azure/communication-calling#Call.startVideo}. * - Resulting {@link VideoStreamRendererViewState} is stored in the given callId {@link CallState.localVideoStreams} * in {@link CallClientState}. * * - Scenario 2: Render LocalVideoStreamState not part of a call (example rendering camera for local preview) * - CallId must be undefined, participantId must be undefined, and stream of type LocalVideoStreamState is required. * - Resulting {@link VideoStreamRendererViewState} is stored in under the given LocalVideoStreamState in * {@link CallClientState.deviceManager.unparentedViews} * * @param callId - CallId for the given stream. Can be undefined if the stream is not part of any call. * @param participantId - {@link RemoteParticipant.identifier} associated with the given RemoteVideoStreamState. Could * be undefined if rendering LocalVideoStreamState. * @param stream - The LocalVideoStreamState or RemoteVideoStreamState to start rendering. * @param options - Options that are passed to the {@link @azure/communication-calling#VideoStreamRenderer}. */ createView(callId: string | undefined, participantId: CommunicationIdentifier | undefined, stream: LocalVideoStreamState | RemoteVideoStreamState | CallFeatureStreamState, options?: CreateViewOptions): Promise; /** * Stops rendering a {@link RemoteVideoStreamState} or {@link LocalVideoStreamState} and removes the * {@link VideoStreamRendererView} from the relevant {@link RemoteVideoStreamState} in {@link CallClientState} or * {@link LocalVideoStream} in {@link CallClientState} or appropriate * {@link CallClientState.deviceManager.unparentedViews} Under the hood calls * {@link @azure/communication-calling#VideoStreamRenderer.dispose}. * * Its important to disposeView to clean up resources properly. * * Scenario 1: Dispose RemoteVideoStreamState * - CallId is required, participantId is required, and stream of type RemoteVideoStreamState is required * * Scenario 2: Dispose LocalVideoStreamState for a call * - CallId is required, participantId must be undefined, and stream of type LocalVideoStreamState is required. * * - Scenario 2: Dispose LocalVideoStreamState not part of a call * - CallId must be undefined, participantId must be undefined, and stream of type LocalVideoStreamState is required. * - LocalVideoStreamState must be the original one passed to createView. * * @param callId - CallId for the given stream. Can be undefined if the stream is not part of any call. * @param participantId - {@link RemoteParticipant.identifier} associated with the given RemoteVideoStreamState. Could * be undefined if disposing LocalVideoStreamState. * @param stream - The LocalVideoStreamState or RemoteVideoStreamState to dispose. */ disposeView(callId: string | undefined, participantId: CommunicationIdentifier | undefined, stream: LocalVideoStreamState | RemoteVideoStreamState | CallFeatureStreamState): void; /** * The CallAgent is used to handle calls. * To create the CallAgent, pass a CommunicationTokenCredential object provided from SDK. * - The CallClient can only have one active CallAgent instance at a time. * - You can create a new CallClient instance to create a new CallAgent. * - You can dispose of a CallClient's current active CallAgent, and call the CallClient's * createCallAgent() method again to create a new CallAgent. * @param tokenCredential - The token credential. Use AzureCommunicationTokenCredential from `@azure/communication-common` to create a credential. * @param options - The CallAgentOptions for additional options like display name. * @public */ createCallAgent(...args: Parameters): Promise; /** * The TeamsCallAgent is used to handle calls. * To create the TeamsCallAgent, pass a CommunicationTokenCredential object provided from SDK. * - The CallClient can only have one active TeamsCallAgent instance at a time. * - You can create a new CallClient instance to create a new TeamsCallAgent. * - You can dispose of a CallClient's current active TeamsCallAgent, and call the CallClient's * createTeamsCallAgent() method again to create a new TeamsCallAgent. * @param tokenCredential - The token credential. Use AzureCommunicationTokenCredential from `@azure/communication-common` to create a credential. * @param options - The TeamsCallAgentOptions for additional options like display name. * @public */ createTeamsCallAgent(...args: Parameters): Promise; } /** * Arguments to construct the StatefulCallClient. * * @public */ export declare type StatefulCallClientArgs = { /** * UserId from SDK. This is provided for developer convenience to easily access the userId from the * state. It is not used by StatefulCallClient. */ userId: CommunicationUserIdentifier | MicrosoftTeamsUserIdentifier; }; /** * Options to construct the StatefulCallClient with. * * @public */ export declare type StatefulCallClientOptions = { /** * Options to construct the {@link @axure/communication-calling#CallClient} with. */ callClientOptions: CallClientOptions; /** * Sets the max listeners limit of the 'stateChange' event. Defaults to the node.js EventEmitter.defaultMaxListeners * if not specified. */ maxStateChangeListeners?: number; }; /** * Defines the methods that allow {@Link @azure/communication-chat#ChatClient} to be used with a centralized generated state. * * The interface provides access to proxied state and also allows registering a handler for state change events. * * @public */ export declare interface StatefulChatClient extends ChatClient { /** * Cleans up the resource cache from the chat thread client. */ dispose(): void; /** * Holds all the state that we could proxy from ChatClient {@Link @azure/communication-chat#ChatClient} as * ChatClientState {@Link ChatClientState}. */ getState(): ChatClientState; /** * Allows a handler to be registered for 'stateChanged' events. * * @param handler - Callback to receive the state. */ onStateChange(handler: (state: ChatClientState) => void): void; /** * Allows unregistering for 'stateChanged' events. * * @param handler - Original callback to be unsubscribed. */ offStateChange(handler: (state: ChatClientState) => void): void; /** * Downloads a resource for specific message and caches it. * * @param threadId - The thread id of the chat thread. * @param messageId - The message id of the chat message. * @param resourceUrl - The resource url to fetch and cache. */ downloadResourceToCache(threadId: string, messageId: string, resourceUrl: string): void; /** * Removes a resource from cache for a specific message. * * @param threadId - The thread id of the chat thread. * @param messageId - The message id of the chat message. * @param resourceUrl - The resource url to remove from cache. */ removeResourceFromCache(threadId: string, messageId: string, resourceUrl: string): void; } /** * Arguments to construct the {@link StatefulChatClient}. * * @public */ export declare type StatefulChatClientArgs = { userId: CommunicationUserIdentifier; displayName: string; endpoint: string; credential: CommunicationTokenCredential; }; /** * Options to construct the {@link StatefulChatClient}. * * @public */ export declare type StatefulChatClientOptions = { /** * Options to construct the {@link @azure/communication-chat#ChatClient} with. */ chatClientOptions: ChatClientOptions; /** * Sets the max listeners limit of the 'stateChange' event. Defaults to the node.js EventEmitter.defaultMaxListeners * if not specified. */ maxStateChangeListeners?: number; }; /** * Defines the additional methods added by the stateful on top of {@link @azure/communication-calling#DeviceManager}. * * @public */ export declare interface StatefulDeviceManager extends DeviceManager { /** * Sets the selectedCamera in the {@link DeviceManagerState}. This is completely developer driven and is not tied in * any way to {@link @azure/communication-calling#DeviceManager}. It is entirely contained in * {@link StatefulDeviceManager}. See also {@link DeviceManagerState.selectedCamera}. */ selectCamera: (device: VideoDeviceInfo) => void; /** * Gets the list of unparented video streams. This is a list of video streams that have not been added to a * {@link @azure/communication-calling#Call}. This is useful for developers who want to interact with rendered * video streams before they have started a call. See also {@link @azure/communication-react#CallClient.createView}. * * @public */ getUnparentedVideoStreams: () => LocalVideoStream[]; } /** * Options passed to adapter.stopCaptions * * @public */ export declare interface StopCaptionsAdapterOptions { /** * Stop captions that have been started in the background. * * @remarks * This option is only applicable when stopping captions that have been started using the `startInBackground` property of adpater.startCaptions. * * @defaultValue false */ stopInBackground?: boolean; } /** * Utility component to convert an HTMLElement with a video stream into a JSX element. * * Use to convert an HTMLElement returned by headless calling API into a component that can be rendered as a {@link VideoTile}. * * @public */ export declare const StreamMedia: (props: StreamMediaProps) => JSX.Element; /** * Props for {@link StreamMedia}. * * @public */ export declare interface StreamMediaProps { /** Video stream element to render. */ videoStreamElement: HTMLElement | null; /** Decides whether to mirror the video or not. */ isMirrored?: boolean; /** Whether the stream is loading data */ loadingState?: LoadingState; /** * Allows users to pass in an object contains custom CSS styles. * @Example * ``` * * ``` */ styles?: BaseCustomStyles; } /** * @public */ export declare type SupportedCaptionLanguage = keyof CaptionLanguageStrings; /** * @public */ export declare type SupportedSpokenLanguage = keyof SpokenLanguageStrings; /** * @public * Corresponding texts to each call issue */ export declare interface SurveyIssues { overallRating: { callCannotJoin: string; callCannotInvite: string; hadToRejoin: string; callEndedUnexpectedly: string; otherIssues: string; }; audioRating: { noLocalAudio: string; noRemoteAudio: string; echo: string; audioNoise: string; lowVolume: string; audioStoppedUnexpectedly: string; distortedSpeech: string; audioInterruption: string; otherIssues: string; }; videoRating: { noVideoReceived: string; noVideoSent: string; lowQuality: string; freezes: string; stoppedUnexpectedly: string; darkVideoReceived: string; audioVideoOutOfSync: string; otherIssues: string; }; screenshareRating: { noContentLocal: string; noContentRemote: string; cannotPresent: string; lowQuality: string; freezes: string; stoppedUnexpectedly: string; largeDelay: string; otherIssues: string; }; } /** * @public * Corresponding texts to each call issue category */ export declare interface SurveyIssuesHeadingStrings { overallRating: string; audioRating: string; videoRating: string; screenshareRating: string; } /** * Discriminated union of all system messages. * * The `systemMessageType` field specializes into union variants. * * @public */ export declare type SystemMessage = ParticipantAddedSystemMessage | ParticipantRemovedSystemMessage | TopicUpdatedSystemMessage | ContentSystemMessage; /** * Common properties of all system messages. * * @public */ export declare interface SystemMessageCommon extends MessageCommon { messageType: 'system'; iconName: string; } /** * Optional parameters to create {@link TeamsCallAdapter} * * @public */ export declare type TeamsAdapterOptions = CommonCallAdapterOptions; /** * An Adapter interface specific for Teams identity which extends {@link CommonCallAdapter}. * * @public */ export declare interface TeamsCallAdapter extends CommonCallAdapter { /** * Join the call with microphone initially on/off. * @deprecated Use joinCall(options?:JoinCallOptions) instead. * @param microphoneOn - Whether microphone is initially enabled */ joinCall(microphoneOn?: boolean): TeamsCall | undefined; /** * Join the call with options bag to set microphone/camera initial state when joining call * true = turn on the device when joining call * false = turn off the device when joining call * 'keep'/undefined = retain devices' precall state * * @param options - param to set microphone/camera initially on/off. * * @public */ joinCall(options?: JoinCallOptions): TeamsCall | undefined; /** * Start the call. * * @param participants - An array of participant ids to join * * @public */ startCall(participants: string[], options?: StartCallOptions): TeamsCall | undefined; /** * Start the call. * @param participants - An array of {@link @azure/communication-common#CommunicationIdentifier} to be called * @public */ startCall(participants: StartCallIdentifier[], options?: StartCallOptions): TeamsCall | undefined; } /** * Arguments for creating the Azure Communication Services implementation of {@link TeamsCallAdapter}. * * @public */ export declare type TeamsCallAdapterArgs = TeamsCallAdapterArgsCommon & { locator: TeamsMeetingLinkLocator | TeamsMeetingIdLocator; }; /** * Common part of args to create the Azure Communication Services implementation of {@link TeamsCallAdapter}. * * @public */ export declare type TeamsCallAdapterArgsCommon = { userId: MicrosoftTeamsUserIdentifier; credential: CommunicationTokenCredential; options?: TeamsAdapterOptions; }; /** * Object containing all the teams call handlers required for calling components. * * Calling related components from this package are able to pick out relevant handlers from this object. * See {@link useHandlers} and {@link usePropsFor}. * * @public */ export declare interface TeamsCallingHandlers extends CommonCallingHandlers { onStartCall: (participants: CommunicationIdentifier[], options?: StartCallOptions) => undefined | TeamsCall; } /** * @public * Proxies the {@link @azure/communication-calling#TeamsIncomingCall} interface. */ export declare type TeamsIncomingCallManagement = { /** * @beta * @Remark This attribute doesn't exist on the {@link @azure/communication-calling#TeamsCallAgent} interface. * @returns readonly array of {@link DeclarativeTeamsIncomingCall} */ incomingCalls: ReadonlyArray; }; /** * State only version of {@link @azure/communication-calling#TeamsIncomingCall} * @public */ export declare interface TeamsIncomingCallState { /** * Proxy of {@link @azure/communication-calling#TeamsIncomingCall.id}. */ id: string; /** * Proxy of {@link @azure/communication-calling#TeamsIncomingCall.teamsCallInfo}. */ info: CallInfoState; /** * Proxy of {@link @azure/communication-calling#TeamsIncomingCall.callerInfo}. */ callerInfo: CallerInfo; /** * Set to the state returned by 'callEnded' event on {@link @azure/communication-calling#IncomingCall} when received. * This property is added by the stateful layer and is not a proxy of SDK state. */ callEndReason?: CallEndReason; /** * Stores the local date when the call started on the client. This property is added by the stateful layer and is not * a proxy of SDK state. */ startTime: Date; /** * Stores the local date when the call ended on the client. This property is added by the stateful layer and is not a * proxy of SDK state. It is undefined if the call is not ended yet. */ endTime?: Date; } /** * A string representation of a {@link @azure/communication-common#CommunicationIdentifier}. * * This string representation of CommunicationIdentifier is guaranteed to be stable for * a unique Communication user. Thus, * - it can be used to persist a user's identity in external databases. * - it can be used as keys into a Map to store data for the user. * * @public */ export declare const toFlatCommunicationIdentifier: (identifier: CommunicationIdentifier) => string; /** * State only version of {@link @azure/communication-calling#TogetherModeCallFeature}. {@link StatefulCallClient}. * Represents the state of the Together Mode feature. * @public */ export declare interface TogetherModeCallFeatureState { /** * Flag indicating if Together Mode is active in the call */ isActive: boolean; /** * Proxy of {@link @azure/communication-calling#TogetherModeCallFeature.togetherModeStream}. */ streams: TogetherModeStreamsState; /** * Proxy of {@link @azure/communication-calling#TogetherModeCallFeature.TogetherModeSeatingMap}. */ seatingPositions: TogetherModeParticipantSeatingState; } /** * Represents the seating positions of participants in Together Mode. * * @public */ export declare type TogetherModeParticipantSeatingState = Record; /** * State only version of {@link @azure/communication-calling#TogetherModeSeatingMap}. * @public * * Represents the seating position of a participant in Together Mode. */ export declare interface TogetherModeSeatingPositionState { /** * The top left offset from the top of the together mode view. */ top: number; /** * The left offset position from the left of the together mode view. */ left: number; /** * The width of the seating area */ width: number; /** * The height of the seating area. */ height: number; } /** * Interface representing the result of a Together Mode stream view. * @public */ export declare interface TogetherModeStreamOptions extends VideoStreamOptions { /** * The kind of together mode view to be created. Default is 'main'. */ viewKind?: 'main' | 'panoramic'; } /** * Represents the streams in Together Mode. * * @public */ export declare interface TogetherModeStreamsState { /** * The main video stream in Together Mode. */ mainVideoStream?: CallFeatureStreamState; } /** * Interface representing the result of a Together Mode stream view. * @public */ export declare interface TogetherModeStreamViewResult { /** * Together mode stream view id. */ mainVideoView?: CreateVideoStreamViewResult; } /** * Callback for {@link ChatAdapterSubscribers} 'topicChanged' event. * * @public */ export declare type TopicChangedListener = (event: { topic: string; }) => void; /** * A system message notifying that the chat thread topic was updated. * * @public */ export declare interface TopicUpdatedSystemMessage extends SystemMessageCommon { systemMessageType: 'topicUpdated'; topic: string; } /** * State only version of {@link @azure/communication-calling#TranscriptionCallFeature}. {@link StatefulCallClient} will * automatically listen for transcription state of the call and update the state exposed by {@link StatefulCallClient} * accordingly. * * @public */ export declare interface TranscriptionCallFeature { /** * Proxy of {@link @azure/communication-calling#TranscriptionCallFeature.isTranscriptionActive}. */ isTranscriptionActive: boolean; } /** * Callback for {@link CallAdapterSubscribers} 'transferRequested' event. * * @public */ export declare type TransferAcceptedListener = (event: TransferEventArgs) => void; /** * Transfer feature state * * @public */ export declare interface TransferFeature { /** * Accepted transfer requests */ acceptedTransfers: { [key: string]: AcceptedTransfer; }; } /** * Component to notify local user when one or more participants in the chat thread are typing. * * @public */ export declare const TypingIndicator: (props: TypingIndicatorProps) => JSX.Element; /** * Props for {@link TypingIndicator}. * * @public */ export declare interface TypingIndicatorProps { /** List of the typing users. */ typingUsers: CommunicationParticipant[]; /** Callback to render typing users */ onRenderUser?: (users: CommunicationParticipant) => JSX.Element; /** * Allows users to pass in an object contains custom CSS styles. * @Example * ``` * * ``` */ styles?: TypingIndicatorStylesProps; /** * Optional strings to override in component */ strings?: Partial; } /** * Selector type for {@link TypingIndicator} component. * * @public */ export declare type TypingIndicatorSelector = (state: ChatClientState, props: ChatBaseSelectorProps) => { typingUsers: CommunicationParticipant[]; }; /** * Strings of {@link TypingIndicator} that can be overridden. * * @public */ export declare interface TypingIndicatorStrings { /** * String template to use when one user is typing. Placeholders: [user]. * @example * ``` * * ``` * would be 'Claire is typing...' **/ singleUser: string; /** * String template to use when multiple users are typing. Placeholders: [users]. * @example * ``` * * ``` * would be 'Claire, Chris are typing...' **/ multipleUsers: string; /** * String template to use when multiple users are typing with one other user abbreviated. Placeholders: [users]. * @example * ```typescript * * ``` * would be 'Claire Romanov and 1 other are typing...' **/ multipleUsersAbbreviateOne: string; /** * String template to use when multiple users are typing with one other user abbreviated. Placeholders: [users, numOthers]. * @example * ``` * * ``` * would be 'Claire Romanov and 2 others are typing...' **/ multipleUsersAbbreviateMany: string; /** * String to use as delimiter to separate multiple users. * @example * ``` * * ``` * would be 'Claire + Chris + Jill are typing...' **/ delimiter: string; } /** * Fluent styles for {@link TypingIndicator}. * * @public */ export declare interface TypingIndicatorStylesProps extends BaseCustomStyles { /** Styles for each typing user's displayName. */ typingUserDisplayName?: IStyle; /** Styles for the typing string. */ typingString?: IStyle; } /** * @public * Callback function run when a message is updated. */ export declare type UpdateMessageCallback = (messageId: string, content: string) => Promise; /** * A custom React hook to simplify the creation of {@link CallAdapter}. * * Similar to {@link createAzureCommunicationCallAdapter}, but takes care of asynchronous * creation of the adapter internally. * * Allows arguments to be undefined so that you can respect the rule-of-hooks and pass in arguments * as they are created. The adapter is only created when all arguments are defined. * * Note that you must memoize the arguments to avoid recreating adapter on each render. * See storybook for typical usage examples. * * @public */ export declare const useAzureCommunicationCallAdapter: (args: Partial, afterCreate?: (adapter: CallAdapter) => Promise, beforeDispose?: (adapter: CallAdapter) => Promise) => CallAdapter | undefined; /** * A custom React hook to simplify the creation of {@link CallWithChatAdapter}. * * Similar to {@link createAzureCommunicationCallWithChatAdapter}, but takes care of asynchronous * creation of the adapter internally. * * Allows arguments to be undefined so that you can respect the rule-of-hooks and pass in arguments * as they are created. The adapter is only created when all arguments are defined. * * Note that you must memoize the arguments to avoid recreating adapter on each render. * See storybook for typical usage examples. * * @public */ export declare const useAzureCommunicationCallWithChatAdapter: (args: Partial, afterCreate?: (adapter: CallWithChatAdapter) => Promise, beforeDispose?: (adapter: CallWithChatAdapter) => Promise) => CallWithChatAdapter | undefined; /** * A custom React hook to simplify the creation of {@link ChatAdapter}. * * Similar to {@link createAzureCommunicationChatAdapter}, but takes care of asynchronous * creation of the adapter internally. * * Allows arguments to be undefined so that you can respect the rule-of-hooks and pass in arguments * as they are created. The adapter is only created when all arguments are defined. * * Note that you must memoize the arguments to avoid recreating adapter on each render. * See storybook for typical usage examples. * * @public */ export declare const useAzureCommunicationChatAdapter: (args: Partial, afterCreate?: (adapter: ChatAdapter) => Promise, beforeDispose?: (adapter: ChatAdapter) => Promise) => ChatAdapter | undefined; /** * Hook to obtain {@link @azure/communication-calling#Call} from the provider. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * you must have previously used the CallProvider with a Call object to use this hook * * @public */ export declare const useCall: () => Call | undefined; /** * Hook to obtain {@link @azure/communication-calling#CallAgent} from the provider. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * @public */ export declare const useCallAgent: () => CallAgent | undefined; /** * Hook to obtain {@link StatefulCallClient} from the provider. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * @public */ export declare const useCallClient: () => StatefulCallClient; /** * Hook to obtain {@link StatefulChatClient} from the provider. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * @public */ export declare const useChatClient: () => StatefulChatClient; /** * Hook to obtain {@link @azure/communication-chat#ChatThreadClient} from the provider. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * @public */ export declare const useChatThreadClient: () => ChatThreadClient; /** * Hook to obtain {@link StatefulDeviceManager} from the provider. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * @public */ export declare const useDeviceManager: () => StatefulDeviceManager | undefined; /** * Primary hook to get all hooks necessary for a React Component from this library. * * To call this hook, the component requires to be wrapped under these providers: * * 1. For chat components: {@link ChatClientProvider} and {@link ChatThreadClientProvider}. * * 2. For calling components: {@link CallClientProvider}, {@link CallAgentProvider} and {@link CallAgentProvider}. * * Most straightforward usage of a components looks like: * * @example * ``` * import { ParticipantList, usePropsFor } from '@azure/communication-react'; * * const App = (): JSX.Element => { * // ... code to setup Providers ... * * return * } * ``` * * @public */ export declare const usePropsFor: JSX.Element>(component: Component, type?: 'calling' | 'chat') => ComponentProps; /** * Hook to obtain a selector for a specified component. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * @public */ export declare const useSelector: (selector: ParamT, selectorProps?: ParamT extends Selector ? Parameters[1] : undefined, type?: 'calling' | 'chat') => ParamT extends Selector ? ReturnType : undefined; /** * Hook to obtain {@link @azure/communication-calling#TeamsCall} from the provider. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * you must have previously used the CallProvider with a TeamsCall object to use this hook * * @public */ export declare const useTeamsCall: () => undefined | TeamsCall; /** * A custom React hook to simplify the creation of {@link TeamsCallAdapter}. * * Similar to {@link createTeamsAzureCommunicationCallAdapter}, but takes care of asynchronous * creation of the adapter internally. * * Allows arguments to be undefined so that you can respect the rule-of-hooks and pass in arguments * as they are created. The adapter is only created when all arguments are defined. * * Note that you must memoize the arguments to avoid recreating adapter on each render. * See storybook for typical usage examples. * * @public */ export declare const useTeamsCallAdapter: (args: Partial, afterCreate?: (adapter: TeamsCallAdapter) => Promise, beforeDispose?: (adapter: TeamsCallAdapter) => Promise) => TeamsCallAdapter | undefined; /** * Hook to obtain {@link @azure/communication-calling#TeamsCallAgent} from the provider. * * Useful when implementing a custom component that utilizes the providers * exported from this library. * * @public */ export declare const useTeamsCallAgent: () => undefined | TeamsCallAgent; /** * React hook to access theme * * @public */ export declare const useTheme: () => Theme; /** * Styles for the control bar inside the VerticalGallery component * * @public */ export declare interface VerticalGalleryControlBarStyles extends BaseCustomStyles { /** * styles for the next button in the VerticalGalleryControlBar */ nextButton?: IStyle; /** * Styles for the previous button in the VerticalGalleryControlBar */ previousButton?: IStyle; /** * Styles for the counter in the VerticalGalleryControlBar */ counter?: IStyle; } /** * Strings for localization of the vertical gallery. * * @public */ export declare interface VerticalGalleryStrings { /** Aria label for the left page navigation button */ leftNavButtonAriaLabel?: string; /** Aria label for the right page navigation button */ rightNavButtonAriaLabel?: string; } /** * Styles for the VerticalGallery component * * @public */ export declare interface VerticalGalleryStyles extends BaseCustomStyles { /** Styles for each video tile in the vertical gallery */ children?: IStyle; /** Styles for the verticalGallery control bar */ controlBar?: VerticalGalleryControlBarStyles; } /** * Contains the attibutes of the blur video background effect * * @public */ export declare interface VideoBackgroundBlurEffect extends BackgroundBlurConfig { /** * Name of effect to blur video background effect */ effectName: 'blur'; } /** * Contains the attibutes of a selected video background effect * * @public */ export declare type VideoBackgroundEffect = VideoBackgroundNoEffect | VideoBackgroundBlurEffect | VideoBackgroundReplacementEffect; /** * Dependency type to be injected for video background effects * * @public */ export declare type VideoBackgroundEffectsDependency = { createBackgroundBlurEffect: (config?: BackgroundBlurConfig) => BackgroundBlurEffect; createBackgroundReplacementEffect: (config: BackgroundReplacementConfig) => BackgroundReplacementEffect; }; /** * Contains the attibutes of a background image like url, name etc. * * @public */ export declare interface VideoBackgroundImage { /** * key for unique identification of the custom background */ key: string; /** * URL of the uploaded background image. */ url: string; /** * Image name to be displayed. */ tooltipText?: string; } /** * Contains the attibutes to remove video background effect * * @public */ export declare interface VideoBackgroundNoEffect { /** * Name of effect to remove video background effect */ effectName: 'none'; } /** * Contains the attibutes of a selected replacement video background effect * * @public */ export declare interface VideoBackgroundReplacementEffect extends BackgroundReplacementConfig { /** * Name of effect to replace video background effect */ effectName: 'replacement'; /** * key for unique identification of the custom background */ key?: string; } /** * VideoGallery represents a layout of video tiles for a specific call. * It displays a {@link VideoTile} for the local user as well as for each remote participant who has joined the call. * * @public */ export declare const VideoGallery: (props: VideoGalleryProps) => JSX.Element; /** * @public */ export declare type VideoGalleryLayout = 'default' | 'floatingLocalVideo' | 'speaker' | 'togetherMode' | 'focusedContent'; /** * The state of the local participant in the {@link VideoGallery}. * * @public */ export declare interface VideoGalleryLocalParticipant extends VideoGalleryParticipant { /** Whether local participant is raised a hand */ raisedHand?: RaisedHand; /** * Whether local participant has reacted * * */ reaction?: Reaction; /** Video stream of shared screen */ screenShareStream?: VideoGalleryStream; } /** * The state of a participant in the {@link VideoGallery}. * * @public */ export declare type VideoGalleryParticipant = { /** User ID of participant */ userId: string; /** Whether participant is muted */ isMuted?: boolean; /** Display name of participant */ displayName?: string; /** Video stream of participant */ videoStream?: VideoGalleryStream; /** Whether participant is screen sharing or not */ isScreenSharingOn?: boolean; /** Whether participant is spotlighted **/ spotlight?: Spotlight; /** Media audio video access states **/ mediaAccess?: MediaAccess; /** Attendee can have audio be forbidden **/ canAudioBeForbidden?: boolean; /** Attendee can have video be forbidden **/ canVideoBeForbidden?: boolean; }; /** * Props for {@link VideoGallery}. * * @public */ export declare interface VideoGalleryProps { /** * Allows users to pass an object containing custom CSS styles for the gallery container. * * @Example * ``` * * ``` */ styles?: VideoGalleryStyles; /** Layout of the video tiles. */ layout?: VideoGalleryLayout; /** Local video particpant */ localParticipant: VideoGalleryLocalParticipant; /** List of remote video particpants */ remoteParticipants?: VideoGalleryRemoteParticipant[]; /** List of dominant speaker userIds in the order of their dominance. 0th index is the most dominant. */ dominantSpeakers?: string[]; /** Local video view options */ localVideoViewOptions?: VideoStreamOptions; /** Remote videos view options */ remoteVideoViewOptions?: VideoStreamOptions; /** Callback to create the local video stream view */ onCreateLocalStreamView?: (options?: VideoStreamOptions) => Promise; /** Callback to dispose of the local video stream view */ onDisposeLocalStreamView?: () => void; /** Callback to render the local video tile*/ onRenderLocalVideoTile?: (localParticipant: VideoGalleryLocalParticipant) => JSX.Element; /** Callback to create a remote video stream view */ onCreateRemoteStreamView?: (userId: string, options?: VideoStreamOptions) => Promise; /** Callback to render a remote video tile */ onRenderRemoteVideoTile?: (remoteParticipant: VideoGalleryRemoteParticipant) => JSX.Element; /** * @deprecated use {@link onDisposeRemoteVideoStreamView} and {@link onDisposeRemoteScreenShareStreamView} instead * * Callback to dispose a remote video stream view */ onDisposeRemoteStreamView?: (userId: string) => Promise; /** Callback to dispose a remote video stream view */ onDisposeRemoteVideoStreamView?: (userId: string) => Promise; /** Callback to dispose a remote screen share stream view */ onDisposeRemoteScreenShareStreamView?: (userId: string) => Promise; /** Callback to dispose a local screen share stream view */ onDisposeLocalScreenShareStreamView?: () => Promise; /** Callback to render a participant avatar */ onRenderAvatar?: OnRenderAvatarCallback; /** * Whether to display the local video camera switcher button */ showCameraSwitcherInLocalPreview?: boolean; /** * Whether to display a mute icon beside the user's display name. * @defaultValue `true` */ showMuteIndicator?: boolean; /** Optional strings to override in component */ strings?: Partial; /** * Maximum number of participant remote video streams that is rendered. * @defaultValue 4 */ maxRemoteVideoStreams?: number; /** * Camera control information for button to switch cameras. */ localVideoCameraCycleButtonProps?: LocalVideoCameraCycleButtonProps; /** * List of pinned participant userIds. */ pinnedParticipants?: string[]; /** * This callback will be called when a participant video tile is pinned. */ onPinParticipant?: (userId: string) => void; /** * This callback will be called when a participant video tile is un-pinned. */ onUnpinParticipant?: (userId: string) => void; /** * List of spotlighted participant userIds. */ spotlightedParticipants?: string[]; /** * This callback is to start spotlight for local participant video tile. */ onStartLocalSpotlight?: () => Promise; /** * This callback is to stop spotlight for local participant video tile. */ onStartRemoteSpotlight?: (userIds: string[]) => Promise; /** * This callback is to start spotlight for remote participant video tiles. */ onStopLocalSpotlight?: () => Promise; /** * This callback is to stop spotlight for remote participant video tiles. */ onStopRemoteSpotlight?: (userIds: string[]) => Promise; /** * Maximum participants that can be spotlighted */ maxParticipantsToSpotlight?: number; /** * Options for showing the remote video tile menu. * * @defaultValue \{ kind: 'contextual' \} */ remoteVideoTileMenu?: false | VideoTileContextualMenuProps | VideoTileDrawerMenuProps; /** * Determines the layout of the overflowGallery inside the VideoGallery. * @defaultValue 'horizontalBottom' */ overflowGalleryPosition?: OverflowGalleryPosition; /** * Determines the aspect ratio of local video tile in the video gallery. * @remarks 'followDeviceOrientation' will be responsive to the screen orientation and will change between 9:16 (portrait) and * 16:9 (landscape) aspect ratios. * @defaultValue 'followDeviceOrientation' */ localVideoTileSize?: LocalVideoTileSize; /** * Reaction resources for like, heart, laugh, applause and surprised. */ reactionResources?: ReactionResources; /** * Additional Options for Video Tiles */ videoTilesOptions?: VideoTilesOptions; /** * This callback is to mute a remote participant */ onMuteParticipant?: (userId: string) => Promise; /** * Indicates if the local participant can start together mode */ startTogetherModeEnabled?: boolean; /** * Indicates if together mode is active */ isTogetherModeActive?: boolean; /** * Callback to create a together mode stream view */ onCreateTogetherModeStreamView?: (options?: TogetherModeStreamOptions) => Promise; /** * This callback is to start together mode */ onStartTogetherMode?: () => Promise; /** * This callback is to set the scene size for together mode */ onSetTogetherModeSceneSize?: (width: number, height: number) => void; /** * Together mode video streams */ togetherModeStreams?: VideoGalleryTogetherModeStreams; /** * Seating position of participants in together mode */ togetherModeSeatingCoordinates?: VideoGalleryTogetherModeParticipantPosition; /** * Callback to dispose a together mode stream view */ onDisposeTogetherModeStreamView?: () => Promise; /** * This callback is to forbid audio for remote participant(s) */ onForbidAudio?: (userIds: string[]) => Promise; /** * This callback is to permit audio for remote participant(s) */ onPermitAudio?: (userIds: string[]) => Promise; /** * This callback is to forbid video for remote participant(s) */ onForbidVideo?: (userIds: string[]) => Promise; /** * This callback is to permit video for remote participant(s) */ onPermitVideo?: (userIds: string[]) => Promise; /** * Controls the view of the local screenshare stream in the gallery */ localScreenShareView?: LocalScreenShareView; } /** * The state of a remote participant in the {@link VideoGallery}. * * @public */ export declare interface VideoGalleryRemoteParticipant extends VideoGalleryParticipant { /** Whether participant is speaking or not */ isSpeaking?: boolean; /** Video stream of shared screen */ screenShareStream?: VideoGalleryStream; /** * @public * The connection state of the participant. For example, 'Hold', 'Connecting' etc. */ state?: ParticipantState; /** Whether participant is raised a hand */ raisedHand?: RaisedHand; /** * Whether participant has reacted * * @public * */ reaction?: Reaction; /** Media audio video access states **/ mediaAccess?: MediaAccess; } /** * Selector type for {@link VideoGallery} component. * * @public */ export declare type VideoGallerySelector = (state: CallClientState, props: CallingBaseSelectorProps) => { screenShareParticipant?: VideoGalleryRemoteParticipant; localParticipant: VideoGalleryLocalParticipant; remoteParticipants: VideoGalleryRemoteParticipant[]; dominantSpeakers?: string[]; optimalVideoCount?: number; spotlightedParticipants?: string[]; maxParticipantsToSpotlight?: number; isTogetherModeActive?: boolean; startTogetherModeEnabled?: boolean; togetherModeStreams?: VideoGalleryTogetherModeStreams; togetherModeSeatingCoordinates?: VideoGalleryTogetherModeParticipantPosition; }; /** * Video stream of a participant in {@link VideoGallery}. * * @public */ export declare interface VideoGalleryStream { /** ID of the video stream */ id?: number; /** Whether the video stream is available or not */ isAvailable?: boolean; /** Whether the video stream is receiving data or not */ isReceiving?: boolean; /** Whether the video stream is mirrored or not */ isMirrored?: boolean; /** Render element of the video stream */ renderElement?: HTMLElement; /** Scaling mode of the video stream */ scalingMode?: ViewScalingMode; /** Stream Size of the video stream */ streamSize?: { width: number; height: number; }; } /** * All strings that may be shown on the UI in the {@link VideoGallery}. * * @public */ export declare interface VideoGalleryStrings { /** String to notify that local user is sharing their screen */ screenIsBeingSharedMessage: string; /** String to show when remote screen share stream is loading */ screenShareLoadingMessage: string; /** String to show when local screen share stream is loading */ localScreenShareLoadingMessage: string; /** String for local video label. Default is "You" */ localVideoLabel: string; /** String for local video camera switcher */ localVideoCameraSwitcherLabel: string; /** String for announcing the local video tile can be moved by keyboard controls */ localVideoMovementLabel: string; /** Aria-label for announcing the local video tile can be moved by keyboard controls */ localVideoMovementAriaLabel: string; /** String for announcing the selected camera */ localVideoSelectedDescription: string; /** placeholder text for participants who does not have a display name*/ displayNamePlaceholder: string; /** Menu text shown in Video Tile contextual menu for setting a remote participants video to fit in frame */ fitRemoteParticipantToFrame: string; /** Menu text shown in Video Tile contextual menu for setting a remote participants video to fill the frame */ fillRemoteParticipantFrame: string; /** Menu text shown in Video Tile contextual menu for pinning a remote participant's video tile */ pinParticipantForMe: string; /** Menu text shown in Video Tile contextual menu for unpinning a remote participant's video tile */ unpinParticipantForMe: string; /** Aria label for pin participant menu item of remote participant's video tile */ pinParticipantMenuItemAriaLabel: string; /** Aria label for unpin participant menu item of remote participant's video tile */ unpinParticipantMenuItemAriaLabel: string; /** Aria label to announce when remote participant's video tile is pinned */ pinnedParticipantAnnouncementAriaLabel: string; /** Aria label to announce when remote participant's video tile is unpinned */ unpinnedParticipantAnnouncementAriaLabel: string; /** Menu text shown in Video Tile contextual menu to start spotlight on participant's video tile */ startSpotlightVideoTileMenuLabel: string; /** Menu text shown in Video Tile contextual menu to add spotlight to participant's video tile */ addSpotlightVideoTileMenuLabel: string; /** Menu title for start spotlight menu item when spotlight limit is reached */ spotlightLimitReachedMenuTitle: string; /** Menu text shown in Video Tile contextual menu to stop spotlight on participant's video tile */ stopSpotlightVideoTileMenuLabel: string; /** Menu text shown in Video Tile contextual menu to stop spotlight on local user's video tile */ stopSpotlightOnSelfVideoTileMenuLabel: string; /** String for the attendee role */ attendeeRole: string; /** Menu text shown in Video Tile contextual menu to mute a remote participant */ muteParticipantMenuItemLabel: string; /** Text shown when waiting for others to join the call */ waitingScreenText: string; } /** * {@link VideoGallery} Component Styles. * @public */ export declare interface VideoGalleryStyles extends BaseCustomStyles { /** Styles for the grid layout */ gridLayout?: GridLayoutStyles; /** Styles for the horizontal gallery */ horizontalGallery?: HorizontalGalleryStyles; /** Styles for the local video */ localVideo?: IStyle; /** Styles for the vertical gallery */ verticalGallery?: VerticalGalleryStyles; } /** * Interface representing the position of a participant in Together Mode. * @public */ export declare type VideoGalleryTogetherModeParticipantPosition = Record; /** * Interface representing the seating information in Together Mode. * @public */ export declare interface VideoGalleryTogetherModeSeatingInfo { /** * The top left offset from the top of the together mode view. */ top: number; /** * The left offset position from the left of the together mode view. */ left: number; /** *The width of the seating area */ width: number; /** * The height of the seating area. */ height: number; } /** * Interface representing the streams in Together Mode. * @public */ export declare interface VideoGalleryTogetherModeStreams { /** * The main video stream in Together Mode. */ mainVideoStream?: VideoGalleryStream; } /** * Options to control how video streams are rendered. * * @public */ export declare interface VideoStreamOptions { /** Whether the video stream is mirrored or not */ isMirrored?: boolean; /** Scaling mode. It can be `Stretch`, `Crop` or `Fit` */ scalingMode?: ViewScalingMode; } /** * State only version of {@link @azure/communication-calling#VideoStreamRendererView}. This property is added to the state exposed * by {@link StatefulCallClient} by {@link StatefulCallClient.createView} and removed by {@link StatefulCallClient.disposeView}. * * @public */ export declare interface VideoStreamRendererViewState { /** * Proxy of {@link @azure/communication-calling#VideoStreamRendererView.scalingMode}. */ scalingMode: ScalingMode; /** * Proxy of {@link @azure/communication-calling#VideoStreamRendererView.isMirrored}. */ isMirrored: boolean; /** * Proxy of {@link @azure/communication-calling#VideoStreamRendererView.target}. */ target: HTMLElement; } /** * A component to render the video stream for a single call participant. * * Use with {@link GridLayout} in a {@link VideoGallery}. * * @public */ export declare const VideoTile: (props: VideoTileProps) => JSX.Element; /** * Properties for showing contextual menu for remote {@link VideoTile} components in {@link VideoGallery}. * * @public */ export declare interface VideoTileContextualMenuProps { /** * The menu property kind */ kind: 'contextual'; } /** * Properties for showing drawer menu on remote {@link VideoTile} long touch in {@link VideoGallery}. * * @public */ export declare interface VideoTileDrawerMenuProps { /** * The menu property kind */ kind: 'drawer'; /** * The optional id property provided on an element that the drawer menu should render within when a * remote participant video tile Drawer is shown. If an id is not provided, then a drawer menu will * render within the VideoGallery component. */ hostId?: string; } /** * Props for {@link VideoTile}. * * @public */ export declare interface VideoTileProps { /** React Child components. Child Components will show as overlay component in the VideoTile. */ children?: React_2.ReactNode; /** * Allows users to pass in an object contains custom CSS styles. * @Example * ``` * * ``` */ styles?: VideoTileStylesProps; /** user id for the VideoTile placeholder. */ userId?: string; /** Component with the video stream. */ renderElement?: JSX.Element | null; /** * Overlay component responsible for rendering reaction */ overlay?: JSX.Element | null; /** Determines if the video is mirrored or not. */ isMirrored?: boolean; /** Custom render Component function for no video is available. Render a Persona Icon if undefined. */ onRenderPlaceholder?: OnRenderAvatarCallback; /** * Show label on the VideoTile * @defaultValue true */ showLabel?: boolean; /** * Show label background on the VideoTile * @defaultValue false */ alwaysShowLabelBackground?: boolean; /** * Whether to display a mute icon beside the user's display name. * @defaultValue true */ showMuteIndicator?: boolean; /** * Whether the video is muted or not. */ isMuted?: boolean; /** * If true, the video tile will show the pin icon. */ isPinned?: boolean; /** * Display Name of the Participant to be shown in the label. * @remarks `displayName` is used to generate avatar initials if `initialsName` is not provided. */ displayName?: string; /** * Name of the participant used to generate initials. For example, a name `John Doe` will display `JD` as initials. * @remarks `displayName` is used if this property is not specified. */ initialsName?: string; /** * Minimum size of the persona avatar in px. * The persona avatar is the default placeholder shown when no video stream is available. * For more information see https://developer.microsoft.com/en-us/fluentui#/controls/web/persona * @defaultValue 32px */ personaMinSize?: number; /** * Maximum size of the personal avatar in px. * The persona avatar is the default placeholder shown when no video stream is available. * For more information see https://developer.microsoft.com/en-us/fluentui#/controls/web/persona * @defaultValue 100px */ personaMaxSize?: number; /** Optional property to set the aria label of the video tile if there is no available stream. */ noVideoAvailableAriaLabel?: string; /** Whether the participant in the videoTile is speaking. Shows a speaking indicator (border). */ isSpeaking?: boolean; /** Whether the participant is raised hand. Show a indicator (border) and icon with order */ raisedHand?: RaisedHand; /** * The call connection state of the participant. * For example, `Hold` means the participant is on hold. */ participantState?: ParticipantState; /** * Strings to override in the component. */ strings?: VideoTileStrings; /** * Display custom menu items in the VideoTile's contextual menu. * Uses Fluent UI ContextualMenu. * An ellipses icon will be displayed to open the contextual menu if this prop is defined. */ contextualMenu?: IContextualMenuProps; /** * Callback triggered by video tile on touch and hold. */ onLongTouch?: () => void; /** * If true, the video tile will show the spotlighted icon. */ isSpotlighted?: boolean; /** * Reactions resources' url and metadata. */ reactionResources?: ReactionResources; /** * Media access state of the participant. */ mediaAccess?: MediaAccess; } /** * Options that apply to all Video Tiles in the {@link VideoGallery} * * @public */ export declare interface VideoTilesOptions { /** * Whether to always show the label background for the video tile */ alwaysShowLabelBackground?: boolean; } /** * Strings of {@link VideoTile} that can be overridden. * @public */ export declare interface VideoTileStrings { /** Aria label for announcing the remote video tile drawer menu */ moreOptionsButtonAriaLabel: string; /** String for displaying the Ringing of the remote participant */ participantStateRinging: string; /** String for displaying the Hold state of the remote participant */ participantStateHold: string; /** String for the announcement of the muted state of the participant when muted */ moreOptionsParticipantMutedStateMutedAriaLabel: string; /** String for the announcement of the unmuted state of the participant when unmuted */ moreOptionsParticipantMutedStateUnmutedAriaLabel: string; /** String for the announcement of the participant has their hand raised */ moreOptionsParticipantHandRaisedAriaLabel: string; /** String for the announcement of whether the participant is speaking or not */ moreOptionsParticipantIsSpeakingAriaLabel: string; /** String for the announcement of whether the participant microphone disabled */ moreOptionsParticipantMicDisabledAriaLabel: string; /** String for the announcement of whether the participant camera disabled */ moreOptionsParticipantCameraDisabledAriaLabel: string; } /** * Fluent styles for {@link VideoTile}. * * @public */ export declare interface VideoTileStylesProps extends BaseCustomStyles { /** Styles for video container. */ videoContainer?: IStyle; /** Styles for container overlayed on the video container. */ overlayContainer?: IStyle; /** Styles for displayName on the video container. */ displayNameContainer?: IStyle; } /** * Scaling mode of a {@link VideoGalleryStream}. * * @public */ export declare type ViewScalingMode = 'Stretch' | 'Crop' | 'Fit'; export { }