import type { Readable } from "node:stream";
import type { MulterFile, StorageEngine } from "../interfaces";
type DestinationCallback = (error: Error | null, destination: string) => void;
type FilenameCallback = (error: Error | null, filename: string) => void;
export interface DiskStorageOptions {
    destination?: string | ((req: any, file: Partial<MulterFile>, callback: DestinationCallback) => void);
    filename?: (req: any, file: Partial<MulterFile>, callback: FilenameCallback) => void;
}
export declare class DiskStorage implements StorageEngine {
    private readonly getDestination;
    private readonly getFilename;
    constructor(opts?: DiskStorageOptions);
    _handleFile(req: any, file: Pick<MulterFile, "fieldname" | "originalname" | "encoding" | "mimetype"> & {
        stream: Readable;
    }, callback: (error: Error | null, info?: Partial<MulterFile>) => void): void;
    _removeFile(_req: any, file: MulterFile, callback: (error: Error | null) => void): void;
}
export declare function diskStorage(opts?: DiskStorageOptions): StorageEngine;
export {};
