import type { IssueDetectorResult, NetworkScores, StatsReportItem } from 'webrtc-issue-detector'; import type { CLIENT_EVENTS, INTERNAL_CLIENT_EVENTS } from '../constants/events'; import type { InconsistencyType } from '../engine/handlers/ChannelStateSyncEventHandler/types'; import type Peer from '../engine/Peer'; import type { ActivityConfirmationRequiredPayload, AvailableMediaDevices, ChannelEvent, LogLevel, LogMessageHandler, PeerGroup, Role, TrackLabel } from './common'; import type { BaseTrack, InitEffectsSDKParams, Track } from './media'; export type IssuesHandler = (issues: IssueDetectorResult) => void; export type StatsHandler = (stats: StatsReportItem[]) => void; export type NetworkScoresUpdatedHandler = (networkScores: NetworkScores) => void; export interface CreateIssueDetectorParams { disableWid: boolean; onIssues?: IssuesHandler; onNetworkScoresUpdated?: NetworkScoresUpdatedHandler; ignoreSSRCList?: number[]; } export interface CreateMediaParams { effectsSDKParams?: InitEffectsSDKParams; } export interface CreateMediaStreamTrackManagerParams { logLevel?: LogLevel; onLogMessage?: LogMessageHandler; sendAnalytics: boolean; } export interface ConnectParams { channelId: string; role: Role; token: string; isP2pCall?: boolean; } export interface ChannelStateInconsistentPayload { type: InconsistencyType; peerId?: string; producerId?: string; consumerId?: string; } export interface ProducePermissionsChangedPayload { labels: TrackLabel[]; } export interface GroupsChangedPayload { groups: PeerGroup[]; } export interface ClientObserverEvents { [CLIENT_EVENTS.channelEvent]: [ChannelEvent]; [CLIENT_EVENTS.peerJoined]: [Peer]; [CLIENT_EVENTS.peerLeft]: [peerId: string]; [CLIENT_EVENTS.activityConfirmationRequired]: [ActivityConfirmationRequiredPayload]; [CLIENT_EVENTS.activityConfirmationAcquired]: [ChannelEvent]; [CLIENT_EVENTS.activityConfirmationExpired]: [ChannelEvent]; [CLIENT_EVENTS.channelRejoinRequired]: []; [CLIENT_EVENTS.devicesListUpdated]: [AvailableMediaDevices]; [CLIENT_EVENTS.transportConnectionTimeout]: [{ reason: 'ice' | 'dtls'; direction: 'receive' | 'send'; }]; [CLIENT_EVENTS.trackForceClosed]: [{ label: TrackLabel; }]; [CLIENT_EVENTS.trackFailed]: [{ label: TrackLabel; }]; [CLIENT_EVENTS.activeSpeakerChanged]: [{ peer?: Peer; }]; [CLIENT_EVENTS.connectionLost]: []; [CLIENT_EVENTS.connectionRestored]: []; [CLIENT_EVENTS.forcedDisconnect]: []; [CLIENT_EVENTS.rejectUnauthorized]: []; [CLIENT_EVENTS.channelStateInconsistent]: [ChannelStateInconsistentPayload]; [CLIENT_EVENTS.denoiserInitializing]: [boolean]; [CLIENT_EVENTS.denoiserEnabled]: [{ type: string; }]; [CLIENT_EVENTS.denoiserDisabled]: [{ type: string; }]; [CLIENT_EVENTS.denoiserFallback]: []; [CLIENT_EVENTS.denoiserFailed]: [{ cause: string; error?: unknown; }]; [CLIENT_EVENTS.channelStateSynced]: []; } export interface InternalObserverEvents { [INTERNAL_CLIENT_EVENTS.trackProduced]: [Track | BaseTrack]; [INTERNAL_CLIENT_EVENTS.trackUnproduced]: [Track | BaseTrack]; [INTERNAL_CLIENT_EVENTS.trackPaused]: [Track | BaseTrack]; [INTERNAL_CLIENT_EVENTS.trackResumed]: [Track | BaseTrack]; [INTERNAL_CLIENT_EVENTS.trackClosed]: [Track | BaseTrack]; [INTERNAL_CLIENT_EVENTS.trackReopened]: [Track | BaseTrack]; [INTERNAL_CLIENT_EVENTS.trackFailed]: [Track | BaseTrack]; }