/**
 * Compliance-related types
 */
export interface ValidationContext {
    userId?: string;
    userRole?: string;
    action?: string;
    resource?: string;
    data?: unknown;
    dataType?: string;
    dataFields?: string[];
    studentId?: string;
    studentAge?: number;
    parentalConsent?: boolean;
    studentConsent?: boolean;
    parentOfStudent?: string;
    disclosureTarget?: string;
    disclosureReason?: string;
    recordType?: string;
    recordAge?: number;
    auditingEnabled?: boolean;
    encryptionEnabled?: boolean;
    metadata?: Record<string, unknown>;
}
export interface ComplianceViolation {
    rule: string;
    severity: 'low' | 'medium' | 'high' | 'critical';
    message: string;
    remediation?: string;
    context?: {
        user?: string;
        resource?: string;
        action?: string;
        [key: string]: unknown;
    };
}
export interface ValidationResult {
    valid: boolean;
    violations: ComplianceViolation[];
    warnings?: string[];
    metadata?: {
        validator?: string;
        validatorVersion?: string;
        rulesEvaluated?: number;
        evaluationTime?: number;
        checkedAt?: string;
        [key: string]: unknown;
    };
}
export interface ComplianceValidator {
    validate(context: ValidationContext): Promise<ValidationResult>;
    generateComplianceReport?(startDate: Date, endDate: Date): Promise<unknown>;
}
export interface ComplianceFramework {
    name: string;
    version: string;
    validators: ComplianceValidator[];
}
export interface ComplianceConfig {
    frameworks: string[];
    auditLog: boolean;
    dataRetention: number;
    encryption: {
        atRest: boolean;
        inTransit: boolean;
        algorithm: string;
        keyRotation: number;
    };
}
//# sourceMappingURL=compliance.d.ts.map