import Destroyable from '../destroyable/Destroyable'; import EventObserver from '../eventobserver/EventObserver'; import EventReporter from '../eventreporter/EventReporter'; import Logger from '../logger/Logger'; import MeetingSessionConfiguration from '../meetingsession/MeetingSessionConfiguration'; import AudioVideoEventAttributes from './AudioVideoEventAttributes'; import DeviceEventAttributes from './DeviceEventAttributes'; import EventController from './EventController'; import EventName from './EventName'; import VideoFXEventAttributes from './VideoFXEventAttributes'; export default class DefaultEventController implements EventController, Destroyable { private meetingHistoryStates; private observerSet; private logger; private configuration; private _eventReporter; private userAgentParser; private parserResult; private highEntropyUpdated; destroyed: boolean; constructor(configuration: MeetingSessionConfiguration, logger: Logger, eventReporter?: EventReporter); private updateAttributesWithHighEntropyValues; addObserver(observer: EventObserver): void; removeObserver(observer: EventObserver): void; private forEachObserver; publishEvent(name: EventName, attributes?: AudioVideoEventAttributes | DeviceEventAttributes | VideoFXEventAttributes): Promise; private reportEvent; private setupEventReporter; private getAttributes; get eventReporter(): EventReporter; /** * Clean up this instance and resources that it created. * * After calling `destroy`, internal fields like `eventReporter` will be unavailable. */ destroy(): Promise; }