import { Prisma } from '@prisma/client';
import { PrismaService } from '../../../prisma/prisma.service';
import { CreateFundCallDto } from '../dto/create-fund-call.dto';
export declare class FundCallsService {
    private readonly prisma;
    private readonly logger;
    constructor(prisma: PrismaService);
    create(dto: CreateFundCallDto): Promise<{
        itemsCount: number;
        id: string;
        label: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.FundCallStatus;
        complexId: string;
        totalAmount: Prisma.Decimal;
        fiscalYearId: string;
        period: string;
        dueDate: Date;
        issuedAt: Date | null;
    }>;
    private collectSubtreeUnitIds;
    findByComplex(complexId: string): Prisma.PrismaPromise<({
        _count: {
            items: number;
        };
    } & {
        id: string;
        label: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.FundCallStatus;
        complexId: string;
        totalAmount: Prisma.Decimal;
        fiscalYearId: string;
        period: string;
        dueDate: Date;
        issuedAt: Date | null;
    })[]>;
    findOne(id: string): Promise<{
        items: ({
            lot: {
                id: string;
                createdAt: Date;
                updatedAt: Date;
                complexId: string;
                spatialUnitId: string;
                lotNumber: string;
                type: import(".prisma/client").$Enums.LotType;
                surfaceM2: Prisma.Decimal | null;
                tantiemesGeneral: number;
            };
            payments: {
                id: string;
                currency: string;
                createdAt: Date;
                status: import(".prisma/client").$Enums.PaymentStatus;
                method: import(".prisma/client").$Enums.PaymentMethod;
                amount: Prisma.Decimal;
                paidAt: Date | null;
                fundCallItemId: string;
                reference: string | null;
                providerPayload: Prisma.JsonValue | null;
                receiptPdfUrl: string | null;
            }[];
        } & {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            status: import(".prisma/client").$Enums.FundCallItemStatus;
            lotId: string;
            repartitionKeyId: string | null;
            amount: Prisma.Decimal;
            fundCallId: string;
            paidAmount: Prisma.Decimal;
            penaltyAmount: Prisma.Decimal;
        })[];
    } & {
        id: string;
        label: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.FundCallStatus;
        complexId: string;
        totalAmount: Prisma.Decimal;
        fiscalYearId: string;
        period: string;
        dueDate: Date;
        issuedAt: Date | null;
    }>;
    getResidentBalance(userId: string): Promise<{
        total: number;
        paid: number;
        balance: number;
        items: ({
            lot: {
                id: string;
                createdAt: Date;
                updatedAt: Date;
                complexId: string;
                spatialUnitId: string;
                lotNumber: string;
                type: import(".prisma/client").$Enums.LotType;
                surfaceM2: Prisma.Decimal | null;
                tantiemesGeneral: number;
            };
            fundCall: {
                id: string;
                label: string;
                createdAt: Date;
                updatedAt: Date;
                status: import(".prisma/client").$Enums.FundCallStatus;
                complexId: string;
                totalAmount: Prisma.Decimal;
                fiscalYearId: string;
                period: string;
                dueDate: Date;
                issuedAt: Date | null;
            };
            payments: {
                id: string;
                currency: string;
                createdAt: Date;
                status: import(".prisma/client").$Enums.PaymentStatus;
                method: import(".prisma/client").$Enums.PaymentMethod;
                amount: Prisma.Decimal;
                paidAt: Date | null;
                fundCallItemId: string;
                reference: string | null;
                providerPayload: Prisma.JsonValue | null;
                receiptPdfUrl: string | null;
            }[];
        } & {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            status: import(".prisma/client").$Enums.FundCallItemStatus;
            lotId: string;
            repartitionKeyId: string | null;
            amount: Prisma.Decimal;
            fundCallId: string;
            paidAmount: Prisma.Decimal;
            penaltyAmount: Prisma.Decimal;
        })[];
    }>;
}
