import type { LoadedRepoIntelligenceArtifacts } from "./repo-intelligence.js";
export type GraphQueryMode = "file" | "symbol" | "neighbors" | "impact" | "module";
export interface GraphQuerySummary {
    mode: GraphQueryMode;
    target: string;
    summary: string;
    queryPath: string;
}
export interface FileQueryResult {
    file: string;
    moduleGroup: string;
    exports: string[];
    localFunctions: string[];
    imports: string[];
    importedBy: string[];
    callTargets: string[];
    relationships: string[];
    impact: {
        changed: boolean;
        score: number;
        reasons: string[];
        dependencyDistance: number | null;
        chain: string[];
    } | null;
    history: {
        touches: number;
        commits: number;
        lastTouchedAt: string | null;
    } | null;
    review: {
        score: number;
        reasons: string[];
        failures: number;
        retries: number;
        entryPoint: boolean;
        reverseDependencyHub: boolean;
    } | null;
    decisions: Array<{
        label: string;
        kind: string;
        status: string | null;
        task: string | null;
        nextCommand: string | null;
    }>;
    peers: string[];
}
export interface SymbolQueryResult {
    symbol: string;
    matches: Array<{
        file: string;
        moduleGroup: string;
        kind: "export" | "local-function";
        exports: string[];
        localFunctions: string[];
    }>;
}
export interface NeighborsQueryResult {
    target: string;
    targetKind: "file" | "module";
    moduleGroup: string | null;
    imports: string[];
    importedBy: string[];
    callTargets: string[];
    peers: string[];
    relatedModules: {
        imports: string[];
        importedBy: string[];
    };
}
export interface ImpactQueryResult {
    target: string;
    targetKind: "file" | "module";
    changedFiles: string[];
    impactedFiles: string[];
    rankedFiles: Array<{
        file: string;
        score: number;
        reasons: string[];
        dependencyDistance: number | null;
    }>;
    clusters: Array<{
        id: string;
        score: number;
        changedFiles: string[];
        impactedFiles: string[];
        topFiles: string[];
    }>;
}
export interface ModuleQueryResult {
    module: string;
    files: string[];
    entryPoints: string[];
    imports: string[];
    importedBy: string[];
    topFiles: string[];
    history: {
        touches: number;
        commits: number;
        lastTouchedAt: string | null;
    } | null;
    review: {
        score: number;
        reasons: string[];
        failures: number;
    } | null;
}
export interface GraphQueryResult {
    mode: GraphQueryMode;
    target: string;
    summary: string;
    file?: FileQueryResult;
    symbol?: SymbolQueryResult;
    neighbors?: NeighborsQueryResult;
    impact?: ImpactQueryResult;
    module?: ModuleQueryResult;
}
export declare function loadGraphQueryArtifacts(targetRoot: string): Promise<LoadedRepoIntelligenceArtifacts | null>;
export declare function queryFileSummary(artifacts: LoadedRepoIntelligenceArtifacts, target: string): GraphQueryResult;
export declare function querySymbolLookup(artifacts: LoadedRepoIntelligenceArtifacts, symbol: string): GraphQueryResult;
export declare function queryNeighbors(artifacts: LoadedRepoIntelligenceArtifacts, target: string): GraphQueryResult;
export declare function queryImpact(artifacts: LoadedRepoIntelligenceArtifacts, target: string): GraphQueryResult;
export declare function queryModuleSummary(artifacts: LoadedRepoIntelligenceArtifacts, target: string): GraphQueryResult;
//# sourceMappingURL=graph-query.d.ts.map