import { EventEmitter, OnInit, OnDestroy, ElementRef, NgZone, ChangeDetectorRef } from '@angular/core';
import { PermissionsService } from '../../services/permissions.service';
import { RecorderService } from '../../services/recorder.service';
import * as i0 from "@angular/core";
type VRState = 'preparation' | 'countdown' | 'recording' | 'processing' | 'result';
export declare class VoiceRecorderComponent implements OnInit, OnDestroy {
    private perms;
    private recorder;
    private ngZone;
    private cdr;
    rectWidth: number;
    rectHeight?: number;
    noShadow: boolean;
    className?: string;
    style?: {
        [k: string]: any;
    };
    capture: EventEmitter<{
        file: File;
        phrase: string;
    }>;
    audioRef?: ElementRef<HTMLAudioElement>;
    permission: boolean;
    isLoading: boolean;
    stream?: MediaStream;
    state: VRState;
    prepTimer: number;
    recordTimer: number;
    digits: number[];
    maskedDigits: any[];
    audioLevel: number;
    waveformData: number[];
    private audioBlob;
    audioUrl: string | null;
    isConfirming: boolean;
    private countdownTimeout?;
    private recordInterval?;
    private rafId?;
    private audioCtx?;
    private analyser?;
    private sourceNode?;
    constructor(perms: PermissionsService, recorder: RecorderService, ngZone: NgZone, cdr: ChangeDetectorRef);
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    requestPermissions(): Promise<void>;
    startRecording(): void;
    private tickCountdown;
    private beginRecording;
    private finishRecording;
    handleCancel(): Promise<void>;
    handleConfirm(): void;
    handleDecline(): void;
    private setupVisualizer;
    private teardownVisualizer;
    private clearAllTimers;
    getVolumeHeight(v: number): number;
    static ɵfac: i0.ɵɵFactoryDeclaration<VoiceRecorderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<VoiceRecorderComponent, "bio-voice-recorder", never, { "rectWidth": { "alias": "rectWidth"; "required": false; }; "rectHeight": { "alias": "rectHeight"; "required": false; }; "noShadow": { "alias": "noShadow"; "required": false; }; "className": { "alias": "className"; "required": false; }; "style": { "alias": "style"; "required": false; }; }, { "capture": "capture"; }, never, never, true, never>;
}
export {};
