import { AutoBeAnalyze, AutoBeAnalyzeWriteSectionEvent } from "@autobe/interface";
export declare const buildConstraintConsistencyReport: (props: {
    files: Array<{
        file: AutoBeAnalyze.IFileScenario;
        sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
    }>;
}) => string;
export interface IConstraintConflict {
    key: string;
    values: Array<{
        display: string;
        files: string[];
    }>;
}
/**
 * Detect numeric constraint conflicts across files as structured data.
 *
 * Returns an array of conflicts where the same constraint key has different
 * normalized values across files.
 */
export declare const detectConstraintConflicts: (props: {
    files: Array<{
        file: AutoBeAnalyze.IFileScenario;
        sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
    }>;
}) => IConstraintConflict[];
/** Build a map from filename → list of conflict feedback strings. */
export declare const buildFileConflictMap: (conflicts: IConstraintConflict[]) => Map<string, string[]>;
export interface IAttributeDuplicate {
    key: string;
    files: string[];
    hasValueConflict: boolean;
    values?: Array<{
        specification: string;
        files: string[];
    }>;
}
/**
 * Detect cross-file attribute duplication from YAML spec blocks.
 *
 * Returns attributes that are defined in YAML blocks across multiple files.
 */
export declare const detectAttributeDuplicates: (props: {
    files: Array<{
        file: AutoBeAnalyze.IFileScenario;
        sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
    }>;
}) => IAttributeDuplicate[];
export declare const buildFileAttributeDuplicateMap: (duplicates: IAttributeDuplicate[]) => Map<string, string[]>;
export interface IEnumConflict {
    key: string;
    values: Array<{
        enumSet: string;
        display: string;
        files: string[];
    }>;
}
/**
 * Detect enum value conflicts from YAML spec blocks.
 *
 * Scans YAML attribute blocks for enum-like constraints and detects when
 * different files define different enum value sets for the same attribute.
 */
export declare const detectEnumConflicts: (props: {
    files: Array<{
        file: AutoBeAnalyze.IFileScenario;
        sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
    }>;
}) => IEnumConflict[];
export declare const buildFileEnumConflictMap: (conflicts: IEnumConflict[]) => Map<string, string[]>;
export interface IPermissionConflict {
    actorOperation: string;
    rules: Array<{
        condition: string;
        files: string[];
    }>;
}
/**
 * Detect permission rule conflicts from YAML spec blocks.
 *
 * A conflict occurs when one YAML block allows an action but another doesn't
 * include it for the same actor+resource.
 */
export declare const detectPermissionConflicts: (props: {
    files: Array<{
        file: AutoBeAnalyze.IFileScenario;
        sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
    }>;
}) => IPermissionConflict[];
export declare const buildFilePermissionConflictMap: (conflicts: IPermissionConflict[]) => Map<string, string[]>;
export interface IStateFieldConflict {
    entity: string;
    conflictType: string;
    fields: Array<{
        fieldName: string;
        specification: string;
        files: string[];
    }>;
}
/**
 * Detect state field conflicts from YAML spec blocks.
 *
 * Known contradiction patterns:
 *
 * 1. Same entity has both `deletedAt` (datetime) and `isDeleted` (boolean)
 * 2. Same entity has `status` (enum) and semantically equivalent `is*` booleans
 */
export declare const detectStateFieldConflicts: (props: {
    files: Array<{
        file: AutoBeAnalyze.IFileScenario;
        sectionEvents: AutoBeAnalyzeWriteSectionEvent[][];
    }>;
}) => IStateFieldConflict[];
export declare const buildFileStateFieldConflictMap: (conflicts: IStateFieldConflict[]) => Map<string, string[]>;
