interface SymbolInfo {
    id: number;
    name: string;
    kind: string;
    file: string;
    line: number;
    lineCount: number;
    fanIn: number;
    fanOut: number;
}
interface CallerInfo {
    name: string;
    kind: string;
    file: string;
    line: number;
}
interface ChangedSymbol {
    name: string;
    kind: string;
    file: string;
    base: {
        line: number;
        lineCount: number;
        fanIn: number;
        fanOut: number;
    };
    target: {
        line: number;
        lineCount: number;
        fanIn: number;
        fanOut: number;
    };
    changes: {
        lineCount: number;
        fanIn: number;
        fanOut: number;
    };
    impact?: CallerInfo[];
}
interface BranchCompareOpts {
    repoRoot?: string;
    depth?: number;
    noTests?: boolean;
    engine?: string;
}
interface BranchCompareSummary {
    added: number;
    removed: number;
    changed: number;
    totalImpacted: number;
    filesAffected: number;
}
type SymbolWithoutId = Omit<SymbolInfo, 'id'> & {
    impact?: CallerInfo[];
};
interface BranchCompareResult {
    error?: string;
    baseRef?: string;
    targetRef?: string;
    baseSha?: string;
    targetSha?: string;
    changedFiles?: string[];
    added?: SymbolWithoutId[];
    removed?: SymbolWithoutId[];
    changed?: ChangedSymbol[];
    summary?: BranchCompareSummary;
}
export declare function branchCompareData(baseRef: string, targetRef: string, opts?: BranchCompareOpts): Promise<BranchCompareResult>;
export declare function branchCompareMermaid(data: BranchCompareResult): string;
export {};
//# sourceMappingURL=branch-compare.d.ts.map