import { z } from 'zod'; import multer from 'multer'; export type FileValidationOptions = { maxSize?: number; allowedMimeTypes?: string[]; allowedExtensions?: string[]; required?: boolean; multiple?: boolean; maxFiles?: number; }; export declare class FileValidator { private options; constructor(options?: FileValidationOptions); } export declare const createFileSchema: (options?: FileValidationOptions) => z.ZodAny; export type FileChain = z.ZodTypeAny & { required: () => FileChain; optional: () => FileChain; multiple: () => FileChain; maxSize: (size: number) => FileChain; maxFiles: (count: number) => FileChain; mimeTypes: (types: string[]) => FileChain; extensions: (exts: string[]) => FileChain; }; export declare function zFileChain(options?: FileValidationOptions): FileChain; declare class FileSchemaBuilder { private options; constructor(options?: FileValidationOptions); required(): this; optional(): this; multiple(): this; maxSize(size: number): this; maxFiles(count: number): this; mimeTypes(types: string[]): this; extensions(exts: string[]): this; build(): z.ZodAny; } export declare const zFile: ((options?: FileValidationOptions) => z.ZodAny) & { file: (options?: FileValidationOptions) => z.ZodAny; image: (options?: FileValidationOptions) => z.ZodAny; document: (options?: FileValidationOptions) => z.ZodAny; video: (options?: FileValidationOptions) => z.ZodAny; audio: (options?: FileValidationOptions) => z.ZodAny; builder: (options?: FileValidationOptions) => FileSchemaBuilder; chain: (options?: FileValidationOptions) => FileChain; required: (options?: FileValidationOptions) => FileChain; multiple: (options?: FileValidationOptions) => FileChain; optional: (options?: FileValidationOptions) => FileChain; maxSize: (size: number) => FileChain; maxFiles: (count: number) => FileChain; mimeTypes: (types: string[]) => FileChain; extensions: (exts: string[]) => FileChain; }; export declare const zFileSchema: ((options?: FileValidationOptions) => z.ZodAny) & { file: (options?: FileValidationOptions) => z.ZodAny; image: (options?: FileValidationOptions) => z.ZodAny; document: (options?: FileValidationOptions) => z.ZodAny; video: (options?: FileValidationOptions) => z.ZodAny; audio: (options?: FileValidationOptions) => z.ZodAny; builder: (options?: FileValidationOptions) => FileSchemaBuilder; chain: (options?: FileValidationOptions) => FileChain; required: (options?: FileValidationOptions) => FileChain; multiple: (options?: FileValidationOptions) => FileChain; optional: (options?: FileValidationOptions) => FileChain; maxSize: (size: number) => FileChain; maxFiles: (count: number) => FileChain; mimeTypes: (types: string[]) => FileChain; extensions: (exts: string[]) => FileChain; }; export declare const createMulterStorage: (config: { store: "memory" | "disk"; diskPath?: string; }) => multer.StorageEngine; export declare const FileValidationPresets: { image: { maxSize: number; allowedMimeTypes: string[]; allowedExtensions: string[]; }; document: { maxSize: number; allowedMimeTypes: string[]; allowedExtensions: string[]; }; video: { maxSize: number; allowedMimeTypes: string[]; allowedExtensions: string[]; }; audio: { maxSize: number; allowedMimeTypes: string[]; allowedExtensions: string[]; }; }; export {}; //# sourceMappingURL=file-validators.d.ts.map