import { Types } from 'mongoose';
import { ModelsService } from 'src/models/models.service';
import { CommonService } from 'src/common/common.service';
import { TranslationService } from 'src/common/services/translation.service';
import { NotificationService } from 'src/notification/notification.service';
import { AgentCommissionListDto, AgentCommissionSummaryDto, CommissionSummaryQueryDto, ExportAgentCommissionDto, ListAgentCommissionDto } from './dto/agent-commission.dto';
export declare class CommissionService {
    private readonly models;
    private readonly common;
    private readonly translationService;
    private readonly notificationService;
    private readonly logger;
    constructor(models: ModelsService, common: CommonService, translationService: TranslationService, notificationService: NotificationService);
    private t;
    private fail;
    private firstYearDueDate;
    private dueDateForYear;
    private buildRow;
    generateSchedule(policy: any): Promise<void>;
    regenerateSchedule(policyId: Types.ObjectId | string): Promise<void>;
    private onRowCredited;
    creditDueForPolicy(policyId: Types.ObjectId | string, triggeredBy?: Types.ObjectId | string | null): Promise<{
        credited: number;
    }>;
    sweepDueCommissions(): Promise<void>;
    cancelForPolicy(policyId: Types.ObjectId | string): Promise<void>;
    private toDto;
    private lookupStages;
    private dueDateMatch;
    private assertRange;
    private visibleStatusMatch;
    private basePipeline;
    list(query: ListAgentCommissionDto, lang: string): Promise<{
        status: string;
        message: string;
        data: any[];
        pagination: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
            hasNextPage: boolean;
            hasPrevPage: boolean;
        };
    }>;
    summary(query: CommissionSummaryQueryDto, lang: string): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    private onRowPaid;
    markPaid(id: string, actor: any, lang: string): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    private agentVisibleStatusMatch;
    private agentPipeline;
    private toAgentDto;
    listForAgent(agentId: Types.ObjectId, query: AgentCommissionListDto, lang: string): Promise<{
        status: string;
        message: string;
        data: any[];
        pagination: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
            hasNextPage: boolean;
            hasPrevPage: boolean;
        };
    }>;
    getForAgent(agentId: Types.ObjectId, id: string, lang: string): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    summaryForAgent(agentId: Types.ObjectId, query: AgentCommissionSummaryDto, lang: string): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    exportCsv(query: ExportAgentCommissionDto, lang: string): Promise<string>;
}
