import { NonEmptyArray } from '../../../helpers/array-helpers';
import { MediaItemFileType } from '../../Documents/Document.types';
import { MediaItemFile } from '../../Gallery/Gallery/Gallery';
/**
 * Abstract class representing a processor for media items.
 *
 * @abstract
 */
export declare abstract class MediaItemProcessor {
    /**
     * An array of applicable file types that this processor can handle.
     */
    abstract applicableFileTypes: NonEmptyArray<MediaItemFileType>;
    /**
     * Processes the given media items.
     *
     * @param mediaItems - An array of media items to be processed.
     * @returns A promise that resolves to an array of processed media items or null.
     */
    abstract process: (mediaItems: MediaItemFile[]) => Promise<MediaItemFile[] | null>;
    /**
     * Checks if the processor can process any of the given files.
     *
     * @param files - An array of media item files to check.
     * @returns A boolean indicating whether the processor can process any of the files.
     */
    readonly canProcessFiles: (files: MediaItemFile[]) => boolean;
    /**
     * Applies the processor to the given files if applicable.
     *
     * @param files - An array of media item files to process.
     * @returns A promise that resolves to an array of processed media items or null.
     */
    readonly applyProcessor: (files: MediaItemFile[]) => Promise<MediaItemFile[] | null>;
}
