import * as vue from 'vue';
import { I as IOptions } from './shared/use-audio-record.68911257.mjs';

declare function useAudioRecorder(options?: IOptions): {
    mimeType: string | undefined;
    sampleRate: number;
    stream: vue.Ref<{
        readonly active: boolean;
        readonly id: string;
        onaddtrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
        onremovetrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
        addTrack: (track: MediaStreamTrack) => void;
        clone: () => MediaStream;
        getAudioTracks: () => MediaStreamTrack[];
        getTrackById: (trackId: string) => MediaStreamTrack | null;
        getTracks: () => MediaStreamTrack[];
        getVideoTracks: () => MediaStreamTrack[];
        removeTrack: (track: MediaStreamTrack) => void;
        addEventListener: {
            <K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
            (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
        };
        removeEventListener: {
            <K_1 extends keyof MediaStreamEventMap>(type: K_1, listener: (this: MediaStream, ev: MediaStreamEventMap[K_1]) => any, options?: boolean | EventListenerOptions | undefined): void;
            (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions | undefined): void;
        };
        dispatchEvent: (event: Event) => boolean;
    } | null>;
    mediaRecorder: vue.Ref<{
        readonly audioBitsPerSecond: number;
        readonly mimeType: string;
        ondataavailable: ((this: MediaRecorder, ev: BlobEvent) => any) | null;
        onerror: ((this: MediaRecorder, ev: Event) => any) | null;
        onpause: ((this: MediaRecorder, ev: Event) => any) | null;
        onresume: ((this: MediaRecorder, ev: Event) => any) | null;
        onstart: ((this: MediaRecorder, ev: Event) => any) | null;
        onstop: ((this: MediaRecorder, ev: Event) => any) | null;
        readonly state: RecordingState;
        readonly stream: {
            readonly active: boolean;
            readonly id: string;
            onaddtrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
            onremovetrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
            addTrack: (track: MediaStreamTrack) => void;
            clone: () => MediaStream;
            getAudioTracks: () => MediaStreamTrack[];
            getTrackById: (trackId: string) => MediaStreamTrack | null;
            getTracks: () => MediaStreamTrack[];
            getVideoTracks: () => MediaStreamTrack[];
            removeTrack: (track: MediaStreamTrack) => void;
            addEventListener: {
                <K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
                (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
            };
            removeEventListener: {
                <K_1 extends keyof MediaStreamEventMap>(type: K_1, listener: (this: MediaStream, ev: MediaStreamEventMap[K_1]) => any, options?: boolean | EventListenerOptions | undefined): void;
                (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions | undefined): void;
            };
            dispatchEvent: (event: Event) => boolean;
        };
        readonly videoBitsPerSecond: number;
        pause: () => void;
        requestData: () => void;
        resume: () => void;
        start: (timeslice?: number | undefined) => void;
        stop: () => void;
        addEventListener: {
            <K extends keyof MediaRecorderEventMap>(type: K, listener: (this: MediaRecorder, ev: MediaRecorderEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
            (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
        };
        removeEventListener: {
            <K_1 extends keyof MediaRecorderEventMap>(type: K_1, listener: (this: MediaRecorder, ev: MediaRecorderEventMap[K_1]) => any, options?: boolean | EventListenerOptions | undefined): void;
            (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions | undefined): void;
        };
        dispatchEvent: (event: Event) => boolean;
    } | null>;
    recording: vue.Ref<boolean>;
    duration: vue.Ref<number>;
    recordedBlob: vue.Ref<{
        readonly size: number;
        readonly type: string;
        arrayBuffer: () => Promise<ArrayBuffer>;
        slice: (start?: number | undefined, end?: number | undefined, contentType?: string | undefined) => Blob;
        stream: () => ReadableStream<Uint8Array>;
        text: () => Promise<string>;
    } | null>;
    recordedAudioBuffer: vue.Ref<AudioBuffer | undefined>;
    chunks: vue.Ref<{
        readonly size: number;
        readonly type: string;
        arrayBuffer: () => Promise<ArrayBuffer>;
        slice: (start?: number | undefined, end?: number | undefined, contentType?: string | undefined) => Blob;
        stream: () => ReadableStream<Uint8Array>;
        text: () => Promise<string>;
    }[]>;
    initRecorder: () => Promise<void>;
    startRecording: (completeCallback?: () => void) => Promise<void>;
    stopRecording: () => void;
    handleToggleRecording: (completeCallback?: () => void) => void;
};

export { useAudioRecorder };
