/**
 * Session DNA Manager
 *
 * Generates structured "Session DNA" snapshots that capture the full context
 * of a session — files accessed, decisions made, skills used, and recommended
 * next steps. This enables near-perfect context handover between sessions.
 *
 * Storage: ~/.nexus-prime/sessions/{sessionId}.json
 * Phase: 8A (no dependencies)
 */
export interface SessionDecision {
    description: string;
    rationale: string;
    confidence: number;
}
export interface SessionDNA {
    sessionId: string;
    timestamp: number;
    duration: number;
    filesAccessed: string[];
    filesModified: string[];
    memoriesStored: number;
    memoriesRecalled: number;
    topEntities: string[];
    decisions: SessionDecision[];
    skillsActivated: string[];
    skillsLearned: string[];
    openQuestions: string[];
    nextSteps: string[];
    handoverScore: number;
    tokensOptimized?: number;
}
export interface SessionSnapshotRecord {
    path: string;
    session: SessionDNA;
}
export interface SessionSearchOptions {
    sessionsDir?: string;
    limit?: number;
    minScore?: number;
}
export interface SessionSearchHit extends SessionSnapshotRecord {
    score: number;
    matchedFields: string[];
    excerpt: string;
}
export declare class SessionDNAManager {
    private sessionsDir;
    private sessionId;
    private startTime;
    private filesAccessedMap;
    private filesModifiedSet;
    private decisions;
    private skillsActivated;
    private skillsLearned;
    private openQuestions;
    private nextSteps;
    private entitiesMap;
    private memoriesStored;
    private memoriesRecalled;
    private totalToolCalls;
    private tokensOptimized;
    constructor(sessionId: string, sessionsDir?: string);
    /** Write a lock file for this session with PID for stale detection */
    private writeLock;
    /** Remove the lock file for this session */
    removeLock(): void;
    /** Clean up stale sessions from dead processes */
    private cleanStaleSessions;
    /** Static cleanup for use from CLI commands */
    static cleanStale(sessionsDir?: string): number;
    getSessionId(): string;
    /** Record a file being read/accessed */
    recordFileAccess(filePath: string): void;
    /** Record a file being modified */
    recordFileModified(filePath: string): void;
    /** Record a decision made during the session */
    recordDecision(description: string, rationale: string, confidence?: number): void;
    /** Record a skill being activated */
    recordSkill(skillName: string): void;
    /** Record a skill learned during the session */
    recordSkillLearned(skillName: string): void;
    /** Record an entity being referenced */
    recordEntity(entity: string): void;
    /** Record a tool call (for handover score) */
    recordToolCall(): void;
    /** Record a memory store event */
    recordMemoryStore(): void;
    /** Record a memory recall event */
    recordMemoryRecall(): void;
    /** Add an open question for the next session */
    addOpenQuestion(question: string): void;
    /** Add a recommended next step */
    addNextStep(step: string): void;
    syncFromTelemetry(telemetry: {
        callCount: number;
        memoriesStored: number;
        memoriesRecalled: number;
        tokensOptimized?: number;
    }): void;
    /** Generate the SessionDNA snapshot */
    generate(): SessionDNA;
    /** Save the current SessionDNA to disk and release the session lock */
    flush(): SessionDNA;
    /** Load the most recent SessionDNA from disk */
    static loadLatest(sessionsDir?: string): SessionDNA | null;
    /** Load a specific session by ID */
    static loadById(sessionId: string, sessionsDir?: string): SessionDNA | null;
    static listSnapshots(sessionsDir?: string): SessionSnapshotRecord[];
    static searchSnapshots(query: string, options?: SessionSearchOptions): SessionSearchHit[];
    /** Format SessionDNA for MCP response */
    static format(dna: SessionDNA): string;
}
