import type { Response } from 'express';
import { AdminService } from './admin.service';
import { AdminCreateUserDto } from './dto/admin-create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { RejectUserDto } from './dto/reject-user.dto';
import { UserStatus } from '../users/entities/user.entity';
import { PaginateQueryDto } from './dto/paginate-query.dto';
import { InterestAreaStatsQueryDto } from './dto/interest-area-stats-query.dto';
import { EmailMetricsFilterDto, EmailMetricsQueryDto } from '../email/dto/email-metrics-query.dto';
import { EmailService } from '../email/email.service';
export declare class AdminController {
    private readonly adminService;
    private readonly emailService;
    private readonly logger;
    constructor(adminService: AdminService, emailService: EmailService);
    findAll(query: PaginateQueryDto): Promise<{
        data: import("../users/entities/user.entity").User[];
        total: number;
    }>;
    create(dto: AdminCreateUserDto): Promise<import("../users/entities/user.entity").User>;
    update(id: string, dto: UpdateUserDto): Promise<import("../users/entities/user.entity").User>;
    remove(id: string): Promise<void>;
    approve(id: string): Promise<import("../users/entities/user.entity").User>;
    reject(id: string, dto: RejectUserDto): Promise<import("../users/entities/user.entity").User>;
    getInterestAreaStats(query: InterestAreaStatsQueryDto): Promise<import("../users/users.service").InterestAreaStatsResult>;
    private streamXlsx;
    private streamPdf;
    private getEmailMetricsExportBuffer;
    exportInterestAreaOtherResponses(res: Response, query: InterestAreaStatsQueryDto): Promise<void>;
    getEmailMetricsStats(query: EmailMetricsFilterDto): Promise<{
        sent: number;
        opened: number;
    }>;
    getEmailMetricsInternalNames(query: EmailMetricsFilterDto): Promise<{
        names: string[];
    }>;
    exportEmailMetricsPdf(res: Response, query: EmailMetricsFilterDto): Promise<void>;
    getEmailMetrics(query: EmailMetricsQueryDto): Promise<{
        data: import("../email/entities/email-metric.entity").EmailMetric[];
        total: number;
    }>;
    exportEmailMetrics(res: Response): Promise<void>;
    exportSubscribedUsers(res: Response): Promise<void>;
    exportAllUsers(res: Response, status?: UserStatus): Promise<void>;
}
