import * as redis from 'redis';
export interface IOffer {
    seatSection: string;
    seatNumber: string;
}
export interface ILockKey {
    eventId: string;
    offers: IOffer[];
    expires: Date;
    holder: string;
}
/**
 * 上映イベントに対する座席ごとの在庫状況を保管するリポジトリ
 */
export declare class RedisRepository {
    static KEY_PREFIX: string;
    readonly redisClient: redis.RedisClient;
    constructor(redisClient: redis.RedisClient);
    /**
     * 座席をロックする
     */
    lock(lockKey: ILockKey): Promise<void>;
    /**
     * 座席ロックを解除する
     */
    unlock(params: {
        eventId: string;
        offer: IOffer;
    }): Promise<void>;
    /**
     * 空席でない座席を検索する
     */
    findUnavailableOffersByEventId(params: {
        eventId: string;
    }): Promise<IOffer[]>;
    /**
     * 保持者を取得する
     */
    getHolder(params: {
        eventId: string;
        offer: IOffer;
    }): Promise<string | null>;
}
