import { IdempotencyKey } from '../../middleware/idempotency/idempotency';
export interface IdempotencyStore {
    get(key: string, tenant: string, route: string): Promise<IdempotencyKey | null>;
    set(key: string, tenant: string, route: string, bodyHash: string, response: {
        statusCode: number;
        body: any;
        headers?: Record<string, string>;
    }): Promise<void>;
    delete(key: string, tenant: string, route: string): Promise<void>;
    cleanup(): Promise<void>;
}
export declare class RedisIdempotencyStore implements IdempotencyStore {
    private redis;
    private ttlSeconds;
    private prefix;
    constructor(redisClient: any, ttlSeconds?: number, prefix?: string);
    private getKey;
    get(key: string, tenant: string, route: string): Promise<IdempotencyKey | null>;
    set(key: string, tenant: string, route: string, bodyHash: string, response: {
        statusCode: number;
        body: any;
        headers?: Record<string, string>;
    }): Promise<void>;
    delete(key: string, tenant: string, route: string): Promise<void>;
    cleanup(): Promise<void>;
}
export declare class InMemoryIdempotencyStore implements IdempotencyStore {
    private store;
    private ttlSeconds;
    constructor(ttlSeconds?: number);
    private getKey;
    get(key: string, tenant: string, route: string): Promise<IdempotencyKey | null>;
    set(key: string, tenant: string, route: string, bodyHash: string, response: {
        statusCode: number;
        body: any;
        headers?: Record<string, string>;
    }): Promise<void>;
    delete(key: string, tenant: string, route: string): Promise<void>;
    cleanup(): Promise<void>;
}
//# sourceMappingURL=IdempotencyStore.d.ts.map