export interface DepGuardResult {
    blocked: boolean;
    code?: 'DEPENDENCY_CYCLE' | 'SELF_DEPENDENCY';
    cyclePath?: string[];
    warnings: {
        code: 'ORPHAN_DEPENDENCY';
        missingId: string;
    }[];
    narrative: string;
}
interface SpecLike {
    id: string;
    dependencies: string[];
}
/**
 * SPEC-728: Pre-approve gate that blocks if the spec participates in a dependency cycle.
 *
 * Checks in order:
 *  1. Self-dependency (spec.dependencies.includes(spec.id))
 *  2. Cycles detected by detectCycles() that include spec.id
 *  3. Orphan dependencies (deps pointing to non-existing spec ids) — warn only, never block
 *
 * @param spec      The spec being transitioned to 'approved'.
 * @param allSpecs  All specs in the project (used to build the full graph).
 * @returns DepGuardResult — blocked: true means the transition is rejected.
 */
export declare function checkApprovedDepGate(spec: SpecLike, allSpecs: readonly SpecLike[]): DepGuardResult;
export {};
//# sourceMappingURL=cycle-detector.d.ts.map