/**
 * Ontology model for OMK project memory.
 *
 * Defines core node types, relationship types, project-isolation fields,
 * and schema helpers used across all graph-backed memory stores.
 */
export declare const ONTOLOGY_SCHEMA_VERSION = 1;
export declare const ONTOLOGY_NODE_TYPES: readonly ["Project", "Session", "Run", "Goal", "Criterion", "Evidence", "Decision", "Task", "Risk", "Constraint", "File", "Symbol", "Test", "Command", "Commit", "MCPServer", "Skill", "Provider", "ProviderRoute", "ProviderFallback", "AuditLink"];
export type OntologyNodeType = (typeof ONTOLOGY_NODE_TYPES)[number];
export declare const ONTOLOGY_RELATIONSHIP_TYPES: readonly ["HAS_GOAL", "HAS_RUN", "HAS_CRITERION", "HAS_EVIDENCE", "HAS_DECISION", "HAS_TASK", "DEPENDS_ON", "HAS_RISK", "HAS_FILE", "HAS_SYMBOL", "HAS_TEST", "HAS_COMMAND", "HAS_COMMIT", "USES_MCP", "USES_SKILL", "USES_PROVIDER", "HAS_PROVIDER_ROUTE", "ROUTES_TO", "FALLS_BACK_TO", "HAS_PROVIDER_FALLBACK", "HAS_AUDIT_LINK", "LINKS_TO"];
export type OntologyRelationshipType = (typeof ONTOLOGY_RELATIONSHIP_TYPES)[number];
/** Base properties present on every ontology node for project isolation. */
export interface OntologyNodeBase {
    /** Unique node identifier (scoped to project). */
    id: string;
    /** Project key for multi-tenant isolation. */
    projectId: string;
    /** SHA-256 hash of the workspace root path. */
    workspaceRootHash: string;
    /** Ontology schema version (default 1). */
    schemaVersion: number;
    /** ISO timestamp when the node was created. */
    createdAt: string;
    /** ISO timestamp when the node was last updated. */
    updatedAt: string;
}
/** Project node managed by graph memory stores. */
export interface ProjectNode extends OntologyNodeBase {
    key: string;
    name: string;
    root: string;
}
/** Session node managed by graph memory stores. */
export interface SessionNode extends OntologyNodeBase {
    key: string;
    sessionId: string;
    projectKey: string;
}
/** Runtime/run node used to link plans, evidence, reports, and provider attempts. */
export interface RunNode extends OntologyNodeBase {
    runId: string;
    status: string;
    startedAt: string;
}
/** Memory node managed by graph memory stores. */
export interface MemoryNode extends OntologyNodeBase {
    key: string;
    path: string;
    content: string;
    source: string;
}
/** MemoryVersion node managed by graph memory stores. */
export interface MemoryVersionNode extends OntologyNodeBase {
    key: string;
    path: string;
    content: string;
    source: string;
}
/** Goal node in the ontology graph. */
export interface GoalNode extends OntologyNodeBase {
    goalId: string;
    title: string;
    objective: string;
    status: string;
    riskLevel: string;
}
/** Criterion node linked to a Goal. */
export interface CriterionNode extends OntologyNodeBase {
    criterionId: string;
    description: string;
    requirement: string;
    weight: number;
}
/** Evidence node for goal verification. */
export interface EvidenceNode extends OntologyNodeBase {
    evidenceId: string;
    passed: boolean;
    message: string;
    checkedAt: string;
}
/** Decision node capturing project decisions. */
export interface DecisionNode extends OntologyNodeBase {
    decisionId: string;
    description: string;
    decidedAt: string;
}
/** Task node for actionable work items. */
export interface TaskNode extends OntologyNodeBase {
    taskId: string;
    description: string;
    status: string;
    priority: string;
}
/** Risk node for tracked risks. */
export interface RiskNode extends OntologyNodeBase {
    riskId: string;
    description: string;
    level: string;
}
/** Command node for recorded commands. */
export interface CommandNode extends OntologyNodeBase {
    commandId: string;
    command: string;
    description: string;
}
/** File node for referenced files. */
export interface FileNode extends OntologyNodeBase {
    path: string;
    description: string;
}
/** Skill node for available skills. */
export interface SkillNode extends OntologyNodeBase {
    name: string;
    description: string;
}
/** MCP Server node for configured MCP servers. */
export interface MCPServerNode extends OntologyNodeBase {
    name: string;
    description: string;
}
/** Provider node for provider-neutral multi-provider orchestration. */
export interface ProviderNode extends OntologyNodeBase {
    providerId: string;
    role: "primary" | "opportunistic";
    description: string;
}
/** Provider route decision node for DAG node execution. */
export interface ProviderRouteNode extends OntologyNodeBase {
    routeId: string;
    nodeId: string;
    requestedProvider: string;
    actualProvider: string;
    reason: string;
    confidence: number;
}
/** Provider fallback event node for preserving run evidence. */
export interface ProviderFallbackNode extends OntologyNodeBase {
    fallbackId: string;
    nodeId: string;
    fromProvider: string;
    toProvider: string;
    reason: string;
}
/** Audit link node connecting reports/evidence to runs, goals, files, or providers. */
export interface AuditLinkNode extends OntologyNodeBase {
    linkId: string;
    label: string;
    target: string;
    targetType: string;
}
/** Minimal executor interface accepted by {@link createOntologyConstraints}. */
export interface OntologyConstraintExecutor {
    executeQuery(query: string, params?: Record<string, unknown>, options?: {
        database?: string;
    }): Promise<unknown>;
}
/**
 * Create unique constraints for every ontology node type.
 * Each constraint enforces uniqueness on `(projectId, id)` for the label.
 */
export declare function createOntologyConstraints(executor: OntologyConstraintExecutor, database?: string): Promise<void>;
/** Kuzu DDL statements for the full OMK ontology schema. */
export interface KuzuOntologySchema {
    nodeTables: string[];
    relTables: string[];
}
/** Build Kuzu CREATE NODE TABLE / CREATE REL TABLE DDLs from the ontology model. */
export declare function buildKuzuOntologySchema(): KuzuOntologySchema;
/** Cypher write keywords rejected by the read-only graph query guard. */
export declare const MUTATION_KEYWORDS: string[];
/**
 * Return true if the provided Cypher query contains write mutations.
 * Strips line comments and block comments before scanning.
 */
export declare function containsMutation(query: string): boolean;
