/**
 * @fileoverview ComplianceReport aggregate root
 *
 * This module defines the ComplianceReport aggregate which represents security
 * and code quality compliance reports for a project.
 */
import { AggregateRoot } from '../../shared/aggregate-root.js';
import { ProjectKey, GraphQLNodeId } from '../../../types/branded.js';
import { ReportType } from '../../../types/report-types.js';
import { ComplianceReportStatus, ComplianceCategory, ComplianceSummary, ReportTrend, CreateComplianceReportParams, UpdateCategoriesParams, UpdateTrendParams } from './compliance-report.types.js';
/**
 * ComplianceReport aggregate root
 *
 * Represents compliance reports (OWASP, SANS, MISRA-C) for a project.
 * Tracks compliance categories, issues, and trends over time.
 *
 * @example
 * ```typescript
 * const report = ComplianceReport.create({
 *   projectKey: asProjectKey('my-project'),
 *   repositoryId: asGraphQLNodeId('repo123'),
 *   reportType: ReportType.OWASP_TOP_10,
 *   categories: [
 *     {
 *       name: 'A1: Injection',
 *       compliant: IssueCount.create(45),
 *       nonCompliant: IssueCount.create(5),
 *       issueCount: IssueCount.create(50),
 *       severity: 'CRITICAL'
 *     }
 *   ]
 * });
 *
 * console.log(report.summary.complianceScore.value); // 90
 * console.log(report.isCompliant); // true
 * ```
 */
export declare class ComplianceReport extends AggregateRoot<string> {
    private _projectKey;
    private _repositoryId;
    private _reportType;
    private _status;
    private _categories;
    private _summary;
    private _trend;
    private _generatedAt;
    private _lastUpdated;
    private constructor();
    /**
     * Creates a new ComplianceReport aggregate
     *
     * @param params - Creation parameters
     * @returns A new ComplianceReport instance
     */
    static create(params: CreateComplianceReportParams): ComplianceReport;
    /**
     * Creates a composite ID for the aggregate
     */
    private static createId;
    /**
     * Calculates summary statistics from categories
     */
    private static calculateSummary;
    /**
     * Determines compliance level based on score
     */
    private static getComplianceLevel;
    /**
     * Gets the project key
     */
    get projectKey(): ProjectKey;
    /**
     * Gets the repository ID
     */
    get repositoryId(): GraphQLNodeId;
    /**
     * Gets the report type
     */
    get reportType(): ReportType;
    /**
     * Gets the report status
     */
    get status(): ComplianceReportStatus;
    /**
     * Gets the compliance categories
     */
    get categories(): ReadonlyArray<ComplianceCategory>;
    /**
     * Gets the summary statistics
     */
    get summary(): Readonly<ComplianceSummary>;
    /**
     * Gets the trend information
     */
    get trend(): Readonly<ReportTrend> | null;
    /**
     * Gets the generation timestamp
     */
    get generatedAt(): Date;
    /**
     * Gets the last update timestamp
     */
    get lastUpdated(): Date;
    /**
     * Checks if the report meets compliance standards
     */
    get isCompliant(): boolean;
    /**
     * Checks if the report has critical issues
     */
    get hasCriticalIssues(): boolean;
    /**
     * Generates/regenerates the report
     */
    generate(): void;
    /**
     * Completes report generation
     */
    complete(): void;
    /**
     * Fails report generation
     *
     * @param reason - The reason for failure
     */
    fail(reason: string): void;
    /**
     * Updates the report categories
     *
     * @param params - Category update parameters
     */
    updateCategories(params: UpdateCategoriesParams): void;
    /**
     * Updates the report trend
     *
     * @param params - Trend update parameters
     */
    updateTrend(params: UpdateTrendParams): void;
    /**
     * Compares this report with a previous report
     *
     * @param previous - The previous report to compare with
     * @returns Trend information
     */
    compareWithPrevious(previous: ComplianceReport): ReportTrend;
    /**
     * Reconstructs ComplianceReport from persisted data
     *
     * @param data - Persisted report data
     * @returns A reconstructed ComplianceReport instance
     */
    static fromPersistence(data: {
        id: string;
        projectKey: ProjectKey;
        repositoryId: GraphQLNodeId;
        reportType: ReportType;
        status: ComplianceReportStatus;
        categories: ComplianceCategory[];
        summary: ComplianceSummary;
        trend: ReportTrend | null;
        generatedAt: Date;
        lastUpdated: Date;
    }): ComplianceReport;
    /**
     * Converts the report to a persistence-friendly format
     */
    toPersistence(): {
        id: string;
        projectKey: ProjectKey;
        repositoryId: GraphQLNodeId;
        reportType: ReportType;
        status: ComplianceReportStatus;
        categories: ComplianceCategory[];
        summary: ComplianceSummary;
        trend: ReportTrend | null;
        generatedAt: Date;
        lastUpdated: Date;
    };
}
