/**
 * Compliance Reporting
 * Vendor risk reports, board summaries, audit trails, and regulatory reports
 */
import { VendorRiskReport, ReportType, TrustScore, RiskAssessment, VendorInfo, ComplianceCertification, Contract, Alert, HealthEvent, AuditLogEntry, PaginatedResponse } from './types';
export interface ReportingServiceConfig {
    storage: ReportStorage;
    auditLogger: AuditLogger;
    templateEngine: TemplateEngine;
    exportService: ExportService;
    dataProviders: ReportDataProviders;
}
export interface ReportDataProviders {
    getVendorInfo(vendorId: string): Promise<VendorInfo>;
    getTrustScore(vendorId: string): Promise<TrustScore>;
    getTrustScoreHistory(vendorId: string, days: number): Promise<TrustScore[]>;
    getRiskAssessment(vendorId: string): Promise<RiskAssessment>;
    getCertifications(vendorId: string): Promise<ComplianceCertification[]>;
    getContracts(vendorId: string): Promise<Contract[]>;
    getAlerts(vendorId: string, days: number): Promise<Alert[]>;
    getHealthEvents(vendorId: string, days: number): Promise<HealthEvent[]>;
}
export declare class ReportingService {
    private readonly config;
    constructor(config: ReportingServiceConfig);
    generateVendorAssessmentReport(vendorId: string, options?: ReportOptions): Promise<VendorRiskReport>;
    generatePeriodicReviewReport(vendorId: string, options?: ReportOptions): Promise<VendorRiskReport>;
    generateBoardSummaryReport(vendorIds: string[], options?: ReportOptions): Promise<VendorRiskReport>;
    generateRegulatoryReport(vendorId: string, regulation: string, options?: ReportOptions): Promise<VendorRiskReport>;
    generateIncidentReport(vendorId: string, incidentId: string, options?: ReportOptions): Promise<VendorRiskReport>;
    exportReport(reportId: string, format: 'pdf' | 'csv' | 'excel' | 'json'): Promise<ExportResult>;
    scheduleReport(schedule: ReportSchedule): Promise<void>;
    getAuditTrail(vendorId: string, startDate?: Date, endDate?: Date): Promise<AuditLogEntry[]>;
    exportAuditTrail(vendorId: string, startDate: Date, endDate: Date, format: 'csv' | 'json'): Promise<ExportResult>;
    getReport(reportId: string): Promise<VendorRiskReport | null>;
    listReports(options: ListReportsOptions): Promise<PaginatedResponse<VendorRiskReport>>;
    getVendorReports(vendorId: string): Promise<VendorRiskReport[]>;
    private generateReportSummary;
    private generatePortfolioSummary;
    private generateRegulatoryReportSummary;
    private generateIncidentSummary;
    private generateExecutiveSummarySection;
    private generateTrustScoreSection;
    private generateRiskAssessmentSection;
    private generateComplianceSection;
    private generateContractsSection;
    private generateSecurityEventsSection;
    private generateRecommendationsSection;
    private generateTrendAnalysisSection;
    private generateYearOverYearSection;
    private generateComplianceTimelineSection;
    private generateContractReviewSection;
    private generateIncidentSummarySection;
    private generateActionItemsSection;
    private generatePortfolioOverviewSection;
    private generateRiskDistributionSection;
    private generateCriticalVendorsSection;
    private generateTrendHighlightsSection;
    private generateKeyMetricsSection;
    private generateStrategicRecommendationsSection;
    private generateRegulatorySections;
    private generateIncidentOverviewSection;
    private generateIncidentTimelineSection;
    private generateImpactAnalysisSection;
    private generateRemediationSection;
    private generateLessonsLearnedSection;
    private generateTrustScoreGaugeChart;
    private generateRiskCategoryChart;
    private generateFactorRadarChart;
    private generateComplianceStatusChart;
    private generateEventTrendChart;
    private generateTrustScoreTrendChart;
    private generatePortfolioDistributionChart;
    private generateReportId;
    private extractKeyFindings;
    private formatCategoryName;
    private scoreToGrade;
    private scoreToRisk;
    private calculatePortfolioTrend;
    private analyzeTrend;
    private getWeekKey;
}
export interface ReportOptions {
    periodStart?: Date;
    periodEnd?: Date;
    format?: 'json' | 'pdf' | 'csv' | 'excel';
    generatedBy?: string;
    includeAttachments?: boolean;
}
export interface ListReportsOptions {
    vendorId?: string;
    types?: ReportType[];
    startDate?: Date;
    endDate?: Date;
    page?: number;
    pageSize?: number;
}
export interface ReportSchedule {
    id: string;
    vendorId: string;
    reportType: ReportType;
    frequency: 'daily' | 'weekly' | 'monthly' | 'quarterly';
    nextRun: Date;
    recipients: string[];
    format: 'pdf' | 'csv' | 'excel';
    enabled: boolean;
}
export interface ExportResult {
    url: string;
    filename: string;
    size: number;
    format: string;
    expiresAt: Date;
}
export interface ReportStorage {
    saveReport(report: VendorRiskReport): Promise<void>;
    getReport(reportId: string): Promise<VendorRiskReport | null>;
    listReports(options: ListReportsOptions): Promise<PaginatedResponse<VendorRiskReport>>;
    saveSchedule(schedule: ReportSchedule): Promise<void>;
    getSchedules(): Promise<ReportSchedule[]>;
    getAuditTrail(vendorId: string, startDate?: Date, endDate?: Date): Promise<AuditLogEntry[]>;
}
export interface TemplateEngine {
    render(template: string, data: Record<string, unknown>): Promise<string>;
    getTemplate(name: string): Promise<string>;
}
export interface ExportService {
    export(report: VendorRiskReport, format: 'pdf' | 'csv' | 'excel' | 'json'): Promise<ExportResult>;
    exportAuditTrail(data: unknown, format: 'csv' | 'json'): Promise<ExportResult>;
}
export interface AuditLogger {
    log(entry: {
        action: string;
        actorId: string;
        resourceType: string;
        resourceId: string;
        details: Record<string, unknown>;
    }): Promise<void>;
}
export declare class ReportingError extends Error {
    readonly code: string;
    constructor(code: string, message: string);
}
export declare function createReportingService(config: ReportingServiceConfig): ReportingService;
//# sourceMappingURL=reporting.d.ts.map