import * as _vueuse_core0 from "@vueuse/core"; import { UseRafFnCallbackArguments } from "@vueuse/core"; import * as vue from "vue"; //#region src/use-audio.d.ts /** * 音频配置选项 * @example * const options: UseAudioOptions = { * volume: 0.7, * playbackRate: 1.0, * autoPlay: false, * loop: true, * timeUpdateFormat: (time) => Math.floor(time) * } */ type UseAudioOptions = { /** 音量(0-1),默认为 1 */volume?: number; /** 播放速率,默认为 1 */ playbackRate?: number; /** 是否自动播放,默认为 true */ autoPlay?: boolean; /** 是否循环播放,默认为 true */ loop?: boolean; /** 时间更新格式化函数,默认为 (time) => time */ timeUpdateFormat?: (time: number) => number; }; /** * 音频控制组合式函数 * 提供音频播放控制、音量管理、进度控制等功能 * * @param src 音频源地址 * @param options 配置选项 * @returns 音频控制对象 * * @example * // 基本用法 * const audio = useAudio('https://example.com/audio.mp3', { * volume: 0.7, * autoPlay: false, * loop: true * }) * * audio.play('https://example.com/audio.mp3') * audio.pause() * audio.setVolume(0.5) * * @example * // 监听事件 * const { onPlaying, onPaused, onEnded } = useAudio() * * onPlaying(() => { * console.log('音频开始播放') * }) */ declare function useAudio(src?: string, options?: UseAudioOptions): { volume: Readonly>; setVolume: (volume: number) => void; muted: Readonly>; setMuted: (muted?: boolean) => void; toggleMute: () => void; playbackRate: Readonly>; setPlaybackRate: (playbackRate: number) => void; playing: Readonly>; paused: Readonly>; ended: Readonly>; currentTime: Readonly>; currentTimeText: vue.ComputedRef; setCurrentTime: (time: number) => void; duration: Readonly>; durationText: vue.ComputedRef; progress: Readonly>; setProgress: (progress: number) => void; cachedDuration: Readonly>; cachedDurationText: vue.ComputedRef; cachedProgress: Readonly>; url: Readonly>; play: (url: string) => Promise; pause: () => void; resume: () => void; stop: () => void; toggle: () => void; onVolumeUpdate: _vueuse_core0.EventHookOn<[HTMLAudioElement, number]>; onMuted: _vueuse_core0.EventHookOn<[HTMLAudioElement]>; onRateUpdate: _vueuse_core0.EventHookOn<[HTMLAudioElement]>; onTimeUpdate: _vueuse_core0.EventHookOn<[HTMLAudioElement, number]>; onTimeUpdateRaf: _vueuse_core0.EventHookOn<[HTMLAudioElement, { currentTime: number; progress: number; }, UseRafFnCallbackArguments]>; onDurationUpdate: _vueuse_core0.EventHookOn<[HTMLAudioElement, number]>; onPlaying: _vueuse_core0.EventHookOn<[HTMLAudioElement]>; onPaused: _vueuse_core0.EventHookOn<[HTMLAudioElement]>; onEnded: _vueuse_core0.EventHookOn<[HTMLAudioElement]>; }; /** * useAudio 函数的返回类型 * 包含音频元素、状态、方法和事件钩子 * @example * const audio: UseAudioReturns = useAudio('https://example.com/audio.mp3') */ type UseAudioReturns = ReturnType; //#endregion export { UseAudioOptions, UseAudioReturns, useAudio };