/**
 * FalkorDB runtime client for the semantic graph.
 *
 * This is the "runtime" side of the event-sourced architecture — a disposable
 * projection of the event log. The log is canonical; this client is a query
 * cache rebuilt from the log at any time via the replay engine.
 *
 * Per-project isolation: each project gets its own FalkorDB graph named
 * `semantic-{projectName}`, living alongside `cgc-{projectName}` in the same
 * indusk-infra container. See ADR decision #4.
 */
import type { SemanticGraphEvent } from "./events.js";
export interface SemanticGraphClientOptions {
    host?: string;
    port?: number;
}
export declare class SemanticGraphClient {
    private db;
    private graph;
    private readonly graphName;
    private readonly host;
    private readonly port;
    constructor(projectName: string, options?: SemanticGraphClientOptions);
    /** The FalkorDB graph name for this project. */
    get name(): string;
    ensureConnection(): Promise<void>;
    close(): Promise<void>;
    private requireGraph;
    /**
     * Apply a single event to the runtime graph.
     *
     * Event → Cypher mapping per ADR decision #4. Events are idempotent: MERGE
     * for creation, MATCH+SET for mutation. `sync.completed` is a log bookmark,
     * not a graph mutation, so it's a no-op here.
     */
    applyEvent(event: SemanticGraphEvent): Promise<void>;
    /** Delete the entire semantic-{project} graph. Used by rebuild. */
    clearGraph(): Promise<void>;
    countAnchors(options?: {
        includeTombstoned?: boolean;
    }): Promise<number>;
    countEdges(): Promise<number>;
    queryAnchors(options?: {
        status?: string;
    }): Promise<{
        uuid: string;
        kind: string;
        path: string;
        name: string | null;
        blob_hash: string | null;
        status: string;
    }[]>;
    getAnchor(uuid: string): Promise<{
        uuid: string;
        path: string;
        status: string;
    } | null>;
}
