/**
 * Semantic graph event schema.
 *
 * The event log is the canonical source of truth for the semantic graph. Every
 * mutation — anchor lifecycle, edge attachment/invalidation, sync completion —
 * is a single event appended to `.indusk/graph/semantic-graph.log` as JSONL.
 * The runtime graph in FalkorDB is a disposable projection of these events.
 *
 * Events are tagged with the jj change ID active when they were written so
 * replay can filter by jj ancestry — this is how branch/rebase/amend safety
 * works without per-branch forking.
 *
 * See `.indusk/planning/cgc-graphiti-bridge/adr.md` for the full architecture.
 */
import { z } from "zod";
/** The kinds of anchors the sync pipeline knows how to project. */
export declare const AnchorKindSchema: z.ZodEnum<{
    function: "function";
    file: "file";
    class: "class";
    interface: "interface";
}>;
export type AnchorKind = z.infer<typeof AnchorKindSchema>;
export declare const AnchorCreatedEventSchema: z.ZodObject<{
    change_id: z.ZodString;
    ts: z.ZodString;
    type: z.ZodLiteral<"anchor.created">;
    uuid: z.ZodString;
    kind: z.ZodEnum<{
        function: "function";
        file: "file";
        class: "class";
        interface: "interface";
    }>;
    path: z.ZodString;
    name: z.ZodOptional<z.ZodString>;
    parent_uuid: z.ZodOptional<z.ZodString>;
    blob_hash: z.ZodOptional<z.ZodString>;
    adapter: z.ZodString;
}, z.core.$strip>;
export type AnchorCreatedEvent = z.infer<typeof AnchorCreatedEventSchema>;
export declare const AnchorMovedEventSchema: z.ZodObject<{
    change_id: z.ZodString;
    ts: z.ZodString;
    type: z.ZodLiteral<"anchor.moved">;
    uuid: z.ZodString;
    from_path: z.ZodString;
    to_path: z.ZodString;
    blob_hash: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type AnchorMovedEvent = z.infer<typeof AnchorMovedEventSchema>;
export declare const AnchorTombstonedEventSchema: z.ZodObject<{
    change_id: z.ZodString;
    ts: z.ZodString;
    type: z.ZodLiteral<"anchor.tombstoned">;
    uuid: z.ZodString;
}, z.core.$strip>;
export type AnchorTombstonedEvent = z.infer<typeof AnchorTombstonedEventSchema>;
export declare const EdgeAttachedEventSchema: z.ZodObject<{
    change_id: z.ZodString;
    ts: z.ZodString;
    type: z.ZodLiteral<"edge.attached">;
    edge_uuid: z.ZodString;
    source_uuid: z.ZodString;
    target_uuid: z.ZodString;
    relation: z.ZodString;
    payload: z.ZodRecord<z.ZodString, z.ZodUnknown>;
}, z.core.$strip>;
export type EdgeAttachedEvent = z.infer<typeof EdgeAttachedEventSchema>;
export declare const EdgeInvalidatedEventSchema: z.ZodObject<{
    change_id: z.ZodString;
    ts: z.ZodString;
    type: z.ZodLiteral<"edge.invalidated">;
    edge_uuid: z.ZodString;
    reason: z.ZodString;
}, z.core.$strip>;
export type EdgeInvalidatedEvent = z.infer<typeof EdgeInvalidatedEventSchema>;
export declare const SyncCompletedEventSchema: z.ZodObject<{
    change_id: z.ZodString;
    ts: z.ZodString;
    type: z.ZodLiteral<"sync.completed">;
    adapter: z.ZodString;
    deltas: z.ZodObject<{
        created: z.ZodNumber;
        moved: z.ZodNumber;
        tombstoned: z.ZodNumber;
    }, z.core.$strip>;
    duration_ms: z.ZodNumber;
}, z.core.$strip>;
export type SyncCompletedEvent = z.infer<typeof SyncCompletedEventSchema>;
export declare const SemanticGraphEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
    change_id: z.ZodString;
    ts: z.ZodString;
    type: z.ZodLiteral<"anchor.created">;
    uuid: z.ZodString;
    kind: z.ZodEnum<{
        function: "function";
        file: "file";
        class: "class";
        interface: "interface";
    }>;
    path: z.ZodString;
    name: z.ZodOptional<z.ZodString>;
    parent_uuid: z.ZodOptional<z.ZodString>;
    blob_hash: z.ZodOptional<z.ZodString>;
    adapter: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    change_id: z.ZodString;
    ts: z.ZodString;
    type: z.ZodLiteral<"anchor.moved">;
    uuid: z.ZodString;
    from_path: z.ZodString;
    to_path: z.ZodString;
    blob_hash: z.ZodOptional<z.ZodString>;
}, z.core.$strip>, z.ZodObject<{
    change_id: z.ZodString;
    ts: z.ZodString;
    type: z.ZodLiteral<"anchor.tombstoned">;
    uuid: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    change_id: z.ZodString;
    ts: z.ZodString;
    type: z.ZodLiteral<"edge.attached">;
    edge_uuid: z.ZodString;
    source_uuid: z.ZodString;
    target_uuid: z.ZodString;
    relation: z.ZodString;
    payload: z.ZodRecord<z.ZodString, z.ZodUnknown>;
}, z.core.$strip>, z.ZodObject<{
    change_id: z.ZodString;
    ts: z.ZodString;
    type: z.ZodLiteral<"edge.invalidated">;
    edge_uuid: z.ZodString;
    reason: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    change_id: z.ZodString;
    ts: z.ZodString;
    type: z.ZodLiteral<"sync.completed">;
    adapter: z.ZodString;
    deltas: z.ZodObject<{
        created: z.ZodNumber;
        moved: z.ZodNumber;
        tombstoned: z.ZodNumber;
    }, z.core.$strip>;
    duration_ms: z.ZodNumber;
}, z.core.$strip>], "type">;
export type SemanticGraphEvent = z.infer<typeof SemanticGraphEventSchema>;
/**
 * Parse a single JSONL line into a validated event.
 *
 * Throws on malformed JSON or schema mismatch. Callers that want
 * skip-and-continue semantics should catch and log.
 */
export declare function parseEvent(line: string): SemanticGraphEvent;
/** Serialize an event to a single JSONL line (no trailing newline). */
export declare function serializeEvent(event: SemanticGraphEvent): string;
