import { PrismaService } from '../../common/prisma/prisma.service';
import { ActivityLogService } from '../activity-logs/activity-log.service';
import { CreateReportDto } from './dto/create-report.dto';
import { ListReportsQueryDto } from './dto/list-reports-query.dto';
import { UpdateReportDto } from './dto/update-report.dto';
export declare class ReportsService {
    private readonly prisma;
    private readonly activityLogs;
    private readonly logger;
    constructor(prisma: PrismaService, activityLogs: ActivityLogService);
    list(managerId: string, query: ListReportsQueryDto): Promise<{
        items: {
            client: {
                id: string;
                email: string;
                status: import("../../generated/prisma/enums").ClientStatus;
                isDeleted: boolean;
                companyName: string;
                contactName: string;
                primaryMetricType: import("../../generated/prisma/enums").PrimaryMetricType;
            };
            id: string;
            isDeleted: boolean;
            createdAt: Date;
            updatedAt: Date;
            notes: string | null;
            clientId: string;
            reportStartDate: Date;
            reportEndDate: Date;
            businessMetricValue: number;
            businessMetricGrowth: number;
            traffic: number;
            trafficGrowth: number;
            backlinks: number;
            newBacklinks: number;
            version: number;
            createdBy: {
                id: string;
                name: string;
                email: string;
            };
            keywordRanks: {
                keyword: {
                    keyword: string;
                    id: string;
                };
                id: string;
                keywordId: string;
                position: number;
            }[];
        }[];
        meta: {
            page: number;
            limit: number;
            total: number;
            totalPages: number;
        };
    }>;
    listForAdmin(query: ListReportsQueryDto): Promise<{
        items: {
            client: {
                id: string;
                email: string;
                status: import("../../generated/prisma/enums").ClientStatus;
                isDeleted: boolean;
                companyName: string;
                contactName: string;
                primaryMetricType: import("../../generated/prisma/enums").PrimaryMetricType;
            };
            id: string;
            isDeleted: boolean;
            createdAt: Date;
            updatedAt: Date;
            notes: string | null;
            clientId: string;
            reportStartDate: Date;
            reportEndDate: Date;
            businessMetricValue: number;
            businessMetricGrowth: number;
            traffic: number;
            trafficGrowth: number;
            backlinks: number;
            newBacklinks: number;
            version: number;
            createdBy: {
                id: string;
                name: string;
                email: string;
            };
            keywordRanks: {
                keyword: {
                    keyword: string;
                    id: string;
                };
                id: string;
                keywordId: string;
                position: number;
            }[];
        }[];
        meta: {
            page: number;
            limit: number;
            total: number;
            totalPages: number;
        };
    }>;
    private listReports;
    getBookedPeriods(clientId: string, actorUserId: string, restrictToManager?: boolean): Promise<{
        id: string;
        reportStartDate: Date;
        reportEndDate: Date;
    }[]>;
    getBookedPeriodsForAdmin(clientId: string): Promise<{
        id: string;
        reportStartDate: Date;
        reportEndDate: Date;
    }[]>;
    create(dto: CreateReportDto, managerId: string): Promise<{
        client: {
            id: string;
            email: string;
            status: import("../../generated/prisma/enums").ClientStatus;
            isDeleted: boolean;
            companyName: string;
            contactName: string;
            primaryMetricType: import("../../generated/prisma/enums").PrimaryMetricType;
        };
        id: string;
        isDeleted: boolean;
        createdAt: Date;
        updatedAt: Date;
        notes: string | null;
        clientId: string;
        reportStartDate: Date;
        reportEndDate: Date;
        businessMetricValue: number;
        businessMetricGrowth: number;
        traffic: number;
        trafficGrowth: number;
        backlinks: number;
        newBacklinks: number;
        version: number;
        createdBy: {
            id: string;
            name: string;
            email: string;
        };
        keywordRanks: {
            keyword: {
                keyword: string;
                id: string;
            };
            id: string;
            keywordId: string;
            position: number;
        }[];
    }>;
    createForAdmin(dto: CreateReportDto, adminId: string): Promise<{
        client: {
            id: string;
            email: string;
            status: import("../../generated/prisma/enums").ClientStatus;
            isDeleted: boolean;
            companyName: string;
            contactName: string;
            primaryMetricType: import("../../generated/prisma/enums").PrimaryMetricType;
        };
        id: string;
        isDeleted: boolean;
        createdAt: Date;
        updatedAt: Date;
        notes: string | null;
        clientId: string;
        reportStartDate: Date;
        reportEndDate: Date;
        businessMetricValue: number;
        businessMetricGrowth: number;
        traffic: number;
        trafficGrowth: number;
        backlinks: number;
        newBacklinks: number;
        version: number;
        createdBy: {
            id: string;
            name: string;
            email: string;
        };
        keywordRanks: {
            keyword: {
                keyword: string;
                id: string;
            };
            id: string;
            keywordId: string;
            position: number;
        }[];
    }>;
    private createReport;
    update(id: string, dto: UpdateReportDto, managerId: string): Promise<{
        client: {
            id: string;
            email: string;
            status: import("../../generated/prisma/enums").ClientStatus;
            isDeleted: boolean;
            companyName: string;
            contactName: string;
            primaryMetricType: import("../../generated/prisma/enums").PrimaryMetricType;
        };
        id: string;
        isDeleted: boolean;
        createdAt: Date;
        updatedAt: Date;
        notes: string | null;
        clientId: string;
        reportStartDate: Date;
        reportEndDate: Date;
        businessMetricValue: number;
        businessMetricGrowth: number;
        traffic: number;
        trafficGrowth: number;
        backlinks: number;
        newBacklinks: number;
        version: number;
        createdBy: {
            id: string;
            name: string;
            email: string;
        };
        keywordRanks: {
            keyword: {
                keyword: string;
                id: string;
            };
            id: string;
            keywordId: string;
            position: number;
        }[];
    }>;
    updateForAdmin(id: string, dto: UpdateReportDto, adminId: string): Promise<{
        client: {
            id: string;
            email: string;
            status: import("../../generated/prisma/enums").ClientStatus;
            isDeleted: boolean;
            companyName: string;
            contactName: string;
            primaryMetricType: import("../../generated/prisma/enums").PrimaryMetricType;
        };
        id: string;
        isDeleted: boolean;
        createdAt: Date;
        updatedAt: Date;
        notes: string | null;
        clientId: string;
        reportStartDate: Date;
        reportEndDate: Date;
        businessMetricValue: number;
        businessMetricGrowth: number;
        traffic: number;
        trafficGrowth: number;
        backlinks: number;
        newBacklinks: number;
        version: number;
        createdBy: {
            id: string;
            name: string;
            email: string;
        };
        keywordRanks: {
            keyword: {
                keyword: string;
                id: string;
            };
            id: string;
            keywordId: string;
            position: number;
        }[];
    }>;
    private updateReport;
    softDelete(id: string, managerId: string): Promise<{
        client: {
            id: string;
            email: string;
            status: import("../../generated/prisma/enums").ClientStatus;
            isDeleted: boolean;
            companyName: string;
            contactName: string;
            primaryMetricType: import("../../generated/prisma/enums").PrimaryMetricType;
        };
        id: string;
        isDeleted: boolean;
        createdAt: Date;
        updatedAt: Date;
        notes: string | null;
        clientId: string;
        reportStartDate: Date;
        reportEndDate: Date;
        businessMetricValue: number;
        businessMetricGrowth: number;
        traffic: number;
        trafficGrowth: number;
        backlinks: number;
        newBacklinks: number;
        version: number;
        createdBy: {
            id: string;
            name: string;
            email: string;
        };
        keywordRanks: {
            keyword: {
                keyword: string;
                id: string;
            };
            id: string;
            keywordId: string;
            position: number;
        }[];
    }>;
    softDeleteForAdmin(id: string, adminId: string): Promise<{
        client: {
            id: string;
            email: string;
            status: import("../../generated/prisma/enums").ClientStatus;
            isDeleted: boolean;
            companyName: string;
            contactName: string;
            primaryMetricType: import("../../generated/prisma/enums").PrimaryMetricType;
        };
        id: string;
        isDeleted: boolean;
        createdAt: Date;
        updatedAt: Date;
        notes: string | null;
        clientId: string;
        reportStartDate: Date;
        reportEndDate: Date;
        businessMetricValue: number;
        businessMetricGrowth: number;
        traffic: number;
        trafficGrowth: number;
        backlinks: number;
        newBacklinks: number;
        version: number;
        createdBy: {
            id: string;
            name: string;
            email: string;
        };
        keywordRanks: {
            keyword: {
                keyword: string;
                id: string;
            };
            id: string;
            keywordId: string;
            position: number;
        }[];
    }>;
    private softDeleteReport;
    restore(id: string, managerId: string): Promise<{
        client: {
            id: string;
            email: string;
            status: import("../../generated/prisma/enums").ClientStatus;
            isDeleted: boolean;
            companyName: string;
            contactName: string;
            primaryMetricType: import("../../generated/prisma/enums").PrimaryMetricType;
        };
        id: string;
        isDeleted: boolean;
        createdAt: Date;
        updatedAt: Date;
        notes: string | null;
        clientId: string;
        reportStartDate: Date;
        reportEndDate: Date;
        businessMetricValue: number;
        businessMetricGrowth: number;
        traffic: number;
        trafficGrowth: number;
        backlinks: number;
        newBacklinks: number;
        version: number;
        createdBy: {
            id: string;
            name: string;
            email: string;
        };
        keywordRanks: {
            keyword: {
                keyword: string;
                id: string;
            };
            id: string;
            keywordId: string;
            position: number;
        }[];
    }>;
    restoreForAdmin(id: string, adminId: string): Promise<{
        client: {
            id: string;
            email: string;
            status: import("../../generated/prisma/enums").ClientStatus;
            isDeleted: boolean;
            companyName: string;
            contactName: string;
            primaryMetricType: import("../../generated/prisma/enums").PrimaryMetricType;
        };
        id: string;
        isDeleted: boolean;
        createdAt: Date;
        updatedAt: Date;
        notes: string | null;
        clientId: string;
        reportStartDate: Date;
        reportEndDate: Date;
        businessMetricValue: number;
        businessMetricGrowth: number;
        traffic: number;
        trafficGrowth: number;
        backlinks: number;
        newBacklinks: number;
        version: number;
        createdBy: {
            id: string;
            name: string;
            email: string;
        };
        keywordRanks: {
            keyword: {
                keyword: string;
                id: string;
            };
            id: string;
            keywordId: string;
            position: number;
        }[];
    }>;
    private restoreReport;
    private client;
    private assertKeywordRanksBelongToClient;
    private isUniqueConstraintViolation;
    private period;
    private snapshot;
    private changes;
    private displayChangeValue;
    private formatDateOnly;
}
