import { ConfigurationService } from '../../configuration'; import { RecordingOptions, RecordingService, RecordingState } from '../recording.service'; export interface RecordingUtils { downloadBlob: (blob: Blob, filename?: string) => void; createObjectURL: (blob: Blob) => string; uploadBlob: (blob: Blob, endpoint: string) => Promise; saveToIndexedDB: (blob: Blob, key: string) => Promise; getFileExtension: (mimeType: string) => string; } export type RecordingStoppedCallback = (blob: Blob, utils: RecordingUtils) => void; export type RecordingDataCallback = (data: { chunk: Blob; totalSize: number; duration: number; }) => void; export type RecordingLimitCallback = (data: { type: 'duration' | 'fileSize'; limit: number; }) => void; export declare class RecordingController { private configService; private recordingService; private stateCallbacks; private errorCallbacks; private recordingStoppedCallbacks; private recordingDataCallbacks; private recordingLimitCallbacks; private unsubscribes; private utils; constructor(configService: ConfigurationService, recordingService: RecordingService); private createUtils; private generateFilename; private setupEventListeners; destroy(): void; startRecording: (options?: RecordingOptions) => Promise; stopRecording: () => Promise; pauseRecording: () => void; resumeRecording: () => void; onStateChange: (callback: (state: RecordingState) => void) => VoidFunction; onError: (callback: (error: any) => void) => VoidFunction; onRecordingStopped: (callback: RecordingStoppedCallback) => VoidFunction; onRecordingData: (callback: RecordingDataCallback) => VoidFunction; onRecordingLimitReached: (callback: RecordingLimitCallback) => VoidFunction; private handleRecordingComplete; private _notifyStateChange; private _notifyError; private _notifyRecordingStopped; private _notifyRecordingData; private _notifyRecordingLimit; get state(): RecordingState; }