/**
 * JAF ADK Layer - Session Management
 *
 * Functional session management with pluggable providers
 */
import { Session, SessionContext, SessionProvider, SessionMetadata, Content, ValidationResult, createSessionError } from '../types';
export declare const generateSessionId: () => string;
export declare const createSession: (appName: string, userId: string, sessionId?: string, metadata?: Partial<SessionMetadata>) => Session;
export declare const createInMemorySessionProvider: () => SessionProvider;
export { createRedisSessionProvider, type RedisConfig } from './redis-provider.js';
interface MockRedisConfig {
    host: string;
    port: number;
    password?: string;
    database?: number;
    keyPrefix?: string;
}
export declare const createMockRedisSessionProvider: (config: MockRedisConfig) => SessionProvider;
export { createPostgresSessionProvider, type PostgresConfig } from './postgres-provider.js';
export declare const addMessageToSession: (session: Session, message: Content) => Session;
export declare const addArtifactToSession: (session: Session, key: string, value: unknown) => Session;
export declare const removeArtifactFromSession: (session: Session, key: string) => Session;
export declare const updateSessionMetadata: (session: Session, metadata: Partial<SessionMetadata>) => Session;
export declare const clearSessionMessages: (session: Session) => Session;
export declare const validateSession: (session: Session) => ValidationResult<Session>;
export declare const validateSessionContext: (context: SessionContext) => ValidationResult<SessionContext>;
export declare const getOrCreateSession: (provider: SessionProvider, context: SessionContext) => Promise<Session>;
export declare const getSessionStats: (session: Session) => {
    id: string;
    appName: string;
    userId: string;
    messageCount: number;
    userMessages: number;
    modelMessages: number;
    systemMessages: number;
    artifactCount: number;
    totalTextLength: number;
    created: Date;
    lastAccessed: Date | undefined;
    tags: string[] | undefined;
};
export declare const cloneSession: (session: Session, newId?: string) => Session;
export declare const mergeSessionArtifacts: (session: Session, artifacts: Record<string, unknown>) => Session;
export declare const getLastUserMessage: (session: Session) => Content | null;
export declare const getLastModelMessage: (session: Session) => Content | null;
export declare const getMessagesByRole: (session: Session, role: Content["role"]) => Content[];
export declare const hasArtifact: (session: Session, key: string) => boolean;
export declare const getArtifact: (session: Session, key: string) => unknown | null;
export declare const getArtifactKeys: (session: Session) => string[];
export { createSessionError };
export declare const withSessionErrorHandling: <T extends unknown[], R>(fn: (...args: T) => Promise<R>, sessionId?: string) => (...args: T) => Promise<R>;
export declare const createMemoryProviderBridge: (memoryProvider: any) => SessionProvider;
//# sourceMappingURL=index.d.ts.map