type AbstractionNodeKind = "episode" | "topic" | "project" | "workflow" | "constraint";
type AbstractionLevel = "micro" | "meso" | "macro";
interface AbstractionNode {
    schemaVersion: 1;
    nodeId: string;
    recordedAt: string;
    sessionKey: string;
    kind: AbstractionNodeKind;
    abstractionLevel: AbstractionLevel;
    title: string;
    summary: string;
    sourceMemoryIds?: string[];
    entityRefs?: string[];
    tags?: string[];
    metadata?: Record<string, string>;
}
interface AbstractionNodeStoreStatus {
    enabled: boolean;
    anchorsEnabled: boolean;
    rootDir: string;
    nodesDir: string;
    nodes: {
        total: number;
        valid: number;
        invalid: number;
        byKind: Partial<Record<AbstractionNodeKind, number>>;
        byLevel: Partial<Record<AbstractionLevel, number>>;
        latestNodeId?: string;
        latestRecordedAt?: string;
        latestSessionKey?: string;
    };
    latestNode?: AbstractionNode;
    invalidNodes: Array<{
        path: string;
        error: string;
    }>;
}
declare function resolveAbstractionNodeStoreDir(memoryDir: string, overrideDir?: string): string;
declare function validateAbstractionNode(raw: unknown): AbstractionNode;
declare function recordAbstractionNode(options: {
    memoryDir: string;
    abstractionNodeStoreDir?: string;
    node: AbstractionNode;
}): Promise<string>;
declare function getAbstractionNodeStoreStatus(options: {
    memoryDir: string;
    abstractionNodeStoreDir?: string;
    enabled: boolean;
    anchorsEnabled: boolean;
}): Promise<AbstractionNodeStoreStatus>;

export { type AbstractionLevel, type AbstractionNode, type AbstractionNodeKind, type AbstractionNodeStoreStatus, getAbstractionNodeStoreStatus, recordAbstractionNode, resolveAbstractionNodeStoreDir, validateAbstractionNode };
