import React from 'react';
import PropTypes from 'prop-types';
import { RecorderLib } from './RecorderLib';
export declare class RecorderVolumeMeter extends React.Component<any, any> {
    static propTypes: {
        id: PropTypes.Requireable<string>;
        scriptProcessorNode: PropTypes.Requireable<object>;
        volumeGainNode: PropTypes.Requireable<object>;
        analyser: PropTypes.Requireable<object>;
        meterCount: PropTypes.Requireable<number>;
        startRecording: PropTypes.Requireable<(...args: any[]) => any>;
        startRecordingLabel: PropTypes.Requireable<string>;
    };
    static defaultProps: {
        id: string;
        analyser: any;
        scriptProcessorNode: any;
        volumeGainNode: any;
        startRecording: () => void;
        meterCount: number;
        readonly startRecordingLabel: string;
    };
    constructor(props: any);
    ended: any;
    data: any;
    componentWillUnmount(): void;
    getRecordButton(): JSX.Element;
    getMeter(): JSX.Element;
    getVolumeControl(): JSX.Element;
    setInputMaxVolume: (value: any, isMuted: any) => void;
    render(): JSX.Element;
}
export declare class RecorderProcessor extends React.Component<any, any> {
    static propTypes: {
        id: PropTypes.Requireable<string>;
        analyser: PropTypes.Requireable<object>;
        recorder: PropTypes.Requireable<object>;
        scriptProcessorNode: PropTypes.Requireable<object>;
        meterMinHeight: PropTypes.Requireable<number>;
        meterMaxHeight: PropTypes.Requireable<number>;
        maxRecordTime: PropTypes.Requireable<number>;
        stopRecording: PropTypes.Requireable<(...args: any[]) => any>;
        stopRecordingLabel: PropTypes.Requireable<string>;
    };
    static defaultProps: {
        id: string;
        analyser: any;
        recorder: any;
        scriptProcessorNode: any;
        stopRecording: () => void;
        meterMaxHeight: number;
        meterMinHeight: number;
        maxRecordTime: number;
        readonly stopRecordingLabel: string;
    };
    constructor(props: any);
    data: any;
    initTime: any;
    maxMeterCount: any;
    unmounted: any;
    componentWillMount(): void;
    componentDidMount(): void;
    componentWillUnmount(): void;
    getStopRecordButton(): JSX.Element;
    getWave(): JSX.Element;
    render(): JSX.Element;
}
export declare class AudioRecorder extends React.Component<any, any> {
    static propTypes: {
        unsupportText: PropTypes.Requireable<string>;
        volumeMeterTitle: PropTypes.Requireable<string>;
        volumeMeterText: PropTypes.Requireable<string>;
        processorTitle: PropTypes.Requireable<string>;
        processorText: PropTypes.Requireable<string>;
        completedTitle: PropTypes.Requireable<string>;
        completedText: PropTypes.Requireable<string>;
        fileName: PropTypes.Requireable<string>;
        audioRecordError: PropTypes.Requireable<string>;
        deviceNotFoundError: PropTypes.Requireable<string>;
        config: PropTypes.Requireable<object>;
        exportAudio: PropTypes.Requireable<(...args: any[]) => any>;
        onRecordingStopped: PropTypes.Requireable<(...args: any[]) => any>;
        uploadLabel: PropTypes.Requireable<string>;
    };
    static defaultProps: {
        exportAudio: any;
        onRecordingStopped: any;
        config: {
            bufferLen: number;
            numChannels: number;
            mimeType: string;
        };
        fileName: string;
        id: string;
        readonly unsupportText: string;
        readonly volumeMeterTitle: string;
        readonly volumeMeterText: string;
        readonly processorTitle: string;
        readonly processorText: string;
        readonly completedTitle: string;
        readonly completedText: string;
        readonly deviceNotFoundError: string;
        readonly audioRecordError: string;
        readonly uploadLabel: string;
    };
    constructor(props: any);
    audioContext: any;
    localStream: any;
    mediaStream: any;
    volumeGainNode: any;
    analyser: any;
    scriptProcessorNode: any;
    errorText: any;
    recorder: any;
    audioBlobData: any;
    componentWillMount(): void;
    componentWillUnmount(): void;
    getText(title: any, text: any): JSX.Element;
    getUploadButton(): JSX.Element;
    createRecorder(): RecorderLib;
    startRecording(): void;
    stopRecording(): void;
    uploadAudio(): void;
    render(): JSX.Element;
}
export declare function audioRecorderSupported(): (constraints: MediaStreamConstraints) => Promise<MediaStream>;
