import { Platform, GatewayConfig } from './config';
export interface SessionSource {
    platform: Platform;
    chatId: string;
    chatName?: string;
    chatType: 'dm' | 'group' | 'channel';
    userId?: string;
    userName?: string;
    threadId?: string;
    messageId?: string;
}
export interface SessionEntry {
    sessionKey: string;
    sessionId: string;
    createdAt: string;
    updatedAt: string;
    origin?: SessionSource;
    displayName?: string;
    platform?: Platform;
    chatType: string;
    inputTokens: number;
    outputTokens: number;
    totalTokens: number;
    model?: string;
    suspended: boolean;
    resumePending: boolean;
}
export declare function buildSessionKey(source: SessionSource, groupSessionsPerUser?: boolean, threadSessionsPerUser?: boolean): string;
export declare class SessionStore {
    private _config;
    private _sessions;
    constructor(_config: GatewayConfig);
    getOrCreateSession(source: SessionSource, forceNew?: boolean): SessionEntry;
    getSession(sessionKey: string): SessionEntry | undefined;
    updateSession(sessionKey: string, updates: Partial<SessionEntry>): void;
    resetSession(sessionKey: string): SessionEntry | undefined;
    listSessions(): SessionEntry[];
    pruneOld(maxAgeDays: number): number;
}
//# sourceMappingURL=session.d.ts.map