export declare enum AudioSourceAndroidType {
    DEFAULT = 0,
    MIC = 1,
    VOICE_UPLINK = 2,
    VOICE_DOWNLINK = 3,
    VOICE_CALL = 4,
    CAMCORDER = 5,
    VOICE_RECOGNITION = 6,
    VOICE_COMMUNICATION = 7,
    REMOTE_SUBMIX = 8,
    UNPROCESSED = 9,
    RADIO_TUNER = 1998,
    HOTWORD = 1999
}
export declare enum OutputFormatAndroidType {
    DEFAULT = 0,
    THREE_GPP = 1,
    MPEG_4 = 2,
    AMR_NB = 3,
    AMR_WB = 4,
    AAC_ADIF = 5,
    AAC_ADTS = 6,
    OUTPUT_FORMAT_RTP_AVP = 7,
    MPEG_2_TS = 8,
    WEBM = 9
}
export declare enum AudioEncoderAndroidType {
    DEFAULT = 0,
    AMR_NB = 1,
    AMR_WB = 2,
    AAC = 3,
    HE_AAC = 4,
    AAC_ELD = 5,
    VORBIS = 6
}
export declare enum AVEncodingOption {
    lpcm = "lpcm",
    ima4 = "ima4",
    aac = "aac",
    MAC3 = "MAC3",
    MAC6 = "MAC6",
    ulaw = "ulaw",
    alaw = "alaw",
    mp1 = "mp1",
    mp2 = "mp2",
    alac = "alac",
    amr = "amr",
    flac = "flac",
    opus = "opus"
}
type AVEncodingType = AVEncodingOption.lpcm | AVEncodingOption.ima4 | AVEncodingOption.aac | AVEncodingOption.MAC3 | AVEncodingOption.MAC6 | AVEncodingOption.ulaw | AVEncodingOption.alaw | AVEncodingOption.mp1 | AVEncodingOption.mp2 | AVEncodingOption.alac | AVEncodingOption.amr | AVEncodingOption.flac | AVEncodingOption.opus;
export declare enum AVEncoderAudioQualityIOSType {
    min = 0,
    low = 32,
    medium = 64,
    high = 96,
    max = 127
}
export declare enum AVLinearPCMBitDepthKeyIOSType {
    'bit8' = 8,
    'bit16' = 16,
    'bit24' = 24,
    'bit32' = 32
}
export interface AudioSet {
    AVSampleRateKeyIOS?: number;
    AVFormatIDKeyIOS?: AVEncodingType;
    AVNumberOfChannelsKeyIOS?: number;
    AVEncoderAudioQualityKeyIOS?: AVEncoderAudioQualityIOSType;
    AudioSourceAndroid?: AudioSourceAndroidType;
    AVLinearPCMBitDepthKeyIOS?: AVLinearPCMBitDepthKeyIOSType;
    AVLinearPCMIsBigEndianKeyIOS?: boolean;
    AVLinearPCMIsFloatKeyIOS?: boolean;
    AVLinearPCMIsNonInterleavedIOS?: boolean;
    OutputFormatAndroid?: OutputFormatAndroidType;
    AudioEncoderAndroid?: AudioEncoderAndroidType;
    AudioEncodingBitRateAndroid?: number;
    AudioSamplingRateAndroid?: number;
}
declare class AudioRecorderPlayer {
    private _isRecording;
    private _isPlaying;
    private _hasPaused;
    private _recorderSubscription;
    private _playerSubscription;
    private _recordInterval;
    mmss: (secs: number) => string;
    mmssss: (milisecs: number) => string;
    /**
     * set listerner from native module for recorder.
     * @returns {callBack(e: any)}
     */
    addRecordBackListener: (e: any) => void;
    /**
     * remove listener for recorder.
     * @returns {void}
     */
    removeRecordBackListener: () => void;
    /**
     * set listener from native module for player.
     * @returns {callBack(e: Event)}
     */
    addPlayBackListener: (e: any) => void;
    /**
     * remove listener for player.
     * @returns {void}
     */
    removePlayBackListener: () => void;
    /**
     * start recording with param.
     * @param {string} uri audio uri.
     * @returns {Promise<string>}
     */
    startRecorder: (uri?: string, audioSets?: AudioSet, meteringEnabled?: boolean) => Promise<string>;
    /**
     * stop recording.
     * @returns {Promise<string>}
     */
    stopRecorder: () => Promise<string>;
    /**
     * resume playing.
     * @returns {Promise<string>}
     */
    resumePlayer: () => Promise<string>;
    /**
     * start playing with param.
     * @param {string} uri audio uri.
     * @param {Record<string, string>} httpHeaders Set of http headers.
     * @returns {Promise<string>}
     */
    startPlayer: (uri?: string, httpHeaders?: Record<string, string>) => Promise<string>;
    /**
     * stop playing.
     * @returns {Promise<string>}
     */
    stopPlayer: () => Promise<string>;
    /**
     * pause playing.
     * @returns {Promise<string>}
     */
    pausePlayer: () => Promise<string>;
    /**
     * seek to.
     * @param {number} time position seek to in second.
     * @returns {Promise<string>}
     */
    seekToPlayer: (time: number) => Promise<string>;
    /**
     * set volume.
     * @param {number} setVolume set volume.
     * @returns {Promise<string>}
     */
    setVolume: (volume: number) => Promise<string>;
    /**
     * set subscription duration.
     * @param {number} sec subscription callback duration in seconds.
     * @returns {Promise<string>}
     */
    setSubscriptionDuration: (sec: number) => Promise<string>;
}
export default AudioRecorderPlayer;
