import { TelescopeService } from './telescope.service';
import { AnalyticsService } from './analytics.service';
import { PerformanceCorrelationService } from './performance-correlation.service';
export declare enum ExportFormat {
    JSON = "json",
    CSV = "csv",
    XLSX = "xlsx",
    PDF = "pdf"
}
export declare enum ReportFormat {
    HTML = "html",
    PDF = "pdf",
    MARKDOWN = "md"
}
export interface ExportOptions {
    format: 'json' | 'csv' | 'xlsx' | 'pdf';
    type: 'raw' | 'analytics' | 'performance' | 'custom';
    timeRange?: {
        start: Date;
        end: Date;
    };
    filters?: {
        watchers?: string[];
        components?: string[];
        severities?: string[];
        tags?: string[];
    };
    fields?: string[];
    limit?: number;
    includeMetadata?: boolean;
}
export interface ReportOptions {
    type: 'performance' | 'error' | 'system' | 'custom';
    template?: string;
    title?: string;
    description?: string;
    timeRange: {
        start: Date;
        end: Date;
    };
    sections?: ReportSection[];
    format: 'html' | 'pdf' | 'md';
    includeCharts?: boolean;
    includeRawData?: boolean;
}
export interface ReportSection {
    title: string;
    type: 'overview' | 'metrics' | 'charts' | 'table' | 'analysis' | 'recommendations';
    data?: any;
    config?: any;
}
export interface ExportResult {
    success: boolean;
    filePath?: string;
    data?: any;
    error?: string;
    metadata: {
        recordCount: number;
        timeRange: {
            start: Date;
            end: Date;
        };
        exportedAt: Date;
        format: string;
    };
}
export interface ReportResult {
    success: boolean;
    filePath?: string;
    content?: string;
    error?: string;
    metadata: {
        title: string;
        generatedAt: Date;
        timeRange: {
            start: Date;
            end: Date;
        };
        format: string;
        sections: number;
    };
}
export declare class ExportReportingService {
    private readonly telescopeService;
    private readonly analyticsService;
    private readonly performanceCorrelationService;
    private readonly logger;
    private readonly exportDir;
    constructor(telescopeService: TelescopeService, analyticsService: AnalyticsService, performanceCorrelationService: PerformanceCorrelationService);
    private ensureExportDirectory;
    exportData(options: ExportOptions): Promise<ExportResult>;
    generateReport(options: ReportOptions): Promise<ReportResult>;
    private collectRawData;
    private collectAnalyticsData;
    private collectPerformanceData;
    private collectCustomData;
    private applyFilters;
    private selectFields;
    private selectObjectFields;
    private setNestedValue;
    private generateFileName;
    private generateReportFileName;
    private exportToJson;
    private exportToCsv;
    private extractCsvHeaders;
    private getNestedValue;
    private escapeCsvValue;
    private exportToXlsx;
    private exportToPdf;
    private collectReportData;
    private generateReportContent;
    private getDefaultSections;
    private generateHtmlReport;
    private generateHtmlSection;
    private generateHtmlOverview;
    private generateHtmlMetrics;
    private generateHtmlCharts;
    private generateHtmlTable;
    private generateHtmlAnalysis;
    private generateHtmlRecommendations;
    private generateMarkdownReport;
    private generateMarkdownSection;
    private generateMarkdownOverview;
    private generateMarkdownMetrics;
    private generateMarkdownRecommendations;
    private generatePdfReport;
    private saveHtmlReport;
    private savePdfReport;
    private saveMarkdownReport;
    scheduleReport(options: ReportOptions, cronExpression: string): Promise<string>;
    getExportHistory(): Promise<Array<{
        id: string;
        type: string;
        createdAt: Date;
        filePath: string;
    }>>;
    getReportTemplates(): Promise<Array<{
        id: string;
        name: string;
        type: string;
        sections: ReportSection[];
    }>>;
    deleteExport(filePath: string): Promise<boolean>;
}
