import type { Request } from 'express';
import { AuthRequestUser } from '../auth/interfaces/auth-request-user.interface';
import { CreateReportDto } from './dto/create-report.dto';
import { ListReportsQueryDto } from './dto/list-reports-query.dto';
import { UpdateReportDto } from './dto/update-report.dto';
import { ReportsService } from './reports.service';
export declare class ReportsController {
    private readonly reportsService;
    constructor(reportsService: ReportsService);
    getBookedPeriods(clientId: string, req: Request & {
        user: AuthRequestUser;
    }): Promise<{
        id: string;
        reportStartDate: Date;
        reportEndDate: Date;
    }[]>;
    getBookedPeriodsForAdmin(clientId: string): Promise<{
        id: string;
        reportStartDate: Date;
        reportEndDate: Date;
    }[]>;
    list(query: ListReportsQueryDto, req: Request & {
        user: AuthRequestUser;
    }): 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;
        };
    }>;
    create(dto: CreateReportDto, req: Request & {
        user: AuthRequestUser;
    }): 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, req: Request & {
        user: AuthRequestUser;
    }): 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;
        }[];
    }>;
    update(id: string, dto: UpdateReportDto, req: Request & {
        user: AuthRequestUser;
    }): 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, req: Request & {
        user: AuthRequestUser;
    }): 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;
        }[];
    }>;
    remove(id: string, req: Request & {
        user: AuthRequestUser;
    }): 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;
        }[];
    }>;
    removeForAdmin(id: string, req: Request & {
        user: AuthRequestUser;
    }): 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;
        }[];
    }>;
    restore(id: string, req: Request & {
        user: AuthRequestUser;
    }): 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, req: Request & {
        user: AuthRequestUser;
    }): 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;
        }[];
    }>;
}
