@azure/communication-signaling
Version:
Azure Communication Signaling Client
120 lines (119 loc) • 6.58 kB
TypeScript
import { ChatEventId, BaseChatEvent, BaseChatMessageEvent, ChatMessageReceivedEvent, ChatMessageEditedEvent, ChatMessageDeletedEvent, ReadReceiptReceivedEvent, TypingIndicatorReceivedEvent, BaseChatThreadEvent, ChatParticipant, ChatAttachment, ChatAttachmentType, ChatThreadProperties, ChatThreadCreatedEvent, ChatThreadDeletedEvent, ChatThreadPropertiesUpdatedEvent, ParticipantsAddedEvent, ParticipantsRemovedEvent, ChatRetentionPolicy, NoneRetentionPolicy, ThreadCreationDateRetentionPolicy } from "./events/chat";
import { CommunicationIdentifier, CommunicationUserIdentifier, PhoneNumberIdentifier, MicrosoftTeamsUserIdentifier, TeamsExtensionUserIdentifier, UnknownIdentifier, CommunicationIdentifierKind, CommunicationUserKind, PhoneNumberKind, MicrosoftTeamsUserKind, TeamsExtensionUserKind, MicrosoftTeamsAppKind, MicrosoftTeamsAppIdentifier, UnknownIdentifierKind } from "./events/identifierModels";
import { AzureLogger } from "@azure/logger";
import { AbortSignalLike } from "@azure/abort-controller";
import { AccessToken } from "@azure/core-auth";
import { AdditionalPolicyConfig } from "@azure/core-client";
import { UserAgentPolicyOptions } from "@azure/core-rest-pipeline";
export declare enum ConnectionState {
Unknown = 0,
Connected = 2,
Disconnected = 3,
Switching = 9
}
export interface SignalingClientOptions {
registrationTimeInMs?: number;
resourceEndpoint?: string;
gatewayApiVersion?: string;
additionalPolicies?: AdditionalPolicyConfig[];
userAgentOptions?: UserAgentPolicyOptions;
}
export { ChatEventId, BaseChatEvent, BaseChatMessageEvent, ChatAttachment, ChatAttachmentType, ChatMessageReceivedEvent, ChatMessageEditedEvent, ChatMessageDeletedEvent, ReadReceiptReceivedEvent, TypingIndicatorReceivedEvent, BaseChatThreadEvent, ChatParticipant, ChatThreadProperties, ChatThreadCreatedEvent, ChatThreadDeletedEvent, ChatThreadPropertiesUpdatedEvent, ParticipantsAddedEvent, ParticipantsRemovedEvent, CommunicationIdentifier, CommunicationUserIdentifier, PhoneNumberIdentifier, MicrosoftTeamsUserIdentifier, TeamsExtensionUserIdentifier, UnknownIdentifier, CommunicationIdentifierKind, CommunicationUserKind, PhoneNumberKind, MicrosoftTeamsUserKind, TeamsExtensionUserKind, MicrosoftTeamsAppKind, MicrosoftTeamsAppIdentifier, UnknownIdentifierKind, ChatRetentionPolicy, NoneRetentionPolicy, ThreadCreationDateRetentionPolicy, };
/**
* Options for `CommunicationTokenCredential`'s `getToken` function.
*/
export interface CommunicationGetTokenOptions {
/**
* An implementation of `AbortSignalLike` to cancel the operation.
*/
abortSignal?: AbortSignalLike;
}
/**
* The Azure Communication Services token credential.
*/
export interface CommunicationTokenCredential {
/**
* Gets an `AccessToken` for the user. Throws if already disposed.
* @param options - Additional options.
*/
getToken(options?: CommunicationGetTokenOptions): Promise<AccessToken>;
}
export interface SignalingClient {
/**
* Start the realtime connection.
*/
start(): void;
/**
* Stop the realtime connection and unsubscribe all event handlers.
*/
stop(isTokenExpired?: boolean): void;
/**
* Listen to connectionChanged events.
*/
on(event: "connectionChanged", listener: (state: ConnectionState) => void): void;
/**
* Listen to chatMessageReceived events.
*/
on(event: "chatMessageReceived", listener: (payload: ChatMessageReceivedEvent) => void): void;
/**
* Listen to typingIndicatorReceived events.
*/
on(event: "typingIndicatorReceived", listener: (payload: TypingIndicatorReceivedEvent) => void): void;
/**
* Listen to readReceiptReceived events.
*/
on(event: "readReceiptReceived", listener: (payload: ReadReceiptReceivedEvent) => void): void;
/**
* Listen to chatMessageEdited events.
*/
on(event: "chatMessageEdited", listener: (payload: ChatMessageEditedEvent) => void): void;
/**
* Listen to chatMessageDeleted events.
*/
on(event: "chatMessageDeleted", listener: (payload: ChatMessageDeletedEvent) => void): void;
/**
* Listen to chatThreadCreated events.
*/
on(event: "chatThreadCreated", listener: (payload: ChatThreadCreatedEvent) => void): void;
/**
* Listen to chatThreadPropertiesUpdated events.
*/
on(event: "chatThreadPropertiesUpdated", listener: (payload: ChatThreadPropertiesUpdatedEvent) => void): void;
/**
* Listen to chatThreadDeleted events.
*/
on(event: "chatThreadDeleted", listener: (payload: ChatThreadDeletedEvent) => void): void;
/**
* Listen to participantsAdded events.
*/
on(event: "participantsAdded", listener: (payload: ParticipantsAddedEvent) => void): void;
/**
* Listen to participantsRemoved events.
*/
on(event: "participantsRemoved", listener: (payload: ParticipantsRemovedEvent) => void): void;
}
export declare class CommunicationSignalingClient implements SignalingClient {
private readonly credential;
private readonly logger;
private readonly options?;
private readonly trouter;
private config;
private stateChangedListener;
private tokenFetchRetries;
private resourceEndpoint;
private gatewayApiVersion;
constructor(credential: CommunicationTokenCredential, logger: AzureLogger, options?: SignalingClientOptions);
start(): Promise<void>;
stop(isTokenExpired?: boolean): Promise<void>;
on(event: "connectionChanged", listener: (state: ConnectionState) => void): void;
on(event: "chatMessageReceived", listener: (payload: ChatMessageReceivedEvent) => void): void;
on(event: "typingIndicatorReceived", listener: (payload: TypingIndicatorReceivedEvent) => void): void;
on(event: "readReceiptReceived", listener: (payload: ReadReceiptReceivedEvent) => void): void;
on(event: "chatMessageEdited", listener: (payload: ChatMessageEditedEvent) => void): void;
on(event: "chatMessageDeleted", listener: (payload: ChatMessageDeletedEvent) => void): void;
on(event: "chatThreadCreated", listener: (payload: ChatThreadCreatedEvent) => void): void;
on(event: "chatThreadPropertiesUpdated", listener: (payload: ChatThreadPropertiesUpdatedEvent) => void): void;
on(event: "chatThreadDeleted", listener: (payload: ChatThreadDeletedEvent) => void): void;
on(event: "participantsAdded", listener: (payload: ParticipantsAddedEvent) => void): void;
on(event: "participantsRemoved", listener: (payload: ParticipantsRemovedEvent) => void): void;
}