import type { PluginListenerHandle } from '@capacitor/core';
import { WebPlugin } from '@capacitor/core';
import type { CapacitorAudioEnginePlugin, AudioEventName, AudioFileInfo, AudioEventMap, PausedRecordingPreviewInfo, PreloadTracksOptions, PreloadTracksResult, PlaybackInfo, SeekTrackOptions, SkipToIndexTrackOptions, WaveLevelConfigurationResult, PermissionRequestOptions, PermissionStatusResults, RecordingStatusInfo, TrimTrackOptions, MicAvailableResult } from './definitions';
declare global {
    interface BlobEventInit extends EventInit {
        data: Blob;
    }
    interface BlobEvent extends Event {
        readonly data: Blob;
    }
}
export declare class CapacitorAudioEngineWeb extends WebPlugin implements CapacitorAudioEnginePlugin {
    /**
     * Reset the current live recording session.
     * @platform web Not supported
     */
    resetRecording(): Promise<void>;
    /**
     * Check permission status with detailed information for each permission type.
     * @returns Promise that resolves with detailed permission status including granular information
     * @platform web Returns unsupported status for all permissions
     */
    checkPermissions(): Promise<PermissionStatusResults>;
    /**
     * Check microphone permission status with detailed information.
     * @returns Promise that resolves with detailed microphone permission status
     * @platform web Returns unsupported status
     */
    checkPermissionMicrophone(): Promise<PermissionStatusResults>;
    /**
     * Check notification permission status with detailed information.
     * @returns Promise that resolves with detailed notification permission status
     * @platform web Returns unsupported status
     */
    checkPermissionNotifications(): Promise<PermissionStatusResults>;
    /**
     * Request permissions with detailed options and status information.
     * @param options - Permission request options
     * @returns Promise that resolves with detailed permission status
     * @platform web Returns unsupported status for all permissions
     */
    requestPermissions(_options?: PermissionRequestOptions): Promise<PermissionStatusResults>;
    /**
     * Request microphone permission only.
     * @param options - Permission request options
     * @returns Promise that resolves with microphone permission status
     * @platform web Returns unsupported status
     */
    requestPermissionMicrophone(_options?: PermissionRequestOptions): Promise<PermissionStatusResults>;
    /**
     * Request notification permission only.
     * @param options - Permission request options
     * @returns Promise that resolves with notification permission status
     * @platform web Returns unsupported status
     */
    requestPermissionNotifications(_options?: PermissionRequestOptions): Promise<PermissionStatusResults>;
    /**
     * Add a listener for recording events
     * @returns A promise that resolves with a handle to the listener
     * @platform web Not supported
     */
    addListener<T extends AudioEventName>(eventName: T, callback: (event: AudioEventMap[T]) => void): Promise<PluginListenerHandle>;
    /**
     * Check if microphone is currently being used by another application.
     * @returns Promise that resolves with microphone status
     * @platform web Not supported
     */
    isMicrophoneBusy(): Promise<never>;
    /**
     * Get list of available microphones (internal and external).
     * @returns Promise that resolves with available microphones
     * @platform web Not supported
     */
    getAvailableMicrophones(): Promise<never>;
    /**
     * Switch between microphones while keeping recording active.
     * @param options - Switch microphone options
     * @returns Promise that resolves with switch result
     * @platform web Not supported
     */
    switchMicrophone(options: {
        microphoneId: number;
    }): Promise<never>;
    /**
     * Remove all listeners
     * @returns Promise that resolves when all listeners are removed
     * @platform web Not supported
     */
    removeAllListeners(): Promise<void>;
    /**
     * Configure waveform data generation settings with default values.
     * @returns Promise that resolves with configuration result
     * @platform web Not supported
     */
    configureWaveform(options?: {
        EmissionInterval?: number;
    }): Promise<WaveLevelConfigurationResult>;
    /**
     * Destroy waveform configuration and clean up resources.
     * @returns Promise that resolves when waveform configuration is destroyed
     * @platform web Not supported
     */
    destroyWaveform(): Promise<void>;
    /**
     * Preload audio tracks from URLs for individual playback
     * @param options - Preload options containing track URLs
     * @returns Promise that resolves with preload results for each track including load status, mimetype, duration, and file size
     * @platform web Not supported
     */
    preloadTracks(options: PreloadTracksOptions): Promise<PreloadTracksResult>;
    /**
     * Start or resume playback of current track or specific preloaded track by URL
     * @param options - Optional playback options with URL to play specific preloaded track
     * @returns Promise that resolves when playback starts
     * @platform web Not supported
     */
    playTrack(_options?: {
        url?: string;
    }): Promise<void>;
    /**
     * Pause audio playback for current track or specific preloaded track by URL
     * @param options - Optional pause options with URL to pause specific preloaded track
     * @returns Promise that resolves when playback is paused
     * @platform web Not supported
     */
    pauseTrack(_options?: {
        url?: string;
    }): Promise<void>;
    /**
     * Resume audio playback from paused state for current track or specific preloaded track by URL
     * @param options - Optional resume options with URL to resume specific preloaded track
     * @returns Promise that resolves when playback resumes
     * @platform web Not supported
     */
    resumeTrack(_options?: {
        url?: string;
    }): Promise<void>;
    /**
     * Stop audio playback and reset to beginning for current track or specific preloaded track by URL
     * @param options - Optional stop options with URL to stop specific preloaded track
     * @returns Promise that resolves when playback stops
     * @platform web Not supported
     */
    stopTrack(_options?: {
        url?: string;
    }): Promise<void>;
    /**
     * Seek to specific position in current track or specific preloaded track by URL
     * @param options - Seek options with time in seconds and optional URL for specific preloaded track
     * @returns Promise that resolves when seek completes
     * @platform web Not supported
     */
    seekTrack(_options: SeekTrackOptions): Promise<void>;
    /**
     * Skip to next track in playlist (simplified - no-op for single track playback)
     * @returns Promise that resolves when skip completes
     * @platform web Not supported
     */
    skipToNext(): Promise<void>;
    /**
     * Skip to previous track in playlist (simplified - no-op for single track playback)
     * @returns Promise that resolves when skip completes
     * @platform web Not supported
     */
    skipToPrevious(): Promise<void>;
    /**
     * Skip to specific track index in playlist (simplified - no-op for single track playback)
     * @param options - Options with target track index
     * @returns Promise that resolves when skip completes
     * @platform web Not supported
     */
    skipToIndex(_options: SkipToIndexTrackOptions): Promise<void>;
    /**
     * Get current playback information
     * @returns Promise that resolves with current playback state
     * @platform web Not supported
     */
    getPlaybackInfo(): Promise<PlaybackInfo>;
    /**
     * Destroy and reinitialize the playback manager
     * @returns Promise that resolves when playback manager is destroyed and reinitialized
     * @platform web No-op (browser handles cleanup automatically)
     */
    destroyPlayback(): Promise<void>;
    /**
     * Navigate to the app's permission settings screen.
     * @returns Promise that resolves when navigation is initiated
     * @platform web Shows alert with instructions to manually open browser settings for permissions
     */
    openSettings(): Promise<void>;
    startRecording(_options: {
        path: string;
        enablePausedPreview?: boolean;
    }): Promise<{
        uri: string;
    }>;
    stopRecording(): Promise<AudioFileInfo>;
    pauseRecording(): Promise<void>;
    resumeRecording(): Promise<void>;
    preparePausedRecordingPreview(): Promise<PausedRecordingPreviewInfo>;
    getRecordingStatus(): Promise<RecordingStatusInfo>;
    trimAudio(_options: TrimTrackOptions): Promise<AudioFileInfo>;
    getAudioInfo(): Promise<AudioFileInfo>;
    micAvailable(): Promise<MicAvailableResult>;
}
