import React, { CSSProperties } from "react"; import WaveSurfer from "wavesurfer.js"; import { Chapter, PlaylistConfig } from "./VideoPlayer"; import "./video-audio-player.css"; export type AudioControlOptionsToRemove = "playPause" | "mute" | "volume" | "playbackRate" | "current-time" | "duration"; export type AudioMimeType = "audio/mpeg" | "audio/wav" | "audio/ogg" | "audio/aac" | "audio/flac" | "audio/webm" | "audio/mp4" | "application/x-mpegURL" | "application/vnd.apple.mpegurl" | (string & {}); export type AudioSource = { src: string; type?: AudioMimeType | string; }; export interface AudioPlayerIcons { play?: React.ReactNode; pause?: React.ReactNode; mute?: React.ReactNode; unmute?: React.ReactNode; volume?: React.ReactNode; rewind?: React.ReactNode; forward?: React.ReactNode; download?: React.ReactNode; error?: React.ReactNode; nextTrack?: React.ReactNode; prevTrack?: React.ReactNode; } export interface AudioPlayerProps { src?: string; accentColor?: string; customErrorMessage?: string; autoPlay?: boolean; muted?: boolean; loop?: boolean; width?: string | number; className?: string; style?: CSSProperties; controls?: boolean; seekTo?: number; controlsToExclude?: AudioControlOptionsToRemove[]; disableShortcuts?: boolean; showDownloadButton?: boolean; defaultPlaybackRate?: number; defaultVolume?: number; maxAutoPlayDuration?: number; onProgress?: (currentTime: number, duration: number) => void; onSeeked?: (time: number) => void; onDownloadStart?: () => void; onDownloadEnd?: (success: boolean) => void; onPlaybackRateChange?: (rate: number) => void; onVolumeChange?: (volume: number) => void; onMuteChange?: (isMuted: boolean) => void; onPlay?: () => void; onPause?: () => void; onEnded?: () => void; onError?: () => void; onReady?: () => void; onDuration?: (duration: number) => void; getWaveSurferRef?: (ref: WaveSurfer | null) => void; getAudioElement?: (ref: HTMLAudioElement | null) => void; pauseWhenHidden?: boolean; playlist?: PlaylistConfig; chapters?: Chapter[]; quality?: number | string; onQualityChange?: (level: number, label: string) => void; onVisibilityChange?: (isVisible: boolean) => void; onBuffering?: (isBuffering: boolean) => void; waveColor?: string; progressColor?: string; barWidth?: number; barGap?: number; barRadius?: number; icons?: AudioPlayerIcons; } declare const AudioPlayer: ({ src, accentColor, customErrorMessage, autoPlay, muted, loop, className, style, controls, width, seekTo, controlsToExclude, showDownloadButton, disableShortcuts, defaultPlaybackRate, defaultVolume, maxAutoPlayDuration, onProgress, onSeeked, onDownloadStart, onDownloadEnd, onPlaybackRateChange, onVolumeChange, onMuteChange, onPlay, onPause, onEnded, onError, onReady, onDuration, getWaveSurferRef, getAudioElement, pauseWhenHidden, playlist: playlistConfig, chapters, quality, onQualityChange, onVisibilityChange, onBuffering, waveColor, progressColor, barWidth, barGap, barRadius, icons, }: AudioPlayerProps) => React.JSX.Element; export default AudioPlayer;