/**
 * TODO: GraphRAG Enhancements
 *  - Add support for more edge types (sequential, hierarchical, citation, etc)
 *  - Allow for custom edge types
 *  - Utilize metadata for richer connections
 *  - Improve graph traversal and querying using types
 */
type SupportedEdgeType = 'semantic';
type GraphMetadata = Record<string, any>;
export interface GraphNode {
    id: string;
    content: string;
    embedding?: number[];
    metadata?: GraphMetadata;
}
export interface RankedNode extends GraphNode {
    score: number;
}
export interface GraphEdge {
    source: string;
    target: string;
    weight: number;
    type: SupportedEdgeType;
}
export interface GraphChunk {
    text: string;
    metadata: Record<string, any>;
}
export interface GraphEmbedding {
    vector: number[];
}
export declare class GraphRAG {
    private nodes;
    private edges;
    private dimension;
    private threshold;
    constructor(dimension?: number, threshold?: number);
    addNode(node: GraphNode): void;
    addEdge(edge: GraphEdge): void;
    getNodes(): GraphNode[];
    getEdges(): GraphEdge[];
    getEdgesByType(type: string): GraphEdge[];
    clear(): void;
    updateNodeContent(id: string, newContent: string): void;
    private getNeighbors;
    private cosineSimilarity;
    createGraph(chunks: GraphChunk[], embeddings: GraphEmbedding[]): void;
    private selectWeightedNeighbor;
    private randomWalkWithRestart;
    /**
     * Query the graph with a dense embedding and optional metadata filter.
     *
     * @param query - The embedding vector to query.
     * @param topK - Number of top results to return.
     * @param randomWalkSteps - Steps for random walk reranking.
     * @param restartProb - Restart probability for random walk.
     * @param filter - Optional strict metadata filter. All key-value pairs must match exactly.
     */
    query({ query, topK, randomWalkSteps, restartProb, filter, }: {
        query: number[];
        topK?: number;
        randomWalkSteps?: number;
        restartProb?: number;
        filter?: Partial<GraphMetadata>;
    }): RankedNode[];
}
export {};
//# sourceMappingURL=index.d.ts.map