import type { ConfigurableNavigator } from '@vueuse/core';
import type { MaybeRef } from 'vue';
interface UseMediaRecorderOptions extends ConfigurableNavigator {
    /**
     * The constraints parameter is a MediaStreamConstraints object specifying the types of media to request, along with any requirements for each type.
     */
    constraints?: MaybeRef<MediaStreamConstraints>;
    /**
     * Options to pass to the MediaRecorder constructor.
     */
    mediaRecorderOptions?: MaybeRef<MediaRecorderOptions>;
    /**
     * Callback when recording starts.
     */
    onStart?: (ev: Event) => any;
    /**
     * Callback when recording pauses.
     */
    onPause?: (ev: Event) => any;
    /**
     * Callback when recording resumes.
     */
    onResume?: (ev: Event) => any;
    /**
     * Callback when recording stops.
     */
    onStop?: (ev: Event) => any;
    /**
     * Callback when an error occurs.
     */
    onError?: (ev: Event) => any;
}
export declare function useMediaRecorder(options?: UseMediaRecorderOptions): {
    start: (timeslice?: number | undefined) => Promise<void>;
    pause: () => void;
    resume: () => void;
    stop: () => void;
    data: import("vue").Ref<{
        readonly size: number;
        readonly type: string;
        arrayBuffer: {
            (): Promise<ArrayBuffer>;
            (): Promise<ArrayBuffer>;
        };
        slice: {
            (start?: number, end?: number, contentType?: string): Blob;
            (start?: number, end?: number, contentType?: string): Blob;
        };
        stream: {
            (): ReadableStream<Uint8Array>;
            (): NodeJS.ReadableStream;
        };
        text: {
            (): Promise<string>;
            (): Promise<string>;
        };
    }[], Blob[] | {
        readonly size: number;
        readonly type: string;
        arrayBuffer: {
            (): Promise<ArrayBuffer>;
            (): Promise<ArrayBuffer>;
        };
        slice: {
            (start?: number, end?: number, contentType?: string): Blob;
            (start?: number, end?: number, contentType?: string): Blob;
        };
        stream: {
            (): ReadableStream<Uint8Array>;
            (): NodeJS.ReadableStream;
        };
        text: {
            (): Promise<string>;
            (): Promise<string>;
        };
    }[]>;
    stream: import("vue").ShallowRef<MediaStream | undefined, MediaStream | undefined>;
    state: import("@vueuse/shared").ComputedRefWithControl<RecordingState | undefined>;
    isSupported: import("vue").ComputedRef<boolean>;
    isMimeTypeSupported: import("vue").ComputedRef<boolean>;
    mimeType: import("vue").ComputedRef<string | undefined>;
    mediaRecorder: import("vue").ComputedRef<MediaRecorder | undefined>;
};
export type UseMediaRecorderReturn = ReturnType<typeof useMediaRecorder>;
export {};
