import { BehaviorSubject, Observable } from 'rxjs'; import { NotificationService } from '../notification.service'; import { ChatClientService } from '../chat-client.service'; import { TranscoderService } from './transcoder.service'; import { MediaRecording } from '../types'; export type MediaRecorderConfig = Omit & Required>; export declare enum MediaRecordingState { PAUSED = "paused", RECORDING = "recording", STOPPED = "stopped", ERROR = "error" } export type MediaRecordingTitleOptions = { mimeType: string; }; export declare abstract class MultimediaRecorder { protected notificationService: NotificationService; protected chatService: ChatClientService; private transcoder; abstract config: MediaRecorderConfig; customGenerateRecordingTitle: ((options: MediaRecordingTitleOptions) => string) | undefined; recordingState$: Observable; recording$: Observable<(MediaRecording & T) | undefined>; protected recordingSubject: BehaviorSubject<(MediaRecording & T) | undefined>; protected mediaRecorder: MediaRecorder | undefined; protected startTime: number | undefined; protected recordedChunkDurations: number[]; private recordingStateSubject; constructor(notificationService: NotificationService, chatService: ChatClientService, transcoder: TranscoderService); get durationMs(): number; get mediaType(): string; get isRecording(): boolean; generateRecordingTitle: (mimeType: string) => string; makeRecording(blob: Blob): Promise; handleErrorEvent: (e: Event) => void; handleDataavailableEvent: (e: BlobEvent) => void; get recordingState(): MediaRecordingState; start(): Promise; pause(): void; resume(): void; stop(options?: { cancel: boolean; }): Promise; protected abstract enrichWithExtraData(): T; protected logError(error: Error): void; }