import { Redis } from "ioredis";
import { BuildReservation, DataStore } from "../../ports/data-store";
export declare class RedisDataStore implements DataStore {
    private readonly client;
    constructor(client: Redis);
    tryReserve<V>(key: string, reservationExpiryMs: number): Promise<BuildReservation<V>>;
    has(key: string): Promise<boolean>;
    get<V>(key: string): Promise<BuildReservation<V> | null>;
    tryUpdateReservation<V>(key: string, buildId: string, result: V, expiry?: number | undefined): Promise<boolean>;
    delete(key: string): Promise<void>;
    updateExpiry(key: string, expiry?: number): Promise<void>;
    close(): void;
}
export declare const tryReserveAndReturnExistingBuildLuaScript: string;
export declare const tryUpdateReservationLuaScript: string;
export declare class RedisConnectionOptions {
    sentinel?: {
        host: string;
        port: number;
        primaryName: string;
    };
    url?: string;
    password?: string;
}
export declare function createRedisDataStore(redisConnectionOptions: RedisConnectionOptions): RedisDataStore;
