import { PrismaService } from "../../infra/prisma/prisma.service";
import { CreatePayableDto } from "./dto/create-payable.dto";
import { CreateReceivableDto } from "./dto/create-receivable.dto";
import { FinanceQueryDto } from "./dto/finance-query.dto";
import { PayEntryDto } from "./dto/pay-entry.dto";
export declare class FinanceService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    getReceivables(companyId: string, query: FinanceQueryDto): Promise<{
        items: ({
            customer: {
                number: string | null;
                id: string;
                companyId: string;
                status: import(".prisma/client").$Enums.CustomerStatus;
                createdAt: Date;
                updatedAt: Date;
                name: string;
                type: import(".prisma/client").$Enums.CustomerType;
                document: string;
                email: string | null;
                phone: string | null;
                mobile: string | null;
                contactName: string | null;
                creditLimit: import("@prisma/client/runtime/library").Decimal;
                notes: string | null;
                zipCode: string | null;
                street: string | null;
                complement: string | null;
                district: string | null;
                city: string | null;
                state: string | null;
            };
            rental: {
                id: string;
                companyId: string;
                customerId: string;
                status: import(".prisma/client").$Enums.RentalStatus;
                createdAt: Date;
                updatedAt: Date;
                notes: string | null;
                code: string;
                startDate: Date;
                endDate: Date;
                subtotal: import("@prisma/client/runtime/library").Decimal;
                discount: import("@prisma/client/runtime/library").Decimal;
                freight: import("@prisma/client/runtime/library").Decimal;
                depositAmount: import("@prisma/client/runtime/library").Decimal;
                paymentMethod: string | null;
                installmentsCount: number | null;
                total: import("@prisma/client/runtime/library").Decimal;
                operator: string | null;
            } | null;
        } & {
            id: string;
            companyId: string;
            customerId: string;
            rentalId: string | null;
            description: string;
            amount: import("@prisma/client/runtime/library").Decimal;
            dueDate: Date;
            paidAt: Date | null;
            status: import(".prisma/client").$Enums.FinancialStatus;
            createdAt: Date;
            updatedAt: Date;
        })[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    getPayables(companyId: string, query: FinanceQueryDto): Promise<{
        items: ({
            supplier: {
                id: string;
                companyId: string;
                createdAt: Date;
                updatedAt: Date;
                name: string;
                document: string | null;
                email: string | null;
                phone: string | null;
                contactName: string | null;
            } | null;
        } & {
            id: string;
            companyId: string;
            description: string;
            amount: import("@prisma/client/runtime/library").Decimal;
            dueDate: Date;
            paidAt: Date | null;
            status: import(".prisma/client").$Enums.FinancialStatus;
            createdAt: Date;
            updatedAt: Date;
            supplierId: string | null;
            serviceOrderId: string | null;
        })[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    getCashFlow(companyId: string, query: FinanceQueryDto): Promise<{
        items: {
            id: string;
            companyId: string;
            description: string;
            amount: import("@prisma/client/runtime/library").Decimal;
            createdAt: Date;
            type: import(".prisma/client").$Enums.CashMovementType;
            occurredAt: Date;
            category: string | null;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    getStats(companyId: string): Promise<{
        totalReceivable: number;
        totalPayable: number;
        netProjected: number;
        overdueAmount: number;
    }>;
    createReceivable(companyId: string, dto: CreateReceivableDto): Promise<{
        customer: {
            number: string | null;
            id: string;
            companyId: string;
            status: import(".prisma/client").$Enums.CustomerStatus;
            createdAt: Date;
            updatedAt: Date;
            name: string;
            type: import(".prisma/client").$Enums.CustomerType;
            document: string;
            email: string | null;
            phone: string | null;
            mobile: string | null;
            contactName: string | null;
            creditLimit: import("@prisma/client/runtime/library").Decimal;
            notes: string | null;
            zipCode: string | null;
            street: string | null;
            complement: string | null;
            district: string | null;
            city: string | null;
            state: string | null;
        };
    } & {
        id: string;
        companyId: string;
        customerId: string;
        rentalId: string | null;
        description: string;
        amount: import("@prisma/client/runtime/library").Decimal;
        dueDate: Date;
        paidAt: Date | null;
        status: import(".prisma/client").$Enums.FinancialStatus;
        createdAt: Date;
        updatedAt: Date;
    }>;
    createPayable(companyId: string, dto: CreatePayableDto): Promise<{
        supplier: {
            id: string;
            companyId: string;
            createdAt: Date;
            updatedAt: Date;
            name: string;
            document: string | null;
            email: string | null;
            phone: string | null;
            contactName: string | null;
        } | null;
    } & {
        id: string;
        companyId: string;
        description: string;
        amount: import("@prisma/client/runtime/library").Decimal;
        dueDate: Date;
        paidAt: Date | null;
        status: import(".prisma/client").$Enums.FinancialStatus;
        createdAt: Date;
        updatedAt: Date;
        supplierId: string | null;
        serviceOrderId: string | null;
    }>;
    payReceivable(companyId: string, id: string, dto: PayEntryDto): Promise<{
        id: string;
        companyId: string;
        customerId: string;
        rentalId: string | null;
        description: string;
        amount: import("@prisma/client/runtime/library").Decimal;
        dueDate: Date;
        paidAt: Date | null;
        status: import(".prisma/client").$Enums.FinancialStatus;
        createdAt: Date;
        updatedAt: Date;
    }>;
    payPayable(companyId: string, id: string, dto: PayEntryDto): Promise<{
        id: string;
        companyId: string;
        description: string;
        amount: import("@prisma/client/runtime/library").Decimal;
        dueDate: Date;
        paidAt: Date | null;
        status: import(".prisma/client").$Enums.FinancialStatus;
        createdAt: Date;
        updatedAt: Date;
        supplierId: string | null;
        serviceOrderId: string | null;
    }>;
}
