/**
 * PolicyMatrix error hierarchy -- P4-RET-02
 *
 * Error classes thrown by PolicyMatrix when resolution fails or when
 * pack configuration is invalid at construction time.
 *
 * All errors extend RetentionError (which extends LlmProviderError) so
 * they sit in the unified error hierarchy and callers can use
 * `instanceof RetentionError` to catch all retention-engine errors.
 *
 * Error classes:
 *   PolicyMatrixError           -- base for all policy-matrix errors
 *   MissingRetentionPolicyError -- AC 20: no policy covers a tuple
 *   ConflictingContractTermsError -- two active terms disagree on same tuple
 *   InvalidPackRetentionError   -- malformed retentionPolicy at init
 *
 * Fail-closed philosophy: the engine never silently defaults to zero
 * retention. Missing policy = hard error. Conflicting terms = hard error.
 *
 * Spec: P4-RET-01 Section 2.2, AC 20
 *
 * @connexum/ai-governance
 */
import { RetentionError } from './classifier';
/**
 * Base class for all errors originating from PolicyMatrix.
 * Catch this to handle any policy-matrix failure without knowing the subtype.
 */
export declare class PolicyMatrixError extends RetentionError {
    constructor(opts: {
        message: string;
        code: string;
    });
}
/**
 * Thrown when PolicyMatrix.resolve() finds no applicable policy for a
 * (tenantId, contractId, dataClass) tuple.
 *
 * Fail-closed: the write that created the record succeeded (classification
 * happened), but retention processing refuses to schedule or execute
 * deletion until an operator defines a policy covering this tuple.
 *
 * The dashboard should surface this as a coverage gap requiring operator
 * action before the next scheduled retention job.
 *
 * Spec: AC 20
 */
export declare class MissingRetentionPolicyError extends PolicyMatrixError {
    readonly tenantId: string;
    readonly contractId: string;
    readonly dataClass: string;
    constructor(tenantId: string, contractId: string, dataClass: string);
}
/**
 * Thrown when two active ContractTerms cover the same
 * (tenantId, contractId, dataClass) tuple but specify different retention
 * parameters. This is an operator configuration error.
 *
 * The first two conflicting terms are attached for diagnostics.
 */
export declare class ConflictingContractTermsError extends PolicyMatrixError {
    readonly tenantId: string;
    readonly contractId: string;
    readonly dataClass: string;
    readonly termA: unknown;
    readonly termB: unknown;
    constructor(tenantId: string, contractId: string, dataClass: string, termA: unknown, termB: unknown);
}
/**
 * Thrown at PolicyMatrix construction time when a CompliancePack has a
 * malformed retentionPolicy (e.g. negative retentionDays or missing
 * required fields). Fail-closed: the PolicyMatrix cannot be instantiated
 * with invalid pack configuration.
 */
export declare class InvalidPackRetentionError extends PolicyMatrixError {
    readonly packId: string;
    readonly reason: string;
    constructor(packId: string, reason: string);
}
//# sourceMappingURL=policy-matrix-errors.d.ts.map