import { RedisClientType } from 'redis';
import * as factory from '../../factory';
/**
 * レート制限キーインターフェース
 */
export interface IRateLimitKey {
    project: {
        id: string;
    };
    reservedTicket: {
        ticketType: {
            validRateLimit: factory.offer.IValidRateLimit;
        };
    };
    reservationFor: {
        startDate: Date;
    };
    reservationNumber: string;
}
/**
 * オファーレート制限リポジトリ
 */
export declare class OfferRateLimitRepo {
    private static readonly KEY_PREFIX_NEW;
    private readonly concurrentLockRepo;
    private readonly redisClient;
    constructor(redisClient: RedisClientType);
    private static createKey;
    /**
     * ロックする
     * discontinue array params(2025-05-26~)
     */
    lock(params: IRateLimitKey): Promise<void>;
    unlock(params: IRateLimitKey): Promise<void>;
    getHolder(ratelimitKey: IRateLimitKey): Promise<string | null>;
}
