import type { BetterSqlite3Database, CodegraphConfig } from '../types.js';
interface DiffRange {
    start: number;
    end: number;
}
interface ParsedDiff {
    changedRanges: Map<string, DiffRange[]>;
    oldRanges: Map<string, DiffRange[]>;
    newFiles: Set<string>;
}
export declare function parseDiffOutput(diffOutput: string): ParsedDiff;
interface CyclesResult {
    passed: boolean;
    cycles: string[][];
}
export declare function checkNoNewCycles(db: BetterSqlite3Database, changedFiles: Set<string>, noTests: boolean): CyclesResult;
interface BlastRadiusViolation {
    name: string;
    kind: string;
    file: string;
    line: number;
    transitiveCallers: number;
}
interface BlastRadiusResult {
    passed: boolean;
    maxFound: number;
    threshold: number;
    violations: BlastRadiusViolation[];
}
export declare function checkMaxBlastRadius(db: BetterSqlite3Database, changedRanges: Map<string, DiffRange[]>, threshold: number, noTests: boolean, maxDepth: number): BlastRadiusResult;
interface SignatureViolation {
    name: string;
    kind: string;
    file: string;
    line: number;
}
interface SignatureResult {
    passed: boolean;
    violations: SignatureViolation[];
}
export declare function checkNoSignatureChanges(db: BetterSqlite3Database, oldRanges: Map<string, DiffRange[]>, noTests: boolean): SignatureResult;
interface BoundaryViolation {
    from: string;
    to: string;
    edgeKind: string;
}
interface BoundaryResult {
    passed: boolean;
    violations: BoundaryViolation[];
    note?: string;
}
export declare function checkNoBoundaryViolations(db: BetterSqlite3Database, changedFiles: Set<string> | string[], repoRoot: string, noTests: boolean): BoundaryResult;
interface PredicateResult {
    name: string;
    passed: boolean;
    [key: string]: unknown;
}
interface CheckSummary {
    total: number;
    passed: number;
    failed: number;
    changedFiles: number;
    newFiles: number;
}
interface CheckResult {
    error?: string;
    predicates?: PredicateResult[];
    summary?: CheckSummary;
    passed?: boolean;
}
interface CheckOpts {
    ref?: string;
    staged?: boolean;
    cycles?: boolean;
    blastRadius?: number | null;
    signatures?: boolean;
    boundaries?: boolean;
    depth?: number;
    noTests?: boolean;
    config?: CodegraphConfig;
}
export declare function checkData(customDbPath: string | undefined, opts?: CheckOpts): CheckResult;
export {};
//# sourceMappingURL=check.d.ts.map