import RingCentral from "@rc-ex/core"; import { RestMethod, RestRequestConfig, RestResponse } from "@rc-ex/core/types"; import WS from "isomorphic-ws"; //#region src/types.d.ts interface WsToken { uri: string; ws_access_token: string; expires_in: number; } type CheckInterval = (retriesAttempted: number) => number; interface WebSocketOptions { restOverWebSocket?: boolean; debugMode?: boolean; autoRecover?: { enabled: boolean; checkInterval?: CheckInterval; pingServerInterval?: number; }; wscToken?: string; } interface WsgEvent { data: string; } interface Wsc { token: string; sequence: number; } interface WsgMeta { type: "ClientRequest" | "ServerNotification" | "Error" | "ConnectionDetails" | "Heartbeat"; messageId: string; status: number; headers: { [key: string]: string; }; wsc?: Wsc; } interface WsgError { errorCode: string; message: string; } interface ConnectionDetails { creationTime: string; maxConnectionsPerSession: number; recoveryBufferSize: number; recoveryTimeout: number; idleTimeout: number; absoluteTimeout: number; maxActiveRequests: number; recoveryState?: "Successful" | "Failed"; recoveryErrorCode?: string; } interface WebSocketExtensionInterface { options: WebSocketOptions; subscription?: SubscriptionInterface; ws: WS; wsToken?: WsToken; rc: RingCentral; request: (method: RestMethod, endpoint: string, content?: {}, queryParams?: {}, config?: RestRequestConfig) => Promise>; } interface SubscriptionInterface { eventFilters: string[]; } //#endregion export { CheckInterval, ConnectionDetails, SubscriptionInterface, WebSocketExtensionInterface, WebSocketOptions, WsToken, Wsc, WsgError, WsgEvent, WsgMeta };