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<T> = {
    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<T> {
    items: BatchItem<T>[];
    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<BatchResult<ExtendedTag>>;
/**
 * 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<BatchResult<AudioProperties | undefined>>;
/** 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<FileMetadata>;
/**
 * 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<BatchResult<FileMetadata>>;
//# sourceMappingURL=batch-operations.d.ts.map