export interface QueuedReply {
    tweetId: string;
    userId: string;
}
export declare class RedisService {
    private client;
    private redisKeyPrefix;
    constructor(agentId: string);
    private get repliedTweetsKey();
    private get replyQueueKey();
    private get lastCheckTimeKey();
    private get lastProcessingTweetIdKey();
    ping(): Promise<string>;
    quit(): Promise<void>;
    isTweetReplied(tweetId: string): Promise<boolean>;
    addRepliedTweet(tweetId: string): Promise<number>;
    addRepliedTweets(tweetIds: string[]): Promise<number>;
    getRepliedTweetCount(): Promise<number>;
    addToReplyQueue(reply: QueuedReply): Promise<number>;
    getReplyQueue(): Promise<QueuedReply[]>;
    clearReplyQueue(): Promise<number>;
    /**
     * Remove the first item from the reply queue
     * @returns Number of items removed (0 or 1)
     */
    removeFromReplyQueue(): Promise<number>;
    requeueFailedReplies(replies: QueuedReply[]): Promise<number>;
    setLastCheckTime(time: Date): Promise<'OK'>;
    getLastCheckTime(): Promise<Date | null>;
    setLastProcessingTweetId(tweetId: string): Promise<'OK'>;
    getLastProcessingTweetId(): Promise<string | null>;
    clearLastProcessingTweetId(): Promise<number>;
    private getLeaderboardKey;
    cacheLeaderboard(period: string, limit: number, data: any, agentId?: string): Promise<'OK'>;
    getCachedLeaderboard(period: string, limit: number, agentId?: string): Promise<any | null>;
    getKeys(): {
        repliedTweetsKey: string;
        replyQueueKey: string;
        lastCheckTimeKey: string;
        lastProcessingTweetIdKey: string;
    };
}
//# sourceMappingURL=redis-service.d.ts.map