import { Observable } from "rxjs";
import { RecorderType } from "../../utils/enums";
export declare class RecorderConfig {
    type: {
        audio?: boolean;
        video?: boolean;
        screen?: boolean;
    };
    recorderOptions?: MediaRecorderOptions;
}
export declare class RecorderInitData {
    /**
     * Media Recorder status
     */
    status: Observable<string | null>;
    /**
     * Media Recorder stream
     */
    stream?: MediaStream;
    /**
     * Media Recorder recorded time
     */
    recordedTime: Observable<{
        duration?: number;
        display?: string;
    } | null>;
    /**
     * Type of media recorder, possible values are 'audio', 'video' and 'screen'
     */
    type: RecorderType;
    /**
     * Observable of recorded raw data.
     */
    recordedRawData$: Observable<RecordedRawData | null>;
}
export declare class RecordedRawData {
    /**
     * Blob object of recorded data
     */
    blob: Blob;
    /**
     * Base64 URL of recorded data
     */
    url: string;
    /**
     * Type of recorded data, possible values are 'audio' and 'video'
     */
    type: RecorderType;
    /**
     * Base64 encoded string of thumbnail image of one frame of recorded video
     */
    thumbnail?: string;
    /**
     * Recorded time
     */
    recordedTime?: {
        duration?: number;
        display?: string;
    } | null;
    /**
     * Array of URLs for individual uploaded chunks
     */
    chunkUrls?: {
        [key: number]: string;
    };
}
export declare class RecordedData {
    /**
     * Annotation ID of recorder annotation
     */
    id: string;
    /**
     * Recorder player tag containing recorder annotation id which can be added anywhere on the DOM
     */
    tag: string;
    /**
     * Type of recorded data, possible values are 'audio', 'video' and 'screen'
     */
    type: string;
    thumbnailUrl?: string;
    thumbnailWithPlayIconUrl?: string;
    videoUrl?: string;
    audioUrl?: string;
    /**
     * URL of the hosted website to open video in new tab
     */
    videoPlayerUrl?: string;
    /**
     * URLs for individual uploaded chunks
     */
    chunkUrls?: {
        [key: number]: string;
    };
    getThumbnailTag: (url?: string) => string;
}
export declare class RecorderQualityConstraintsOptions {
    video?: MediaTrackConstraints;
    audio?: MediaTrackConstraints;
}
export declare class RecorderQualityConstraints {
    safari?: RecorderQualityConstraintsOptions;
    other?: RecorderQualityConstraintsOptions;
}
export declare class RecorderEncodingOptions {
    safari?: MediaRecorderOptions;
    other?: MediaRecorderOptions;
}
export declare class RecorderDevicePermissionOptions {
    audio?: boolean;
    video?: boolean;
}
