import { PublishOptions, SubscribeOptions } from '../legacy/AgoraRtmBase'; import { RTMClientEventMap } from './RTMEvents'; import { RTMHistory } from './RTMHistory'; import { RTMLock } from './RTMLock'; import { RTMPresence } from './RTMPresence'; import { RTMStorage } from './RTMStorage'; import { RTMStreamChannel } from './RTMStreamChannel'; export interface BaseResponse { timestamp: number; } export type ErrorInfo = { error: boolean; reason: string; operation: string; errorCode: number; }; export type RTMOperationResponse = BaseResponse & { channelName: string; }; export type SubscribeResponse = RTMOperationResponse; export type UnsubscribeResponse = RTMOperationResponse; export type LoginResponse = BaseResponse; export type LogoutResponse = BaseResponse; export type PublishResponse = RTMOperationResponse; export type RenewTokenResponse = BaseResponse; export type UpdateConfigResponse = BaseResponse; export interface LoginOptions { token?: string; } export interface RenewTokenOptions { channelName?: string; } export abstract class RTMClient { abstract presence: RTMPresence; abstract history: RTMHistory; abstract storage: RTMStorage; abstract lock: RTMLock; abstract addEventListener( eventType: EventType, listener: RTMClientEventMap[EventType] ): void; abstract removeEventListener( eventType: EventType, listener?: RTMClientEventMap[EventType] ): void; abstract removeAllListeners( eventType?: EventType ): void; abstract login(options?: LoginOptions): Promise; abstract logout(): Promise; abstract release(): number; abstract publish( channelName: string, message: string | Uint8Array, options?: PublishOptions ): Promise; abstract subscribe( channelName: string, options?: SubscribeOptions ): Promise; abstract unsubscribe(channelName: string): Promise; abstract createStreamChannel(channelName: string): Promise; abstract renewToken( token: string, options?: RenewTokenOptions ): Promise; abstract setParameters(parameters: string): number; }