import { LegacyEventEmitter } from 'expo-modules-core';
import { AudioAnalysis } from './AudioAnalysis/AudioAnalysis.types';
import { AudioRecording, AudioStreamStatus, BitDepth, ConsoleLike, RecordingConfig, StartRecordingResult } from './ExpoAudioStream.types';
import { WebRecorder } from './WebRecorder.web';
export interface EmitAudioEventProps {
    data: Float32Array;
    position: number;
    compression?: {
        data: Blob;
        size: number;
        totalSize: number;
        mimeType: string;
        format: string;
        bitrate: number;
    };
}
export type EmitAudioEventFunction = (_: EmitAudioEventProps) => void;
export type EmitAudioAnalysisFunction = (_: AudioAnalysis) => void;
export interface ExpoAudioStreamWebProps {
    logger?: ConsoleLike;
    audioWorkletUrl: string;
    featuresExtratorUrl: string;
    maxBufferSize?: number;
}
export declare class ExpoAudioStreamWeb extends LegacyEventEmitter {
    customRecorder: WebRecorder | null;
    audioChunks: Float32Array[];
    isRecording: boolean;
    isPaused: boolean;
    recordingStartTime: number;
    pausedTime: number;
    currentDurationMs: number;
    currentSize: number;
    currentInterval: number;
    currentIntervalAnalysis: number;
    lastEmittedSize: number;
    lastEmittedTime: number;
    lastEmittedCompressionSize: number;
    lastEmittedAnalysisTime: number;
    streamUuid: string | null;
    extension: 'webm' | 'wav';
    recordingConfig?: RecordingConfig;
    bitDepth: BitDepth;
    audioWorkletUrl: string;
    featuresExtratorUrl: string;
    logger?: ConsoleLike;
    latestPosition: number;
    totalCompressedSize: number;
    private readonly maxBufferSize;
    constructor({ audioWorkletUrl, featuresExtratorUrl, logger, maxBufferSize, }: ExpoAudioStreamWebProps);
    getMediaStream(): Promise<MediaStream>;
    startRecording(recordingConfig?: RecordingConfig): Promise<StartRecordingResult>;
    emitAudioEvent({ data, position, compression }: EmitAudioEventProps): void;
    stopRecording(): Promise<AudioRecording>;
    pauseRecording(): Promise<void>;
    resumeRecording(): Promise<void>;
    status(): AudioStreamStatus;
}
//# sourceMappingURL=ExpoAudioStream.web.d.ts.map