import { ConfigurationChangeEvent, ValmConfiguration } from '../../types'; import { AudioEvents, VideoEvents } from '../../media-stream'; import { RecordingEvents } from '../../recording'; import { ScreenShareEvents } from '../../screen-share'; import { TranscriptionEvents } from '../../transcription'; import { TypedEventEmitter } from '../../utils'; export type Constructor = new (...args: any[]) => T; export interface BaseEvents extends Record void> { configurationChanged: (event: ConfigurationChangeEvent) => void; configReset: (data: { oldConfig: ValmConfiguration; newConfig: ValmConfiguration; }) => void; configImported: (data: { oldConfig: ValmConfiguration; newConfig: ValmConfiguration; }) => void; [key: `${string}ConfigChanged`]: (event: ConfigurationChangeEvent) => void; } type AllEvents = VideoEvents & AudioEvents & RecordingEvents & BaseEvents & ScreenShareEvents & TranscriptionEvents; export declare class BaseConfigurationService extends TypedEventEmitter { protected config: Record; protected validators: Map boolean>; private _defaultConfigCache; constructor(initialConfig?: Record); protected getCachedDefaultConfig(): Record; protected getDefaultConfig(): Record; protected setupValidators(): void; protected validateAndSet(path: string, value: any): void; protected emitChange(section: string, property: string, oldValue: T, newValue: T): void; protected deepClone(obj: T): T; protected deepMerge(target: any, source: any): any; } export {};