import type { ContentHash } from './decision-semantics.js';
export interface BoundaryProfile {
    /** Profile name, namespaced. e.g. 'aps:commerce:preflight' */
    name: string;
    /** Semantic version of the profile */
    version: string;
    /** Decision type this profile applies to */
    decisionType: string;
    /** Sorted array of field paths that define decision identity */
    fields: string[];
    /** Optional description */
    description?: string;
}
export type ProfileCompatibility = 'identical' | 'superset' | 'subset' | 'overlapping' | 'disjoint';
export interface ProfileComparisonResult {
    compatibility: ProfileCompatibility;
    sharedFields: string[];
    onlyInA: string[];
    onlyInB: string[];
}
export type DecisionEquivalence = 'equivalent' | 'equivalent_on_intersection' | 'divergent' | 'divergent_on_intersection' | 'incomparable';
export interface DecisionComparisonResult {
    equivalence: DecisionEquivalence;
    profileA: string;
    profileB: string;
    profileCompatibility: ProfileCompatibility;
    /** Fields where the decisions agree (only populated for overlapping/identical) */
    agreedFields?: string[];
    /** Fields where the decisions diverge */
    divergentFields?: string[];
    /** If projected to intersection: hash of A on shared fields */
    projectedHashA?: string;
    /** If projected to intersection: hash of B on shared fields */
    projectedHashB?: string;
}
export interface ThresholdDistance {
    /** The metric being evaluated (e.g. 'risk_score', 'reputation_mu') */
    metric: string;
    /** The threshold value that determines the boundary */
    threshold: number;
    /** The actual computed value */
    actual: number;
    /** Absolute distance from threshold: |actual - threshold| */
    distance: number;
    /** Which side of the threshold: 'above' | 'below' */
    side: 'above' | 'below';
}
export interface ProfileTaggedDecision {
    /** The boundary profile used */
    profileName: string;
    /** Content hash computed using the profile's field set */
    contentHash: ContentHash;
    /** The raw decision fields (superset of profile fields) */
    fields: Record<string, unknown>;
    /** Optional threshold distances for boundary-adjacent decisions */
    thresholdDistances?: ThresholdDistance[];
}
//# sourceMappingURL=decision-equivalence.d.ts.map