import { CacheHandler, IncrementalCache, CacheHandlerValue } from 'next/dist/server/lib/incremental-cache';

type GetParams = Parameters<IncrementalCache['get']>;
type SetParams = Parameters<IncrementalCache['set']>;
type RevalidateParams = Parameters<IncrementalCache['revalidateTag']>;
type CreateRedisStringsHandlerOptions = {
    database?: number;
    keyPrefix?: string;
    timeoutMs?: number;
    revalidateTagQuerySize?: number;
    sharedTagsKey?: string;
    avgResyncIntervalMs?: number;
    redisGetDeduplication?: boolean;
    inMemoryCachingTime?: number;
    defaultStaleAge?: number;
    estimateExpireAge?: (staleAge: number) => number;
};
declare class RedisStringsHandler implements CacheHandler {
    private client;
    private sharedTagsMap;
    private revalidatedTagsMap;
    private inMemoryDeduplicationCache;
    private redisGet;
    private redisDeduplicationHandler;
    private deduplicatedRedisGet;
    private timeoutMs;
    private keyPrefix;
    private redisGetDeduplication;
    private inMemoryCachingTime;
    private defaultStaleAge;
    private estimateExpireAge;
    constructor({ database, keyPrefix, sharedTagsKey, timeoutMs, revalidateTagQuerySize, avgResyncIntervalMs, redisGetDeduplication, inMemoryCachingTime, defaultStaleAge, estimateExpireAge, }: CreateRedisStringsHandlerOptions);
    resetRequestCache(...args: never[]): void;
    private assertClientIsReady;
    get(key: GetParams[0], ctx: GetParams[1]): Promise<(CacheHandlerValue & {
        lastModified: number;
    }) | null>;
    set(key: SetParams[0], data: SetParams[1] & {
        lastModified: number;
    }, ctx: SetParams[2]): Promise<void>;
    revalidateTag(tagOrTags: RevalidateParams[0]): Promise<void>;
}

declare class CachedHandler implements CacheHandler {
    constructor(options: CreateRedisStringsHandlerOptions);
    get(...args: Parameters<RedisStringsHandler["get"]>): ReturnType<RedisStringsHandler["get"]>;
    set(...args: Parameters<RedisStringsHandler["set"]>): ReturnType<RedisStringsHandler["set"]>;
    revalidateTag(...args: Parameters<RedisStringsHandler["revalidateTag"]>): ReturnType<RedisStringsHandler["revalidateTag"]>;
    resetRequestCache(...args: Parameters<RedisStringsHandler["resetRequestCache"]>): ReturnType<RedisStringsHandler["resetRequestCache"]>;
}

export { CachedHandler as default };
