import { Nullable } from '../../../../shared/dist/esm/index'; import { BaseError } from '../common/error'; export type FileTypeSpecifier = UniqueFileTypeSpecifier | `.${string}`; export declare enum UniqueFileTypeSpecifier { AnyAudio = "audio/*", AnyVideo = "video/*", AnyImage = "image/*" } /** * Validate if file has the allowed type. While we could also test for MIME types * not in UniqueFileTypeSpecifier, this function is meant to be equivalent to the * 'accept' attribute, which only allows for extensions or UniqueFileTypeSpecifier * values. * @param file * @param allowedTypes The file must have one of these types * @returns True if valid, Error object if not */ export declare function validateFileType(file: File, allowedTypes: FileTypeSpecifier[]): true | Error; /** * Resolve file extension (with leading dot) */ export declare function resolveFileExtension(fileName: string): Nullable; /** * Check if string is a FileTypeSpecifier */ export declare function isFileTypeSpecifier(type: string): type is FileTypeSpecifier; /** * Create a human readable file size string from the numeric size in bytes */ export declare function prettyFileSize(sizeInBytes: number): string; /** * Generate an ID that uniquely identifies a specific file. The same file * will always have the same ID. */ export declare function generateFileId(file: File): string; export declare class MissingFileExtensionError extends BaseError { static defaultMessage: string; } export declare class ForbiddenFileTypeError extends BaseError { static defaultMessage: string; }