export interface GraphStore {
initialize(): Promise<void>;
addNode(node: Omit<GraphNode, "createdAt" | "updatedAt">): Promise<GraphNode>;
getNode(id: string): Promise<GraphNode | null>;
updateNode(id: string, patch: Partial<Pick<GraphNode, "name" | "properties" | "invalidatedAt">>): Promise<void>;
deleteNode(id: string): Promise<void>;
findNodes(query: GraphNodeQuery): Promise<GraphNode[]>;
addEdge(edge: Omit<GraphEdge, "id" | "createdAt">): Promise<GraphEdge>;
getEdges(nodeId: string, direction?: "in" | "out" | "both"): Promise<GraphEdge[]>;
deleteEdge(id: string): Promise<void>;
traverse(startNodeId: string, options?: GraphTraversalOptions): Promise<{
nodes: GraphNode[];
edges: GraphEdge[];
}>;
search(query: string, options?: GraphSearchOptions): Promise<GraphNode[]>;
close(): Promise<void>;
}