import * as IORedis from 'ioredis';
import { Message } from './CQHelper';
import { RequestIdentity } from './Command';
export declare type HistoryMessage = Record<string, Array<Message[]>>;
export interface SessionData extends RequestIdentity {
    className: string;
    sessionName: string;
    historyMessage: HistoryMessage;
}
export declare class Session {
    private static readonly debug;
    private readonly redis;
    constructor(port?: number, host?: string, options?: IORedis.RedisOptions);
    constructor(host?: string, options?: IORedis.RedisOptions);
    constructor(options?: IORedis.RedisOptions);
    private static genSessionKey;
    getSession(params: RequestIdentity): Promise<SessionData | null>;
    setSession(params: RequestIdentity, data: Omit<SessionData, 'sessionName' | keyof RequestIdentity>, sessionName: SessionData['sessionName'], expireSeconds?: number): Promise<void>;
    updateSession<T extends keyof SessionData>(params: RequestIdentity, hashKey: T, val: SessionData[T]): Promise<void>;
    removeSession(params: RequestIdentity): Promise<void>;
}
