import type { AudioDynamics } from "../folder-api/types.js"; import type { AudioFileInput, AudioProperties, ExtendedTag } from "../types.js"; /** Configuration for batch processing operations. */ export interface BatchOptions { concurrency?: number; continueOnError?: boolean; onProgress?: (processed: number, total: number, currentFile: string) => void; /** AbortSignal to cancel the batch operation between chunks. */ signal?: AbortSignal; } /** Discriminated union result for a single file in a batch operation. */ export type BatchItem = { status: "ok"; path: string; data: T; } | { status: "error"; path: string; error: Error; }; /** Result of a batch operation containing all items and timing. */ export interface BatchResult { items: BatchItem[]; duration: number; } /** * Read tags from multiple files with configurable concurrency. * * @param files - Array of file paths, Uint8Arrays, ArrayBuffers, File objects, or NamedAudioInputs. * @param options - Batch processing options (concurrency, error handling, progress). * @returns Batch result containing a `BatchItem` per file and total duration in ms. * @throws If `continueOnError` is `false` and any file fails to process. */ export declare function readTagsBatch(files: AudioFileInput[], options?: BatchOptions): Promise>; /** * Read audio properties from multiple files with configurable concurrency. * * @param files - Array of file paths, Uint8Arrays, ArrayBuffers, File objects, or NamedAudioInputs. * @param options - Batch processing options (concurrency, error handling, progress). * @returns Batch result containing a `BatchItem` per file and total duration in ms. * @throws If `continueOnError` is `false` and any file fails to process. */ export declare function readPropertiesBatch(files: AudioFileInput[], options?: BatchOptions): Promise>; /** Complete metadata for a single audio file including tags, properties, cover art presence, and audio dynamics. */ export interface FileMetadata { tags: ExtendedTag; properties: AudioProperties | undefined; hasCoverArt: boolean; dynamics?: AudioDynamics; } /** * Read complete metadata (tags, properties, cover art, dynamics) from a single file. * * @param file - A file path, Uint8Array, ArrayBuffer, File object, or NamedAudioInput. * @returns The file's complete metadata. * @throws `InvalidFormatError` if the file is corrupted or in an unsupported format. */ export declare function readMetadata(file: AudioFileInput): Promise; /** * Read complete metadata from multiple files with configurable concurrency. * * @param files - Array of file paths, Uint8Arrays, ArrayBuffers, File objects, or NamedAudioInputs. * @param options - Batch processing options (concurrency, error handling, progress). * @returns Batch result containing a `BatchItem` per file and total duration in ms. * @throws If `continueOnError` is `false` and any file fails to process. */ export declare function readMetadataBatch(files: AudioFileInput[], options?: BatchOptions): Promise>; //# sourceMappingURL=batch-operations.d.ts.map