import { AudioClip } from "./AudioClip"; import type { AudioContextLike } from "./AudioContextManager"; export interface AudioDecodeContextLike extends AudioContextLike { decodeAudioData(data: ArrayBuffer): Promise | AudioBuffer; } export interface AudioFileAssetLike { readonly kind?: string; readonly id?: string; readonly type?: string; readonly format?: string; readonly url: string; readonly hash?: string; readonly sizeBytes?: number; readonly license?: string; } export type AudioFileInput = string | URL | AudioFileAssetLike | AudioClip; export interface AudioFileRequest { readonly input: AudioFileInput; readonly signal?: AbortSignal; readonly cacheKey?: string; readonly name?: string; } export interface AudioFileManagerOptions { readonly context: AudioDecodeContextLike; readonly fetch?: (url: string, init?: { readonly signal?: AbortSignal; }) => Promise; readonly cache?: Map; readonly validateTypedAudioAssets?: boolean; } export interface AudioFileFetchResponseLike { readonly ok: boolean; readonly status: number; arrayBuffer(): Promise; } export interface ResolvedAudioFileRequest { readonly url: string; readonly cacheKey: string; readonly name?: string; readonly asset?: AudioFileAssetLike; } export interface EpisodeAudioAssetRequirement { readonly id: string; readonly role?: "dialogue" | "music" | "sfx" | "ambient"; readonly required?: boolean; readonly requireLicense?: boolean; } export interface EpisodeAudioAssetDiagnostic { readonly severity: "error" | "warning"; readonly code: string; readonly message: string; readonly assetId: string; } export interface EpisodeAudioAssetReadiness { readonly ok: boolean; readonly requiredCount: number; readonly readyCount: number; readonly missingAssetIds: readonly string[]; readonly diagnostics: readonly EpisodeAudioAssetDiagnostic[]; } export declare class AudioFileManager { private readonly options; private readonly cache; private readonly inflight; constructor(options: AudioFileManagerOptions); resolve(input: AudioFileInput, request?: Omit): ResolvedAudioFileRequest; has(input: AudioFileInput, request?: Omit): boolean; getCached(input: AudioFileInput, request?: Omit): AudioClip | undefined; load(input: AudioFileInput, request?: Omit): Promise; loadMany(inputs: readonly AudioFileInput[], request?: Omit): Promise; clear(input?: AudioFileInput): void; private loadResolved; } export declare function validateEpisodeAudioAssets(assets: readonly AudioFileAssetLike[], requirements: readonly EpisodeAudioAssetRequirement[], options?: { readonly requireLicense?: boolean; }): EpisodeAudioAssetReadiness; //# sourceMappingURL=AudioFileManager.d.ts.map