import { NextFunction, Request, Response, Send } from "express";
import { ICache } from "./cache";
import { RequestQueue } from "./request-queue";
declare global {
    namespace Express {
        interface Response {
            _originalJson: Send;
            _originalSend: Send;
        }
    }
}
interface ExpressRouteCacheConfig {
    cache?: ICache;
}
export declare class ExpressRouteCache {
    private cacher;
    queue: RequestQueue;
    constructor(config?: ExpressRouteCacheConfig);
    cache(ttlSeconds: number): (req: Request, res: Response, next: NextFunction) => Promise<Response<any, Record<string, any>> | undefined>;
    has(cacheKey: string): Promise<boolean>;
    del(cacheKey: string): Promise<boolean>;
    flush(): Promise<void>;
}
export {};
