import { AsyncValidatorFn, ValidatorFn } from '@angular/forms';
import { MimeType } from './mime-types';
/**
 * @description
 * Validator that requires the maximum length of files that can be uploaded.
 *
 * @example
 * Validate that the user selected maximum 3 files:
 *
 * ```
 * const fileUpload = new FormControl(null, maxFilesValidator(3));
 * console.log(fileUpload.errors); // { maxFiles: 3 }
 * ```
 *
 * @param {MimeType[]} maxFiles - The maximum number of files allowed.
 * @returns A validator function that returns an error map with the
 * `maxFiles` if the validation check fails, otherwise `null`.
 */
export declare const maxFilesValidator: (maxFiles: number) => ValidatorFn;
/**
 * @description
 * Validator that checks the **total size** (in bytes) of the selected files.
 * Returns an error when the combined size exceeds the provided limit.
 *
 * @example
 * Validate that the user doesn't select files whose **combined size** exceeds 300 kB (300000 bytes):
 *
 * ```ts
 * const fileUpload = new FormControl<File[] | null>(null, maxSizeValidator(300000));
 * console.log(fileUpload.errors); // { maxSize: 300000 } if totalSize > 300000
 * ```
 *
 * @param {number} maxSize - Maximum allowed **total size** in bytes.
 * @returns A validator function that returns `{ maxSize }` if the validation check fails,
 * otherwise `null`.
 */
export declare const maxSizeValidator: (maxSize: number) => ValidatorFn;
/**
 * @description
 * Validator that checks the **maximum size per file** (in bytes).
 * Returns an error if one or more selected files exceed the configured limit.
 *
 * @example
 * Validate that the user doesn't select files that exceed 300 kB (300000 bytes) per file:
 *
 * ```ts
 * const fileUpload = new FormControl<File[] | null>(null, maxFileSizeValidator(300000));
 * console.log(fileUpload.errors); // { maxFileSize: 300000, indexes: [0, 2] }
 * ```
 *
 * @param {number} maxFileSize - Maximum allowed size **per file** in bytes.
 * @returns A validator function that returns `{ maxFileSize, indexes }` if the validation check fails,
 * otherwise `null`. `indexes` contains the indices of the files that exceeded the limit.
 */
export declare const maxFileSizeValidator: (maxFileSize: number) => ValidatorFn;
/**
 * @description
 * Validator that requires an array of mime type that can be uploaded.
 *
 * @example
 * Validate that the user doesn't select a file having another extension than .jpg or .jpeg:
 * ```
 * const fileUpload = new FormControl(null, mimeTypeExtensionValidator(['image/jpeg'])),
 * console.log(fileUpload.errors); // { invalidFileExtension: ['image/jpeg'] }
 * ```
 *
 * @param {MimeType[]} mimeTypes - The list of allowed MIME types.
 * @returns A validator function that returns an error map with the
 * `invalidFileExtension` if the validation check fails, otherwise `null`.
 */
export declare const mimeTypeExtensionValidator: (mimeTypes: string[]) => ValidatorFn;
/**
 * @description
 * Validator that requires an array of mime type that can be uploaded.
 *
 * @example
 * Validate that the user doesn't select a file having another extension than .jpg or .jpeg:
 *
 * ```
 * const fileUpload = new FormControl(null, mimeTypeExtensionValidator(['image/jpeg'])),
 * console.log(fileUpload.errors); // { invalidMimeFileType: ['image/jpeg'] }
 * ```
 * @param {MimeType[]} mimeTypes - The list of allowed MIME types.
 * @returns An Async validator function that returns an error map with the
 * `invalidMimeFileType` if the validation check fails, otherwise `null`.
 */
export declare const asyncMimeTypeExtensionValidator: (mimeTypes: MimeType[]) => AsyncValidatorFn;
//# sourceMappingURL=eui-file-upload.validators.d.ts.map