import { Request, Response, NextFunction } from 'express';
interface ExtendableRequest extends Request {
    files?: Express.Multer.File[] | {
        [fieldname: string]: Express.Multer.File[];
    } | undefined;
    [key: string]: any;
}
interface ExtendableResponse extends Response {
    [key: string]: any;
}
type GenericMiddleware<TReq extends ExtendableRequest = ExtendableRequest, TRes extends ExtendableResponse = ExtendableResponse> = (req: TReq, res: TRes, next: NextFunction) => void;
type GenericHandler<TReq extends ExtendableRequest = ExtendableRequest, TRes extends ExtendableResponse = ExtendableResponse> = (req: TReq, res: TRes) => Promise<void>;
interface AutoDocOptions {
    docsDir?: string;
}
declare const initDocsDirectory: (customDocsDir?: string) => Promise<void>;
declare const autoDocMiddleware: <TReq extends ExtendableRequest = ExtendableRequest, TRes extends ExtendableResponse = ExtendableResponse>(options?: AutoDocOptions) => GenericMiddleware<TReq, TRes>;
declare const docsHandler: <TReq extends ExtendableRequest = ExtendableRequest, TRes extends ExtendableResponse = ExtendableResponse>() => GenericHandler<TReq, TRes>;
export { autoDocMiddleware, docsHandler, initDocsDirectory, type ExtendableRequest, type ExtendableResponse, type GenericMiddleware, type GenericHandler };
