export interface Session {
    id?: number;
    toolName: string;
    project: string;
    startTime: string;
    endTime?: string;
    filesTouched: string[];
    keyDecisions: string[];
    contextSnapshot: string;
}
export interface ContextChain {
    sessions: Session[];
    commonFiles: string[];
    recurringDecisions: string[];
    progression: string;
}
export interface BugRecord {
    id?: number;
    type: string;
    location: string;
    rootCause: string;
    fix: string;
    timeMinutes: number;
    preventable: boolean;
    project: string;
    filePath: string;
    occurredAt: string;
    solvedAt: string;
    recurrenceCount: number;
}
export interface DecisionRecord {
    id?: number;
    technology: string;
    reason: string;
    outcome: string;
    wasRight: boolean | null;
    project: string;
    createdAt: string;
}
export interface SessionSearchResult {
    session: Session;
    score: number;
    matches: string[];
}
export interface SessionApproach {
    id: number;
    sessionId: number | null;
    project: string;
    approach: string;
    status: string;
    reason: string | null;
    createdAt: string;
}
export interface SessionFile {
    id: number;
    sessionId: number | null;
    project: string;
    filePath: string;
    touchCount: number;
    firstTouched: string;
    lastTouched: string;
}
export interface SessionQuestion {
    id: number;
    sessionId: number | null;
    project: string;
    question: string;
    priority: string;
    resolved: boolean;
    answer: string | null;
    createdAt: string;
    resolvedAt: string | null;
}
export declare class SessionMemory {
    constructor();
    startSession(toolName: string, project: string): number;
    endSession(sessionId: number, params: {
        filesTouched?: string[];
        keyDecisions?: string[];
        contextSnapshot?: string;
    }): void;
    recordDecision(params: {
        sessionId?: number;
        technology: string;
        reason: string;
        outcome?: string;
        wasRight?: boolean;
        project: string;
    }): number;
    recordBug(params: {
        type: string;
        location: string;
        rootCause: string;
        fix: string;
        timeMinutes: number;
        preventable: boolean;
        project: string;
        filePath: string;
    }): number;
    getBugHistory(project?: string): BugRecord[];
    getRepeatBugs(): Array<{
        description: string;
        count: number;
        files: string[];
    }>;
    getDecisionHistory(project?: string): DecisionRecord[];
    getDecisionSummary(): Array<{
        technology: string;
        times: number;
        wasRightPct: number;
    }>;
    getRecentSessions(limit?: number): Session[];
    getSessionsByTool(toolName: string, limit?: number): Session[];
    buildContextChain(project?: string, maxSessions?: number): ContextChain;
    searchSessions(query: string, limit?: number): SessionSearchResult[];
    getLastSessionForProject(project: string): Session | null;
    getSessionStats(): Record<string, unknown>;
    recordApproach(params: {
        sessionId?: number;
        project: string;
        approach: string;
        status?: 'succeeded' | 'failed' | 'partial' | 'tried';
        reason?: string;
    }): number;
    getSessionApproaches(sessionId: number): SessionApproach[];
    getRecentApproaches(project: string, limit?: number): Array<{
        approach: string;
        status: string;
        count: number;
        lastReason: string | null;
        lastSeen: string;
    }>;
    recordFileTouch(params: {
        sessionId?: number;
        project: string;
        filePath: string;
    }): void;
    getSessionFiles(sessionId: number): SessionFile[];
    getMostTouchedFiles(project: string, limit?: number): Array<{
        filePath: string;
        touchCount: number;
        sessionCount: number;
        lastTouched: string;
    }>;
    recordQuestion(params: {
        sessionId?: number;
        project: string;
        question: string;
        priority?: 'low' | 'medium' | 'high';
    }): number;
    resolveQuestion(questionId: number, answer: string): void;
    getOpenQuestions(project: string, includeResolved?: boolean): SessionQuestion[];
}
//# sourceMappingURL=session-memory.d.ts.map