import { AsyncVoidIOResult, AsyncIOResult } from 'happy-rusty'; /** * 播放音频的选项。 * @since 1.5.0 * @example * ```ts * import { audio } from 'minigame-std'; * * // 循环播放 * const source = audio.playWebAudioFromAudioBuffer(buffer, { loop: true }); * * // 禁用自动断开连接 * const source2 = audio.playWebAudioFromAudioBuffer(buffer, { autoDisconnect: false }); * ``` */ interface PlayOptions { /** * 是否循环播放。 * @defaultValue `false` */ loop?: boolean; /** * 播放完后是否自动调用 `source.disconnect`。 * @defaultValue `true` */ autoDisconnect?: boolean; } /** * Web/小游戏 平台的音频播放实现。 */ /** * 获取缓存的 AudioContext。 * @returns 返回缓存的 AudioContext。 * @since 1.5.0 * @example * ```ts * const context = audio.getGlobalAudioContext(); * ``` */ declare function getGlobalAudioContext(): AudioContext; /** * 关闭缓存的 AudioContext。 * @returns 返回一个 AsyncVoidIOResult。 * @since 1.5.0 * @example * ```ts * await audio.closeGlobalAudioContext(); * ``` */ declare function closeGlobalAudioContext(): AsyncVoidIOResult; /** * 创建一个 AudioContext。 * 如果要获取缓存的实例,请使用 `getGlobalAudioContext`。 * @returns 返回一个 AudioContext实例。 * @since 1.5.0 * @example * ```ts * const context = audio.createWebAudioContext(); * ``` */ declare function createWebAudioContext(): AudioContext; /** * 播放一个 AudioBuffer。 * @param buffer - 解码后的 AudioBuffer。 * @param options - 播放选项。 * @returns 正在播放的 AudioBufferSourceNode。 * @since 1.5.0 * @example * ```ts * const source = audio.playWebAudioFromAudioBuffer(audioBuffer, { loop: true }); * ``` */ declare function playWebAudioFromAudioBuffer(buffer: AudioBuffer, options?: PlayOptions): AudioBufferSourceNode; /** * 使用 Buffer 进行解码播放。 * @param buffer - 需要解码的 Buffer。 * @param options - 播放选项。 * @returns 正在播放的 AudioBufferSourceNode。 * @since 1.5.0 * @example * ```ts * const result = await audio.playWebAudioFromBufferSource(buffer); * if (result.isOk()) { * const source = result.unwrap(); * } * ``` */ declare function playWebAudioFromBufferSource(buffer: BufferSource, options?: PlayOptions): AsyncIOResult; /** * 读取文件并播放。 * @param filePath - 文件路径。 * @param options - 播放选项。 * @returns 正在播放的 AudioBufferSourceNode。 * @since 1.5.0 * @example * ```ts * const result = await audio.playWebAudioFromFile('/path/to/audio.mp3'); * if (result.isOk()) { * const source = result.unwrap(); * } * ``` */ declare function playWebAudioFromFile(filePath: string, options?: PlayOptions): AsyncIOResult; /** * 从远程 URL 下载音频并解码播放。 * 会先完整下载音频数据再调用 `decodeAudioData`,适合短音效,不适合长音频或流式播放。 * @param url - 音频资源 URL。 * @param options - 播放选项。 * @returns 正在播放的 AudioBufferSourceNode。 * @since 2.2.0 * @example * ```ts * const result = await audio.playWebAudioFromUrl('https://example.com/audio.mp3'); * if (result.isOk()) { * const source = result.unwrap(); * } * ``` */ declare function playWebAudioFromUrl(url: string, options?: PlayOptions): AsyncIOResult; export { closeGlobalAudioContext, createWebAudioContext, getGlobalAudioContext, playWebAudioFromAudioBuffer, playWebAudioFromBufferSource, playWebAudioFromFile, playWebAudioFromUrl }; export type { PlayOptions };