/**
 * Section 17 — Persistent Project Memory
 *
 * 프로젝트 폴더로 들어가면 이전 세션의 상태를 자동 복원:
 * - last session, open todos, decisions, current branch, known failure patterns
 *
 * Memory Mount Flow:
 *   cwd → ProjectRootResolver → ProjectIdResolver → MemoryStore.open(projectId)
 *   → ProjectStateCapsule load → Intent-specific retrieval → Context injection
 *
 * Storage: .omk/memory/*.md (human-readable, git-friendly)
 */
export interface CapsuleTodo {
    readonly id: string;
    readonly content: string;
    readonly status: "pending" | "in_progress" | "completed" | "cancelled";
    readonly priority: "high" | "medium" | "low";
    readonly createdAt: string;
}
export interface CapsuleDecision {
    readonly id: string;
    readonly summary: string;
    readonly rationale: string;
    readonly decidedAt: string;
    readonly reversible: boolean;
}
export interface ProjectStateCapsule {
    readonly projectId: string;
    readonly rootPath: string;
    readonly projectName: string;
    readonly currentBranch?: string;
    readonly lastSession?: {
        readonly sessionId: string;
        readonly endedAt: string;
        readonly summary: string;
        readonly lastGoal?: string;
    };
    readonly activeTodos: readonly CapsuleTodo[];
    readonly recentDecisions: readonly CapsuleDecision[];
    readonly projectInvariants: readonly string[];
    readonly preferredCommands: readonly string[];
    readonly knownFailurePatterns: readonly string[];
    readonly importantFiles: readonly string[];
    readonly openQuestions: readonly string[];
    readonly updatedAt: string;
}
export interface MemoryStoreOptions {
    readonly cwd: string;
    readonly memoryDir?: string;
}
export interface MemorySearchResult {
    readonly file: string;
    readonly matches: readonly {
        line: number;
        text: string;
    }[];
}
export interface PersistentMemoryStore {
    load(): Promise<ProjectStateCapsule>;
    save(capsule: Partial<ProjectStateCapsule>): Promise<void>;
    appendDecision(decision: Omit<CapsuleDecision, "id" | "decidedAt">): Promise<void>;
    appendTodo(todo: Omit<CapsuleTodo, "id" | "createdAt">): Promise<void>;
    search(query: string): Promise<MemorySearchResult[]>;
    clear(): Promise<void>;
    getMemoryDir(): string;
}
/**
 * Create a persistent memory store for the given project.
 */
export declare function createPersistentMemoryStore(options: MemoryStoreOptions): PersistentMemoryStore;
