import { DataSource, Repository } from 'typeorm';
import { Charge } from './entities/charge.entity';
import { CreateChargeDto } from './dto/create-charge.dto';
import { UpdateChargeDto } from './dto/update-charge.dto';
import { UploadFunctions } from 'src/modules/functions/upload.function';
import { SignedUrlService } from 'src/modules/signed-url-doc/signed-url.service';
import { Documents } from 'src/modules/consultation/entities/document.entity';
import { ChargeCategorie } from './entities/ChargeCategorie.entity';
import { CreateRecurringChargeDto } from './dto/create-recurring-charge.dto';
export declare class ChargeService {
    private readonly chargeRepository;
    private readonly dataSource;
    private readonly uploadFunctions;
    private readonly chargeCategorieRepository;
    private readonly signedUrlService;
    private readonly documentRepository;
    constructor(chargeRepository: Repository<Charge>, dataSource: DataSource, uploadFunctions: UploadFunctions, chargeCategorieRepository: Repository<ChargeCategorie>, signedUrlService: SignedUrlService, documentRepository: Repository<Documents>);
    create(createChargeDto: CreateChargeDto, id_cabinet: number): Promise<{
        message: string;
        id_charge: number;
    }>;
    update(id: number, updateChargeDto: UpdateChargeDto, id_cabinet: number): Promise<{
        message: string;
    }>;
    findOne(id: number, id_cabinet: number): Promise<{
        libelle_categorie: string;
        libelle_statut: string;
        libelle_mode: string;
        libelle_mode_paiement: string;
        documents: {
            id_document: number;
            filename: string;
            extention: string;
            path: string;
        }[];
        id_charge: number;
        id_categorie: number;
        date_charge: Date;
        montant_ttc: number;
        date_paiement: Date;
        mode_paiement: string;
        statut: string;
        mode: string;
        numero_facture: string;
        date_facture: Date;
        description: string;
        id_cabinet: number;
        flag: boolean;
        created_at: Date;
        updated_at: Date;
        categorie: ChargeCategorie;
    }>;
    findAll(id_cabinet: number, page?: number, limit?: number, filters?: {
        categorie?: string;
        statut?: string;
        mode?: string;
        mode_paiement?: string;
        search?: string;
        date_charge_start?: string;
        date_charge_end?: string;
        date_paiement_start?: string;
        date_paiement_end?: string;
    }): Promise<{
        liste: {
            id: number;
            libelle: string;
            description: string;
            montant_ttc: number;
            date_charge: Date;
            date_paiement: Date;
            statut: string;
            mode: string;
            mode_paiement: string;
            numero_facture: string;
            date_facture: Date;
            id_categorie: number;
            libelle_categorie: string;
            libelle_statut: string;
            libelle_mode: string;
            libelle_mode_paiement: string;
            documents: {
                id_document: number;
                filename: string;
                extention: string;
                path: string;
            }[];
            created_at: Date;
            updated_at: Date;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    remove(id: number): Promise<{
        message: string;
    }>;
    getCategories(id_cabinet: number): Promise<{
        id_categorie: number;
        code_parametrage: string;
        libelle_parametrage: string;
        description: string;
    }[]>;
    getStatuts(): Promise<any>;
    getModes(): Promise<any>;
    getModesPaiement(): Promise<any>;
    private validateParametrageCodes;
    private validateCategorieCode;
    private validateCategorie;
    private getCategorieLibelle;
    private validateCode;
    private getLibelle;
    createRecurring(createRecurringDto: CreateRecurringChargeDto, id_cabinet: number): Promise<{
        message: string;
        charges_created: number;
        ids: number[];
    }>;
    exportChargesToExcel(id_cabinet: number, filters?: {
        categorie?: string;
        statut?: string;
        mode?: string;
        mode_paiement?: string;
        date_charge_start?: string;
        date_charge_end?: string;
        date_paiement_start?: string;
        date_paiement_end?: string;
    }): Promise<Buffer>;
    private getChargesForExport;
    private formatDateForExcelValue;
}
