/**
 * NativeRepository — delegates all Repository read methods to NativeDatabase (rusqlite via napi-rs).
 *
 * Phase 6.14: every query runs via rusqlite when the native engine is available.
 * Falls back to SqliteRepository (better-sqlite3) when native is unavailable.
 *
 * napi-rs converts Rust snake_case fields to JS camelCase. This class maps them
 * back to the snake_case field names that the Repository interface expects.
 */
import type { AdjacentEdgeRow, CallableNodeRow, CallEdgeRow, ChildNodeRow, ComplexityMetrics, FileNodeRow, ImportEdgeRow, ImportGraphEdgeRow, IntraFileCallEdge, ListFunctionOpts, NativeDatabase, NodeIdRow, NodeRow, NodeRowWithFanIn, QueryOpts, RelatedNodeRow, TriageNodeRow, TriageQueryOpts } from '../../types.js';
import { type FnDepsResult, Repository } from './base.js';
export declare class NativeRepository extends Repository {
    #private;
    constructor(ndb: NativeDatabase, dbPath?: string);
    /** Close the lazy fallback connection if it was opened. */
    closeFallback(): void;
    findNodeById(id: number): NodeRow | undefined;
    findNodesByFile(file: string): NodeRow[];
    findFileNodes(fileLike: string): NodeRow[];
    findNodesWithFanIn(namePattern: string, opts?: QueryOpts): NodeRowWithFanIn[];
    countNodes(): number;
    countEdges(): number;
    countFiles(): number;
    getNodeId(name: string, kind: string, file: string, line: number): number | undefined;
    getFunctionNodeId(name: string, file: string, line: number): number | undefined;
    bulkNodeIdsByFile(file: string): NodeIdRow[];
    findNodeChildren(parentId: number): ChildNodeRow[];
    findNodesByScope(scopeName: string, opts?: QueryOpts): NodeRow[];
    findNodeByQualifiedName(qualifiedName: string, opts?: {
        file?: string;
    }): NodeRow[];
    listFunctionNodes(opts?: ListFunctionOpts): NodeRow[];
    iterateFunctionNodes(opts?: ListFunctionOpts): IterableIterator<NodeRow>;
    findNodesForTriage(opts?: TriageQueryOpts): TriageNodeRow[];
    findCallees(nodeId: number): RelatedNodeRow[];
    findCallers(nodeId: number): RelatedNodeRow[];
    findCallersBatch(nodeIds: number[]): Map<number, RelatedNodeRow[]>;
    findDistinctCallers(nodeId: number): RelatedNodeRow[];
    findAllOutgoingEdges(nodeId: number): AdjacentEdgeRow[];
    findAllIncomingEdges(nodeId: number): AdjacentEdgeRow[];
    findCalleeNames(nodeId: number): string[];
    findCallerNames(nodeId: number): string[];
    findImportTargets(nodeId: number): ImportEdgeRow[];
    findImportSources(nodeId: number): ImportEdgeRow[];
    findImportDependents(nodeId: number): NodeRow[];
    findCrossFileCallTargets(file: string): Set<number>;
    countCrossFileCallers(nodeId: number, file: string): number;
    getClassHierarchy(classNodeId: number): Set<number>;
    findImplementors(nodeId: number): RelatedNodeRow[];
    findInterfaces(nodeId: number): RelatedNodeRow[];
    findIntraFileCallEdges(file: string): IntraFileCallEdge[];
    getCallableNodes(): CallableNodeRow[];
    getCallEdges(): CallEdgeRow[];
    getFileNodesAll(): FileNodeRow[];
    getImportEdges(): ImportGraphEdgeRow[];
    hasCfgTables(): boolean;
    hasEmbeddings(): boolean;
    hasDataflowTable(): boolean;
    getComplexityForNode(nodeId: number): ComplexityMetrics | undefined;
    getFileHash(file: string): string | null;
    hasImplementsEdges(): boolean;
    hasCoChangesTable(): boolean;
    fnDeps(name: string, opts?: {
        depth?: number;
        noTests?: boolean;
        file?: string;
        kind?: string;
    }): FnDepsResult | null;
}
//# sourceMappingURL=native-repository.d.ts.map