import { Repository } from 'typeorm';
import { CampaignRepository } from './campaign.repository';
import { Campaign } from 'src/entities/campaign.entity';
import { CampaignInfluencer } from 'src/entities/campaign_influencer.entity';
import { Settings } from 'src/entities/settings.entity';
import { UsersServices } from 'src/common/services/users/users.service';
import { OpenAIService } from 'src/common/services/openai/openai.service';
import { AiReportLog, AiReportStatus } from 'src/entities/ai_report_log.entity';
import { CampaignAiReport } from 'src/entities/campaign-ai-report.entity';
import { CreateAiReportDto } from './dtos/ai-report.dto';
import { CampaignService } from './campaign.services';
export declare class AiReportService {
    private campaignRepository;
    private readonly OpenAIService;
    private UsersServices;
    private campaignService;
    private Campaign;
    private CampaignInfluencer;
    private AiReportLog;
    private CampaignAiReport;
    private Settings;
    private readonly logger;
    constructor(campaignRepository: CampaignRepository, OpenAIService: OpenAIService, UsersServices: UsersServices, campaignService: CampaignService, Campaign: Repository<Campaign>, CampaignInfluencer: Repository<CampaignInfluencer>, AiReportLog: Repository<AiReportLog>, CampaignAiReport: Repository<CampaignAiReport>, Settings: Repository<Settings>);
    createAiReport(params: {
        campaign_id: string;
    }, body: CreateAiReportDto, authUser: any): Promise<{
        data: {
            report_id: string;
            status: AiReportStatus;
            number_of_applicant: number;
            ai_report_inprogress: boolean;
        };
    }>;
    getAiReportStatus(params: {
        campaign_id: string;
    }, authUser: any): Promise<{
        data: {
            ai_report_inprogress: boolean;
            latest_report: {
                id: string;
                status: AiReportStatus;
                number_of_applicant: number;
                response_json: Record<string, any>;
                error_message: string;
                created_at: Date;
                completed_at: Date;
                objective: any;
                remark: any;
            };
            new_applicant_count: number;
            is_processing: boolean;
        };
    }>;
    listAiReports(params: {
        campaign_id: string;
    }, authUser: any): Promise<{
        data: {
            id: string;
            status: AiReportStatus;
            number_of_applicant: number;
            created_at: Date;
            completed_at: Date;
            started_at: Date;
            error_message: string;
            objective: any;
            remark: any;
        }[];
    }>;
    getAiReport(params: {
        campaign_id: string;
        report_id: string;
    }, authUser: any): Promise<{
        data: AiReportLog;
    }>;
    processPendingAiReports(limit?: number): Promise<{
        data: {
            enqueued_count: number;
            report_ids: string[];
        };
    }>;
    private runAiReportInBackground;
    processAiReportJob(reportId: string, options?: {
        isLastAttempt?: boolean;
        isRetry?: boolean;
    }): Promise<void>;
    private persistAiReportResults;
    private getNextCampaignReportNumber;
    private toCriteriaMap;
    private normalizeCriteria;
    private getAiReportTopN;
    private buildAiReportRequestJson;
    private setCampaignAiReportInProgress;
    getAiReportResults(params: any, query: any, authUser: any): Promise<{
        data: CampaignAiReport[];
        new_applicant_count: number;
        campaignInfo: {
            id: string;
            campaign_name: string;
            slug: string;
            ai_criteria: Record<string, string[]>;
            ai_report_inprogress: boolean;
        };
    }>;
}
