import { type InsightsSummary } from '@n8n/api-types';
import { LicenseState, Logger } from '@n8n/backend-common';
import { InstanceSettings } from 'n8n-core';
import type { TypeUnit } from './database/entities/insights-shared';
import { InsightsByPeriodRepository } from './database/repositories/insights-by-period.repository';
import { InsightsCompactionService } from './insights-compaction.service';
import { InsightsPruningService } from './insights-pruning.service';
export declare class InsightsService {
    private readonly insightsByPeriodRepository;
    private readonly compactionService;
    private readonly pruningService;
    private readonly licenseState;
    private readonly instanceSettings;
    private readonly logger;
    constructor(insightsByPeriodRepository: InsightsByPeriodRepository, compactionService: InsightsCompactionService, pruningService: InsightsPruningService, licenseState: LicenseState, instanceSettings: InstanceSettings, logger: Logger);
    private toggleCollectionService;
    init(): Promise<void>;
    startCompactionAndPruningTimers(): void;
    stopCompactionAndPruningTimers(): void;
    shutdown(): Promise<void>;
    getInsightsSummary({ startDate, endDate, projectId, }: {
        projectId?: string;
        startDate: Date;
        endDate: Date;
    }): Promise<InsightsSummary>;
    getInsightsByWorkflow({ skip, take, sortBy, projectId, startDate, endDate, }: {
        skip?: number;
        take?: number;
        sortBy?: string;
        projectId?: string;
        startDate: Date;
        endDate: Date;
    }): Promise<{
        count: number;
        data: {
            workflowId: string | null;
            projectId: string | null;
            workflowName: string;
            projectName: string;
            failed: number;
            total: number;
            succeeded: number;
            timeSaved: number;
            runTime: number;
            failureRate: number;
            averageRunTime: number;
        }[];
    }>;
    getInsightsByTime({ insightTypes, projectId, startDate, endDate, }: {
        insightTypes?: TypeUnit[];
        projectId?: string;
        startDate: Date;
        endDate: Date;
    }): Promise<{
        date: string;
        values: {
            failed?: number | undefined;
            succeeded?: number | undefined;
            timeSaved?: number | undefined;
        } & {
            total?: number;
            successRate?: number;
            failureRate?: number;
            averageRunTime?: number;
        };
    }[]>;
    validateDateFiltersLicense({ startDate, endDate }: {
        startDate: Date;
        endDate: Date;
    }): void;
    private getDateFiltersGranularity;
}
