import { DataSource, Repository } from 'typeorm';
import { Encaissement } from './entities/encaissement.entity';
import { CreateEncaissementDto, CreateIndependentEncaissementDto } from './dto/create-encaissement.dto';
import { UpdateEncaissementDto, UpdateIndependentEncaissementDto } from './dto/update-encaissement.dto';
import { Consultation } from '../../consultation/entities/consultation.entity';
import { Patient } from '../../patient/entities/patient.entity';
interface EncaissementFilters {
    statut?: string;
    mode_paiement?: string;
    mode?: string;
    id_mutuelle?: number;
    date_debut?: string;
    date_fin?: string;
    date_consultation_debut?: string;
    date_consultation_fin?: string;
    patient_search?: string;
}
export declare class EncaissementService {
    private readonly dataSource;
    private readonly consultationRepository;
    private readonly encaissementRepository;
    private readonly patientRepository;
    constructor(dataSource: DataSource, consultationRepository: Repository<Consultation>, encaissementRepository: Repository<Encaissement>, patientRepository: Repository<Patient>);
    private formatDate;
    create(createEncaissementDto: CreateEncaissementDto): Promise<{
        message: string;
        id_encaissement: number;
    }>;
    createIndependent(createIndependentEncaissementDto: CreateIndependentEncaissementDto): Promise<{
        message: string;
        id_encaissement: number;
    }>;
    update(id: number, updateData: UpdateEncaissementDto | UpdateIndependentEncaissementDto): Promise<{
        message: string;
    }>;
    getOne(id: number): Promise<{
        id: number;
        id_consultation: number;
        id_patient: number;
        nom_complet_patient: any;
        montant_total: number;
        montant_regle: number;
        mode_paiement: string;
        date_paiement: string;
        date_consultation: string;
        statut: string;
        mode: string;
        id_mutuelle: number;
        nom_mutuelle: any;
        libelle_statut: string;
        libelle_mode: string;
        libelle_mode_paiement: string;
    }>;
    getAllByConsultation(id_consultation: number, page?: number, limit?: number): Promise<{
        liste: {
            id: number;
            id_consultation: number;
            id_patient: number;
            montant_total: number;
            montant_regle: number;
            mode_paiement: string;
            date_paiement: string;
            date_consultation: string;
            statut: string;
            mode: string;
            id_mutuelle: number;
            nom_mutuelle: any;
            libelle_statut: string;
            libelle_mode: string;
            libelle_mode_paiement: string;
        }[];
        total: number;
    }>;
    getAll(id_cabinet: number, page?: number, limit?: number, filters?: EncaissementFilters): Promise<{
        liste: {
            id: number;
            id_consultation: number;
            id_patient: any;
            nom_complet_patient: any;
            montant_total: number;
            montant_regle: number;
            mode_paiement: string;
            date_paiement: string;
            date_consultation: string;
            statut: string;
            mode: string;
            id_mutuelle: number;
            nom_mutuelle: any;
            libelle_statut: string;
            libelle_mode: string;
            libelle_mode_paiement: string;
        }[];
        total: number;
        page: number;
        totalPages: number;
    }>;
    private processEncaissementsList;
    delete(id: number): Promise<{
        message: string;
    }>;
    getStatuts(): Promise<any>;
    getModes(): Promise<any>;
    getModesPaiement(): Promise<any>;
    private validateParametrageCodes;
    private validateCode;
    private getLibelle;
    getSoldeConsultation(id_consultation: number | null): Promise<{
        montant_total: number;
        montant_regle: number;
        solde_restant: number;
    }>;
    getSoldePatient(id_patient: number): Promise<{
        montant_total_consultations: number;
        montant_regle_consultations: number;
        solde_restant: number;
    }>;
    exportEncaissementsToExcel(id_cabinet: number, filters?: EncaissementFilters): Promise<Buffer>;
    private getEncaissementsForExport;
    private formatDateForExcel;
}
export {};
